NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
icharacter.hpp
浏览该文件的文档.
1#ifndef NEFORCE_CORE_INTERFACE_ICHARACTER_HPP__
2#define NEFORCE_CORE_INTERFACE_ICHARACTER_HPP__
3
11
14NEFORCE_BEGIN_NAMESPACE__
15
21
30template <typename T, typename CharT>
31struct icharacter : ipackage<T, CharT> {
32 static_assert(is_character_v<CharT>, "CharT must be character.");
33
34 constexpr icharacter() noexcept = default;
35 NEFORCE_CONSTEXPR20 ~icharacter() = default;
36
37 constexpr icharacter(const icharacter&) noexcept = default;
38 constexpr icharacter(icharacter&&) noexcept = default;
39
40 constexpr icharacter& operator=(const icharacter&) noexcept = default;
41 constexpr icharacter& operator=(icharacter&&) noexcept = default;
42
47 constexpr icharacter(CharT value) noexcept :
48 ipackage<T, CharT>(value) {}
49
54 NEFORCE_NODISCARD constexpr explicit operator bool() const noexcept {
55 return ipackage<T, CharT>::value_ != static_cast<CharT>(0);
56 }
57
63 static NEFORCE_CONSTEXPR20 string to_string(const basic_string_view<CharT>& obj) { return T::to_string(obj); }
64
70 static NEFORCE_CONSTEXPR20 wstring to_wstring(const basic_string_view<CharT>& obj) { return T::to_wstring(obj); }
71
72#ifdef NEFORCE_STANDARD_20
78 static NEFORCE_CONSTEXPR20 u8string to_u8string(const basic_string_view<CharT>& obj) { return T::to_u8string(obj); }
79#endif
80
86 static NEFORCE_CONSTEXPR20 u16string to_u16string(const basic_string_view<CharT>& obj) {
87 return T::to_u16string(obj);
88 }
89
95 static NEFORCE_CONSTEXPR20 u32string to_u32string(const basic_string_view<CharT>& obj) {
96 return T::to_u32string(obj);
97 }
98};
99 // CRTPInterfaces
101
107
114template <typename CharT, enable_if_t<is_character_v<CharT>, int> = 0>
115NEFORCE_CONSTEXPR20 string to_string(const CharT& c) {
117}
118
125template <typename CharT, enable_if_t<is_character_v<CharT>, int> = 0>
126NEFORCE_CONSTEXPR20 string to_string(const CharT* x) {
128}
129
136template <typename CharT, enable_if_t<is_character_v<CharT>, int> = 0>
137NEFORCE_CONSTEXPR20 string to_string(const basic_string_view<CharT> x) {
139}
140
147template <typename CharT, enable_if_t<is_character_v<CharT>, int> = 0>
148NEFORCE_CONSTEXPR20 string to_string(const basic_string<CharT>& x) {
150}
151
158template <typename CharT, enable_if_t<is_character_v<CharT>, int> = 0>
159NEFORCE_CONSTEXPR20 string to_string(basic_string<CharT>&& x) {
160 return icharacter<package_t<CharT>, CharT>::to_string(x.view());
161}
162
168template <>
169NEFORCE_CONSTEXPR20 string to_string<char>(string&& x) {
170 return _NEFORCE move(x);
171}
172
179template <typename CharT, enable_if_t<is_character_v<CharT>, int> = 0>
180NEFORCE_CONSTEXPR20 wstring to_wstring(const CharT& x) {
182}
183
190template <typename CharT, enable_if_t<is_character_v<CharT>, int> = 0>
191NEFORCE_CONSTEXPR20 wstring to_wstring(const CharT* x) {
193}
194
201template <typename CharT, enable_if_t<is_character_v<CharT>, int> = 0>
202NEFORCE_CONSTEXPR20 wstring to_wstring(const basic_string_view<CharT> x) {
204}
205
212template <typename CharT, enable_if_t<is_character_v<CharT>, int> = 0>
213NEFORCE_CONSTEXPR20 wstring to_wstring(const basic_string<CharT>& x) {
215}
216
223template <typename CharT, enable_if_t<is_character_v<CharT>, int> = 0>
224NEFORCE_CONSTEXPR20 wstring to_wstring(basic_string<CharT>&& x) {
225 return icharacter<package_t<CharT>, CharT>::to_wstring(x.view());
226}
227
233template <>
234NEFORCE_CONSTEXPR20 wstring to_wstring<wchar_t>(wstring&& x) {
235 return _NEFORCE move(x);
236}
237
238#ifdef NEFORCE_STANDARD_20
239
246template <typename CharT, enable_if_t<is_character_v<CharT>, int> = 0>
247NEFORCE_CONSTEXPR20 u8string to_u8string(const CharT& x) {
249}
250
257template <typename CharT, enable_if_t<is_character_v<CharT>, int> = 0>
258NEFORCE_CONSTEXPR20 u8string to_u8string(const CharT* x) {
260}
261
268template <typename CharT, enable_if_t<is_character_v<CharT>, int> = 0>
269NEFORCE_CONSTEXPR20 u8string to_u8string(const basic_string_view<CharT> x) {
271}
272
279template <typename CharT, enable_if_t<is_character_v<CharT>, int> = 0>
280NEFORCE_CONSTEXPR20 u8string to_u8string(const basic_string<CharT>& x) {
282}
283
290template <typename CharT, enable_if_t<is_character_v<CharT>, int> = 0>
291NEFORCE_CONSTEXPR20 u8string to_u8string(basic_string<CharT>&& x) {
292 return icharacter<package_t<CharT>, CharT>::to_u8string(x.view());
293}
294
300template <>
301NEFORCE_CONSTEXPR20 u8string to_u8string<char8_t>(u8string&& x) {
302 return _NEFORCE move(x);
303}
304
305#endif
306
313template <typename CharT, enable_if_t<is_character_v<CharT>, int> = 0>
314NEFORCE_CONSTEXPR20 u16string to_u16string(const CharT& x) {
316}
317
324template <typename CharT, enable_if_t<is_character_v<CharT>, int> = 0>
325NEFORCE_CONSTEXPR20 u16string to_u16string(const CharT* x) {
327}
328
335template <typename CharT, enable_if_t<is_character_v<CharT>, int> = 0>
336NEFORCE_CONSTEXPR20 u16string to_u16string(const basic_string_view<CharT> x) {
338}
339
346template <typename CharT, enable_if_t<is_character_v<CharT>, int> = 0>
347NEFORCE_CONSTEXPR20 u16string to_u16string(const basic_string<CharT>& x) {
349}
350
357template <typename CharT, enable_if_t<is_character_v<CharT>, int> = 0>
359 return icharacter<package_t<CharT>, CharT>::to_u16string(x.view());
360}
361
367template <>
369 return _NEFORCE move(x);
370}
371
378template <typename CharT, enable_if_t<is_character_v<CharT>, int> = 0>
379NEFORCE_CONSTEXPR20 u32string to_u32string(const CharT& x) {
381}
382
389template <typename CharT, enable_if_t<is_character_v<CharT>, int> = 0>
390NEFORCE_CONSTEXPR20 u32string to_u32string(const CharT* x) {
392}
393
400template <typename CharT, enable_if_t<is_character_v<CharT>, int> = 0>
401NEFORCE_CONSTEXPR20 u32string to_u32string(const basic_string_view<CharT> x) {
403}
404
411template <typename CharT, enable_if_t<is_character_v<CharT>, int> = 0>
412NEFORCE_CONSTEXPR20 u32string to_u32string(const basic_string<CharT>& x) {
414}
415
422template <typename CharT, enable_if_t<is_character_v<CharT>, int> = 0>
424 return icharacter<package_t<CharT>, CharT>::to_u32string(x.view());
425}
426
432template <>
434 return _NEFORCE move(x);
435}
436 // UTFConverts
438
439NEFORCE_END_NAMESPACE__
440#endif // NEFORCE_CORE_INTERFACE_ICHARACTER_HPP__
基本字符串视图模板
基础字符串模板
NEFORCE_NODISCARD NEFORCE_CONSTEXPR20 view_type view() const noexcept
获取字符串视图
NEFORCE_INLINE17 constexpr bool is_character_v
is_character的便捷变量模板
constexpr Iterator2 move(Iterator1 first, Iterator1 last, Iterator2 result) noexcept(noexcept(inner::__move_aux(first, last, result)))
移动范围元素
basic_string< char16_t > u16string
UTF-16字符串
basic_string< char8_t > u8string
UTF-8字符串
basic_string< wchar_t > wstring
宽字符字符串
basic_string< char32_t > u32string
UTF-32字符串
NEFORCE_CONSTEXPR20 u8string to_u8string< char8_t >(u8string &&x)
char8_t类型右值UTF-8字符串特化 - 直接移动
NEFORCE_CONSTEXPR20 u16string to_u16string< char16_t >(u16string &&x)
char16_t类型右值UTF-16字符串特化 - 直接移动
NEFORCE_CONSTEXPR20 u8string to_u8string(const CharT &x)
将字符转换为UTF-8字符串
NEFORCE_CONSTEXPR20 wstring to_wstring(const CharT &x)
将字符转换为宽字符串
NEFORCE_CONSTEXPR20 u16string to_u16string(const CharT &x)
将字符转换为UTF-16字符串
NEFORCE_CONSTEXPR20 u32string to_u32string< char32_t >(u32string &&x)
char32_t类型右值UTF-32字符串特化 - 直接移动
NEFORCE_CONSTEXPR20 string to_string< char >(string &&x)
char类型右值字符串特化 - 直接移动
NEFORCE_CONSTEXPR20 string to_string(const CharT &c)
将字符转换为普通字符串
NEFORCE_CONSTEXPR20 u32string to_u32string(const CharT &x)
将字符转换为UTF-32字符串
NEFORCE_CONSTEXPR20 wstring to_wstring< wchar_t >(wstring &&x)
wchar_t类型右值宽字符串特化 - 直接移动
基础数值包装接口
字符串类型别名和实用函数
字符类型接口
static NEFORCE_CONSTEXPR20 wstring to_wstring(const basic_string_view< CharT > &obj)
转换为宽字符串
constexpr icharacter(CharT value) noexcept
构造函数
static NEFORCE_CONSTEXPR20 u32string to_u32string(const basic_string_view< CharT > &obj)
转换为UTF-32字符串
static NEFORCE_CONSTEXPR20 u16string to_u16string(const basic_string_view< CharT > &obj)
转换为UTF-16字符串
static NEFORCE_CONSTEXPR20 string to_string(const basic_string_view< CharT > &obj)
转换为普通字符串
static NEFORCE_CONSTEXPR20 u8string to_u8string(const basic_string_view< CharT > &obj)
转换为UTF-8字符串
package_type value_
存储的数值
NEFORCE_NODISCARD constexpr package_type value() const noexcept
获取数值