27 constexpr auto
flags() const noexcept ->
ice::
i18n::I18NFlags;
63 if (value.not_empty())
66 result.
_data = value.data();
113 return fallback_prefix;
115 else if (fallback_prefix == 0)
125 constexpr auto operator""_i18n(
char const* text,
size_t size)
noexcept ->
I18NReference
133 static_assert(
I18NReference{
"Fallback Only"_str }.fallback() ==
"Fallback Only"_str,
"Assigning a string directly always makes it a 'fallback' value");
134 static_assert(
I18NReference{
"Fallback Only"_str }.reference() ==
""_str,
"Assigned a string results in an empty 'reference' value");
135 static_assert(
I18NReference{
"Fallback Only"_str }.path() ==
""_str,
"Assigned a string results in an empty 'path' value");
136 static_assert(
I18NReference{
"Fallback Only"_str }.key() ==
""_str,
"Assigned a string results in an empty 'key' value");
137 static_assert(
I18NReference{
"Fallback Only"_str }.flags() ==
""_str,
"Assigned a string results in an empty 'flags' value");
140 static_assert(
"a/b no-builtin"_i18n.fallback() ==
""_str,
"Assigning the shortest reference returns an empty 'fallback' value");
141 static_assert(
"a/b no-builtin"_i18n.reference() ==
"a/b"_str,
"Assigning the shortest reference is valid with one character on both 'path' and 'key' values");
142 static_assert(
"a/b no-builtin"_i18n.path() ==
"a"_str,
"Assigning the shortest reference returns the proper 'path' value");
143 static_assert(
"a/b no-builtin"_i18n.key() ==
"b"_str,
"Assigning the shortest reference returns the proper 'key' value");
144 static_assert(
"a/b no-builtin"_i18n.flags() ==
"no-builtin"_str,
"Assigning the shorest reference with 'no-builtin' flags returns that value");
146 static_assert(
"builtin.core.i18n.test/test.id"_i18n.fallback() ==
""_str,
"Assigning a proper test reference without flags returns an empty 'fallback' value");
147 static_assert(
"builtin.core.i18n.test/test.id"_i18n.reference() ==
"builtin.core.i18n.test/test.id"_str,
"Assigning a proper test reference returns it's value");
148 static_assert(
"builtin.core.i18n.test/test.id"_i18n.path() ==
"builtin.core.i18n.test"_str,
"Assigning a proper test reference the 'path' value");
149 static_assert(
"builtin.core.i18n.test/test.id"_i18n.key() ==
"test.id"_str,
"Assigning a proper test reference returns the 'key' value");
150 static_assert(
"builtin.core.i18n.test/test.id"_i18n.flags() ==
""_str,
"Assigning a proper test reference returns empty 'flags' value");
152 static_assert(
"builtin.core.i18n.test/test.id no-flags"_i18n.fallback() ==
""_str,
"Assigning a reference with flags an empty 'fallback' value");
153 static_assert(
"builtin.core.i18n.test/test.id no-flags"_i18n.reference() ==
"builtin.core.i18n.test/test.id"_str,
"Assigning a reference with flags returns it's value");
154 static_assert(
"builtin.core.i18n.test/test.id no-flags"_i18n.path() ==
"builtin.core.i18n.test"_str,
"Assigning a reference with flags the 'path' value");
155 static_assert(
"builtin.core.i18n.test/test.id no-flags"_i18n.key() ==
"test.id"_str,
"Assigning reference with flags returns the 'key' value");
156 static_assert(
"builtin.core.i18n.test/test.id no-flags"_i18n.flags() ==
"no-flags"_str,
"Assigning reference with flags returns expected 'flags' value");
158 static_assert(
"builtin.core.i18n.test/test.id|Expected Fallback"_i18n.fallback() ==
"Expected Fallback"_str,
"Assigning a reference with fallback returns expected 'fallback' value");
159 static_assert(
"builtin.core.i18n.test/test.id|Expected Fallback"_i18n.reference() ==
"builtin.core.i18n.test/test.id"_str,
"Assigning a reference with fallback returns expected 'reference' value");
160 static_assert(
"builtin.core.i18n.test/test.id|Expected Fallback"_i18n.path() ==
"builtin.core.i18n.test"_str,
"Assigning a reference with fallback the 'path' value");
161 static_assert(
"builtin.core.i18n.test/test.id|Expected Fallback"_i18n.key() ==
"test.id"_str,
"Assigning reference with fallback returns the 'key' value");
162 static_assert(
"builtin.core.i18n.test/test.id|Expected Fallback"_i18n.flags() ==
""_str,
"Assigning reference with fallback returns empty 'flags' value");
164 static_assert(
"builtin.core.i18n.test/test.id no-flags|Expected Fallback"_i18n.fallback() ==
"Expected Fallback"_str,
"Assigning a reference with flags and fallback returns expected 'fallback' value");
165 static_assert(
"builtin.core.i18n.test/test.id no-flags|Expected Fallback"_i18n.reference() ==
"builtin.core.i18n.test/test.id"_str,
"Assigning a reference with flags and fallback returns expected 'reference' value");
166 static_assert(
"builtin.core.i18n.test/test.id no-flags|Expected Fallback"_i18n.path() ==
"builtin.core.i18n.test"_str,
"Assigning a reference with flags and fallback the 'path' value");
167 static_assert(
"builtin.core.i18n.test/test.id no-flags|Expected Fallback"_i18n.key() ==
"test.id"_str,
"Assigning reference with flags and fallback returns the 'key' value");
168 static_assert(
"builtin.core.i18n.test/test.id no-flags|Expected Fallback"_i18n.flags() ==
"no-flags"_str,
"Assigning reference with flags and fallback returns empty expected 'flags' value");
#define ICE_ASSERT_CORE(expression)
Definition assert_core.hxx:43
Definition i18n_reference.hxx:9
constexpr I18NReference() noexcept=default
ice::u8 _fallback
Definition i18n_reference.hxx:41
ice::u8 _flags
Definition i18n_reference.hxx:40
constexpr auto fallback() const noexcept -> ice::String
Definition i18n_reference.hxx:103
ice::u8 _key
Definition i18n_reference.hxx:39
constexpr auto flags() const noexcept -> ice::i18n::I18NFlags
Definition i18n_reference.hxx:98
constexpr auto reference() const noexcept -> ice::String
Definition i18n_reference.hxx:82
static constexpr auto from_string(ice::String value) noexcept -> ice::I18NReference
Definition i18n_reference.hxx:55
constexpr auto path() const noexcept -> ice::String
Definition i18n_reference.hxx:88
ice::u32 _hash
Definition i18n_reference.hxx:37
constexpr auto key() const noexcept -> ice::String
Definition i18n_reference.hxx:93
ice::u8 _path
Definition i18n_reference.hxx:38
char const * _data
Definition i18n_reference.hxx:36
constexpr auto fallback_offset() const noexcept -> ice::nindex
Definition i18n_reference.hxx:108
Definition i18n_detail.hxx:6
constexpr void parse(ice::String in_str, ice::u32 &out_hash, ice::u8 &out_path, ice::u8 &out_key, ice::u8 &out_flags, ice::u8 &out_fallback) noexcept
Definition i18n_detail.hxx:81
SPDX-License-Identifier: MIT.
Definition array.hxx:12
ice::BasicString< char > String
Definition string.hxx:82
constexpr auto hash32(ice::String value) noexcept -> ice::u32
Definition string.hxx:105
std::uint32_t u32
Definition types.hxx:26
std::uint8_t u8
Definition types.hxx:24
static constexpr ice::nindex_invalid_t nindex_none
Definition nindex.hxx:56
Definition i18n_detail.hxx:9
ice::detail::nvalue_base_utype base_type
Definition nvalue.hxx:75