6#ifndef WIZARD_VALUE_TYPE_HELPERS_H
7#define WIZARD_VALUE_TYPE_HELPERS_H
9#include <unordered_map>
12namespace value_type_helpers {
27 const std::unordered_map<std::string, ValueType> _string_to_value_type = {
28 {
"int", ValueType::intType },
29 {
"uint", ValueType::uintType},
30 {
"bool", ValueType::boolType},
31 {
"float", ValueType::floatType},
32 {
"double", ValueType::doubleType},
33 {
"int64t", ValueType::int64tType},
34 {
"uint64t", ValueType::uint64tType},
35 {
"string", ValueType::stringType}
39 const std::unordered_map<ValueType, std::string> _value_type_to_string = {
40 { ValueType::intType,
"int" },
41 { ValueType::uintType,
"uint"},
42 { ValueType::boolType,
"bool"},
43 { ValueType::floatType,
"float"},
44 { ValueType::doubleType,
"double"},
45 { ValueType::int64tType,
"int64t"},
46 { ValueType::uint64tType,
"uint64t"},
47 { ValueType::stringType,
"string"},
51 static rapidjson::Value get_json_value(T val, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> &allocator);
54 static rapidjson::Value get_json_value_type(T val, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> &allocator);
58 get_json_value<bool>(
bool val, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> &allocator) {
59 return rapidjson::Value(val);
64 get_json_value<int>(
int val, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> &allocator) {
65 return rapidjson::Value(val);
70 get_json_value<float>(
float val, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> &allocator) {
71 return rapidjson::Value(val);
76 get_json_value<double>(
double val, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> &allocator) {
77 return rapidjson::Value(val);
82 get_json_value<unsigned int>(
unsigned int val, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> &allocator) {
83 return rapidjson::Value(val);
88 get_json_value<int64_t>(int64_t val, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> &allocator) {
89 return rapidjson::Value(val);
94 get_json_value<uint64_t>(uint64_t val, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> &allocator) {
95 return rapidjson::Value(val);
100 get_json_value<std::string>(std::string val, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> &allocator) {
101 rapidjson::Value json_val;
102 json_val.SetString(val.c_str(), allocator);
109 get_json_value_type<bool>(
bool val, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> &allocator) {
110 return rapidjson::Value(std::string(
"bool").c_str(), allocator);
115 get_json_value_type<int>(
int val, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> &allocator) {
116 return rapidjson::Value(std::string(
"int").c_str(), allocator);
121 get_json_value_type<float>(
float val, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> &allocator) {
122 return rapidjson::Value(std::string(
"float").c_str(), allocator);
127 get_json_value_type<double>(
double val, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> &allocator) {
128 return rapidjson::Value(std::string(
"double").c_str(), allocator);
133 get_json_value_type<unsigned int>(
unsigned int val, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> &allocator) {
134 return rapidjson::Value(std::string(
"unsigned int").c_str(), allocator);
139 get_json_value_type<int64_t>(int64_t val, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> &allocator) {
140 return rapidjson::Value(std::string(
"int64_t").c_str(), allocator);
145 get_json_value_type<uint64_t>(uint64_t val, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> &allocator) {
146 return rapidjson::Value(std::string(
"int64_t").c_str(), allocator);
151 get_json_value_type<std::string>(std::string val, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> &allocator) {
152 return rapidjson::Value(std::string(
"string").c_str(), allocator);