16 #ifdef _CONVERSION_DONT_USE_THREAD_LOCALE 24 template<
typename _CharType =
wchar_t>
31 if (pszSource ==
NULL)
return -1;
37 if (pszSource ==
NULL)
return 0;
59 _In_ int nSrcLength = -1)
64 wmemcpy(pszDest, pszSrc, nSrcLength);
71 _In_ int nSrcLength = -1)
147 return (
int)
::wcsspn(pszBlock, pszSet);
173 reinterpret_cast<LPWSTR>(&psz), 0, pArgList);
200 if (pszSource ==
NULL)
return 0;
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);
310 return (
int)
::strspn(pszBlock, pszSet);
356 namespace _CSTRING_IMPL_
358 template <
typename _CharType,
class StringTraits>
368 template <
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);
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;
824 nResultLength += nDiff;
833 int nCount = 0, nRemaining =
nLength;
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]))
CStringT & TrimRight(XCHAR chTarget)
CStringT & TrimRight(PCXSTR pszTargets)
static void __cdecl ConvertToBaseType(_Out_writes_(nDestLength) LPSTR pszDest, _In_ int nDestLength, _In_ LPCSTR pszSrc, _In_ int nSrcLength=-1)
CStringT(_In_ IAtlStringMgr *pStringMgr)
void FormatV(PCXSTR pszFormat, va_list args)
CStringT(_In_reads_z_(nLength) const XCHAR *pch, _In_ int nLength)
static int __cdecl FormatV(_In_opt_z_ LPSTR pszDest, _In_z_ LPCSTR pszFormat, _In_ va_list args)
static const bool c_bIsMFCDLLTraits
#define WideCharToMultiByte
CStringT & TrimLeft(XCHAR chTarget)
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
void __cdecl Format(PCXSTR pszFormat,...)
CStringT & operator=(_In_ const CThisSimpleString &strSrc)
CStringT(_In_opt_z_ const YCHAR *pszSrc)
ACPI_SIZE strlen(const char *String)
char * strpbrk(const char *String, const char *Delimiters)
_CONST_RETURN wchar_t *__cdecl wcsstr(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_SubStr)
DWORD WINAPI CharLowerBuffA(_Inout_updates_(cchLength) LPSTR lpsz, _In_ DWORD cchLength)
char * strstr(char *String1, char *String2)
_Check_return_ _CRTIMP size_t __cdecl strcspn(_In_z_ const char *_Str, _In_z_ const char *_Control)
friend bool operator!=(PCYSTR psz1, const CStringT &str2)
return static_cast< int >(global)
#define FORMAT_MESSAGE_FROM_STRING
static LPSTR __cdecl FindOneOf(_In_z_ LPCSTR pszSource, _In_z_ LPCSTR pszCharSet)
_Check_return_ _CRTIMP size_t __cdecl wcscspn(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_Control)
static void __cdecl Construct(_In_ CStringT *pString)
CStringT Right(int nCount) const
int CompareNoCase(_In_z_ PCXSTR psz) const
CStringT Mid(int iFirst, int nCount) const
static void __cdecl MakeUpper(_Out_writes_(nSrcLength) LPWSTR pszSource, _In_ int nSrcLength)
CStringT & operator=(_In_ const CStringT &strSrc)
static int __cdecl StringSpanExcluding(_In_z_ LPCSTR pszBlock, _In_z_ LPCSTR pszSet)
void __cdecl Format(UINT nFormatID,...)
_Check_return_ _CRTIMP size_t __cdecl strspn(_In_z_ const char *_Str, _In_z_ const char *_Control)
_Check_return_ _CRTIMP _CONST_RETURN char *__cdecl strrchr(_In_z_ const char *_Str, _In_ int _Ch)
ChTraitsBase< BaseType >::PXSTR PXSTR
const ATLSTRINGRESOURCEIMAGE * AtlGetStringResourceImage(_In_ HINSTANCE hInstance, _In_ UINT id)
static int __cdecl GetBaseTypeLength(_In_reads_(nLength) LPCSTR pszSource, _In_ int nLength)
CStringT & TrimLeft(PCXSTR pszTargets)
friend bool operator==(const CStringT &str1, PCYSTR psz2)
static int __cdecl Compare(_In_z_ LPCWSTR psz1, _In_z_ LPCWSTR psz2)
static _Check_return_opt_ int __cdecl vswprintf(_Out_writes_z_(_SizeInWords) wchar_t *_DstBuf, _In_ size_t _SizeInWords, _In_z_ _Printf_format_string_ const wchar_t *_Format, va_list _ArgList)
static void ThrowMemoryException()
CThisSimpleString::PCXSTR PCXSTR
friend bool operator==(PCXSTR psz1, const CStringT &str2)
CStringT & operator+=(_In_ const CThisSimpleString &str)
int Replace(XCHAR chOld, XCHAR chNew)
static int __cdecl GetBaseTypeLength(_In_z_ LPCSTR pszSource)
void ReleaseBuffer(_In_ int nNewLength=-1)
static LPSTR __cdecl FindCharReverse(_In_z_ LPCSTR pszSource, _In_ CHAR ch)
static DWORD GetEnvironmentVariable(_In_z_ LPCSTR pszVar, _Out_writes_opt_(nBufLength) LPSTR pszBuf, _In_opt_ int nBufLength)
static BSTR __cdecl AllocSysString(_In_z_ LPCWSTR pszSource, _In_ int nLength)
CThisSimpleString::PYSTR PYSTR
friend bool operator==(const CStringT &str1, XCHAR ch2)
friend bool operator==(const CStringT &str1, PCXSTR psz2)
ChTraitsBase< BaseType >::XCHAR XCHAR
GLenum GLuint GLenum GLsizei length
CSimpleStringT< BaseType, _CSTRING_IMPL_::_MFCDLLTraitsCheck< BaseType, StringTraits >::c_bIsMFCDLLTraits > CThisSimpleString
#define FORMAT_MESSAGE_ALLOCATE_BUFFER
CThisSimpleString::YCHAR YCHAR
void __cdecl FormatMessage(PCXSTR pszFormat,...)
void LoadFromPtr_(_In_opt_z_ const T_CHAR *pszSrc)
friend bool operator!=(const CStringT &str1, XCHAR ch2)
static void __cdecl ConvertToBaseType(_Out_writes_(nDestLength) LPSTR pszDest, _In_ int nDestLength, _In_ LPCWSTR pszSrc, _In_ int nSrcLength=-1)
friend bool operator==(PCYSTR psz1, const CStringT &str2)
ChTraitsBase< BaseType >::YCHAR YCHAR
static int __cdecl GetBaseTypeLength(_In_z_ LPCWSTR pszSource)
int Find(_In_ XCHAR ch, _In_opt_ int iStart=0) const
#define IS_INTRESOURCE(i)
static LPSTR FormatMessageV(_In_z_ LPCSTR pszFormat, _In_opt_ va_list *pArgList)
#define GetEnvironmentVariableA(x, y, z)
friend bool operator!=(PCXSTR psz1, const CStringT &str2)
_CONST_RETURN wchar_t *__cdecl wcschr(_In_z_ const wchar_t *_Str, wchar_t _Ch)
CThisSimpleString::XCHAR XCHAR
CStringT Tokenize(_In_z_ PCXSTR pszTokens, _Inout_ int &iStart) const
static LPWSTR __cdecl FindCharReverse(_In_z_ LPCWSTR pszSource, _In_ WCHAR ch)
void ReleaseBufferSetLength(_In_ int nNewLength)
CStringT & operator=(_In_opt_z_ PCYSTR pszSrc)
CStringT(_In_opt_z_ const YCHAR *pszSrc, _In_ IAtlStringMgr *pStringMgr)
_Check_return_ BOOL LoadString(_In_ HINSTANCE hInstance, _In_ UINT nID)
static int __cdecl GetBaseTypeLength(_In_reads_(nLength) LPCSTR pszSource, _In_ int nLength)
DWORD WINAPI CharUpperBuffW(_Inout_updates_(cchLength) LPWSTR lpsz, _In_ DWORD cchLength)
ChTraitsBase< BaseType >::PCYSTR PCYSTR
CStringT & Trim(PCXSTR pszTargets)
static void __cdecl MakeLower(_Out_writes_(nSrcLength) LPWSTR pszSource, _In_ int nSrcLength)
ChTraitsBase< BaseType >::PCXSTR PCXSTR
CThisSimpleString::PXSTR PXSTR
CStringT Mid(int iFirst) const
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)
BOOL GetEnvironmentVariable(_In_z_ PCXSTR pszVar)
friend bool operator==(const CStringT &str1, const CStringT &str2)
friend bool operator!=(XCHAR ch1, const CStringT &str2)
static int __cdecl FormatV(_In_opt_z_ LPWSTR pszDest, _In_z_ LPCWSTR pszFormat, _In_ va_list args)
BSTR AllocSysString() const
CStringT(_In_reads_z_(nLength) const YCHAR *pch, _In_ int nLength)
static int __cdecl GetBaseTypeLength(_In_z_ LPCWSTR pszSource)
#define memcpy(s1, s2, n)
int FindOneOf(_In_ PCXSTR pszCharSet) const
friend bool operator==(XCHAR ch1, const CStringT &str2)
UINT WINAPI _AtlGetConversionACP()
friend bool operator!=(const CStringT &str1, PCXSTR psz2)
static LPSTR __cdecl FindChar(_In_z_ LPCSTR pszSource, _In_ CHAR ch)
DWORD WINAPI CharUpperBuffA(_Inout_updates_(cchLength) LPSTR lpsz, _In_ DWORD cchLength)
int Replace(PCXSTR pszOld, PCXSTR pszNew)
DWORD WINAPI CharLowerBuffW(_Inout_updates_(cchLength) LPWSTR lpsz, _In_ DWORD cchLength)
static int __cdecl StringSpanIncluding(_In_z_ LPCWSTR pszBlock, _In_z_ LPCWSTR pszSet)
_Check_return_ _CRTIMP int __cdecl _vscwprintf(_In_z_ _Printf_format_string_ const wchar_t *_Format, va_list _ArgList)
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
void __cdecl FormatMessage(UINT nFormatID,...)
static PCXSTR DefaultTrimChars()
static int FindString(IN FILE *pStream, IN PCWSTR pszFilePath OPTIONAL, IN PCWSTR pszSearchString)
_Check_return_ _CRTIMP int __cdecl _vscprintf(_In_z_ _Printf_format_string_ const char *_Format, va_list _ArgList)
static DWORD GetEnvironmentVariable(_In_z_ LPCWSTR pszVar, _Out_writes_opt_(nBufLength) LPWSTR pszBuf, _In_opt_ int nBufLength)
static BSTR __cdecl AllocSysString(_In_z_ LPCSTR pszSource, _In_ int nLength)
static int __cdecl CompareNoCase(_In_z_ LPCWSTR psz1, _In_z_ LPCWSTR psz2)
_In_ UINT _Out_writes_opt_(cch) LPSTR lpszFile
HLOCAL NTAPI LocalFree(HLOCAL hMem)
ChTraitsBase< BaseType >::PYSTR PYSTR
int __cdecl vsprintf(char *_Dest, const char *_Format, va_list _Args)
static LPWSTR FormatMessageV(_In_z_ LPCWSTR pszFormat, _In_opt_ va_list *pArgList)
static void __cdecl MakeUpper(_Out_writes_(nSrcLength) LPSTR pszSource, _In_ int nSrcLength)
static int __cdecl Compare(_In_z_ LPCSTR psz1, _In_z_ LPCSTR psz2)
_Check_return_ _CRTIMP _CONST_RETURN wchar_t *__cdecl wcspbrk(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_Control)
CStringT & operator+=(_In_z_ PCXSTR pszSrc)
void FormatMessageV(PCXSTR pszFormat, va_list *pArgList)
CStringT & operator=(_In_opt_z_ PCXSTR pszSrc)
CStringT(_In_opt_z_ const XCHAR *pszSrc, _In_ IAtlStringMgr *pStringMgr)
static LPWSTR __cdecl FindChar(_In_z_ LPCWSTR pszSource, _In_ WCHAR ch)
friend bool operator!=(const CStringT &str1, PCYSTR psz2)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define MultiByteToWideChar
CStringT & Trim(XCHAR chTarget)
char * strchr(const char *String, int ch)
int Find(_In_ PCXSTR pszSub, _In_opt_ int iStart=0) const
CStringT(_In_ const CStringT &strSrc)
static LPWSTR __cdecl FindOneOf(_In_z_ LPCWSTR pszSource, _In_z_ LPCWSTR pszCharSet)
static void __cdecl CopyCharsOverlapped(_Out_writes_to_(nDestLen, nDestLen) XCHAR *pchDest, _In_ size_t nDestLen, _In_reads_(nChars) const XCHAR *pchSrc, _In_ int nChars)
static void __cdecl ConvertToBaseType(_Out_writes_(nDestLength) LPWSTR pszDest, _In_ int nDestLength, _In_ LPCWSTR pszSrc, _In_ int nSrcLength=-1)
static int __cdecl StringSpanIncluding(_In_z_ LPCSTR pszBlock, _In_z_ LPCSTR pszSet)
BOOL LoadString(_In_ UINT nID)
#define _In_reads_z_(size)
int strcmp(const char *String1, const char *String2)
#define GetEnvironmentVariable
CSimpleStringT & operator=(_In_opt_z_ PCXSTR pszSrc)
CStringT(_In_opt_z_ const XCHAR *pszSrc)
int ReverseFind(_In_ XCHAR ch) const
CSimpleStringT & operator+=(_In_ const CSimpleStringT &strSrc)
static void __cdecl ConvertToBaseType(_Out_writes_(nDestLength) LPWSTR pszDest, _In_ int nDestLength, _In_ LPCSTR pszSrc, _In_ int nSrcLength=-1)
int Compare(_In_z_ PCXSTR psz) const
CStringT(_In_ const CThisSimpleString &strSrc)
#define GetEnvironmentVariableW(x, y, z)
static LPSTR __cdecl FindString(_In_z_ LPCSTR pszSource, _In_z_ LPCSTR pszSub)
friend bool operator!=(const CStringT &str1, const CStringT &str2)
CStringT & operator+=(_In_ XCHAR ch)
_Check_return_ _CRTIMP size_t __cdecl wcsspn(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_Control)
CStringT Left(int nCount) const
static int __cdecl CompareNoCase(_In_z_ LPCSTR psz1, _In_z_ LPCSTR psz2)
CThisSimpleString::PCYSTR PCYSTR
_Check_return_ _CRTIMP int __cdecl _wcsicmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
static LPWSTR __cdecl FindString(_In_z_ LPCWSTR pszSource, _In_z_ LPCWSTR pszSub)
CStringT(_In_ const CStringT< YCHAR, StringTraits_ > &strSrc)
static int __cdecl GetBaseTypeLength(_In_reads_(nLength) LPCWSTR pszSource, _In_ int nLength)
_In_ DWORD _In_ DWORD _Out_writes_to_opt_ pcchString LPSTR pszString
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
static int __cdecl StringSpanExcluding(_In_z_ LPCWSTR pszBlock, _In_z_ LPCWSTR pszSet)
#define _Out_writes_(size)