sdlAsyncIoFromFile function

Pointer<SdlAsyncIo> sdlAsyncIoFromFile(
  1. String? file,
  2. String? mode
)

Use this function to create a new SDL_AsyncIO object for reading from and/or writing to a named file.

The mode string understands the following values:

  • "r": Open a file for reading only. It must exist.
  • "w": Open a file for writing only. It will create missing files or truncate existing ones.
  • "r+": Open a file for update both reading and writing. The file must exist.
  • "w+": Create an empty file for both reading and writing. If a file with the same name already exists its content is erased and the file is treated as a new empty file.

There is no "b" mode, as there is only "binary" style I/O, and no "a" mode for appending, since you specify the position when starting a task.

This function supports Unicode filenames, but they must be encoded in UTF-8 format, regardless of the underlying operating system.

This call is not asynchronous; it will open the file before returning, under the assumption that doing so is generally a fast operation. Future reads and writes to the opened file will be async, however.

\param file a UTF-8 string representing the filename to open. \param mode an ASCII string representing the mode to be used for opening the file. \returns a pointer to the SDL_AsyncIO structure that is created or NULL on failure; call SDL_GetError() for more information.

\since This function is available since SDL 3.2.0.

\sa SDL_CloseAsyncIO \sa SDL_ReadAsyncIO \sa SDL_WriteAsyncIO

extern SDL_DECLSPEC SDL_AsyncIO * SDLCALL SDL_AsyncIOFromFile(const char *file, const char *mode)

Implementation

Pointer<SdlAsyncIo> sdlAsyncIoFromFile(String? file, String? mode) {
  final sdlAsyncIoFromFileLookupFunction = libSdl3.lookupFunction<
      Pointer<SdlAsyncIo> Function(Pointer<Utf8> file, Pointer<Utf8> mode),
      Pointer<SdlAsyncIo> Function(
          Pointer<Utf8> file, Pointer<Utf8> mode)>('SDL_AsyncIOFromFile');
  final filePointer = file != null ? file.toNativeUtf8() : nullptr;
  final modePointer = mode != null ? mode.toNativeUtf8() : nullptr;
  final result = sdlAsyncIoFromFileLookupFunction(filePointer, modePointer);
  calloc.free(filePointer);
  calloc.free(modePointer);
  return result;
}