veriblock-pop-cpp
C++11 Libraries for leveraging VeriBlock Proof-Of-Proof blockchain technology.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
picojson.hpp
1// Copyright (c) 2019-2022 Xenios SEZC
2// https://www.veriblock.org
3// Distributed under the MIT software license, see the accompanying
4// file LICENSE or http://www.opensource.org/licenses/mit-license.php.
5
6#ifndef VERIBLOCK_POP_CPP_PICOJSON_HPP
7#define VERIBLOCK_POP_CPP_PICOJSON_HPP
8
9#define PICOJSON_USE_INT64
10
11#ifdef WIN32
12#pragma warning(push, 0)
13#endif
14
15#include <veriblock/pop/third_party/picojson.h>
16
17#ifdef WIN32
18#pragma warning(pop)
19#endif
20
21#include <veriblock/pop/json.hpp>
22
23namespace altintegration {
24
26template <>
27inline picojson::value ToJSON(const std::string& t) {
28 return picojson::value(t);
29}
30
32template <>
33inline picojson::value ToJSON(const int& t) {
34 return picojson::value((int64_t)t);
35}
36
38template <>
39inline picojson::value ToJSON(const double& t) {
40 return picojson::value(t);
41}
42
44template <>
45inline picojson::value ToJSON(const unsigned int& t) {
46 return picojson::value((int64_t)t);
47}
48
50template <>
51inline picojson::value ToJSON(const picojson::value& t) {
52 return t;
53}
54
55namespace json {
56
58template <>
59inline picojson::value makeEmptyObject() {
60 return picojson::value(picojson::object_type, true);
61}
62
64template <>
65inline picojson::value makeEmptyArray() {
66 return picojson::value(picojson::array_type, true);
67}
68
70template <>
71inline void putKV(picojson::value& object,
72 const std::string& key,
73 const picojson::value& val) {
74 object.get<picojson::object>()[key] = val;
75}
76
78template <>
79inline void putStringKV(picojson::value& object,
80 const std::string& key,
81 const std::string& value) {
82 object.get<picojson::object>()[key] = picojson::value(value);
83}
84
86template <>
87inline void putIntKV(picojson::value& object,
88 const std::string& key,
89 int64_t value) {
90 object.get<picojson::object>()[key] = picojson::value(value);
91}
92
94template <>
95inline void putNullKV(picojson::value& object, const std::string& key) {
96 object.get<picojson::object>()[key] = picojson::value();
97}
98
100template <>
101inline void arrayPushBack(picojson::value& array, const picojson::value& val) {
102 array.get<picojson::array>().push_back(val);
103}
104
106template <>
107inline void putBoolKV(picojson::value& object,
108 const std::string& key,
109 bool value) {
110 object.get<picojson::object>()[key] = picojson::value(value);
111}
112
113} // namespace json
114} // namespace altintegration
115
116#endif // VERIBLOCK_POP_CPP_PICOJSON_HPP
Defines logging helpers.
Definition: block.hpp:14