6#define MSGPACK_NO_BOOST
7#include "msgpack/object_fwd.hpp"
43 if constexpr (
I <
sizeof...(Types)) {
45 if (name == CurrentType::MSGPACK_SCHEMA_NAME) {
56 if constexpr (
I <
sizeof...(Types)) {
101 [](
const auto&
obj) -> std::string_view {
return std::decay_t<
decltype(
obj)>::MSGPACK_SCHEMA_NAME; },
108 packer.pack_array(2);
114 std::visit([&packer](
const auto&
obj) { packer.pack(
obj); },
value_);
122 if (o.type != msgpack::type::ARRAY || o.via.array.size != 2) {
123 throw_or_abort(
"Expected an array of size 2 for NamedUnion deserialization, got " +
126 const auto&
arr = o.via.array;
127 if (
arr.ptr[0].type != msgpack::type::STR) {
128 throw_or_abort(
"Expected first element to be a string (type name) in NamedUnion deserialization");
130 std::string_view
type_name = std::string_view(
arr.ptr[0].via.str.ptr,
arr.ptr[0].via.str.size);
143 packer.pack_array(2);
144 packer.pack(
"named_union");
145 packer.pack_array(
sizeof...(
Types));
148 packer.pack_array(2);
149 packer.pack(Types::MSGPACK_SCHEMA_NAME);
A wrapper around std::variant that provides msgpack serialization based on type names.
decltype(auto) visit(Visitor &&vis) &&
void msgpack_schema(auto &packer) const
void msgpack_unpack(msgpack::object const &o)
void msgpack_pack(auto &packer) const
const VariantType & get() const
static VariantType construct_by_index(size_t index, auto &o)
static std::optional< size_t > get_index_from_name(std::string_view name)
std::variant< Types... > VariantType
std::string_view get_type_name() const
decltype(auto) visit(Visitor &&vis) const &
Concept to check if a type has a static NAME member.
Entry point for Barretenberg command-line interface.
std::string msgpack_to_json(msgpack::object const &o, size_t max_chars)
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
void throw_or_abort(std::string const &err)