Daniel Lemire
b3a22bea56
My third attempt at fixing issue 1521 (not being merged due to performance concerns) ( #1530 )
...
* Reduction of the missing-key bug.
* Adding the other test cases.
* Really simple fix for 1529
2021-04-05 11:55:39 -04:00
Daniel Lemire
d0821adf0e
This implements string serialization for On Demand instances. ( #1527 )
...
* This implementations string serialization for On Demand instances.
* Adding more documentation.
* Another remark.
* Marking the new functions as inline.
* casts apparently do not work.
* Upgrading the API.
* Making the code really free from exceptions.
* At another fix for exceptionless.
* Modify to_chars so that it does not pad integers with '.0'.
* Negative 0 cannot be expressed as an integer.
* Again, accomodating exceptionless usage.
* Using x <= -0 does not allow you to determine the sign since 0 <= -0. I am not sure where
this bug comes from.
2021-04-01 11:25:00 -04:00
Daniel Lemire
a6576f1d09
We should be able to open empty files (paranoid test) ( #1519 )
...
* We should be able to open empty files.
* Testing also the ondemand API.
2021-03-26 11:43:40 -04:00
Daniel Lemire
95b4870e20
Avoiding stack allocation. ( #1515 )
2021-03-23 11:32:04 -04:00
Daniel Lemire
ddf610125f
Easy fix. ( #1507 )
2021-03-19 19:53:22 -04:00
Daniel Lemire
8e8fbc4cff
fixing issue 1480 ( #1485 )
2021-03-08 19:31:42 -05:00
John Keiser
bad582c2d3
Add value.raw_json_token()
2021-03-05 09:07:41 -08:00
John Keiser
f0e92e3bdd
Pass "capacity" straight to iterate, support std::string
2021-03-03 12:51:00 -08:00
John Keiser
3db1a214ce
Support user-provided buffers via promise_padded
2021-03-03 12:50:56 -08:00
John Keiser
9944db6d73
Move json_type to ondemand to prevent target mismatch inline errors
2021-03-02 18:31:17 -08:00
John Keiser
2ed24666b5
Add value.type()
2021-03-02 17:02:50 -08:00
John Keiser
bcab8d3abf
Check for end object/array at top level
...
This avoids a very unlikely buffer overrun that can occur in a particular kind of invalid JSON:
- the document is invalid with an unclosed top level array or object
- the last thing in the document is a number that ends at EOF
- the padding is filled entirely with numeric digits
2021-02-22 09:35:21 -08:00
John Keiser
74d6658f39
Make out of order iteration tests actually test errors in the loop
2021-02-21 11:43:36 -08:00
John Keiser
3076de0405
Use SIMDJSON_DEVELOPMENT_CHECKS instead of SIMDJSON_PRODUCTION
...
Don't enable in retail
2021-02-20 11:46:01 -08:00
John Keiser
4a0a0ed4c6
Split more tests into separate methods
2021-02-20 11:22:24 -08:00
John Keiser
9651efe626
Split up tests for compile times
2021-02-06 11:07:14 -08:00
John Keiser
14315ec5cd
Default SIMDJSON_PRODUCTION to OFF for bare header usage
2021-02-06 11:06:37 -08:00
John Keiser
a33bf40a7d
Add tests for sibling indexing detection
2021-02-05 16:39:52 -08:00
John Keiser
3801ea7777
Disable all OUT_OF_ORDER_ITERATION checks when SIMDJSON_API_USAGE_CHECKS
...
is off
2021-02-05 16:39:44 -08:00
John Keiser
e4626d233c
Descend into fields at the value position, not the key
2021-02-05 10:18:01 -08:00
John Keiser
9934f65987
Store start index of each depth for safety
2021-02-05 10:17:28 -08:00
John Keiser
1bfbb6448a
Check out-of-order error in object index
2021-01-26 20:49:14 -08:00
John Keiser
fe726b0f80
Split up ondemand_dom_api_tests for sanitize build times
2021-01-26 19:42:37 -08:00
John Keiser
18ecc0032d
Reenable test that is now working
2021-01-26 15:15:09 -08:00
John Keiser
1a1532c8cc
Return INCORRECT_TYPE when numbers fail to parse
...
Also add tests for trying to get multiple types in a row
2021-01-26 14:59:13 -08:00
John Keiser
e6d2b7759a
Fix assertion when getting array after failing to get a scalar
...
Also remove distinction between & and && for array start, acting like
other types
2021-01-26 14:09:54 -08:00
Daniel Lemire
2a714f4e37
Hide the std::pair inheritance in our result instances ( #1396 )
...
* Fixing issue 1243
* The tie must go.
* Having std::pair be a protected inheritance breaks on demand.
* Putting it back.
* You really want to use emplace.
* Fixing one botched test.
* Prettier test.
* Using safer code.
* Fixing unsafe code.
* Simplifying the fuzzer.
* Trying another way.
* Ok. It should work without exceptions.
* Removing trailing spaces.
2021-01-18 12:00:02 -05:00
John Keiser
55faf4c5bc
Recommend simdjson::ondemand over simdjson::builtin::ondemand ( #1380 )
...
Co-authored-by: Daniel Lemire <lemire@gmail.com>
2021-01-14 17:33:49 -05:00
John Keiser
3279c2f15b
Remove unnecessary "try_get_XXX" methods
...
Also don't distinguish between & and && (instead, advance the first time
you encounter a scalar no matter what)
2021-01-11 15:19:26 -08:00
John Keiser
0f515785c6
Support reading scalars out of order
2021-01-11 15:17:46 -08:00
John Keiser
0039c5b981
Disallow parser.iterate("1"_padded), as it won't work
2021-01-01 19:18:00 -08:00
John Keiser
17f4f82827
Ondemand usage docs (and associated tests)
...
Also disallowed parsing a temporary padded_string, since the JSON *must*
live through the whole parse.
2021-01-01 19:17:58 -08:00
John Keiser
158a3c53d8
Merge pull request #1351 from simdjson/jkeiser/unordered-lookup
...
Make `object["field"]` order-insensitive in On Demand
2020-12-24 13:33:09 -08:00
John Keiser
041d59cc17
Create acceptance_tests, all_tests, etc. make targets
...
And use them for mingw build and test
2020-12-23 09:14:45 -08:00
John Keiser
a405173d59
Break up ondemand_basictests into smaller executables
...
(Allows for faster compilation speeds)
2020-12-23 09:14:44 -08:00
John Keiser
ad4f718e0c
Make assert test succeed (not run anything) in Release builds
2020-12-21 10:52:01 -08:00
John Keiser
a1cf588d5f
Fix GCC 7 warning when inlining does its job
2020-12-21 09:19:07 -08:00
John Keiser
195acc3e45
Add find_field / find_field_unordered to object
2020-12-20 11:39:50 -08:00
John Keiser
b8426584fc
Make field lookup order-insensitive.
2020-12-19 13:57:29 -08:00
John Keiser
d670906ff3
Don't keep a separate at_start boolean in object
2020-12-15 11:29:31 -08:00
John Keiser
f9c6dedca1
Add test for out-of-order parse asserts
2020-12-13 13:39:47 -08:00
John Keiser
806cb39103
Clean up some more benchmark/test code
2020-12-07 13:44:58 -08:00
John Keiser
3aa3175378
Add tests for recovering from partial child iteration
2020-12-06 16:19:06 -08:00
John Keiser
4c63956624
Enable object["x"]["y"]
2020-12-06 15:23:52 -08:00
John Keiser
c89647af9e
Make all values use same underlying iterator
2020-12-06 15:23:52 -08:00
John Keiser
1303a88769
Unconditionally track depth
2020-12-06 15:23:52 -08:00
Paul Dreik
af4db55e66
remove trailing whitespace ( #1284 )
2020-11-03 21:48:09 +01:00
Paul Dreik
47669566da
fix unintended early return in ondemand unit test loops ( #1263 )
...
fix uninteded early return in ondemand unit test loops
go through and fix warnings appearing in qtcreator,
qualify with std::, add const, abort on error
get rid of ulp_distance, not needed anymore when parsing is exact
2020-11-01 19:08:40 +01:00
Paul Dreik
0b82f07115
fix segfault in numberparsing #1273 ( #1274 )
...
This was a read overflow.
2020-11-01 18:27:21 +01:00
Daniel Lemire
14039d05a9
Adding a new benchmark for ondemand: distinct user id ( #1239 )
...
* Adding a distinct user id benchmark
* reenabling everything
* Removing an unnecessary "value()".
* Better tests of the examples and some fixes.
* Guarding exception code.
2020-10-23 08:47:01 -04:00