A collection of useful C++ routines.
Go to file
2017-05-29 17:20:43 +10:00
algo algo/sort: don't std::forward args we're going to reuse 2017-05-19 15:23:10 +10:00
alloc build: use explicit constructors 2017-05-23 12:50:51 +10:00
cmake@770bc543a6 cmake: bump for LTO fixes 2017-05-16 17:14:24 +10:00
coord coord: add arity query function 2017-03-23 14:36:39 +11:00
crypto xxtea: remove unused global 2017-01-27 14:57:39 +11: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 use nested namespace declarations 2017-01-05 15:06:49 +11:00
hash hash/crc: use relative include paths 2017-05-12 15:56:41 +10:00
json build: use explicit constructors 2017-05-23 12:50:51 +10:00
memory build: use explicit constructors 2017-05-23 12:50:51 +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 maths: add signed overloads for renormalise 2017-05-24 15:15:25 +10:00
tools hash/crc: parameterise crc for reflection, and 64 bits 2017-02-14 19:47:12 +11:00
types build: remove unnecessary includes 2016-10-12 15:08:22 +11:00
win32 use nested namespace declarations 2017-01-05 15:06:49 +11:00
.gitignore test/json: run tests through a line wine/crlf wrapper 2016-04-27 17:13:36 +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 build: use explicit constructors 2017-05-23 12:50:51 +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 build: remove unnecessary includes 2016-10-12 15:08:22 +11: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
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
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
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 ascii: add hex conversion and unit tests 2017-05-22 16:11:31 +10: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: add html-style colour parsing 2017-05-22 16:20:21 +10: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 build: remove unnecessary includes 2016-10-12 15:08:22 +11:00
debug.hpp debug: fully qualify almost_equal namespace 2017-05-18 18:20:19 +10:00
debug.ipp use nested namespace declarations 2017-01-05 15:06:49 +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 signed byteswap 2017-01-04 22:38:15 +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 constexpr functions over static variables 2016-12-12 17:06:55 +11:00
extent.hpp extent: prefer constexpr functions over static variables 2016-12-12 17:06:55 +11:00
extent.ipp extent: prefer constexpr functions over static variables 2016-12-12 17:06:55 +11: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 use nested namespace declarations 2017-01-05 15:06:49 +11:00
format.hpp build: use explicit constructors 2017-05-23 12:50:51 +10:00
format.ipp use nested namespace declarations 2017-01-05 15:06:49 +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 use nested namespace declarations 2017-01-05 15:06:49 +11:00
introspection.cpp introspection: add filesystem::path type_name specialisation 2017-01-31 20:30:16 +11:00
introspection.hpp introspection: change constexpr arrays to const 2017-05-16 17:12:14 +10:00
io_posix.cpp io: use size_t result for mapped_file::size 2016-10-25 19:57:13 +11:00
io_posix.hpp use nested namespace declarations 2017-01-05 15:06:49 +11: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 build: remove unnecessary includes 2016-10-12 15:08:22 +11:00
io.hpp build: use explicit constructors 2017-05-23 12:50:51 +10:00
io.ipp posix/fd: extract file descriptor into own unit 2016-10-02 15:50:13 +11:00
iterator.hpp iterator: add infix_iterator 2016-03-11 12:44:00 +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 log: allow dynamic updates of the global log level 2017-01-31 20:30:38 +11:00
log.ipp format: reimplement format rendering 2016-07-28 13:39:27 +10:00
maths.cpp maths: make round_pow2 constexpr 2017-01-04 22:40:06 +11:00
maths.hpp maths: add signed overloads for renormalise 2017-05-24 15:15:25 +10: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
matrix.cpp matrix: parameterise on rows+cols+type 2017-02-21 21:19:28 +11:00
matrix.hpp matrix: add assignment-multiplication operator 2017-03-06 21:36:04 +11:00
matrix.ipp 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
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 docstrings for distance metrics 2017-05-24 15:15:40 +10:00
point.ipp point: use vector operations for distance functions 2016-12-21 20:23:43 +11:00
pointer.hpp pointer: add uintptr align function 2016-03-11 09:40:12 +11: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.hpp preprocessor: expand argument count for MAP 2017-03-06 18:40:13 +11: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: remove typed randomisers without generators 2016-11-17 18:38:08 +11:00
range.cpp range: convert static members to constexpr methods 2016-12-21 16:44:48 +11: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: add crypto warning 2016-06-20 18:06:51 +10:00
region.cpp build: add forgotten clang/gcc7 headers 2017-05-16 17:12:14 +10:00
region.hpp region: prefer constexpr functions over static variables 2016-12-12 17:07:53 +11:00
region.ipp region: prefer constexpr functions over static variables 2016-12-12 17:07:53 +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: use explicit constructors 2017-05-23 12:50:51 +10:00
signal.ipp build: remove unnecessary includes 2016-10-12 15:08:22 +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: add trivial wchar-to-utf8 conversions 2016-11-22 21:48:57 +11:00
string.hpp string: add trivial wchar-to-utf8 conversions 2016-11-22 21:48:57 +11: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 build: remove unnecessary includes 2016-10-12 15:08:22 +11:00
tap.hpp tap: temporarily remove c++17 nested namespaces 2017-02-20 18:09:23 +11:00
tap.ipp WIP tap param rename 2016-07-28 14:18:47 +10:00
term.cpp build: silence unused var/func warnings 2016-10-11 21:43:07 +11: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: add debugging 'ignore' function 2017-05-18 18:21:25 +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
variadic.cpp variadic: add index helper type 2015-04-20 17:13:14 +10:00
variadic.hpp variadic: add index helper type 2015-04-20 17:13:14 +10:00
variadic.ipp variadic: add index helper type 2015-04-20 17:13:14 +10:00
vector.cpp vector: prefer constexpr functions over static variables 2016-12-12 17:04:39 +11:00
vector.hpp vector: add 2d cross product 2016-12-21 20:23:43 +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: add inequality operator 2017-02-20 18:10:26 +11:00
view.hpp view: add make_cview function for pointers 2017-03-23 14:36:56 +11:00
view.ipp view: add make_view specialisations for std::string 2017-03-17 18:06:02 +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.

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