UP | HOME

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

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

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.

xo-py-overview.png

6. C++ Abstraction Tower

xo-overview.png

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    

Author: Roland Conybeare

Created: 2024-09-08 Sun 18:01

Validate