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