Commit Graph

94 Commits

Author SHA1 Message Date
m-holger 9e90007a4a Add new private class JSON::Writer
Create a simple utility class for writing JSON to a pipeline.
2024-02-16 10:32:41 +00:00
Jay Berkenbilt b1b789df42 Detect end of input inside an unfinished JSON string 2024-02-06 15:30:29 -05:00
Jay Berkenbilt 7ae095fa09 Fix JSON parser error found by fuzz 2024-02-04 17:27:49 -05:00
m-holger b6a2b5d3c1 Handle default-constructed JSON objects 2024-01-18 10:06:43 +00:00
m-holger a41b789995 Add new method JSON::getDictItem 2024-01-15 15:02:52 +00:00
m-holger 5906dd5c1f Code tidy - Clang-Tidy rule modernize-use-default-member-init 2023-06-09 15:43:21 +01:00
m-holger 7bc0f1d828 Code tidy - Clang-Tidy rule modernize-use-emplace 2023-06-09 15:42:11 +01:00
m-holger 320bbb9854 Code tidy - Clang-Tidy rule modernize-return-braced-init-list 2023-06-09 15:35:56 +01:00
m-holger 698a70e6a8 Code tidy - reflow comments and strings 2023-05-27 10:54:19 +01:00
Jay Berkenbilt 60965d5f4d Rerun clang-format 2023-05-21 13:35:09 -04:00
m-holger 85d784952f Globally replace 'this->m->' with 'm->'
Using search and replace.
2023-05-21 14:42:34 +01:00
m-holger 2fa581537b Use auto when initializing with a cast 2023-05-20 15:41:44 +01:00
m-holger 0795b6952b Add new function QUtil::hex_decode_char 2023-03-23 20:23:37 +00:00
m-holger 7ae1e80fd6 Change JSON::Members::value to std::unique_ptr 2023-02-19 12:06:36 +00:00
m-holger a4f3dddb79 Change JSON_dictionary and JSON_array to store JSON objects rather than std::shared_ptr<JSON_value>
Recognise that JSON objects are effectively shared pointers to JSON_value.
2023-02-19 12:05:53 +00:00
Jay Berkenbilt e4e03e9ac1
Merge pull request #890 from m-holger/jpsp
Eliminate the use of shared pointers in JSONParser
2023-02-18 17:43:02 -05:00
m-holger d80b63c3c0 Refactor JSON type checks 2023-02-11 15:44:03 -05:00
m-holger b6f048546f Eliminate the use of shared pointers in JSONParser 2023-02-05 12:46:38 +00:00
m-holger f6c9019597 Add new methods JSONParser::append and ignore
Reduce boilerplate and increase efficiency by avoiding setting and
branching on action and ready in getToken.
2023-02-05 12:44:38 +00:00
m-holger 415e67951b Refactor JSON::encode_string 2023-02-04 15:06:43 -05:00
m-holger d3152869b6 In JSONParser::getToken handle structural and space chars early 2023-02-04 15:00:21 +00:00
m-holger ee32235f54 In JSONParser::getToken handle legal control chars early
Also, reject them in strings.
2023-02-04 15:00:21 +00:00
m-holger f5b7448a27 Extend scope of JSONParser::numberError and rename tokenError
Handle all incomplete token type errors in tokenError.
2023-02-04 14:55:49 +00:00
m-holger 5ac6a12e0a In JSONParser::getToken reject illegal control characters 2023-02-04 14:55:49 +00:00
m-holger 1b89e7684e Remove redundant template toO in JSON 2023-02-04 14:06:26 +00:00
m-holger 98d9ae51fc Integrate JSONParser::decode_string into getToken 2023-02-04 14:06:26 +00:00
m-holger 320245e0d1 In JSONParser::getToken decode escaped chars inside state ls_backslash
(except '\\' and '\uXXXX')
2023-02-04 14:06:26 +00:00
m-holger cee746fc15 In JSONParser::getToken avoid copying '"' characters in strings 2023-02-04 14:06:26 +00:00
m-holger a9a0667904 Make JSONParser::getToken responsible for decoding strings 2023-02-04 14:06:26 +00:00
m-holger 126dd31cad In JSONParser combine stacks 2023-02-04 13:53:23 +00:00
m-holger 6748bd33f7 In JSONParser::handleToken remove next_state 2023-02-04 13:53:23 +00:00
m-holger 29093a167b In JSONParser::handleToken refactor container creation 2023-02-04 13:53:23 +00:00
m-holger a39043f65e In JSONParser::handleToken avoid creating JSON objects for dictionary keys 2023-02-04 13:53:23 +00:00
m-holger f2e46c20b6 In JSONParser::handleToken move remaining validations into second switch statement 2023-02-04 13:53:23 +00:00
m-holger 0de032bcdd In JSONParser::handleToken simplify setting of start and end 2023-02-04 13:53:22 +00:00
m-holger 77ceebd6c9 In JSONParser::handleToken move processing for ls_end_array and ls_end_dict into switch statement 2023-02-04 13:53:22 +00:00
m-holger a7338ab15a In JSONParser::handleToken move processing for ls_colon and ls_comma into switch statement 2023-02-04 13:53:22 +00:00
m-holger 4dba3c95dd In JSONParser::handleToken move validation for ls_colon etc into switch statement 2023-02-04 13:53:22 +00:00
m-holger 6f94a3a89a In JSONParser::handleToken move string decoding into switch statement 2023-02-04 13:53:22 +00:00
m-holger fcc123a62a Avoid copying delimiters in JSONParser::getToken 2023-02-04 13:53:22 +00:00
m-holger bb89a60320 Add data member JSONParser::token_start 2023-02-04 13:52:55 +00:00
m-holger 39dfd305c8 In JSONParser add lexer states for delimiters 2023-02-04 13:44:39 +00:00
m-holger 1e0ab79aec Remove redundant JSONParser::before_point etc 2023-02-01 14:19:08 +00:00
m-holger 83f972ceda Refactor end of input handling in JSONParser 2023-02-01 14:18:57 +00:00
m-holger 8fd6e1c5b2 Refactor handling of ls_number in JSONParser::getToken
Reflect that the ls_number case only handles the digits after an 'e'.

Also, change state to ls_number for all 'ready' numbers.
2023-02-01 14:18:39 +00:00
m-holger 6ea543e6c7 In JSONParser add lex_state ls_number_e_sign 2023-02-01 14:12:32 +00:00
m-holger 04333bbc20 In JSONParser add lex_state ls_number_e
Also, allow 'E' as alternative to 'e'.
2023-02-01 14:09:39 +00:00
m-holger 972ebca505 In JSONParser add lex_state ls_number_after_point 2023-02-01 14:01:57 +00:00
m-holger cdd1f0a9f6 In JSONParser add lex_state ls_number_point
Also. remove '.' as  starting char in lsTop.
2023-02-01 14:01:57 +00:00
m-holger bfda62aeeb In JSONParser add lex_state ls_number_before_point 2023-02-01 14:01:57 +00:00