in src/native/windows/src/utils.c [372:410]
ULONG apxAtoulW(LPCWSTR szNum)
{
ULONG rv = 0;
DWORD sh = 1;
int s = 1;
LPCWSTR p = szNum;
/* go to the last digit */
if (!p || !*p)
return 0;
if (*p == L'-') {
s = -1;
++p;
}
while (*(p + 1)) p++;
/* go back */
while (p >= szNum) {
ULONG v = 0;
switch (*p--) {
case L'0': v = 0UL; break;
case L'1': v = 1UL; break;
case L'2': v = 2UL; break;
case L'3': v = 3UL; break;
case L'4': v = 4UL; break;
case L'5': v = 5UL; break;
case L'6': v = 6UL; break;
case L'7': v = 7UL; break;
case L'8': v = 8UL; break;
case L'9': v = 9UL; break;
default:
return rv * s;
break;
}
rv = rv + (v * sh);
sh = sh * 10;
}
return rv * s;
}