A collection of useful C++ routines.
Go to file
2018-01-09 16:28:46 +11:00
algo algo/sort: don't std::forward args we're going to reuse 2017-05-19 15:23:10 +10:00
alloc a/r/aligned: add forgotten headers and namespace qualifiers 2017-09-21 15:06:35 +10:00
cmake@a1d3200fde cmake: bump for threading support 2017-07-04 14:20:51 +10:00
coord preprocessor: use a script to create map/reduce 2017-09-12 14:17:30 +10:00
crypto crypto/salsa: add initial skeleton for salsa20 2017-07-11 16:49:49 +10:00
doc doc: add noise documentation stubs 2016-02-02 10:36:42 +11:00
fixup/experimental build: use explicit constructors 2017-05-23 12:50:51 +10:00
geom geom/sample: prefer inline impl over ipp files 2017-08-29 12:28:54 +10:00
hash format: rework parser for currying support 2018-01-09 16:28:46 +11:00
job job/queue: make single argument constructor explicit 2017-08-24 17:53:27 +10:00
json format: rework parser for currying support 2018-01-09 16:28:46 +11:00
json2 json2: initial 'jsonish' support 2017-10-05 11:44:37 +11:00
memory maths: rename round_to as round_up 2017-08-30 15:39:02 +10:00
posix posix/fd: label write/read calls with warn_unused 2017-02-20 18:10:04 +11:00
rand build: use explicit constructors 2017-05-23 12:50:51 +10:00
roots use nested namespace declarations 2017-01-05 15:06:49 +11:00
test format: rework parser for currying support 2018-01-09 16:28:46 +11:00
tools hash/crc: parameterise crc for reflection, and 64 bits 2017-02-14 19:47:12 +11:00
types traits: add nth_argument trait query 2017-09-10 12:42:18 +10:00
win32 use nested namespace declarations 2017-01-05 15:06:49 +11:00
.gitignore preprocessor: use a script to create map/reduce 2017-09-12 14:17:30 +10:00
.gitmodules build: remove autotools support 2017-03-23 15:01:09 +11:00
adapter.cpp unify licences 2016-02-26 13:36:01 +11:00
adapter.hpp adapter: add make_reverse for reverse adapter 2017-08-21 16:51:03 +10:00
annotation.hpp annotation: add likely/unlikely functions 2016-08-02 18:49:42 +10:00
ascii.hpp ascii: add hex conversion and unit tests 2017-05-22 16:11:31 +10:00
backtrace_execinfo.cpp io: slurp should default to providing bytes, not chars 2017-09-12 14:18:34 +10:00
backtrace_null.cpp don't pull in namespace std 2016-03-11 13:28:56 +11:00
backtrace_stackwalk.cpp types: remove elems function, prefer std::size 2016-11-17 18:06:39 +11:00
backtrace_win32.cpp backtrace_win32: avoid using win32 wrappers 2016-04-27 15:53:53 +10:00
backtrace.hpp backtrace/win32: enable win32 backtrace support 2016-04-19 16:08:56 +10:00
bezier.cpp bezier: add signed distance queries 2016-12-21 20:25:50 +11:00
bezier.hpp bezier: add signed distance queries 2016-12-21 20:25:50 +11:00
bezier1.cpp build: add forgotten clang/gcc7 headers 2017-05-16 17:12:14 +10:00
bezier2.cpp bezier: add signed distance queries 2016-12-21 20:25:50 +11:00
bezier3.cpp build: add forgotten clang/gcc7 headers 2017-05-16 17:12:14 +10:00
bitwise.cpp bitwise: use bit reversal from bit twiddling hacks 2017-02-13 17:14:30 +11:00
bitwise.hpp bitwise: use bit reversal from bit twiddling hacks 2017-02-13 17:14:30 +11:00
cast.hpp cast: use is_nan to avoid integer warnings 2017-01-23 21:48:12 +11:00
CMakeLists.txt format: rework parser for currying support 2018-01-09 16:28:46 +11:00
cmdopt.cpp cmdopt: use the correct constructor for char errors 2017-01-05 19:50:27 +11:00
cmdopt.hpp build: use explicit constructors 2017-05-23 12:50:51 +10:00
cmdopt.ipp build: add forgotten clang/gcc7 headers 2017-05-16 17:12:14 +10:00
colour.cpp colour: instantiate for u16 2017-10-10 16:50:26 +11:00
colour.hpp colour: add html-style colour parsing 2017-05-22 16:20:21 +10:00
colour.ipp relicence under Apache-2.0 2015-04-13 18:05:28 +10:00
coord.hpp relicence under Apache-2.0 2015-04-13 18:05:28 +10:00
COPYING unify licences 2016-02-26 13:36:01 +11:00
debug_posix.cpp build: remove unnecessary includes 2016-10-12 15:08:22 +11:00
debug_win32.cpp debug: add forgotten header for win32 2016-08-16 16:22:27 +10:00
debug.cpp debug: fully qualify panic detail functions 2017-09-08 14:10:11 +10:00
debug.hpp debug: add unhandled debug function 2017-09-17 12:41:23 +10:00
debug.ipp format: rework parser for currying support 2018-01-09 16:28:46 +11:00
Doxyfile.in doc: improve naive doxygen support 2016-02-26 17:04:54 +11:00
endian.cpp relicence under Apache-2.0 2015-04-13 18:05:28 +10:00
endian.hpp endian: add float byteswap specialisation 2017-10-12 17:38:40 +11:00
except.cpp types: remove elems function, prefer std::size 2016-11-17 18:06:39 +11:00
except.hpp build: use explicit constructors 2017-05-23 12:50:51 +10:00
exe_freebsd.cpp exe: split into platform units 2016-10-10 16:23:07 +11:00
exe_linux.cpp exe: split into platform units 2016-10-10 16:23:07 +11:00
exe_win32.cpp build: fix missing windows includes 2016-11-17 18:38:08 +11:00
exe.hpp build: use experimental::fs over boost::fs 2016-10-07 19:48:42 +11:00
extent.cpp extent: prefer to use brace initialisation 2017-08-27 12:30:09 +10:00
extent.hpp coord: use consistent naming for point coverage tests 2017-08-24 15:56:58 +10:00
extent.ipp coord: use consistent naming for point coverage tests 2017-08-24 15:56:58 +10:00
fixed.cpp fixed: add integer logical operators 2017-01-04 22:38:41 +11:00
fixed.hpp fixed: add integer logical operators 2017-01-04 22:38:41 +11:00
float.cpp build: remove unnecessary includes 2016-10-12 15:08:22 +11:00
float.hpp build: remove unnecessary includes 2016-10-12 15:08:22 +11:00
format.cpp.rl format: rework parser for currying support 2018-01-09 16:28:46 +11:00
format.hpp format: rework parser for currying support 2018-01-09 16:28:46 +11:00
fourcc.cpp iostream: use consistent ostream format 2016-03-11 13:01:57 +11:00
fourcc.hpp iostream: use consistent ostream format 2016-03-11 13:01:57 +11:00
gcc.hpp relicence under Apache-2.0 2015-04-13 18:05:28 +10:00
hash.hpp hash: change default mix function to murmur2 mix 2017-06-29 16:32:58 +10:00
introspection.cpp build: remove explicit constexpr instantiations 2017-06-08 15:49:25 +10:00
introspection.hpp preprocessor: use a script to create map/reduce 2017-09-12 14:17:30 +10:00
io_posix.cpp io_posix: style 2017-07-19 17:20:51 +10:00
io_posix.hpp io_posix: style 2017-07-19 17:20:51 +10:00
io_posix.ipp io: move view conversion operator to named function 2016-06-28 15:58:41 +10:00
io_win32.cpp io_win32: rename util::fd to posix::fd 2016-11-17 18:38:08 +11:00
io_win32.hpp use nested namespace declarations 2017-01-05 15:06:49 +11:00
io_win32.ipp io: move view conversion operator to named function 2016-06-28 15:58:41 +10:00
io.cpp format: rework parser for currying support 2018-01-09 16:28:46 +11:00
io.hpp io: slurp should default to providing bytes, not chars 2017-09-12 14:18:34 +10:00
io.ipp posix/fd: extract file descriptor into own unit 2016-10-02 15:50:13 +11:00
iterator.hpp iterator: add numeric_iterator for ostream output 2017-10-10 16:49:56 +11:00
libcruft-util-inline.pc.in pkg-config: remove erroneous boost build flags 2016-10-11 20:51:19 +11:00
libcruft-util-system.pc.in pkg-config: remove erroneous boost build flags 2016-10-11 20:51:19 +11:00
library_posix.cpp change const char paths to std::filesystem::path 2016-10-08 17:18:18 +11:00
library_posix.hpp change const char paths to std::filesystem::path 2016-10-08 17:18:18 +11:00
library_win32.cpp build: use path objects over c_str calls 2016-11-17 18:07:57 +11:00
library_win32.hpp build: use explicit constructors 2017-05-23 12:50:51 +10:00
library.hpp library: initial wrapper 2015-08-10 15:51:44 +10:00
LICENCE relicence under Apache-2.0 2015-04-13 18:05:28 +10:00
log.cpp log: remove duplicate listings for severity levels 2017-05-22 13:56:19 +10:00
log.hpp format: rework parser for currying support 2018-01-09 16:28:46 +11:00
log.ipp format: rework parser for currying support 2018-01-09 16:28:46 +11:00
maths.cpp maths: make round_pow2 constexpr 2017-01-04 22:40:06 +11:00
maths.hpp maths: workaround clang lto ICE in renormalise 2017-10-11 17:15:24 +11:00
matrix.cpp matrix: remove mutating operations 2017-08-22 15:05:58 +10:00
matrix.hpp matrix: work around instruction selection bug in clang 2017-10-10 14:09:43 +11:00
matrix.ipp matrix: work around instruction selection bug in clang 2017-10-10 14:09:43 +11:00
matrix2.cpp matrix: parameterise on rows+cols+type 2017-02-21 21:19:28 +11:00
matrix3.cpp matrix: parameterise on rows+cols+type 2017-02-21 21:19:28 +11:00
matrix4.cpp matrix: parameterise on rows+cols+type 2017-02-21 21:19:28 +11:00
nocopy.hpp dont overinclude iostream headers 2016-03-17 18:14:40 +11:00
parse.cpp parse: add throwing native type parsers 2017-07-26 15:26:56 +10:00
parse.hpp parse: add throwing native type parsers 2017-07-26 15:26:56 +10:00
pascal.cpp pascal: instantiations for signed lengths 2017-05-29 17:20:43 +10:00
pascal.hpp pascal: parameterise on size type 2017-02-21 21:19:58 +11:00
platform.hpp platform: add freebsd platform defines 2016-05-13 15:23:22 +10:00
point.cpp point: prefer constexpr functions over static variables 2016-12-12 17:06:04 +11:00
point.hpp point: add min/max convenience methods 2017-07-28 14:22:21 +10:00
point.ipp point: use vector operations for distance functions 2016-12-21 20:23:43 +11:00
pointer.hpp pointer: add some comments... 2017-08-30 15:38:13 +10:00
polynomial.cpp polynomial: avoid unnecessary instantiation 2017-02-09 16:49:00 +11:00
polynomial.hpp polynomial: style 2016-12-21 20:23:43 +11:00
polynomial.ipp polynomial: style 2016-12-21 20:23:43 +11:00
pool.cpp relicence under Apache-2.0 2015-04-13 18:05:28 +10:00
pool.hpp pool: avoid alignment warnings on ARM 2017-01-05 19:50:28 +11:00
pool.ipp pool: avoid alignment warnings on ARM 2017-01-05 19:50:28 +11:00
preprocessor.py preprocessor: use a script to create map/reduce 2017-09-12 14:17:30 +10:00
quaternion.cpp quaternion: add second optimised vector rotate 2016-10-18 16:45:57 +11:00
quaternion.hpp quaternion: add assignment-multiply operator 2016-10-18 16:45:38 +11:00
quaternion.ipp quaternion: move out of coord infrastructure 2016-10-17 22:30:16 +11:00
raii.hpp raii: scoped_function takes a nullary void functor 2015-11-13 13:48:46 +11:00
random.cpp random: remove typed randomisers without generators 2016-11-17 18:38:08 +11:00
random.hpp random: add uniform integer generator for whole range 2017-09-21 15:59:03 +10:00
range.cpp range: add signed integer instantiations 2017-08-15 16:44:54 +10:00
range.hpp range: convert static members to constexpr methods 2016-12-21 16:44:48 +11:00
range.ipp range: convert static members to constexpr methods 2016-12-21 16:44:48 +11:00
rational.cpp rational: add type deducing divide/multiply 2015-09-21 16:36:38 +10:00
rational.hpp rational: express assignment in terms of constructors 2016-05-12 17:55:20 +10:00
rational.ipp rational: add type deducing divide/multiply 2015-09-21 16:36:38 +10:00
README readme: note the supported compiler versions 2017-06-19 15:29:41 +10:00
region.cpp coord: use consistent naming for point coverage tests 2017-08-24 15:56:58 +10:00
region.hpp coord: use consistent naming for point coverage tests 2017-08-24 15:56:58 +10:00
region.ipp region: prefer constexpr functions over static variables 2016-12-12 17:07:53 +11:00
sarray.cpp sarray: add a simple static storage/dynamic size array 2017-06-14 17:45:43 +10:00
sarray.hpp sarray: add make_sarray function for arrays 2017-06-15 13:19:50 +10:00
si.cpp relicence under Apache-2.0 2015-04-13 18:05:28 +10:00
si.hpp whitespace 2015-04-13 18:06:08 +10:00
signal.cpp relicence under Apache-2.0 2015-04-13 18:05:28 +10:00
signal.hpp signal: warn if discarding auto-disconnect cookies 2017-08-08 13:55:06 +10:00
signal.ipp signal: remove unused code 2017-08-08 13:55:20 +10:00
stats.cpp build: remove unnecessary includes 2016-10-12 15:08:22 +11:00
stats.hpp build: use ostream/istream over iostream 2016-08-04 17:42:41 +10:00
stream.cpp stream: use scoped manipulators 2017-01-05 20:21:20 +11:00
stream.hpp build: use explicit constructors 2017-05-23 12:50:51 +10:00
string.cpp view: remove ipp file in preference of inline code 2017-08-01 14:16:55 +10:00
string.hpp string: allow tokenisation of c arrays 2017-09-15 15:22:29 +10:00
stringid.cpp stringid: remove explicit synchronisation 2016-11-17 18:38:08 +11:00
stringid.hpp build: avoid type truncation warnings 2016-05-12 17:39:33 +10:00
strongdef.cpp strongdef: actually use tagging for disambiguation... 2015-11-19 15:06:52 +11:00
strongdef.hpp strongdef: remove unnecessary copy constructor 2017-01-27 14:56:54 +11:00
tap.cpp tap: move ipp implementation into hpp/cpp 2017-11-02 18:10:56 +11:00
tap.hpp format: rework parser for currying support 2018-01-09 16:28:46 +11:00
term.cpp build: remove explicit constexpr instantiations 2017-06-08 15:49:25 +10:00
term.hpp use nested namespace declarations 2017-01-05 15:06:49 +11:00
time_posix.cpp build: avoid integer length warnings 2017-01-05 19:50:28 +11:00
time_win32.cpp time: use std::chrono for nanoseconds query 2016-04-05 11:02:54 +10:00
time.cpp build: remove unnecessary includes 2016-10-12 15:08:22 +11:00
time.hpp build: use explicit constructors 2017-05-23 12:50:51 +10:00
time.ipp time: use std::chrono for nanoseconds query 2016-04-05 11:02:54 +10:00
tuple.cpp tuple: add tuple iteration helpers 2015-04-20 17:48:11 +10:00
tuple.hpp tuple: `ignore' should be noexcept 2017-09-08 17:03:22 +10:00
typeidx.cpp typeidx: add lightweight runtime type id call 2017-05-29 17:21:11 +10:00
typeidx.hpp typeidx: add lightweight runtime type id call 2017-05-29 17:21:11 +10:00
types.hpp types: remove elems function, prefer std::size 2016-11-17 18:06:39 +11:00
uri.cpp.rl build: fix switch/enum coverage warnings 2016-05-12 17:45:29 +10:00
uri.hpp build: avoid type truncation warnings 2016-05-12 17:39:33 +10:00
utf8.cpp utf8: clearer comments 2017-10-03 17:48:27 +11:00
utf8.hpp utf8: use an iterator style interface internally 2017-10-02 16:15:19 +11:00
variadic.cpp variadic: add index helper type 2015-04-20 17:13:14 +10:00
variadic.hpp variadic: add accessor for the first template pack parameter 2017-06-13 17:01:06 +10:00
vector.cpp WIP vector: spherical/cartesian conversion 2017-11-02 18:11:16 +11:00
vector.hpp WIP vector: spherical/cartesian conversion 2017-11-02 18:11:16 +11:00
vector.ipp vector: add 2d cross product 2016-12-21 20:23:43 +11:00
version.cpp.rl version: add more constructors, comparators 2016-06-20 13:08:24 +10:00
version.hpp build: use ostream/istream over iostream 2016-08-04 17:42:41 +10:00
view.cpp view: make equality consistent 2017-09-15 15:22:51 +10:00
view.hpp format: rework parser for currying support 2018-01-09 16:28:46 +11:00
zlib.cpp unify licences 2016-02-26 13:36:01 +11:00
zlib.hpp build: make single argument constructors explicit 2015-06-04 22:18:43 +10:00

A simple cross-platform C++ utility library.

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

For the love of God, do not use the crypto routines. I am not a cryptographer or a security specialist. You have been warned.