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
bcb4d7569f
types/traits: add is_same_basic_type trait
2018-08-01 18:39:01 +10:00
79409eb6fe
avoid push_back in loops
...
Detected by clang-tidy.
2018-07-24 15:49:11 +10:00
799768641f
prefer passing by reference over value
2018-07-24 15:46:28 +10:00
49d39c4ede
json/compare: change to useful exit codes in test suite
2018-07-13 16:08:48 +10:00
33dc5c7053
json/pointer: add a trivial parser for json-pointer
2018-07-13 16:08:24 +10:00
a2e2d59c98
json/schema: add multipleOf test cases
2018-07-12 16:21:56 +10:00
0629ba07cd
json/schema: add exclusiveMin/Max
2018-07-12 16:08:36 +10:00
d48e36ffd5
json/schema: add additionaProperties tests
2018-07-12 15:56:03 +10:00
8c222300ca
json/schema: add pattern_properties and associated tests
2018-07-12 15:10:41 +10:00
85b5853f7f
json/schema: delete intermediate test files
2018-07-12 15:10:04 +10:00
647af5504b
json/schema: reimplement enum support
2018-07-12 13:06:11 +10:00
bb9d390cf4
json/schema: correct the truth data for min/max tests
2018-07-11 19:30:30 +10:00
8ea762bff8
json/schema: add object test cases
2018-07-09 14:13:51 +10:00
04249a8320
json/schema: fall back to identity test for .result.json
...
result.json test cases are only really required when we have default
properties that need to be filled. Fall back to using the input.json
file for other cases.
2018-07-09 14:13:51 +10:00
59f42de23f
json/schema: use symlinks to identical test result files
2018-07-06 14:21:28 +10:00
8e07e8152b
json/schema: rename schema dirs
2018-07-06 13:21:59 +10:00
19fdbaefb7
json/schema: move validation test cases to own directory
2018-07-06 13:19:10 +10:00
195616f563
json/schema: number the test groups for sorting
2018-07-06 12:43:20 +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
94640d00f0
json: rearrange schema test to allow for modified output
...
Schemas can insert default values, so we need to be able to test the
resultant files.
2018-07-05 15:02:14 +10:00
30c35b2101
json: move validation test data to dedicated directory
2018-07-05 15:00:47 +10:00
74568d1c2d
test/json-parse: add json parsing test
2018-07-05 13:45:10 +10:00
0df16bb9ee
strongdef: swap template params, move to dedicated namespace
2018-06-27 17:58:45 +10:00
279af4c796
strongdef: significantly tighten restrictions on usage
...
It turns out that equality in particular was triggering implicit
construction of strongdef types. We make it much harder for these types
to spontaneously emerge.
2018-06-22 17:41:56 +10:00
3722c8aaa3
region: add union operator for region/region
2018-06-14 15:07:25 +10:00
22b25221b2
coord/base: add std::array conversion operator
2018-06-12 10:54:08 +10:00
d70d06468e
tuple/type: add entuple, cat, remove, and unique types
2018-06-06 19:13:17 +10:00
fc58ec8e0f
build: prefer local to system include directives
2018-05-12 14:28:23 +10:00
38e1a19e37
alloc: all allocators should take a type for alloc/dealloc
2018-05-10 13:53:06 +10:00
2620e2ed33
alloc: return views rather than raw pointers
2018-05-10 12:54:45 +10:00
6042d9ab76
geom/ellipse: remove spurious print from test case
2018-05-10 12:54:45 +10:00
ec44c68ce6
view: require fully named types for casting
2018-05-10 12:54:45 +10:00
c33a679e81
geom/ray: make ray intersections more robust
2018-05-04 17:10:51 +10:00
b01173d82b
maths: rename limit to clamp
2018-05-03 21:43:48 +10:00
497d3ca970
build: update for gcc-8.1 warnings
2018-05-03 18:32:08 +10:00
c0af2df2c8
hash/fasthash: print result of each test case
2018-05-03 17:34:19 +10:00
dcf87a7c17
geom/aabb: add ray-aabb distance tests
2018-05-03 17:33:42 +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
443112b33c
geom/plane: add trivial plane tests
2018-04-20 15:08:06 +10:00
f31a344912
kmeans: add naive kmeans impl
2018-04-18 21:48:55 +10:00
dcd789a075
geom/ellipse: add naive covering ellipse impl
2018-04-18 21:48:55 +10:00
eb2b85c4f6
point: add query for furthest pair
2018-04-18 21:48:55 +10:00
8a2055abfc
WIP ellipse area
2018-04-17 17:11:41 +10:00
76c809f031
point/vector: homog no longer takes a size parameter
2018-04-17 14:26:23 +10:00
f21297cad5
geom/ellipse: add ray distance tests
2018-04-16 16:00:32 +10:00
1889a76e26
geom/sphere: add glancing ray test
2018-04-16 16:00:32 +10:00
a8b3737b8b
geom/ray: remove constructors so we have a POD
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
56fdc7844e
geom/frustum: test projection should use radians
2018-04-11 19:28:18 +10:00
d7b36b0ee3
affine: add perspective matrix test cases
2018-04-11 18:26:30 +10:00
24a530e23e
maths: remove pow2 function
...
pow2 has been used enough times to mean 2^x and x^2 that it's not worth
the ambiguity. just use pow(b,e) directly.
2018-04-09 12:30:22 +10:00
665c8aa49e
tuple/value: add reversing operation
2018-04-05 16:06:09 +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
8f2f623520
tuple/value: add zip implementation
2018-04-05 12:23:12 +10:00
de247c7e7b
cpp: add basic C preprocessor emulator
2018-04-01 14:49:10 +10:00
a4634a771b
g/frustum: simplify aabb intersection test
2018-03-28 20:42:43 +11:00
47613c5ec2
string: remove unneeded rval-ref qualifier
2018-03-27 16:21:20 +11:00
473556f9ed
maths/fast: use relatively_equal for tests
2018-03-27 16:15:21 +11:00
1b023f7c8d
iterator: improve reference semantics
2018-03-27 15:49:47 +11:00
93185775e6
coord/simd: template on arity and type
2018-03-23 17:52:08 +11:00
af77aad894
extent/region: simplify iteration over ranges
2018-03-23 16:38:54 +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
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
804b2263b8
parallel/queue: rename the queue type
2018-03-22 13:22:27 +11:00
370488c498
coord: test coords are trivial types
2018-03-22 13:20:00 +11:00
7fc51aa151
parallel/queue: use representative name for class
2018-03-22 13:05:51 +11:00
fc148fa7a4
parallel/queue: comments and type checks
2018-03-22 13:02:51 +11:00
4773e4be21
parallel: initial single-producer/multiple-consumer queue
2018-03-21 18:53:24 +11:00
82d63f68b1
job/flag: improved parallelism test
2018-03-20 18:02:20 +11:00
2508c5cc71
test: read TAP status before exit
2018-03-20 14:50:46 +11:00
8212048750
maths: add fast approximations WIP
2018-03-20 13:35:10 +11:00
341907ac79
coord/simd: add more sse operations
2018-03-20 13:35:10 +11:00
b307ab935d
coord/simd: add initial simd tests
2018-03-16 11:10:44 +11:00
5dda5d130a
spinlock: reduce iterations for testing
...
4096 iterations should be enough to demonstrate any issues, but still
execute quickly enough for everyday testing
2018-03-15 23:49:12 +11:00
12d401b98b
tuple/variadic: split into type/value/pack operations
2018-03-15 23:48:21 +11:00
f3f3666877
job/queue: rework locking for reliability
2018-03-15 15:25:19 +11:00
0c824919de
job/monitor: add simple monitor adapter
2018-03-15 15:25:18 +11:00
7ce2f5454d
pool: correctly forward constructor parameters
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
5fc6cd46a7
bezier: comment out unused variable in test
2018-03-15 15:23:42 +11:00
0646b1c13b
geom: move distance/intersection tests outside classes
2018-03-13 23:27:37 +11:00
b1276519ef
geom: add simple frustum class
2018-03-13 22:37:40 +11:00
5bc2cf12d4
maths: use true constexpr values for pi
2018-03-12 23:06:15 +11:00
3867b9e74e
alloc/forwarding: add statically typed forwarding allocator
2018-03-07 16:24:39 +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
7af076e2de
alloc: prefer std::byte representations for iterators
...
this allows the users to more easily walk the byte ranges (or perform
simply pointer arithmetic), without as much danger of using the values
in an expression inadvertantly.
2018-02-28 17:55:56 +11:00
3b3f9cd3d3
coord/ops: use the coord type for literal equality comparisons
2018-02-26 13:37:08 +11:00
fd03c344b2
fd: remove const from members that modify fd state
2018-02-01 13:47:14 +11:00
35e3f69ad2
maths, view: rationalise equal,almost_equal,==
...
views should not do elementwise comparisons for equality operators.
they are pairs of iterators and are only equal if their iterators are
equal.
instead, use `equal` for elementwise equality. we update the name of
exactly_equal to perform this operation too.
2018-01-31 19:33:42 +11:00
c4e0cd31f9
string: move tokeniser into the header
...
This allows more varied template parameters to be used.
2018-01-30 12:53:43 +11:00
32a4aa23e5
view: add slicing operation, stolen from python
2018-01-30 12:53:43 +11:00
6f51b82f65
siphash: add initial implementation
2018-01-23 18:57:04 +11:00
bc4a0c3179
xxhash: rewrite for safety and accurate tests
...
there were a few potential buffer overflows, inaccurate test data, and
the 64 bit path wasn't correct.
fixes buffer overflow from clang-analyze
2018-01-23 18:57:04 +11:00
dda3a4a8e7
ascii: add UDL for vector and array conversions
2018-01-23 18:51:37 +11:00
82a8446e10
build: silence various type conversion warnings
2018-01-18 11:56:42 +11:00
d037e71bba
encode/base: correct decode table indexing
2018-01-17 20:10:26 +11:00
c7ce526383
vector: use separate cartesian/spherical tests
...
some tests aren't uniquely invertible, so it's more reliable to use test
data that doesn't suffer from this issue.
2018-01-17 17:45:21 +11:00
a8b4c93ccd
coord: mitigate gcc ICE when using redim
2018-01-17 13:28:44 +11:00
65cea4afd1
point: style
2018-01-16 13:29:58 +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
ad02c94511
view: return unsigned types for size
2018-01-10 18:50:02 +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
9fbfba580a
maths: allow digits10 for 64 bit integers
2018-01-01 15:46:29 +11:00
4bd693a799
maths: allow any integral exponent for pow()
2018-01-01 15:45:56 +11:00
27a93c0780
traits: add is_contiguous query for containers
2017-12-28 17:50:37 +11:00
dc51fa2ed0
view: char constructor shouldn't include null characters
2017-12-26 17:34:08 +11:00
e437913746
encode/base: add initial base64 experiments
2017-12-22 12:37:04 +11:00
202c22eee8
view: simplify logical comparator implementation
...
we remove some duplicate and specific logical comparator specialisations
and instead rely on a base view/view comparator implementation by way of
make_view.
2017-12-20 12:31:52 +11:00
b4175e4593
uri: add more data fields
...
we now provide more fine grained field extraction from URIs, focusing
primarily on the utility of URLs.
2017-12-15 18:57:10 +11:00
a8088d03cd
matrix: use vector for the row storage
2017-11-24 17:19:32 +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
34788756d2
build: don't use './' as an include prefix
...
GCC produces ODR error when including paths of the form './foo' and
'foo' in the same binary. Rather than managing duplication we just
universally pick the absolute form over the relative form.
2017-11-22 16:49:37 +11:00
3ad0339474
WIP vector: spherical/cartesian conversion
2017-11-02 18:11:16 +11:00
28ec0bd48e
maths: add forgotten header to test suite
2017-11-02 18:02:53 +11:00
d8bb00c9c3
endian: add float byteswap specialisation
2017-10-12 17:38:40 +11:00
aff4786409
traits: add bodies to test objects for ODR-used symbols
2017-10-11 17:15:47 +11:00
32f3240186
json2: initial 'jsonish' support
2017-10-05 11:44:37 +11:00
340981dac2
json2: initial import
2017-10-03 17:49:08 +11:00
35db5f0a7a
utf8: add forgotten headers
2017-10-02 15:41:20 +11:00
7ecaaacd93
utf8: add a trivial utf8 decoder
2017-10-02 15:25:59 +11:00
220e499681
view: make equality consistent
2017-09-15 15:22:51 +10:00
cfa272a80a
string: allow tokenisation of c arrays
2017-09-15 15:22:29 +10:00
9c5b471b24
iterator: modify to allow iteration over c arrays
2017-09-15 15:21:25 +10: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
0e97044adf
allow/raw: rename base as begin
2017-08-31 13:48:33 +10:00
9d5e599246
alloc: seperate out the raw allocators from the adapters
2017-08-29 16:53:11 +10:00
3799135236
coord: add general vector comparison function
2017-08-27 12:32:00 +10:00
9aa0ba8f55
test: use constexpr for test data where possible
2017-08-27 12:28:56 +10:00
3c9dcba2fb
coord/ops: add rshift coord operation
...
shifts each element to the right `num' places and fills the left space
with a constant or elements from another vector.
2017-08-25 13:05:45 +10:00
e9ef2ae316
sarray: add assignment operator for completeness in test
2017-08-24 17:53:46 +10:00
56444b4a50
geom/aabb: add (minimally) more thorough test data
2017-08-24 17:02:18 +10:00
1cea1600d3
geom/aabb: change contract/expand semantics to mirror region
2017-08-24 17:01:16 +10:00
f77cdabaee
geom/aabb: dont use mutating function naming convention
2017-08-24 16:47:02 +10:00
cd1bb730f2
geom/aabb: rename AABB to aabb
2017-08-24 16:43:54 +10:00