Sane C++ Libraries
C++ Platform Abstraction Libraries
Class Hierarchy
This inheritance list is sorted roughly, but not completely, alphabetically:
[detail level 1234]
 CSC::Time::AbsoluteAbsolute time represented with milliseconds since epoch
 CSC::Build::Action
 CSC::TypeTraits::AddPointer< T >AddPointer adds a pointer qualification to a type T if it is not already a pointer
 CSC::TypeTraits::AddReference< T >AddReference adds a reference qualifier to a type T if it is not already a reference
 CSC::AlignedStorage< N, Alignment >A buffer of bytes with given alignment
 CSC::AlignedStorage< OpaqueCVSize, OpaqueCVAlignment >
 CSC::AlignedStorage< OpaqueMutexSize, OpaqueMutexAlignment >
 CSC::Process::StdStream::AlreadySetup
 CSC::Build::ArchitectureBuild Architecture (Processor / Instruction set)
 CSC::ArenaMap< T >A sparse vector keeping objects at a stable memory location
 CSC::ArenaMap< T >::ArenaMapIterator< MapType >
 CSC::ArenaMapKey< T >A sparse vector keeping objects at a stable memory location
 CSC::Array< T, N >A contiguous sequence of elements kept inside its inline storage
 CSC::Reflection::TypeInfo::ArrayInfoHolds extended type info for array-like types
 CSC::Reflection::ArrayWithSize< T, N >A constexpr array
 CSC::AssertFunctions and macros to assert, exit() or abort() and capture backtraces
 CSC::AsyncBuffersPoolHolds a Span of AsyncBufferView (allocated by user) holding available memory for the streams
 CSC::AsyncBufferViewA Span of bytes memory to be read or written by async streams
 CSC::AsyncCompletionDataEmpty base struct for all AsyncRequest-derived CompletionData (internal) structs
 CSC::AsyncEventLoopAsynchronous I/O (files, sockets, timers, processes, fs events, threads wake-up) (see Async) AsyncEventLoop pushes all AsyncRequest derived classes to I/O queues in the OS
 CSC::AsyncEventLoopMonitorMonitors Async I/O events from a background thread using a blocking kernel function (no CPU usage on idle)
 CSC::AsyncKernelEventsAllows user to supply a block of memory that will store kernel I/O events retrieved from AsyncEventLoop::runOnce
 CSC::AsyncPipelinePipes reads on SC::AsyncReadableStream to SC::AsyncWritableStream
 CSC::AsyncReadableStreamAsync source abstraction emitting data events in caller provided byte buffers
 CSC::AsyncRequestBase class for all async requests, holding state and type
 CSC::AsyncResultBase class for all async results (argument of completion callbacks)
 CSC::AsyncTaskHolds (reference to) a SC::ThreadPool and SC::ThreadPool::Task to execute an SC::AsyncRequest in a background thread This object lifetime is the same as the SC::AsyncRequest it's associated with, like SC::AsyncFileRead or SC::AsyncFileWrite
 CSC::AsyncWritableStreamAsync destination abstraction where bytes can be written to
 CSC::Atomic< T >Atomic variables (only for int and bool for now)
 CSC::Build::CompileCompilation switches (include paths, preprocessor defines, etc.)
 CSC::TypeTraits::Conditional< B, T, F >Conditional defines a type to be T if a boolean value is true, F otherwise
 CSC::ConditionVariableA native OS condition variable
 CSC::Build::ConfigurationGroups SC::Build::CompileFlags and SC::Build::LinkFlags for a given SC::Build::Architecture
 CSC::ConsoleWrites to console using SC::StringFormat
 CSC::FileSystem::CopyFlagsSpecify copy options like overwriting existing files
 CSC::FileSystem::CopyOperationSpecify source, destination and flags for a copy operation
 CSC::Deferred< F >Executes a function at end of current scope (in the spirit of Zig defer keyword)
 CSC::Build::DefinitionTop level build description holding all Workspace objects
 CSC::Build::DefinitionCompilerCaches file paths by pre-resolving directory filter search masks
 CSC::Build::Directories
 CSC::Reflection::TypeInfo::EmptyInfoHolds no extended type info
 CSC::Reflection::FlatSchemaBuilder::EmptyVTables
 CSC::TypeTraits::EnableIf< B, T >EnableIf conditionally defines a type if a boolean template parameter is true
 CSC::FileSystemIterator::EntryContains information on a file or directory
 CSC::TaggedUnion< Union >::EnumToType< wantedEnum, StartIndex >Extracts type T corresponding to enumeration wantedEnum at compile time
 CSC::FileSystemWatcher::EventLoopRunnerDelivers notifications using Async (SC::AsyncEventLoop)
 CSC::EventObjectAn automatically reset event object to synchronize two threads
 CSC::ProcessDescriptor::ExitStatus
 CSC::Reflection::ExtendedStructTypeInfo< T >Visit all struct members to gather sum of their sizes (helper for IsPacked)
 CSC::Reflection::ExtendedTypeInfo< T, SFINAESelector >Class template used to check if a given type IsPacked property is true at compile time
 CSC::Build::Project::FileProject list of files
 CSC::FileWraps a SC::FileDescriptor to open it and use strings / containers
 CSC::FileSystem::FileStatA structure to describe modified time
 CSC::FileSystemExecute fs operations { exists, copy, delete } for { files and directories }
 CSC::FileSystemDirectoriesReports location of system directories (executable / application root)
 CSC::FileSystemIteratorIterates files and directories inside a given path
 CSC::FileSystemWatcherNotifies about events (add, remove, rename, modified) on files and directories
 CSC::FileSystemWatcher::FolderWatcherRepresents a single folder being watched
 CSC::Function< FuncType >Wraps function pointers, member functions and lambdas without ever allocating
 CSC::Build::GeneratorBuild system generator (Xcode / Visual Studio)
 CSC::HashingCompute MD5, SHA1 or SHA256 hash for stream of data
 CSC::HeapBufferA move-only owned buffer of bytes
 CSC::Time::HighResolutionCounterAn high resolution time counter
 CSC::HttpClientHttp async client
 CSC::HttpParserIncremental HTTP request or response parser
 CSC::HttpRequestHttp request received from a client
 CSC::HttpResponseHttp response that will be sent to a client
 CSC::HttpServerAsync Http server
 CSC::HttpURLParserParse an URL splitting it into its base components
 CSC::HttpWebServerHttp web server helps statically serves files from a directory
 CSC::Process::StdOut::Ignore
 CSC::Process::StdIn::Inherit
 CSC::Process::StdOut::Inherit
 CSC::IntrusiveDoubleLinkedList< T >An Intrusive Double Linked List
 CSC::TypeTraits::IsConst< T >IsConst evaluates to true if the provided type T is const, false otherwise
 CSC::TypeTraits::IsLValueReference< T >Determines if a type is an lvalue reference
 CSC::Reflection::IsPrimitive< T >Checks if a given type is primitive
 CSC::TypeTraits::IsReference< T >IsReference evaluates to true if the type T is a reference, false otherwise
 CSC::TypeTraits::IsRValueReference< T >Determines if a type is an rvalue reference
 CSC::TypeTraits::IsSame< T, U >IsSame evaluates to true if the provided types T and U are the same, false otherwise
 CSC::TypeTraits::IsTriviallyCopyable< T >IsTriviallyCopyable evaluates to true if the type T can be trivially copied, false otherwise
 CSC::Build::LinkLinking switches (library paths, LTO etc.)
 CSC::MaxValueAn object that can be converted to any primitive type providing its max value
 CSC::Reflection::TypeInfo::MemberInfoHolds extended type info for members of struct
 CSC::MemoryCentralized functions to allocate, reallocate and deallocate memory
 CSC::Time::MillisecondsType-safe wrapper of uint64 used to represent milliseconds
 CSC::MutexA native OS mutex to synchronize access to shared resources
 CSC::Build::Compile::NameDescriptionTwo StringViews representing name and description
 CSC::FileSystemWatcher::NotificationNotification holding type and path
 CSC::OpaqueObject< Definition >Hides implementation details from public headers (static PIMPL)
 CSC::OpaqueObject< InternalDefinition >
 CSC::File::OpenOptionsAdditional flags to be set when opening files
 CSC::OperatingSystemHolds information about operating system
 CSC::Build::OptimizationOptimization level (Debug / Release)
 CSC::AsyncEventLoop::OptionsOptions given to AsyncEventLoop::create
 CSC::FileSystemIterator::OptionsOptions when iterating (recursive and other options)
 CSC::Process::Options
 CSC::SerializationJson::OptionsFormatting options
 CSC::Build::ParametersDescribes a specific set of platforms, architectures and build generators to generate projects for
 CSC::Path::ParsedViewHolds the various parsed components of a path
 CSC::Time::Absolute::ParseResultHolds information on a parsed absolute time from Absolute::parseLocal
 CSC::PathRepresents a posix or windows file system path
 CSC::PipeDescriptorRead / Write pipe (Process stdin/stdout and IPC communication)
 CSC::Build::PlatformBuild Platform (Operating System)
 CSC::PluginCastInterface< PluginClass, InterfaceClasses >
 CSC::PluginCastInterface< PluginClass >
 CSC::PluginCastInterface< PluginClass, InterfaceClass, InterfaceClasses... >
 CSC::PluginCompilerCompiles a plugin to a dynamic library
 CSC::PluginCompilerEnvironmentReads and holds CFLAGS and LDFLAGS environment variables, mainly to pass down sysroot location
 CSC::PluginDefinitionPlugin description, category, dependencies, files and directory location
 CSC::PluginDynamicLibraryA plugin dynamic library loaded from a SC::PluginRegistry
 CSC::PluginFileHolds path to a given plugin source file
 CSC::PluginIdentityRepresents the unique signature / identity of a Plugin
 CSC::PluginRegistryHolds a registry of plugins, loading and compiling them on the fly
 CSC::PluginScannerScans a directory for PluginDefinition
 CSC::PluginSysrootHolds include and library paths for a system toolchain, used to let plugins link to libc and libc++
 CSC::Path::Posix
 CSC::ProcessExecute a child process with standard file descriptors redirection
 CSC::ProcessChainExecute multiple child processes chaining input / output between them
 CSC::ProcessEnvironmentReads current process environment variables
 CSC::ProcessIDNative os handle to a process identifier
 CSC::Build::ProjectGroups multiple Configuration and source files with their compile and link flags
 CSC::Reflection::Reflect< T >Basic class template that must be partially specialized for each type
 CSC::Reflection::ReflectPrimitiveBase struct for all primitive types
 CSC::Reflection::ReflectStruct< Type >
 CSC::Reflection::ReflectStruct< VectorMap< Key, Value, Container > >
 CSC::Time::RelativeInterval of time represented with 64 bit double precision float
 CSC::TypeTraits::RemoveConst< T >RemoveConst removes the const qualification from a type T
 CSC::TypeTraits::RemovePointer< T >RemovePointer removes the pointer qualification from a type T
 CSC::TypeTraits::RemoveReference< T >Removes reference from a type T
 CSC::StringBuilder::ReplacePairHolds a search / replace pair for StringBuilder::appendReplaceMultiple
 CSC::AsyncReadableStream::Request
 CSC::AsyncWritableStream::Request
 CSC::Hashing::Result
 CSC::ResultAn ascii string used as boolean result. SC_TRY macro forwards errors to caller
 CSC::TypeTraits::ReturnType< R >ReturnType extracts the return type from different forms of function types
 CSC::TypeTraits::SameConstnessAs< U, T >SameConstnessAs modifies type T to have the const-qualification of U
 Csc_hashing_result_tHash result
 Csc_hashing_span_tJust a generic data span
 Csc_hashing_tOpaque object holding state of hashing
 CSC::Reflection::SchemaBuilder< TypeVisitor >Common code for derived class to create a SchemaBuilder suitable for SC::Reflection::SchemaCompiler
 CSC::Reflection::SchemaBuilder< FlatSchemaBuilder >
 CSC::Reflection::SchemaCompiler< SchemaBuilder >Creates a schema linking a series of SchemaType
 CSC::Reflection::SchemaType< TypeVisitor >Holds together a TypeInfo, a StringView and a type-erased builder function pointer
 CSC::Time::SecondsType-safe wrapper of uint64 used to represent seconds
 CSC::SerializationBinaryLoads or writes binary data with its associated reflection schema from or into a C++ object
 CSC::SerializationBinaryOptionsConversion options for the binary versioned deserializer
 CSC::SerializationBinaryTypeErasedLoads or writes binary data with its associated reflection schema from or into a C++ object
 CSC::SerializationJsonSC::SerializationJson reads or writes C++ structures to / from json using Reflection information
 CSC::Algorithms::smallerThan< T >Functor that evaluates to a < b
 CSC::SocketClientUse a SocketDescriptor as a client (example a TCP or UDP socket client)
 CSC::SocketDNSSynchronous DNS Resolution
 CSC::SocketFlagsFlags for SocketDescriptor (Blocking / Inheritable, IPVx, SocketType)
 CSC::SocketIPAddressNative representation of an IP Address
 CSC::SocketNetworkingNetworking globals initialization (Winsock2 WSAStartup)
 CSC::SocketServerUse a SocketDescriptor as a Server (example TCP or UDP Socket Server)
 CSC::Span< Type >View over a contiguous sequence of items (pointer + size in elements)
 CSC::SpanStringAn writable view over an ASCII string (to avoid including Strings library)
 CSC::SpanStringViewAn read-only view over an ASCII string (to avoid including Strings library)
 CSC::Process::StdStream
 CSC::StringA non-modifiable owning string with associated encoding
 CSC::StringAlgorithmsAlgorithms operating on strings (glob / wildcard)
 CSC::StringBuilderBuilds String out of a sequence of StringView or formatting through StringFormat
 CSC::StringConverterConverts String to a different encoding (UTF8, UTF16)
 CSC::StringFormat< RangeIterator >Formats String with a simple DSL embedded in the format string
 CSC::StringFormatOutputAllows pushing results of StringFormat to a buffer or to the console
 CSC::StringIterator< CharIterator >A position inside a fixed range [start, end) of UTF code points
 CSC::StringIterator< StringIteratorASCII >
 CSC::StringIterator< StringIteratorUTF16 >
 CSC::StringIterator< StringIteratorUTF8 >
 CSC::StringIteratorSkipTableBuilds a constexpr bool skip table of 256 entries used in some parsers
 CSC::StringViewNon-owning view over a range of characters with UTF Encoding
 CSC::StringViewTokenizerSplits a StringView in tokens according to separators
 CSC::StrongID< TagType, IDType, InvalidValue >Strongly typed ID (cannot be assigned incorrectly to another ID)
 CSC::StrongID< Tag >
 CSC::Reflection::TypeInfo::StructInfoHolds extended type info for structs
 CSC::Reflection::SvA minimal ASCII StringView with shortened name to be used in TypeToString
 CSC::AsyncBufferView::Tag
 CTaggedMap
 CSC::TaggedType< EnumType, enumValue, MemberType >Associate a Type to an Enum, as required by TaggedUnion
 CSC::TaggedUnion< Union >Type safe union with an enum type, where each type has an associated enum value
 CSC::Build::TargetTypeType of target artifact to build (executable, library)
 CSC::TestCaseA test case that can be split into multiple sections
 CSC::TestReportCollects multiple TestCase and reports their results
 CSC::ThreadA native OS thread
 CSC::ThreadPoolSimple thread pool that executes tasks in a fixed number of worker threads
 CSC::ThreadPoolTaskA small task containing a function to execute that can be queued in the thread pool
 CSC::Reflection::TypeInfo[reflectionSnippet3]
 CSC::TypeTraits::TypeList< TT >Represents a variadic template type list
 CSC::TypeTraits::TypeListGet< T, N, M >Retrieves the type at the specified index in the TypeList
 CSC::Reflection::TypeToString< T >Strips down class name produced by ClNm to reduce binary size (from C++17 going forward)
 CSC::UniqueHandle< Definition >Move only handle that has a special tag value flagging its invalid state
 CSC::UniqueHandle< AsyncWinWaitDefinition >
 CSC::UniqueHandle< detail::ProcessDescriptorDefinition >
 CSC::UniqueHandle< detail::SocketDescriptorDefinition >
 CSC::UniqueHandle< SC::detail::FileDescriptorDefinition >
 CSC::Vector< T >A contiguous sequence of heap allocated elements
 CSC::Vector< SC::VectorMapItem< Key, Value > >
 CSC::Vector< Value >
 CSC::Reflection::VectorArrayVTable< MemberVisitor, Container, ItemType, N >
 CSC::VectorMap< Key, Value, Container >A map holding VectorMapItem key-value pairs in an unsorted Vector
 CSC::VectorMapItem< Key, Value >The single item of VectorMap, holding a Key and Value
 CSC::VectorSet< Value, Container >A set built on an unsorted Vector, ensuring no item duplication
 CSC::Build::Configuration::VisualStudioVisual Studio platform toolset
 CSC::Path::Windows
 CSC::Build::WorkspaceGroups multiple Project together with shared compile and link flags
 CSC::Reflection::WritableRange< Type >A writable span of objects