sdlStrtol function
Parse a 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 a long
, the result is clamped to
the minimum and maximum representable long
values.
\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 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_strtoul \sa SDL_strtoll \sa SDL_strtoull \sa SDL_strtod \sa SDL_ltoa \sa SDL_wcstol
extern SDL_DECLSPEC long SDLCALL SDL_strtol(const char *str, char **endp, int base)
Implementation
int sdlStrtol(String? str, Pointer<Pointer<Int8>> endp, int base) {
final sdlStrtolLookupFunction = libSdl3.lookupFunction<
Int32 Function(
Pointer<Utf8> str, Pointer<Pointer<Int8>> endp, Int32 base),
int Function(Pointer<Utf8> str, Pointer<Pointer<Int8>> endp,
int base)>('SDL_strtol');
final strPointer = str != null ? str.toNativeUtf8() : nullptr;
final result = sdlStrtolLookupFunction(strPointer, endp, base);
calloc.free(strPointer);
return result;
}