#![allow(bad_style)]
use libc::{c_char, c_double, c_float, c_int, c_ulonglong};
use libc::{c_uchar, c_uint, c_ushort, c_void};
#[cfg(feature = "vulkan")]
use vk_sys::{
Instance as VkInstance,
PhysicalDevice as VkPhysicalDevice,
AllocationCallbacks as VkAllocationCallbacks,
Result as VkResult,
SurfaceKHR as VkSurfaceKHR
};
mod link;
pub const FALSE : c_int = 0;
pub const TRUE : c_int = 1;
pub const RELEASE : c_int = 0;
pub const PRESS : c_int = 1;
pub const REPEAT : c_int = 2;
pub const KEY_UNKNOWN : c_int = -1;
pub const KEY_SPACE : c_int = 32;
pub const KEY_APOSTROPHE : c_int = 39;
pub const KEY_COMMA : c_int = 44;
pub const KEY_MINUS : c_int = 45;
pub const KEY_PERIOD : c_int = 46;
pub const KEY_SLASH : c_int = 47;
pub const KEY_0 : c_int = 48;
pub const KEY_1 : c_int = 49;
pub const KEY_2 : c_int = 50;
pub const KEY_3 : c_int = 51;
pub const KEY_4 : c_int = 52;
pub const KEY_5 : c_int = 53;
pub const KEY_6 : c_int = 54;
pub const KEY_7 : c_int = 55;
pub const KEY_8 : c_int = 56;
pub const KEY_9 : c_int = 57;
pub const KEY_SEMICOLON : c_int = 59;
pub const KEY_EQUAL : c_int = 61;
pub const KEY_A : c_int = 65;
pub const KEY_B : c_int = 66;
pub const KEY_C : c_int = 67;
pub const KEY_D : c_int = 68;
pub const KEY_E : c_int = 69;
pub const KEY_F : c_int = 70;
pub const KEY_G : c_int = 71;
pub const KEY_H : c_int = 72;
pub const KEY_I : c_int = 73;
pub const KEY_J : c_int = 74;
pub const KEY_K : c_int = 75;
pub const KEY_L : c_int = 76;
pub const KEY_M : c_int = 77;
pub const KEY_N : c_int = 78;
pub const KEY_O : c_int = 79;
pub const KEY_P : c_int = 80;
pub const KEY_Q : c_int = 81;
pub const KEY_R : c_int = 82;
pub const KEY_S : c_int = 83;
pub const KEY_T : c_int = 84;
pub const KEY_U : c_int = 85;
pub const KEY_V : c_int = 86;
pub const KEY_W : c_int = 87;
pub const KEY_X : c_int = 88;
pub const KEY_Y : c_int = 89;
pub const KEY_Z : c_int = 90;
pub const KEY_LEFT_BRACKET : c_int = 91;
pub const KEY_BACKSLASH : c_int = 92;
pub const KEY_RIGHT_BRACKET : c_int = 93;
pub const KEY_GRAVE_ACCENT : c_int = 96;
pub const KEY_WORLD_1 : c_int = 161;
pub const KEY_WORLD_2 : c_int = 162;
pub const KEY_ESCAPE : c_int = 256;
pub const KEY_ENTER : c_int = 257;
pub const KEY_TAB : c_int = 258;
pub const KEY_BACKSPACE : c_int = 259;
pub const KEY_INSERT : c_int = 260;
pub const KEY_DELETE : c_int = 261;
pub const KEY_RIGHT : c_int = 262;
pub const KEY_LEFT : c_int = 263;
pub const KEY_DOWN : c_int = 264;
pub const KEY_UP : c_int = 265;
pub const KEY_PAGE_UP : c_int = 266;
pub const KEY_PAGE_DOWN : c_int = 267;
pub const KEY_HOME : c_int = 268;
pub const KEY_END : c_int = 269;
pub const KEY_CAPS_LOCK : c_int = 280;
pub const KEY_SCROLL_LOCK : c_int = 281;
pub const KEY_NUM_LOCK : c_int = 282;
pub const KEY_PRINT_SCREEN : c_int = 283;
pub const KEY_PAUSE : c_int = 284;
pub const KEY_F1 : c_int = 290;
pub const KEY_F2 : c_int = 291;
pub const KEY_F3 : c_int = 292;
pub const KEY_F4 : c_int = 293;
pub const KEY_F5 : c_int = 294;
pub const KEY_F6 : c_int = 295;
pub const KEY_F7 : c_int = 296;
pub const KEY_F8 : c_int = 297;
pub const KEY_F9 : c_int = 298;
pub const KEY_F10 : c_int = 299;
pub const KEY_F11 : c_int = 300;
pub const KEY_F12 : c_int = 301;
pub const KEY_F13 : c_int = 302;
pub const KEY_F14 : c_int = 303;
pub const KEY_F15 : c_int = 304;
pub const KEY_F16 : c_int = 305;
pub const KEY_F17 : c_int = 306;
pub const KEY_F18 : c_int = 307;
pub const KEY_F19 : c_int = 308;
pub const KEY_F20 : c_int = 309;
pub const KEY_F21 : c_int = 310;
pub const KEY_F22 : c_int = 311;
pub const KEY_F23 : c_int = 312;
pub const KEY_F24 : c_int = 313;
pub const KEY_F25 : c_int = 314;
pub const KEY_KP_0 : c_int = 320;
pub const KEY_KP_1 : c_int = 321;
pub const KEY_KP_2 : c_int = 322;
pub const KEY_KP_3 : c_int = 323;
pub const KEY_KP_4 : c_int = 324;
pub const KEY_KP_5 : c_int = 325;
pub const KEY_KP_6 : c_int = 326;
pub const KEY_KP_7 : c_int = 327;
pub const KEY_KP_8 : c_int = 328;
pub const KEY_KP_9 : c_int = 329;
pub const KEY_KP_DECIMAL : c_int = 330;
pub const KEY_KP_DIVIDE : c_int = 331;
pub const KEY_KP_MULTIPLY : c_int = 332;
pub const KEY_KP_SUBTRACT : c_int = 333;
pub const KEY_KP_ADD : c_int = 334;
pub const KEY_KP_ENTER : c_int = 335;
pub const KEY_KP_EQUAL : c_int = 336;
pub const KEY_LEFT_SHIFT : c_int = 340;
pub const KEY_LEFT_CONTROL : c_int = 341;
pub const KEY_LEFT_ALT : c_int = 342;
pub const KEY_LEFT_SUPER : c_int = 343;
pub const KEY_RIGHT_SHIFT : c_int = 344;
pub const KEY_RIGHT_CONTROL : c_int = 345;
pub const KEY_RIGHT_ALT : c_int = 346;
pub const KEY_RIGHT_SUPER : c_int = 347;
pub const KEY_MENU : c_int = 348;
pub const KEY_LAST : c_int = KEY_MENU;
pub const MOD_SHIFT : c_int = 0x0001;
pub const MOD_CONTROL : c_int = 0x0002;
pub const MOD_ALT : c_int = 0x0004;
pub const MOD_SUPER : c_int = 0x0008;
pub const MOD_CAPS_LOCK : c_int = 0x0010;
pub const MOD_NUM_LOCK : c_int = 0x0020;
pub const JOYSTICK_1 : c_int = 0;
pub const JOYSTICK_2 : c_int = 1;
pub const JOYSTICK_3 : c_int = 2;
pub const JOYSTICK_4 : c_int = 3;
pub const JOYSTICK_5 : c_int = 4;
pub const JOYSTICK_6 : c_int = 5;
pub const JOYSTICK_7 : c_int = 6;
pub const JOYSTICK_8 : c_int = 7;
pub const JOYSTICK_9 : c_int = 8;
pub const JOYSTICK_10 : c_int = 9;
pub const JOYSTICK_11 : c_int = 10;
pub const JOYSTICK_12 : c_int = 11;
pub const JOYSTICK_13 : c_int = 12;
pub const JOYSTICK_14 : c_int = 13;
pub const JOYSTICK_15 : c_int = 14;
pub const JOYSTICK_16 : c_int = 15;
pub const JOYSTICK_LAST : c_int = JOYSTICK_16;
pub const MOUSE_BUTTON_1 : c_int = 0;
pub const MOUSE_BUTTON_2 : c_int = 1;
pub const MOUSE_BUTTON_3 : c_int = 2;
pub const MOUSE_BUTTON_4 : c_int = 3;
pub const MOUSE_BUTTON_5 : c_int = 4;
pub const MOUSE_BUTTON_6 : c_int = 5;
pub const MOUSE_BUTTON_7 : c_int = 6;
pub const MOUSE_BUTTON_8 : c_int = 7;
pub const MOUSE_BUTTON_LEFT : c_int = MOUSE_BUTTON_1;
pub const MOUSE_BUTTON_RIGHT : c_int = MOUSE_BUTTON_2;
pub const MOUSE_BUTTON_MIDDLE : c_int = MOUSE_BUTTON_3;
pub const MOUSE_BUTTON_LAST : c_int = MOUSE_BUTTON_8;
pub const HAT_CENTERED : c_int = 0x0000;
pub const HAT_UP : c_int = 0x0001;
pub const HAT_RIGHT : c_int = 0x0002;
pub const HAT_DOWN : c_int = 0x0004;
pub const HAT_LEFT : c_int = 0x0008;
pub const HAT_RIGHT_UP : c_int = HAT_RIGHT | HAT_UP;
pub const HAT_RIGHT_DOWN : c_int = HAT_RIGHT | HAT_DOWN;
pub const HAT_LEFT_UP : c_int = HAT_LEFT | HAT_UP;
pub const HAT_LEFT_DOWN : c_int = HAT_LEFT | HAT_DOWN;
pub const GAMEPAD_BUTTON_A : c_int = 0;
pub const GAMEPAD_BUTTON_B : c_int = 1;
pub const GAMEPAD_BUTTON_X : c_int = 2;
pub const GAMEPAD_BUTTON_Y : c_int = 3;
pub const GAMEPAD_BUTTON_LEFT_BUMPER : c_int = 4;
pub const GAMEPAD_BUTTON_RIGHT_BUMPER : c_int = 5;
pub const GAMEPAD_BUTTON_BACK : c_int = 6;
pub const GAMEPAD_BUTTON_START : c_int = 7;
pub const GAMEPAD_BUTTON_GUIDE : c_int = 8;
pub const GAMEPAD_BUTTON_LEFT_THUMB : c_int = 9;
pub const GAMEPAD_BUTTON_RIGHT_THUMB : c_int = 10;
pub const GAMEPAD_BUTTON_DPAD_UP : c_int = 11;
pub const GAMEPAD_BUTTON_DPAD_RIGHT : c_int = 12;
pub const GAMEPAD_BUTTON_DPAD_DOWN : c_int = 13;
pub const GAMEPAD_BUTTON_DPAD_LEFT : c_int = 14;
pub const GAMEPAD_BUTTON_LAST : c_int = GAMEPAD_BUTTON_DPAD_LEFT;
pub const GAMEPAD_BUTTON_CROSS : c_int = GAMEPAD_BUTTON_A;
pub const GAMEPAD_BUTTON_CIRCLE : c_int = GAMEPAD_BUTTON_B;
pub const GAMEPAD_BUTTON_SQUARE : c_int = GAMEPAD_BUTTON_X;
pub const GAMEPAD_BUTTON_TRIANGLE : c_int = GAMEPAD_BUTTON_Y;
pub const GAMEPAD_AXIS_LEFT_X : c_int = 0;
pub const GAMEPAD_AXIS_LEFT_Y : c_int = 1;
pub const GAMEPAD_AXIS_RIGHT_X : c_int = 2;
pub const GAMEPAD_AXIS_RIGHT_Y : c_int = 3;
pub const GAMEPAD_AXIS_LEFT_TRIGGER : c_int = 4;
pub const GAMEPAD_AXIS_RIGHT_TRIGGER : c_int = 5;
pub const GAMEPAD_AXIS_LAST : c_int = GAMEPAD_AXIS_RIGHT_TRIGGER;
pub const NO_ERROR : c_int = 0;
pub const NOT_INITIALIZED : c_int = 0x00010001;
pub const NO_CURRENT_CONTEXT : c_int = 0x00010002;
pub const INVALID_ENUM : c_int = 0x00010003;
pub const INVALID_VALUE : c_int = 0x00010004;
pub const OUT_OF_MEMORY : c_int = 0x00010005;
pub const API_UNAVAILABLE : c_int = 0x00010006;
pub const VERSION_UNAVAILABLE : c_int = 0x00010007;
pub const PLATFORM_ERROR : c_int = 0x00010008;
pub const FORMAT_UNAVAILABLE : c_int = 0x00010009;
pub const NO_WINDOW_CONTEXT : c_int = 0x0001000A;
pub const FOCUSED : c_int = 0x00020001;
pub const ICONIFIED : c_int = 0x00020002;
pub const RESIZABLE : c_int = 0x00020003;
pub const VISIBLE : c_int = 0x00020004;
pub const DECORATED : c_int = 0x00020005;
pub const AUTO_ICONIFY : c_int = 0x00020006;
pub const FLOATING : c_int = 0x00020007;
pub const MAXIMIZED : c_int = 0x00020008;
pub const CENTER_CURSOR : c_int = 0x00020009;
pub const TRANSPARENT_FRAMEBUFFER : c_int = 0x0002000A;
pub const HOVERED : c_int = 0x0002000B;
pub const FOCUS_ON_SHOW : c_int = 0x0002000C;
pub const RED_BITS : c_int = 0x00021001;
pub const GREEN_BITS : c_int = 0x00021002;
pub const BLUE_BITS : c_int = 0x00021003;
pub const ALPHA_BITS : c_int = 0x00021004;
pub const DEPTH_BITS : c_int = 0x00021005;
pub const STENCIL_BITS : c_int = 0x00021006;
pub const ACCUM_RED_BITS : c_int = 0x00021007;
pub const ACCUM_GREEN_BITS : c_int = 0x00021008;
pub const ACCUM_BLUE_BITS : c_int = 0x00021009;
pub const ACCUM_ALPHA_BITS : c_int = 0x0002100A;
pub const AUX_BUFFERS : c_int = 0x0002100B;
pub const STEREO : c_int = 0x0002100C;
pub const SAMPLES : c_int = 0x0002100D;
pub const SRGB_CAPABLE : c_int = 0x0002100E;
pub const REFRESH_RATE : c_int = 0x0002100F;
pub const DOUBLEBUFFER : c_int = 0x00021010;
pub const CLIENT_API : c_int = 0x00022001;
pub const CONTEXT_VERSION_MAJOR : c_int = 0x00022002;
pub const CONTEXT_VERSION_MINOR : c_int = 0x00022003;
pub const CONTEXT_REVISION : c_int = 0x00022004;
pub const CONTEXT_ROBUSTNESS : c_int = 0x00022005;
pub const OPENGL_FORWARD_COMPAT : c_int = 0x00022006;
pub const OPENGL_DEBUG_CONTEXT : c_int = 0x00022007;
pub const OPENGL_PROFILE : c_int = 0x00022008;
pub const CONTEXT_RELEASE_BEHAVIOR : c_int = 0x00022009;
pub const CONTEXT_NO_ERROR : c_int = 0x0002200A;
pub const CONTEXT_CREATION_API : c_int = 0x0002200B;
pub const SCALE_TO_MONITOR : c_int = 0x0002200C;
pub const COCOA_RETINA_FRAMEBUFFER : c_int = 0x00023001;
pub const COCOA_FRAME_NAME : c_int = 0x00023002;
pub const COCOA_GRAPHICS_SWITCHING : c_int = 0x00023003;
pub const X11_CLASS_NAME : c_int = 0x00024001;
pub const X11_INSTANCE_NAME : c_int = 0x00024002;
pub const NO_API : c_int = 0x00000000;
pub const OPENGL_API : c_int = 0x00030001;
pub const OPENGL_ES_API : c_int = 0x00030002;
pub const NO_ROBUSTNESS : c_int = 0x00000000;
pub const NO_RESET_NOTIFICATION : c_int = 0x00031001;
pub const LOSE_CONTEXT_ON_RESET : c_int = 0x00031002;
pub const OPENGL_ANY_PROFILE : c_int = 0x00000000;
pub const OPENGL_CORE_PROFILE : c_int = 0x00032001;
pub const OPENGL_COMPAT_PROFILE : c_int = 0x00032002;
pub const CURSOR : c_int = 0x00033001;
pub const STICKY_KEYS : c_int = 0x00033002;
pub const STICKY_MOUSE_BUTTONS : c_int = 0x00033003;
pub const LOCK_KEY_MODS : c_int = 0x00033004;
pub const RAW_MOUSE_MOTION : c_int = 0x00033005;
pub const CURSOR_NORMAL : c_int = 0x00034001;
pub const CURSOR_HIDDEN : c_int = 0x00034002;
pub const CURSOR_DISABLED : c_int = 0x00034003;
pub const ANY_RELEASE_BEHAVIOR : c_int = 0;
pub const RELEASE_BEHAVIOR_FLUSH : c_int = 0x00035001;
pub const RELEASE_BEHAVIOR_NONE : c_int = 0x00035002;
pub const NATIVE_CONTEXT_API : c_int = 0x00036001;
pub const EGL_CONTEXT_API : c_int = 0x00036002;
pub const OSMESA_CONTEXT_API : c_int = 0x00036003;
pub const ARROW_CURSOR : c_int = 0x00036001;
pub const IBEAM_CURSOR : c_int = 0x00036002;
pub const CROSSHAIR_CURSOR : c_int = 0x00036003;
pub const HAND_CURSOR : c_int = 0x00036004;
pub const HRESIZE_CURSOR : c_int = 0x00036005;
pub const VRESIZE_CURSOR : c_int = 0x00036006;
pub const CONNECTED : c_int = 0x00040001;
pub const DISCONNECTED : c_int = 0x00040002;
pub const DONT_CARE : c_int = -1;
pub const JOYSTICK_HAT_BUTTONS : c_int = 0x00050001;
pub const COCOA_CHDIR_RESOURCES : c_int = 0x00051001;
pub const COCOA_MENUBAR : c_int = 0x00051002;
pub type GLFWglproc = *const c_void;
#[cfg(feature = "vulkan")]
pub type GLFWvkproc = *const c_void;
pub type GLFWerrorfun = extern "C" fn(c_int, *const c_char);
pub type GLFWwindowposfun = extern "C" fn(*mut GLFWwindow, c_int, c_int);
pub type GLFWwindowsizefun = extern "C" fn(*mut GLFWwindow, c_int, c_int);
pub type GLFWwindowclosefun = extern "C" fn(*mut GLFWwindow);
pub type GLFWwindowrefreshfun = extern "C" fn(*mut GLFWwindow);
pub type GLFWwindowfocusfun = extern "C" fn(*mut GLFWwindow, c_int);
pub type GLFWwindowiconifyfun = extern "C" fn(*mut GLFWwindow, c_int);
pub type GLFWframebuffersizefun = extern "C" fn(*mut GLFWwindow, c_int, c_int);
pub type GLFWmousebuttonfun = extern "C" fn(*mut GLFWwindow, c_int, c_int, c_int);
pub type GLFWcursorposfun = extern "C" fn(*mut GLFWwindow, c_double, c_double);
pub type GLFWcursorenterfun = extern "C" fn(*mut GLFWwindow, c_int);
pub type GLFWscrollfun = extern "C" fn(*mut GLFWwindow, c_double, c_double);
pub type GLFWkeyfun = extern "C" fn(*mut GLFWwindow, c_int, c_int, c_int, c_int);
pub type GLFWcharfun = extern "C" fn(*mut GLFWwindow, c_uint);
pub type GLFWcharmodsfun = extern "C" fn(*mut GLFWwindow, c_uint, c_int);
pub type GLFWdropfun = extern "C" fn(*mut GLFWwindow, c_int, *mut *const c_char);
pub type GLFWmonitorfun = extern "C" fn(*mut GLFWmonitor, c_int);
pub type GLFWjoystickfun = extern "C" fn(c_int, c_int);
pub type GLFWwindowmaximizefun = extern "C" fn(*mut GLFWwindow, c_int);
pub type GLFWwindowcontentscalefun = extern "C" fn(*mut GLFWwindow, c_float, c_float);
#[allow(missing_copy_implementations)]
pub enum GLFWmonitor {}
#[allow(missing_copy_implementations)]
pub enum GLFWwindow {}
#[allow(missing_copy_implementations)]
pub enum GLFWcursor {}
#[derive(Copy, Clone)]
#[repr(C)]
pub struct GLFWgammaramp {
pub red: *mut c_ushort,
pub green: *mut c_ushort,
pub blue: *mut c_ushort,
pub size: c_uint,
}
#[allow(missing_copy_implementations)]
#[repr(C)]
pub struct GLFWvidmode {
pub width: c_int,
pub height: c_int,
pub redBits: c_int,
pub greenBits: c_int,
pub blueBits: c_int,
pub refreshRate: c_int,
}
#[allow(missing_copy_implementations)]
#[repr(C)]
pub struct GLFWimage {
pub width: c_int,
pub height: c_int,
pub pixels: *const c_uchar,
}
#[allow(missing_copy_implementations)]
#[repr(C)]
pub struct GLFWgamepadstate {
pub buttons: [c_uchar; (GAMEPAD_BUTTON_LAST + 1) as usize],
pub axes: [c_float; (GAMEPAD_AXIS_LAST + 1) as usize],
}
extern "C" {
pub fn glfwInit() -> c_int;
pub fn glfwTerminate();
pub fn glfwGetVersion(major: *mut c_int, minor: *mut c_int, rev: *mut c_int);
pub fn glfwGetVersionString() -> *const c_char;
pub fn glfwSetErrorCallback(cbfun: Option<GLFWerrorfun>) -> Option<GLFWerrorfun>;
pub fn glfwGetMonitors(count: *mut c_int) -> *mut *mut GLFWmonitor;
pub fn glfwGetPrimaryMonitor() -> *mut GLFWmonitor;
pub fn glfwGetMonitorPos(monitor: *mut GLFWmonitor, xpos: *mut c_int, ypos: *mut c_int);
pub fn glfwGetMonitorPhysicalSize(monitor: *mut GLFWmonitor, width: *mut c_int, height: *mut c_int);
pub fn glfwGetMonitorName(monitor: *mut GLFWmonitor) -> *const c_char;
pub fn glfwSetMonitorCallback(cbfun: Option<GLFWmonitorfun>) -> Option<GLFWmonitorfun>;
pub fn glfwGetVideoModes(monitor: *mut GLFWmonitor, count: *mut c_int) -> *const GLFWvidmode;
pub fn glfwGetVideoMode(monitor: *mut GLFWmonitor) -> *const GLFWvidmode;
pub fn glfwSetGamma(monitor: *mut GLFWmonitor, gamma: c_float);
pub fn glfwGetGammaRamp(monitor: *mut GLFWmonitor) -> *const GLFWgammaramp;
pub fn glfwSetGammaRamp(monitor: *mut GLFWmonitor, ramp: *const GLFWgammaramp);
pub fn glfwDefaultWindowHints();
pub fn glfwWindowHint(target: c_int, hint: c_int);
pub fn glfwCreateWindow(width: c_int, height: c_int, title: *const c_char, monitor: *mut GLFWmonitor, share: *mut GLFWwindow) -> *mut GLFWwindow;
pub fn glfwDestroyWindow(window: *mut GLFWwindow);
pub fn glfwWindowShouldClose(window: *mut GLFWwindow) -> c_int;
pub fn glfwSetWindowShouldClose(window: *mut GLFWwindow, value: c_int);
pub fn glfwSetWindowTitle(window: *mut GLFWwindow, title: *const c_char);
pub fn glfwGetWindowPos(window: *mut GLFWwindow, xpos: *mut c_int, ypos: *mut c_int);
pub fn glfwSetWindowPos(window: *mut GLFWwindow, xpos: c_int, ypos: c_int);
pub fn glfwGetWindowSize(window: *mut GLFWwindow, width: *mut c_int, height: *mut c_int);
pub fn glfwSetWindowSize(window: *mut GLFWwindow, width: c_int, height: c_int);
pub fn glfwGetFramebufferSize(window: *mut GLFWwindow, width: *mut c_int, height: *mut c_int);
pub fn glfwIconifyWindow(window: *mut GLFWwindow);
pub fn glfwRestoreWindow(window: *mut GLFWwindow);
pub fn glfwShowWindow(window: *mut GLFWwindow);
pub fn glfwHideWindow(window: *mut GLFWwindow);
pub fn glfwGetWindowMonitor(window: *mut GLFWwindow) -> *mut GLFWmonitor;
pub fn glfwGetWindowAttrib(window: *mut GLFWwindow, attrib: c_int) -> c_int;
pub fn glfwGetWindowFrameSize(window: *mut GLFWwindow, left: *mut c_int, top: *mut c_int, right: *mut c_int, bottom: *mut c_int);
pub fn glfwSetWindowUserPointer(window: *mut GLFWwindow, pointer: *mut c_void);
pub fn glfwGetWindowUserPointer(window: *mut GLFWwindow) -> *mut c_void;
pub fn glfwSetWindowPosCallback(window: *mut GLFWwindow, cbfun: Option<GLFWwindowposfun>) -> Option<GLFWwindowposfun>;
pub fn glfwSetWindowSizeCallback(window: *mut GLFWwindow, cbfun: Option<GLFWwindowsizefun>) -> Option<GLFWwindowsizefun>;
pub fn glfwSetWindowCloseCallback(window: *mut GLFWwindow, cbfun: Option<GLFWwindowclosefun>) -> Option<GLFWwindowclosefun>;
pub fn glfwSetWindowRefreshCallback(window: *mut GLFWwindow, cbfun: Option<GLFWwindowrefreshfun>) -> Option<GLFWwindowrefreshfun>;
pub fn glfwSetWindowFocusCallback(window: *mut GLFWwindow, cbfun: Option<GLFWwindowfocusfun>) -> Option<GLFWwindowfocusfun>;
pub fn glfwSetWindowIconifyCallback(window: *mut GLFWwindow, cbfun: Option<GLFWwindowiconifyfun>) -> Option<GLFWwindowiconifyfun>;
pub fn glfwSetFramebufferSizeCallback(window: *mut GLFWwindow, cbfun: Option<GLFWframebuffersizefun>) -> Option<GLFWframebuffersizefun>;
pub fn glfwPollEvents();
pub fn glfwWaitEvents();
pub fn glfwWaitEventsTimeout(timeout: c_double);
pub fn glfwPostEmptyEvent();
pub fn glfwGetInputMode(window: *mut GLFWwindow, mode: c_int) -> c_int;
pub fn glfwSetInputMode(window: *mut GLFWwindow, mode: c_int, value: c_int);
pub fn glfwGetKey(window: *mut GLFWwindow, key: c_int) -> c_int;
pub fn glfwGetMouseButton(window: *mut GLFWwindow, button: c_int) -> c_int;
pub fn glfwGetCursorPos(window: *mut GLFWwindow, xpos: *mut c_double, ypos: *mut c_double);
pub fn glfwSetCursorPos(window: *mut GLFWwindow, xpos: c_double, ypos: c_double);
pub fn glfwCreateCursor(image: *const GLFWimage, xhot: c_int, yhot: c_int) -> *mut GLFWcursor;
pub fn glfwCreateStandardCursor(shape: c_int) -> *mut GLFWcursor;
pub fn glfwDestroyCursor(cursor: *mut GLFWcursor);
pub fn glfwSetCursor(window: *mut GLFWwindow, cursor: *mut GLFWcursor);
pub fn glfwSetKeyCallback(window: *mut GLFWwindow, cbfun: Option<GLFWkeyfun>) -> Option<GLFWkeyfun>;
pub fn glfwSetCharCallback(window: *mut GLFWwindow, cbfun: Option<GLFWcharfun>) -> Option<GLFWcharfun>;
pub fn glfwSetCharModsCallback(window: *mut GLFWwindow, cbfun: Option<GLFWcharmodsfun>) -> Option<GLFWcharmodsfun>;
pub fn glfwSetMouseButtonCallback(window: *mut GLFWwindow, cbfun: Option<GLFWmousebuttonfun>) -> Option<GLFWmousebuttonfun>;
pub fn glfwSetCursorPosCallback(window: *mut GLFWwindow, cbfun: Option<GLFWcursorposfun>) -> Option<GLFWcursorposfun>;
pub fn glfwSetCursorEnterCallback(window: *mut GLFWwindow, cbfun: Option<GLFWcursorenterfun>) -> Option<GLFWcursorenterfun>;
pub fn glfwSetScrollCallback(window: *mut GLFWwindow, cbfun: Option<GLFWscrollfun>) -> Option<GLFWscrollfun>;
pub fn glfwSetDropCallback(window: *mut GLFWwindow, cbfun: Option<GLFWdropfun>) -> Option<GLFWdropfun>;
pub fn glfwJoystickPresent(joy: c_int) -> c_int;
pub fn glfwGetJoystickAxes(joy: c_int, count: *mut c_int) -> *const c_float;
pub fn glfwGetJoystickButtons(joy: c_int, count: *mut c_int) -> *const c_uchar;
pub fn glfwGetJoystickName(joy: c_int) -> *const c_char;
pub fn glfwSetClipboardString(window: *mut GLFWwindow, string: *const c_char);
pub fn glfwGetClipboardString(window: *mut GLFWwindow) -> *const c_char;
pub fn glfwGetTime() -> c_double;
pub fn glfwSetTime(time: c_double);
pub fn glfwMakeContextCurrent(window: *mut GLFWwindow);
pub fn glfwGetCurrentContext() -> *mut GLFWwindow;
pub fn glfwSwapBuffers(window: *mut GLFWwindow);
pub fn glfwSwapInterval(interval: c_int);
pub fn glfwExtensionSupported(extension: *const c_char) -> c_int;
pub fn glfwGetProcAddress(procname: *const c_char) -> GLFWglproc;
pub fn glfwSetWindowAspectRatio(window: *mut GLFWwindow, numer: c_int, denum: c_int);
pub fn glfwSetWindowSizeLimits(window: *mut GLFWwindow, minwidth: c_int, minheight: c_int, maxwidth: c_int, maxheight: c_int);
pub fn glfwFocusWindow(window: *mut GLFWwindow);
pub fn glfwMaximizeWindow(window: *mut GLFWwindow);
pub fn glfwSetWindowMonitor(window: *mut GLFWwindow, monitor: *mut GLFWmonitor, xpos: c_int, ypos: c_int, width: c_int, height: c_int, refresh_rate: c_int);
pub fn glfwSetWindowIcon(window: *mut GLFWwindow, count: c_int, images: *const GLFWimage);
pub fn glfwGetKeyName(key: c_int, scancode: c_int) -> *const c_char;
pub fn glfwGetTimerValue() -> c_ulonglong;
pub fn glfwGetTimerFrequency() -> c_ulonglong;
pub fn glfwSetJoystickCallback(cbjoy: Option<GLFWjoystickfun>) -> Option<GLFWjoystickfun>;
pub fn glfwInitHint(hint: c_int, value: c_int);
pub fn glfwGetError(description: *mut *const c_char) -> c_int;
pub fn glfwGetMonitorWorkarea(monitor: *mut GLFWmonitor, xpos: *mut c_int, ypos: *mut c_int, width: *mut c_int, height: *mut c_int);
pub fn glfwGetMonitorContentScale(monitor: *mut GLFWmonitor, xscale: *mut c_float, yscale: *mut c_float);
pub fn glfwGetMonitorUserPointer(monitor: *mut GLFWmonitor) -> *mut c_void;
pub fn glfwSetMonitorUserPointer(monitor: *mut GLFWmonitor, pointer: *mut c_void);
pub fn glfwWindowHintString(hint: c_int, value: *const c_char);
pub fn glfwGetWindowContentScale(window: *mut GLFWwindow, xscale: *mut c_float, yscale: *mut c_float);
pub fn glfwGetWindowOpacity(window: *mut GLFWwindow) -> c_float;
pub fn glfwSetWindowOpacity(window: *mut GLFWwindow, opacity: c_float);
pub fn glfwRequestWindowAttention(window: *mut GLFWwindow);
pub fn glfwSetWindowAttrib(window: *mut GLFWwindow, attrib: c_int, value: c_int);
pub fn glfwSetWindowMaximizeCallback(window: *mut GLFWwindow, cbfun: Option<GLFWwindowmaximizefun>) -> Option<GLFWwindowmaximizefun>;
pub fn glfwSetWindowContentScaleCallback(window: *mut GLFWwindow, cbfun: Option<GLFWwindowcontentscalefun>) -> Option<GLFWwindowcontentscalefun>;
pub fn glfwRawMouseMotionSupported() -> c_int;
pub fn glfwGetKeyScancode(key: c_int) -> c_int;
pub fn glfwGetJoystickHats(jid: c_int, count: *mut c_int) -> *const c_uchar;
pub fn glfwGetJoystickGUID(jid: c_int) -> *const c_char;
pub fn glfwGetJoystickUserPointer(jid: c_int) -> *mut c_void;
pub fn glfwSetJoystickUserPointer(jid: c_int, pointer: *mut c_void);
pub fn glfwJoystickIsGamepad(jid: c_int) -> c_int;
pub fn glfwUpdateGamepadMappings(string: *const c_char) -> c_int;
pub fn glfwGetGamepadName(jid: c_int) -> *const c_char;
pub fn glfwGetGamepadState(jid: c_int, state: *mut GLFWgamepadstate) -> c_int;
#[cfg(feature = "vulkan")]
pub fn glfwVulkanSupported() -> c_int;
#[cfg(feature = "vulkan")]
pub fn glfwGetRequiredInstanceExtensions(count: *mut c_uint) -> *const *const c_char;
#[cfg(feature = "vulkan")]
pub fn glfwGetInstanceProcAddress(instance: VkInstance, procname: *const c_char) -> GLFWvkproc;
#[cfg(feature = "vulkan")]
pub fn glfwGetPhysicalDevicePresentationSupport(instance: VkInstance, device: VkPhysicalDevice, queuefamily: c_uint) -> c_int;
#[cfg(feature = "vulkan")]
pub fn glfwCreateWindowSurface(instance: VkInstance, window: *mut GLFWwindow, allocator: *const VkAllocationCallbacks, surface: *mut VkSurfaceKHR) -> VkResult;
#[cfg(target_os="windows")] pub fn glfwGetWin32Window(window: *mut GLFWwindow) -> *mut c_void;
#[cfg(target_os="windows")] pub fn glfwGetWGLContext(window: *mut GLFWwindow) -> *mut c_void;
#[cfg(target_os="macos")] pub fn glfwGetCocoaWindow(window: *mut GLFWwindow) -> *mut c_void;
#[cfg(target_os="macos")] pub fn glfwGetNSGLContext(window: *mut GLFWwindow) -> *mut c_void;
#[cfg(target_os="linux")] pub fn glfwGetX11Window(window: *mut GLFWwindow) -> *mut c_void;
#[cfg(target_os="linux")] pub fn glfwGetX11Display() -> *mut c_void;
#[cfg(target_os="linux")] pub fn glfwGetGLXContext(window: *mut GLFWwindow) -> *mut c_void;
}