Extended standard template library. This library implements a set of new tools and extends the set of existing tools that are implemented by the C++ standard template library. There are a number of functionalities that are added. The basic sections are listed below:
The ArgParse file is based around the parsing arguments supplied from the
command line. It uses a syntax similar to that of the python class of the same
name. It allows for parsing of arguments to store data in a specified type, or
to set a flag. ArgParse will automatically generate a help display, listing
all of the arguments in an ordered manner. The arguments are returned in a map
with key values as strings referencing the destination for the argument, and
the values being a estl::Variable holding the data value. More information
can be found on the documentation for ArgParse.
The Format file is used for formatting string. The syntax of the format
string follows the formatting style found in Python's format function. The
formatted arguments will first attempts a member function called format, then
will attempt printf formatting, then will resort to ostream formatting. All
of the formatted strings are collected and returned as one string matching the
defined specifier.
The Logger file is used for an advanced, but easy to use logging system. All of the loggers are singletons, allowing consistent logging across the program. A collection of macros allow for the logging system to determine the source file, function, and line number that the log message was called from. All log messages can be formatted as desired, allowing for extreme control of the output. There are a selection of different loggers to chose from:
-
ConsoleLogger
-
FileLogger
-
DailyLogger
-
CounterLogger
-
StreamLogger
Each of these loggers handle logging messages differently, and more detail is given in the docs.
The Matrix file is primarily to provide a mathematical matrix object. Using templated arguments, the matrix class provides all classical mathematical matrix operations, utilizing the templated types commands.
The Stream file is to provide an extended implementation of printf that
utilizes C++ streams. This allows for using the printf notation on any stream
object. This new implementation makes use of variadic templates, so that any
class or struct can be passed as an argument, using its respective operator<<
to print it to the stream. There are some default bindings for the default
streams.
The tree class is an implementation of an arbitrary tree structure. It provides easy ways to add or remove children. There are three different iterators that can be used for iterating over the nodes of the tree including:
- depth_iterator
- sibling_iterator
- leaf_iterator
The file also provides methods for viewing the elements in the tree as either a multi-line string or a single-line string.
The Variable class is a class encapsulating a union of the fundamental types in C++ as well as vectors of the fundamental types. This includes all of the following types, and vectors of each of them:
boolcharsigned charunsigned charsigned short intunsigned short intsigned intunsigned intsigned long intunsigned long intsigned long long intunsigned long long intfloatdoublelong doublestd::stringconst char*
The Variadic file implements utility functions for handling variadic packed
template arguments. It provides functions for unpacking argument pack into
vector, tuple, vector<any>. Using these functions allows a user to access
all variables in the variadic template without requiring a recursive function.
The Vector file is primarily to provide a mathematical vector object. Using templated arguments, the vector class provides all classical mathematical vector operations, utilizing the templated types commands.