Commit Graph

238 Commits

Author SHA1 Message Date
4a73a3cea7 job/dispatch: add index uniqueness test 2019-03-08 09:42:15 +11:00
0d27694a51 coord/comparator: add a trivial ordering comparator 2019-03-08 09:37:48 +11:00
35916e2854 rand/pcg: add pcg_xsh_rr generator 2019-02-21 20:53:58 +11:00
fc252ee209 expected: add trivial expected implementation 2019-02-07 17:12:59 +11:00
a64e721cf0 posix/interface: add initial interface query logic 2019-02-02 19:09:35 +11:00
3a518fbac8 cpuid: add null fallback 2019-02-02 16:40:37 +11:00
c5633a32c5 cpuid: move specifics into a directory 2019-02-02 16:37:46 +11:00
bb7be903b1 build: only build x86 cpuid on support architectures 2019-02-02 15:49:50 +11:00
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
7ecaaacd93 utf8: add a trivial utf8 decoder 2017-10-02 15:25:59 +11:00
4050754ab4 preprocessor: use a script to create map/reduce
We need over 300 arguments for some projects and I'm not going to code
that shit by hand.
2017-09-12 14:17:30 +10:00
8e7f23c4dd traits: add trivial type_traits tests 2017-09-08 14:20:01 +10:00
9d5e599246 alloc: seperate out the raw allocators from the adapters 2017-08-29 16:53:11 +10:00
2cb5fd7391 geom/sample: prefer inline impl over ipp files 2017-08-29 12:28:54 +10:00
a91df8895d geom: prefer inline implementation over ipp 2017-08-29 12:19:58 +10:00
eabf93bc2a view: remove ipp file in preference of inline code 2017-08-01 14:16:55 +10:00
f39f7d7362 parse: add throwing native type parsers 2017-07-26 15:26:56 +10:00
3460d5edbe crypto/salsa: add initial skeleton for salsa20 2017-07-11 16:49:49 +10:00
320fe6c378 job/queue: add trivial job queuing system 2017-07-03 17:05:01 +10:00
0eaec8ad65 comparator: move pointer comparator code inline 2017-06-19 15:36:57 +10:00
6065aa9933 comparator: add comparator for indexed compound types
compares each index of the two parameters in sequence, returning true if
the first parameter has the first value that compares less than the
second.
2017-06-19 15:28:10 +10:00
ca63485d12 sarray: add a simple static storage/dynamic size array 2017-06-14 17:45:43 +10:00
b15914cf9a iterator: add make_indices, zip, and izip 2017-06-13 17:01:06 +10:00
606a46a128 typeidx: add lightweight runtime type id call 2017-05-29 17:21:11 +10:00
813600e774 ascii: add hex conversion and unit tests 2017-05-22 16:11:31 +10:00
1ad3e0bde0 algo/sort: add SOA sorting helper
sort::soa applies a permutation to multiple value arrays such that the
first value array is sorted
2017-05-18 18:24:48 +10:00
c57569a4ff cmake: more reliable backtrace strategy discovery 2017-02-01 13:46:33 +11:00
5a25f07f8e hash/crc: adapt implementation from png appendix 2017-01-25 16:12:12 +11:00
845c8dd14d cmake: avoid recursive cmake lists for tests 2017-01-25 15:06:47 +11:00
f665244010 cmake: avoid passing around CFLAGS 2017-01-23 21:48:44 +11:00
395545f43a cmake: add missing exe implementation for win32 2017-01-23 15:09:53 +11:00
59a32aede6 cmake: don't locate addr2line for win32 builds 2017-01-23 15:09:33 +11:00
5d728859e7 cmake: decrement required cmake version (for msys) 2017-01-23 15:09:07 +11:00
164652d89a cmake: try to use a unique target name for tools 2017-01-19 14:23:13 +11:00
bfc74cbc82 build: fix link order for required libs 2017-01-19 13:35:14 +11:00
0bcf9da239 build: add shm lib to cmake 2017-01-19 13:34:49 +11:00
1b644132f0 cmake: bump for caching of values 2017-01-18 21:46:25 +11:00
b5a4b4791d cmake: use CURRENT versions of directories 2017-01-17 21:31:12 +11:00
dd23d4a347 build: cmake tests 2017-01-17 19:20:30 +11:00