1// TODO Remove this -- deprecated API and files
2
3#ifndef SIMDJSON_DOM_JSONPARSER_H
4#define SIMDJSON_DOM_JSONPARSER_H
5
6#include "simdjson/dom/document.h"
7#include "simdjson/dom/parsedjson.h"
8#include "simdjson/jsonioutil.h"
9
10namespace simdjson {
11
12//
13// C API (json_parse and build_parsed_json) declarations
14//
15
16#ifndef SIMDJSON_DISABLE_DEPRECATED_API
17[[deprecated("Use parser.parse() instead")]]
18inline int json_parse(const uint8_t *buf, size_t len, dom::parser &parser, bool realloc_if_needed = true) noexcept {
19 error_code code = parser.parse(buf, len, realloc_if_needed).error();
20 // The deprecated json_parse API is a signal that the user plans to *use* the error code / valid
21 // bits in the parser instead of heeding the result code. The normal parser unsets those in
22 // anticipation of making the error code ephemeral.
23 // Here we put the code back into the parser, until we've removed this method.
24 parser.valid = code == SUCCESS;
25 parser.error = code;
26 return code;
27}
28[[deprecated("Use parser.parse() instead")]]
29inline int json_parse(const char *buf, size_t len, dom::parser &parser, bool realloc_if_needed = true) noexcept {
30 error_code code = parser.parse(buf, len, realloc_if_needed).error();
31 // The deprecated json_parse API is a signal that the user plans to *use* the error code / valid
32 // bits in the parser instead of heeding the result code. The normal parser unsets those in
33 // anticipation of making the error code ephemeral.
34 // Here we put the code back into the parser, until we've removed this method.
35 parser.valid = code == SUCCESS;
36 parser.error = code;
37 return code;
38}
39[[deprecated("Use parser.parse() instead")]]
40inline int json_parse(const std::string &s, dom::parser &parser, bool realloc_if_needed = true) noexcept {
41 error_code code = parser.parse(buf: s.data(), len: s.length(), realloc_if_needed).error();
42 // The deprecated json_parse API is a signal that the user plans to *use* the error code / valid
43 // bits in the parser instead of heeding the result code. The normal parser unsets those in
44 // anticipation of making the error code ephemeral.
45 // Here we put the code back into the parser, until we've removed this method.
46 parser.valid = code == SUCCESS;
47 parser.error = code;
48 return code;
49}
50[[deprecated("Use parser.parse() instead")]]
51inline int json_parse(const padded_string &s, dom::parser &parser) noexcept {
52 error_code code = parser.parse(s).error();
53 // The deprecated json_parse API is a signal that the user plans to *use* the error code / valid
54 // bits in the parser instead of heeding the result code. The normal parser unsets those in
55 // anticipation of making the error code ephemeral.
56 // Here we put the code back into the parser, until we've removed this method.
57 parser.valid = code == SUCCESS;
58 parser.error = code;
59 return code;
60}
61
62[[deprecated("Use parser.parse() instead")]]
63simdjson_warn_unused inline dom::parser build_parsed_json(const uint8_t *buf, size_t len, bool realloc_if_needed = true) noexcept {
64 dom::parser parser;
65 error_code code = parser.parse(buf, len, realloc_if_needed).error();
66 // The deprecated json_parse API is a signal that the user plans to *use* the error code / valid
67 // bits in the parser instead of heeding the result code. The normal parser unsets those in
68 // anticipation of making the error code ephemeral.
69 // Here we put the code back into the parser, until we've removed this method.
70 parser.valid = code == SUCCESS;
71 parser.error = code;
72 return parser;
73}
74[[deprecated("Use parser.parse() instead")]]
75simdjson_warn_unused inline dom::parser build_parsed_json(const char *buf, size_t len, bool realloc_if_needed = true) noexcept {
76 dom::parser parser;
77 error_code code = parser.parse(buf, len, realloc_if_needed).error();
78 // The deprecated json_parse API is a signal that the user plans to *use* the error code / valid
79 // bits in the parser instead of heeding the result code. The normal parser unsets those in
80 // anticipation of making the error code ephemeral.
81 // Here we put the code back into the parser, until we've removed this method.
82 parser.valid = code == SUCCESS;
83 parser.error = code;
84 return parser;
85}
86[[deprecated("Use parser.parse() instead")]]
87simdjson_warn_unused inline dom::parser build_parsed_json(const std::string &s, bool realloc_if_needed = true) noexcept {
88 dom::parser parser;
89 error_code code = parser.parse(buf: s.data(), len: s.length(), realloc_if_needed).error();
90 // The deprecated json_parse API is a signal that the user plans to *use* the error code / valid
91 // bits in the parser instead of heeding the result code. The normal parser unsets those in
92 // anticipation of making the error code ephemeral.
93 // Here we put the code back into the parser, until we've removed this method.
94 parser.valid = code == SUCCESS;
95 parser.error = code;
96 return parser;
97}
98[[deprecated("Use parser.parse() instead")]]
99simdjson_warn_unused inline dom::parser build_parsed_json(const padded_string &s) noexcept {
100 dom::parser parser;
101 error_code code = parser.parse(s).error();
102 // The deprecated json_parse API is a signal that the user plans to *use* the error code / valid
103 // bits in the parser instead of heeding the result code. The normal parser unsets those in
104 // anticipation of making the error code ephemeral.
105 // Here we put the code back into the parser, until we've removed this method.
106 parser.valid = code == SUCCESS;
107 parser.error = code;
108 return parser;
109}
110#endif // SIMDJSON_DISABLE_DEPRECATED_API
111
112/** @private We do not want to allow implicit conversion from C string to std::string. */
113int json_parse(const char *buf, dom::parser &parser) noexcept = delete;
114/** @private We do not want to allow implicit conversion from C string to std::string. */
115dom::parser build_parsed_json(const char *buf) noexcept = delete;
116
117} // namespace simdjson
118
119#endif // SIMDJSON_DOM_JSONPARSER_H
120