fermium 200.12.1

An opinionated crate of SDL2 bindings.
Documentation

The notes below use the windows functions,

There's probably also linux and mac functions to find that dont' exist on windows.

## Windows specific functions that don't make sense on mac/linux

assert_fn!(
  SDL_RegisterApp:
    unsafe extern "C" fn(
      name: *mut c_char,
      style: Uint32,
      hInst: *mut c_void,
    ) -> c_int
);
assert_fn!(SDL_UnregisterApp: unsafe extern "C" fn());
assert_fn!(
  SDL_SetWindowsMessageHook:
    unsafe extern "C" fn(
      callback: SDL_WindowsMessageHook,
      userdata: *mut c_void,
    )
);
assert_fn!(
  SDL_RenderGetD3D9Device:
    unsafe extern "C" fn(renderer: *mut SDL_Renderer) -> *mut IDirect3DDevice9
);
assert_fn!(
  SDL_Direct3D9GetAdapterIndex:
    unsafe extern "C" fn(displayIndex: c_int) -> c_int
);
assert_fn!(
  SDL_DXGIGetOutputInfo:
    unsafe extern "C" fn(
      displayIndex: c_int,
      adapterIndex: *mut c_int,
      outputIndex: *mut c_int,
    ) -> SDL_bool
);


## Functions that had platform-specific variations

### Here, bindgen is probably being weird with the va_list

assert_fn!(
  SDL_LogMessageV:
    unsafe extern "C" fn(
      category: c_int,
      priority: SDL_LogPriority,
      fmt: *const c_char,
      ap: va_list,
    )
);
assert_fn!(
  SDL_vsscanf:
    unsafe extern "C" fn(
      text: *const c_char,
      fmt: *const c_char,
      ap: va_list,
    ) -> c_int
);
assert_fn!(
  SDL_vsnprintf:
    unsafe extern "C" fn(
      text: *mut c_char,
      maxlen: size_t,
      fmt: *const c_char,
      ap: va_list,
    ) -> c_int
);

### Here there's actual OS differences

assert_fn!(
  SDL_CreateThread:
    unsafe extern "C" fn(
      fn_: SDL_ThreadFunction,
      name: *const c_char,
      data: *mut c_void,
      pfnBeginThread: pfnSDL_CurrentBeginThread,
      pfnEndThread: pfnSDL_CurrentEndThread,
    ) -> *mut SDL_Thread
);
assert_fn!(
  SDL_CreateThreadWithStackSize:
    unsafe extern "C" fn(
      fn_: Option<unsafe extern "C" fn(arg1: *mut c_void) -> c_int>,
      name: *const c_char,
      stacksize: size_t,
      data: *mut c_void,
      pfnBeginThread: pfnSDL_CurrentBeginThread,
      pfnEndThread: pfnSDL_CurrentEndThread,
    ) -> *mut SDL_Thread
);
assert_fn!(
  SDL_RWFromFP:
    unsafe extern "C" fn(
      fp: *mut c_void,
      autoclose: SDL_bool,
    ) -> *mut SDL_RWops
);