▼Nmtcore | Core library for C++ with Zig-related functionality |
►Nascii | ASCII-related methods for parsing and character classification Split into its own namespace to allow for clear differentiation from any unicode-related methods |
CUnescapeError | Error when unescaping characters fails |
►Ncsv | CSV namespace for CSV-related utilities |
CColEnd | Special output-only type for indicating the end of a colum |
COptions | CSV options for defining the CSV format |
►CReader | |
CField | |
CReadError | |
CRowEnd | Special output-only type for indicating the end of a row |
►CSliceParser | |
CField | |
CFieldParser | |
CFieldReader | |
CIter | |
►CRow | |
CIter | |
CRowField | |
CRowReader | |
►Nio | |
►Nfloats | |
►Ndragonbox | Implementation of the dragonbox algorithm to convert floats to strings Uses slices and writers rather than raw char pointers Also, allows for more control over formatting Don't use this namespace directly |
CDragonboxFormatOptions | |
CFloatDec64 | |
CEnsureFormattable | |
CFormatOptions | Options for specifying formatting |
CFormatter | Struct to override to specify how a type should be formatted |
CFormatter< char * > | Format specifier for null-terminated char* (mutable C-strings) Has same format options as template<Iterable T> struct Formatter<T> |
CFormatter< char > | Formatter for characters Format specifier options for output: |
CFormatter< const char * > | Format specifier for null-terminated const char* (C-strings) Has same format options as template<Iterable T> struct Formatter<T> |
CFormatter< IPv4 > | Formats IPv4 addresses No formatting options are available |
CFormatter< IPv6 > | Formats IPv6 addresses Formatting options: |
CFormatter< Optional< T > > | Formatter for an optional Uses the formatter for the underlying value if available No formatting options |
CFormatter< Result< V, E > > | Formatter for a result Will check if the value has been moved out of the result Uses the formatter for the underlying value and/or error if available No formatting options |
CFormatter< SubnetMaskV4 > | Formats subnet v4 masks |
CFormatter< SubnetMaskV6 > | Formats subnet v4 masks |
CFormatter< SubnetV4 > | Formats a masked version 4 IP address with a subnet |
CFormatter< SubnetV6 > | Formats a masked version 6 IP address with a subnet |
CFormatter< T > | Formats integer numbers (other than char) such as int, unsigned, long long, etc Format specifier options for output: |
CPadded | Formats data with padding into a writer's output stream Uses Formatter<T> under the hood Usually will use extract_padding_options to get padding options |
CPaddingOptions | Represents parsed padding options for formatting output |
CReader | A reader that reads data from some sort of stream or buffer Note: the data elements read should be trivially constructible, trivially destructible, and trivially copyable |
CSyncFileSystem | Synchronous File System interface for handling I/O calls This is encapsulated as a struct of file pointers so we can do deterministic testing This allows us to also dynamically swap things out for different file systems, or even do remote "file systems" where we're reading and writing to an object store (e.g |
CSyncFileSystemVTable | VTable for synchronous file system |
CWriter | A writer that writes data to some sort of stream or buffer Note: the data elements written should be trivially constructible, trivially destructible, and trivially copyable |
►Nslices | Additional algorithms that can be performed on slices, such as comparisons, searching, etc |
CSearchIndexes | |
CSplitIter | |
CSplitIter< T, Slice< T > > | |
►Nthread | Thread-related namespace The methods and classes provided by this class are thread-safe Classes and methods provided outside of this class are not thread-safe (with the exception of malloc_alloc) This requires linking mtcore_thread to your application |
CArc | Automic Reference Count |
CBeforeOption | Option to add a timeout on select to ensure a path runs before a timeout If the timeout is hit, a timeout error will be returned from the select Will call a callback on timeout |
CBeforeOptionNoCallback | Option to add a timeout on select to ensure a path runs before a timeout If the timeout is hit, a timeout error will be returned from the select |
Cbroadcaster | A broadcaster is able to send messages to multiple channels, with each channel having its own lock Sending messages requires locking the entire broadcaster |
CBroadcastSubscription | A subscription to a broadcaster |
CChannel | Channel is a message-passing primitive between two threads A channel has blocking and non-blocking (or auto timed out for a size of 0) methods Timeout methods are also present A channel will have a buffer size for how many messages can be queued up If there is a buffer size of 0, then a reader and writer must both be accessing the channel simultaneously for messages to be transmitted |
CDebugAllocator | Allocator state object for shared debug allocation Must live longer (and at the same memory address) than all allocators returned by allocator() |
CDynamicArenaAllocator | Allocator state object for shared dynamic arena allocation Must live longer (and at the same memory address) than all allocators returned by allocator() |
CFixedArenaAllocator | Allocator state object for shared fixed arena allocation Must live longer (and at the same memory address) than all allocators returned by allocator() |
CFixedBufferAllocator | Allocator state object for shared fixed buffer allocation Must live longer (and at the same memory address) than all allocators returned by allocator() |
CFuture | Represents a value that will be made available in the future Can wait on the value for when it is ready |
►CFutureState | Represents the state-setter part of a future |
Cmake_res | |
►CFutureState< T, void > | Represents the state-setter part of a future |
Cmake_res | |
CInbox | Inter-thread communication primitive to send messages between threads Has a growable Queue |
CPublisher | Represents a pub/sub publisher which can publish messages of type T Supports blocking and non-blocking publishing |
CReceiveOption | Select option to receive a message and calls a callback on receive |
CSelect | Underlying type for a select statement Use the "select" method directly for instantiation |
CSelect< CurOption, Options... > | A stage of a select case Use the "select" method directly for instantiation |
CSelect<> | Base case for a select statement Use the "select" method directly for instantiation |
CSendOption | Select option to send a message |
CSendOptionNoCallback | Select option to send a message without calling a callback on send |
CSubscription | Represents a pub/sub subscription which can receive messages of type T Under the hood, each publisher maintains a message broker which stores all messages Subscribers will hold an Arc to the broker and will retrieve messages from the broker Due to the broker being shared, it does require more locks for both reads and writes This means it has a pretty low throughput when there is lots of contention The primary advantage is it has a much more convenient API for more non-blocking operations or timed blocks The reason this happens is that publishers are given greater insight into each subscription, and can better avoid partial writes |
CWeakArc | Weak Automic Reference Count |
►CAllocator | Represents a memory allocator Exact behavior depends on the underlying VTable used Should use the a_* methods for working with an allocator |
CVTable | V-Table for implementing your own allocator Each allocator has state, some of which is standardized (e.g |
CArrayList | Array list is a growable, dynamic array with elements inside Elements are stored in an array, and are copied when resizing needs to happen Accessing elements is \(O(1)\) Adding elements is worst case \(O(N)\) Removing elements while preserving order is \(O(N)\) Removing elements while not preserving order is \(O(1)\) |
►CBitset | Represents a bitset with dynamically allocated memory (using an mtcore allocator) Allows operating on an arbitrary number of bits |
CBitsetAccess | Helper for accessing a bitset position (including for setting bits) |
CSetBitIter | Simple bit set iterator that uses next() iteration to return the indices of all set bits |
►CBitset2D | Represents a bitset with dynamically allocated memory (using an mtcore allocator) Allows operating on an arbitrary number of bits |
CBitsetAccess | Helper for accessing a bitset position (including for setting bits) |
CSetBitIter | Simple bit set iterator that uses next() iteration to return the indices of all set bits |
►CBitsetFixed | Represents a bitset with dynamically allocated memory (using an mtcore allocator) Allows operating on an arbitrary number of bits |
CBitsetAccess | Helper for accessing a bitset position (including for setting bits) |
CSetBitIter | Simple bit set iterator that uses next() iteration to return the indices of all set bits |
CConstPtrIter | Iterator that gives const pointers to elements of a collection |
►CEndianSlice | A Slice with Endian-aware data which is just a pointer + length + endian direction Accessing elements through the array operator will do bounds checks and will convert to native endian by default (this can be overridden with access methods) Accessing out of bounds will terminate the program instead of throw Can also get sub slices |
CConstEndianWrapper | Endian Wrapper for grabbing the endian value By default, will handle converting to and from the native architecture Can also manually specify the endian architecture to use |
CEndianWrapper | Endian Wrapper for grabbing the endian value By default, will handle converting to and from the native architecture Can also manually specify the endian architecture to use |
CError | A struct representing an error Auto convertible to a Result of any type |
CFixedQueue | Statically allocated FIFO queue with fixed maximum capacity |
CFixedRingBuffer | Represents a ring buffer with static memory allocation Can be used as a FIFO or LIFO queue Allows memory reuse by wrapping pointers Cannot be dynamically resized |
►CGenList | Represents a generational list where removed items are marked and recycled |
CConstIter | An iterator that iterates over values (copies) of each stored element |
CHandleIter | An iterator that iterates over all handles of each stored element |
CPtrIter | An iterator that iterates over pointers to each stored element |
CHandle | Handle to an item in the list |
CIPv4 | Represents an IP version 4 address (32 bits) Can be converted to an IPv6 |
CIPv6 | Represents an IP version 6 address (128 bits) If it represents an IPv4 address, can be converted to an IPv4 address |
CMallocAllocator | State variable for malloc-based allocator |
CNullopt | Placeholder value for any empty Optional (similar to std::nullopt) |
COptional | Represents a value that may or may not exist (an "Optional" value) Similar concept to std::optional, but different implementation and additional nicety methods which makes this a better alternative for simple loop-based iteration (via copy_if_present and move_if_present) |
COptional< T * > | Represents a pointer that may or may not be null |
Coverload | Visit overload pattern for std::variant |
CPrng | Represents a Pseudo Random Number Generator |
CPrngState | Internal PRNG state |
CPrngVTable | V-Table for PRNG Designed for having a simple PRNG implementation |
CPtrIter | Iterator that gives pointers to elements of a collection |
CQueue | FIFO Queue (First In, First Out) Dynamically allocated, can be resized |
CRc | Thread-local reference counted pointer Not thread safe, don't share Reference counting for cleaning up memory Supports weak references as well |
CResult | Represents a Result that may have an error (error code) or a success value A type of "void" means there is no Result value, but there may be a failure |
CResult< void, ErrType > | Represents a Result that may have an error (error code) or a success (without a value) |
CRingBuffer | Represents a ring buffer with dynamically allocated memory Can be used as a FIFO or LIFO queue Allows memory reuse rather than continuous memory allocations as it is used May be dynamically resized |
CRuneIterator | Iterates over runes of utf8 sequences (char, char_t) |
CRuneIterator< char16_t > | Iterates over runes of utf16 sequences Also handles flipping endianness to native endian |
CRuneIterator< char32_t > | Iterates over runes of utf32 sequences Also handles flipping endianness to native endian |
►CSegmentedList | Segmented list where each segment contains multiple nodes Allows growing the list without having to invalidate all previous memory addresses |
CConstIter | Const reference for mutating elements Using custom iterator for speed |
CConstPtrIter | Pointer iterator for mutating elements Using custom iterator for speed |
CPtrIter | Pointer iterator for mutating elements Using custom iterator for speed |
CSlice | A Slice which is just a pointer + length Accessing elements through the array operator will do bounds checks Accessing out of bounds will terminate the program instead of throw Can also get sub slices |
CSubnetMaskV4 | Represents the bitwise mask for a version 4 subnet |
CSubnetMaskV6 | Gets a subnet mask for an IP version 6 subnet |
CSubnetV4 | A masked IP version 4 address |
CSubnetV6 | A masked IP version 6 address |
CSuccess | Represents a success result (auto castable to Result) |
CSuccess< void > | Represents a success value |
CThreadLocalDebugAllocator | State variable for thread local debug allocator Must live longer (and at the same memory address) than all allocators returned by allocator() |
CThreadLocalDynamicArenaAllocator | State variable for thread local dynamic arena allocator Must live longer (and at the same memory address) than all allocators returned by allocator() |
CThreadLocalFixedArenaAllocator | State variable for thread local fixed arena allocator Must live longer (and at the same memory address) than all allocators returned by allocator() |
CThreadLocalFixedBufferAllocator | State variable for thread local fixed buffer allocator Must live longer (and at the same memory address) than all allocators returned by allocator() |
CValIter | Iterator that gives copies of elements of a collection |
CWeakRc | Thread-local weak reference counted pointer Not thread safe, don't share Does not hold lifetime |
▼Nmttest | MT Unit testing framework |
CCmpRes | Result of comparing left and right (retains value references for debug printing) |
CIsStreamable | Checks if a class can be streamd to ostream |
CTestCase | Test case metadata |
►CTestContext | Context for unit tests |
Ctest_err | |
Ctest_fail | |
CTestSuites | Test suite metadata and runner |