Commit graph

929 commits

Author SHA1 Message Date
Niels Lohmann 4b5433578a
added progress output for Unicode tests
Travis aborts tests if they do not produce output for 10 minutes. This commit shall fix this.
2017-06-21 18:50:11 +02:00
Chocobo1 66ffac9e8a Fix MSVC warning C4819
Replace unicode whitespaces by ASCII whitespace 0x20
2017-06-21 16:17:10 +08:00
Niels Lohmann 6f3bebff5c
🔨 removed unexpect function 2017-06-21 07:26:50 +02:00
Niels Lohmann 9add24ff10
🔨 fixed a warning 2017-06-20 22:20:41 +02:00
Niels Lohmann 2f007ca092
improved coverage 2017-06-20 22:03:36 +02:00
Niels Lohmann a5c27ede32
🔨 fixed a warning 2017-06-20 21:39:36 +02:00
Niels Lohmann e191dd833f
🔨 fixed warning about pointer members 2017-06-20 21:09:05 +02:00
Niels Lohmann 82b95ca664
🔨 simplified error handling in parser 2017-06-20 20:14:18 +02:00
Niels Lohmann 70b7455a13
🔨 minor change 2017-06-19 21:50:36 +02:00
Niels Lohmann 4e6f548c0b Merge pull request #624 from theodelrieu/feature/pair_tuple_conversions
add pair/tuple conversions
2017-06-19 17:31:10 +02:00
Théo DELRIEU 08d781058c
add from_json support for std::array 2017-06-19 12:03:38 +02:00
Théo DELRIEU 6e4910d5c5
add pair/tuple conversions 2017-06-19 10:16:37 +02:00
Niels Lohmann 112a6f4e53
🔨 replaced lexer's error message by const char* 2017-06-18 13:03:14 +02:00
Steffen Brem 04a1666ef2 Add parentheses around std::min so it bypasses the macro introduced by windows.h. 2017-06-17 22:01:18 +02:00
Niels Lohmann 1fbb82de89
🔨 using std::array to buffer input 2017-06-17 20:47:53 +02:00
Niels Lohmann b27d2adcbe
accept functions to check if input is valid JSON #458 2017-06-16 19:23:55 +02:00
Théo DELRIEU c98364834f
remove std::pair support 2017-06-13 11:11:29 +02:00
Niels Lohmann 88dc7c11fa
🔨 fixed a warning 2017-06-12 19:58:44 +02:00
Niels Lohmann ac793e957f
🔨 trying to fix #367
Code from https://stackoverflow.com/a/44503794/266378 which is hopefully working with MSVC.
2017-06-12 18:58:58 +02:00
HenryLee e12c2ee6a8 Merge branch 'develop' into iterator_arithmetic 2017-06-09 20:47:42 +10:00
Niels Lohmann 52f934cbbf Merge pull request #609 from theodelrieu/develop
Add pair support, fix CompatibleObject conversions (fixes #600)
2017-06-07 16:38:23 +02:00
Théo DELRIEU cea39dfaa8
fix #600
Instead of calling CompatibleObjectType iterator-range constructor,
first convert json::value_type to CompatibleObjectType::value_type
2017-06-07 10:24:59 +02:00
HenryLee 6661ec755b Merge branch 'develop' into iterator_arithmetic 2017-06-07 18:01:46 +10:00
HenryLee 0f065edff6 Revert a change in reverse iterator to pass the test cases 2017-06-07 18:01:01 +10:00
Théo DELRIEU 85de93ba93
add std::pair<CompatibleStringType, T> support 2017-06-06 13:56:16 +02:00
HenryLee c98169d0d5 Revert "Change iterator category to random access"
This reverts commit c4ab8f827e.
2017-06-05 21:59:17 +10:00
HenryLee fb91aa81da Merge branch 'develop' into iterator_arithmetic 2017-06-05 20:24:21 +10:00
HenryLee 2ba554e442 Merge branch 'develop' into issue550 2017-06-05 20:24:08 +10:00
Niels Lohmann 1a9d76679a
🐛 fixed the issue with GCC7 #590 2017-06-04 18:40:32 +02:00
Niels Lohmann d19c5ced4b
🐛 skipping BOM for iterators #602
I totally forgot about byte order marks in this scenario.
2017-06-02 12:38:32 +02:00
HenryLee 2d5f0c0549 Redefine the converting assignment in iterator 2017-05-31 00:50:14 +10:00
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