9#define const_ansichar_trigger const_char_pointer
12template < prototype_
character CHARACTER >
13CLASS_DECL_ACME
constexpr memsize character_count_to_byte_length(
const CHARACTER * pszTrigger, character_count nCharLength)
16 return (::memsize)((nCharLength) *
sizeof(
CHARACTER));
21template < prototype_
character CHARACTER >
22CLASS_DECL_ACME
constexpr memsize character_count_to_byte_length_constrain_source_length(
const CHARACTER * pszTrigger, character_count nCharLength)
25 return (::memsize)::minimum((nCharLength) *
sizeof(
CHARACTER), (string_get_length(pszTrigger) + 1) *
sizeof(
CHARACTER));
30template < prototype_
character CHARACTER >
31CLASS_DECL_ACME
constexpr character_count byte_length_to_character_count(
const CHARACTER * pszTrigger, memsize nByteLength)
34 return (::character_count)((nByteLength /
sizeof(
CHARACTER)));
39template < prototype_
character CHARACTER >
40CLASS_DECL_ACME
constexpr memsize null_terminated_character_count_to_byte_length(
const CHARACTER * pszTrigger, character_count nCharLength)
43 return (::memsize)((nCharLength + 1) *
sizeof(
CHARACTER));
48template < prototype_
character CHARACTER >
49constexpr character_count null_terminated_byte_length_to_character_count(
const CHARACTER * pszTrigger, memsize nByteLength)
52 return (::character_count)((nByteLength /
sizeof(
CHARACTER)) - 1);
57CLASS_DECL_ACME
void string_count_copy(::ansi_character * pchDest, const_char_pointer pchSrc, character_count nChars)
noexcept;
58CLASS_DECL_ACME
void string_count_copy(::ansi_character * pchDest,
size_t nDestLen, const_char_pointer pchSrc, character_count nChars)
noexcept;
59CLASS_DECL_ACME
void overlapped_string_count_copy(::ansi_character * pchDest, const_char_pointer pchSrc, character_count nChars)
noexcept;
62CLASS_DECL_ACME ::i32 _string_compare(const_char_pointer pszA, const_char_pointer pszB)
noexcept;
63CLASS_DECL_ACME ::i32 case_insensitive__string_compare(const_char_pointer pszA, const_char_pointer pszB)
noexcept;
64CLASS_DECL_ACME ::i32 _string_count_compare(const_char_pointer pszA, const_char_pointer pszB, character_count len)
noexcept;
65CLASS_DECL_ACME ::i32 case_insensitive__string_count_compare(const_char_pointer pszA, const_char_pointer pszB, character_count len)
noexcept;
66CLASS_DECL_ACME ::std::strong_ordering _string_collate(const_char_pointer pszA, const_char_pointer pszB)
noexcept;
67CLASS_DECL_ACME ::std::strong_ordering _case_insensitive_string_collate(const_char_pointer pszA, const_char_pointer pszB)
noexcept;
68CLASS_DECL_ACME ::std::strong_ordering _string_count_collate(const_char_pointer pszA, const_char_pointer pszB, character_count len)
noexcept;
69CLASS_DECL_ACME ::std::strong_ordering _case_insensitive_string_count_collate(const_char_pointer pszA, const_char_pointer pszB, character_count len)
noexcept;
72CLASS_DECL_ACME ::i32 string_compare(const_char_pointer pszA, character_count sizeA, const_char_pointer pszB, character_count sizeB)
noexcept;
73CLASS_DECL_ACME ::i32 string_compare(const_char_pointer pszA, const_char_pointer pszB)
noexcept;
74CLASS_DECL_ACME ::i32 case_insensitive_string_compare(const_char_pointer pszA, const_char_pointer pszB)
noexcept;
75CLASS_DECL_ACME ::i32 string_count_compare(const_char_pointer pszA, const_char_pointer pszB, character_count len)
noexcept;
76CLASS_DECL_ACME ::i32 case_insensitive_string_count_compare(const_char_pointer pszA, const_char_pointer pszB, character_count len)
noexcept;
77CLASS_DECL_ACME ::std::strong_ordering string_collate(const_char_pointer pszA, const_char_pointer pszB)
noexcept;
78CLASS_DECL_ACME ::std::strong_ordering case_insensitive_string_collate(const_char_pointer pszA, const_char_pointer pszB)
noexcept;
79CLASS_DECL_ACME ::std::strong_ordering string_count_collate(const_char_pointer pszA, const_char_pointer pszB, character_count len)
noexcept;
80CLASS_DECL_ACME ::std::strong_ordering case_insensitive_string_count_collate(const_char_pointer pszA, const_char_pointer pszB, character_count len)
noexcept;
84inline ::i32 _string_count_compare(const ::ansi_character* pszA, const ::ansi_character* pszB, character_count len)
noexcept {
return strncmp(pszA, pszB, len); }
87inline ::i32 _case_insensitive_string_count_compare(const ::ansi_character* pszA, const ::ansi_character* pszB, character_count len)
noexcept {
return strncasecmp(pszA, pszB, len); }
89inline ::i32 _case_insensitive_string_count_compare(const ::ansi_character* pszA, const ::ansi_character* pszB, character_count len)
noexcept {
return strnicmp(pszA, pszB, len); }
92inline bool string_equals(const_char_pointer pszA, const_char_pointer pszB)
noexcept{
return string_compare(pszA, pszB) == 0; }
94CLASS_DECL_ACME character_count string_get_length(const_char_pointer psz)
noexcept;
95CLASS_DECL_ACME character_count string_get_length2(const ::ansi_character* psz, character_count sizeMaximumInterest)
noexcept;
96CLASS_DECL_ACME character_count string_safe_length(const_char_pointer psz)
noexcept;
97CLASS_DECL_ACME character_count string_safe_length2(const ::ansi_character* psz, character_count sizeMaximumInterest)
noexcept;
98CLASS_DECL_ACME ::ansi_character * string_lowercase(::ansi_character * psz, character_count size)
noexcept;
102CLASS_DECL_ACME const_char_pointer string_find_character(const_char_pointer pszBlock, ::ansi_character chMatch)
noexcept;
103CLASS_DECL_ACME const_char_pointer string_find_character(const_char_pointer psz, const_char_pointer pszEnd, ::ansi_character chMatch)
noexcept;
104CLASS_DECL_ACME const_char_pointer string_rear_find_character(const_char_pointer psz, ::ansi_character ch)
noexcept;
105CLASS_DECL_ACME const_char_pointer string_find_string(const_char_pointer pszBlock, const_char_pointer pszMatch)
noexcept;
106CLASS_DECL_ACME const_char_pointer string_rear_find_string(const_char_pointer psz, const_char_pointer pszFind, character_count iStart)
noexcept;
107CLASS_DECL_ACME const_char_pointer case_insensitive_string_find_string(const_char_pointer pszBlock, const_char_pointer pszMatch)
noexcept;
110CLASS_DECL_ACME ::ansi_character character_tolower(::ansi_character ansich)
noexcept;
111CLASS_DECL_ACME ::ansi_character character_toupper(::ansi_character ansich)
noexcept;
117CLASS_DECL_ACME ::ansi_character character_tolower(::ansi_character ansich)
noexcept;
118CLASS_DECL_ACME ::ansi_character character_toupper(::ansi_character ansich)
noexcept;
121CLASS_DECL_ACME
bool character_isalpha(::ansi_character ansich)
noexcept;
122CLASS_DECL_ACME
bool character_isalnum(::ansi_character ansich)
noexcept;
123CLASS_DECL_ACME
bool character_isdigit(::ansi_character ansich)
noexcept;
124CLASS_DECL_ACME
bool character_isspace(::ansi_character ansich)
noexcept;
125CLASS_DECL_ACME
bool character_isupper(::ansi_character ansich)
noexcept;
128CLASS_DECL_ACME
bool character_isxdigit(::ansi_character ansich)
noexcept;
131CLASS_DECL_ACME ::ansi_character * string_uppercase(::ansi_character * psz, character_count size)
noexcept;
132CLASS_DECL_ACME ::ansi_character * string_reverse(::ansi_character * psz)
noexcept;
136CLASS_DECL_ACME character_count string_skip_any_character_in(const_char_pointer pszBlock, const_char_pointer pszSet)
noexcept;
137CLASS_DECL_ACME character_count string_find_first_character_in(const_char_pointer pszBlock, const_char_pointer pszSet)
noexcept;
140CLASS_DECL_ACME character_count get_formatted_length(const_char_pointer pszFormat, va_list args)
noexcept;
141CLASS_DECL_ACME character_count _string_format(::ansi_character * pszBuffer, character_count nlength, const_char_pointer pszFormat, va_list args)
noexcept;
142CLASS_DECL_ACME
void flood_characters(::ansi_character * psz, ::ansi_character ch, character_count len)
noexcept;
144CLASS_DECL_ACME character_count unichar_count(const_char_pointer pstr);
147CLASS_DECL_ACME ::i64 string_to_signed(const_char_pointer psz);
148CLASS_DECL_ACME ::u64 as_u64(const_char_pointer psz);
149CLASS_DECL_ACME ::f64 string_to_floating(const_char_pointer psz);