simdjson  3.11.0
Ridiculously Fast JSON
raw_json_string.h
1 #ifndef SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_H
2 
3 #ifndef SIMDJSON_CONDITIONAL_INCLUDE
4 #define SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_H
5 #include "simdjson/generic/ondemand/base.h"
6 #include "simdjson/generic/implementation_simdjson_result_base.h"
7 #endif // SIMDJSON_CONDITIONAL_INCLUDE
8 
9 namespace simdjson {
10 namespace SIMDJSON_IMPLEMENTATION {
11 namespace ondemand {
12 
37 public:
43  simdjson_inline raw_json_string() noexcept = default;
44 
52  simdjson_inline raw_json_string(const uint8_t * _buf) noexcept;
59  simdjson_inline const char * raw() const noexcept;
60 
75  simdjson_inline bool unsafe_is_equal(size_t length, std::string_view target) const noexcept;
76 
92  simdjson_inline bool unsafe_is_equal(std::string_view target) const noexcept;
93 
106  simdjson_inline bool unsafe_is_equal(const char* target) const noexcept;
107 
112  simdjson_inline bool is_equal(std::string_view target) const noexcept;
113 
118  simdjson_inline bool is_equal(const char* target) const noexcept;
119 
125  static simdjson_inline bool is_free_from_unescaped_quote(std::string_view target) noexcept;
126  static simdjson_inline bool is_free_from_unescaped_quote(const char* target) noexcept;
127 
128 private:
129 
130 
135  simdjson_inline void consume() noexcept { buf = nullptr; }
136 
140  simdjson_inline simdjson_warn_unused bool alive() const noexcept { return buf != nullptr; }
141 
153  simdjson_inline simdjson_warn_unused simdjson_result<std::string_view> unescape(json_iterator &iter, bool allow_replacement) const noexcept;
154 
165  simdjson_inline simdjson_warn_unused simdjson_result<std::string_view> unescape_wobbly(json_iterator &iter) const noexcept;
166  const uint8_t * buf{};
167  friend class object;
168  friend class field;
169  friend class parser;
170  friend struct simdjson_result<raw_json_string>;
171 };
172 
173 simdjson_unused simdjson_inline std::ostream &operator<<(std::ostream &, const raw_json_string &) noexcept;
174 
179 simdjson_unused simdjson_inline bool operator==(const raw_json_string &a, std::string_view c) noexcept;
180 simdjson_unused simdjson_inline bool operator==(std::string_view c, const raw_json_string &a) noexcept;
181 simdjson_unused simdjson_inline bool operator!=(const raw_json_string &a, std::string_view c) noexcept;
182 simdjson_unused simdjson_inline bool operator!=(std::string_view c, const raw_json_string &a) noexcept;
183 
184 
185 } // namespace ondemand
186 } // namespace SIMDJSON_IMPLEMENTATION
187 } // namespace simdjson
188 
189 namespace simdjson {
190 
191 template<>
192 struct simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string> : public SIMDJSON_IMPLEMENTATION::implementation_simdjson_result_base<SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string> {
193 public:
195  simdjson_inline simdjson_result(error_code error) noexcept;
196  simdjson_inline simdjson_result() noexcept = default;
197  simdjson_inline ~simdjson_result() noexcept = default;
198 
199  simdjson_inline simdjson_result<const char *> raw() const noexcept;
200  simdjson_inline simdjson_warn_unused simdjson_result<std::string_view> unescape(SIMDJSON_IMPLEMENTATION::ondemand::json_iterator &iter, bool allow_replacement) const noexcept;
201  simdjson_inline simdjson_warn_unused simdjson_result<std::string_view> unescape_wobbly(SIMDJSON_IMPLEMENTATION::ondemand::json_iterator &iter) const noexcept;
202 };
203 
204 } // namespace simdjson
205 
206 #endif // SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_H
A string escaped per JSON rules, terminated with quote (").
simdjson_inline bool is_equal(std::string_view target) const noexcept
This compares the current instance to the std::string_view target: returns true if they are byte-by-b...
static simdjson_inline bool is_free_from_unescaped_quote(std::string_view target) noexcept
Returns true if target is free from unescaped quote.
simdjson_inline raw_json_string() noexcept=default
Create a new invalid raw_json_string.
simdjson_inline const char * raw() const noexcept
Get the raw pointer to the beginning of the string in the JSON (just after the ").
simdjson_inline bool unsafe_is_equal(size_t length, std::string_view target) const noexcept
This compares the current instance to the std::string_view target: returns true if they are byte-by-b...
simdjson_unused simdjson_inline bool operator==(const raw_json_string &a, std::string_view c) noexcept
Comparisons between raw_json_string and std::string_view instances are potentially unsafe: the user i...
std::ostream & operator<<(std::ostream &out, json_type type) noexcept
Write the JSON type to the output stream.
Definition: json_type-inl.h:14
The top level simdjson namespace, containing everything the library provides.
Definition: base.h:8
error_code
All possible errors returned by simdjson.
Definition: error.h:19
The result of a simdjson operation that could fail.
Definition: error.h:215
simdjson_inline error_code error() const noexcept
The error.
Definition: error-inl.h:131
simdjson_inline T & value() &noexcept(false)
Get the result value.