79 #define STR_CRLF "\r\n"
84 static const char k_szEscEncode[12];
85 static const char k_szEscDecode[12];
89 template<
typename TYPE >
92 template<
typename TYPE >
101 template<
typename TYPE >
105 if (pszStr ==
nullptr)
107 if (pszStr[0] ==
'\0')
112 template<
typename TYPE >
116 if (pszStr ==
nullptr)
118 if (pszStr[0] ==
'\0')
123 template<
typename TYPE >
128 if (pszStr ==
nullptr)
131 for (; i < iLenMax && pszStr[i] !=
'\0'; i++)
137 template<
typename TYPE >
141 ASSERT(pszEnd !=
nullptr);
142 ASSERT(pszStart !=
nullptr);
143 INT_PTR i = (pszEnd - pszStart);
148 template<
typename TYPE >
150 template<
typename TYPE >
152 template<
typename TYPE >
154 template<
typename TYPE >
156 template<
typename TYPE >
158 template<
typename TYPE >
160 template<
typename TYPE >
163 template<
typename TYPE >
165 template<
typename TYPE >
167 template<
typename TYPE >
169 template<
typename TYPE >
172 return FindCharN(pszStr, ch) >= 0;
174 template<
typename TYPE >
176 template<
typename TYPE >
179 template<
typename TYPE >
181 template<
typename TYPE >
183 template<
typename TYPE >
186 template<
typename TYPE>
197 template<
typename TYPE>
201 return(pStr + GetNonWhitespaceI(pStr, iLenMax));
203 template<
typename TYPE>
206 return(pStr + GetNonWhitespaceI(pStr, iLenMax));
208 template<
typename TYPE >
210 template<
typename TYPE >
213 template<
typename TYPE >
217 template<
typename TYPE >
219 template<
typename TYPE >
221 template<
typename TYPE >
223 template<
typename TYPE >
226 #define STR_TABLEFIND_N(k,t) StrT::TableFind( k, t, sizeof(t[0]))
227 #define STR_TABLEFIND_NH(k,t) StrT::TableFindHead( k, t, sizeof(t[0]))
228 #define STR_TABLEFIND_S(k,t) StrT::TableFindSorted( k, t, _countof(t)-1, sizeof(t[0]))
229 #define STR_TABLEFIND_SH(k,t) StrT::TableFindHeadSorted( k, t, _countof(t)-1, sizeof(t[0]))
232 template<
typename TYPE >
238 template<
typename TYPE >
241 template<
typename TYPE >
246 if (pszDst ==
nullptr)
249 for (; pszDst[i] !=
'\0' && i < iLenCharsMax; i++)
254 template<
typename TYPE >
259 if (pszDst ==
nullptr)
262 for (; pszDst[i] !=
'\0' && i < iLenCharsMax; i++)
269 template<
typename TYPE >
272 template<
typename TYPE >
281 va_start(vargs, pszFormat);
287 template<
typename TYPE >
289 template<
typename TYPE>
292 template<
typename TYPE >
294 template<
typename TYPE >
297 template<
typename TYPE >
299 template<
typename TYPE >
302 template<
typename TYPE >
304 template<
typename TYPE >
307 template<
typename TYPE >
310 template<
typename TYPE >
312 template<
typename TYPE >
319 template<
typename TYPE >
321 template<
typename TYPE >
324 template<
typename TYPE >
328 return (UINT_PTR)toUL(pszStr, ppszStrEnd, nBaseRadix);
330 template<
typename TYPE >
334 return (INT_PTR)toIL(pszStr, ppszStrEnd, nBaseRadix);
337 template<
typename TYPE >
341 return (UINT)toUL(pszStr, ppszStrEnd, nBaseRadix);
343 template<
typename TYPE >
348 return (
int)toIL(pszStr, ppszStrEnd, nBaseRadix);
352 template<
typename TYPE>
354 template<
typename TYPE >
356 template<
typename TYPE >
359 template<
typename TYPE>
362 template<
typename TYPE >
368 return ULtoA(nVal, pszOut, iStrMax, nBaseRadix);
370 template<
typename TYPE >
377 return ILtoA(nVal, pszOut, iStrMax, nBaseRadix);
381 template<
typename TYPE>
383 template<
typename TYPE >
389 template<
typename TYPE =
char >
403 ASSERT(ppszTableInit !=
nullptr);
404 return *((
const TYPE*
const*)(((
const BYTE*)ppszTableInit) + (i * nSizeElem)));
409 static ITERATE_t GRAYCALL GetTableCount(
const void* ppszTableInit,
size_t nElemSize);
410 static ITERATE_t GRAYCALL GetTableCountSorted(
const void* ppszTableInit,
size_t nElemSize);
421 if (pszStr ==
nullptr)
425 return Len(pszStr, k_LEN_MAX);
434 if (pszStr ==
nullptr)
438 return Len(pszStr, k_LEN_MAX);
442 template<>
inline UINT64 StrT::toUL<char>(
const char* pszStr,
const char** ppszStrEnd,
RADIX_t nBaseRadix)
446 template<>
inline UINT64 StrT::toUL<wchar_t>(
const wchar_t* pszStr,
const wchar_t** ppszStrEnd,
RADIX_t nBaseRadix)
450 const char* ppszStrEndA =
nullptr;
451 const UINT64 nVal =
StrNum::toUL(szTmp, &ppszStrEndA, nBaseRadix);
452 if (ppszStrEnd !=
nullptr)
454 *ppszStrEnd = pszStr +
StrT::Diff(ppszStrEndA, szTmp);
459 template<>
inline INT64 StrT::toIL<char>(
const char* pszStr,
const char** ppszStrEnd,
RADIX_t nBaseRadix)
463 template<>
inline INT64 StrT::toIL<wchar_t>(
const wchar_t* pszStr,
const wchar_t** ppszStrEnd,
RADIX_t nBaseRadix)
467 const char* ppszStrEndA;
468 INT64 nVal =
StrNum::toIL(szTmp, &ppszStrEndA, nBaseRadix);
469 if (ppszStrEnd !=
nullptr)
471 *ppszStrEnd = pszStr +
StrT::Diff(ppszStrEndA, szTmp);
476 template<>
inline double StrT::toDouble<char>(
const char* pszStr,
const char** ppszStrEnd)
479 if (pszStr ==
nullptr)
481 return ::strtod(pszStr, (
char**)ppszStrEnd);
486 template<>
inline double StrT::toDouble<wchar_t>(
const wchar_t* pszStr,
const wchar_t** ppszStrEnd)
489 if (pszStr ==
nullptr)
491 return ::wcstod(pszStr, (
wchar_t**)ppszStrEnd);
496 const char* ppszStrEndA;
498 if (ppszStrEnd !=
nullptr)
500 *ppszStrEnd = pszStr +
StrT::Diff(ppszStrEndA, szTmp);
506 template<>
inline char* StrT::ULtoA2<char>(UINT64 uVal,
char* pszOut,
StrLen_t iOutMax,
RADIX_t nBaseRadix,
char chRadixA)
508 return StrNum::ULtoA2(uVal, pszOut, iOutMax, nBaseRadix, chRadixA);
510 template<>
inline wchar_t* StrT::ULtoA2<wchar_t>(UINT64 uVal,
wchar_t* pszOut,
StrLen_t iOutMax,
RADIX_t nBaseRadix,
char chRadixA)
515 if (iLenInc > iOutMax)
517 pszOut += (iOutMax - iLenInc);
543 template<>
inline StrLen_t StrT::DtoA<char>(
double nVal, OUT
char* pszOut,
StrLen_t iStrMax,
int iDecPlaces,
char chE)
546 return StrNum::DToATestLegacy(nVal, pszOut, iStrMax, iDecPlaces);
548 return StrNum::DtoAG(nVal, pszOut, iStrMax, iDecPlaces, chE);
552 template<>
inline StrLen_t StrT::DtoA<wchar_t>(
double nVal, OUT
wchar_t* pszOut,
StrLen_t iOutMax,
int iDecPlaces,
char chE)
556 StrLen_t iStrLen = StrNum::DToATestLegacy(nVal, szTmp,
_countof(szTmp), iDecPlaces);
564 template<>
inline StrLen_t StrT::ULtoAK<char>(UINT64 uVal, OUT
char* pszOut,
StrLen_t iStrMax, UINT nKUnit,
bool bSpace)
569 template<>
inline StrLen_t StrT::ULtoAK<wchar_t>(UINT64 uVal, OUT
wchar_t* pszOut,
StrLen_t iStrMax, UINT nKUnit,
bool bSpace)
577 template<>
StrLen_t inline StrT::vsprintfN<char>(OUT
char* pszOut,
StrLen_t iLenOutMax,
const char* pszFormat, va_list vlist)
592 #if defined(__linux__)
593 return ::vsnprintf(pszOut, iLenOutMax, pszFormat, vlist);
594 #elif USE_CRT && (_MSC_VER >= 1400) && ! defined(UNDER_CE)
596 return ::_vsnprintf_s(pszOut, (
size_t)(iLenOutMax), (
size_t)(iLenOutMax - 1), pszFormat, vlist);
599 return ::_vsnprintf(pszOut, iLenOutMax, pszFormat, vlist);
606 template<>
StrLen_t inline StrT::vsprintfN<wchar_t>(OUT
wchar_t* pszOut,
StrLen_t iLenOutMax,
const wchar_t* pszFormat, va_list vlist)
615 #if defined(__linux__)
616 return ::vswprintf(pszOut, iLenOutMax, pszFormat, vlist);
617 #elif USE_CRT && (_MSC_VER >= 1400) && ! defined(UNDER_CE)
619 return ::_vsnwprintf_s(pszOut, (
size_t)(iLenOutMax), (
size_t)(iLenOutMax - 1), pszFormat, vlist);
622 return ::_vsnwprintf(pszOut, iLenOutMax, pszFormat, vlist);
635 return bVal ?
"1" :
"0";
639 return bVal ? L
"1" : L
"0";
#define NOEXCEPT
Definition: GrayCore.h:73
#define GRAYCORE_LINK
Definition: GrayCore.h:47
#define GRAYCALL
declare calling convention for static functions so everyone knows the arg passing scheme....
Definition: GrayCore.h:36
#define STRMAX(x)
Get Max size of static string space. minus the '\0' terminator character.
Definition: StrConst.h:33
#define TYPE
Definition: StrT.cpp:38
#define ASSERT(exp)
Definition: cDebugAssert.h:87
#define _countof(a)
Definition: cKernel.h:35
#define UNITTEST_FRIEND(n)
Define this in the class body to be unit tested. Allow the unit test to access private/protected stuf...
Definition: cUnitTestDecl.h:17
< The main namespace for all Core functions.
Definition: GrayCore.cpp:14
int COMPARE_t
result of compare. 0=same, 1=a>b, -1=a<b
Definition: cValT.h:17
const StrLen_t k_StrLen_UNK
use the default/current length of the string argument.
Definition: StrConst.h:34
int StrLen_t
the length of a string in chars (bytes for UTF8, wchar_t for UNICODE). or offset in characters....
Definition: StrConst.h:32
UINT32 STRP_MASK_t
bit mask of STRP_TYPE_
Definition: StrT.h:64
const HASHCODE_t k_HASHCODE_CLEAR
not a valid index.
Definition: GrayCore.h:118
STRP_TYPE_
Definition: StrT.h:49
@ STRP_EMPTY_SKIP
merge/skip empty tokens
Definition: StrT.h:60
@ STRP_END_WHITE
trim end whitespace off token.
Definition: StrT.h:55
@ STRP_MERGE_CRNL
merge "\r\n" (may also be separators.) (newline = linefeed)
Definition: StrT.h:59
@ STRP_0
Definition: StrT.h:52
@ STRP_EMPTY_STOP
Stop when we hit an empty token.
Definition: StrT.h:61
@ STRP_SPACE_SEP
allow space separator only if non space not already used.
Definition: StrT.h:54
@ STRP_DEF
default parsing for a line with , separators.
Definition: StrT.h:57
@ STRP_CHECK_BLOCKS
check for special nested block sequences. "{[("
Definition: StrT.h:56
@ STRP_ALL
all parsing options on.
Definition: StrT.h:62
@ STRP_START_WHITE
remove start whitespace from each token
Definition: StrT.h:53
int ITERATE_t
like size_t but signed
Definition: Index.h:28
WORD RADIX_t
Base for convert of numbers to strings. e.g. 10 base vs 16 base hex numbers.
Definition: StrChar.h:27
STR_BLOCK_TYPE
< quotes/brackets and parenthesis must be matched.
Definition: StrT.h:27
@ STR_BLOCK_CURLY
{X} curly braces
Definition: StrT.h:39
@ STR_BLOCK_SQUARE
[X] brackets
Definition: StrT.h:40
@ STR_BLOCK_PAREN
(X) parenthesis
Definition: StrT.h:41
@ STR_BLOCK_QTY
Definition: StrT.h:44
@ STR_BLOCK_NONE
Definition: StrT.h:32
@ STR_BLOCK_QUOTE
"X" double quotes
Definition: StrT.h:35
UINT32 HASHCODE32_t
always 32 bits.
Definition: GrayCore.h:117
UINT32 STR_BLOCKS_t
bit mask of STR_BLOCK_TYPE
Definition: StrT.h:46
static wchar_t ToUpperA(wchar_t ch) noexcept
Definition: StrChar.h:207
static bool IsSpace(wchar_t ch) noexcept
Definition: StrChar.h:89
static wchar_t ToLowerA(wchar_t ch) noexcept
Definition: StrChar.h:231
static const StrLen_t k_LEN_MAX_DIGITS
Largest number we can represent in double format + some extra places for post decimal....
Definition: StrNum.h:26
static StrLen_t __stdcall ILtoA(INT64 nVal, OUT char *pszOut, StrLen_t iStrMax, RADIX_t nBaseRadix=10)
Definition: StrNum.cpp:239
static const StrLen_t k_LEN_MAX_DIGITS_INT
Largest 64 bits base 2 not including sign or '\0' is only 64 digits.
Definition: StrNum.h:27
static INT64 __stdcall toIL(const char *pszInp, const char **ppszInpEnd=(const char **) nullptr, RADIX_t nBaseRadix=10)
Definition: StrNum.cpp:129
static StrLen_t __stdcall GetNumberString(OUT char *pszOut, const wchar_t *pszInp, StrLen_t iStrMax=k_LEN_MAX_DIGITS)
Definition: StrNum.cpp:27
static StrLen_t __stdcall DtoAG(double dVal, OUT char *pszOut, StrLen_t iStrMax, int iDecPlacesWanted=-1, char chE=- 'e')
Definition: StrNum.cpp:345
static double __stdcall toDouble(const char *pszInp, const char **ppszInpEnd=(const char **) nullptr)
Definition: StrNum.cpp:356
static StrLen_t __stdcall ULtoA(UINT64 nVal, OUT char *pszOut, StrLen_t iStrMax, RADIX_t nBaseRadix=10)
Definition: StrNum.cpp:215
static StrLen_t __stdcall DtoAG2(double dVal, OUT char *pszOut, int iDecPlacesWanted=-1, char chE=- 'e')
Definition: StrNum.cpp:261
static StrLen_t __stdcall ULtoAK(UINT64 uVal, OUT char *pszOut, StrLen_t iStrMax, UINT nKUnit, bool bSpace)
Definition: StrNum.cpp:145
static char *__stdcall ULtoA2(UINT64 uVal, OUT char *pszOut, StrLen_t iStrMax, RADIX_t nBaseRadix=10, char chRadixA='A')
Definition: StrNum.cpp:187
static UINT64 __stdcall toUL(const char *pszInp, const char **ppszInpEnd=(const char **) nullptr, RADIX_t nBaseRadix=0)
Definition: StrNum.cpp:54
static int toI(const TYPE *pszStr, const TYPE **ppszStrEnd=nullptr, RADIX_t nBaseRadix=10)
Definition: StrT.h:344
static __DECL_IMPORT TYPE *__stdcall FindChar(const TYPE *pszStr, TYPE ch, StrLen_t iLen=StrT::k_LEN_MAX) noexcept
static const StrLen_t k_LEN_MAX
arbitrary max size for Format() etc. NOTE: _MSC_VER says stack frame should be at least 16384
Definition: StrT.h:75
static __DECL_IMPORT bool __stdcall IsPrintable(const TYPE *pStr, StrLen_t iLenChars=StrT::k_LEN_MAX)
static StrLen_t vsprintfN(OUT TYPE *pszOut, StrLen_t iLenOutMax, const TYPE *pszFormat, va_list vlist)
static __DECL_IMPORT bool __stdcall StartsWithI(const TYPE *pszStr2, const TYPE *pszPrefix)
static __DECL_IMPORT StrLen_t __stdcall TrimWhitespaceEnd(TYPE *pStr, StrLen_t iLenChars=k_StrLen_UNK)
static __DECL_IMPORT StrLen_t __stdcall GetWhitespaceEnd(const TYPE *pStr, StrLen_t iLenChars=k_StrLen_UNK)
static bool HasChar(const TYPE *pszStr, TYPE ch) noexcept
Definition: StrT.h:170
static __DECL_IMPORT COMPARE_t __stdcall CmpIN(const TYPE *pszStr1, const TYPE *pszStr2, StrLen_t iLenMaxChars) noexcept
static __DECL_IMPORT COMPARE_t __stdcall Cmp(const TYPE *pszStr1, const TYPE *pszStr2)
static __DECL_IMPORT bool __stdcall IsWhitespace(const TYPE *pStr, StrLen_t iLenChars=StrT::k_LEN_MAX)
static __DECL_IMPORT StrLen_t __stdcall MatchRegEx(const TYPE *pText, const TYPE *pRegExPattern, bool bIgnoreCase, StrLen_t nTextMax=k_StrLen_UNK)
static __DECL_IMPORT StrLen_t __stdcall FindWord(const TYPE *pTextSearch, const TYPE *pszKeyWord, StrLen_t iLenMax=StrT::k_LEN_MAX)
static const TYPE * Cast(const TYPE *pszStr)
Definition: StrT.h:93
static __DECL_IMPORT TYPE *__stdcall FindCharRev(const TYPE *pszStr, TYPE ch, StrLen_t iLen=k_StrLen_UNK)
static __DECL_IMPORT StrLen_t __stdcall FindCharN(const TYPE *pszStr, TYPE ch) noexcept
static __DECL_IMPORT ITERATE_t __stdcall TableFindSorted(const TYPE *pszFindThis, const void *ppszTableInit, ITERATE_t iCountMax, size_t nElemSize=sizeof(const TYPE *))
static StrLen_t UtoA(UINT32 nVal, OUT TYPE *pszOut, StrLen_t iStrMax, RADIX_t nBaseRadix=10)
Definition: StrT.h:363
static __DECL_IMPORT ITERATE_t __stdcall TableFindHeadSorted(const TYPE *pszFindHead, const void *ppszTableInit, ITERATE_t iCountMax, size_t nElemSize=sizeof(const TYPE *))
static TYPE * GetNonWhitespace(TYPE *pStr, StrLen_t iLenMax=StrT::k_LEN_MAX) noexcept
Definition: StrT.h:204
static bool IsNullOrEmpty(const TYPE *pszStr) noexcept
Definition: StrT.h:102
static StrLen_t Len(const TYPE *pszStr, StrLen_t iLenMax) noexcept
Definition: StrT.h:124
static __DECL_IMPORT TYPE *__stdcall FindStr(const TYPE *pszStr, const TYPE *pszFind, StrLen_t iLenMax=StrT::k_LEN_MAX)
static __DECL_IMPORT ITERATE_t __stdcall ParseCmds(TYPE *pszCmdLine, StrLen_t nCmdLenMax, TYPE **ppCmds, ITERATE_t iQtyMax, const TYPE *pszSep=nullptr, STRP_MASK_t uFlags=STRP_DEF)
static __DECL_IMPORT UINT64 __stdcall toUL(const TYPE *pszStr, const TYPE **ppszStrEnd=nullptr, RADIX_t nBaseRadix=0)
static __DECL_IMPORT ITERATE_t __stdcall ParseCmdsTmp(TYPE *pszTmp, StrLen_t iTmpSizeMax, const TYPE *pszCmdLine, TYPE **ppCmds, ITERATE_t iCmdQtyMax, const TYPE *pszSep=nullptr, STRP_MASK_t uFlags=STRP_DEF)
static __DECL_IMPORT COMPARE_t __stdcall CmpHeadI(const TYPE *pszFind, const TYPE *pszTableElem)
static __DECL_IMPORT TYPE *__stdcall FindStrI(const TYPE *pszStr, const TYPE *pszFind, StrLen_t iLenMax=StrT::k_LEN_MAX)
static __DECL_IMPORT HASHCODE32_t __stdcall GetHashCode32(const TYPE *pszStr, StrLen_t nLen=k_StrLen_UNK, HASHCODE32_t nHash=k_HASHCODE_CLEAR) noexcept
static __DECL_IMPORT StrLen_t __stdcall EscSeqAddQ(TYPE *pStrOut, const TYPE *pStrIn, StrLen_t iLenOutMax=StrT::k_LEN_MAX)
static void MakeLowerCase(TYPE *pszDst, StrLen_t iLenCharsMax) noexcept
Definition: StrT.h:255
static __DECL_IMPORT double __stdcall toDouble(const TYPE *pszStr, const TYPE **ppszStrEnd=nullptr)
static __DECL_IMPORT ITERATE_t __stdcall TableFind(const TYPE *pszFindThis, const void *ppszTableInit, size_t nElemSize=sizeof(const TYPE *))
static __DECL_IMPORT bool __stdcall EndsWithI(const TYPE *pszStr2, const TYPE *pszPostfix, StrLen_t nLenStr=k_StrLen_UNK)
static __DECL_IMPORT TYPE *__stdcall StripBlock(TYPE *pszText)
static const TYPE * CheckEmpty(const TYPE *pszStr) noexcept
Definition: StrT.h:113
static __DECL_IMPORT COMPARE_t __stdcall CmpN(const TYPE *pszStr1, const TYPE *pszStr2, StrLen_t iLenMaxChars) noexcept
static __DECL_IMPORT StrLen_t __stdcall EscSeqRemove(TYPE *pStrOut, const TYPE *pStrIn, StrLen_t iLenOutMax=StrT::k_LEN_MAX, StrLen_t iLenInMax=StrT::k_LEN_MAX)
static const TYPE * GetNonWhitespace(const TYPE *pStr, StrLen_t iLenMax=StrT::k_LEN_MAX) noexcept
Definition: StrT.h:198
static StrLen_t _cdecl sprintfN(OUT TYPE *pszOut, StrLen_t iLenOutMax, const TYPE *pszFormat,...)
Definition: StrT.h:273
static INT_PTR toIP(const TYPE *pszStr, const TYPE **ppszStrEnd=nullptr, RADIX_t nBaseRadix=10)
Definition: StrT.h:331
static void MakeUpperCase(TYPE *pszDst, StrLen_t iLenCharsMax) noexcept
Definition: StrT.h:242
static StrLen_t GetNonWhitespaceI(const TYPE *pStr, StrLen_t iLenMax=StrT::k_LEN_MAX) noexcept
Definition: StrT.h:187
static StrLen_t Len(const TYPE *pszStr) noexcept
static __DECL_IMPORT StrLen_t __stdcall EscSeqRemoveQ(TYPE *pStrOut, const TYPE *pStrIn, StrLen_t iLenOutMax=StrT::k_LEN_MAX, StrLen_t iLenInMax=StrT::k_LEN_MAX)
static StrLen_t ItoA(INT32 nVal, OUT TYPE *pszOut, StrLen_t iStrMax, RADIX_t nBaseRadix=10)
Definition: StrT.h:371
static StrLen_t Diff(const TYPE *pszEnd, const TYPE *pszStart)
Definition: StrT.h:138
static __DECL_IMPORT StrLen_t __stdcall DtoA(double nVal, OUT TYPE *pszOut, StrLen_t iStrMax, int iDecPlaces=-1, char chE=- 'e')
static UINT_PTR toUP(const TYPE *pszStr, const TYPE **ppszStrEnd=nullptr, RADIX_t nBaseRadix=0)
Definition: StrT.h:325
static __DECL_IMPORT INT64 __stdcall toIL(const TYPE *pszStr, const TYPE **ppszStrEnd=nullptr, RADIX_t nBaseRadix=10)
static __DECL_IMPORT TYPE *__stdcall FindBlockEnd(STR_BLOCK_TYPE eBlockType, const TYPE *pLine, StrLen_t iLenMax=StrT::k_LEN_MAX)
static __DECL_IMPORT StrLen_t __stdcall ReplaceX(TYPE *pDst, StrLen_t iDstLenMax, StrLen_t nDstIdx, StrLen_t iDstSegLen, const TYPE *pSrc, StrLen_t iSrcLen=k_StrLen_UNK)
static __DECL_IMPORT StrLen_t __stdcall ILtoA(INT64 nVal, OUT TYPE *pszOut, StrLen_t iOutMax, RADIX_t nBaseRadix=10)
static UINT toU(const TYPE *pszStr, const TYPE **ppszStrEnd=nullptr, RADIX_t nBaseRadix=0)
Definition: StrT.h:338
static __DECL_IMPORT StrLen_t __stdcall ULtoA(UINT64 nVal, TYPE *pszOut, StrLen_t iOutMax, RADIX_t nBaseRadix=10)
static __DECL_IMPORT ITERATE_t __stdcall TableFindHead(const TYPE *pszFindHead, const void *ppszTableInit, size_t nElemSize=sizeof(const TYPE *))
static __DECL_IMPORT StrLen_t __stdcall EscSeqAdd(TYPE *pStrOut, const TYPE *pStrIn, StrLen_t iLenOutMax=StrT::k_LEN_MAX)
static __DECL_IMPORT TYPE *__stdcall FindTokens(const TYPE *pszStr, const TYPE *pszTokens, StrLen_t iLenMax=StrT::k_LEN_MAX)
static __DECL_IMPORT StrLen_t __stdcall ULtoAK(UINT64 uVal, OUT TYPE *pszStr, StrLen_t iStrMax, UINT nKUnit=1024, bool bSpace=true)
static __DECL_IMPORT StrLen_t __stdcall CopyLen(TYPE *pszDst, const TYPE *pSrc, StrLen_t iLenCharsMax) noexcept
static __DECL_IMPORT TYPE *__stdcall TrimWhitespace(TYPE *pStr, StrLen_t iLenMax=StrT::k_LEN_MAX)
static __DECL_IMPORT TYPE *__stdcall ULtoA2(UINT64 uVal, TYPE *pszOut, StrLen_t iOutMax, RADIX_t nBaseRadix=10, char chRadixA='A')
static __DECL_IMPORT COMPARE_t __stdcall CmpI(const TYPE *pszStr1, const TYPE *pszStr2)
static StrLen_t __stdcall UTF8toUNICODE(wchar_t &wChar, const char *pInp, StrLen_t iSizeInpBytes)
Definition: StrU.cpp:133
static const TYPE *__stdcall GetBoolStr(bool bVal) noexcept
static const TYPE * GetTableElemU(const void *ppszTableInit, ITERATE_t i, size_t nSizeElem)
Definition: StrT.h:399
static const size_t k_ALLOC_MAX
256 * 64K = (arbitrary) largest reasonable single malloc.
Definition: cHeap.h:45