32 template<concepts::Encoding Enc>
38 return formatter(context,
"null"_sv);
67 constexpr static bool value =
true;
72 constexpr static bool value =
true;
77 constexpr static bool value =
true;
82 constexpr static bool value =
true;
87 using Type = di::strong_ordering;
92 using Type = di::strong_ordering;
97 using Type = di::strong_ordering;
102 using Type = di::strong_ordering;
110 constexpr static usize alternatives = 6;
112 template<concepts::SameAs<types::Tag<util::create_in_place>> Tag = types::Tag<util::create_in_place>,
117 return Value { util::move(v) };
123 using Base::operator=;
152 constexpr auto operator[](
String const& key) ->
decltype(
auto) {
return force_object()[key]; }
153 constexpr auto operator[](
String&& key) ->
decltype(
auto) {
return force_object()[util::move(key)]; }
157 constexpr auto operator[](U&& key) ->
decltype(
auto) {
159 return force_object()[util::forward<U>(key)];
164 return as_object().and_then([&](
auto& o) {
169 return as_object().and_then([&](
auto const& o) {
177 return as_object().and_then([&](
auto& o) {
184 return as_object().and_then([&](
auto const& o) {
192 .transform([&](
auto const& o) {
193 return o.contains(key);
200 .transform([&](
auto const& o) {
201 return o.contains(util::forward<U>(key));
209 .transform([&](
auto& o) {
216 constexpr auto erase(U&& key) ->
size_t {
218 .transform([&](
auto& o) {
225 template<
typename... Args>
228 return force_object().try_emplace(key, util::forward<Args>(args)...);
230 template<
typename... Args>
233 return force_object().try_emplace(util::move(key), util::forward<Args>(args)...);
235 template<
typename U,
typename... Args>
238 constexpr auto try_emplace(U&& key, Args&&... args) ->
decltype(
auto) {
239 return force_object().try_emplace(util::forward<U>(key), util::forward<Args>(args)...);
246 return force_object().insert_or_assign(key, util::forward<V>(value));
251 return force_object().insert_or_assign(util::move(key), util::forward<V>(value));
253 template<
typename U,
typename V>
257 return force_object().insert_or_assign(util::forward<U>(key), util::forward<V>(value));
260 constexpr auto empty() const ->
bool {
347 return as_array().and_then([&](
auto& a) {
352 return as_array().and_then([&](
auto const& a) {
358 constexpr auto push_back(
Value&& value) ->
decltype(
auto) {
return force_array().push_back(util::move(value)); }
360 return as_array().and_then([](
auto& a) {
378 template<concepts::Encoding Enc, concepts::SameAs<InPlaceType<Value>> X = InPlaceType<Value>,
379 concepts::SameAs<
bool> B =
bool,
380 concepts::SameAs<types::Tag<format::formatter_in_place>> Tag = types::Tag<format::formatter_in_place>>
387 return formatter(context,
"[<JSON serializer error>]"_sv);
389 return formatter(context, string->view());
395 return a.as_string() == view;
398 constexpr auto string_index =
usize(3);
399 if (
auto result = a.
index() <=> string_index; result != 0) {
405 constexpr auto force_array() ->
Array& {
412 constexpr auto force_object() ->
Object& {
constexpr auto front()
Definition constant_vector_interface.h:44
constexpr auto back()
Definition constant_vector_interface.h:47
constexpr void clear()
Definition map_interface.h:51
constexpr auto size() const -> usize
Definition rb_tree.h:79
constexpr auto empty() const -> bool
Definition rb_tree.h:80
Definition vector_forward_declaration.h:8
Definition format_parse_context.h:14
Definition json_serializer.h:36
Definition json_value.h:107
constexpr auto try_emplace(U &&key, Args &&... args) -> decltype(auto)
Definition json_value.h:238
constexpr auto operator[](String const &key) -> decltype(auto)
Definition json_value.h:152
constexpr auto operator[](usize index) const -> Value const &
Definition json_value.h:344
constexpr auto insert_or_assign(U &&key, V &&value) -> decltype(auto)
Definition json_value.h:256
constexpr auto size() const -> usize
Definition json_value.h:273
constexpr auto as_array() -> vocab::Optional< Array & >
Definition json_value.h:146
constexpr auto is_string() const -> bool
Definition json_value.h:129
constexpr friend auto tag_invoke(Tag, InPlaceType< Value >, Args &&... args)
Definition json_value.h:115
constexpr auto front() -> Optional< Value & >
Definition json_value.h:300
constexpr auto is_integer() const -> bool
Definition json_value.h:127
constexpr auto operator[](String &&key) -> decltype(auto)
Definition json_value.h:153
constexpr auto is_true() const -> bool
Definition json_value.h:138
constexpr auto at(String const &key) -> Optional< Value & >
Definition json_value.h:163
constexpr auto try_emplace(String const &key, Args &&... args) -> decltype(auto)
Definition json_value.h:227
constexpr auto as_object() const -> vocab::Optional< Object const & >
Definition json_value.h:149
constexpr auto as_boolean() const -> vocab::Optional< Bool >
Definition json_value.h:133
constexpr friend auto tag_invoke(types::Tag< serializable >, JsonFormat, InPlaceType< Value >) -> bool
Definition json_value.h:376
constexpr auto push_back(Value &&value) -> decltype(auto)
Definition json_value.h:358
constexpr auto is_boolean() const -> bool
Definition json_value.h:126
constexpr auto as_array() const -> vocab::Optional< Array const & >
Definition json_value.h:147
constexpr auto erase(String const &key) -> size_t
Definition json_value.h:207
constexpr auto at(U &&key) -> Optional< Value & >
Definition json_value.h:176
constexpr auto operator[](usize index) -> Value &
Definition json_value.h:343
constexpr auto pop_back() -> Optional< Value >
Definition json_value.h:359
constexpr auto as_object() -> vocab::Optional< Object & >
Definition json_value.h:148
constexpr auto as_string() -> vocab::Optional< String & >
Definition json_value.h:144
constexpr auto is_false() const -> bool
Definition json_value.h:139
constexpr auto is_number() const -> bool
Definition json_value.h:128
constexpr auto is_null() const -> bool
Definition json_value.h:125
constexpr friend auto operator==(Value const &a, container::StringView view) -> bool
Definition json_value.h:394
constexpr friend auto operator<=>(Value const &a, container::StringView view)
Definition json_value.h:397
constexpr auto insert_or_assign(String const &key, V &&value) -> decltype(auto)
Definition json_value.h:245
constexpr friend auto tag_invoke(types::Tag< serialize >, JsonFormat, S &serializer, Value const &value) -> meta::SerializeResult< S >
Definition json_value.h:367
constexpr auto at(usize index) const -> Optional< Value const & >
Definition json_value.h:351
constexpr auto is_object() const -> bool
Definition json_value.h:131
constexpr void clear()
Definition json_value.h:287
constexpr auto at(String const &key) const -> Optional< Value const & >
Definition json_value.h:168
constexpr auto contains(String const &key) const -> bool
Definition json_value.h:190
constexpr auto is_array() const -> bool
Definition json_value.h:130
constexpr auto front() const -> Optional< Value const & >
Definition json_value.h:310
constexpr auto at(usize index) -> Optional< Value & >
Definition json_value.h:346
constexpr auto back() const -> Optional< Value const & >
Definition json_value.h:331
constexpr auto at(U &&key) const -> Optional< Value const & >
Definition json_value.h:183
constexpr auto as_integer() const -> vocab::Optional< Number >
Definition json_value.h:141
constexpr auto empty() const -> bool
Definition json_value.h:260
constexpr auto as_string() const -> vocab::Optional< String const & >
Definition json_value.h:145
constexpr auto insert_or_assign(String &&key, V &&value) -> decltype(auto)
Definition json_value.h:250
constexpr auto as_number() const -> vocab::Optional< Number >
Definition json_value.h:142
constexpr auto erase(U &&key) -> size_t
Definition json_value.h:216
constexpr auto contains(U &&key) const -> bool
Definition json_value.h:198
constexpr auto try_emplace(String &&key, Args &&... args) -> decltype(auto)
Definition json_value.h:232
constexpr friend auto tag_invoke(Tag, X, format::FormatParseContext< Enc > &parse_context, B debug)
Definition json_value.h:381
constexpr auto back() -> Optional< Value & >
Definition json_value.h:321
Definition optional_forward_declaration.h:5
Definition tuple_forward_declaration.h:5
Definition variant_forward_declaration.h:6
constexpr auto index() const -> size_t
Definition variant.h:173
Definition operations.h:11
Definition operations.h:34
Definition format_context.h:9
string::StringViewImpl< string::Utf8Encoding > StringView
Definition string_view.h:12
string::StringImpl< string::Utf8Encoding > String
Definition string.h:11
constexpr auto overload
Definition overload.h:28
Definition json_value.h:26
constexpr auto null
Definition json_value.h:51
container::String String
Definition json_value.h:58
container::TreeMap< container::String, Value > Object
Definition json_value.h:60
i64 Number
Definition json_value.h:56
bool Bool
Definition json_value.h:53
vocab::Tuple< String, Value > KeyValue
Definition json_value.h:61
container::Vector< Value > Array
Definition json_value.h:59
Definition binary_deserializer.h:33
constexpr auto serialize
Definition serialize.h:130
constexpr auto to_json_string
Definition json_serializer.h:383
constexpr auto serializer
Definition serialize.h:43
size_t usize
Definition integers.h:33
di::meta::Decay< decltype(T)> Tag
Definition tag_invoke.h:28
__INT64_TYPE__ i64
Definition integers.h:17
auto declval() -> meta::AddRValueReference< T >
Definition declval.h:8
constexpr auto create(Args &&... args)
Definition create.h:21
constexpr auto get_if(Var &&variant) -> Optional< meta::RemoveRValueReference< Res > >
Definition get_if.h:13
constexpr auto visit(Vis &&visitor, Vars &&... variants) -> R
Definition visit.h:39
constexpr auto holds_alternative
Definition holds_alternative.h:21
Definition zstring_parser.h:9
constexpr auto as_fallible
Definition as_fallible.h:26
constexpr auto try_infallible
Definition try_infallible.h:31
static constexpr bool value
Definition json_value.h:82
static constexpr bool value
Definition json_value.h:77
static constexpr bool value
Definition json_value.h:67
static constexpr bool value
Definition json_value.h:72
di::strong_ordering Type
Definition json_value.h:87
di::strong_ordering Type
Definition json_value.h:97
di::strong_ordering Type
Definition json_value.h:102
di::strong_ordering Type
Definition json_value.h:92
Definition json_value.h:29
constexpr friend auto tag_invoke(types::Tag< serialization::serialize >, JsonFormat, auto &serializer, Null)
Definition json_value.h:43
auto operator<=>(Null const &) const =default
constexpr friend auto tag_invoke(types::Tag< format::formatter_in_place >, InPlaceType< Null >, format::FormatParseContext< Enc > &parse_context, bool debug)
Definition json_value.h:33
auto operator==(Null const &) const -> bool=default
Definition in_place_type.h:5