feat(string): add single character utility and the corresponding testing

This commit is contained in:
2024-09-17 18:06:02 +08:00
parent 1f20b1af70
commit 5210db43b3
5 changed files with 881 additions and 22 deletions

View File

@ -20,7 +20,6 @@ NAMESPACE_MODULE_BEGIN(Utility)
#define NO_UNIQUE_ADDRESS [[no_unique_address]]
constexpr size_t INDEX_NONE = -1;
constexpr charw UNICODE_BOM = 0xfeff;
struct FForceInit { explicit FForceInit() = default; };
struct FNoInit { explicit FNoInit() = default; };

View File

@ -159,15 +159,6 @@ using int64 = NAMESPACE_STD::int64_t;
using float32 = float;
using float64 = double;
// Character types
using chara = char;
using charw = wchar_t;
using chart = charw;
using char8 = char8_t;
using char16 = char16_t;
using char32 = char32_t;
// Pointer types
using uintptr = NAMESPACE_STD::uintptr_t;
@ -181,20 +172,23 @@ using ssize_t = intptr_t;
using null_t = decltype(NULL);
using nullptr_t = NAMESPACE_STD::nullptr_t;
#if PLATFORM_LINUX
# define PLATFORM_TCHAR_IS_CHAR16 1
#else
# define PLATFORM_TCHAR_IS_CHAR16 0
#endif
// Define the TEXT macro
#if PLATFORM_TCHAR_IS_CHAR16
# define TEXT_PASTE(x) u ## x
#else
# define TEXT_PASTE(x) L ## x
#endif
#define TEXT(x) TEXT_PASTE(x)
NAMESPACE_PRIVATE_BEGIN
#define TEXT_PASTE(X) X
#define WTEXT_PASTE(X) L##X
#define U8TEXT_PASTE(X) u8##X
#define U16TEXT_PASTE(X) u##X
#define U32TEXT_PASTE(X) U##X
NAMESPACE_PRIVATE_END
#define TEXT(X) TEXT_PASTE(X)
#define WTEXT(X) WTEXT_PASTE(X)
#define U8TEXT(X) U8TEXT_PASTE(X)
#define U16TEXT(X) U16TEXT_PASTE(X)
#define U32TEXT(X) U32TEXT_PASTE(X)
NAMESPACE_MODULE_END(Utility)
NAMESPACE_MODULE_END(Redcraft)