Utilities contains miscellaneous convenience functions for working with files, strings, memory, and other things. The following sets of functionality are included: - AsyncTaskQueue: Multithreaded work dispatching - Atom: Pointer-comparable strings - AutoFreePool: Deferred memory deallocation - Base64: Encoding and decoding of quadrosexagesimal - ChunkArray: A data structure for organizing and indexing variable size data blobs within one contiguous allocation - EventDispatcher: Notification dispatch table - FileBundle: A simple container format for named and indexed chunks of data - FixedIntervalRunLoop: Mechanism for decoupling state updates from screen updates - IndexSelection: Ordered unique set of unsigned ints with various operations suited for representing a multi-item selection in a list - IndexPairSelection: Equivalent of IndexSelection for unordered pairs of related indexes - IndexSubindexSelection: Equivalent of IndexSelection for ordered pairs of unrelated indexes - IOUtilities: Miscellaneous functions relating to memory and file I/O - Queue: A simple data structure for managing an ordered list of pointers - Ranrot: Pseudo-random number generator (see also PCGRandom in gamemath for a potentially better one) - ReferenceCount: Pointer ownership tracking, invoking a callback when all owners have released the pointer - ReverseIndexLookup: A data structure for fast retrieval of the index of a numeric value in a set - StrideArray: A facility for managing a list of items with a specified size but an unspecified type - StringDiff: A way to represent a delta between two strings using at most one heap allocation - UndoTree: General mechanism for storing and traversing undo and redo states, optionally with branching timelines. Subclass UndoStateDelta and override revert() and apply() to implement. - UndoUtilities: List comparison for generating reversible lists of commands for adding, removing, and modifying items - UTFUtilities: Functions for working with Unicode text representations