26#ifndef ROUTER_SRC_REST_MRS_SRC_HELPER_JSON_RAPID_JSON_TO_STRUCT_H_ 
   27#define ROUTER_SRC_REST_MRS_SRC_HELPER_JSON_RAPID_JSON_TO_STRUCT_H_ 
   34#include <rapidjson/reader.h> 
   48template <
typename UserResult>
 
   50    : 
public rapidjson::BaseReaderHandler<
 
   51          rapidjson::UTF8<>, RapidReaderHandlerToStruct<UserResult>> {
 
   54      rapidjson::kParseNumbersAsStringsFlag};
 
   58      rapidjson::BaseReaderHandler<rapidjson::UTF8<>,
 
   60  using Ch = 
typename Parent::Ch;
 
   96  virtual bool Int(
int) {
 
  143    if (!
keys_.empty()) {
 
  144      auto &b = 
keys_.back();
 
  177    if (!
keys_.empty()) {
 
  178      auto &b = 
keys_.back();
 
  198      if (
key.name.empty()) 
continue;
 
  241template <
typename UserResult>
 
  249                                   std::string &&
value) = 0;
 
Definition: rapid_json_to_struct.h:243
 
virtual void handle_array_value(const std::string &, std::string &&)
Definition: rapid_json_to_struct.h:251
 
void handle_value(std::string &&vt)
Definition: rapid_json_to_struct.h:253
 
bool RawNumber(const Ch *v, rapidjson::SizeType v_len, bool) override
enabled via kParseNumbersAsStringsFlag, string is not null-terminated (use length)
Definition: rapid_json_to_struct.h:267
 
virtual void handle_object_value(const std::string &key, std::string &&value)=0
 
bool String(const Ch *v, rapidjson::SizeType v_len, bool) override
Definition: rapid_json_to_struct.h:262
 
bool Bool(bool v) override
Definition: rapid_json_to_struct.h:272
 
This class is a adapter for Reader from RapidJson.
Definition: rapid_json_to_struct.h:51
 
constexpr static rapidjson::ParseFlag k_parse_flags
Definition: rapid_json_to_struct.h:53
 
bool is_array_value()
Definition: rapid_json_to_struct.h:191
 
virtual bool Double(double)
Definition: rapid_json_to_struct.h:116
 
const UserResult & get_result()
Definition: rapid_json_to_struct.h:66
 
virtual bool Bool(bool)
Definition: rapid_json_to_struct.h:86
 
KeyValue key_
Definition: rapid_json_to_struct.h:236
 
KeyValue & get_parent_key()
Definition: rapid_json_to_struct.h:225
 
int arrays_
Definition: rapid_json_to_struct.h:238
 
virtual void empty_object()
Definition: rapid_json_to_struct.h:121
 
rapidjson::BaseReaderHandler< rapidjson::UTF8<>, RapidReaderHandlerToStruct< UserResult > > Parent
Definition: rapid_json_to_struct.h:59
 
int get_level() const
Definition: rapid_json_to_struct.h:192
 
RapidReaderHandlerToStruct(const std::string &separator=".")
Definition: rapid_json_to_struct.h:61
 
bool StartArray()
Definition: rapid_json_to_struct.h:161
 
std::list< KeyValue > get_keys() const
Definition: rapid_json_to_struct.h:216
 
typename Parent::Ch Ch
Definition: rapid_json_to_struct.h:60
 
int level_
Definition: rapid_json_to_struct.h:237
 
uint64_t values_processed_
Definition: rapid_json_to_struct.h:234
 
bool Key(const Ch *str, rapidjson::SizeType len, bool)
Definition: rapid_json_to_struct.h:154
 
virtual bool on_new_value()
Definition: rapid_json_to_struct.h:68
 
virtual bool Int64(int64_t)
Definition: rapid_json_to_struct.h:106
 
virtual ~RapidReaderHandlerToStruct()=default
 
virtual bool Uint64(uint64_t)
Definition: rapid_json_to_struct.h:111
 
virtual bool Null()
Definition: rapid_json_to_struct.h:81
 
virtual bool String(const Ch *, rapidjson::SizeType, bool)
Definition: rapid_json_to_struct.h:91
 
const std::string separator_
Definition: rapid_json_to_struct.h:205
 
bool is_object_path()
Definition: rapid_json_to_struct.h:190
 
bool StartObject()
Definition: rapid_json_to_struct.h:132
 
virtual bool RawNumber(const Ch *, rapidjson::SizeType, bool)
enabled via kParseNumbersAsStringsFlag, string is not null-terminated (use length)
Definition: rapid_json_to_struct.h:127
 
bool EndObject(rapidjson::SizeType)
Definition: rapid_json_to_struct.h:141
 
UserResult Result
Definition: rapid_json_to_struct.h:65
 
UserResult result_
Definition: rapid_json_to_struct.h:188
 
std::list< KeyValue > keys_
Definition: rapid_json_to_struct.h:235
 
virtual bool Uint(unsigned)
Definition: rapid_json_to_struct.h:101
 
bool EndArray(rapidjson::SizeType)
Definition: rapid_json_to_struct.h:174
 
virtual bool Int(int)
Definition: rapid_json_to_struct.h:96
 
virtual void empty_array()
Definition: rapid_json_to_struct.h:123
 
std::string get_current_key() const
Definition: rapid_json_to_struct.h:194
 
static uint keys
Definition: hp_test2.cc:49
 
static const char separator
Definition: item_func.cc:4517
 
static std::string to_string(const LEX_STRING &str)
Definition: lex_string.h:50
 
Define rapidjson::SizeType to be std::uint64_t.
 
std::string str(const mysqlrouter::ConfigGenerator::Options::Endpoint &ep)
Definition: config_generator.cc:1078
 
ValueType value(const std::optional< ValueType > &v)
Definition: gtid.h:83
 
const mysqlrouter::sqlstring k_empty
Definition: query_entries_content_file.cc:34
 
typedef::std::uint64_t SizeType
Definition: my_rapidjson_size_t.h:39
 
struct result result
Definition: result.h:34
 
required string key
Definition: replication_asynchronous_connection_failover.proto:60
 
Definition: rapid_json_to_struct.h:207
 
int level
Definition: rapid_json_to_struct.h:211
 
bool is_array
Definition: rapid_json_to_struct.h:209
 
bool leaf
Definition: rapid_json_to_struct.h:212
 
uint64_t processed
Definition: rapid_json_to_struct.h:213
 
int array_idx
Definition: rapid_json_to_struct.h:210
 
std::string name
Definition: rapid_json_to_struct.h:208