AEM's personal C library
aem_stringbuf
: string builder/storageaem_stringslice
: string slice/iterator/parser helperaem_stack
: dynamically resizeable vector ofvoid *
aem_nfa
: NFA-based regular expression engine and lexer
-
aem_log
: logging facility: shows context, filter by loglevel, redirect output -
aem_serial
: cross-platform serial port interface (only tested on Unix) -
AEM_LL
: embedded circular doubly linked list (all macros) -
aem_iter_gen
: graph iterator helper -
aem_gc
: simple mark/sweep garbage collector -
aem_pmcrcu
: Single-threaded implementations ofcall_rcu
,synchronize_rcu
, andrcu_barrier
-
aem_module
: Dynamic module loader
aem_hash
: hash tableaem_childproc
: child process manageraem_poll
:poll(2)
-based event loop- Works with
aem_net
.
- Works with
aem_net
: abstracted network interface- Uses
aem_stream
.
- Uses
aem_stream
: data stream abstraction- Includes utility stream transducers to e.g. split a stream into lines.
Unless otherwise specified, all files in this repository are licensed under the MIT license, found in the file LICENSE in the root of this repository.
The following files in this repository were not written by me (AEM) and may be subject to different licenses:
debugbreak.h
: License and copyright at top of file. Project repository here.order32.h
: Taken from this StackOverflow answer.
Well, at least there's precedent for it.