acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
wd16.h
1// Refactored by camilo on 2022-11-04 05:49 <3ThomasBorregaardSorensen!!
2#pragma once
3
4
5#define const_wd16char_trigger const ::wd16_character *
6
7#include <wchar.h>
8
9
10//CLASS_DECL_ACME constexpr character_count character_count_to_byte_length(const_wd16char_trigger, character_count nCharLength);
11//CLASS_DECL_ACME constexpr character_count byte_length_to_character_count(const_wd16char_trigger, memsize nByteLength);
12
13
14CLASS_DECL_ACME void string_count_copy(::wd16_character * pchDest, const ::wd16_character * pchSrc, character_count nChars) noexcept;
15CLASS_DECL_ACME void string_count_copy(::wd16_character * pchDest, size_t nDestLen, const ::wd16_character * pchSrc, character_count nChars) noexcept;
16CLASS_DECL_ACME void overlapped_string_count_copy(::wd16_character * pchDest, const ::wd16_character * pchSrc, character_count nChars) noexcept;
17
18
19CLASS_DECL_ACME ::i32 _string_compare(const ::wd16_character * pszA, const ::wd16_character * pszB) noexcept;
20CLASS_DECL_ACME ::i32 case_insensitive__string_compare(const ::wd16_character * pszA, const ::wd16_character * pszB) noexcept;
21CLASS_DECL_ACME ::i32 _string_count_compare(const ::wd16_character * pszA, const ::wd16_character * pszB, character_count len) noexcept;
22CLASS_DECL_ACME ::i32 case_insensitive__string_count_compare(const ::wd16_character * pszA, const ::wd16_character * pszB, character_count len) noexcept;
23CLASS_DECL_ACME ::std::strong_ordering _string_collate(const ::wd16_character * pszA, const ::wd16_character * pszB) noexcept;
24CLASS_DECL_ACME ::std::strong_ordering _case_insensitive_string_collate(const ::wd16_character * pszA, const ::wd16_character * pszB) noexcept;
25CLASS_DECL_ACME ::std::strong_ordering _string_count_collate(const ::wd16_character * pszA, const ::wd16_character * pszB, character_count len) noexcept;
26CLASS_DECL_ACME ::std::strong_ordering _case_insensitive_string_count_collate(const ::wd16_character * pszA, const ::wd16_character * pszB, character_count len) noexcept;
27
28
29CLASS_DECL_ACME ::i32 string_compare(const ::wd16_character * pszA, const ::wd16_character * pszB) noexcept;
30CLASS_DECL_ACME ::i32 case_insensitive_string_compare(const ::wd16_character * pszA, const ::wd16_character * pszB) noexcept;
31CLASS_DECL_ACME ::i32 string_count_compare(const ::wd16_character * pszA, const ::wd16_character * pszB, character_count len) noexcept;
32CLASS_DECL_ACME ::i32 case_insensitive_string_count_compare(const ::wd16_character * pszA, const ::wd16_character * pszB, character_count len) noexcept;
33CLASS_DECL_ACME ::std::strong_ordering string_collate(const ::wd16_character * pszA, const ::wd16_character * pszB) noexcept;
34CLASS_DECL_ACME ::std::strong_ordering case_insensitive_string_collate(const ::wd16_character * pszA, const ::wd16_character * pszB) noexcept;
35CLASS_DECL_ACME ::std::strong_ordering string_count_collate(const ::wd16_character * pszA, const ::wd16_character * pszB, character_count len) noexcept;
36CLASS_DECL_ACME ::std::strong_ordering case_insensitive_string_count_collate(const ::wd16_character * pszA, const ::wd16_character * pszB, character_count len) noexcept;
37#if defined(LINUX) || defined(__APPLE__) || defined(__BSD__) || defined(__ANDROID__)
38inline ::i32 _string_count_compare(const ::wd16_character* pszA, const ::wd16_character* pszB, character_count len) noexcept { return string_count_compare(pszA, pszB, len); }
39inline ::i32 _case_insensitive_string_count_compare(const ::wd16_character* pszA, const ::wd16_character* pszB, character_count len) noexcept { return case_insensitive_string_count_compare(pszA, pszB, len); }
40#else
41inline ::i32 _string_count_compare(const ::wd16_character* pszA, const ::wd16_character* pszB, character_count len) noexcept { return wcsncmp(pszA, pszB, len); }
42inline ::i32 _case_insensitive_string_count_compare(const ::wd16_character* pszA, const ::wd16_character* pszB, character_count len) noexcept { return wcsnicmp(pszA, pszB, len); }
43#endif
44
45
46CLASS_DECL_ACME character_count string_get_length(const ::wd16_character * psz) noexcept;
47CLASS_DECL_ACME character_count string_get_length2(const ::wd16_character* psz, character_count sizeMaximumInterest) noexcept;
48CLASS_DECL_ACME character_count string_safe_length(const ::wd16_character * psz) noexcept;
49CLASS_DECL_ACME character_count string_safe_length2(const ::wd16_character* psz, character_count sizeMaximumInterest) noexcept;
50CLASS_DECL_ACME ::wd16_character * string_lowercase(::wd16_character * psz, character_count size) noexcept;
51
52
53CLASS_DECL_ACME const ::wd16_character * string_find_character(const ::wd16_character * pszBlock, ::wd16_character chMatch) noexcept;
54CLASS_DECL_ACME const ::wd16_character * string_find_character(const ::wd16_character * psz, const ::wd16_character * pszEnd, ::wd16_character chMatch) noexcept;
55CLASS_DECL_ACME const ::wd16_character * string_rear_find_character(const ::wd16_character * psz, ::wd16_character ch) noexcept;
56CLASS_DECL_ACME const ::wd16_character * string_find_string(const ::wd16_character * pszBlock, const ::wd16_character * pszMatch) noexcept;
57CLASS_DECL_ACME const ::wd16_character * string_rear_find_string(const ::wd16_character * psz, const ::wd16_character * pszFind, character_count iStart) noexcept;
58CLASS_DECL_ACME const ::wd16_character * case_insensitive_string_find_string(const ::wd16_character * pszBlock, const ::wd16_character * pszMatch) noexcept;
59
60
61CLASS_DECL_ACME ::wd16_character character_tolower(::wd16_character wd16ch) noexcept;
62CLASS_DECL_ACME ::wd16_character character_toupper(::wd16_character wd16ch) noexcept;
63
64
65CLASS_DECL_ACME bool character_isalpha(::wd16_character ansich) noexcept;
66CLASS_DECL_ACME bool character_isalnum(::wd16_character ansich) noexcept;
67CLASS_DECL_ACME bool character_isdigit(::wd16_character ansich) noexcept;
68CLASS_DECL_ACME bool character_isspace(::wd16_character ansich) noexcept;
69
70
71CLASS_DECL_ACME bool character_isxdigit(::wd16_character ansich) noexcept;
72
73
74CLASS_DECL_ACME ::wd16_character * string_uppercase(::wd16_character * psz, character_count size) noexcept;
75CLASS_DECL_ACME ::wd16_character * string_reverse(::wd16_character * psz) noexcept;
76
77
78CLASS_DECL_ACME character_count string_skip_any_character_in(const ::wd16_character * pszBlock, const ::wd16_character * pszSet) noexcept;
79CLASS_DECL_ACME character_count string_find_first_character_in(const ::wd16_character * pszBlock, const ::wd16_character * pszSet) noexcept;
80
81
82CLASS_DECL_ACME character_count get_formatted_length(const ::wd16_character * pszFormat, va_list args) noexcept;
83CLASS_DECL_ACME character_count _string_format(::wd16_character * pszBuffer, character_count nlength, const ::wd16_character * pszFormat, va_list args) noexcept;
84CLASS_DECL_ACME void flood_characters(::wd16_character * psz, ::wd16_character ch, character_count len) noexcept;
85
86
87CLASS_DECL_ACME character_count unichar_count(const ::wd16_character * pstr);
88
89
90
91CLASS_DECL_ACME ::i64 string_to_signed(const ::wd16_character * psz);
92CLASS_DECL_ACME ::u64 as_u64(const ::wd16_character * psz);
93CLASS_DECL_ACME ::f64 string_to_floating(const ::wd16_character * psz);
94