100 constexpr auto empty()
const {
return !m_value; }
106 if (this->
empty() != other.empty()) {
112 return *this->m_value == *other.m_value;
152 auto const& value = down_cast(code);
153 return !value.value().empty();
159 return b.domain() == *
this && down_cast(a).value() == down_cast(b).value();
164 return a.failure() ? platform::BasicError::InvalidArgument : platform::BasicError::Success;
171 auto const& value = down_cast(code).value().inner();
176 writer_print<Enc>(writer,
"Failing reading input stream while parsing '{}': {}"_sv, value.key,
183 writer_print<Enc>(writer,
"Cannot parse '{}': '{}' as enum. Expected one of [ {} ]"_sv, value.key,
187 writer_print<Enc>(writer,
"Cannot parse '{}' as value for key '{}': {}"_sv, error.value, value.key,
191 writer_print<Enc>(writer,
"Cannot parse '{}': '{}' as number"_sv, value.key, error.input);
194 writer_print<Enc>(writer,
"Unexpected key '{}' while parsing '{}'"_sv, error.key, value.key);
197 writer_print<Enc>(writer,
"Unexpected end of input while parsing '{}'"_sv, value.key);
200 writer_print<Enc>(writer,
"Expected {} elements but got {} while parsing '{}'"_sv, error.expected,
201 error.actual, value.key);
204 if (error.expected) {
205 writer_print<Enc>(writer,
"Unexpected character while parsing '{}' (expected {}): {:?}"_sv,
206 value.key, error.expected.value(), error.code_point);
208 writer_print<Enc>(writer,
"Unexpected character while parsing '{}': {:#4x}"_sv, value.key,
213 writer_print<Enc>(writer,
"Invalid UTF-8 byte detected while parsing '{}'"_sv, value.key);
216 return di::move(writer).output();
220 template<
typename Domain>
225 return static_cast<ErrorCode const&
>(code);
229constexpr auto Error::into_status_code() && ->
ErrorCode {
#define DI_ASSERT(...)
Definition assert_bool.h:7
Definition erased_string.h:21
Enc Encoding
Definition string_impl.h:18
Definition string_writer.h:14
Definition json_deserializer_error.h:123
ErrorDomain(ErrorDomain const &)=default
auto operator=(ErrorDomain const &) -> ErrorDomain &=default
static constexpr auto get() -> ErrorDomain const &
Definition json_deserializer_error.h:235
ErrorDomain(ErrorDomain &&)=default
Error Value
Definition json_deserializer_error.h:128
constexpr auto name() const -> container::ErasedString override
Definition json_deserializer_error.h:141
constexpr auto do_convert_to_generic(vocab::StatusCode< void > const &a) const -> vocab::GenericCode override
Definition json_deserializer_error.h:162
constexpr auto do_equivalent(vocab::StatusCode< void > const &a, vocab::StatusCode< void > const &b) const -> bool override
Definition json_deserializer_error.h:156
constexpr auto payload_info() const -> PayloadInfo override
Definition json_deserializer_error.h:145
constexpr ErrorDomain(UniqueId id=0x3acfeb8908d1656b)
Definition json_deserializer_error.h:131
auto operator=(ErrorDomain &&) -> ErrorDomain &=default
Base::UniqueId UniqueId
Definition json_deserializer_error.h:129
constexpr auto do_failure(vocab::StatusCode< void > const &code) const -> bool override
Definition json_deserializer_error.h:151
constexpr auto do_message(vocab::StatusCode< void > const &code) const -> container::ErasedString override
Definition json_deserializer_error.h:167
Definition json_deserializer_error.h:93
constexpr Error(ErrorVariant error, di::String key)
Definition json_deserializer_error.h:97
constexpr auto operator==(Error const &other) const -> bool
Definition json_deserializer_error.h:105
constexpr friend auto tag_invoke(Tag< concepts::trivially_relocatable >, InPlaceType< Error >) -> bool
Definition json_deserializer_error.h:118
constexpr auto inner() -> ConcreteError &
Definition json_deserializer_error.h:102
constexpr auto empty() const
Definition json_deserializer_error.h:100
constexpr auto inner() const -> ConcreteError const &
Definition json_deserializer_error.h:103
Definition optional_forward_declaration.h:5
constexpr StatusCodeDomain(UniqueId id)
Definition status_code_domain.h:29
constexpr auto id() const
Definition status_code_domain.h:12
u64 UniqueId
Definition status_code_domain.h:10
Definition status_code_forward_declaration.h:11
string::StringImpl< string::Utf8Encoding > String
Definition string.h:11
constexpr auto max
Definition max.h:49
Definition json_deserializer_error.h:19
vocab::StatusCode< ErrorDomain > ErrorCode
Definition json_deserializer_error.h:91
Variant< ReadError, ParseBoolError, ParseEnumError, ParseValueError, ParseNumberError, UnexpectedKeyError, UnexpectedCharacterError, MissingArrayElementsError, UnexpectedEndOfInputError, InvalidUtf8Error > ErrorVariant
Definition json_deserializer_error.h:78
constexpr auto error_domain
Definition json_deserializer_error.h:233
size_t usize
Definition integers.h:33
__UINT8_TYPE__ u8
Definition integers.h:9
char32_t c32
Definition char.h:6
di::meta::Decay< decltype(T)> Tag
Definition tag_invoke.h:28
StatusCode< platform::GenericDomain > GenericCode
Definition status_code_forward_declaration.h:13
StatusCode< Erased< long > > Error
Definition error.h:8
Definition any_storable.h:9
constexpr auto into_status_code
Definition into_status_code.h:25
constexpr auto make_box
Definition box.h:171
constexpr auto writer_print
Definition writer_print.h:21
constexpr auto visit(Vis &&visitor, Vars &&... variants) -> R
Definition visit.h:39
constexpr auto to(Con &&container, Args &&... args)
Definition to.h:25
constexpr auto in_place
Definition in_place.h:8
constexpr auto overload
Definition overload.h:28
Definition json_deserializer_error.h:82
auto operator==(ConcreteError const &) const -> bool=default
di::String key
Definition json_deserializer_error.h:84
ErrorVariant error
Definition json_deserializer_error.h:83
Definition json_deserializer_error.h:74
auto operator==(InvalidUtf8Error const &) const -> bool=default
Definition json_deserializer_error.h:63
usize actual
Definition json_deserializer_error.h:64
auto operator==(MissingArrayElementsError const &) const -> bool=default
usize expected
Definition json_deserializer_error.h:65
Definition json_deserializer_error.h:26
auto operator==(ParseBoolError const &) const -> bool=default
Definition json_deserializer_error.h:30
di::Vector< String > possible
Definition json_deserializer_error.h:32
di::String value
Definition json_deserializer_error.h:31
auto operator==(ParseEnumError const &) const -> bool=default
Definition json_deserializer_error.h:44
di::String input
Definition json_deserializer_error.h:45
auto operator==(ParseNumberError const &) const -> bool=default
Definition json_deserializer_error.h:37
di::Error error
Definition json_deserializer_error.h:39
di::String value
Definition json_deserializer_error.h:38
auto operator==(ParseValueError const &) const -> bool=default
Definition json_deserializer_error.h:20
auto operator==(ReadError const &) const -> bool=default
di::Error error
Definition json_deserializer_error.h:21
Definition json_deserializer_error.h:56
auto operator==(UnexpectedCharacterError const &) const -> bool=default
di::Optional< c32 > expected
Definition json_deserializer_error.h:58
c32 code_point
Definition json_deserializer_error.h:57
Definition json_deserializer_error.h:50
auto operator==(UnexpectedKeyError const &) const -> bool=default
di::String key
Definition json_deserializer_error.h:51
Definition in_place_type.h:5
Definition status_code_domain.h:16