sdlxLoadFileIo function iostream

({Uint8List data, int datasize})? sdlxLoadFileIo(
  1. Pointer<SdlIoStream> src, {
  2. 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);
}