Commit graph

1596 commits

Author SHA1 Message Date
Niels Lohmann a1354184ce
📝 fixed typo #481 2017-03-03 12:56:54 +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 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
Niels Lohmann bf4d744d1a
more tests for meta() call 2017-02-26 14:34:58 +01:00
Niels Lohmann d1b30250d6
added missing tests 2017-02-26 11:50:52 +01:00
Niels Lohmann f1cd15ce7e
avoid copying a string 2017-02-26 11:22:18 +01:00
Niels Lohmann 9ff0cc0f02
📝 updated documentation 2017-02-25 16:43:15 +01:00
Niels Lohmann 1b5867bdcf
🔀 merge branch 'release/2.1.1' into develop 2017-02-25 16:37:28 +01:00
Niels Lohmann 27c65b860b
🔖 version 2.1.1 2017-02-25 16:34:38 +01:00
Niels Lohmann 0234e53e23
📝 added section on used third-party tools 2017-02-22 20:48:52 +01:00
Niels Lohmann b49ce351eb
💄 fixed some warnings 2017-02-22 20:48:29 +01:00
Niels Lohmann a646c9c599
🔀 merge branch 'cotire' of https://github.com/tusharpm/json into tusharpm-cotire 2017-02-22 19:45:10 +01:00
Niels Lohmann 8cec55a271
🚧 fixed more warnings 2017-02-22 18:14:29 +01:00
Niels Lohmann 345a106d73
💄 cleanup 2017-02-22 16:56:56 +01:00
Niels Lohmann 967f9144d4
🚧 overworked fix for #465 2017-02-21 19:11:34 +01:00
Niels Lohmann 7d14f167b8
🚑 fix for #465 2017-02-20 22:48:27 +01:00
Niels Lohmann b04543ecc5
🎨 fixed newlines 2017-02-20 21:56:10 +01:00
Niels Lohmann 1a6d7f5bca
🚧 try to fix some warnings in MSVC 2017-02-20 18:32:11 +01:00
Niels Lohmann f7075be93a
🐛 reverted change for #464 2017-02-20 18:15:50 +01:00
Niels Lohmann f2dfa09aec
🐛 fix for #464 2017-02-20 18:05:52 +01:00
Niels Lohmann 83a9c60dbd
🔨 refactored code to avoid using strcpy/strlen/strcat (#463) 2017-02-20 17:37:34 +01:00
Niels Lohmann 716485a965
🚧 removed decay (#448) 2017-02-20 16:27:16 +01:00
Niels Lohmann 7a4a16a7db
💄 updated header list 2017-02-20 16:20:45 +01:00
Niels Lohmann 1f72c38861
🚑 fix for #448 2017-02-19 21:26:53 +01:00
Niels Lohmann 83f1d2c81b
added start index for from_cbor and from_msgpack (#462) 2017-02-19 21:17:05 +01:00
Niels Lohmann 4151f2d297
added test with thousands_sep 2017-02-19 20:08:01 +01:00
Niels Lohmann 5b53f03e7c
Merge branch 'develop' into TurpentineDistillery-feature/locale_independent_num_to_str 2017-02-19 19:24:55 +01:00
Niels Lohmann 9a9d0ba3df
🚧 fixing warning C4293 (#453) 2017-02-19 17:47:20 +01:00
Tushar Maheshwari 5436407b7e 👷 Add cmake logic to Travis config
- get CMake for XCode 8.1 image
2017-02-19 13:38:08 +05:30
Tushar Maheshwari 85ce4d7b53 cmake compile time reduce using cotire
- Add prefix header
  - Include catch.hpp
  - Include json.hpp
    - Replace private with public for all json_unit files
- Move `unit.cpp` to an object library
- cotire issue: strip whitespace from CMAKE_INCLUDE_SYSTEM_FLAG_CXX
2017-02-19 13:35:54 +05:30
Niels Lohmann d1479e47bb
💄 added assertion message 2017-02-18 11:01:03 +01:00
Niels Lohmann 513eb3ab5f
🚧 clean up 2017-02-18 11:00:18 +01:00
Niels Lohmann 0200f2dc62
🚧 fixing warning C4267 (#453) 2017-02-17 19:14:21 +01:00
Niels Lohmann 6408402ad2
🔀 merge #378 (for #362 and #454) 2017-02-16 09:24:45 +01:00