Dmitry Arkhipov
ed9e2f536a
require ARM64 for __umulh
2023-07-24 14:39:22 +03:00
Dmitry Arkhipov
bee57b4cb7
remove unnecessary code in value_to for variant
2023-07-03 17:59:17 +03:00
Dmitry Arkhipov
5bc9ebb8d2
allow exception propagation in optional and variant conversion
2023-07-03 17:59:17 +03:00
Dmitry Arkhipov
c3d6757ab9
allow exception propagation from nested conversions
...
Specifically, when user invokes throwing value_to, when it goes to
non-throwing conversion, then back to throwing conversion, exceptions
will be able to propogate still.
2023-07-03 17:59:14 +03:00
Dmitry Arkhipov
747bde3e37
fix conversion into tuple with const elements
2023-06-29 20:47:33 +03:00
Matt Borland
00ba38404a
Fix type of pointer to _umul128
2023-06-29 09:28:52 +02:00
Dmitry Arkhipov
3d751ad9e5
handle bias overflow
2023-06-28 13:22:49 +03:00
Dmitry Arkhipov
dd5494b202
accept numbers with large exponent
2023-06-26 21:38:25 +03:00
Dmitry Arkhipov
6a034f22d6
split parse_number into separate instatntiations per number parsing mode
2023-06-24 14:45:00 +03:00
Dmitry Arkhipov
285c3aa5a2
mode to not parse numbers
2023-06-23 18:12:08 +03:00
Dmitry Arkhipov
24cca5f47b
fix error message for size_mismatch
2023-06-21 13:45:04 +03:00
Dmitry Arkhipov
8957955af4
restore object storage on failed range insert
2023-06-14 09:53:18 +03:00
Dmitry Arkhipov
c4329519cd
do not reserve preemptively in object
2023-06-14 09:36:09 +03:00
Dmitry Arkhipov
4700500920
use Charconv for precise parsing
2023-06-13 16:50:11 +03:00
Dmitry Arkhipov
3956bdbb78
fix asan failures
...
Changes to array sizes in tests are due to asan bug.
2023-06-07 14:12:57 +03:00
Dmitry Arkhipov
be759c5051
only throw system_error
2023-06-02 16:23:08 +03:00
Dmitry Arkhipov
51d86cdd12
option to allow Infinity and NaN literals
2023-06-02 11:53:40 +03:00
Dmitry Arkhipov
f3e6f87f0e
inline make_error_code
2023-06-02 11:35:57 +03:00
Dmitry Arkhipov
35dc1b964e
support parse options in stream operator
2023-06-02 07:30:47 +03:00
Dmitry Arkhipov
b9e8b2edfe
contextual conversions
2023-06-01 21:45:56 +03:00
Dmitry Arkhipov
c3729e828a
refactor conversion implementation
2023-06-01 20:22:44 +03:00
Dmitry Arkhipov
6a12c32218
support serialization options in stream operator
2023-05-27 12:18:11 +03:00
Dmitry Arkhipov
e4fb714746
option for serialization of special numbers
2023-05-27 11:42:24 +03:00
Dmitry Arkhipov
ac9080ca0e
fast path for parsing literals
2023-05-26 20:32:18 +03:00
Dmitry Arkhipov
642a9ee8ff
option for precise number parsing
2023-05-22 17:57:48 +03:00
Dmitry Arkhipov
a99292b9ea
remove unreachable code
2023-05-21 16:45:18 +03:00
Dmitry Arkhipov
0ae7c87a65
refactor handling of literals in parser
2023-05-21 16:37:01 +03:00
Dmitry Arkhipov
e7c646e23e
remove unnecessary template parameter
2023-05-19 22:27:36 +03:00
Dmitry Arkhipov
8fb4af79d6
remove atavisitic note
2023-05-19 22:27:36 +03:00
Dmitry Arkhipov
7fe943120a
remove handling of impossible parser state
2023-05-19 22:27:36 +03:00
Dmitry Arkhipov
9f2abf1c79
remove unnecessary doc states
2023-05-19 22:27:36 +03:00
Dmitry Arkhipov
7053124c57
change inserter to use member end()
2023-05-17 21:50:38 +03:00
Dmitry Arkhipov
94c5d74710
document string SBO
2023-04-02 21:24:19 +03:00
Dmitry Arkhipov
87b97a0990
a JSON to a JSON text
2023-03-27 13:00:59 +03:00
Dmitry Arkhipov
274901f348
fix template parameter docs for make_shared_resource
2023-03-27 13:00:59 +03:00
Dmitry Arkhipov
89bc551d82
clarify what default memory resource is
2023-03-27 13:00:59 +03:00
Dmitry Arkhipov
9b06d4a410
fix suspend inside escape
2023-03-25 16:24:47 +03:00
Dmitry Arkhipov
4d4d5fc14e
non-allocating category messages
2023-03-01 12:36:20 +03:00
Dmitry Arkhipov
33d733d13c
replace Bool with T
...
X defines the macro Bool and this breaks a build if JSON headers are
included afterwards
2023-02-12 17:42:49 +03:00
Vinnie Falco
22c1b391d4
use alignment facilities from Core and Align
2023-01-28 15:15:10 +03:00
Vinnie Falco
c06b17aab8
caller provided serializer storage
2023-01-27 20:41:15 +03:00
Dmitry Arkhipov
607b21d827
default source_location argument for throwing functions
2023-01-09 15:36:02 +03:00
Dmitry Arkhipov
36552f0c94
remove namespace macros
2023-01-02 18:41:01 +03:00
Dmitry Arkhipov
8659e7d694
value_to supports missing elements for std::optional
2023-01-02 14:09:40 +03:00
Dmitry Arkhipov
a210032263
set_at_pointer
2023-01-02 13:22:28 +03:00
Dmitry Arkhipov
c6508328c8
implement std::hash support via boost::hash
2023-01-02 12:37:41 +03:00
Dmitry Arkhipov
73946424a3
add boost::hash support
2023-01-02 12:37:41 +03:00
Max Kellermann
0f987f07d7
basic_parser: make sentinel() return a unique pointer
...
Right now, sentinel() casts the `basic_parser` pointer (`this`) to
`const char *`, but that pointer is not unique if the input buffer
happens to be placed right before the `basic_parser_impl` instance -
the end of that buffer then has the same address as `basic_parser`.
Example code:
```
struct {
char buffer[8]{"{\"12345\""};
boost::json::stream_parser p;
} s;
s.p.write(s.buffer, sizeof(s.buffer));
s.p.write(":0}", 3);
```
This stops parsing at the end of the buffer, and then the
`incomplete()` check in `parse_string()` will return true; the second
`write()` call will crash with assertion failure:
> boost/json/basic_parser_impl.hpp:1016: const char* boost::json::basic_parser<Handler>::parse_unescaped(const char*, std::integral_constant<bool, StackEmpty_>, std::integral_constant<bool, AllowComments_>, bool) [with bool StackEmpty_ = true; bool IsKey_ = true; Handler = boost::json::detail::handler]: Assertion `*cs == '\x22'' failed.
This changes `sentinel()` by adding 1 to guaranteed that the sentinel
pointer is unique even if the input buffers borders on this object.
2022-12-30 15:18:00 +01:00
Dmitry Arkhipov
6af3a5e05c
guard std::min from windows.h
2022-12-19 22:58:47 +03:00
Dmitry Arkhipov
893df142b6
fix value_from support for proxy iterators
2022-11-20 19:25:35 +03:00