Circular Buffer, or cb for short, is a C/C++ library that implements a circular buffer interface for generic types. It uses stdatomic for single consumer single producer scenarios, avoiding the need for a lock, and provides a callback to implement a locking and unlocking mechanism for other scenarios or platforms.
cb is fully tested and documented and it is MISRA C:2012 compliant.
Refer to the documentation here for details.
Clone the repository as:
git clone https://github.com/dmg0345/cb
Example commands to build the library and run the tests are provided below:
cmake -C "./other/cmake/preload/release.cmake" -S . -B "./.cmake_build"
cmake --build "./.cmake_build" -j --target all
cmake --build "./.cmake_build" -j --target install
ctest --test-dir "./.cmake_build"
Find the base Docker image for the development container at DockerHub. To develop using devcontainers and Visual Studio Code:
docker pull dmg00345/cb:latest
./manage.ps1 run
To generate a release follow the steps below:
- Create a
release
branch fromdevelop
branch, e.g.release/X.Y.Z
. - Update version in conf.py file and in version.cmake file.
- Run cmake with
-DCFG_TAG:BOOL=ON
to tag all the relevant files. - Create pull request from
release
branch tomaster
with the changes with title Release X.Y.Z. - When merged in
master
create release and tag from Github, review production workflow passes for deployment.