This library is designed to provide a simple foundation for research programming projects.
The library is divided into several sections:
- core: This section provides basic data types (strings, arrays, dictionaries, etc.).
It includes configuration files and command registration, allowing the quick creation of
a text-based command-driven user interfaces. It depends only on basic system libraries.
- math: This section defines mathematical types (vectors, matrices, tensors, points, etc.)
and operations on those types. It includes some tools for statistical analysis and optimization.
Some linear algebra code requires the OpenCV library.
- system: This sections defines various operating system abstractions (for files,
directories, timestamps, sockets, etc.).
- image: This section provides various tools for image processing and computer vision.
Much of this code requires OpenCV.
- gui: This section includes a simple graphical user interface (GUI)
that operates on top of the command-and-config infrastructure defined in the core section.
This code requires wxWidgets. (The code in this
section hasn't been compiled or tested in linux.)
- other: This section includes plotting, scripting, and other modules that don't
fall into the above categories.
The library is licensed using the MIT License.
The source code is available for download here.
This library is designed for research programming, not production systems or consumer applications.
The code aims to be simpler (and provide less functionality) than libraries such
as the STL, Boost, and Qt. This library hides complex dependencies (including the operating system
and OpenCV), such that code using the library is easy to read and will compile quickly.
The library aims to allow clean, simple coding. It avoids iterators and exceptions (it treats
most errors as fatal). It uses templates, smart pointers, and operator overloading, but in moderation.