| ►NSC | |
| ►NTime | Absolute, relative time and high frequency counter |
| ►CAbsolute | Absolute time as realtime or monotonically increasing clock |
| CParseResult | Holds information on a parsed absolute time from Absolute::parseLocal |
| CHighResolutionCounter | An high resolution time counter |
| CMilliseconds | Type-safe wrapper of uint64 used to represent milliseconds |
| CMonotonic | Represent monotonically increasing time (use Monotonic::now for current time) |
| CNanoseconds | Type-safe wrapper of uint64 used to represent nanoseconds |
| CRealtime | Represents a realtime clock in milliseconds since epoch (use Realtime::now for current time) |
| CRelative | Interval of time represented with 64 bit double precision float |
| CSeconds | Type-safe wrapper of uint64 used to represent seconds |
| ►NTypeTraits | Template meta-programming helpers |
| CAddPointer | AddPointer adds a pointer qualification to a type T if it is not already a pointer |
| CConditional | Conditional defines a type to be T if a boolean value is true, F otherwise |
| CEnableIf | EnableIf conditionally defines a type if a boolean template parameter is true |
| CIsConst | IsConst evaluates to true if the provided type T is const, false otherwise |
| CIsLValueReference | Determines if a type is an lvalue reference |
| CIsRValueReference | Determines if a type is an rvalue reference |
| CIsSame | IsSame evaluates to true if the provided types T and U are the same, false otherwise |
| CIsTriviallyCopyable | IsTriviallyCopyable evaluates to true if the type T can be trivially copied, false otherwise |
| CRemoveConst | RemoveConst removes the const qualification from a type T |
| CRemoveReference | Removes reference from a type T |
| CSameConstnessAs | SameConstnessAs modifies type T to have the const-qualification of U |
| CTypeList | Represents a variadic template type list |
| CTypeListGet | Retrieves the type at the specified index in the TypeList |
| CAlignedStorage | A buffer of bytes with given alignment |
| ►CArenaMap | A sparse vector keeping objects at a stable memory location |
| CArenaMapIterator | |
| CArenaMapKey | A sparse vector keeping objects at a stable memory location |
| CArray | A contiguous sequence of elements kept inside its inline storage |
| CAssert | Functions and macros to assert, exit() or abort() and capture backtraces |
| CAsyncBuffersPool | Holds a Span of AsyncBufferView (allocated by user) holding available memory for the streams |
| ►CAsyncBufferView | A Span of bytes memory to be read or written by async streams |
| CID | |
| CAsyncCompletionData | Empty base struct for all AsyncRequest-derived CompletionData (internal) structs |
| CAsyncDuplexStream | A stream that can both produce and consume buffers |
| ►CAsyncEventLoop | Asynchronous 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 |
| CInternalDefinition | |
| COptions | Options given to AsyncEventLoop::create |
| CAsyncEventLoopListeners | Allow library user to provide callbacks signaling different phases of async event loop cycle |
| CAsyncEventLoopMonitor | Monitors Async I/O events from a background thread using a blocking kernel function (no CPU usage on idle) |
| CAsyncFilePoll | Starts an handle polling operation |
| ►CAsyncFileRead | Starts a file read operation, reading bytes from a file (or pipe) |
| CCompletionData | |
| CResult | |
| CAsyncFileSystemOperation | Starts an asynchronous file system operation (open, close, read, write, sendFile, stat, lstat, fstat, etc.) Some operations need a file path and others need a file descriptor |
| CAsyncFileSystemOperationCompletionData | |
| ►CAsyncFileWrite | Starts a file write operation, writing bytes to a file (or pipe) |
| CCompletionData | |
| CResult | |
| CAsyncKernelEvents | Allows user to supply a block of memory that will store kernel I/O events retrieved from AsyncEventLoop::runOnce |
| CAsyncLoopTimeout | Starts a Timeout that is invoked only once after expiration (relative) time has passed |
| CAsyncLoopWakeUp | Starts a wake-up operation, allowing threads to execute callbacks on loop thread |
| CAsyncLoopWork | Executes work in a thread pool and then invokes a callback on the event loop thread |
| CAsyncPipeline | Pipes read data from SC::AsyncReadableStream, forwarding them to SC::AsyncWritableStream |
| ►CAsyncProcessExit | Starts monitoring a process, notifying about its termination |
| CCompletionData | |
| CResult | |
| ►CAsyncReadableStream | Async source abstraction emitting data events in caller provided byte buffers |
| CRequest | |
| CAsyncRequest | Base class for all async requests, holding state and type |
| CAsyncRequestReadableStream | |
| CAsyncRequestWritableStream | |
| CAsyncResult | Base class for all async results (argument of completion callbacks) |
| CAsyncResultOf | Helper holding CompletionData for a specific AsyncRequest-derived class |
| CAsyncSequence | Execute AsyncRequests serially, by submitting the next one after the previous one is completed |
| CAsyncSocketAccept | Starts a socket accept operation, obtaining a new socket from a listening socket |
| CAsyncSocketConnect | Starts a socket connect operation, connecting to a remote endpoint |
| ►CAsyncSocketReceive | Starts a socket receive operation, receiving bytes from a remote endpoint |
| CCompletionData | |
| CResult | |
| CAsyncSocketReceiveFrom | Starts an unconnected socket receive from operation, receiving bytes from a remote endpoint |
| ►CAsyncSocketSend | Starts a socket send operation, sending bytes to a remote endpoint |
| CCompletionData | |
| CAsyncSocketSendTo | Starts an unconnected socket send to operation, sending bytes to a remote endpoint |
| CAsyncTaskSequence | An AsyncSequence using a SC::ThreadPool to execute one or more SC::AsyncRequest in a background thread |
| CAsyncTransformStream | A duplex stream that produces new buffers transforming received buffers |
| ►CAsyncWritableStream | Async destination abstraction where bytes can be written to |
| CRequest | |
| CAsyncZLibTransformStream | |
| CAtomic | Atomic variables (only for int and bool for now) |
| CBarrier | A synchronization point that blocks threads until the required number of threads have reached it |
| CBuffer | An heap allocated byte buffer that can optionally use an inline buffer |
| CConditionVariable | A native OS condition variable |
| CConsole | Writes to console using SC::StringFormat |
| CDeferred | Executes a function at end of current scope (in the spirit of Zig defer keyword) |
| CEventObject | An automatically reset event object to synchronize two threads |
| CFileDescriptor | [UniqueHandleDeclaration2Snippet] |
| CFileOpen | Options used to open a file descriptor |
| ►CFileSystem | Execute fs operations { exists, copy, delete } for { files and directories } |
| CCopyOperation | Specify source, destination and flags for a copy operation |
| COperations | Low level filesystem API, requiring paths in native encoding (UTF-16 on Windows, UTF-8 elsewhere) |
| CFileSystemCopyFlags | A structure to describe copy flags |
| ►CFileSystemIterator | Iterates files and directories inside a given path without allocating any memory |
| CEntry | Contains information on a file or directory |
| CFolderState | Holds state of a folder when recursing into it to list its files |
| COptions | Options when iterating (recursive and other options) |
| CFileSystemStat | A structure to describe file stats |
| ►CFileSystemWatcher | Notifies about events (add, remove, rename, modified) on files and directories |
| CEventLoopRunner | Abstract class to use event loop notifications (see SC::FileSystemWatcherAsync) |
| CFolderWatcher | Represents a single folder being watched |
| CNotification | Notification holding type and path |
| CFileSystemWatcherAsync | FileSystemWatcherAsync is an implementation of SC::FileSystemWatcher that uses SC::Async |
| CFixedAllocator | A MemoryAllocator implementation using a finite slice of memory |
| CFixedVector | |
| CFunction | Wraps function pointers, member functions and lambdas without ever allocating |
| CGlobals | Customizable thread-local and global variables for memory handling |
| CGlobalSettings | Settings to initialize Globals |
| CGrowableBuffer< Buffer > | |
| CGrowableBuffer< SmallBuffer< N > > | |
| CGrowableBuffer< SmallString< N > > | |
| CGrowableBuffer< String > | |
| CGrowableBuffer< StringPath > | |
| ►CHashing | Compute MD5, SHA1 or SHA256 hash for stream of data |
| CResult | |
| CHttpClient | Http async client |
| CHttpParser | Incremental HTTP request or response parser |
| CHttpRequest | Http request received from a client |
| CHttpResponse | Http response that will be sent to a client |
| ►CHttpServer | Async Http server |
| CMemory | |
| CHttpServerClient | |
| CHttpURLParser | Parse an URL splitting it into its base components |
| CHttpWebServer | Http web server helps statically serves files from a directory |
| CMaxValue | An object that can be converted to any primitive type providing its max value |
| CMemory | Centralized functions to allocate, reallocate and deallocate memory |
| ►CMemoryAllocator | Customizable functions to allocate, reallocate and deallocate memory |
| CStatistics | Holds Statistics about how many allocations/release have been issued |
| CMutex | A native OS mutex to synchronize access to shared resources |
| COpaqueObject | Hides implementation details from public headers (static PIMPL) |
| COperatingSystem | Holds information about operating system |
| ►CPath | Parse and compose filesystem paths for windows and posix |
| CParsedView | Holds the various parsed components of a path |
| CPosix | |
| CWindows | |
| CPipeDescriptor | Read / Write pipe (Process stdin/stdout and IPC communication) |
| CPipeOptions | |
| CPluginCompiler | Compiles a plugin to a dynamic library |
| CPluginCompilerEnvironment | Reads and holds CFLAGS and LDFLAGS environment variables, mainly to pass down sysroot location |
| CPluginDefinition | Plugin description, category, dependencies, files and directory location |
| CPluginDynamicLibrary | A plugin dynamic library loaded from a SC::PluginRegistry |
| CPluginFile | Holds path to a given plugin source file |
| CPluginIdentity | Represents the unique signature / identity of a Plugin |
| CPluginRegistry | Holds a registry of plugins, loading and compiling them on the fly |
| CPluginScanner | Scans a directory for PluginDefinition |
| CPluginSysroot | Holds include and library paths for a system toolchain, used to let plugins link to libc and libc++ |
| ►CProcess | Execute a child process with standard file descriptors redirection |
| COptions | |
| ►CStdIn | |
| CInherit | |
| ►CStdOut | |
| CIgnore | |
| CInherit | |
| ►CStdStream | |
| CAlreadySetup | |
| CProcessChain | Execute multiple child processes chaining input / output between them |
| CProcessDescriptor | |
| CProcessEnvironment | Reads current process environment variables |
| CProcessExitStatus | Wraps the code returned by a process that has exited |
| CProcessFork | Forks current process exiting child at end of process A fork duplicates a parent process execution state, os handles and private memory |
| CProcessID | Native os handle to a process identifier |
| CReadableFileStream | Uses an SC::AsyncFileRead to stream data from a file |
| CReadableSocketStream | Uses an SC::AsyncFileWrite to stream data from a socket |
| CResult | An ascii string used as boolean result. SC_TRY macro forwards errors to caller |
| CRWLock | A Read-Write lock that allows multiple concurrent readers but only one writer |
| CSegment | A slice of contiguous memory, prefixed by and header containing size and capacity |
| CSemaphore | A semaphore synchronization primitive that maintains a count for resource management |
| CSerializationBinary | Loads or writes binary data with its associated reflection schema from or into a C++ object |
| CSerializationBinaryOptions | Conversion options for the binary versioned deserializer |
| CSerializationBinaryTypeErased | Loads or writes binary data with its associated reflection schema from or into a C++ object |
| ►CSerializationJson | SC::SerializationJson reads or writes C++ structures to / from json using Reflection information |
| COptions | Formatting options |
| CSmallBuffer | A SC::Buffer with a dedicated custom inline buffer to avoid heap allocation |
| CSmallString | String with compile time configurable inline storage (small string optimization) |
| CSmallVector | A Vector that can hold up to N elements inline and > N on heap |
| CSocketClient | Use a SocketDescriptor as a client (example a TCP or UDP socket client) |
| CSocketDescriptor | Low-level OS socket handle |
| CSocketDNS | Synchronous DNS Resolution |
| CSocketFlags | Flags for SocketDescriptor (Blocking / Inheritable, IPVx, SocketType) |
| CSocketIPAddress | Native representation of an IP Address |
| CSocketNetworking | Networking globals initialization (Winsock2 WSAStartup) |
| CSocketServer | Use a SocketDescriptor as a Server (example TCP or UDP Socket Server) |
| CSpan | View over a contiguous sequence of items (pointer + size in elements) |
| ►CString | A non-modifiable owning string with associated encoding |
| CGrowableImplementation | |
| CStringAlgorithms | Algorithms operating on strings (glob / wildcard) |
| CStringBuilder | Builds String out of a sequence of StringView or formatting through StringFormat |
| CStringBuilderFor | StringBuilder tied to a specific type, created through StringBuilder::create or StringBuilder::createForAppendingTo |
| CStringConverter | Converts String to a different encoding (UTF8, UTF16) |
| CStringFormat | Formats String with a simple DSL embedded in the format string |
| CStringFormatOutput | |
| CStringIterator | A position inside a fixed range [start, end) of UTF code points |
| CStringIteratorASCII | A string iterator for ASCII strings |
| CStringIteratorSkipTable | Builds a constexpr bool skip table of 256 entries used in some parsers |
| CStringIteratorUTF16 | A string iterator for UTF16 strings |
| CStringIteratorUTF8 | A string iterator for UTF8 strings |
| CStringPath | Pre-sized char array holding enough space to represent a file system path |
| ►CStringSpan | An read-only view over a string (to avoid including Strings library when parsing is not needed) |
| CNativeWritable | |
| CStringView | Non-owning view over a range of characters with UTF Encoding |
| CStringViewTokenizer | Splits a StringView in tokens according to separators |
| CStrongID | Strongly typed ID (cannot be assigned incorrectly to another ID) |
| CSyncZLibTransformStream | |
| CTaggedMap | Map of SC::TaggedUnion, where the key is TaggedUnion enumeration value |
| CTaggedType | Associate a Type to an Enum, as required by TaggedUnion |
| CTaggedUnion | Type safe union with an enum type, where each type has an associated enum value |
| CTestCase | A test case that can be split into multiple sections |
| ►CTestReport | Collects multiple TestCase and reports their results |
| CIOutput | |
| COutput | |
| CThread | A native OS thread |
| CThreadPool | Simple thread pool that executes tasks in a fixed number of worker threads |
| CThreadPoolTask | A small task containing a function to execute that can be queued in the thread pool |
| CTimeMs | A vocabulary type representing a time interval in milliseconds since epoch |
| CUniqueHandle | Move only handle that has a special tag value flagging its invalid state |
| CVector | A contiguous sequence of heap allocated elements |
| CVectorMap | A map holding VectorMapItem key-value pairs in an unsorted Vector |
| CVectorMapItem | The single item of VectorMap, holding a Key and Value |
| CVectorSet | A set built on an unsorted Vector, ensuring no item duplication |
| CVirtualAllocator | A MemoryAllocator implementation based on a growable slice of VirtualMemory |
| CVirtualMemory | Reserves a contiguous slice of virtual memory committing just a portion of it |
| CWritableFileStream | Uses an SC::AsyncFileWrite to stream data to a file |
| CWritableSocketStream | Uses an SC::AsyncFileWrite to stream data to a socket |
| Csc_hashing_result_t | Hash result |
| Csc_hashing_span_t | Just a generic data span |
| Csc_hashing_t | Opaque object holding state of hashing |