xo libraries
Table of Contents
1. Xo
A set of integrated libraries for event-based simulation with stochastic processes. Intended for use in C++ and python applications.
Variety of features covered, for example: kalman filters, stochastic processes, complex event processing, simulation, websockets.
2. Python Libraries
- xo-pywebsock in-memory http server; can expose entirely-native publishing pipeline via websockets.
 - xo-pywebutil lo-level abstractions for http: endpoints, attribute lists.
 - xo-pykalmanfilter linear kalman filter with simulation support.
 - xo-pymatrix matrix algorithms [wip]
 - xo-pydistribution probability distributions e.g. Kolmogorov Smirnov
 - xo-pyprocess stochastic processes with simulation focus.
 - xo-pyreactor complex event processors + polling reactor.
 - xo-pyprintjson plugin json printing for xo c++ classes.
 - xo-pyreflect plugin introspection for xo c++ classes.
 
3. C++ Libraries
http
- xo-websock in-memory http server with websocket and python support.
 - xo-webutil low-level abstractions for http: endpoints, attribute lists.
 
stochastic processes + friends
- xo-kalmanfilter linear kalman filter with simulation support.
 - xo-process stochastic processes and simulation-compatible realizations.
 - xo-distribution probability distributions including Kolmogorov-Smirnov
 - xo-statistics header-only. online accumulators, histogram.
 - xo-randomgen header-only. fast pseudo random number generators. xoshiro**,
 
complex event processing
- xo-simulator deterministic event-based simulation
 - xo-reactor api for complex event processors + simple polling implementation.
 
data structures
- xo-ordinaltree header-only. fast in-memory B+ tree, red-black tree w/ ordinal statistics.
 
quantitative
- xo-matrix header-only. specialized matrix algorithms with some vectorization [wip]
 - xo-unit header-only. no-alloc constexpr exact unit conversions with some fractional-dimension support.
 - xo-ratio header-only. no-alloc constexpr exact ratio arithmetic.
 
general-purpose
- xo-flatstring header-only. no-alloc plain-old-data constexpr string implementation
 - xo-callback header-only. reentrant callback set
 - xo-printjson json printer with plugin support.
 - xo-reflect reflection/introspection library
 - xo-subsys orderly startup and shutdown for subsystems with plugin features
 - xo-refcnt intrusive reference counting
 - xo-indentlog header-only logging library; colorized output with indentation tracking program call structure
 
build tools
- xo-cmake cmake modules.
 
4. External Dependencies
| name | deps | 
|---|---|
| all | gcc, lcov, catch2, cmake | 
| all docs | doxygen, graphvix, sphinx, breathe, sphinx_rtd_theme | 
| all py | pybind11 | 
| xo-kalmanfilter | eigen | 
| xo-websock | libwebsockets | 
5. Python Abstraction Tower
Each python library pyfoo depends on similarly-named c++ library foo.
6. C++ Abstraction Tower
7. Size
(per cloc;  excludes comments.  Sizes as of 10jun2024)
| subsystem | cmake | .hpp | .cpp | 
|---|---|---|---|
| xo-websock | 34 | 186 | 1418 | 
| xo-webutil | 27 | 77 | 56 | 
| xo-kalmanfilter | 47 | 552 | 904 | 
| xo-process | 34 | 645 | 163 | 
| xo-simulator | 31 | 186 | 392 | 
| xo-reactor | 39 | 1110 | 261 | 
| xo-distribution | 24 | 717 | |
| xo-ordinaltree | 24 | 3962 | |
| xo-statistics | 22 | 166 | |
| xo-matrix | 29 | 1266 | |
| xo-unit | 49 | 1972 | |
| xo-ratio | 36 | 418 | |
| xo-reflect | 54 | 891 | 289 | 
| xo-refcnt | 36 | 306 | 130 | 
| xo-indentlog | 35 | 1632 | |
| xo-flatstring | 34 | 582 | |
| xo-callback | 25 | 180 | |
| xo-subsys | 27 | 153 | |
| xo-cmake | 1164 |