sdlOpenUserStorage function

Pointer<SdlStorage> sdlOpenUserStorage(
  1. String? org,
  2. String? app,
  3. int props
)

Opens up a container for a user's unique read/write filesystem.

While title storage can generally be kept open throughout runtime, user storage should only be opened when the client is ready to read/write files. This allows the backend to properly batch file operations and flush them when the container has been closed; ensuring safe and optimal save I/O.

\param org the name of your organization. \param app the name of your application. \param props a property list that may contain backend-specific information. \returns a user storage container on success or NULL on failure; call SDL_GetError() for more information.

\since This function is available since SDL 3.1.3.

\sa SDL_CloseStorage \sa SDL_GetStorageFileSize \sa SDL_GetStorageSpaceRemaining \sa SDL_OpenTitleStorage \sa SDL_ReadStorageFile \sa SDL_StorageReady \sa SDL_WriteStorageFile

extern SDL_DECLSPEC SDL_Storage * SDLCALL SDL_OpenUserStorage(const char *org, const char *app, SDL_PropertiesID props)

Implementation

Pointer<SdlStorage> sdlOpenUserStorage(String? org, String? app, int props) {
  final sdlOpenUserStorageLookupFunction = libSdl3.lookupFunction<
      Pointer<SdlStorage> Function(
          Pointer<Utf8> org, Pointer<Utf8> app, Uint32 props),
      Pointer<SdlStorage> Function(Pointer<Utf8> org, Pointer<Utf8> app,
          int props)>('SDL_OpenUserStorage');
  final orgPointer = org != null ? org.toNativeUtf8() : nullptr;
  final appPointer = app != null ? app.toNativeUtf8() : nullptr;
  final result =
      sdlOpenUserStorageLookupFunction(orgPointer, appPointer, props);
  calloc.free(orgPointer);
  calloc.free(appPointer);
  return result;
}