Niels Lohmann
07b78c993c
🐛 fixed undefined behavior bug
...
When an empty vector was passed to the parse function, an empty iterator range was used to construct an input iterator. Unfortunately, we then cannot use the start iterator to derive a pointer from.
Found with Xcode's undefined behavior sanitizer.
2017-07-07 23:37:16 +02:00
Niels Lohmann
8b123107c0
🔨 fixed some pedantic GCC warnings
2017-07-07 22:41:22 +02:00
Niels Lohmann
32065c8045
📝 fix for #639
...
Removed deprecated documentation of the comparison operator.
2017-07-07 21:16:33 +02:00
Niels Lohmann
e99b783def
🔨 simplifying scanner
2017-06-22 16:40:15 +02:00
Niels Lohmann
dad6051f37
Merge pull request #629 from Chocobo1/c4819
...
Fix MSVC warning C4819
2017-06-21 18:54:03 +02:00
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
0b1b6307a5
Also change the re2c file
2017-03-30 16:14:02 +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