A collection of useful C++ routines.
Go to file
2019-03-19 16:01:55 +11:00
algo
alloc build: satiate clang-tidy somewhat 2019-01-03 15:48:34 +11:00
array
buffer buffer: move buffer code out of 'memory' namespace 2018-12-19 20:22:18 +11:00
coord
cpuid
debug/gdb
doc
encode
fixup/experimental
geom iterator: move each iterator to their own unit 2019-03-18 16:18:27 +11:00
hash build: satiate clang-tidy somewhat 2019-01-03 15:48:34 +11:00
iterator iterator: move each iterator to their own unit 2019-03-18 16:18:27 +11:00
job
maths
memory
parallel
parse parse: move test binaries into a single directory 2019-03-19 16:01:55 +11:00
posix posix: prefer invoke over manual calls 2019-02-24 21:34:27 +11:00
rand rand/pcg: add pcg_xsh_rr generator 2019-02-21 20:53:58 +11:00
roots
test parse: move test binaries into a single directory 2019-03-19 16:01:55 +11:00
thread
time
tools
tuple
types
win32 win32/windows: undef ERROR 2019-03-04 11:27:35 +11:00
.gitignore
.gitlab-ci.yml
.gitmodules
abnf.rl
adapter.cpp
adapter.hpp build: satiate clang-tidy somewhat 2019-01-03 15:48:34 +11:00
annotation.hpp
ascii.hpp
backtrace_execinfo.cpp backtrace: remove dependency on addr2line 2018-09-12 14:01:21 +10:00
backtrace_null.cpp
backtrace_stackwalk.cpp build: many compilation fixes for win32 2019-01-04 17:13:21 +11:00
backtrace_win32.cpp
backtrace.hpp
bezier1.cpp
bezier2.cpp
bezier3.cpp
bezier.cpp
bezier.hpp
bitwise.cpp relicense under MPL-2.0 2018-08-04 15:14:06 +10:00
bitwise.hpp
cast.hpp
CMakeLists.txt parse: move test binaries into a single directory 2019-03-19 16:01:55 +11:00
cmdopt.cpp
cmdopt.hpp
colour.cpp
colour.hpp rename root namespace from util to cruft 2018-08-05 14:42:02 +10:00
coord.hpp
COPYING
cpp.cpp
cpp.hpp build: transition from experimental filesystem 2018-12-05 19:12:03 +11:00
cpuid.cpp
cpuid.hpp
debug_posix.cpp debug;posix: log that we're waiting for a debugger 2018-09-12 14:02:27 +10:00
debug_win32.cpp
debug.cpp
debug.hpp
Doxyfile.in
endian.cpp
endian.hpp
except.cpp
except.hpp
exe_freebsd.cpp
exe_linux.cpp build: transition from experimental filesystem 2018-12-05 19:12:03 +11:00
exe_win32.cpp
exe.hpp
expected.hpp
extent.cpp
extent.hpp
fixed.cpp
fixed.hpp
float.cpp
float.hpp
format.cpp.rl
format.hpp format: allow implicit conversion from formats to strings 2018-11-29 13:10:02 +11:00
fourcc.cpp
fourcc.hpp
functor.hpp
gcc.hpp
hash.hpp
introspection.cpp
introspection.hpp
io_posix.cpp
io_posix.hpp
io_win32.cpp
io_win32.hpp
io.cpp
io.hpp
kmeans.hpp
libcruft.pc.in
library_posix.cpp
library_posix.hpp
library_win32.cpp
library_win32.hpp
library.hpp
log.cpp rename root namespace from util to cruft 2018-08-05 14:42:02 +10:00
log.hpp
maths.cpp
maths.hpp maths: remove duplicate equality test helpers 2019-02-03 16:38:06 +11:00
matrix2.cpp
matrix3.cpp
matrix4.cpp rename root namespace from util to cruft 2018-08-05 14:42:02 +10:00
matrix.cpp
matrix.hpp
meson.build
nocopy.hpp
platform.hpp
point.cpp
point.hpp
pointer.hpp
polynomial.cpp
polynomial.hpp
pool.cpp
pool.hpp
preprocessor.py
quaternion.cpp
quaternion.hpp quaternion: add slerp and nlerp 2019-02-07 15:45:08 +11:00
random.cpp
random.hpp random: separate the generator initialisation code 2019-02-21 20:53:32 +11:00
range.cpp
range.hpp
rational.cpp
rational.hpp
README.adoc
region.cpp
region.hpp
rfc3986.rl
scoped.hpp
signal.cpp
signal.hpp
singleton.hpp rename root namespace from util to cruft 2018-08-05 14:42:02 +10:00
stats.cpp
stats.hpp
std.hpp
stream.cpp
stream.hpp
string.cpp rename root namespace from util to cruft 2018-08-05 14:42:02 +10:00
string.hpp
stringid.cpp
stringid.hpp
strongdef.cpp
strongdef.hpp
tap.cpp
tap.hpp build: satiate clang-tidy somewhat 2019-01-03 15:48:34 +11:00
term.cpp
term.hpp rename root namespace from util to cruft 2018-08-05 14:42:02 +10:00
time_posix.cpp
time_win32.cpp
time.cpp
time.hpp
typeidx.cpp rename root namespace from util to cruft 2018-08-05 14:42:02 +10:00
typeidx.hpp rename root namespace from util to cruft 2018-08-05 14:42:02 +10:00
types.hpp
uri.cpp.rl
uri.hpp
utf8.cpp rename root namespace from util to cruft 2018-08-05 14:42:02 +10:00
utf8.hpp
variadic.cpp relicense under MPL-2.0 2018-08-04 15:14:06 +10:00
variadic.hpp
vector.cpp build: satiate clang-tidy somewhat 2019-01-03 15:48:34 +11:00
vector.hpp rename root namespace from util to cruft 2018-08-05 14:42:02 +10:00
version.cpp.rl
version.hpp
view.cpp
view.hpp view: add front and back observers 2019-02-08 11:59:24 +11:00
zlib.cpp
zlib.hpp

== libcruft

A simple cross-platform C++ utility library.

Supported compilers: >=clang-5.x, >=gcc7.x; specifically, we require cxx17 features such as structured bindings which aren't present in older compilers. No attempt has been made to compile under MSVC.

=== Environment Variables

The following variables can be defined at runtime to change the library behaviour.

DEBUG:: whether to initialise basic debugging features at load time. the value is irrelevant; the test is for whether the variable is defined.
DEBUG_WAIT:: whether to wait for a debugger to attach before executing `main`.

LOG_LEVEL:: minimum log level that will render to the logging stream. note that a given level may have been compiled out and may not be present, eg. DEBUG tends to only be present for debug builds.
BREAK_LEVEL:: minimum log level that will trigger a breakpoint

JOB_THREADS:: default number of threads to spin up for job queues.
JOB_DEPTH:: the default size of the pending work item queue for a job queue.

Ideally one would not resort to using these variables, but they may make debugging a little easier in some circumstances.