incplot-lib is a library implementing the core features necessary to make inplot work.
Naturally though, it can potentially be used for other things as well
- Parser - Parse a text-based input (JSON, JSON Lines, NDJSON, CSV, TSV) into DataStore type
- DataStore - A way to store the data to be plotted in a sensible manner
- DesiredPlot - A way to specify what is to be plotted and how and all the necessary details. Also provides implementation of (sort of) smart autoguessing of parameters that the user hasn't specified
- plot_structures namespace - Type-based ways to 'draw' (that is render into a unicode string) various kinds of plots
- Uses bleeding edge (as of May 2025) features from C++23 language as well as from C++23 STL extensively
- Natively cross-platform without any platform specific code behind macros (in the library itself)
- Compiles with GCC 14.2+ and Clang 20.1.3+ on Linux, MacOS
- Compiles with MSVC 19.44+, GCC 14.2+ (through MSYS2) and Clang 20.1.3+ (through MSYS2) on Windows
- Uses flexible design patterns combining both classic OOP and functional programming features of C++23 (ie. monadic operations)
- Combines classic inheritance, 'builder pattern', 'deducing this' from C++23 and std::expected and its monadic operations from C++23 into one design pattern that is easy to change/refactor/add to, that is way less error prone, has great error handling and stellar performance characteristics through compile-time polymorphism ... mostly seen in 'plot_structures_impl.hpp'
- Generally doesn't use pointer semantics anywhere (unmanaged or managed)