![]() |
NibblePoker's Clang Goodies 1.0.0
Small collection of utilities and libraries for C in order to simplify some development tasks.
|
Small collection of utilities and libraries for C99 that aims to simplify some development tasks.
Robust launch arguments parsing & handling with verb support
Single & double linked lists with custom node support and QoL functions
Basic chained HashMaps
Various string utilities
Toggleable debugging output functions
Completely macro-able char↔wchar_t support
Small extras like UUID4, CRC32B & platform detection
Supports a wide variety of OS, CPU ISA & Compilers
Other features to come as needed or requestedRequirements:
● CMake 3.13+
● Qt's Jom *(ReactOS only, replaces nmake)*
Supported OS:
Windows, Cygwin, Linux & ReactOS
Supported Compilers:
MSVC, CLang, GCC, MinGW & TinyCC
Supported CPU architectures:
x86, x64, ARM & ARM64
Check platforms.md for more info on the platform detector.
Check definitions.md for a complete listing of the configuration definitions.
Firstly, insert the following lines into your CMakeLists.txt:
Finally, configure your targets like so:
The Include directive isn't supported yet.
The included project doesn't detect that it's being included properly like FetchContent does.
The add_subdirectory command works by isn't thoroughly tested yet.
Firstly, add this repository as a submodule in your project and checkout to a specific tag or commit:
Afterward, add the following lines in your CMakeLists.txt:
Finally, modify you targets to add ${src_nibblepoker_c_goodies} like so:
In order to use this library in your projects via a manual import you need to do the following things:
Firstly, add this repository as a submodule in your project and checkout to a specific tag or commit:
Afterward, add the following lines in your CMakeLists.txt:
Finally, modify you targets to add ${src_nibblepoker_c_goodies} like so:
Some examples that demonstrate how to use most of the functions this library provides can be found in the examples/ folder.
Alternatively, you can also check the aziascreations/C99-Win32-Wifi-Utility repository for a complete example in a "fully-fledged" Windows application.
char & wchar_t supportNP_GOODIES_ARGUMENTS_USE_WCHAR to support wchar_t instead of char.NP_DEBUG_LOGGING to enable the special prints.dllist-specific implementation.TODO
You can consult the documentation at the following URL:
https://aziascreations.github.io/C99-Utility-Libraries/
It is automatically updated when a commit is pushed onto the master branch.
If you want to build the documentation, you need to do the following things:
git submodule update --init --recursive.docs/html and open the index.html file.This project provides a couple of benchmarks in order to justify some of the design choices I made.
Please refer to the Benchmarks page for more information.
This project is dual-licensed under the following open-source licenses.
You can choose the one that best suits your needs:
LICENSE-MIT file and be done with it while using an OSI license.Keep in mind, the doxygen-awesome-css submodule repository uses an MIT license.
You can either not clone it or fork the project and remove it to be 100% safe if you use the CC0 1.0 license.
The documentation will still build without it, but it will have a "worse-looking" UI.