mirror of
https://github.com/tezc/sc.git
synced 2025-01-14 06:43:04 +08:00
Overview
Common libraries and data structures for C. (C99)
Each folder is stand-alone and contains a single .h .c pair.
There is no build, copy .h .c files you want.
List
Library | Description |
---|---|
array | Generic array/vector |
buffer | Buffer for encoding/decoding variables, best fit for protocol/serialization implementations |
condition | Condition wrapper for Posix and Windows |
crc32 | Crc32c, uses crc32c CPU instruction if available |
heap | Min heap which can be used as max heap/priority queue as well |
ini | Ini parser |
linked list | Intrusive linked list |
logger | Logger |
map | A high performance open addressing hashmap |
memory map | Mmap wrapper for Posix and Windows |
mutex | Mutex wrapper for Posix and Windows |
option | Cmdline argument parser. Very basic one |
perf | Benchmark utility to get performance counters info via perf_event_open() |
queue | Generic queue which can be used as dequeue/stack/list as well |
sc | Utility functions |
signal | Signal handler & signal safe snprintf (handling CTRL+C, printing backtrace on crash etc) |
socket | Pipe / tcp sockets(also unix domain sockets) /Epoll/Kqueue/WSAPoll for Posix and Windows |
string | Length prefixed, null terminated C strings. |
thread | Thread wrapper for Posix and Windows. |
time | Time and sleep functions for Posix and Windows |
timer | Hashed timing wheel implementation with fast poll / cancel ops |
uri | A basic uri parser |
Test
Although I use on Linux mostly, CI runs with
OS : Linux, MacOS, FreeBSD and Windows Compilers : GCC, Clang, MSVC Arch : x64, aarch64, armv6, armv7, ppc64le, s390x Sanitizers : valgrind and clang/gcc sanitizers(address, undefined, thread)
To run all tests :
#with valgrind mkdir build; cd build; cmake .. && make && make valgrind #with address sanitizer mkdir build; cd build; cmake .. -DSANITIZER=address && make && make check #with undefined sanitizer mkdir build; cd build; cmake .. -DSANITIZER=undefined && make && make check #coverage, requires GCC. mkdir build; cd build; cmake .. -DCMAKE_BUILD_TYPE=Coverage; make; make coverage
Description
Common libraries and data structures for C.
algorithmalgorithmsccollectionsdata-structuresgenerichashmaphashtableheaplibrarylinked-listloggerpriority-queuequeuesocketstackthreadtimervector
Readme
BSD-3-Clause
1.2 MiB
Languages
C
84.8%
CMake
15.2%