d80855aedf
posix/except: add exception class for EAI_* codes
2017-12-22 18:34:00 +11:00
e437913746
encode/base: add initial base64 experiments
2017-12-22 12:37:04 +11:00
02d3b4dd64
iterator: add unequal_iterator
...
unequal_iterator is a forward iterator that never successfully compares
for equality with other types. useful as the end iterator when one has
an output iterator as the begin iterator of a view.
2017-12-22 12:34:56 +11:00
8d317fd41e
view: allow multiple iterator types
2017-12-22 12:34:25 +11:00
cfe1185621
maths: move log2 into header for constexpr
2017-12-22 12:34:14 +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
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
cd69bb684a
json: use ragel optimisation flags
2017-12-20 12:29:40 +11:00
17f1ca8f93
view: add char-view less-than operator
2017-12-19 18:18:10 +11:00
62d5dfcf64
view: add container/view equality operators
2017-12-19 18:18:10 +11:00
e61c4f6e98
view: add constructors from nullptr_t
2017-12-19 18:18:10 +11:00
36902f1476
parse: add specialisation for int
2017-12-19 18:18:10 +11:00
bfcd63ec65
posix/fd: add read overloads that take char/byte views
2017-12-19 18:18:10 +11:00
e48aebb503
io: remove lvalue write function
...
writing arbitrary lvalues is incredibly dangerous if we don't have total
coverage of suitable overloads. eg, we have accidentally written string
objects to file descriptors.
instead we prefer byte/char views which the user can create as desired.
there's a little more cognitive overhead here, but it's substantially
less dangerous in casual usage.
2017-12-19 18:18:10 +11:00
abfc3c7878
except: move posix/win32 exceptions to own units
2017-12-19 18:18:10 +11:00
c22a5a2a07
posix/fd: prefer error::try_value over explicit checks
2017-12-18 15:57:43 +11:00
77c88438d4
except: move posix/win32 exceptions to own units
2017-12-18 15:46:52 +11:00
2ead13a063
parse: use views over explit begin/end pairs
2017-12-18 14:50:10 +11:00
60a7670326
view: delegate constructors where feasible
...
this will allow us to reduce code duplication for sanity checks at
construction time.
2017-12-15 18:58:33 +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
c1036d8337
matrix: use vector ostream operator
2017-11-24 17:19:32 +11:00
a0b0863d61
coord: use new template form in ostream operators
2017-11-24 17:19:32 +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
edde2af132
cmake: bump for optimisation flags
2017-11-22 17:10:27 +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
4794e84c13
build: prefer target specific includes and libs
2017-11-22 16:34:02 +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
fb2888d2d5
maths: workaround clang lto ICE in renormalise
2017-10-11 17:15:24 +11:00
f0193ee825
colour: instantiate for u16
2017-10-10 16:50:26 +11:00
c0e8a947d0
colour: use numeric_iterator and make_infix for ostream
2017-10-10 16:50:15 +11:00
ba2eb48d63
iterator: add numeric_iterator for ostream output
2017-10-10 16:49:56 +11:00
2e5d69c095
matrix: work around instruction selection bug in clang
2017-10-10 14:09:43 +11:00
720a45deb8
matrix: move some implementation from ipp to cpp
...
this makes debugging under some IDEs slightly easier
2017-10-10 14:08:41 +11:00
f33ec13b50
format: don't accidentally cast local variable types
2017-10-10 13:52:46 +11:00
a36991fc83
maths: prefer int for `digits' types
2017-10-05 12:45:48 +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
d64e3d244e
utf8: clearer comments
2017-10-03 17:48:27 +11:00
c61fa16316
utf8: use an iterator style interface internally
...
this will be presented to the users shortly
2017-10-02 16:15:19 +11:00
35db5f0a7a
utf8: add forgotten headers
2017-10-02 15:41:20 +11:00
5e1fab3590
utf8: use mask test object for continuation ops
2017-10-02 15:40:54 +11:00
45e2477e1b
utf8: use a more verbose mask test name
2017-10-02 15:40:23 +11:00
7ecaaacd93
utf8: add a trivial utf8 decoder
2017-10-02 15:25:59 +11:00
4641d43742
view: comment style
2017-10-02 14:14:55 +11:00
d03a248138
tap: add unconditional 'fail' call
2017-10-02 14:14:39 +11:00
d67a990de3
random: add uniform integer generator for whole range
2017-09-21 15:59:03 +10:00