XIEITE

General-purpose C++ utility library

This project extends the standard library without external dependencies and provides a somewhat organized collection of questionably useful tools for assisting in various shenanigans

Some features:
- constexpr string manipulation functions
- An iterator iterator
- Modern analog literals, up to three dimensions
- Type conversion functor objects
- Argument manipulation functions
- Units, conversions thereof, and corresponding literal suffixes
- std::FILE* wrappers
- A standard streams handle for advanced terminal manipulation
- 2D geometrical elements and operations
- Integer division rounding functions
- A big-integer class
- Factorial and Fibonacci lookup tables, generated at compile-time
- Cross-platform 128-bit integer type aliases
- Bit joining and splitting functions
- constexpr string hashing functions
- Wrappers for numbers and bit-fields
- An integer casting function with consideration for signedness
- Integer overflow detection functions
- An interruptable uniform random number distribution
- Aggregate class arity getter
- A tuple constructor from any aggregate class
- A typeid name demanger
- Continuous enumeration size getter
- Type, value, and member variable name stringification constants
- Tuple manipulation functions
- A non-recursive type list
- The most complete collection of compiler, standard library, platform, architecture, word size, endianness, encoding, language, and feature detection macros on the internet
- Logical operations and other utilities for preprocessor metaprogramming
- Cross-platform diagnostic pragma macros
- Cross-platform attribute wrapper macros
- Various C++ utility macros
- Aligned memory manipulation functions
- A cosmic ray detector
- A cross-platform process executor function
- Named common process exit codes
- A thread pool
- concept wrappers for all standard type trait classes
- Utilities for checking, adding, removing, replacing, and combining const, volatile, and reference qualifiers and non-static member function qualifiers



[Source code]
This library is currently header-only.



Requirements

- C++26
- Latest compiler of choice (preferrably GCC)



Usage

cmake_minimum_required(VERSION 3.25)

project(myProject)
include(FetchContent)

# ...
target_compile_features(myProject PRIVATE cxx_std_26)

FetchContent_Declare(xieite GIT_REPOSITORY "https://github.com/Eczbek/xieite" GIT_TAG main)
FetchContent_MakeAvailable(xieite)
target_link_libraries(myProject PRIVATE xieite)



All code in this library is contained within the 'xieite' namespace.
Preprocessor macros are prefixed with 'XIEITE' to prevent naming collisions.
Internal identifiers are prefixed with 'DETAIL_XIEITE' and are not intended to be used directly.



This documentation is currently incomplete.

Key:
- [Hyperlink]
- Missing page
- Outdated page #
- // Comment
- keyword
- control_flow
- #directive
- type {}
- variable
- callable_variable()
- concept<>
- namespace {}
- function()
- [[attribute]]
- "string"
- number
- MACRO
- FUNCTIONLIKE_MACRO()