17 if (o.type != msgpack::type::MAP) {
22 for (uint32_t i = 0; i < o.via.map.size; ++i) {
23 if (o.via.map.ptr[i].key.type != msgpack::type::STR) {
27 kvmap.emplace(std::string(o.via.map.ptr[i].key.via.str.ptr, o.via.map.ptr[i].key.via.str.size),
28 &o.via.map.ptr[i].val);
34 std::string
const& struct_name,
35 std::string
const& field_name,
39 auto it = kvmap.find(field_name);
40 if (it != kvmap.end()) {
42 it->second->convert(field);
43 }
catch (
const msgpack::type_error&) {
45 throw_or_abort(
"error converting into field " + struct_name +
"::" + field_name);
47 }
else if (!is_optional) {
48 throw_or_abort(
"missing field: " + struct_name +
"::" + field_name);
70 }
catch (
const msgpack::type_error&) {
78 std::map<Witnesses::Witness, std::string>
value;
90 }
catch (
const msgpack::type_error&) {
114 auto name =
"StackItem";
122 std::vector<Witnesses::StackItem>
stack;
136 auto name =
"WitnessStack";
168 if (deserializer.get_buffer_offset() < input.size()) {
177template <
typename Serializer>
180 serializer.increase_container_depth();
183 serializer.decrease_container_depth();
187template <
typename Deserializer>
190 deserializer.increase_container_depth();
194 deserializer.decrease_container_depth();
219 if (deserializer.get_buffer_offset() < input.size()) {
228template <
typename Serializer>
231 serializer.increase_container_depth();
233 serializer.decrease_container_depth();
237template <
typename Deserializer>
240 deserializer.increase_container_depth();
243 deserializer.decrease_container_depth();
268 if (deserializer.get_buffer_offset() < input.size()) {
277template <
typename Serializer>
280 serializer.increase_container_depth();
282 serializer.decrease_container_depth();
286template <
typename Deserializer>
289 deserializer.increase_container_depth();
292 deserializer.decrease_container_depth();
317 if (deserializer.get_buffer_offset() < input.size()) {
326template <
typename Serializer>
329 serializer.increase_container_depth();
331 serializer.decrease_container_depth();
335template <
typename Deserializer>
338 deserializer.increase_container_depth();
341 deserializer.decrease_container_depth();
bool operator==(const StackItem &lhs, const StackItem &rhs)
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
static std::map< std::string, msgpack::object const * > make_kvmap(msgpack::object const &o, std::string const &name)
static void conv_fld_from_kvmap(std::map< std::string, msgpack::object const * > const &kvmap, std::string const &struct_name, std::string const &field_name, T &field, bool is_optional)
void msgpack_pack(auto &packer) const
friend bool operator==(const StackItem &, const StackItem &)
Witnesses::WitnessMap witness
std::vector< uint8_t > bincodeSerialize() const
void msgpack_unpack(msgpack::object const &o)
static StackItem bincodeDeserialize(std::vector< uint8_t >)
std::vector< uint8_t > bincodeSerialize() const
void msgpack_pack(auto &packer) const
bool operator<(Witness const &rhs) const
friend bool operator==(const Witness &, const Witness &)
static Witness bincodeDeserialize(std::vector< uint8_t >)
void msgpack_unpack(msgpack::object const &o)
void msgpack_pack(auto &packer) const
friend bool operator==(const WitnessMap &, const WitnessMap &)
std::vector< uint8_t > bincodeSerialize() const
static WitnessMap bincodeDeserialize(std::vector< uint8_t >)
void msgpack_unpack(msgpack::object const &o)
std::map< Witnesses::Witness, std::string > value
static WitnessStack bincodeDeserialize(std::vector< uint8_t >)
void msgpack_pack(auto &packer) const
std::vector< Witnesses::StackItem > stack
friend bool operator==(const WitnessStack &, const WitnessStack &)
std::vector< uint8_t > bincodeSerialize() const
void msgpack_unpack(msgpack::object const &o)
static T deserialize(Deserializer &deserializer)
static void serialize(const T &value, Serializer &serializer)
void throw_or_abort(std::string const &err)