16#ifdef _CONVERSION_DONT_USE_THREAD_LOCALE
24template<
typename _CharType =
wchar_t>
31 if (pszSource ==
NULL)
return -1;
32 return static_cast<int>(
wcslen(pszSource));
37 if (pszSource ==
NULL)
return 0;
59 _In_ int nSrcLength = -1)
64 wmemcpy(pszDest, pszSrc, nSrcLength);
71 _In_ int nSrcLength = -1)
91 return ::GetEnvironmentVariableW(pszVar, pszBuf, nBufLength);
105 return ::wcsstr(pszSource, pszSub);
112 return ::wcschr(pszSource, ch);
119 return ::wcsrchr(pszSource, ch);
126 return ::wcspbrk(pszSource, pszCharSet);
133 return ::wcscmp(psz1, psz2);
140 return ::_wcsicmp(psz1, psz2);
147 return (
int)
::wcsspn(pszBlock, pszSet);
163 return ::_vscwprintf(pszFormat,
args);
164 return ::vswprintf(pszDest, pszFormat,
args);
173 reinterpret_cast<LPWSTR>(&psz), 0, pArgList);
181 return ::SysAllocStringLen(pszSource,
nLength);
200 if (pszSource ==
NULL)
return 0;
201 return static_cast<int>(
strlen(pszSource));
220 _In_ int nDestLength,
222 _In_ int nSrcLength = -1)
224 if (nSrcLength == -1)
232 _In_ int nDestLength,
234 _In_ int nSrcLength = -1)
236 if (nSrcLength == -1)
239 memcpy(pszDest, pszSrc, nSrcLength);
254 return ::GetEnvironmentVariableA(pszVar, pszBuf, nBufLength);
268 return ::strstr(pszSource, pszSub);
275 return ::strchr(pszSource, ch);
282 return ::strrchr(pszSource, ch);
289 return ::strpbrk(pszSource, pszCharSet);
296 return ::strcmp(psz1, psz2);
303 return ::_stricmp(psz1, psz2);
310 return (
int)
::strspn(pszBlock, pszSet);
326 return ::_vscprintf(pszFormat,
args);
327 return ::vsprintf(pszDest, pszFormat,
args);
356namespace _CSTRING_IMPL_
358 template <
typename _CharType,
class StringTraits>
368template <
typename BaseType,
class StringTraits>
370 public CSimpleStringT <BaseType, _CSTRING_IMPL_::_MFCDLLTraitsCheck<BaseType, StringTraits>::c_bIsMFCDLLTraits>
408 template<
class StringTraits_>
412 *
this =
static_cast<const YCHAR*
>(strSrc);
417 template <
typename T_CHAR>
479 int length = pszSrc ? StringTraits::GetBaseTypeLength(pszSrc) : 0;
483 StringTraits::ConvertToBaseType(
result,
length, pszSrc);
501 return str1.Compare(str2) == 0;
506 return str1.Compare(psz2) == 0;
511 CStringT tmp(psz2, str1.GetManager());
517 return str1.GetLength() == 1 && str1[0] == ch2;
522 return str2.Compare(psz1) == 0;
527 CStringT tmp(psz1, str2.GetManager());
533 return str2.GetLength() == 1 && str2[0] == ch1;
538 return str1.Compare(str2) != 0;
543 return str1.Compare(psz2) != 0;
548 CStringT tmp(psz2, str1.GetManager());
554 return str1.GetLength() != 1 || str1[0] != ch2;
559 return str2.Compare(psz1) != 0;
564 CStringT tmp(psz1, str2.GetManager());
570 return str2.GetLength() != 1 || str2[0] != ch1;
593 return LoadString(_AtlBaseModule.GetResourceInstance(), nID);
612 int nLength = StringTraits::GetEnvironmentVariable(pszVar,
NULL, 0);
617 StringTraits::GetEnvironmentVariable(pszVar, pszBuffer,
nLength);
631 StringTraits::MakeLower(pszBuffer,
nLength);
642 StringTraits::MakeUpper(pszBuffer,
nLength);
776 StringTraits::FormatV(pszBuffer, pszFormat,
args);
786 if (
str.LoadString(nFormatID))
803 PXSTR psz = StringTraits::FormatMessageV(pszFormat, pArgList);
816 const int nOldLen = StringTraits::GetBaseTypeLength(pszOld);
817 const int nNewLen = StringTraits::GetBaseTypeLength(pszNew);
818 const int nDiff = nNewLen - nOldLen;
822 while ((pszFound = StringTraits::FindString(
pszString, pszOld)))
824 nResultLength += nDiff;
833 int nCount = 0, nRemaining =
nLength;
834 while (nRemaining && (pszNext = StringTraits::FindString(pszResult, pszOld)))
836 nRemaining -= (pszNext - pszResult);
837 nRemaining -= nOldLen;
841 pszResult = pszNext + nNewLen;
861 pszFirst = pszBuffer + (pszFirst -
pszString);
865 }
while ((pszFirst = StringTraits::FindChar(pszFirst + 1, chOld)));
879 if (!pszTokens || !pszTokens[0])
895 int iNewStart =
iStart + iRangeOffset;
898 iStart = iNewStart + nCount + 1;
900 return Mid(iNewStart, nCount);
910 static XCHAR str[] = {
' ',
'\t',
'\r',
'\n', 0 };
932 while (nCount <
nLength && StringTraits::FindChar(pszTargets, pszBuffer[nCount]))
962 while (
nLength > 0 && StringTraits::FindChar(pszTargets, pszBuffer[
nLength-1]))
ACPI_SIZE strlen(const char *String)
CSimpleStringT & operator=(_In_opt_z_ PCXSTR pszSrc)
ChTraitsBase< BaseType >::PCXSTR PCXSTR
ChTraitsBase< BaseType >::PCYSTR PCYSTR
ChTraitsBase< BaseType >::YCHAR YCHAR
ChTraitsBase< BaseType >::PXSTR PXSTR
void ReleaseBufferSetLength(_In_ int nNewLength)
static void __cdecl CopyCharsOverlapped(_Out_writes_to_(nDestLen, nDestLen) XCHAR *pchDest, _In_ size_t nDestLen, _In_reads_(nChars) const XCHAR *pchSrc, _In_ int nChars)
CSimpleStringT & operator+=(_In_ const CSimpleStringT &strSrc)
ChTraitsBase< BaseType >::PYSTR PYSTR
void ReleaseBuffer(_In_ int nNewLength=-1)
static void ThrowMemoryException()
ChTraitsBase< BaseType >::XCHAR XCHAR
int Replace(XCHAR chOld, XCHAR chNew)
friend bool operator!=(const CStringT &str1, PCXSTR psz2)
CStringT Right(int nCount) const
CStringT(_In_reads_z_(nLength) const YCHAR *pch, _In_ int nLength)
BOOL GetEnvironmentVariable(_In_z_ PCXSTR pszVar)
int CompareNoCase(_In_z_ PCXSTR psz) const
void LoadFromPtr_(_In_opt_z_ const T_CHAR *pszSrc)
CThisSimpleString::PCYSTR PCYSTR
_Check_return_ BOOL LoadString(_In_ HINSTANCE hInstance, _In_ UINT nID)
friend bool operator!=(PCXSTR psz1, const CStringT &str2)
CStringT & Trim(XCHAR chTarget)
CStringT & Trim(PCXSTR pszTargets)
CStringT(_In_ const CStringT< YCHAR, StringTraits_ > &strSrc)
CStringT & TrimRight(PCXSTR pszTargets)
CStringT & operator+=(_In_ const CThisSimpleString &str)
CThisSimpleString::PCXSTR PCXSTR
static PCXSTR DefaultTrimChars()
int Replace(PCXSTR pszOld, PCXSTR pszNew)
friend bool operator!=(XCHAR ch1, const CStringT &str2)
CStringT & operator+=(_In_ XCHAR ch)
int FindOneOf(_In_ PCXSTR pszCharSet) const
CStringT & operator=(_In_opt_z_ PCXSTR pszSrc)
friend bool operator==(const CStringT &str1, XCHAR ch2)
BOOL LoadString(_In_ UINT nID)
CStringT(_In_opt_z_ const YCHAR *pszSrc)
CStringT Left(int nCount) const
int Find(_In_ XCHAR ch, _In_opt_ int iStart=0) const
CStringT & operator=(_In_ const CThisSimpleString &strSrc)
void __cdecl Format(UINT nFormatID,...)
CStringT(_In_ IAtlStringMgr *pStringMgr)
void FormatV(PCXSTR pszFormat, va_list args)
friend bool operator==(const CStringT &str1, PCXSTR psz2)
CStringT(_In_ const CStringT &strSrc)
friend bool operator==(PCYSTR psz1, const CStringT &str2)
int Compare(_In_z_ PCXSTR psz) const
void __cdecl FormatMessage(UINT nFormatID,...)
CStringT & operator+=(_In_z_ PCXSTR pszSrc)
CStringT Tokenize(_In_z_ PCXSTR pszTokens, _Inout_ int &iStart) const
CStringT & TrimLeft(XCHAR chTarget)
CStringT Mid(int iFirst) const
friend bool operator==(XCHAR ch1, const CStringT &str2)
void FormatMessageV(PCXSTR pszFormat, va_list *pArgList)
CStringT & TrimLeft(PCXSTR pszTargets)
static void __cdecl Construct(_In_ CStringT *pString)
CStringT & operator=(_In_opt_z_ PCYSTR pszSrc)
CStringT Mid(int iFirst, int nCount) const
CThisSimpleString::YCHAR YCHAR
CStringT(_In_opt_z_ const XCHAR *pszSrc, _In_ IAtlStringMgr *pStringMgr)
CStringT(_In_ const CThisSimpleString &strSrc)
CStringT(_In_opt_z_ const XCHAR *pszSrc)
friend bool operator!=(const CStringT &str1, const CStringT &str2)
friend bool operator==(PCXSTR psz1, const CStringT &str2)
friend bool operator!=(const CStringT &str1, PCYSTR psz2)
CThisSimpleString::XCHAR XCHAR
CThisSimpleString::PXSTR PXSTR
CThisSimpleString::PYSTR PYSTR
CStringT & TrimRight(XCHAR chTarget)
CStringT & operator=(_In_ const CStringT &strSrc)
void __cdecl FormatMessage(PCXSTR pszFormat,...)
CStringT(_In_opt_z_ const YCHAR *pszSrc, _In_ IAtlStringMgr *pStringMgr)
friend bool operator!=(PCYSTR psz1, const CStringT &str2)
CSimpleStringT< BaseType, _CSTRING_IMPL_::_MFCDLLTraitsCheck< BaseType, StringTraits >::c_bIsMFCDLLTraits > CThisSimpleString
friend bool operator==(const CStringT &str1, PCYSTR psz2)
CStringT(_In_reads_z_(nLength) const XCHAR *pch, _In_ int nLength)
friend bool operator!=(const CStringT &str1, XCHAR ch2)
BSTR AllocSysString() const
void __cdecl Format(PCXSTR pszFormat,...)
int ReverseFind(_In_ XCHAR ch) const
int Find(_In_ PCXSTR pszSub, _In_opt_ int iStart=0) const
friend bool operator==(const CStringT &str1, const CStringT &str2)
static int __cdecl StringSpanExcluding(_In_z_ LPCSTR pszBlock, _In_z_ LPCSTR pszSet)
static void __cdecl ConvertToBaseType(_Out_writes_(nDestLength) LPSTR pszDest, _In_ int nDestLength, _In_ LPCWSTR pszSrc, _In_ int nSrcLength=-1)
static int __cdecl CompareNoCase(_In_z_ LPCSTR psz1, _In_z_ LPCSTR psz2)
static int __cdecl GetBaseTypeLength(_In_reads_(nLength) LPCSTR pszSource, _In_ int nLength)
static LPSTR FormatMessageV(_In_z_ LPCSTR pszFormat, _In_opt_ va_list *pArgList)
static BSTR __cdecl AllocSysString(_In_z_ LPCSTR pszSource, _In_ int nLength)
static LPSTR __cdecl FindString(_In_z_ LPCSTR pszSource, _In_z_ LPCSTR pszSub)
static DWORD GetEnvironmentVariable(_In_z_ LPCSTR pszVar, _Out_writes_opt_(nBufLength) LPSTR pszBuf, _In_opt_ int nBufLength)
static void __cdecl MakeLower(_Out_writes_(nSrcLength) LPSTR pszSource, _In_ int nSrcLength)
static int __cdecl GetBaseTypeLength(_In_z_ LPCSTR pszSource)
static int __cdecl GetBaseTypeLength(_In_reads_(nLength) LPCWSTR pszSource, _In_ int nLength)
static LPSTR __cdecl FindChar(_In_z_ LPCSTR pszSource, _In_ CHAR ch)
static int __cdecl FormatV(_In_opt_z_ LPSTR pszDest, _In_z_ LPCSTR pszFormat, _In_ va_list args)
static int __cdecl StringSpanIncluding(_In_z_ LPCSTR pszBlock, _In_z_ LPCSTR pszSet)
static void __cdecl ConvertToBaseType(_Out_writes_(nDestLength) LPSTR pszDest, _In_ int nDestLength, _In_ LPCSTR pszSrc, _In_ int nSrcLength=-1)
static int __cdecl Compare(_In_z_ LPCSTR psz1, _In_z_ LPCSTR psz2)
static void __cdecl MakeUpper(_Out_writes_(nSrcLength) LPSTR pszSource, _In_ int nSrcLength)
static LPSTR __cdecl FindOneOf(_In_z_ LPCSTR pszSource, _In_z_ LPCSTR pszCharSet)
static int __cdecl GetBaseTypeLength(_In_z_ LPCWSTR pszSource)
static LPSTR __cdecl FindCharReverse(_In_z_ LPCSTR pszSource, _In_ CHAR ch)
static DWORD GetEnvironmentVariable(_In_z_ LPCWSTR pszVar, _Out_writes_opt_(nBufLength) LPWSTR pszBuf, _In_opt_ int nBufLength)
static void __cdecl MakeUpper(_Out_writes_(nSrcLength) LPWSTR pszSource, _In_ int nSrcLength)
static BSTR __cdecl AllocSysString(_In_z_ LPCWSTR pszSource, _In_ int nLength)
static int __cdecl Compare(_In_z_ LPCWSTR psz1, _In_z_ LPCWSTR psz2)
static LPWSTR FormatMessageV(_In_z_ LPCWSTR pszFormat, _In_opt_ va_list *pArgList)
static LPWSTR __cdecl FindCharReverse(_In_z_ LPCWSTR pszSource, _In_ WCHAR ch)
static LPWSTR __cdecl FindOneOf(_In_z_ LPCWSTR pszSource, _In_z_ LPCWSTR pszCharSet)
static int __cdecl GetBaseTypeLength(_In_z_ LPCSTR pszSource)
static int __cdecl GetBaseTypeLength(_In_reads_(nLength) LPCWSTR pszSource, _In_ int nLength)
static int __cdecl StringSpanIncluding(_In_z_ LPCWSTR pszBlock, _In_z_ LPCWSTR pszSet)
static int __cdecl CompareNoCase(_In_z_ LPCWSTR psz1, _In_z_ LPCWSTR psz2)
static int __cdecl StringSpanExcluding(_In_z_ LPCWSTR pszBlock, _In_z_ LPCWSTR pszSet)
static void __cdecl ConvertToBaseType(_Out_writes_(nDestLength) LPWSTR pszDest, _In_ int nDestLength, _In_ LPCSTR pszSrc, _In_ int nSrcLength=-1)
static int __cdecl FormatV(_In_opt_z_ LPWSTR pszDest, _In_z_ LPCWSTR pszFormat, _In_ va_list args)
static int __cdecl GetBaseTypeLength(_In_reads_(nLength) LPCSTR pszSource, _In_ int nLength)
static LPWSTR __cdecl FindString(_In_z_ LPCWSTR pszSource, _In_z_ LPCWSTR pszSub)
static void __cdecl MakeLower(_Out_writes_(nSrcLength) LPWSTR pszSource, _In_ int nSrcLength)
static LPWSTR __cdecl FindChar(_In_z_ LPCWSTR pszSource, _In_ WCHAR ch)
static void __cdecl ConvertToBaseType(_Out_writes_(nDestLength) LPWSTR pszDest, _In_ int nDestLength, _In_ LPCWSTR pszSrc, _In_ int nSrcLength=-1)
static int __cdecl GetBaseTypeLength(_In_z_ LPCWSTR pszSource)
#define WideCharToMultiByte
#define MultiByteToWideChar
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
GLuint GLsizei GLsizei * length
HLOCAL NTAPI LocalFree(HLOCAL hMem)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define memcpy(s1, s2, n)
#define _Out_writes_(size)
#define _Out_writes_opt_(size)
#define _In_reads_z_(size)
const ATLSTRINGRESOURCEIMAGE * AtlGetStringResourceImage(_In_ HINSTANCE hInstance, _In_ UINT id)
UINT WINAPI _AtlGetConversionACP()
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
_Check_return_ _CRTIMP size_t __cdecl wcsspn(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_Control)
_Check_return_ _CRTIMP size_t __cdecl wcscspn(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_Control)
_Check_return_ _CRTIMP size_t __cdecl strspn(_In_z_ const char *_Str, _In_z_ const char *_Control)
_Check_return_ _CRTIMP size_t __cdecl strcspn(_In_z_ const char *_Str, _In_z_ const char *_Control)
static const bool c_bIsMFCDLLTraits
#define FORMAT_MESSAGE_FROM_STRING
#define FORMAT_MESSAGE_ALLOCATE_BUFFER
_In_ DWORD _In_ DWORD _Out_writes_to_opt_ pcchString LPSTR pszString
#define IS_INTRESOURCE(i)
DWORD WINAPI CharLowerBuffA(_Inout_updates_(cchLength) LPSTR lpsz, _In_ DWORD cchLength)
DWORD WINAPI CharUpperBuffA(_Inout_updates_(cchLength) LPSTR lpsz, _In_ DWORD cchLength)
DWORD WINAPI CharUpperBuffW(_Inout_updates_(cchLength) LPWSTR lpsz, _In_ DWORD cchLength)
DWORD WINAPI CharLowerBuffW(_Inout_updates_(cchLength) LPWSTR lpsz, _In_ DWORD cchLength)