41class ValueBuilder
final {
47 using ContainerType = impl::MutableValueWrapper;
62 ValueBuilder(
const ValueBuilder& other);
64 ValueBuilder(ValueBuilder&& other);
65 ValueBuilder& operator=(
const ValueBuilder& other);
67 ValueBuilder& operator=(ValueBuilder&& other);
74 ValueBuilder(std::nullptr_t) : ValueBuilder
() {}
76 ValueBuilder(
const char* str);
77 ValueBuilder(
char* str);
78 ValueBuilder(
const std::string& str);
79 ValueBuilder(std::string_view str);
81 ValueBuilder(
unsigned int t);
82 ValueBuilder(uint64_t t);
83 ValueBuilder(int64_t t);
84 ValueBuilder(
float t);
85 ValueBuilder(
double t);
104 typename Enable = std::enable_if_t<
utils::IsStrongTypedefLoggable(Ops)>>
105 ValueBuilder
operator[](
utils::StrongTypedef<Tag, std::string, Ops> key);
177 class EmplaceEnabler {};
181 ValueBuilder(EmplaceEnabler, impl::MutableValueWrapper)
noexcept;
185 enum class CheckMemberExists { kYes, kNo };
187 explicit ValueBuilder(impl::MutableValueWrapper)
noexcept;
189 static void Copy(impl::Value& to,
const ValueBuilder& from);
190 static void Move(impl::Value& to, ValueBuilder&& from);
192 impl::Value& AddMember(std::string_view key, CheckMemberExists);
194 template <
typename T>
195 static Value DoSerialize(
const T& t);
197 impl::MutableValueWrapper value_;
235std::enable_if_t<meta::kIsUniqueMap<T> &&
utils::IsStrongTypedefLoggable(T::key_type::kOps), Value>
246std::enable_if_t<meta::kIsUniqueMap<T> && std::is_convertible_v<
typename T::key_type, std::string>, Value>