sdlxLoadFileIo function iostream
({Uint8List data, int datasize})?
sdlxLoadFileIo(
- Pointer<
SdlIoStream> src, { - bool closeio = false,
Load all the data from an SDL data stream.
The data is allocated with a zero byte at the end (null terminated) for
convenience. This extra byte is not included in the value reported via
datasize.
The data should be freed with SDL_free().
\param src the SDL_IOStream to read all available data from.
\param datasize a pointer filled in with the number of bytes read, may be
NULL.
\param closeio if true, calls SDL_CloseIO() on src before returning, even
in the case of an error.
\returns the data or NULL on failure; call SDL_GetError() for more
information.
\threadsafety Do not use the same SDL_IOStream from two threads at once.
\since This function is available since SDL 3.2.0.
\sa SDL_LoadFile \sa SDL_SaveFile_IO
extern SDL_DECLSPEC void * SDLCALL SDL_LoadFile_IO(SDL_IOStream *src, size_t *datasize, bool closeio)
Implementation
({Uint8List data, int datasize})? sdlxLoadFileIo(
Pointer<SdlIoStream> src, {
bool closeio = false,
}) {
var datasize = 0;
final datasizePointer = ffi.calloc<Size>();
final dataPointer = sdlLoadFileIo(src, datasizePointer, closeio);
datasize = datasizePointer.value;
datasizePointer.callocFree();
if (dataPointer == nullptr) {
return null;
}
final data = Uint8List.fromList(
dataPointer.cast<Uint8>().asTypedList(datasize),
);
sdlFree(dataPointer.cast<Void>());
return (data: data, datasize: datasize);
}