Commit Graph

497 Commits

Author SHA1 Message Date
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