A collection of useful C++ routines.
Go to file
Danny Robson 9bfefb3dab job/queue: use a reaper thread to clear finished tasks
clearing the tasks on the worker threads can cause the queue to stall
while the cookie is notified, released, and deleted. we punt the cleanup
off to a reaper thread so that the workers can continue.
2018-03-22 14:59:03 +11:00
algo build: migrate from ipp files to pure hpp files 2018-02-28 11:49:13 +11:00
alloc alloc/allocator: take type into account for sizes and ptrs 2018-03-07 17:57:10 +11:00
coord coord/simd: add more sse operations 2018-03-20 13:35:10 +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: move distance/intersection tests outside classes 2018-03-13 23:27:37 +11:00
hash siphash: add initial implementation 2018-01-23 18:57:04 +11:00
job job/queue: use a reaper thread to clear finished tasks 2018-03-22 14:59:03 +11:00
json maths, view: rationalise equal,almost_equal,== 2018-01-31 19:33:42 +11:00
json2 json2: initial 'jsonish' support 2017-10-05 11:44:37 +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 build: migrate from ipp files to pure hpp files 2018-02-28 11:49:13 +11:00
rand maths: remove gcd in favour of the std implementation 2018-03-11 15:21:36 +11:00
roots use nested namespace declarations 2017-01-05 15:06:49 +11:00
test job/queue: use a reaper thread to clear finished tasks 2018-03-22 14:59:03 +11:00
time hash: use a consistency, less flexible, interface 2018-01-13 15:24:12 +11:00
tools cpuid: add initial trivial CPUID queries 2018-03-18 17:29:44 +11:00
tuple tuple/variadic: split into type/value/pack operations 2018-03-15 23:48:21 +11:00
types traits: add is_same_template_template trait 2018-03-15 15:25:18 +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: add 'from_bits' integer extraction 2018-03-20 13:35:10 +11:00
cast.hpp cast: tighten type constraints for narrow cast 2018-01-30 16:25:28 +11:00
CMakeLists.txt parallel/queue: use representative name for class 2018-03-22 13:05:51 +11: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
cpuid_x86.cpp cpuid: add initial trivial CPUID queries 2018-03-18 17:29:44 +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 cpuid: add initial trivial CPUID queries 2018-03-18 17:29:44 +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: write threadid to trace output 2018-03-22 13:20:23 +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 build: migrate from ipp files to pure hpp files 2018-02-28 11:49:13 +11: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 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: expose only view style read/write from io module 2018-01-31 19:30:48 +11:00
io.hpp build: migrate from ipp files to pure hpp files 2018-02-28 11:49:13 +11:00
iterator.hpp tuple/variadic: split into type/value/pack operations 2018-03-15 23:48: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 build: migrate from ipp files to pure hpp files 2018-02-28 11:49:13 +11:00
maths.cpp maths: use true constexpr values for pi 2018-03-12 23:06:15 +11:00
maths.hpp maths: add relatively_equal comparator 2018-03-20 13:35:10 +11:00
matrix.cpp matrix: use longer names for look_at variables 2018-03-06 13:54:12 +11:00
matrix.hpp matrix: assert that index values are valid 2018-03-13 22:35:05 +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 point/vector: give homog a default dimensionality 2018-03-06 18:13:46 +11:00
pointer.hpp pointer: add align overload for pointer-views 2018-03-02 12:15:43 +11:00
polynomial.cpp maths: use true constexpr values for pi 2018-03-12 23:06:15 +11: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 build: migrate from ipp files to pure hpp files 2018-02-28 11:49:13 +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 build: migrate from ipp files to pure hpp files 2018-02-28 11:49:13 +11:00
rational.cpp rational: assert the denominator is nonzero on reduce 2018-03-13 14:39:51 +11:00
rational.hpp build: migrate from ipp files to pure hpp files 2018-02-28 11:49:13 +11: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 build: migrate from ipp files to pure hpp files 2018-02-28 11:49:13 +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
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: check the status variable is read 2018-03-20 14:50:32 +11:00
tap.hpp tap: check the status variable is read 2018-03-20 14:50:32 +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
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 tuple/variadic: split into type/value/pack operations 2018-03-15 23:48:21 +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 tuple/variadic: split into type/value/pack operations 2018-03-15 23:48:21 +11:00
vector.cpp WIP vector: spherical/cartesian conversion 2017-11-02 18:11:16 +11:00
vector.hpp maths: use true constexpr values for pi 2018-03-12 23:06:15 +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 const array ref template deduction 2018-03-20 13:35:10 +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.