schematika arithmetic with facets + multi-argument runtime polymorphism
- C++ 94.2%
- CMake 5.8%
| cmake | ||
| docs | ||
| example | ||
| img | ||
| include/xo/flatstring | ||
| utest | ||
| .gitignore | ||
| CMakeLists.txt | ||
| LICENSE | ||
| README.md | ||
flatstring library
Fixed-length no-allocation string implementation.
Features:
- char array representation with maximum size set at compile time.
- compile time construction from char array and string concatenation
- pointer-free implementation, instances can be used as template arguments
- To the extent practical, provides the same api as
std::string: includes iterators, access methods, assignment, conversion operators.
Limitations:
- requires c++20
- not resizable.
- does not support wide characters.
- (asof April 2024) missing features:
insert,erase,push_back,append,replace,find,compare,starts_with,ends_with,contains,substr.
Documentation
- xo-flatstring documentation here: documentation
- unit test coverage here: coverage
Getting started
build + install
$ cd xo-flatstring
$ mkdir .build
$ PREFIX=/usr/local # for example
$ cmake -DCMAKE_INSTALL_PREFIX=${PREFIX} -B .build
$ cmake --build .build
$ cmake --install .build
build documentation
$ cd xo-flatstring
$ cmake --build .build -- docs
When complete, point local browser to xo-flatstring/.build/docs/sphinx/index.html
build with test coverage
$ cd xo-flatstring
$ mkdir .build-ccov
$ cmake -DCMAKE_INSTALL_PREFIX=$PREFIX -DCMAKE_BUILD_TYPE=coverage -B .build-ccov
$ cmake --build .build-ccov
run coverage-enabled unit tests
$ cmake --build .build-ccov -- test
generate html+text coverage report
$ cmake --build .build-ccov -- ccov
browse to .build-ccov/ccov/html/index.html
Running cmake --install for a coverage build will install coverage report (if generated)
to ${CMAKE_INSTALL_PREFIX}/share/doc/xo_flatstring
LSP support
$ cd xo-flatstring
$ ln -s .build/compile_commands.json