Commit graph

970 commits

Author SHA1 Message Date
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