HenryLee
0a51fb22ed
Fix indentation
2017-05-30 23:37:24 +10:00
HenryLee
881cd3f420
Remove the iter_impl<const basic_json> copy constructor and copy assignment
2017-05-30 20:57:22 +10:00
HenryLee
790e7ca9e9
Add struct keyword in front of internal_iterator
2017-05-30 20:27:05 +10:00
HenryLee
ce39330ff8
Add converting constructors for iterator
2017-05-30 20:23:25 +10:00
HenryLee
c4ab8f827e
Change iterator category to random access
2017-05-30 19:44:55 +10:00
HenryLee
daea213b44
Use static cast in the implementation of the operators of reverse iterator
2017-05-29 23:56:21 +10:00
HenryLee
e42db27d6d
Fix the indentation from the latest commit
2017-05-29 20:02:58 +10:00
HenryLee
3aef1a582e
Change the definition of the operator override of reverse iterator to using the result of the base class directly
2017-05-29 19:45:34 +10:00
HenryLee
adc73d6d5f
Fix the arithmetic mistakes in reverse iterator
2017-05-29 18:52:53 +10:00
HenryLee
ed62129f8e
Override n + iterator operator in the iterator
2017-05-27 13:44:14 +10:00
Niels Lohmann
c7bd01edf2
🔨 trying something #367
2017-05-22 17:06:46 +02:00
Niels Lohmann
9e507dfad5
✅ tests and fix for #367
...
operator>> now works as expected.
2017-05-21 16:36:51 +02:00
Niels Lohmann
16b63d3197
🔨 working toward #367
2017-05-20 12:44:13 +02:00
Niels Lohmann
8a35fdd8f5
🔨 overworked accept() function
...
Fixed to make sure no token is "overlooked".
2017-05-20 12:24:13 +02:00
Niels Lohmann
9ddc69f3a9
🐛 adjusting fix for future versions #586
2017-05-20 10:49:06 +02:00
Niels Lohmann
99cb095e89
🐛 fix for #586
...
Also added a Travis builder with -std=c++1z
2017-05-20 10:34:49 +02:00
Niels Lohmann
0f4131d138
Merge pull request #583 from zhaohuaxishi/doxygen_error
...
fix doxygen error of basic_json::get()
2017-05-15 21:09:43 +02:00
Niels Lohmann
0c3ffe12cd
⏪ reverting first/second experiment #350
2017-05-15 21:07:58 +02:00
郭荣飞
b8dff3bc16
remove the redundant @ref command
2017-05-14 07:59:07 +08:00
Niels Lohmann
723c875604
💬 replaced "backspace" with "backslash" #509
2017-05-13 19:56:38 +02:00
郭荣飞
dfa371c436
fix doxygen error of basic_json::get()
2017-05-13 23:13:04 +08:00
Niels Lohmann
9b764ee5d6
🏁 fix for #581
2017-05-13 12:27:37 +02:00
Jay Sistar
b78457b792
Making comparison operators const.
2017-05-11 13:22:47 -04:00
Jay Sistar
00d841bfda
Adding equal and not equal operators to proxys.
2017-05-11 14:51:06 +00:00
Jay Sistar
d6c78dacd8
Fixing assignement for iterator wrapper second, and adding unit test
2017-05-10 17:53:27 +00:00
Jay Sistar
6a656ed375
Adding first and second properties to iteration_proxy_internal
2017-05-10 13:20:52 +00:00
Niels Lohmann
2afbd33472
🔨 working on #367
...
Test cases succeed as expected, but the example in #367 is not fully
realized yet.
2017-05-10 12:06:24 +02:00
Niels Lohmann
962da00171
✨ implemented an indentation character #520
...
An optional parameter for dump() allows to set the character to use for
indentation (default: space). In case a JSON value is serialized to an
output stream, its fill character is used (and can be set with
std::setfill).
2017-05-07 19:27:40 +02:00
Niels Lohmann
fba1bcdd0b
🐛 fixing #575
...
I forgot to consider the offset.
2017-05-07 13:41:48 +02:00
Niels Lohmann
dbcb032f22
Merge branch 'develop' into feature/manual_lexer
2017-05-05 16:48:47 +02:00
Niels Lohmann
8b9f51179e
✨ started working on #458
...
a simple acceptor function
2017-04-24 17:46:21 +02:00
Niels Lohmann
2df8f12c09
🏁 another fix for MSVC #464
...
needed for VS2015.3 with /std:c++latest
2017-04-23 20:51:29 +02:00
Niels Lohmann
e24df7eca9
📝 improved documentation
2017-04-23 15:10:40 +02:00
Niels Lohmann
2a21146160
Merge branch 'develop' into feature/manual_lexer
2017-04-22 11:35:58 +02:00
Niels Lohmann
db9bf953f3
🔨 improved diagnostic output
2017-04-15 10:40:10 +02:00
Niels Lohmann
717106eced
🔨 templated output_adapter and used in class serializer
2017-04-14 19:49:05 +02:00
Niels Lohmann
2d2b98a50a
Merge branch 'develop' into feature/manual_lexer
2017-04-12 18:07:25 +02:00
Niels Lohmann
d4469233ac
Merge branch 'develop' into feature/insert
2017-04-12 18:01:06 +02:00
Niels Lohmann
d7e57e3b73
🔨 added an output adapter for the binary writer
2017-04-09 22:13:26 +02:00
Niels Lohmann
f3e43d7c6f
🔨 some cleanup
2017-04-09 21:14:51 +02:00
Niels Lohmann
186a9fd44d
🔨 simplified interface for parser, lexer, and binary_reader
...
These classes are now constructed with an interface adapter. This moves
complexity from various places into the interface adapter class, or to
some factories which now implement the different flavors of input.
Furthermore, input adapters are kept in std::shared_ptr to avoid the
need of manual deletion.
2017-04-09 19:28:15 +02:00
Niels Lohmann
e48114bbd6
🔨 check for value of _HAS_CXX17
2017-04-09 14:02:04 +02:00
Niels Lohmann
628be157a2
🐛 added fix for #464
2017-04-09 13:52:04 +02:00
Niels Lohmann
97a25de938
✨ proposal for #428
...
This implementation forwards the iterators to std::map::insert.
2017-04-07 18:29:09 +02:00
Niels Lohmann
d62d48fc48
🔀 merge branch 'develop' into feature/manual_lexer
2017-04-07 17:19:52 +02:00
Niels Lohmann
90273e930c
🐛 fix for #512
...
We totally forgot to implement the comparison operators other than ==
and != for scalar types. Consequently, comparing a JSON value with a
scalar type led to compile errors.
2017-04-07 15:44:41 +02:00
Niels Lohmann
ff72f38863
🔨 fixed another warning
...
Do not store eof() in a char buffer…
2017-04-06 19:54:08 +02:00
Niels Lohmann
b992acc2e7
🔨 fixed a compiler warning
2017-04-05 20:39:27 +02:00
Niels Lohmann
08fdfcca9a
🔨 implemented a binary writer
2017-04-04 23:17:43 +02:00
Niels Lohmann
c28bf823bc
🔨 added endianess check
2017-04-04 17:30:43 +02:00
Niels Lohmann
b15fc13dd1
🔨 implemented MessagePack in binary_reader
2017-04-04 16:59:19 +02:00
Niels Lohmann
3a34f2d82c
Merge branch 'develop' into feature/manual_lexer
2017-04-04 15:55:40 +02:00
Niels Lohmann
782570d46f
🔨 cleanup
2017-04-03 22:58:46 +02:00
Niels Lohmann
ea667db446
🔨 fixed compilation errors
...
TIL about C++:
executing m[key()]=val(); for a std::map executes
First key() then val() with Clang
First val() then key() with GCC
#wat
2017-04-03 21:53:23 +02:00
Niels Lohmann
89efe627fe
🔨 a lot of restructuring
...
- removed uncached input stream adapter; it was too slow anyway
- implemented a class binary_read which parses CBOR based on input
adapters
- in the CBOR parser, numbers are created via memcpy to avoid undefined
behavior
2017-04-02 18:46:21 +02:00
Théo DELRIEU
af9b21151c
add enum class default conversions
2017-04-02 13:10:15 +02:00
Niels Lohmann
3a5cf9bd0a
🔨 improved code coverage
2017-04-01 08:34:58 +02:00
Niels Lohmann
c32d2e5b3c
🔨 removed unget() function
2017-04-01 00:36:05 +02:00
Niels Lohmann
8d393b5eff
Merge branch 'develop' into feature/manual_lexer
2017-03-31 23:58:45 +02:00
Niels Lohmann
50ee0a62f5
🔨 replaced lookup-tables by switches
2017-03-31 23:24:33 +02:00
Niels Lohmann
4c821c9e9c
🔨 moved buffer size to interface
2017-03-31 17:11:51 +02:00
Lukas Barth
40aff4182f
Pop for every push
2017-03-30 16:10:03 +02:00
Niels Lohmann
60057a4728
🔨 fixed bugs introduced by merging from develop
2017-03-29 07:54:26 +02:00
Niels Lohmann
a690a9f2d2
Merge branch 'develop' into feature/manual_lexer
2017-03-29 00:57:09 +02:00
Niels Lohmann
c2e80a72d7
🔨 deprecated j << istream / j >> ostream functions #367
...
The implementation is non-standard. Deprecation allows a simpler API in
the future without removing any features.
2017-03-29 00:39:47 +02:00
Niels Lohmann
9578c0f700
Merge branch 'develop' into feature/manual_lexer
2017-03-28 23:47:17 +02:00
Niels Lohmann
62dfdf3f5d
📝 addressed #514
...
NaN values never compare equal to themselves or to other NaN values.
2017-03-28 23:24:59 +02:00
Niels Lohmann
5d586b0192
🔨 cleanup
2017-03-28 23:20:45 +02:00
Niels Lohmann
19d119e18c
🔨 fixed a warning in MSVC
2017-03-28 22:10:24 +02:00
Niels Lohmann
6b12e40478
🏁 removed __builtin_expect for MSVC
2017-03-28 21:55:26 +02:00
Niels Lohmann
6a6fbea62c
🔨 some cleanup
2017-03-28 20:08:08 +02:00
Niels Lohmann
1e495945f1
🔨 fixed buffer overflow
2017-03-28 18:06:43 +02:00
Niels Lohmann
bbb6bd9de5
🔨 fixing last failing test cases
2017-03-28 17:00:03 +02:00
Niels Lohmann
b0c47abd88
🔨 rewrote string parser to cope with UTF-8
2017-03-27 22:58:44 +02:00
Niels Lohmann
f75e195db3
🔨 added code for user-defined number types
2017-03-26 18:45:04 +02:00
Niels Lohmann
3425527970
🔨 added code for locale-independent number parsing
2017-03-26 18:12:58 +02:00
Niels Lohmann
06e2a291b1
🔨 fixed number parsing
2017-03-26 17:26:41 +02:00
Niels Lohmann
99e0d8b339
🔨 fixed \uxxxx parsing
2017-03-26 15:29:08 +02:00
Niels Lohmann
f47cf152a8
Merge branch 'develop' into feature/manual_lexer
2017-03-26 13:14:14 +02:00
Niels Lohmann
3336194306
🔨 reverted changes that led to Travis failures
2017-03-26 12:23:10 +02:00
Niels Lohmann
53b501a785
🔨 cleanup
2017-03-25 23:31:03 +01:00
Niels Lohmann
c333679a96
🔨 small refactoring
...
The solution with a std::runtime_error member is more elegant. It
allows to have std::exception as base class again. However, I still
have no idea why GCC thinks the copy constructor may throw...
2017-03-25 17:25:39 +01:00
Niels Lohmann
cc36c65a89
🚑 made exceptions nothrow-copy-constructible #531
...
To have nothrow-copy-constructible exceptions, we inherit from
std::runtime_error which can cope with arbitrary-length error messages.
Intermediate strings are built with static functions and then passed to
the actual constructor.
2017-03-25 16:22:52 +01:00
Niels Lohmann
a58ed3cd17
💄 cleanup
2017-03-25 14:47:23 +01:00
Niels Lohmann
40160f482a
🚧 manual lexer
...
This commit removed the re2c lexer and replaced it by a manual version.
Its integration is not yet complete: number parsing does not respect
locales or overflows. Furthermore, parsing does not need to end with
EOF. Therefore, a lot of test cases fail. The idea is to push this
branch forward so we can conduct performance comparisons. So far, a
nice side effect are better diagnosis messages in case of parse errors.
2017-03-24 19:49:02 +01:00
Ted Lyngmo
cea2426731
UTF8 encoding enhancement
2017-03-24 14:56:48 +01:00
Niels Lohmann
d60851168e
🚨 fixed a compiler warning #527
...
The result of snprintf is later used in situations where a long may
overflow.
2017-03-22 08:10:02 +01:00
Krzysztof Woś
86579209c8
Make exception base class visible in basic_json
2017-03-20 16:00:58 +09:00
Niels Lohmann
cd43600e6f
💄 cleanup after #508
2017-03-16 19:02:05 +01:00
Niels Lohmann
773b33e016
Merge pull request #508 from theodelrieu/feature/c_array_conversion
...
add to_json method for C arrays
2017-03-16 19:00:58 +01:00
Niels Lohmann
c5711f3072
🚧 a lot of minor changes
...
- Removed unused headers.
- Added override where needed.
- Added description for parse_error.113 exception.
- Fixed some conversion warnings.
- Integrated cbor_expect_string function for CBOR maps.
- Added documentation on the supported CBOR/MessagePack features.
- Added test to check all initial bytes for CBOR input.
2017-03-16 18:39:33 +01:00
Théo DELRIEU
dbebf8de47
add to_json method for C arrays
...
If the array can be converted to basic_json::string_t, the overload
in this commit is not chosen.
2017-03-16 15:20:39 +01:00
Niels Lohmann
710f8a2686
📝 improved documentation for to-CBOR and to-msgpack functions
2017-03-14 23:08:05 +01:00
Niels Lohmann
1de80e8af4
🔨 added user-defined exception #493
...
Replaced old std::invalid_argument exception by parse_error.111 to have
unified exceptions in case of input stream errors.
2017-03-14 21:31:36 +01:00
Niels Lohmann
63c2c62f19
🔨 changed call from "not good()" to "fail()" #493
...
Also merged develop into this feature branch.
2017-03-14 21:24:53 +01:00
Niels Lohmann
95474e420d
🏁 added parentheses around max/min calls #506
...
When <Windows.h> is included with MSVC, a macro NOMINMAX is defined
that yields compilation errors when max/min calls are encountered. This
can be fixed by un-defining NOMINMAX, or by placing parentheses around
all min/max calls. We chose the latter.
2017-03-14 21:11:20 +01:00
Niels Lohmann
b026591e9e
🚑 added special case to fuzzers to fix #504
...
Since #329 , NaN and inf numbers do not yield an exception, but are
stored internally and are dumped as “null”. This commit adjusts the
fuzz testers to deal with this special case.
2017-03-14 21:05:38 +01:00
Niels Lohmann
c5cf32e34d
🔨 added user-defined exception 406
2017-03-12 20:59:33 +01:00
Niels Lohmann
855cdcf05c
🔀 merge branch 'develop' into feature/exceptions_3.0.0
2017-03-12 20:22:30 +01:00
Niels Lohmann
8feaf8dc94
💥 implemented new handling of NaN and INF #70 #329 #388
...
- If an overflow occurs during parsing a number from a JSON text, an
exception (std::out_of_range for the moment, to be replaced by a
user-defined exception #244 ) is thrown so that the overflow is detected
early and roundtripping is guaranteed.
- NaN and INF floating-point values can be stored in a JSON value and
are not replaced by null. That is, the basic_json class behaves like
double in this regard (no exception occurs). However, NaN and INF are
serialized to “null”.
- Adjusted test cases appropriately.
2017-03-12 18:38:05 +01:00
Niels Lohmann
9355f05888
🔨 cleaned up array from_json methods #473
...
Removed some code that is not needed any more. Thus, streamlining the
array from_json methods.
2017-03-12 17:05:02 +01:00
Niels Lohmann
80dcf22fc3
🔨 added a check function for MsgPack strings #497
...
To avoid the error described in #497 , I added a function
msgpack_expect_string that is executed every time a string is expected
during the parsing of a map. In case the current byte does not belong
to a MsgPack string, an exception is thrown.
2017-03-12 14:39:20 +01:00
Niels Lohmann
28dbe4e651
📝 overworked documentation for the at functions
...
Added all possible exceptions to the examples of the at functions.
2017-03-12 13:49:39 +01:00
Niels Lohmann
89f6068385
Merge branch 'develop' into feature/exceptions_3.0.0
2017-03-12 11:51:24 +01:00
Niels Lohmann
dfa4e83cd8
Merge branch 'feature/no_exceptions' into develop
2017-03-12 11:49:52 +01:00
Niels Lohmann
4d7c29923e
🚑 fix for #486
...
Implemented std::less<value_t> to allow using value_t as std::map key
in MSVC.
2017-03-12 10:40:36 +01:00
Niels Lohmann
4b9c2f1287
🔨 added __EXCEPTIONS to the list
2017-03-11 20:16:13 +01:00
Niels Lohmann
4e49829851
🚑 fix for #493
...
Added a test to check if the input stream is good() before executing
getline on it. Also added two test cases that set the failbit and
badbit before calling file_line_buffer.
2017-03-11 19:26:12 +01:00
Niels Lohmann
122afbf128
🔨 added defined() check
2017-03-11 18:43:21 +01:00
Niels Lohmann
e3e6cbecc7
🏁 added check for _CPPUNWIND
...
MSVC does not define __cpp_exceptions, but seems to use _CPPUNWIND when
exception support is switched on, see
https://msdn.microsoft.com/en-us/library/b0084kay.aspx .
2017-03-11 17:59:24 +01:00
Niels Lohmann
65dfc97d40
🔨 using __cpp_exceptions to detect exception support #498
...
I used __EXCEPTIONS to detect whether exceptions are supported.
Apparently, this is a macro that is only used by libstdc++
(https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64276 ). It’s much cleaner
to use __cpp_exceptions as it is in the standard since C++98.
Note that compiling the unit-tests with “-fno-exceptions” still does
not work, because Catch uses throw internally. However, the library’s
exceptions can be switched off by defining JSON_NOEXCEPTION.
2017-03-11 17:44:54 +01:00
Niels Lohmann
ff0b18d10c
Merge branch 'feature/vector_bool' into develop
2017-03-11 17:22:14 +01:00
Niels Lohmann
c7afb34e57
🎨 cleanup after #496
...
Ran “make pretty” and added a note to the README file.
2017-03-11 16:01:26 +01:00
Niels Lohmann
d9e2dd03bf
🔨 fixed interface for to_json function
2017-03-11 15:46:52 +01:00
Niels Lohmann
f4126e4dd8
✨ added overload for std::less<value_t> #486
...
MSVC needs this overload to compile code containing a std::map that
uses nlohmann::detail::operator as key.
2017-03-11 15:44:14 +01:00
Niels Lohmann
f5f6dac800
✨ added overload for std::vector<bool> #494
...
Adds a to_json function for std::vector<bool> to allow implicit
conversion from bit vectors to basic_json.
2017-03-11 15:32:44 +01:00
Ted Lyngmo
70bbf19527
Fix -Weffc++ warnings (GNU 6.3.1)
2017-03-11 15:16:26 +01:00
Ted Lyngmo
5b809b9737
Fix -Weffc++ warnings (GNU 6.3.1)
2017-03-11 15:05:21 +01:00
Ted Lyngmo
9cfb777b65
Fix -Weffc++ warnings (GNU 6.3.1)
2017-03-11 13:56:38 +01:00
Niels Lohmann
0f6b8aa718
📝 more documentation for the new exceptions
2017-03-08 23:30:38 +01:00
Niels Lohmann
1ab580d6e9
📝 more documentation for the new exceptions
2017-03-08 23:12:13 +01:00
Niels Lohmann
fe71e7df1f
📝 overworked documentation
...
Replacing references to std exceptions with user-defined exceptions.
Also changed some examples to the new exceptions.
2017-03-08 21:03:19 +01:00
Niels Lohmann
9374eaa013
🔨 added user-defined exception 501
2017-03-08 19:16:53 +01:00
Niels Lohmann
fc9b528ec9
🔨 changed an exception
2017-03-08 18:07:21 +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
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
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
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
f1cd15ce7e
⚡ avoid copying a string
2017-02-26 11:22:18 +01:00
Niels Lohmann
27c65b860b
🔖 version 2.1.1
2017-02-25 16:34:38 +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
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
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
Niels Lohmann
057b1e606b
🔀 merged #415 (fix for #414 )
2017-02-16 08:50:20 +01:00
Niels Lohmann
2c17c1b1b2
💄 cleanup
2017-02-16 08:01:01 +01:00
Niels Lohmann
973402c11e
🚧 replaced throws ( #440 ) and _MAX/_MIN macros ( #451 )
2017-02-15 22:44:18 +01:00
Niels Lohmann
b9f3149451
🚑 fix for #452
2017-02-15 21:30:28 +01:00
Mihai STAN
6bf93b3d06
Merge remote-tracking branch 'upstream/develop' into develop
2017-02-15 15:00:25 +02:00
Niels Lohmann
265c5b5207
🔨 more work on the number parser
2017-02-13 18:51:23 +01:00
Niels Lohmann
c8191c8172
🔨 further cleanup
2017-02-12 18:50:17 +01:00
Niels Lohmann
c2d55109c1
🔨 make lexer distinguishes number types
2017-02-11 16:54:25 +01:00
Niels Lohmann
9f5dccbab5
💄 cleanup
2017-02-11 15:55:53 +01:00
Niels Lohmann
926af6d50b
🔀 merge branch 'develop' into TurpentineDistillery-feature/locale_independent_str_to_num
2017-02-11 15:17:47 +01:00
Niels Lohmann
662a9b8f3c
✏️ fixed more typos
2017-02-08 18:19:41 +01:00
Niels Lohmann
4746a4c536
💄 minor change
2017-02-08 17:56:43 +01:00
Niels Lohmann
8d88a1da2a
🔀 merged #379 and fixed conflicts
2017-02-05 13:13:41 +01:00
Niels Lohmann
c75865d88c
🐛 fixed -Weffc++
warnings
2017-02-01 15:13:21 +01:00
Niels Lohmann
b210f2dbf4
💄 minor refactoring
2017-01-29 21:40:37 +01:00
Niels Lohmann
38e4935db0
📝 added example and documentation for the meta function
2017-01-28 17:12:29 +01:00
Niels Lohmann
cdde1a9436
🔖 set version to 2.1.0
2017-01-28 16:46:03 +01:00
Niels Lohmann
d870826811
🔖 set version to 2.1.0
2017-01-28 16:03:35 +01:00
Niels Lohmann
cd9701b123
💄 cleanup
2017-01-26 20:51:30 +01:00
Niels Lohmann
77bb7af5d9
📝 added more documentation
2017-01-26 07:29:37 +01:00
Niels Lohmann
4d3053cd42
💄 some cleanup
2017-01-25 22:21:07 +01:00
Niels Lohmann
94d9b7bc86
📝 overworked documentation (re-added constructor examples)
2017-01-25 21:59:54 +01:00
Niels Lohmann
ec03c9c53e
📝 overworked docs #435
2017-01-25 19:01:31 +01:00
Mihai STAN
6198439f59
fix #414 - comparing to 0 literal
...
Overload comparison operators for all types that could be converted
to nullptr.
2017-01-24 22:33:37 +02:00
Niels Lohmann
c154f3133d
🚧 rephrased assertions
2017-01-24 15:02:35 +01:00
Niels Lohmann
250e5bf43d
💄 overworked documentation and indentation
2017-01-24 13:47:33 +01:00
Théo DELRIEU
9f8b270ed9
fix some warnings
2017-01-22 14:07:28 +01:00
Théo DELRIEU
9c6ef74a28
add static_asserts/remove the need for CopyConstructible in get
2017-01-21 19:12:40 +01:00
Théo DELRIEU
ba0b35f414
use typename U = uncvref_t where appropriate
2017-01-21 19:12:40 +01:00
Théo DELRIEU
37fd20b2eb
put uncvref_t, enable_if_t, value_t and operator<(value_t) in detail
2017-01-21 19:12:40 +01:00
Théo DELRIEU
7d771c71ed
put back type_name in basic_json
...
This can however not be done easily for value_t, since
external_constructor depends on it, as is operator< which was moved
outside basic_json too.
This is not really an issue, since all basic_json classes share the same
enum
2017-01-21 19:12:40 +01:00
Théo DELRIEU
f997758cad
remove useless forward declaration of primitive_iterator_t
2017-01-21 19:12:40 +01:00
Théo DELRIEU
40ba5a8b7b
remove inline keyword from anonymous namespace (not needed)
2017-01-21 19:12:40 +01:00
Théo DELRIEU
7f359017d2
rename template argument Json -> BasicJsonType
2017-01-21 19:12:40 +01:00
Théo DELRIEU
889b269a4f
rename template argument: BasicJson -> Json
2017-01-21 16:14:23 +01:00
Théo DELRIEU
a6b028286b
move conjunction/disjunction to the top of detail
2017-01-21 16:14:23 +01:00
Théo DELRIEU
d566bb81c4
use switchs where appropriate
2017-01-21 16:14:23 +01:00
Théo DELRIEU
1e20887cff
use JSON_THROW
2017-01-21 16:14:22 +01:00
Théo DELRIEU
447c6a670f
run make re2c
2017-01-21 16:14:22 +01:00
Théo DELRIEU
3e15b551e0
run make pretty
2017-01-21 16:14:22 +01:00
Théo DELRIEU
b56117b148
add noexcept tests
2017-01-21 16:14:22 +01:00
Théo DELRIEU
af94e712c7
add basic doxygen documentations
2017-01-21 16:14:22 +01:00
Théo DELRIEU
1d87097741
remove some boilerplate
2017-01-21 16:14:22 +01:00
Théo DELRIEU
e60e458a7e
move static_const to the detail namespace
2017-01-21 16:14:22 +01:00
Théo DELRIEU
07bc82d3a7
put const to the left
2017-01-21 16:14:22 +01:00
Théo DELRIEU
f2c71fafda
minor message/comments tweak
2017-01-21 16:14:22 +01:00
Théo DELRIEU
63e4249e9f
use a priority_tag instead of int and longs with sfinae-dispatch
2017-01-21 16:14:22 +01:00
Théo DELRIEU
b8012876a5
add noexcept checks, and some missing noexcepts
2017-01-21 16:14:22 +01:00
Théo DELRIEU
a9d5ae4fad
put back a specialization for containers with a reserve method
2017-01-21 16:14:22 +01:00
Théo DELRIEU
e247e01a6e
use static_casts to silence MSVC warnings
...
Those warnings are not "fixed", but that's intentional.
Truncations are expected when ArithmeticType is not the same type than
number_unsigned_t (or another basic_json template argument)
2017-01-21 16:14:22 +01:00
Théo DELRIEU
d0d8070422
add static_asserts
...
remove some useless trailing return types and && to help MSVC
2017-01-21 16:14:22 +01:00
Théo DELRIEU
e678c075dd
check for is_number_unsigned before is_number_integer
2017-01-21 16:14:22 +01:00
Théo DELRIEU
cb3d455bd2
do not const_cast when calling get_ptr
2017-01-21 16:14:22 +01:00
Théo DELRIEU
1f25ec5d36
add some constexpr + noexcept
2017-01-21 16:14:22 +01:00
Théo DELRIEU
29f9fe6ae9
remove one has_to/from_json template parameter
2017-01-21 16:14:22 +01:00
Théo DELRIEU
5839795725
remove useless helpers
2017-01-21 16:14:22 +01:00
Théo DELRIEU
b4cea6825d
remove is_compatible_array_type_impl trait
2017-01-21 16:14:22 +01:00
Théo DELRIEU
b2543e06d8
removed is_compatible_float_type trait
2017-01-21 16:14:22 +01:00
Théo DELRIEU
be6b417c87
tweak SFINAE checks for internal types (see commit body)
...
only check for public types (iterators, json_pointer)
for private ones (m_array.iterator, primitive_iterator) simply double
parentheses on relevant Catch checks
2017-01-21 16:14:22 +01:00
Théo DELRIEU
317883b21b
cleanup, details in body
...
removes:
- is_basic_json_compatible_type traits
- a useless operator=
- void_t
- disjunction
changes:
- is_compatible_object_type's first argument is BasicJson
2017-01-21 16:14:22 +01:00
Théo DELRIEU
4e8089b9de
remove old get/get_impl overloads (doc removal is of course temporary)
2017-01-21 16:14:22 +01:00
Théo DELRIEU
7e6a6f978e
replace constructor by from/to_json: array_t
2017-01-21 16:14:22 +01:00
Théo DELRIEU
c847e0eea2
replace constructor by from/to_json: array_t
...
- tweaked a bit how `get<container<json>>` is handled
- added a from_json overload for forward list
2017-01-21 16:14:22 +01:00
Théo DELRIEU
6d427acdde
replace constructor by from/to_json: unscoped enum types
...
this also means that one can do: j.get<unscoped_enum>();
2017-01-21 16:14:22 +01:00
Théo DELRIEU
f00898331e
replace constructor by from/to_json: number_integer_t
2017-01-21 16:14:22 +01:00
Théo DELRIEU
a32de3b528
replace constructor by from/to_json: number_unsigned_t
...
This commit forces a design change in custom JSONSerializer, which might
be temporary
2017-01-21 16:14:21 +01:00
Théo DELRIEU
d257149f36
replace constructor by from/to_json: number_float_t
2017-01-21 16:14:21 +01:00
Théo DELRIEU
bbe40641a3
replace constructor by from/to_json: string_t
2017-01-21 16:14:21 +01:00
Théo DELRIEU
6b89785fba
replace constructor by from/to_json: boolean_t
2017-01-21 16:14:21 +01:00
Théo DELRIEU
c833b22b7b
move type_name outside of basic_json, make it a friend
2017-01-21 16:14:21 +01:00
Théo DELRIEU
d359684f2b
move enum class value_t outside of basic_json
2017-01-21 16:14:21 +01:00
Niels Lohmann
034d5ed97e
💄 some cleanup
2017-01-21 16:14:21 +01:00
Niels Lohmann
be1d3de49b
💄 moved changes to re2c file and ran make pretty
2017-01-21 16:14:21 +01:00
Théo DELRIEU
aa2679a8ce
fix tests, avoid instantiating JSONSerializer when it will not be used
2017-01-21 16:14:21 +01:00
Théo DELRIEU
3d405c6883
add support for enum classes
2017-01-21 16:14:21 +01:00
Théo DELRIEU
f5cb089f89
add an enum constructor (quickfix)
2017-01-21 16:14:21 +01:00
Théo DELRIEU
1eafac7220
remove explicit keyword on udt-constructor
2017-01-21 16:14:21 +01:00
Théo Delrieu
c0c72b5b62
rewrite unit-udt: basic usage
2017-01-21 16:14:21 +01:00
Théo DELRIEU
60e6f822fa
add support for non-default-constructible udt
2017-01-21 16:14:21 +01:00
Théo DELRIEU
e5999c6c82
add a few tests
2017-01-21 16:14:21 +01:00
Théo Delrieu
74bb11d92c
remove some useless checks, format a bit, added some comments
2017-01-21 16:14:21 +01:00
Théo DELRIEU
907484fb43
format biggest lines
2017-01-21 16:14:21 +01:00
Théo Delrieu
47bc402113
only use conjunction & co when needed to avoid MSVC crashing
2017-01-21 16:14:21 +01:00
Théo DELRIEU
ee19acaf05
add is_compatible_basic_json_type trait
2017-01-21 16:14:21 +01:00
Théo Delrieu
9b401972a0
add a macro for has_xxx types
2017-01-21 16:14:21 +01:00
Théo DELRIEU
e2dbe7a69f
correctly constrain basic_json udt constructor
2017-01-21 16:14:21 +01:00
Théo DELRIEU
0d91113ccf
add negation, disjunction, and conjunction from C++17
2017-01-21 16:14:21 +01:00
Théo DELRIEU
88819449c2
remove constraints on JSONSerializer instances, constrain correctly new methods
2017-01-21 16:14:21 +01:00
Théo DELRIEU
23bd2bce35
add is_compatible_* traits
2017-01-21 16:14:21 +01:00
Théo DELRIEU
178441cdfd
add basic test for custom serializer
2017-01-21 16:14:21 +01:00
Théo DELRIEU
2bc685f6b4
to_json and from_json takes both two arguments now
...
the first is the basic_json type, the second the user-defined type
2017-01-21 16:14:21 +01:00
Théo DELRIEU
33abccf847
add template arguments for JSONSerializer
2017-01-21 16:14:21 +01:00
Théo DELRIEU
7dc268ef42
add first version for alternate implementation
2017-01-21 16:14:21 +01:00
Théo DELRIEU
4cdc61e493
move most SFINAE trickery in to/from_json_fn
2017-01-21 16:14:21 +01:00
Théo DELRIEU
03b391c37b
remove has_destructor and has_json_traits, use decltype instead
2017-01-21 16:14:21 +01:00
Théo DELRIEU
12b4555b13
use uncvref_t<T> instead of remove_cv_t<remove_reference_t<T>>>
2017-01-21 16:14:21 +01:00
Théo DELRIEU
877d96c1d8
rename __static_const to _static_const (reserved identifier)
2017-01-21 16:14:21 +01:00
Théo DELRIEU
d54d6bb84c
add alias templates to reduce boilerplate
2017-01-21 16:14:21 +01:00
Théo DELRIEU
fe628b585b
anonymous namespace renamed to detail
2017-01-21 16:14:21 +01:00
Théo Delrieu
b443edf49e
add first version support for user-defined types
2017-01-21 16:14:20 +01:00
Niels Lohmann
ce0b3fe5a3
🚧 made type_name() public
2017-01-21 16:12:17 +01:00
Niels Lohmann
a00149f8ee
🐛 fixed logic error
2017-01-16 22:36:58 +01:00
Niels Lohmann
1ab26ab367
✨ option to switch off exceptions
2017-01-16 22:11:07 +01:00
Niels Lohmann
dd45ba6f89
🚧 renamed version()
to meta()
2017-01-08 09:19:44 +01:00
Alex Astashyn
c236b596c9
Merge upstream/develop into feature/locale_independent_str_to_num
2017-01-04 19:20:16 -05:00
Alex Astashyn
949061079a
Merge upstream/develop into feature/locale_independent_num_to_str
2017-01-04 18:55:19 -05:00
Niels Lohmann
e1b89dd1d6
Merge branch 'develop' into feature/release_information
2017-01-04 20:06:23 +01:00
Niels Lohmann
9f6c86f233
🐛 fix for #417
2017-01-04 18:54:44 +01:00
Niels Lohmann
4765070318
📝 added documentation wrt. UTF-8 strings #406
2017-01-04 18:07:46 +01:00
Niels Lohmann
cdd3b5a68c
🚑 fix for #416
2017-01-03 23:52:01 +01:00
Niels Lohmann
767637877b
💄 cleanup
2017-01-03 22:37:07 +01:00
Niels Lohmann
245a69d554
💄 ran clang-tidy
2017-01-03 21:33:23 +01:00
Niels Lohmann
ea4d71ee21
Merge branch 'develop' into feature/release_information
2017-01-02 17:26:00 +01:00
Niels Lohmann
8b46eb8ec0
📄 it's 2017 already
2017-01-02 09:40:00 +01:00
Niels Lohmann
60b3703c62
🔖 version bump to 2.0.10
2017-01-02 09:35:57 +01:00
Niels Lohmann
d173517212
💄 clean up
2017-01-02 09:21:26 +01:00