@@ -33,19 +33,15 @@ static void parse_and_validate(const std::string src, T expected) {
3333 std::cout << " src: " << src << " , " ;
3434 const padded_string pstr{src};
3535 simdjson::document::parser parser;
36- auto [pj, error] = parser.parse (pstr);
37- if (error) {
38- printf (" could not parse\n " );
39- abort ();
40- }
41-
4236
4337 bool result;
4438 if constexpr (std::is_same<int64_t , T>::value) {
45- int64_t actual = pj.root ().as_object ()[" key" ].as_int64_t ();
39+ auto [actual, error] = parser.parse (pstr).as_object ()[" key" ].as_int64_t ();
40+ if (error) { std::cerr << error << std::endl; abort (); }
4641 result = (expected == actual);
4742 } else {
48- uint64_t actual = pj.root ().as_object ()[" key" ].as_uint64_t ();
43+ auto [actual, error] = parser.parse (pstr).as_object ()[" key" ].as_uint64_t ();
44+ if (error) { std::cerr << error << std::endl; abort (); }
4945 result = (expected == actual);
5046 }
5147 std::cout << std::boolalpha << " test: " << result << std::endl;
@@ -59,31 +55,20 @@ static bool parse_and_check_signed(const std::string src) {
5955 std::cout << " src: " << src << " , expecting signed" << std::endl;
6056 const padded_string pstr{src};
6157 simdjson::document::parser parser;
62- auto [pj, error] = parser.parse (pstr);
63- if (error) {
64- printf (" could not parse\n " );
65- abort ();
66- }
67- auto [v,e] = pj.root ().as_object ()[" key" ];
68- return v.is_integer () && v.is_number ();
58+ auto [value, error] = parser.parse (pstr).as_object ()[" key" ];
59+ if (error) { std::cerr << error << std::endl; abort (); }
60+ return value.is_integer () && value.is_number ();
6961}
7062
71-
7263static bool parse_and_check_unsigned (const std::string src) {
7364 std::cout << " src: " << src << " , expecting signed" << std::endl;
7465 const padded_string pstr{src};
7566 simdjson::document::parser parser;
76- auto [pj, error] = parser.parse (pstr);
77- if (error) {
78- printf (" could not parse\n " );
79- abort ();
80- }
81- auto [v,e] = pj.root ().as_object ()[" key" ];
82- return v.is_unsigned_integer () && v.is_number ();
67+ auto [value, error] = parser.parse (pstr).as_object ()[" key" ];
68+ if (error) { std::cerr << error << std::endl; abort (); }
69+ return value.is_unsigned_integer () && value.is_number ();
8370}
8471
85-
86-
8772int main () {
8873 using std::numeric_limits;
8974 constexpr auto int64_max = numeric_limits<int64_t >::max ();
0 commit comments