12#ifndef GMP_SERIALIZATION_VALUE_HPP_
13#define GMP_SERIALIZATION_VALUE_HPP_
31 using array = std::vector<serialization_value>;
32 using object = std::vector<std::pair<std::string, serialization_value>>;
34 std::variant<null_t, bool, std::int64_t, std::uint64_t, double, std::string, array, object>;
41 template <std::
integral I>
42 requires(!std::same_as<I, bool>)
46 template <std::
floating_po
int F>
47 requires(!std::same_as<F, double>)
69 return std::holds_alternative<T>(data_);
72 template <
typename T> T &
get() & {
73 return std::get<T>(data_);
77 return std::get<T>(data_);
80 template <
typename T> T &&
get() && {
81 return std::get<T>(std::move(data_));
93 return source_offset_;
serialization_value(bool v) noexcept
serialization_value(std::string_view v)
std::vector< std::pair< std::string, serialization_value > > object
serialization_value(object v)
serialization_value(F v) noexcept
storage & data() noexcept
std::size_t source_offset() const noexcept
serialization_value() noexcept=default
serialization_value(const char *v)
serialization_value(std::uint64_t v) noexcept
std::vector< serialization_value > array
std::variant< null_t, bool, std::int64_t, std::uint64_t, double, std::string, array, object > storage
void source_offset(std::size_t v) noexcept
serialization_value(std::int64_t v) noexcept
serialization_value(double v) noexcept
const storage & data() const noexcept
serialization_value(array v)
serialization_value(I v) noexcept
serialization_value(std::string v)
static constexpr std::size_t unknown_offset