A collection of useful C++ routines.
Go to file
Danny Robson c4e0cd31f9 string: move tokeniser into the header
This allows more varied template parameters to be used.
2018-01-30 12:53:43 +11:00
algo build: don't use './' as an include prefix 2017-11-22 16:49:37 +11:00
alloc build: silence various type conversion warnings 2018-01-18 11:56:42 +11:00
coord coord: mitigate gcc ICE when using redim 2018-01-17 13:28:44 +11:00
doc doc: add noise documentation stubs 2016-02-02 10:36:42 +11:00
encode build: silence various type conversion warnings 2018-01-18 11:56:42 +11:00
fixup/experimental build: don't use './' as an include prefix 2017-11-22 16:49:37 +11:00
geom Merge branch 'master' into coord 2017-11-23 17:24:11 +11:00
hash siphash: add initial implementation 2018-01-23 18:57:04 +11:00
job job/queue: make single argument constructor explicit 2017-08-24 17:53:27 +10:00
json hash: use a consistency, less flexible, interface 2018-01-13 15:24:12 +11:00
json2 json2: initial 'jsonish' support 2017-10-05 11:44:37 +11:00
memory cast: move casting functions into util::cast namespace 2018-01-16 15:11:15 +11:00
posix p/socket: correctly iterate through name lookups 2017-12-30 13:40:04 +11:00
rand build: don't use './' as an include prefix 2017-11-22 16:49:37 +11:00
roots use nested namespace declarations 2017-01-05 15:06:49 +11:00
test string: move tokeniser into the header 2018-01-30 12:53:43 +11:00
time hash: use a consistency, less flexible, interface 2018-01-13 15:24:12 +11:00
tools crypto: remove cryptography primitives 2018-01-14 17:13:21 +11:00
types types/bits: add bytes_uint_t and bits_uint_t 2018-01-17 20:09:21 +11:00
win32 except: move posix/win32 exceptions to own units 2017-12-19 18:18:10 +11:00
.gitignore preprocessor: use a script to create map/reduce 2017-09-12 14:17:30 +10:00
abnf.rl uri: extract grammar into contained ragel file 2017-12-20 12:45:05 +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 UDL for vector and array conversions 2018-01-23 18:51:37 +11:00
backtrace_execinfo.cpp cast: move casting functions into util::cast namespace 2018-01-16 15:11:15 +11:00
backtrace_null.cpp don't pull in namespace std 2016-03-11 13:28:56 +11:00
backtrace_stackwalk.cpp except: move posix/win32 exceptions to own units 2017-12-18 15:46:52 +11:00
backtrace_win32.cpp except: move posix/win32 exceptions to own units 2017-12-18 15:46:52 +11:00
backtrace.hpp backtrace/win32: enable win32 backtrace support 2016-04-19 16:08:56 +10:00
bezier.cpp build: don't use './' as an include prefix 2017-11-22 16:49:37 +11:00
bezier.hpp bezier: add signed distance queries 2016-12-21 20:25:50 +11:00
bezier1.cpp build: silence various type conversion warnings 2018-01-18 11:56:42 +11:00
bezier2.cpp build: silence various type conversion warnings 2018-01-18 11:56:42 +11:00
bezier3.cpp build: silence various type conversion warnings 2018-01-18 11:56:42 +11: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: move casting functions into util::cast namespace 2018-01-16 15:11:15 +11:00
CMakeLists.txt siphash: add initial implementation 2018-01-23 18:57:04 +11:00
cmdopt.cpp cast: move casting functions into util::cast namespace 2018-01-16 15:11:15 +11:00
cmdopt.hpp build: use explicit constructors 2017-05-23 12:50:51 +10:00
cmdopt.ipp build: don't use './' as an include prefix 2017-11-22 16:49:37 +11:00
colour.cpp Merge remote-tracking branch 'origin/master' 2018-01-10 17:19:39 +11:00
colour.hpp Merge remote-tracking branch 'origin/master' 2018-01-10 17:19:39 +11:00
colour.ipp coord: make template parameters more flexible 2017-11-22 17:03:00 +11: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: don't use './' as an include prefix 2017-11-22 16:49:37 +11:00
debug_win32.cpp except: move posix/win32 exceptions to own units 2017-12-18 15:46:52 +11:00
debug.cpp debug: fully qualify panic detail functions 2017-09-08 14:10:11 +10:00
debug.hpp debug: add validate specialisation for pointers 2018-01-01 13:40:34 +11:00
debug.ipp Merge remote-tracking branch 'origin/master' 2018-01-10 17:19:39 +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
exe_freebsd.cpp exe: split into platform units 2016-10-10 16:23:07 +11:00
exe_linux.cpp cast: move casting functions into util::cast namespace 2018-01-16 15:11:15 +11:00
exe_win32.cpp except: move posix/win32 exceptions to own units 2017-12-18 15:46:52 +11:00
exe.hpp build: use experimental::fs over boost::fs 2016-10-07 19:48:42 +11:00
extent.cpp Merge branch 'master' into coord 2017-11-23 17:24:11 +11:00
extent.hpp Merge branch 'master' into coord 2017-11-23 17:24:11 +11: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 build: don't use './' as an include prefix 2017-11-22 16:49:37 +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 view: return unsigned types for size 2018-01-10 18:50:02 +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: use a consistency, less flexible, interface 2018-01-13 15:24:12 +11:00
introspection.cpp build: remove explicit constexpr instantiations 2017-06-08 15:49:25 +10:00
introspection.hpp Merge branch 'master' into coord 2017-11-23 17:24:11 +11:00
io_posix.cpp cast: move casting functions into util::cast namespace 2018-01-16 15:11:15 +11:00
io_posix.hpp hash: use a consistency, less flexible, interface 2018-01-13 15:24:12 +11:00
io_posix.ipp hash: use a consistency, less flexible, interface 2018-01-13 15:24:12 +11:00
io_win32.cpp except: move posix/win32 exceptions to own units 2017-12-18 15:46:52 +11:00
io_win32.hpp build: don't use './' as an include prefix 2017-11-22 16:49:37 +11:00
io_win32.ipp io: move view conversion operator to named function 2016-06-28 15:58:41 +10:00
io.cpp cast: move casting functions into util::cast namespace 2018-01-16 15:11:15 +11:00
io.hpp hash: use a consistency, less flexible, interface 2018-01-13 15:24:12 +11:00
io.ipp io: remove lvalue write function 2017-12-19 18:18:10 +11:00
iterator.hpp iterator: add make_infix example 2018-01-26 14:05:21 +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 except: move posix/win32 exceptions to own units 2017-12-18 15:46:52 +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 cast: move casting functions into util::cast namespace 2018-01-16 15:11:15 +11: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: move log2 into header for constexpr 2017-12-22 12:34:14 +11:00
maths.hpp hash: use a consistency, less flexible, interface 2018-01-13 15:24:12 +11:00
matrix.cpp Merge remote-tracking branch 'origin/master' 2018-01-10 17:19:39 +11:00
matrix.hpp matrix: use vector ostream operator 2017-11-24 17:19:32 +11:00
matrix2.cpp coord: make template parameters more flexible 2017-11-22 17:03:00 +11:00
matrix3.cpp coord: make template parameters more flexible 2017-11-22 17:03:00 +11:00
matrix4.cpp coord: make template parameters more flexible 2017-11-22 17:03:00 +11:00
nocopy.hpp dont overinclude iostream headers 2016-03-17 18:14:40 +11:00
parse.cpp cast: move casting functions into util::cast namespace 2018-01-16 15:11:15 +11:00
parse.hpp parse: use views over explit begin/end pairs 2017-12-18 14:50:10 +11: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 build: don't use './' as an include prefix 2017-11-22 16:49:37 +11:00
point.hpp Merge branch 'master' into coord 2017-11-23 17:24:11 +11: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 build: don't use './' as an include prefix 2017-11-22 16:49:37 +11:00
preprocessor.py preprocessor: use a script to create map/reduce 2017-09-12 14:17:30 +10:00
quaternion.cpp build: don't use './' as an include prefix 2017-11-22 16:49:37 +11:00
quaternion.hpp coord: make template parameters more flexible 2017-11-22 17:03:00 +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 Merge branch 'master' into coord 2017-11-23 17:24:11 +11: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: update required clang version 2018-01-14 17:21:07 +11:00
region.cpp Merge branch 'master' into coord 2017-11-23 17:24:11 +11: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
rfc3986.rl rfc3986: don't enforce actions for rules 2017-12-26 17:34:08 +11:00
sarray.cpp build: don't use './' as an include prefix 2017-11-22 16:49:37 +11:00
sarray.hpp build: don't use './' as an include prefix 2017-11-22 16:49:37 +11: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 string: move tokeniser into the header 2018-01-30 12:53:43 +11:00
string.hpp string: move tokeniser into the header 2018-01-30 12:53:43 +11:00
stringid.cpp stringid: remove explicit synchronisation 2016-11-17 18:38:08 +11:00
stringid.hpp hash: use a consistency, less flexible, interface 2018-01-13 15:24:12 +11:00
strongdef.cpp build: don't use './' as an include prefix 2017-11-22 16:49:37 +11:00
strongdef.hpp strongdef: style 2018-01-24 17:31:22 +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 string: move tokeniser into the header 2018-01-30 12:53:43 +11:00
term.hpp use nested namespace declarations 2017-01-05 15:06:49 +11:00
time_posix.cpp cast: move casting functions into util::cast namespace 2018-01-16 15:11:15 +11:00
time_win32.cpp time: use std::chrono for nanoseconds query 2016-04-05 11:02:54 +10:00
time.cpp build: don't use './' as an include prefix 2017-11-22 16:49:37 +11:00
time.hpp time: more inline implementation into the header 2017-12-30 13:38:11 +11:00
tuple.cpp tuple: add tuple iteration helpers 2015-04-20 17:48:11 +10:00
tuple.hpp tuple: add query for nth parameter pack value 2018-01-23 17:25:43 +11:00
typeidx.cpp build: don't use './' as an include prefix 2017-11-22 16:49:37 +11: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 uri: move component queries entirely into header 2017-12-26 17:34:08 +11:00
uri.hpp hash: use a consistency, less flexible, interface 2018-01-13 15:24:12 +11: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 vector: add spherical canonicalisation function 2018-01-17 17:44:59 +11:00
vector.ipp build: don't use './' as an include prefix 2017-11-22 16:49:37 +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: move ostream operator into header 2017-12-26 17:34:08 +11:00
view.hpp view: add slicing operation, stolen from python 2018-01-30 12:53:43 +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-5.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.