A collection of useful C++ routines.
Go to file
Danny Robson e7c108c770 json: remove use of the restrict qualifier
This mostly just complicates type manipulations. We can add it back in
if performance actually warrants it, or if it becomes an official
qualifier.
2018-05-08 21:48:17 +10:00
algo build: update for gcc-8.1 warnings 2018-05-03 18:32:08 +10:00
alloc build: update for gcc-8.1 warnings 2018-05-03 18:32:08 +10:00
coord coord/ops: add lshift 2018-05-04 17:06:18 +10:00
debug/gdb debug: add gdb pretty printers for coord types 2018-03-28 14:55:54 +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 geom/plane: add distance2 for plane/point 2018-05-07 11:48:32 +10:00
hash build: update for gcc-8.1 warnings 2018-05-03 18:32:08 +10:00
job build: update for gcc-8.1 warnings 2018-05-03 18:32:08 +10:00
json json: remove use of the restrict qualifier 2018-05-08 21:48:17 +10:00
json2 build: fix warnings from -Wparentheses 2018-03-27 20:16:32 +11:00
maths maths: add fast approximations WIP 2018-03-20 13:35:10 +11:00
memory cast: move casting functions into util::cast namespace 2018-01-16 15:11:15 +11:00
parallel parallel/queue: add nodiscard to push/pop 2018-03-22 14:57:34 +11:00
posix posix/except: add templated error_code 2018-04-01 14:43:28 +10:00
rand maths: remove pow2 function 2018-04-09 12:30:22 +10:00
roots use nested namespace declarations 2017-01-05 15:06:49 +11:00
test geom/ray: make ray intersections more robust 2018-05-04 17:10:51 +10:00
thread thread: rename thread primitives from job namespace 2018-03-23 14:10:20 +11:00
time build: update for gcc-8.1 warnings 2018-05-03 18:32:08 +10:00
tools geom/sample: make the extent surface sampler public 2018-05-01 16:02:55 +10:00
tuple tuple/value: add reversing operation 2018-04-05 16:06:09 +10:00
types traits: addd array specialisation for is_container 2018-04-18 21:48:55 +10:00
win32 except: move posix/win32 exceptions to own units 2017-12-19 18:18:10 +11:00
.gitignore gitignore: add pretty printer python cache 2018-03-29 14:16:55 +11: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 build: prefer iosfwd over iostream 2018-03-22 16:11:13 +11:00
backtrace_stackwalk.cpp build: prefer iosfwd over iostream 2018-03-22 16:11:13 +11:00
backtrace_win32.cpp except: move posix/win32 exceptions to own units 2017-12-18 15:46:52 +11:00
backtrace.hpp build: prefer iosfwd over iostream 2018-03-22 16:11:13 +11:00
bezier.cpp build: don't use './' as an include prefix 2017-11-22 16:49:37 +11:00
bezier.hpp build: prefer iosfwd over iostream 2018-03-22 16:11:13 +11:00
bezier1.cpp maths: rename limit to clamp 2018-05-03 21:43:48 +10:00
bezier2.cpp build: silence various type conversion warnings 2018-01-18 11:56:42 +11:00
bezier3.cpp maths: remove pow2 function 2018-04-09 12:30:22 +10:00
bitwise.cpp bitwise: use bit reversal from bit twiddling hacks 2017-02-13 17:14:30 +11:00
bitwise.hpp build: fix warnings from -Wparentheses 2018-03-27 20:16:32 +11:00
cast.hpp cast: tighten type constraints for narrow cast 2018-01-30 16:25:28 +11:00
CMakeLists.txt build: update for gcc-8.1 warnings 2018-05-03 18:32:08 +10:00
cmdopt.cpp cast: move casting functions into util::cast namespace 2018-01-16 15:11:15 +11:00
cmdopt.hpp build: migrate from ipp files to pure hpp files 2018-02-28 11:49:13 +11:00
colour.cpp Merge remote-tracking branch 'origin/master' 2018-01-10 17:19:39 +11:00
colour.hpp colour: style 2018-03-06 18:13:39 +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
cpp.cpp cpp: add basic C preprocessor emulator 2018-04-01 14:49:10 +10:00
cpp.hpp cpp: add some explanatory comments 2018-05-07 13:28:31 +10:00
cpuid_x86.cpp build: prefer iosfwd over iostream 2018-03-22 16:11:13 +11:00
cpuid_x86.hpp cpuid: add initial trivial CPUID queries 2018-03-18 17:29:44 +11:00
cpuid.cpp cpuid: add initial trivial CPUID queries 2018-03-18 17:29:44 +11:00
cpuid.hpp build: prefer iosfwd over iostream 2018-03-22 16:11:13 +11:00
debug_posix.cpp debug: enable debugging features by default 2018-03-27 15:50:29 +11:00
debug_win32.cpp except: move posix/win32 exceptions to own units 2017-12-18 15:46:52 +11:00
debug.cpp debug: add is_valid for floats 2018-04-19 20:32:30 +10:00
debug.hpp debug: catch exceptions by constref in CHECK_THROWS 2018-05-03 17:32:03 +10: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 build: update for gcc-8.1 warnings 2018-05-03 18:32:08 +10: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 extent/region: simplify iteration over ranges 2018-03-23 16:38:54 +11:00
extent.hpp extent;string: return references in iterators 2018-03-27 16:05:46 +11:00
fixed.cpp build: fix warnings from -Wparentheses 2018-03-27 20:16:32 +11:00
fixed.hpp build: fix warnings from -Wparentheses 2018-03-27 20:16:32 +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 build: update for gcc-8.1 warnings 2018-05-03 18:32:08 +10:00
format.hpp view: return unsigned types for size 2018-01-10 18:50:02 +11:00
fourcc.cpp build: prefer iosfwd over iostream 2018-03-22 16:11:13 +11:00
fourcc.hpp build: prefer iosfwd over iostream 2018-03-22 16:11:13 +11:00
functor.hpp functor: add constant functor 2018-04-27 16:32:58 +10: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 build: update for gcc-8.1 warnings 2018-05-03 18:32:08 +10:00
io_posix.hpp build: migrate from ipp files to pure hpp files 2018-02-28 11:49:13 +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: migrate from ipp files to pure hpp files 2018-02-28 11:49:13 +11:00
io.cpp io: add slurp for uint32_t 2018-05-03 21:21:45 +10:00
io.hpp build: migrate from ipp files to pure hpp files 2018-02-28 11:49:13 +11:00
iterator.hpp iterator: improve reference semantics 2018-03-27 15:49:47 +11:00
kmeans.hpp kmeans: use norm as default metric 2018-04-24 11:53:58 +10: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 library: force typing for symbol queries 2018-05-03 21:22:41 +10:00
library_posix.hpp library: force typing for symbol queries 2018-05-03 21:22:41 +10: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 build: prefer iosfwd over iostream 2018-03-22 16:11:13 +11:00
maths.cpp maths: rename limit to clamp 2018-05-03 21:43:48 +10:00
maths.hpp maths: rename limit to clamp 2018-05-03 21:43:48 +10:00
matrix.cpp point/vector: homog no longer takes a size parameter 2018-04-17 14:26:23 +10:00
matrix.hpp point/vector: homog no longer takes a size parameter 2018-04-17 14:26:23 +10: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 parse: instantiate unsigned in parsing 2018-03-27 16:11:04 +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 build: prefer iosfwd over iostream 2018-03-22 16:11:13 +11:00
platform.hpp platform: add freebsd platform defines 2016-05-13 15:23:22 +10:00
point.cpp point: avoid signedness warnings for furthest point 2018-04-23 15:40:51 +10:00
point.hpp point: add convenience centroid function 2018-04-26 16:30:16 +10:00
pointer.hpp pointer: add align overload for pointer-views 2018-03-02 12:15:43 +11:00
polynomial.cpp maths: remove pow2 function 2018-04-09 12:30:22 +10:00
polynomial.hpp build: migrate from ipp files to pure hpp files 2018-02-28 11:49:13 +11:00
pool.cpp relicence under Apache-2.0 2015-04-13 18:05:28 +10:00
pool.hpp pool: launder the allocated pointers 2018-03-22 13:10:18 +11:00
preprocessor.py preprocessor: use a script to create map/reduce 2017-09-12 14:17:30 +10:00
quaternion.cpp coord/ops: add std::{cos,sin} overloads for coords 2018-03-13 14:39:38 +11:00
quaternion.hpp quaternion: add convenience quaternion-vector multiply 2018-05-08 15:51:39 +10: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: don't hardcode mt19937 2018-05-03 21:22:05 +10:00
range.cpp build: update for gcc-8.1 warnings 2018-05-03 18:32:08 +10:00
range.hpp build: migrate from ipp files to pure hpp files 2018-02-28 11:49:13 +11:00
rational.cpp rational: add ostream operator 2018-04-16 16:00:32 +10:00
rational.hpp rational: add ostream operator 2018-04-16 16:00:32 +10:00
README README: update required clang version 2018-01-14 17:21:07 +11:00
README.asc README: note all the environment variables we use. 2018-03-27 16:21:38 +11:00
region.cpp maths: rename limit to clamp 2018-05-03 21:43:48 +10:00
region.hpp extent/region: simplify iteration over ranges 2018-03-23 16:38:54 +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 build: migrate from ipp files to pure hpp files 2018-02-28 11:49:13 +11:00
singleton.hpp singleton: add comments 2018-03-27 16:15:54 +11:00
stats.cpp build: prefer iosfwd over iostream 2018-03-22 16:11:13 +11:00
stats.hpp build: prefer iosfwd over iostream 2018-03-22 16:11:13 +11:00
stream.cpp build: prefer iosfwd over iostream 2018-03-22 16:11:13 +11:00
stream.hpp build: prefer iosfwd over iostream 2018-03-22 16:11:13 +11:00
string.cpp string: move tokeniser into the header 2018-01-30 12:53:43 +11:00
string.hpp string: don't use const members for tokeniser::iterator 2018-04-01 14:47:33 +10: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: send output to the recorded stream, not cout 2018-03-22 16:11:13 +11:00
tap.hpp tap: add proof-of-concept printf chaining 2018-04-16 16:00:32 +10:00
term.cpp string: move tokeniser into the header 2018-01-30 12:53:43 +11:00
term.hpp build: prefer iosfwd over iostream 2018-03-22 16:11:13 +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 time/delta_time: return nanoseconds objects rather than floats 2018-04-05 18:48:23 +10:00
time.hpp time/delta_time: return nanoseconds objects rather than floats 2018-04-05 18:48:23 +10:00
typeidx.cpp typeidx: use atomic variables for thread safety 2018-04-05 12:14:11 +10:00
typeidx.hpp typeidx: use atomic variables for thread safety 2018-04-05 12:14:11 +10:00
types.hpp tuple/variadic: split into type/value/pack operations 2018-03-15 23:48:21 +11:00
uri.cpp.rl build: update for gcc-8.1 warnings 2018-05-03 18:32:08 +10: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 filter call 2018-03-23 16:40:30 +11:00
vector.cpp vector: add validator specialisation 2018-04-16 16:00:32 +10:00
vector.hpp vector: add hughes-moeller make_basis 2018-04-18 21:48:55 +10:00
version.cpp.rl build: update for gcc-8.1 warnings 2018-05-03 18:32:08 +10:00
version.hpp build: prefer iosfwd over iostream 2018-03-22 16:11:13 +11:00
view.cpp view: move ostream operator into header 2017-12-26 17:34:08 +11:00
view.hpp view: add string comparison operators 2018-04-01 14:44:15 +10: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.