File README.md artifact e8804745cd part of check-in ca4b731098
Natools
This library gather all reusable packages written by Natasha Kerensikova that are too small to fit in a project by themselves.
It contains the following package hierarchy:
Accumulators
: an interface for string accumulator objects and stacks of accumulatorsString_Accumulator_Linked_Lists
: a basic implementation of an accumulator stack using a reference accumulator
Chunked_Strings
: an implementation of unbounded strings backed by non-contiguous fixed-size chunks of memoryConstant_Indefinite_Ordered_Maps
: task-safe ordered maps with immutable mappingCron
: a simple low-precision service of periodic eventsFile_Streams
: wrapper aroundStream_IO
files implementing stream interfaceGetopt_Long
: command-line argument processing similar to Cgetopt_long
GNAT_HMAC
: instances ofHMAC
using GNAT hash primitivesHMAC
: generic HMAC implementation using a formal hash functionIndefinite_Holders
: simple Ada 2005 implementation of the Ada 2012 containerReferences
: generic simple reference-counter implementationPools
: task-safe pool of referencesjj
S-expressions
: library for dealing with S-expressionsAtom_Buffers
: dynamic buffer for S-expression atomsAtom_Ref_Constructors
: helper constructors for atom referencesAtom_Refs
: common reference-counted atomsConditionals
: S-expression boolean expressions about some objectGeneric_Evaluate
: Generic boolean expression evaluation framework
Dynamic_Interpreters
: S-expression interpreter with mutable commands and callbacksEncodings
: translators to and from official S-expression encodingsFile_Readers
: objects reading a file to an atom or a S-expressionFile_Writers
: file-backed S-expression printerGeneric_Caches
: memory container for S-expressionsInterpeter_Loop
: inner loop of S-expression interpreters, typically used in static interpretersInterpreters
: callback-based S-expressions interpreterLockable
: interface for S-expressions descriptors that can be temporarily restricted to a given nesting levelParsers
: S-expression descriptor from a byte streamPrinters
: interface for objects to which S-expressions are writtenPretty
: human-friendly S-expression pretty printerConfig
: serialization and deserialization of pretty printer parameters to and from S-expressions
Replayable
: interface for S-expression descriptors whose state can be stored and replayedSpecial_Descriptors
: always-empty and always-in-error descriptorsTemplates
: S-expression template renderersDates
: rendering ofAda.Calendar.Time
valuesGeneric_Discrete_Render
: rendering of enumeration valuesGeneric_Integers
: rendering of integer valuesIntegers
: instance ofGeneric_Integers
for standard integers
Static_Hash_Maps
: code generator around GNATPerfect_Hash_Generators
to build a static hash mapS_Expressions
: read S-expression description of static hash map
Storage_Pools
: helper objects with dynamic memory managementString_Slices
: objects hold slices of reference-counted shared stringsSlice_Sets
: sets of aforementionned slices
Tests
: very simple test frameworkText_IO
: test output using standardAda.Text_IO
Time_IO
: conversions between time values and stringsHuman
: human-readable fuzzy formatsRFC_3339
: time format described by RFC-3339
Time_Keys
: short printable string serialization of time that is consistent with lexicographical orderTime_Statistics
: accumulator for (run)time statisticsCoarse_Timers
: instance ofGeneric_Timers
with standard calendar timeFine_Timers
: instance ofGeneric_Timers
using realtime annexGeneric_Timers
: timer objects to provide data to accumulators