46 lines
1.2 KiB
Markdown
46 lines
1.2 KiB
Markdown
# RefCount
|
|
|
|
RefCount is a reference counting (thus the name) and garbage collection library
|
|
written in C.
|
|
|
|
RefCount has support for
|
|
- Breaking dependency chains via garbage collection
|
|
- Multiple distinct contexts allowing the tracking of many types of objects,
|
|
each with a possibly different memory allocation implementation
|
|
- Safely running in multi-threaded environments
|
|
- Destructors that can possibly re-reference an object to save it
|
|
|
|
### Building
|
|
|
|
The only external requirement is [ht](https://git.zander.im/Zander671/ht). If
|
|
you build using the instructions below, CMake will automatically download and
|
|
build the dependency for you.
|
|
|
|
For multi threading support, you need a C11 compiler that supports atomic types
|
|
and has the `<threads.h>` header. Without threading support, you only need a C99
|
|
compiler.
|
|
|
|
You can build using:
|
|
```sh
|
|
cmake -B build .
|
|
# replace with above with
|
|
# cmake -B build -DREFCOUNT_USE_THREADS=OFF
|
|
# to build without threads (change the "OFF" to "ON" to re-enable threads)
|
|
make -C build
|
|
```
|
|
|
|
You can then run tests using:
|
|
```sh
|
|
make -C build test
|
|
```
|
|
|
|
### Documentation
|
|
|
|
You can generate documentation with:
|
|
```
|
|
doxygen
|
|
```
|
|
|
|
You can look in the `test/` directory for some examples of the various features
|
|
of RefCount in use.
|