sdlGetStringProperty function properties

String? sdlGetStringProperty(
  1. int props,
  2. String? name,
  3. String? defaultValue
)

Get a string property from a group of properties.

\param props the properties to query. \param name the name of the property to query. \param default_value the default value of the property. \returns the value of the property, or default_value if it is not set or not a string property.

\threadsafety It is safe to call this function from any thread, although the data returned is not protected and could potentially be freed if you call SDL_SetStringProperty() or SDL_ClearProperty() on these properties from another thread. If you need to avoid this, use SDL_LockProperties() and SDL_UnlockProperties().

\since This function is available since SDL 3.2.0.

\sa SDL_GetPropertyType \sa SDL_HasProperty \sa SDL_SetStringProperty

extern SDL_DECLSPEC const char * SDLCALL SDL_GetStringProperty(SDL_PropertiesID props, const char *name, const char *default_value)

Implementation

String? sdlGetStringProperty(int props, String? name, String? defaultValue) {
  final sdlGetStringPropertyLookupFunction = _libSdl
      .lookupFunction<
        Pointer<Utf8> Function(
          Uint32 props,
          Pointer<Utf8> name,
          Pointer<Utf8> defaultValue,
        ),
        Pointer<Utf8> Function(
          int props,
          Pointer<Utf8> name,
          Pointer<Utf8> defaultValue,
        )
      >('SDL_GetStringProperty');
  final namePointer = name != null ? name.toNativeUtf8() : nullptr;
  final defaultValuePointer = defaultValue != null
      ? defaultValue.toNativeUtf8()
      : nullptr;
  final result = sdlGetStringPropertyLookupFunction(
    props,
    namePointer,
    defaultValuePointer,
  );
  calloc
    ..free(namePointer)
    ..free(defaultValuePointer);
  if (result == nullptr) {
    return null;
  }
  return result.toDartString();
}