A lightweight c++17 utility library. Originally intended to be a less bulky replacement for boost. It contains the following libraries:
Library with various efficient containers and tools.
xo/container/circular_deque.hA deque stored in a ring bufferxo/container/circular_frame_buffer.hxo/container/container_algorithms.hxo/container/container_tools.hxo/container/dynarray.hAn array with run-time allocationxo/container/flag_set.hContainer type for storing flagsxo/container/flat_map.hA map stored in a flat datastructurexo/container/prop_node.hA hierarchical container that can contain any typexo/container/prop_node_tools.hxo/container/small_vector.hxo/container/sorted_vector.hA vector with sorted elementsxo/container/storage.hA container for storing columns of dataxo/container/storage_tools.hxo/container/table.hxo/container/view_if.hIterate through elements of a cotainer that match a specific condition
Library for debugging, testing and performance analysis.
xo/diagnose/debug_storage.hxo/diagnose/debug_tools.hxo/diagnose/profiler.hLight-weight invasive profiler that measures user-tagged function timesxo/diagnose/profiler_config.hxo/diagnose/test_framework.hFramework for unit testing
A light-weight subset of the C++17 filesystem library.
xo/filesystem/filesystem.hBasic file operationsxo/filesystem/path.hClass for storing paths
A library for efficient and flexible 3d geometry.
xo/geometry/angle.hClass for representing angles in radians or degrees, with efficient conversion between typesxo/geometry/axes_type.hxo/geometry/catmull_rom.hCatmull-Rom spline implementationxo/geometry/dynmat.hxo/geometry/dynvec.hxo/geometry/mat33.hxo/geometry/path_alg.hxo/geometry/quat.hQuaternion classxo/geometry/transform.h3D Transformation class (translation + rotation)xo/geometry/vec.hxo/geometry/vec3.h3D Vector classxo/geometry/vec4.h4D Vector class
Library for dealing with numbers.
xo/numerical/average.hxo/numerical/bounded.hxo/numerical/bounds.hxo/numerical/compare.hxo/numerical/constants.hxo/numerical/delayer.hxo/numerical/delta.hxo/numerical/filter.hxo/numerical/functions.hxo/numerical/math.hxo/numerical/piecewise_constant_function.hxo/numerical/piecewise_linear_function.hxo/numerical/polynomial.hxo/numerical/random.hxo/numerical/regression.hxo/numerical/regular_piecewise_linear_function.h
Library for input / output to serial streams of data.
xo/serialization/char_stream.hxo/serialization/serialize.h
xo/shape/aabb.hxo/shape/box.hxo/shape/capsule.hxo/shape/cone.hxo/shape/cylinder.hxo/shape/plane.hxo/shape/shape.hxo/shape/sphere.h
Library for dealing with strings.
xo/string/dictionary.hxo/string/pattern_matcher.hMatch strings using globbing (i.e. using * and ?)xo/string/stack_string.hString that supports push / popxo/string/string_cast.hConvert strings to / from any typexo/string/string_cast_enum.hxo/string/string_tools.hMany tools for string manipulationxo/string/string_type.h
System related tools such as logging and versioning.
xo/system/assert.hSupport for assert with optional exceptionsxo/system/error_code.hxo/system/log.hAdvanced logging systemxo/system/log_level.hxo/system/log_sink.hxo/system/settings.hxo/system/system_tools.hxo/system/type_class.hxo/system/version.hClass for storing version numbers
Library for dealing with time.
xo/time/stopwatch.hxo/time/time.hxo/time/timer.h
Several utilities that don't fit in any other library.
xo/utility/color.hxo/utility/color_gradient.hxo/utility/data_algorithms.hxo/utility/factory.hxo/utility/file_resource_cache.hCaching instances of classes created from a filexo/utility/handle.hxo/utility/hash.hxo/utility/interpolation.hxo/utility/interruptible.hxo/utility/irange.hxo/utility/memoize.hClass that remembers and reuses outcomes for computationally expensive functionsxo/utility/memory_tools.hxo/utility/optional.hEfficient optional class that uses sentinel values for integer and floating point typesxo/utility/pointer_iterator.hxo/utility/pointer_types.hxo/utility/sfinae_tools.h