6 #ifndef METALL_JSON_VALUE_FROM_HPP
7 #define METALL_JSON_VALUE_FROM_HPP
14 namespace bj = boost::json;
17 template <
typename allocator_type>
19 const bj::value &input_bj_value,
20 allocator_type allocator = allocator_type()) {
23 if (input_bj_value.is_null()) {
25 }
else if (input_bj_value.is_bool()) {
26 out_value = input_bj_value.
as_bool();
27 }
else if (input_bj_value.is_int64()) {
28 out_value = input_bj_value.
as_int64();
29 }
else if (input_bj_value.is_uint64()) {
31 }
else if (input_bj_value.is_double()) {
33 }
else if (input_bj_value.is_string()) {
34 const auto& str = input_bj_value.as_string();
36 }
else if (input_bj_value.is_array()) {
38 for (
const auto &item : input_bj_value.as_array()) {
39 out_array.
resize(out_array.size() + 1);
42 }
else if (input_bj_value.is_object()) {
44 for (
const auto &pair : input_bj_value.as_object()) {
52 template <
typename allocator_type>
54 bj::value &&input_bj_value, allocator_type allocator = allocator_type()) {
55 bj::value tmp_input_bj_value(std::move(input_bj_value));
70 template <
typename T,
typename allocator_type = std::allocator<std::
byte>>
72 T &&input_data,
const allocator_type &allocator = allocator_type())
74 template <
typename T,
typename allocator_type>
76 const allocator_type &allocator)