38 lines
1.9 KiB
Markdown
38 lines
1.9 KiB
Markdown
# DLibC
|
|
|
|
## Description
|
|
Some custom C types and functions I often use.
|
|
These are generally header-only, but if they have source files, they'll be in their own directories
|
|
|
|
They're generally designed for C23 onwards, but "should" work with older versions.
|
|
|
|
The goal is for the types themselves to be memory-safe, however keep in mind that they're still only as good as your usage of them.
|
|
|
|
## Usage
|
|
Literally just copy the header file you want and let your favourite semi-usable build system do the rest.
|
|
|
|
## List of "What we have"
|
|
- `dlibc/vector.h` - A vector type for storing a dynamic amount of type T, with an optional destructor.
|
|
- `dlibc/set.h` - A set type for storing a dynamic amount of type T, with enforced uniqueness and an optional destructor and comparator.
|
|
|
|
## Contributing
|
|
If you want to contribute, please make a pull request and I'll review it. If you want to contribute a new type or function, please make sure it is useful and not just a "cool" thing.
|
|
|
|
If you change an existing type, please run **make** in *build/* directory and **ctest** to ensure compatibility hasn't been broken.
|
|
|
|
Since the whole point is memory safety, please also run the suite with the sanitizers before opening a pull request:
|
|
|
|
```sh
|
|
cmake -S . -B build-asan -DDLIBC_SANITIZE=ON && cmake --build build-asan
|
|
ctest --test-dir build-asan --output-on-failure
|
|
```
|
|
|
|
Use `ctest -V` to see every individual assertion, and `-DDLIBC_C_STANDARD=23` to build against C23 instead of the default C11.
|
|
|
|
If it's new, please write a **test** for it in *tests/test_<name>.c* so others can see the guidelines on how the type is used. The tests use a tiny in-tree harness, *tests/dtest.h*, which is just a list of named cases and some `CHECK_` macros - there is no external framework to install.
|
|
|
|
## Legal Mumbo Jumbo
|
|
Licensed under the MIT License (because GPL doesn't make sense for this (sorry Stallman))
|
|
|
|
Copyright (c) 2026 DcruBro
|