Commit graph

756 commits

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