26#ifndef ROUTER_SRC_REST_MRS_SRC_HELPER_JSON_SERIALIZERTOTEXT_H_
27#define ROUTER_SRC_REST_MRS_SRC_HELPER_JSON_SERIALIZERTOTEXT_H_
33#include <rapidjson/document.h>
34#include <rapidjson/ostreamwrapper.h>
35#include <rapidjson/writer.h>
64 other.finalized_ =
true;
101 other.finalized_ =
true;
105 template <
typename Arr>
108 while (it != std::end(arr)) {
214 case JsonType::kNull:
234 rapidjson::StringBuffer json_buf;
236 rapidjson::Writer<rapidjson::StringBuffer> json_writer(json_buf);
238 value.Accept(json_writer);
241 return add_value(json_buf.GetString(), json_buf.GetLength(),
257 template <
typename Str1,
typename Str2>
264 template <
typename Str1,
typename Value>
270 template <
typename Str1>
278 template <
typename Str1>
286 template <
typename Str1>
298 template <
typename Value>
301 *this << (std::forward<Value>(
value));
304 template <
typename Value>
308 *
this << (
value.value());
312 template <
typename Value>
316 *
this << (
value.value());
Lightweight implementation of optional.
Definition: optional.h:39
Definition: serializer_to_text.h:85
SerializerToText * operator->()
Definition: serializer_to_text.h:93
Array & add(const Arr &arr)
Definition: serializer_to_text.h:106
Array(Array &&other)
Definition: serializer_to_text.h:87
void initialize()
Definition: serializer_to_text.h:117
Array & operator=(Array &&other)
Definition: serializer_to_text.h:97
bool finalized_
Definition: serializer_to_text.h:130
void finalize()
Definition: serializer_to_text.h:123
bool is_usable() const
Definition: serializer_to_text.h:95
SerializerToText * serializer_
Definition: serializer_to_text.h:129
Array(SerializerToText *serializer=nullptr)
Definition: serializer_to_text.h:88
SerializerToText & operator*()
Definition: serializer_to_text.h:94
~Array()
Definition: serializer_to_text.h:91
Definition: serializer_to_text.h:47
void finalize()
Definition: serializer_to_text.h:68
bool is_usable() const
Definition: serializer_to_text.h:58
Object(Object &&other)
Definition: serializer_to_text.h:49
~Object()
Definition: serializer_to_text.h:55
SerializerToText * serializer_
Definition: serializer_to_text.h:81
SerializerToText * operator->()
Definition: serializer_to_text.h:57
bool finalized_
Definition: serializer_to_text.h:82
Object & operator=(Object &&other)
Definition: serializer_to_text.h:60
void initialize()
Definition: serializer_to_text.h:75
Object(SerializerToText *serializer=nullptr)
Definition: serializer_to_text.h:51
Definition: serializer_to_text.h:45
void add_member_impl(const char *key, helper::Optional< Value > &value)
Definition: serializer_to_text.h:305
void flush()
Definition: serializer_to_text.h:245
SerializerToText & add_value(const char *value, JsonType ct=JsonType::kString)
Definition: serializer_to_text.h:197
void add_member_impl(const char *key, const helper::Optional< Value > &value)
Definition: serializer_to_text.h:313
SerializerToText & operator<<(const uint64_t value)
Definition: serializer_to_text.h:170
SerializerToText & member_add_value(const Str1 &key, Value &&value)
Definition: serializer_to_text.h:265
SerializerToText & operator<<(const char *value)
Definition: serializer_to_text.h:145
std::string get_result()
Definition: serializer_to_text.h:137
const char * get_raw(const std::string &value)
Definition: serializer_to_text.h:295
void add_member_impl(const char *key, const char *value, JsonType ct)
Definition: serializer_to_text.h:320
SerializerToText & member_add_value(const Str1 &key, const char *str, uint32_t len, JsonType ct)
Definition: serializer_to_text.h:279
SerializerToText & operator<<(const int value)
Definition: serializer_to_text.h:160
const char * get_raw(const char *value)
Definition: serializer_to_text.h:294
SerializerToText & operator<<(const int64_t value)
Definition: serializer_to_text.h:180
Object add_object()
Definition: serializer_to_text.h:142
std::stringstream value_
Definition: serializer_to_text.h:326
SerializerToText(const bool bigint_encode_as_string=false)
Definition: serializer_to_text.h:134
rapidjson::Writer< rapidjson::OStreamWrapper > writer_
Definition: serializer_to_text.h:328
SerializerToText & member_add_null_value(const Str1 &key)
Definition: serializer_to_text.h:287
SerializerToText & member_add_value(const Str1 &key, const Str2 &value, JsonType ct)
Definition: serializer_to_text.h:258
SerializerToText & operator<<(const unsigned int value)
Definition: serializer_to_text.h:165
void add_member_impl(const char *key, Value &&value)
Definition: serializer_to_text.h:299
Array member_add_array(const char *key)
Definition: serializer_to_text.h:247
SerializerToText & operator<<(const float value)
Definition: serializer_to_text.h:155
Array add_array()
Definition: serializer_to_text.h:143
SerializerToText & operator<<(const std::string &value)
Definition: serializer_to_text.h:150
rapidjson::OStreamWrapper ostream_
Definition: serializer_to_text.h:327
bool bigint_encode_as_string_
Definition: serializer_to_text.h:325
Object member_add_object(const char *key)
Definition: serializer_to_text.h:252
SerializerToText & member_add_value(const Str1 &key, const char *str, uint32_t len)
Definition: serializer_to_text.h:271
SerializerToText & add_value(const char *value, uint32_t length, JsonType ct)
Definition: serializer_to_text.h:202
SerializerToText & add_value(const rapidjson::Value &value)
Definition: serializer_to_text.h:233
const char * get_raw(const bool value)
Definition: serializer_to_text.h:296
SerializerToText & operator<<(const bool value)
Definition: serializer_to_text.h:192
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:1084
MysqlCacheManager::Object Object
Definition: mysql_cache_manager.cc:101
bool length(const dd::Spatial_reference_system *srs, const Geometry *g1, double *length, bool *null) noexcept
Computes the length of linestrings and multilinestrings.
Definition: length.cc:76
JsonType
Definition: mysql_column_types.h:35
@ kBool
Definition: mysql_column_types.h:35
@ kJson
Definition: mysql_column_types.h:35
@ kBlob
Definition: mysql_column_types.h:35
@ kNumeric
Definition: mysql_column_types.h:35
@ kObject
Definition: mysql_column_types.h:35
@ kString
Definition: mysql_column_types.h:35
ValueType value(const std::optional< ValueType > &v)
Definition: gtid.h:83
const char * begin(const char *const c)
Definition: base64.h:44
@ Array
C++ Object.
Definition: jit_executor_value.h:67
required string key
Definition: replication_asynchronous_connection_failover.proto:60