Named after the Greek god of the sky and thunder and king of Olympus, Zeus is a C++ utility library that serves as the bedrock for all of my projects. It is built as a header-only library for ease of use that contains several utilities aimed at making coding in C++ easier. Some notable features of Zeus are:
- A type-safe wrapper for performing bitwise operations on
enum classtypes, - A customizable, cross-platform
assertmacro, - Several concepts for template programming,
- Python-like functions for string operations,
- A python-like version of
range.
The following are core requirements of Zeus:
- CMake 3.30+
Zeus supports the following platforms and compilers:
| Platform (Compiler) | Version |
|---|---|
| Windows (MSVC) | 19.44 |
| Linux (GCC) | 14.2.0 |
| Linux (LLVM Clang) | 18.1 |
| macOS (Apple Clang) | 17 |
In addition, Zeus depends on the following libraries:
| Library | Version |
|---|---|
| FMT | 12.1.0 |
| magic_enum | 0.9.7 |
| Catch2 | 3.10.0 |
There are three ways in which you can contribute to Zeus:
- If you find a bug, please open an issue. Similarly, if you have a question about how to use it, or if something is unclear, please post an issue so it can be addressed.
- If you have a fix for a bug, or a code enhancement, please open a pull request. Before you submit it though, make sure to abide by the rules written below.
- If you have a feature proposal, you can either open an issue or create a pull request. If you are submitting a pull request, it must abide by the rules written below. Note that any new features need to be approved by me.
If you are submitting a pull request, the guidelines are the following:
- Ensure that your code follows the standards and formatting of the framework.
The coding standards can be seen throughout the code, and the formatting is
handled through the
.clang-formatfile located at the root of the directory. Any changes that do not follow the style and format will be rejected. - Ensure that all unit tests are working prior to submitting the pull request. If you are adding a new feature that has been approved, it is your responsibility to provide the corresponding unit tests (if applicable).
Zeus is published under the BSD-3 license and can be viewed here.