Commit Graph

180 Commits

Author SHA1 Message Date
1f6caaa242 thread/primitive: add platform wrappers for pause/yield instructions 2019-02-02 14:55:13 +11:00
7511580de7 array: add varray wrapper 2019-01-31 13:45:40 +11:00
c92f450ff8 win32/file: add basic file wrapper 2019-01-04 17:13:21 +11:00
a33938e735 build: explicitly link to stdc++fs
We note the dependency ourselves rather than use a global link directive
so that it comes _after_ us. This prevents undefined references (and an
ICE under GCC/LTO)
2019-01-02 13:44:31 +11:00
bce481db0e buffer: move buffer code out of 'memory' namespace 2018-12-19 20:22:18 +11:00
4e25f6e3e2 alloc: eliminate 'raw' allocator distinction 2018-12-19 17:55:24 +11:00
39ed7b27e8 alloc: remove unused allocators 2018-12-19 17:34:35 +11:00
10d5c141f2 alloc: rationalise the 'arena' allocator 2018-12-19 17:16:57 +11:00
4e055f5f0b memory/buffer/traits: add a simple buffer concept 2018-12-19 17:15:51 +11:00
37d68d5586 m/b/simple: add simple buffer implementation 2018-12-17 15:20:55 +11:00
825d359b9d io: test that mapped_file satisfies is_container_v 2018-12-17 12:50:05 +11:00
a7786f04b9 array: move sarray and parray into array directory 2018-12-17 12:50:05 +11:00
8047bf0f83 encode/number: add number decoding for base36 2018-12-16 16:24:45 +11:00
ec16afc747 except: add custom base exception 2018-12-03 15:29:21 +11:00
c7cc0dbf4c random: add a trivial test of the default generator
This allows us to ensure some level of coverage using tools like ASan.
2018-11-28 15:24:28 +11:00
1e0a87d5df geom/sample: align the interfaces for volume/surface sampling 2018-11-26 15:21:18 +11:00
3625a92977 algo: add minimises linear search 2018-11-14 10:21:51 +11:00
6b00668692 types: add 'tagged' union type 2018-11-13 12:57:19 +11:00
79edea8f2d darray: add a static capacity, dynamic sized array 2018-11-05 21:31:30 +11:00
bfe0a92eec preprocessor: build the header out of tree
This avoids unnecessary rebuilds when we have parallel configurations
being built.
2018-10-30 21:41:15 +11:00
627f80ddcd coord;sse: add configuration option to enable SSE specialisation 2018-09-13 14:52:00 +10:00
9ca093d982 backtrace: remove dependency on addr2line
This wasn't functioning in any case so we may as well get rid of it.
2018-09-12 14:01:21 +10:00
300ae9df73 win32/windows: add a defensive windows wrapper header 2018-08-27 14:16:27 +10:00
c5ed42ccbf debug: defend against renaming of panic using macros 2018-08-24 17:31:54 +10:00
3adbfae057 thread: fix compilation for linux specialisations 2018-08-16 12:10:05 +10:00
9a929353d6 build; account for newlines in win32 tests 2018-08-13 23:29:14 +10:00
ff5f79a858 build; add (untested) paths for win32 builds 2018-08-13 14:50:48 +10:00
f6056153e3 rename root namespace from util to cruft
This places, at long last, the core library code into the same namespace
as the extended library code.
2018-08-05 14:42:02 +10:00
3aaddd1d2b json: move json code to external module
This module can now be found at git://git.nerdcruft.net/libcruft-json.git
2018-08-04 15:02:06 +10:00
395b5ae557 json: rename schema directory to constraint 2018-07-16 13:58:12 +10:00
01ae59c19c build: explicitly set FAIL_REGULAR_EXPRESSION for tests 2018-07-16 11:28:04 +10:00
33dc5c7053 json/pointer: add a trivial parser for json-pointer 2018-07-13 16:08:24 +10:00
647af5504b json/schema: reimplement enum support 2018-07-12 13:06:11 +10:00
c07ce50908 json/schema: modularise the validator objects 2018-07-11 19:30:14 +10:00
1658347573 json-schema: add schema test suite 2018-07-05 19:08:58 +10:00
4c0f129a37 json-compare: add a json comparison tool and test suite 2018-07-05 17:46:43 +10:00
74568d1c2d test/json-parse: add json parsing test 2018-07-05 13:45:10 +10:00
8bc87e7c3f build: add C to the required language list
This is required for various compilation tests (like CHECK_SIZE_TYPE).
2018-06-20 12:50:27 +10:00
ba24e9e5af build: explicitly include the nerdcruft cmake module 2018-06-20 12:23:15 +10:00
e9d5909f21 scoped: eliminate the raii header 2018-06-13 15:43:01 +10:00
710a99b865 scoped: add scoped value restoring class 2018-06-12 14:50:54 +10:00
33222d3ef4 types/description: add trivial type categorisation enums 2018-06-03 15:25:50 +10:00
18e2b615d5 std: add compact fixed width typedefs 2018-06-03 15:25:17 +10:00
38e1a19e37 alloc: all allocators should take a type for alloc/dealloc 2018-05-10 13:53:06 +10:00
497d3ca970 build: update for gcc-8.1 warnings 2018-05-03 18:32:08 +10:00
864c0ecf58 functor: add constant functor 2018-04-27 16:32:58 +10:00
aab066593b geom/segment: add trivial segment representation 2018-04-20 15:08:06 +10:00
56a73275c1 geom/line: add basic line class 2018-04-20 15:08:06 +10:00
44ef094d04 build: add poisson sample demo 2018-04-19 13:49:55 +10:00
89defb3bc2 geom/sample: add trivial poisson sample generator 2018-04-19 13:27:43 +10:00
f31a344912 kmeans: add naive kmeans impl 2018-04-18 21:48:55 +10:00
f21297cad5 geom/ellipse: add ray distance tests 2018-04-16 16:00:32 +10:00
bef0aa4929 sphere: move ray tests into sphere's unit 2018-04-16 16:00:32 +10:00
d69a567431 tuple/index: add some index sequence generators and manipulators 2018-04-05 15:18:30 +10:00
5f2b1a5c36 tuple: split tests into separate units 2018-04-05 13:54:42 +10:00
de247c7e7b cpp: add basic C preprocessor emulator 2018-04-01 14:49:10 +10:00
3409d39fc9 job/dispatch: add chunked image job queueing 2018-03-23 16:59:09 +11:00
36f4ba035c thread: rename thread primitives from job namespace 2018-03-23 14:10:20 +11:00
2d7e3e5d7d build: prefer iosfwd over iostream 2018-03-22 16:11:13 +11:00
40da3f8df7 singleton: add trivial implementation 2018-03-22 15:06:48 +11:00
7fc51aa151 parallel/queue: use representative name for class 2018-03-22 13:05:51 +11:00
4773e4be21 parallel: initial single-producer/multiple-consumer queue 2018-03-21 18:53:24 +11:00
e120540bb9 job: add forward declarations 2018-03-20 15:01:23 +11:00
8212048750 maths: add fast approximations WIP 2018-03-20 13:35:10 +11:00
68faa8838e cpuid: add initial trivial CPUID queries 2018-03-18 17:29:44 +11:00
b307ab935d coord/simd: add initial simd tests 2018-03-16 11:10:44 +11:00
12d401b98b tuple/variadic: split into type/value/pack operations 2018-03-15 23:48:21 +11:00
0c824919de job/monitor: add simple monitor adapter 2018-03-15 15:25:18 +11:00
c9dea18881 job/semaphore: add a basic semaphore implementation 2018-03-15 15:25:14 +11:00
4154066a0e job/ticketlock: add a trivial ticketlock 2018-03-15 15:23:43 +11:00
f04e6e4de5 job/spinlock: add simple spinlock implementation 2018-03-15 15:23:43 +11:00
3a26a98db7 job/flag: add a one off event object 2018-03-15 15:23:43 +11:00
1fd58c8967 job/event: a simple reusable edge triggered event 2018-03-15 15:23:43 +11:00
b1276519ef geom: add simple frustum class 2018-03-13 22:37:40 +11:00
3867b9e74e alloc/forwarding: add statically typed forwarding allocator 2018-03-07 16:24:39 +11:00
a40b1254c1 build: remove reference to deleted header... 2018-03-02 12:26:12 +11:00
c2265b9ed2 alloc: add aligned::foreign allocator
sometimes we need to ensure memory allocation has a particular alignment
in an _offset_ buffer (which we have no control over, eg renderdoc's
OpenGL buffers).

this applies an offset to various operations that make the
aligned::direct allocator correctly align allocations for buffers that
aren't themselves aligned.
2018-03-02 12:21:38 +11:00
0e3fa05f05 build: migrate from ipp files to pure hpp files
ipp files weren't a great way of keeping things clean, and IDEs have a
little trouble dealing with the split configuration. this simplifies
debugging a great deal.
2018-02-28 11:49:13 +11:00
18a7790a2a macro: trivial preprocessor for includes 2018-01-30 12:53:43 +11:00
6f51b82f65 siphash: add initial implementation 2018-01-23 18:57:04 +11:00
b5d8b6bca3 build: temporarily add -ldl unconditionally 2018-01-23 18:52:42 +11:00
09aa86f55f crypto: remove cryptography primitives
This code can now be found in libcruft-crypto. It was removed to prevent
people relying on it, and to improve test iteration times in unoptimised
builds.
2018-01-14 17:13:21 +11:00
681768093e hash: use a consistency, less flexible, interface 2018-01-13 15:24:12 +11:00
2840810f64 build: remove unnecessary cmake module 2018-01-10 17:51:59 +11:00
9bb2bdbaba Merge remote-tracking branch 'origin/master' 2018-01-10 17:19:39 +11:00
2713da45f4 format: rework parser for currying support 2018-01-09 16:28:46 +11:00
2af828e82d time: add iso8601 parsing 2018-01-01 15:50:48 +11:00
59b21e67dd time: more inline implementation into the header 2017-12-30 13:38:11 +11:00
ce64396da4 posix/socket: add a convenience wrapper for sockets 2017-12-22 18:38:30 +11:00
e437913746 encode/base: add initial base64 experiments 2017-12-22 12:37:04 +11:00
d0d5ae549e uri: extract grammar into contained ragel file
this will allow us to reference the grammar from other grammars, eg http
parsing.
2017-12-20 12:45:05 +11:00
cd69bb684a json: use ragel optimisation flags 2017-12-20 12:29:40 +11:00
77c88438d4 except: move posix/win32 exceptions to own units 2017-12-18 15:46:52 +11:00
59240ce83a matrix: move implementation from ipp to hpp 2017-11-24 17:19:32 +11:00
0351313c36 Merge branch 'master' into coord 2017-11-23 17:24:11 +11:00
d3f434b523 coord: make template parameters more flexible
The coordinate system was unable to support types that prohibited
redim or retype operations. Additionally, the `tags' type used for
providing named data parameters was unwiedly.

We remove much of the dependance on template template parameters in the
defined operations and instead define these in terms of a template
specialisation of is_coord.

The tag types were replaced with direct specialisation of the `store'
struct by the primary type, and passing this type through use of the
CRTP.
2017-11-22 17:03:00 +11:00
4794e84c13 build: prefer target specific includes and libs 2017-11-22 16:34:02 +11:00
badba6de3b tap: move ipp implementation into hpp/cpp
This makes it easier for CLion to perform syntax highlighting
accurately.
2017-11-02 18:10:56 +11:00
d8bb00c9c3 endian: add float byteswap specialisation 2017-10-12 17:38:40 +11:00
340981dac2 json2: initial import 2017-10-03 17:49:08 +11:00