The library contains various classes, functions and macros that can be useful when developing games and game engines.
The code is designed to be as performant, extensible and generic as possible. It follows the style of the standard library in terms of code style, use of iterators, traits, etc. The library is intended to extend the functionality of the standard library and not copy it.
Some examples:
- Implementations of observer, singleton, generic iterator patterns;
- A string that fully follows the std::string interface and supports compile-time configuration of a large number of parameters (SSO size, alignment, hashing algorithms, comparison, formatting, etc.) and contains additional methods (
format(), to_lower()/to_upper(), to<T>(), from<T>(), trim()/trim_right()/trim_left(), remove_prefix()/remove_suffix(), split()
etc.); - Extension of standard library algorithms;
- Macro based RTTI system;
- Additional containers, e.g. cache friendly 2d vector, pool of unique objects, symmetric matrix container , etc.;
- Easing algorithms for working with animation;
- Streams based logging system;
...and much more. See doxygen documentation for more info.
Feel free to suggest any improvements.
Compiler | Debug | Release |
---|---|---|
Clang 16.0.4 | ||
GCC 13.0 | ||
MSVC 19.36.32532 | ||
Apple Clang 13.0 (broken until std::format is implemented) |
Required:
- C++20
- clang: 17+ or 14+ with
-stdlib=libc++ -fexperimental-library
Optional:
- glm (/gl, /render, /math)
- glew (/gl)
- boost (qx::unique_objects_pool)
qxLib is available under the MIT License. See LICENSE.txt.
qxLib was mainly written and is maintained by Nick Khrapov
([email protected]). See the git commit log for other authors.