Perry Kundert
1b43a45bec
Implement correct handling of std::streambuf int_type, eof()
...
o Make no assumptions about eof(), other than that it is somewhere
outside of the valid range of char_type.
2017-10-05 16:16:41 -07:00
Perry Kundert
184dab60e6
Accelerate access to underlying std::istream streambuf
2017-10-05 16:16:41 -07:00
Perry Kundert
f775922ca8
Specify initializers for yytest, token_string using initializer-lists
...
o We can retain -Weffc++ and specify default initializers by using
initializer lists. The risks are low (of additional non-conformat
compilers), because there is already one other such initialization
used in the code-base.
2017-10-05 16:16:41 -07:00
Perry Kundert
546e148b24
Further performance improvements, and corrections in get_token_string
...
o An (-'ve valued, typically -1) EOF must never be allowed in
token_string, as it be converted to 255 -- a legitimate value.
o Comparing against a specific eof() (-1, typically) is more costly than
detecting +'ve/-'ve. Since EOF is the only non-positive value allowed
we can use the simpler test.
o Removed unnecessary test for token_string size, as it is already
tested in the method, and must never occur in correct code; used an
assert instead.
2017-10-05 16:16:41 -07:00
Perry Kundert
8665e25942
Rename get_string to move_string to imply side-effect
2017-10-05 16:16:41 -07:00
Perry Kundert
e0d890cc23
Corrected unnnecessary const restriction on returned std::string
2017-10-05 16:16:41 -07:00
Perry Kundert
97a388802d
Improve performance by constructing yytext as a std::string
...
o Return its contents when necessary. In many cases, this avoids
construction of multiple copies of the yytext token. Exceeds
performance of current develop branch.
2017-10-05 16:15:46 -07:00
Perry Kundert
7c523338c5
Remove unnnecessary NUL termination of yytext (as it may contain NULs)
2017-10-05 16:01:41 -07:00
Perry Kundert
14ca1f6f09
Restore istream performance #764
...
o Use std::streambuf I/O instead of std::istream; does not maintain
(unused) istream flags.
o Further simplify get/unget handling.
o Restore original handling of NUL in input stream; ignored during
token_string escaping.
2017-10-05 16:01:41 -07:00
Perry Kundert
12efeadc2e
Further simplify istream handling; use native unget
2017-10-05 16:01:41 -07:00
Perry Kundert
90adf6ec20
Simplify get_token_string, unnecessary buffering, handle Byte Order Mark
2017-10-05 16:01:41 -07:00
Niels Lohmann
5cb6d7187d
🚨 fixing last warning in #755
2017-10-04 17:28:35 +02:00
Niels Lohmann
54bd1b5124
Merge branch 'develop' into feature/issue698
2017-10-03 17:23:05 +02:00
Niels Lohmann
7435d54e97
🔨 clean up
2017-10-02 23:06:41 +02:00
Niels Lohmann
4912231450
Merge branch 'develop' into feature/issue698
2017-10-02 18:25:25 +02:00
Niels Lohmann
b91805e1f0
🚨 removing a compiler warning #755
2017-10-02 18:11:36 +02:00
Niels Lohmann
f89f8b2d0b
Merge branch 'develop' into feature/issue698
2017-10-02 17:47:53 +02:00
Niels Lohmann
8be303d4fb
🏁 fixing a min() call for MSVC #762
2017-10-02 13:54:14 +02:00
Niels Lohmann
1df836ce40
⏪ removed call to std::signbit #761
2017-10-01 15:48:29 +02:00
Niels Lohmann
8af49d4be5
🚨 removing compiler warnings #755
2017-09-30 11:00:26 +02:00
Niels Lohmann
1a66527dca
📝 fixed documentation #745
2017-09-30 10:18:18 +02:00
Niels Lohmann
295d65ada7
Merge branch 'develop' into feature/issue698
2017-09-10 01:13:43 +02:00
Niels Lohmann
fcba9ec537
🔨 clean up
2017-09-10 01:12:03 +02:00
Niels Lohmann
31ce7e1e59
Merge branch 'develop' into feature/issue698
2017-09-09 11:05:20 +02:00
Niels Lohmann
c607b5c2ac
📝 improved documentation
2017-09-06 17:14:06 +02:00
Niels Lohmann
91e0032853
📝 improved documentation
2017-08-29 23:46:26 +02:00
Niels Lohmann
15e757c42b
🔨 trying to fix memory issue with valarray
2017-08-27 10:41:39 +02:00
Théo DELRIEU
bb1b4c934e
fix from_json implementation for pair/tuple
...
Introduced by 6e4910d5c5
Fixes #707
2017-08-23 10:05:43 +02:00
Niels Lohmann
0b5e8f859b
🔨 cleanup
...
Fixed some warning in Clion.
2017-08-23 00:42:15 +02:00
Niels Lohmann
9fd031b6f4
🐛 re-added support for std::valarray #702
2017-08-22 23:28:23 +02:00
Niels Lohmann
64ef100ebf
Revert " 💥 changed iterators to andom_access_iterator #593 "
...
This reverts commit c77a0be5f3
.
2017-08-20 20:44:44 +02:00
Niels Lohmann
c77a0be5f3
💥 changed iterators to andom_access_iterator #593
...
This commit changes the iterator category to andom_access_iterator and allows offsets and subscript operators for object iterators.
2017-08-16 21:35:22 +02:00
Niels Lohmann
aba8b58492
🔨 approach to un-break the changes for #462
2017-08-16 20:11:05 +02:00
Niels Lohmann
22b59693f1
💥 CBOR/MessagePack input must end with EOF #505
...
The CBOR and MessagePack parsers now expect the input to be read until the end. Unless the new parameter "strict" is set to false (it is true by default), an exception is raised if the parser ends prematurely. This is a breaking change as the parsers ignored unread input so far.
Furthermore, the offset/startIndex paramter introduced in #462 was removed as this behavior can be mimicked with an iterator range. For instance, instead of calling "from_cbor(vec, 5);", you can write "from_cbor({vec.begin()+5, vec.end()});".
2017-08-16 14:48:23 +02:00
Niels Lohmann
4391bf5615
Merge branch 'feature/update' into develop
2017-08-16 07:39:30 +02:00
Niels Lohmann
1e360bb32b
🔨 preparation for #505
...
Added a parameter to control whether parsing CBOR and MessagePack must completely consume the input.
2017-08-16 07:39:11 +02:00
Niels Lohmann
72afe53fa0
📝 updated documentation for update() function #661
2017-08-15 21:42:50 +02:00
Niels Lohmann
039e2f03bc
Merge branch 'develop' into feature/update
2017-08-15 19:54:22 +02:00
Niels Lohmann
08805f7f14
🔨 cleanup
2017-08-13 20:57:27 +02:00
Niels Lohmann
7d19aed567
🔨 cleanup
2017-08-13 19:02:58 +02:00
Niels Lohmann
6151b056eb
🔨 cleanup
2017-08-10 23:40:30 +02:00
Niels Lohmann
a46afd4008
Merge pull request #679 from traits/patch-1
...
Digraph warning
2017-08-10 11:39:13 +02:00
traits
54c67dcfec
Update json.hpp
2017-08-10 09:05:00 +02:00
WebProdPP
c9509ccf97
Update json.hpp
...
mistake
2017-08-09 16:13:43 +03:00
Kyle Thompson
4b55f0ebd6
To fix compilation issue for intel OSX compiler
...
o To prevent the compilation issue on OSX with the intel compiler suite. The
error was found with icpc version 15.0.3.187 where the "__clang_version__" was
not defined correctly, while "__clang__" was.
2017-08-08 18:43:03 -04:00
traits
ab44a50d98
Digraph warning
...
The original version can trigger a digraph-related warning in VS2015. Is this namespace construct a typo or something deliberate?
2017-08-07 14:23:48 +02:00
DmitryKuk
19437c15de
massage -> message
2017-08-05 10:43:08 +03:00
Niels Lohmann
d2c3592908
✅ added test cases for update #661
2017-08-02 22:44:58 +02:00
Niels Lohmann
d1e13d5128
🎉 first draft for #661
2017-08-02 22:12:41 +02:00
Niels Lohmann
0ea0d7d860
Merge pull request #674 from wincent/patch-1
...
Fix "not constraint" grammar in docs
2017-08-01 20:21:04 +02:00
Niels Lohmann
efdfd3aa5b
⚡ replaced by-value call #673
2017-08-01 19:37:25 +02:00
Greg Hurrell
391303521a
Fix "not constraint" grammar in docs
2017-08-01 08:56:28 -07:00
Niels Lohmann
e60002a1b3
🔨 fixed GCC warnings in #663
...
https://github.com/nlohmann/json/pull/663#issuecomment-318931884
2017-07-31 23:17:14 +02:00
Niels Lohmann
850d856aae
🔨 cleanup after #663
2017-07-30 20:30:05 +02:00
Niels Lohmann
3d67ec40a6
Merge branch 'develop' of https://github.com/nlohmann/json into develop
2017-07-30 20:01:35 +02:00
Niels Lohmann
85c768084b
🔨 using emplace
2017-07-30 20:01:31 +02:00
Niels Lohmann
aad55219f8
Merge branch 'develop' into move-construction
2017-07-30 19:49:24 +02:00
Niels Lohmann
96dd4ffa19
🔨 simplified a call
2017-07-30 18:30:34 +02:00
Niels Lohmann
7737a29518
🔨 small parser performance improvements
...
- replaced list of pairs by flat list in next_byte_in_range
- implemented early exit in case of parse errors
- reused memory for object keys
- direct calls to embedded objects/arrays for insertions
2017-07-30 13:25:36 +02:00
Niels Lohmann
c819a2d732
🔨 refactored some scanner internals
2017-07-28 19:18:50 +02:00
Niels Lohmann
5851daa576
✨ binary formats can be stored in std::string, std::ofstreams or std::ostringstream #477
2017-07-28 00:21:55 +02:00
Niels Lohmann
7d51214045
✨ implemented exception-free parser #458 #582
...
You can now pass a boolean "allow_exceptions" to the parse functions. If it is false, no exceptions are thrown in case of a parse error. Instead, parsing is stopped at the first error and a JSON value of type "discarded" (check with is_discarded()) is returned.
2017-07-27 20:33:11 +02:00
Niels Lohmann
669ebf51bc
🔨 fixed an error in MSVC
2017-07-27 06:04:35 +02:00
Niels Lohmann
3d589fd032
🔨 fixed compilation error
2017-07-26 23:59:56 +02:00
Niels Lohmann
e6aa700360
🔨 cleanup
2017-07-26 23:44:55 +02:00
Nikita Ofitserov
93bb71232d
Move from rvalues eagerly to work around MSVC problem
...
On MSVC compiler, temporaries that are constructed during a
list initialization, are sometimes destroyed even before calling
the initializing constructor, instead of at the end of the
containing full-expression. This is clearly non-conforming to
[class.temporary].
As the impact of this bug is silently producing incorrect
JSON values, move eagerly from rvalues to be safe.
See https://stackoverflow.com/questions/24586411
2017-07-25 12:17:32 +03:00
Nikita Ofitserov
897879bccb
Make detail::json_ref do less work by deferring moves/copies
2017-07-24 12:29:06 +03:00
Niels Lohmann
4414f94cd5
🔨 using input/output adapters for CBOR and MessagePack
...
- You can now pass a reference to a vector to the to_cbor and to_msgpack functions. The output will be written (appended) to the vector. #476
- You can now pass an output stream with uint8_t character type to the to_cbor and to_msgpack functions. #477
- You can now read from uint8_t */size in the to_cbor and to_msgpack functions. An input adapter will be created from this pair, so you need to use braces. #478
2017-07-23 23:02:24 +02:00
Nikita Ofitserov
09cda57309
Support moving from rvalues in an std::initializer_list
...
This commit works around an issue in std::initializer_list design.
By using a detail::json_ref proxy with a mutable value inside,
rvalue-ness of an input to list initializer is remembered and
used later to move from the proxy instead of copying.
2017-07-23 23:57:17 +03:00
Nikita Ofitserov
cf3ca3b78c
Optimize json construction from rvalue string_t/array_t/object_t
2017-07-23 23:50:59 +03:00
Niels Lohmann
9b1c058810
🔨 reorganized interfaces for parse/accept functions #623
...
We now rely on implicit conversions to an input_adapter object in the parse/accept functions.
2017-07-23 18:11:34 +02:00
Niels Lohmann
18e0430bfe
🔨 adding destroy function to discard values
2017-07-22 22:57:22 +02:00
Niels Lohmann
5b5f0090a1
🔨 trying to fix the sanitizer error
...
Travis found an error with Clang 3.8's sanitizers, see https://travis-ci.org/nlohmann/json/jobs/256366699 . Unfortunately, I cannot reproduce this error with clang version 6.0.0 (trunk 308825) locally. However, this seems to be an issue, because so far, we did not reset a value after moving from it.
2017-07-22 16:41:42 +02:00
Niels Lohmann
d53ef95067
🔨 fixed some warnings
2017-07-22 15:33:31 +02:00
Niels Lohmann
c7a69ae03e
⚡ started working on parser with provded result reference #418
...
Internally, the parser now writes its result into a JSON value provided as a reference. To be usable, the public interfaces need to be extended.
2017-07-22 15:18:38 +02:00
Niels Lohmann
f513c46749
🔨 further cleanup
2017-07-22 13:35:04 +02:00
Niels Lohmann
024fec8a9b
🔨 more cleanup using clang-tidy
2017-07-21 18:26:07 +02:00
Niels Lohmann
a09193e967
🔨 cleanup
...
- Replaced codepoint calculation by bit operations.
- Fixed several clang-tidy warnings.
2017-07-20 23:01:16 +02:00
Niels Lohmann
21d23982ca
🐛 fix for #656
...
A complete rewrite of the string escape function. It now provides codepoint-to-\uxxxx escaping. Invalid UTF-8 byte sequences are not escaped, but copied as-is. I haven’t spent much time optimizing the code - but the library now agrees with Python on every single Unicode character’s escaping (see file test/data/json_nlohmann_tests/all_unicode_ascii.json).
Other minor changes: replaced "size_t" by "std::size_t"
2017-07-17 07:53:02 +02:00
Ryan Mulder
486f3a2d16
restore necessary comman in documentation of dump
2017-07-11 14:18:02 -04:00
Ryan Mulder
40461c6c55
update comment on dump to not indicate that ensure_ascii is true by default
2017-07-11 13:59:07 -04:00
Ryan Mulder
71597be294
add ensure_ascii parameter to dump. #330
2017-07-11 13:48:08 -04:00
Théo DELRIEU
8585d35c92
move serializer outside of basic_json
2017-07-09 21:30:34 +02:00
Théo DELRIEU
acff23efb2
move binary_{reader,writer} outside of basic_json
2017-07-09 21:30:33 +02:00
Théo DELRIEU
bb752fd30c
move json_reverse_iterator outside of basic_json
2017-07-09 21:30:33 +02:00
Théo DELRIEU
0ba98b6fe0
move internal_iterator/iter_impl/iteration_proxy outside of basic_json
2017-07-09 21:30:31 +02:00
Théo DELRIEU
00d6e27194
move primitive_iterator outside of basic_json
2017-07-09 21:22:16 +02:00
Théo DELRIEU
8e681d1e57
move lexer/parser outside of basic_json
2017-07-09 21:22:15 +02:00
Théo DELRIEU
15625ca4a7
move input adapters outside of basic_json
2017-07-09 21:21:12 +02:00
Théo DELRIEU
a332142194
move json_pointer outside of basic_json
2017-07-09 21:21:09 +02:00
Théo DELRIEU
fe086d7432
forward declare basic_json, add two macros
...
Those macros are used to reduce template argument boilerplate
2017-07-09 16:16:42 +02:00
Oleg Endo
e3bb156f82
fix typo
2017-07-09 15:20:28 +09:00
Oleg Endo
b753cb6ee7
use std::make_shared
2017-07-09 15:19:08 +09:00
Oleg Endo
f0ca96d462
include <iosfwd> instead of <iostream>
...
avoid bloat caused by <iostream> and std::cout and friends in apps where
iostream are not used.
2017-07-09 15:04:49 +09:00
Niels Lohmann
7b05e1a687
🔨 improved performance in dump for deeply nested values
2017-07-08 22:59:04 +02:00
Niels Lohmann
87bccbc335
🔨 removed exception parse_error.111
...
It makes no sense to have this special exception. Instead of throwing when an input adapter is created, it is better to detect a parse error in later usage when an EOF is "read" unexpectedly.
2017-07-08 21:35:13 +02:00
Niels Lohmann
b38ecb5ca9
🔨 simplified binary write
...
Also added some comments and improved the documentation.
2017-07-08 20:31:13 +02:00
Niels Lohmann
b3ac36db93
🔨 excluded uncovered lines
...
These breaks were just added to silence a GCC warning - the GCC is right about warning as it cannot know that the expect function will not return in these two scenarios.
2017-07-08 18:34:08 +02:00
Niels Lohmann
e67df7c385
Merge branch 'feature/undo_171' into develop
2017-07-08 16:34:00 +02:00
Niels Lohmann
552622343e
📝 fixed typos
2017-07-08 16:18:27 +02:00
Niels Lohmann
566f6dcf30
🔥 removing usused functions #645
...
It seems these functions are not required any more. The code was added in commit 7e32457
to fix issue #171 . There are still regression tests for #171 , so when this commit passes the CI, the functions may be removed for good.
2017-07-08 13:33:13 +02:00
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