Commit graph

1627 commits

Author SHA1 Message Date
Niels Lohmann fc9b528ec9
🔨 changed an exception 2017-03-08 18:07:21 +01:00
Niels Lohmann 8fcd01631f
improved test coverage
Tests for parse_error.109 were missing.
2017-03-08 16:39:17 +01:00
Niels Lohmann 625cf7e3f7
🔨 added user-defined exception 112 2017-03-07 20:05:34 +01:00
Niels Lohmann 757d2c6c7a
🔨 replaced at() calls in msgpack/cbor 2017-03-06 23:45:08 +01:00
Niels Lohmann 5407333224
🔨 added user-defined exception 111 2017-03-06 22:37:46 +01:00
Niels Lohmann 21ec0e7806
🔨 added user-defined exception 110 2017-03-06 21:00:13 +01:00
Niels Lohmann a186106bde
🔨 user-defined exception 302
Also moved all exception classes into the detail namespace and
introduced them via “using” into basic_json.
2017-03-06 19:34:44 +01:00
Niels Lohmann 38c2e20ce8
added user-defined exceptions 404-405 2017-03-05 23:25:22 +01:00
Niels Lohmann 30331fa21f
🔨 added user-defined exception 403 2017-03-05 23:16:17 +01:00
Niels Lohmann 60da36aee2
🔨 added user-defined exceptions 401-402 2017-03-05 22:56:39 +01:00
Niels Lohmann 491c9780a7
🔨 added user-defined exception 311 2017-03-05 22:39:21 +01:00
Niels Lohmann 6751d650be
🔨 added user-defined exception 311 2017-03-05 22:31:08 +01:00
Niels Lohmann 9e560ca40c
🔨 added user-defined exceptions 313-315 2017-03-05 19:58:26 +01:00
Niels Lohmann 144cf6a4c7
🔨 added user-defined exceptions 310 2017-03-05 19:48:11 +01:00
Niels Lohmann 5cca44c161
🔨 added user-defined exceptions 309 2017-03-05 19:42:05 +01:00
Niels Lohmann 70b2c3f45e
🔨 added user-defined exceptions 308 2017-03-05 19:35:24 +01:00
Niels Lohmann 2a9393af00
🔨 added user-defined exceptions 307 2017-03-05 19:26:44 +01:00
Niels Lohmann bb740c43fb
🔨 added user-defined exceptions 306 2017-03-05 19:15:56 +01:00
Niels Lohmann aa842b4a27
🔨 added user-defined exceptions 305 2017-03-05 19:08:12 +01:00
Niels Lohmann f473f74fb0
🔨 added user-defined exceptions 303-304 2017-03-05 18:56:35 +01:00
Niels Lohmann 068c7acda9
🔨 added user-defined exceptions 301 2017-03-05 18:40:09 +01:00
Niels Lohmann 0c40c8e3be
🔨 added user-defined exceptions 2xx 2017-03-03 14:34:57 +01:00
Niels Lohmann a4274d7766
🔨 added user-defined exceptions 205-206 2017-03-03 14:00:42 +01:00
Niels Lohmann 875b2da95d
🔨 added user-defined exceptions 203-204 2017-03-03 13:38:14 +01:00
Niels Lohmann 9381f6c4da
🔨 added user-defined exceptions 201-202
Started implementing exceptions for invalid iterators.
2017-03-03 13:19:45 +01:00
Niels Lohmann e291c6c3d2
Merge branch 'develop' into feature/exceptions_3.0.0 2017-03-03 12:59:37 +01:00
Niels Lohmann a1354184ce
📝 fixed typo #481 2017-03-03 12:56:54 +01:00
Niels Lohmann 0c6b1f8a24
Merge branch 'develop' into feature/exceptions_3.0.0 2017-03-03 12:54:45 +01:00
Niels Lohmann 776758d7a2
🔨 added user-defined exception 109
This exception occurs when a JSON pointer contains an array index that
can not be converted into a number.
2017-03-03 12:54:37 +01:00
Niels Lohmann b86d2148ef
🔨 added user-defined exceptions 106-108
These exceptions occur when JSON pointers are malformed.
2017-03-03 11:56:58 +01:00
Niels Lohmann 06c788e4fd
📝 added missing word 2017-03-03 10:01:16 +01:00
Niels Lohmann 01d3a006b1
⬆️ updated Catch to v1.8.1 2017-03-02 18:13:19 +01:00
Niels Lohmann 06815d274e
🔨 added user-defined exceptions 104 and 105
These exceptions are thrown in case of parse errors in JSON patch
documents.
2017-03-02 17:55:13 +01:00
Niels Lohmann c085e3bac2
🔨 started with user-defined exceptions #301 #244
Added class hierarchy for user-defined exceptions (#244). Integrated
parse exceptions 101-103. Parse exceptions include the byte count of
the last read character to locate the position of the error (#301).
2017-03-01 21:28:44 +01:00
Niels Lohmann 7b8fd864e2
🔥 removed deprecated constructor #480
The constructor basic_json(std::istream&, const parser_callback_t) has
been deprecated since version 2.0.0. This commit removes it together
with its code example, deprecation macro, and test cases. The code now
also compiles with -W-deprecated-declarations.
2017-03-01 17:49:03 +01:00
Niels Lohmann 6b3912d936
📝 added note to 3.0.0 wiki page #474
I created a wiki page
https://github.com/nlohmann/json/wiki/Road-toward-3.0.0 to describe the
transition toward version 3.0.0. On this page, all API-breaking changes
shall be documented.
2017-03-01 17:26:32 +01:00
Niels Lohmann f84ac523aa
📝 added a note to ordered maps
The library does not preserve the insertion order of object keys. There
are frequent requests to change the library in this aspect. The README
and the contribution guidelines now contain links to containers that
can be used to replace std::map to preserve the insertion order.
2017-03-01 10:15:07 +01:00
Niels Lohmann 41f9b32554
🔀 merge branch 'feature/serialization_class' into develop (#418)
Moved all dump()-related functions into a class "serializer". This fix includes a lot of performance improvements yielding a 7% speedup for serialization. Details on the individual steps can be found in the commit messages.

Individual benchmark numbers:

before:

dump jeopardy.json                            5   374555228 ns/op
dump jeopardy.json with indent                5   430953700 ns/op
dump numbers/floats.json                      5   622938509 ns/op
dump numbers/signed_ints.json                20    82177979 ns/op

after:

dump jeopardy.json                            5   335449757 ns/op -11%
dump jeopardy.json with indent                5   375467773 ns/op -13%
dump numbers/floats.json                      5   584611852 ns/op -7%
dump numbers/signed_ints.json                20    68289574 ns/op -17%
2017-02-28 21:04:16 +01:00
Niels Lohmann d69242c6ba
💄 cleanup
- Added comments for the serializer class.
- Added test case for resizing of the indentation string.
- Using std::none_of to check if “.0” needs to be added to
floating-point number.
2017-02-28 19:20:50 +01:00
Niels Lohmann 059f21aada
💄 fixed a warning
snprintf returns an int, but we later assign it a difference_type which
is usually a long.
2017-02-28 17:24:03 +01:00
Niels Lohmann 224f99070b
micro-optimization of dump()
A lot of small changes to avoid memory allocations:

- The locale is only queried once rather than with every number
serialization.
- The indentation string is recycled between different calls.
- The string escape function avoids a copy if no escaping is necessary.
- The string escape and the space function use a complete switch case
instead of cascaded ifs.

Cachegrind measures some 15% performance improvement.
2017-02-28 16:28:22 +01:00
Niels Lohmann fc48b8ac2b
🐛 fixed a logical error
Treated the size of the range as the number of thousand separators.
This logical error yielded a negative value for written_bytes and
eventually an infinite loop, as written_bytes was converted to an
unsigned value.
2017-02-28 11:45:38 +01:00
Niels Lohmann af070744ae
🔨 integrating numtostr into serializer class
By merging numtostr into serializer, we can write directly to the
output stream. As a consequence, all stream calls are now unformatted.
2017-02-27 22:10:57 +01:00
Niels Lohmann 54ef5f7b47
🔨 moved serialization functions to serializer class
The class is currently just a wrapper for an std::ostream and collects
all functions related to serialization. The next step should be
recycling of variables to avoid repetitive initialization for each
recursive dump call.
2017-02-27 21:22:39 +01:00
Niels Lohmann 9c4919ff34
" micro-optimizations for dump()"
This reverts commit 909b439b03.
For some strange reason, the test suite crashes when compiled
with GCC.
2017-02-27 16:19:07 +01:00
Niels Lohmann 909b439b03
micro-optimizations for dump()
numtostr now directly writes to a stream. Return value of snprintf is
reused to avoid finding end of string. Cachegrind suggests a 1%
performance increase.
2017-02-27 14:58:10 +01:00
Niels Lohmann 0f04e42dd5
micro-optimizations for dump()
All ‘<<‘ calls have been replaced by write()/put() calls. The
indentation strings needs not to be resized. Cachegrind measures 1%
performance improvement.
2017-02-27 01:22:24 +01:00
Niels Lohmann b1441f3485
micro-optimizations for dump()
Indentation string is recycled to avoid allocations. Comma-separation
in objects does not need an if any more. Cachegrind measures 1%
performance improvement.
2017-02-26 20:58:00 +01:00
Niels Lohmann bd0326cbc1
micro-optimizations for dump()
Added separate code paths for normal output and pritty-printed output.
This allowed to remove most of the ifs along the way. Benchmarks and
cachegrind suggest a 10% performance improvement.
2017-02-26 16:55:54 +01:00
Niels Lohmann ae155c4734
💄 cleanup 2017-02-26 14:45:41 +01:00