sdlStrtoul function
Parse an unsigned long
from a string.
If str
starts with whitespace, then those whitespace characters are
skipped before attempting to parse the number.
If the parsed number does not fit inside an unsigned long
, the result is
clamped to the maximum representable unsigned long
value.
\param str The null-terminated string to read. Must not be NULL.
\param endp If not NULL, the address of the first invalid character (i.e.
the next character after the parsed number) will be written to
this pointer.
\param base The base of the integer to read. Supported values are 0 and 2
to 36 inclusive. If 0, the base will be inferred from the
number's prefix (0x for hexadecimal, 0 for octal, decimal
otherwise).
\returns The parsed unsigned long
, or 0 if no number could be parsed.
\threadsafety It is safe to call this function from any thread.
\since This function is available since SDL 3.1.3.
\sa SDL_atoi \sa SDL_atof \sa SDL_strtol \sa SDL_strtoll \sa SDL_strtoull \sa SDL_strtod \sa SDL_ultoa
extern SDL_DECLSPEC unsigned long SDLCALL SDL_strtoul(const char *str, char **endp, int base)
Implementation
int sdlStrtoul(String? str, Pointer<Pointer<Int8>> endp, int base) {
final sdlStrtoulLookupFunction = libSdl3.lookupFunction<
Uint32 Function(
Pointer<Utf8> str, Pointer<Pointer<Int8>> endp, Int32 base),
int Function(Pointer<Utf8> str, Pointer<Pointer<Int8>> endp,
int base)>('SDL_strtoul');
final strPointer = str != null ? str.toNativeUtf8() : nullptr;
final result = sdlStrtoulLookupFunction(strPointer, endp, base);
calloc.free(strPointer);
return result;
}