25#include "../basic_string.hpp"
26#include "../char8_t_remediation.hpp"
27#include "common_types.hpp"
28#include "identifier.hpp"
29#include "literal_string.hpp"
37namespace essence::meta {
38 template <
typename T,
typename Tag =
void>
45 static constexpr auto origin = get_literal_string_t<T>();
46 static constexpr literal_string value{std::span<
const char, origin.size()>{origin.data(), origin.size()}};
49 template <
typename T,
typename Tag =
void>
54 static constexpr std::string_view value{U8(
"int8")};
59 static constexpr std::string_view value{U8(
"int16")};
64 static constexpr std::string_view value{U8(
"int32")};
69 static constexpr std::string_view value{U8(
"int64")};
74 static constexpr std::string_view value{U8(
"uint8")};
79 static constexpr std::string_view value{U8(
"uint16")};
84 static constexpr std::string_view value{U8(
"uint32")};
89 static constexpr std::string_view value{U8(
"uint64")};
94 static constexpr std::string_view value{U8(
"float")};
99 static constexpr std::string_view value{U8(
"double")};
104 static constexpr std::string_view value{U8(
"long double")};
109 static constexpr std::string_view value{U8(
"boolean")};
114 static constexpr std::string_view value{U8(
"byte")};
119 static constexpr std::string_view value{U8(
"char")};
124 static constexpr std::string_view value{U8(
"wchar")};
129 static constexpr std::string_view value{U8(
"u8char")};
134 static constexpr std::string_view value{U8(
"u16char")};
139 static constexpr std::string_view value{U8(
"u32char")};
142 template <std_basic_
string T>
143 requires std::same_as<typename T::value_type, char>
145 static constexpr std::string_view value{U8(
"string")};
148 template <std_basic_
string T>
149 requires std::same_as<typename T::value_type, wchar_t>
150 struct friendly_name<T> {
151 static constexpr std::string_view value{U8(
"wstring")};
154 template <std_basic_
string T>
155 requires std::same_as<typename T::value_type, char8_t>
156 struct friendly_name<T> {
157 static constexpr std::string_view value{U8(
"u8string")};
160 template <std_basic_
string T>
161 requires std::same_as<typename T::value_type, char16_t>
162 struct friendly_name<T> {
163 static constexpr std::string_view value{U8(
"u16string")};
166 template <std_basic_
string T>
167 requires std::same_as<typename T::value_type, char32_t>
168 struct friendly_name<T> {
169 static constexpr std::string_view value{U8(
"u32string")};