30#define NONAMELESSUNION
35#define NO_SHLWAPI_STREAM
42#include "wine/unicode.h"
56 LPWSTR thousand_buffer,
int thousand_bufwlen)
66 fmt->lpThousandSep = thousand_buffer;
67 fmt->lpDecimalSep = decimal_buffer;
75 for (
c = grouping; *
c;
c++)
76 if (*
c >=
'0' && *
c <
'9')
79 fmt->Grouping += *
c -
'0';
82 if (
fmt->Grouping % 10 == 0)
99 WCHAR decimal[8], thousand[8];
102 BOOL neg = (qdwValue < 0);
105 thousand,
sizeof thousand /
sizeof (
WCHAR));
111 *(--
c) =
'0' + (qdwValue%10);
113 }
while (qdwValue > 0);
131 static const WCHAR flfmt[] = {
'%',
'f',0};
134 WCHAR decimal[8], thousand[8];
139 thousand,
sizeof thousand /
sizeof (
WCHAR));
140 fmt.NumDigits = decimals;
207 TRACE(
"(%d,%d)\n", ch1, ch2);
245 return (
LPSTR)lpszStr;
291 return (
LPSTR)lpszStr;
330 while (*lpszStr &&
cchMax-- > 0)
456 if (lpszStr && lpszSrc)
488 if (lpszCat && ichAt <
cchMax)
491 while (ichAt <
cchMax - 1 && *lpszCat)
493 *lpszStr++ = *lpszCat++;
518 if (lpszStr && lpszSrc)
567 if (!lpszStr || !lpszSearch || !*lpszSearch)
570 iLen =
strlen(lpszSearch);
573 while (lpszStr + iLen <=
end)
575 if (!pStrCmpFn(lpszStr, lpszSearch, iLen))
576 return (
LPSTR)lpszStr;
610 if (!lpszStr || !lpszSearch || !*lpszSearch)
return NULL;
611 return strstrW( lpszStr, lpszSearch );
635 if (!lpszStr || !lpszSearch || !*lpszSearch)
639 ch1 = *lpszSearch << 8 | (
UCHAR)lpszSearch[1];
645 lpszEnd = lpszStr +
lstrlenA(lpszStr);
649 while (lpszStr + iLen <= lpszEnd && *lpszStr)
654 if (!
StrCmpNIA(lpszStr, lpszSearch, iLen))
655 lpszRet = (
LPSTR)lpszStr;
674 if (!lpszStr || !lpszSearch || !*lpszSearch)
680 lpszEnd = lpszStr +
strlenW(lpszStr);
684 while (lpszStr + iLen <= lpszEnd && *lpszStr)
686 if (!
ChrCmpIW(*lpszSearch, *lpszStr))
688 if (!
StrCmpNIW(lpszStr, lpszSearch, iLen))
689 lpszRet = (
LPWSTR)lpszStr;
727 if (!lpszStr || !lpszSearch || !*lpszSearch)
733 while (lpszStr + iLen <=
end)
735 if (!
StrCmpNIW(lpszStr, lpszSearch, iLen))
762 if (!lpFirst || !lpSrch || !*lpSrch || !
cchMax)
767 for (
i =
cchMax; *lpFirst && (
i > 0);
i--, lpFirst++)
797 if (!lpFirst || !lpSrch || !*lpSrch || !
cchMax)
802 for (
i =
cchMax; *lpFirst && (
i > 0);
i--, lpFirst++)
812#define IS_DIGIT(c) ((UINT)(c) - '0' <= 9)
847 result += (*lpszStr -
'0');
859 WARN(
"Invalid lpszStr would crash under Win32!\n");
863 if (*lpszStr ==
'-' ||
isdigit(*lpszStr))
883 if (*lpszStr ==
L'-')
904 WARN(
"Invalid lpszStr would crash under Win32!\n");
908 if (*lpszStr ==
'-' ||
isdigitW(*lpszStr))
944 if (lpiRet) *lpiRet = bRes ? (
INT)
li : 0;
946 if (bRes) *lpiRet =
li;
974 if (!lpszStr || !lpiRet)
976 WARN(
"Invalid parameter would crash under Win32!\n");
990 else if (*lpszStr ==
'+')
994 *lpszStr ==
'0' &&
tolower(lpszStr[1]) ==
'x')
1006 iRet += (*lpszStr -
'0');
1008 iRet += 10 + (
tolower(*lpszStr) -
'a');
1022 iRet += (*lpszStr -
'0');
1025 *lpiRet = bNegative ? -iRet : iRet;
1044 if (lpiRet) *lpiRet = bRes ? (
INT)
li : 0;
1046 if (bRes) *lpiRet =
li;
1070 isNegative = (*
pch ==
L'-');
1086 else if (
L'a' <= *
pch && *
pch <=
L'f') digit = *
pch -
L'a' + 10;
1087 else if (
L'A' <= *
pch && *
pch <=
L'F') digit = *
pch -
L'A' + 10;
1123 if (!lpszStr || !lpiRet)
1125 WARN(
"Invalid parameter would crash under Win32!\n");
1131 while (
isspaceW(*lpszStr)) lpszStr++;
1133 if (*lpszStr ==
'-')
1138 else if (*lpszStr ==
'+')
1142 *lpszStr ==
'0' &&
tolowerW(lpszStr[1]) ==
'x')
1154 iRet += (*lpszStr -
'0');
1156 iRet += 10 + (
tolowerW(*lpszStr) -
'a');
1170 iRet += (*lpszStr -
'0');
1173 *lpiRet = bNegative ? -iRet : iRet;
1205 iLen = lpszStr ?
strlen(lpszStr) + 1 : 1;
1211 memcpy(lpszRet, lpszStr, iLen);
1234 iLen = (lpszStr ?
strlenW(lpszStr) + 1 : 1) *
sizeof(
WCHAR);
1240 memcpy(lpszRet, lpszStr, iLen);
1256 LPCSTR lpszRead = lpszStr;
1257 if (lpszStr && *lpszStr && lpszMatch)
1261 LPCSTR lpszTest = pStrChrFn(lpszMatch, *lpszRead);
1270 return lpszRead - lpszStr;
1301 if (!lpszStr || !lpszMatch)
return 0;
1302 return strspnW( lpszStr, lpszMatch );
1333 if (!lpszStr || !lpszMatch)
return 0;
1334 return strcspnW( lpszStr, lpszMatch );
1369 if (lpszStr && *lpszStr && lpszMatch)
1373 if (
StrChrIW(lpszMatch, *lpszRead))
break;
1377 return lpszRead - lpszStr;
1397 if (lpszStr && lpszMatch && *lpszMatch)
1401 if (
StrChrA(lpszMatch, *lpszStr))
1402 return (
LPSTR)lpszStr;
1416 if (!lpszStr || !lpszMatch)
return NULL;
1417 return strpbrkW( lpszStr, lpszMatch );
1436 lpszEnd = lpszStr +
lstrlenA(lpszStr);
1438 while (*lpszStr && lpszStr <= lpszEnd)
1440 ch2 =
IsDBCSLeadByte(*lpszStr)? *lpszStr << 8 | lpszStr[1] : *lpszStr;
1442 if (!pChrCmpFn(
ch, ch2))
1447 return (
LPSTR)lpszRet;
1557 WARN(
"Invalid lpszStr would crash under Win32!\n");
1582 WARN(
"Invalid lpszStr would crash under Win32!\n");
1622 WARN(
"Invalid lpStrRet would crash under Win32!\n");
1649 FIXME(
"unknown type!\n");
1669 WARN(
"Invalid lpStrRet would crash under Win32!\n");
1677 switch (
src->uType) {
1680 if (!
src->u.pOleStr)
1709 FIXME(
"unknown type!\n");
1734 switch (lpStrRet->
uType)
1765 switch (lpStrRet->
uType)
1834 switch (lpStrRet->
uType)
1889 static const WCHAR kb[] = {
' ',
'K',
'B',0};
1890 LONGLONG llKB = (llBytes + 1023) >> 10;
1924 LPSTR lpszRet = lpszStr;
1930 WARN(
"Invalid lpszStr would crash under Win32!\n");
1945 LPWSTR lpszRet = lpszStr;
1951 WARN(
"Invalid lpszStr would crash under Win32\n");
1975 LPSTR lpszRead = lpszStr;
1980 if (lpszRead && *lpszRead)
1982 while (*lpszRead &&
StrChrA(lpszTrim, *lpszRead))
1985 dwLen =
strlen(lpszRead);
1987 if (lpszRead != lpszStr)
1989 memmove(lpszStr, lpszRead, dwLen + 1);
1994 lpszRead = lpszStr + dwLen;
1995 while (
StrChrA(lpszTrim, lpszRead[-1]))
1996 lpszRead =
CharPrevA(lpszStr, lpszRead);
1998 if (lpszRead != lpszStr + dwLen)
2016 LPWSTR lpszRead = lpszStr;
2021 if (lpszRead && *lpszRead)
2023 while (*lpszRead &&
StrChrW(lpszTrim, *lpszRead)) lpszRead++;
2027 if (lpszRead != lpszStr)
2029 memmove(lpszStr, lpszRead, (dwLen + 1) *
sizeof(
WCHAR));
2034 lpszRead = lpszStr + dwLen;
2035 while (
StrChrW(lpszTrim, lpszRead[-1]))
2038 if (lpszRead != lpszStr + dwLen)
2183 DWORD dwNextDigit = dwNum % 10;
2184 *lpszOut-- =
'0' + dwNextDigit;
2185 dwNum = (dwNum - dwNextDigit) / 10;
2186 }
while (dwNum > 0);
2202 if (--dwDigits == 0)
2218 UINT uClassStringId,
int iDigits)
2220 WCHAR szBuff[64], *szOut = szBuff + 32;
2266 TRACE(
"(%p,%d,%d,%d)\n", lpszStr,
cchMax, dwMS, iDigits);
2288 TRACE(
"(%p,%d,%d,%d)\n", lpszStr,
cchMax, dwMS, iDigits);
2293 DWORD dwHours, dwMinutes;
2295 if (!iDigits ||
cchMax == 1)
2302 dwMS = (dwMS + 500) / 1000;
2303 dwHours = dwMS / 3600;
2304 dwMS -= dwHours * 3600;
2305 dwMinutes = dwMS / 60;
2306 dwMS -= dwMinutes * 60;
2313 if (dwMinutes && iDigits)
2345 TRACE(
"(%d,%s,%s,%d)\n", bCase,
2367 TRACE(
"(%d,%s,%s,%d)\n", bCase,
2397 if (
lpszDest && lpszSrc && iLen > 0)
2399 while ((iLen-- > 1) && *lpszSrc)
2416 if (
lpszDest && lpszSrc && iLen > 0)
2418 while ((iLen-- > 1) && *lpszSrc)
2446 if (lpszStr && lpszComp)
2465 else if (iStr > iComp)
2478 iDiff =
ChrCmpIW(*lpszStr,*lpszComp);
2526#define KB ((ULONGLONG)1024)
2528#define GB (KB*KB*KB)
2529#define TB (KB*KB*KB*KB)
2530#define PB (KB*KB*KB*KB*KB)
2535 { 10*
KB, 10.24, 100.0, 2, IDS_KB_FORMAT },
2536 { 100*
KB, 102.4, 10.0, 1, IDS_KB_FORMAT },
2537 { 1000*
KB, 1024.0, 1.0, 0, IDS_KB_FORMAT },
2538 { 10*
MB, 10485.76, 100.0, 2, IDS_MB_FORMAT },
2539 { 100*
MB, 104857.6, 10.0, 1, IDS_MB_FORMAT },
2540 { 1000*
MB, 1048576.0, 1.0, 0, IDS_MB_FORMAT },
2541 { 10*
GB, 10737418.24, 100.0, 2, IDS_GB_FORMAT },
2542 { 100*
GB, 107374182.4, 10.0, 1, IDS_GB_FORMAT },
2543 { 1000*
GB, 1073741824.0, 1.0, 0, IDS_GB_FORMAT },
2544 { 10*
TB, 10485.76, 100.0, 2, IDS_TB_FORMAT },
2545 { 100*
TB, 104857.6, 10.0, 1, IDS_TB_FORMAT },
2546 { 1000*
TB, 1048576.0, 1.0, 0, IDS_TB_FORMAT },
2547 { 10*
PB, 10737418.24, 100.00, 2, IDS_PB_FORMAT },
2548 { 100*
PB, 107374182.4, 10.00, 1, IDS_PB_FORMAT },
2549 { 1000*
PB, 1073741824.0, 1.00, 0, IDS_PB_FORMAT },
2550 { 0, 10995116277.76, 100.00, 2, IDS_EB_FORMAT }
2552 { 10*
KB, 10.24, 100.0, 2,
'K' },
2553 { 100*
KB, 102.4, 10.0, 1,
'K' },
2554 { 1000*
KB, 1024.0, 1.0, 0,
'K' },
2555 { 10*
MB, 10485.76, 100.0, 2,
'M' },
2556 { 100*
MB, 104857.6, 10.0, 1,
'M' },
2557 { 1000*
MB, 1048576.0, 1.0, 0,
'M' },
2558 { 10*
GB, 10737418.24, 100.0, 2,
'G' },
2559 { 100*
GB, 107374182.4, 10.0, 1,
'G' },
2560 { 1000*
GB, 1073741824.0, 1.0, 0,
'G' },
2561 { 10*
TB, 10485.76, 100.0, 2,
'T' },
2562 { 100*
TB, 104857.6, 10.0, 1,
'T' },
2563 { 1000*
TB, 1048576.0, 1.0, 0,
'T' },
2564 { 10*
PB, 10737418.24, 100.00, 2,
'P' },
2565 { 100*
PB, 107374182.4, 10.00, 1,
'P' },
2566 { 1000*
PB, 1073741824.0, 1.00, 0,
'P' },
2567 { 0, 10995116277.76, 100.00, 2,
'E' }
2571 WCHAR szBuff[40], wszFormat[40];
2573 WCHAR wszAdd[] = {
' ',
'?',
'B',0};
2585 WCHAR wszBytesFormat[64];
2596 if (llBytes < bfFormats[
i].dLimit)
2607 dBytes = (
double)(llBytes >> 20) + 0.001;
2609 dBytes = (
double)llBytes + 0.00001;
2686 while(lpStr < lastByte)
2713 LPSTR lpszIter, lpszTmp;
2720 if ((lpszIter =
StrChrA(lpszStr,
'&')))
2725 if (*lpszTmp !=
'&')
2742 LPWSTR lpszIter, lpszTmp;
2749 if ((lpszIter =
StrChrW(lpszStr,
'&')))
2751 lpszTmp = lpszIter + 1;
2754 if (*lpszTmp !=
'&')
2834 if (!lpDstStr || !
dstlen)
2861 lpDstStr[needed] =
'\0';
2877 if (reqLen > 0)
memcpy(lpDstStr,
mem, reqLen-1);
2904 lpDstStr[reqLen-1] =
'\0';
2952 lpszRet =
StrCpyNXA(lpszDst, lpszSrc, iLen);
2953 return lpszRet - lpszDst + 1;
2967 lpszRet =
StrCpyNXW(lpszDst, lpszSrc, iLen);
2968 return lpszRet - lpszDst + 1;
3010 return !
strcmpW(lpSrcStr, szBuff);
3026 WCHAR szExpanded[512];
3045 index_str =
strchrW(dllname,
',');
3047 if(!index_str)
goto end;
3066 FIXME(
"can't handle non-negative indices (%d)\n",
index);
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
void shell(int argc, const char *argv[])
#define ERROR_INSUFFICIENT_BUFFER
INT WINAPI StrToIntW(LPCWSTR lpString)
LPWSTR WINAPI StrChrIW(LPCWSTR lpszStr, WCHAR ch)
LPSTR WINAPI StrRStrIA(LPCSTR lpszStr, LPCSTR lpszEnd, LPCSTR lpszSearch)
int WINAPI StrCSpnIA(LPCSTR lpszStr, LPCSTR lpszMatch)
int WINAPI StrCSpnW(LPCWSTR lpszStr, LPCWSTR lpszMatch)
LPWSTR WINAPI StrChrW(LPCWSTR lpszStr, WCHAR ch)
LPWSTR WINAPI StrRChrW(LPCWSTR str, LPCWSTR end, WORD ch)
LPSTR WINAPI StrStrIA(LPCSTR lpszStr, LPCSTR lpszSearch)
LPSTR WINAPI StrRChrIA(LPCSTR lpszStr, LPCSTR lpszEnd, WORD ch)
INT WINAPI StrCmpNIA(LPCSTR lpszStr, LPCSTR lpszComp, INT iLen)
LPSTR WINAPI StrChrIA(LPCSTR lpszStr, WORD ch)
LPWSTR WINAPI StrRChrIW(LPCWSTR str, LPCWSTR end, WORD ch)
LPWSTR WINAPI StrStrW(LPCWSTR lpszStr, LPCWSTR lpszSearch)
LPSTR WINAPI StrRChrA(LPCSTR lpszStr, LPCSTR lpszEnd, WORD ch)
INT WINAPI StrToIntA(LPCSTR lpszStr)
int WINAPI StrCSpnIW(LPCWSTR lpszStr, LPCWSTR lpszMatch)
LPSTR WINAPI StrChrA(LPCSTR lpszStr, WORD ch)
INT WINAPI StrCmpNIW(LPCWSTR lpszStr, LPCWSTR lpszComp, INT iLen)
LPWSTR WINAPI StrStrIW(LPCWSTR lpszStr, LPCWSTR lpszSearch)
int WINAPI StrCSpnA(LPCSTR lpszStr, LPCSTR lpszMatch)
INT WINAPI StrCmpNW(LPCWSTR lpszStr, LPCWSTR lpszComp, INT iLen)
LPSTR WINAPI StrStrA(LPCSTR lpszStr, LPCSTR lpszSearch)
LPWSTR WINAPI StrRStrIW(LPCWSTR lpszStr, LPCWSTR lpszEnd, LPCWSTR lpszSearch)
INT WINAPI StrCmpNA(LPCSTR lpszStr, LPCSTR lpszComp, INT iLen)
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
#define HeapFree(x, y, z)
#define WideCharToMultiByte
#define MultiByteToWideChar
DWORD WINAPI ExpandEnvironmentStringsW(IN LPCWSTR lpSrc, IN LPWSTR lpDst, IN DWORD nSize)
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryExW(LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFlags)
LCID WINAPI GetThreadLocale(void)
BOOL WINAPI IsDBCSLeadByte(BYTE testchar)
BOOL WINAPI GetStringTypeA(LCID locale, DWORD type, LPCSTR src, INT count, LPWORD chartype)
INT WINAPI CompareStringA(LCID lcid, DWORD flags, LPCSTR str1, INT len1, LPCSTR str2, INT len2)
INT WINAPI CompareStringW(LCID lcid, DWORD flags, LPCWSTR str1, INT len1, LPCWSTR str2, INT len2)
BOOL WINAPI GetStringTypeW(DWORD type, LPCWSTR src, INT count, LPWORD chartype)
LCID WINAPI GetSystemDefaultLCID(void)
INT WINAPI GetLocaleInfoW(LCID lcid, LCTYPE lctype, LPWSTR buffer, INT len)
BOOL WINAPI ChrCmpIW(WCHAR ch1, WCHAR ch2)
BOOL WINAPI StrToIntExW(const WCHAR *str, DWORD flags, INT *ret)
LPSTR WINAPI CharNextA(const char *ptr)
BOOL WINAPI ChrCmpIA(WORD ch1, WORD ch2)
WCHAR *WINAPI StrCatBuffW(WCHAR *str, const WCHAR *cat, INT max_len)
WCHAR *WINAPI StrChrNW(const WCHAR *str, WCHAR ch, UINT max_len)
INT WINAPI DECLSPEC_HOTPATCH LoadStringW(HINSTANCE instance, UINT resource_id, LPWSTR buffer, INT buflen)
WCHAR *WINAPI StrStrNW(const WCHAR *str, const WCHAR *search, UINT max_len)
BOOL WINAPI StrIsIntlEqualA(BOOL case_sensitive, const char *str, const char *cmp, int len)
WCHAR *WINAPI StrStrNIW(const WCHAR *str, const WCHAR *search, UINT max_len)
int WINAPI StrCmpW(const WCHAR *str, const WCHAR *comp)
BOOL WINAPI StrTrimA(char *str, const char *trim)
DWORD WINAPI SHTruncateString(char *str, DWORD size)
BOOL WINAPI StrIsIntlEqualW(BOOL case_sensitive, const WCHAR *str, const WCHAR *cmp, int len)
BOOL WINAPI StrTrimW(WCHAR *str, const WCHAR *trim)
BOOL WINAPI StrToIntExA(const char *str, DWORD flags, INT *ret)
char *WINAPI StrCatBuffA(char *str, const char *cat, INT max_len)
int WINAPI StrCmpLogicalW(const WCHAR *str, const WCHAR *comp)
char *WINAPI StrCpyNXA(char *dst, const char *src, int len)
char *WINAPI StrPBrkA(const char *str, const char *match)
WCHAR *WINAPI StrDupW(const WCHAR *str)
HRESULT WINAPI SHLoadIndirectString(const WCHAR *src, WCHAR *dst, UINT dst_len, void **reserved)
int WINAPI StrSpnW(const WCHAR *str, const WCHAR *match)
LPSTR WINAPI CharPrevA(const char *start, const char *ptr)
int WINAPI StrCmpIW(const WCHAR *str, const WCHAR *comp)
DWORD WINAPI StrCatChainW(WCHAR *str, DWORD max_len, DWORD at, const WCHAR *cat)
char *WINAPI StrDupA(const char *str)
WCHAR *WINAPI StrCpyNXW(WCHAR *dst, const WCHAR *src, int len)
BOOL WINAPI StrToInt64ExA(const char *str, DWORD flags, LONGLONG *ret)
int WINAPI StrSpnA(const char *str, const char *match)
BOOL WINAPI StrToInt64ExW(const WCHAR *str, DWORD flags, LONGLONG *ret)
WCHAR *WINAPI StrPBrkW(const WCHAR *str, const WCHAR *match)
WCHAR *WINAPI StrCpyNW(WCHAR *dst, const WCHAR *src, int count)
_ACRTIMP double __cdecl floor(double)
_ACRTIMP size_t __cdecl strlen(const char *)
#define IDS_TIME_INTERVAL_MINUTES
#define IDS_TIME_INTERVAL_HOURS
#define IDS_TIME_INTERVAL_SECONDS
static HRESULT _SHStrDupAToBSTR(LPCSTR src, BSTR *pBstrOut)
HRESULT WINAPI SHStrDupW(LPCWSTR src, LPWSTR *dest)
INT WINAPI StrFromTimeIntervalW(LPWSTR lpszStr, UINT cchMax, DWORD dwMS, int iDigits)
struct tagSHLWAPI_BYTEFORMATS SHLWAPI_BYTEFORMATS
WCHAR WINAPI SHStripMneumonicW(LPCWSTR lpszStr)
LPSTR WINAPI StrNCatA(LPSTR lpszStr, LPCSTR lpszCat, INT cchMax)
LPSTR WINAPI StrFormatByteSize64A(LONGLONG llBytes, LPSTR lpszDest, UINT cchMax)
DWORD WINAPI SHAnsiToUnicode(LPCSTR lpSrcStr, LPWSTR lpDstStr, int iLen)
static BOOL SHLWAPI_ChrCmpHelperA(WORD ch1, WORD ch2, DWORD dwFlags)
INT WINAPI SHUnicodeToAnsi(LPCWSTR lpSrcStr, LPSTR lpDstStr, INT iLen)
LPWSTR WINAPI StrFormatKBSizeW(LONGLONG llBytes, LPWSTR lpszDest, UINT cchMax)
BOOL WINAPI IsCharSpaceA(CHAR c)
DWORD WINAPI SHUnicodeToUnicode(LPCWSTR lpszSrc, LPWSTR lpszDst, int iLen)
LPWSTR WINAPI StrCatW(LPWSTR lpszStr, LPCWSTR lpszSrc)
HRESULT WINAPI SHStrDupA(LPCSTR lpszStr, LPWSTR *lppszDest)
LPSTR WINAPI StrFormatByteSizeA(DWORD dwBytes, LPSTR lpszDest, UINT cchMax)
INT WINAPI StrFromTimeIntervalA(LPSTR lpszStr, UINT cchMax, DWORD dwMS, int iDigits)
DWORD WINAPI SHAnsiToAnsi(LPCSTR lpszSrc, LPSTR lpszDst, int iLen)
char WINAPI SHStripMneumonicA(LPCSTR lpszStr)
LPWSTR WINAPI StrFormatByteSizeW(LONGLONG llBytes, LPWSTR lpszDest, UINT cchMax)
HRESULT WINAPI StrRetToBSTR(STRRET *lpStrRet, LPCITEMIDLIST pidl, BSTR *pBstrOut)
static int FormatInt(LONGLONG qdwValue, LPWSTR pszBuf, int cchBuf)
HRESULT WINAPI StrRetToBufW(LPSTRRET src, const ITEMIDLIST *pidl, LPWSTR dest, UINT len)
BOOL WINAPI DoesStringRoundTripW(LPCWSTR lpSrcStr, LPSTR lpDst, INT iLen)
static HRESULT _SHStrDupAA(LPCSTR, LPSTR *)
LPWSTR WINAPI StrNCatW(LPWSTR lpszStr, LPCWSTR lpszCat, INT cchMax)
HRESULT WINAPI StrRetToStrA(LPSTRRET lpStrRet, const ITEMIDLIST *pidl, LPSTR *ppszName)
static int SHLWAPI_FormatSignificant(LPWSTR lpszNum, int dwDigits)
HRESULT WINAPI StrRetToStrW(LPSTRRET lpStrRet, const ITEMIDLIST *pidl, LPWSTR *ppszName)
static LPSTR SHLWAPI_StrRChrHelperA(LPCSTR lpszStr, LPCSTR lpszEnd, WORD ch, BOOL(WINAPI *pChrCmpFn)(WORD, WORD))
static LPWSTR SHLWAPI_WriteReverseNum(LPWSTR lpszOut, DWORD dwNum)
HINSTANCE shlwapi_hInstance
static HRESULT _SHStrDupAW(LPCWSTR, LPSTR *)
static int SHLWAPI_StrSpnHelperA(LPCSTR lpszStr, LPCSTR lpszMatch, LPSTR(WINAPI *pStrChrFn)(LPCSTR, WORD), BOOL bInvert)
BOOL WINAPI DoesStringRoundTripA(LPCSTR lpSrcStr, LPSTR lpDst, INT iLen)
LPWSTR WINAPI StrCpyW(LPWSTR lpszStr, LPCWSTR lpszSrc)
static BOOL WINAPI SHLWAPI_ChrCmpA(WORD ch1, WORD ch2)
static void FillNumberFmt(NUMBERFMTW *fmt, LPWSTR decimal_buffer, int decimal_bufwlen, LPWSTR thousand_buffer, int thousand_bufwlen)
DWORD WINAPI SHAnsiToUnicodeCP(DWORD dwCp, LPCSTR lpSrcStr, LPWSTR lpDstStr, int iLen)
LPSTR WINAPI StrFormatKBSizeA(LONGLONG llBytes, LPSTR lpszDest, UINT cchMax)
HRESULT WINAPI StrRetToBufA(LPSTRRET src, const ITEMIDLIST *pidl, LPSTR dest, UINT len)
static LPSTR SHLWAPI_StrStrHelperA(LPCSTR lpszStr, LPCSTR lpszSearch, INT(WINAPI *pStrCmpFn)(LPCSTR, LPCSTR, INT))
DWORD WINAPI SHUnicodeToAnsiCP(UINT CodePage, LPCWSTR lpSrcStr, LPSTR lpDstStr, int dstlen)
static int SHLWAPI_WriteTimeClass(LPWSTR lpszOut, DWORD dwValue, UINT uClassStringId, int iDigits)
static int FormatDouble(double value, int decimals, LPWSTR pszBuf, int cchBuf)
BOOL WINAPI IsCharSpaceW(WCHAR wc)
GLuint GLuint GLsizei count
GLenum GLuint GLenum GLsizei const GLchar * buf
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
HLOCAL NTAPI LocalFree(HLOCAL hMem)
static const WCHAR emptyW[]
VOID WINAPI CoTaskMemFree(LPVOID ptr)
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
int WINAPI lstrlenA(LPCSTR lpString)
#define memcpy(s1, s2, n)
#define memmove(s1, s2, n)
static PEXPLICIT_ACCESSW *static HMODULE hmod
static const char mbstate_t *static wchar_t const char mbstate_t *static const wchar_t int *static double
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
#define LOCALE_USER_DEFAULT
BSTR WINAPI SysAllocString(LPCOLESTR str)
XML_HIDDEN void xmlParserErrors const char const xmlChar const xmlChar * str2
XML_HIDDEN void xmlParserErrors const char const xmlChar * str1
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
static CONVERTINETUNICODETOMULTIBYTE ConvertINetUnicodeToMultiByte
DWORD WINAPI GetLastError(void)
#define LOAD_LIBRARY_AS_DATAFILE
#define strspnW(str, accept)
#define strncmpiW(s1, s2, n)
#define strncmpW(s1, s2, n)
#define strpbrkW(str, accept)
#define E_NOT_SUFFICIENT_BUFFER
#define LOCALE_INEGNUMBER