pub const EM_TRUE: u32 = 1;
pub const EM_FALSE: u32 = 0;
pub const EMSCRIPTEN_RESULT_SUCCESS: u32 = 0;
pub const EMSCRIPTEN_RESULT_DEFERRED: u32 = 1;
pub const EMSCRIPTEN_RESULT_NOT_SUPPORTED: i32 = -1;
pub const EMSCRIPTEN_RESULT_FAILED_NOT_DEFERRED: i32 = -2;
pub const EMSCRIPTEN_RESULT_INVALID_TARGET: i32 = -3;
pub const EMSCRIPTEN_RESULT_UNKNOWN_TARGET: i32 = -4;
pub const EMSCRIPTEN_RESULT_INVALID_PARAM: i32 = -5;
pub const EMSCRIPTEN_RESULT_FAILED: i32 = -6;
pub const EMSCRIPTEN_RESULT_NO_DATA: i32 = -7;
pub const EMSCRIPTEN_RESULT_TIMED_OUT: i32 = -8;
pub const LONG_CODE: u8 = 105u8;
pub const __EMSCRIPTEN_major__: u32 = 3;
pub const __EMSCRIPTEN_minor__: u32 = 1;
pub const __EMSCRIPTEN_tiny__: u32 = 67;
pub const EM_TIMING_SETTIMEOUT: u32 = 0;
pub const EM_TIMING_RAF: u32 = 1;
pub const EM_TIMING_SETIMMEDIATE: u32 = 2;
pub const EM_LOG_CONSOLE: u32 = 1;
pub const EM_LOG_WARN: u32 = 2;
pub const EM_LOG_ERROR: u32 = 4;
pub const EM_LOG_C_STACK: u32 = 8;
pub const EM_LOG_JS_STACK: u32 = 16;
pub const EM_LOG_DEMANGLE: u32 = 32;
pub const EM_LOG_NO_PATHS: u32 = 64;
pub const EM_LOG_FUNC_PARAMS: u32 = 128;
pub const EM_LOG_DEBUG: u32 = 256;
pub const EM_LOG_INFO: u32 = 512;
pub const EMSCRIPTEN_EVENT_KEYPRESS: u32 = 1;
pub const EMSCRIPTEN_EVENT_KEYDOWN: u32 = 2;
pub const EMSCRIPTEN_EVENT_KEYUP: u32 = 3;
pub const EMSCRIPTEN_EVENT_CLICK: u32 = 4;
pub const EMSCRIPTEN_EVENT_MOUSEDOWN: u32 = 5;
pub const EMSCRIPTEN_EVENT_MOUSEUP: u32 = 6;
pub const EMSCRIPTEN_EVENT_DBLCLICK: u32 = 7;
pub const EMSCRIPTEN_EVENT_MOUSEMOVE: u32 = 8;
pub const EMSCRIPTEN_EVENT_WHEEL: u32 = 9;
pub const EMSCRIPTEN_EVENT_RESIZE: u32 = 10;
pub const EMSCRIPTEN_EVENT_SCROLL: u32 = 11;
pub const EMSCRIPTEN_EVENT_BLUR: u32 = 12;
pub const EMSCRIPTEN_EVENT_FOCUS: u32 = 13;
pub const EMSCRIPTEN_EVENT_FOCUSIN: u32 = 14;
pub const EMSCRIPTEN_EVENT_FOCUSOUT: u32 = 15;
pub const EMSCRIPTEN_EVENT_DEVICEORIENTATION: u32 = 16;
pub const EMSCRIPTEN_EVENT_DEVICEMOTION: u32 = 17;
pub const EMSCRIPTEN_EVENT_ORIENTATIONCHANGE: u32 = 18;
pub const EMSCRIPTEN_EVENT_FULLSCREENCHANGE: u32 = 19;
pub const EMSCRIPTEN_EVENT_POINTERLOCKCHANGE: u32 = 20;
pub const EMSCRIPTEN_EVENT_VISIBILITYCHANGE: u32 = 21;
pub const EMSCRIPTEN_EVENT_TOUCHSTART: u32 = 22;
pub const EMSCRIPTEN_EVENT_TOUCHEND: u32 = 23;
pub const EMSCRIPTEN_EVENT_TOUCHMOVE: u32 = 24;
pub const EMSCRIPTEN_EVENT_TOUCHCANCEL: u32 = 25;
pub const EMSCRIPTEN_EVENT_GAMEPADCONNECTED: u32 = 26;
pub const EMSCRIPTEN_EVENT_GAMEPADDISCONNECTED: u32 = 27;
pub const EMSCRIPTEN_EVENT_BEFOREUNLOAD: u32 = 28;
pub const EMSCRIPTEN_EVENT_BATTERYCHARGINGCHANGE: u32 = 29;
pub const EMSCRIPTEN_EVENT_BATTERYLEVELCHANGE: u32 = 30;
pub const EMSCRIPTEN_EVENT_WEBGLCONTEXTLOST: u32 = 31;
pub const EMSCRIPTEN_EVENT_WEBGLCONTEXTRESTORED: u32 = 32;
pub const EMSCRIPTEN_EVENT_MOUSEENTER: u32 = 33;
pub const EMSCRIPTEN_EVENT_MOUSELEAVE: u32 = 34;
pub const EMSCRIPTEN_EVENT_MOUSEOVER: u32 = 35;
pub const EMSCRIPTEN_EVENT_MOUSEOUT: u32 = 36;
pub const EMSCRIPTEN_EVENT_CANVASRESIZED: u32 = 37;
pub const EMSCRIPTEN_EVENT_POINTERLOCKERROR: u32 = 38;
pub const EMSCRIPTEN_EVENT_TARGET_INVALID: u32 = 0;
pub const DOM_KEY_LOCATION_STANDARD: u32 = 0;
pub const DOM_KEY_LOCATION_LEFT: u32 = 1;
pub const DOM_KEY_LOCATION_RIGHT: u32 = 2;
pub const DOM_KEY_LOCATION_NUMPAD: u32 = 3;
pub const EM_HTML5_SHORT_STRING_LEN_BYTES: u32 = 32;
pub const EM_HTML5_MEDIUM_STRING_LEN_BYTES: u32 = 64;
pub const EM_HTML5_LONG_STRING_LEN_BYTES: u32 = 128;
pub const DOM_DELTA_PIXEL: u32 = 0;
pub const DOM_DELTA_LINE: u32 = 1;
pub const DOM_DELTA_PAGE: u32 = 2;
pub const EMSCRIPTEN_DEVICE_MOTION_EVENT_SUPPORTS_ACCELERATION: u32 = 1;
pub const EMSCRIPTEN_DEVICE_MOTION_EVENT_SUPPORTS_ACCELERATION_INCLUDING_GRAVITY: u32 = 2;
pub const EMSCRIPTEN_DEVICE_MOTION_EVENT_SUPPORTS_ROTATION_RATE: u32 = 4;
pub const EMSCRIPTEN_ORIENTATION_UNSUPPORTED: u32 = 0;
pub const EMSCRIPTEN_ORIENTATION_PORTRAIT_PRIMARY: u32 = 1;
pub const EMSCRIPTEN_ORIENTATION_PORTRAIT_SECONDARY: u32 = 2;
pub const EMSCRIPTEN_ORIENTATION_LANDSCAPE_PRIMARY: u32 = 4;
pub const EMSCRIPTEN_ORIENTATION_LANDSCAPE_SECONDARY: u32 = 8;
pub const EMSCRIPTEN_FULLSCREEN_SCALE_DEFAULT: u32 = 0;
pub const EMSCRIPTEN_FULLSCREEN_SCALE_STRETCH: u32 = 1;
pub const EMSCRIPTEN_FULLSCREEN_SCALE_ASPECT: u32 = 2;
pub const EMSCRIPTEN_FULLSCREEN_SCALE_CENTER: u32 = 3;
pub const EMSCRIPTEN_FULLSCREEN_CANVAS_SCALE_NONE: u32 = 0;
pub const EMSCRIPTEN_FULLSCREEN_CANVAS_SCALE_STDDEF: u32 = 1;
pub const EMSCRIPTEN_FULLSCREEN_CANVAS_SCALE_HIDEF: u32 = 2;
pub const EMSCRIPTEN_FULLSCREEN_FILTERING_DEFAULT: u32 = 0;
pub const EMSCRIPTEN_FULLSCREEN_FILTERING_NEAREST: u32 = 1;
pub const EMSCRIPTEN_FULLSCREEN_FILTERING_BILINEAR: u32 = 2;
pub const EMSCRIPTEN_VISIBILITY_HIDDEN: u32 = 0;
pub const EMSCRIPTEN_VISIBILITY_VISIBLE: u32 = 1;
pub const EMSCRIPTEN_VISIBILITY_PRERENDER: u32 = 2;
pub const EMSCRIPTEN_VISIBILITY_UNLOADED: u32 = 3;
pub const EMSCRIPTEN_WEBGL_CONTEXT_PROXY_DISALLOW: u32 = 0;
pub const EMSCRIPTEN_WEBGL_CONTEXT_PROXY_FALLBACK: u32 = 1;
pub const EMSCRIPTEN_WEBGL_CONTEXT_PROXY_ALWAYS: u32 = 2;
pub const EM_WEBGL_POWER_PREFERENCE_DEFAULT: u32 = 0;
pub const EM_WEBGL_POWER_PREFERENCE_LOW_POWER: u32 = 1;
pub const EM_WEBGL_POWER_PREFERENCE_HIGH_PERFORMANCE: u32 = 2;
pub const EMSCRIPTEN_WEBGL_PARAM_TYPE_INT: u32 = 0;
pub const EMSCRIPTEN_WEBGL_PARAM_TYPE_FLOAT: u32 = 1;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct __pthread {
    _unused: [u8; 0],
}
pub type pthread_t = *mut __pthread;
pub type emscripten_align1_short = ::std::os::raw::c_short;
pub type emscripten_align4_int64 = ::std::os::raw::c_longlong;
pub type emscripten_align2_int64 = ::std::os::raw::c_longlong;
pub type emscripten_align1_int64 = ::std::os::raw::c_longlong;
pub type emscripten_align2_int = ::std::os::raw::c_int;
pub type emscripten_align1_int = ::std::os::raw::c_int;
pub type emscripten_align2_float = f32;
pub type emscripten_align1_float = f32;
pub type emscripten_align4_double = f64;
pub type emscripten_align2_double = f64;
pub type emscripten_align1_double = f64;
pub type em_callback_func = ::std::option::Option<unsafe extern "C" fn()>;
pub type em_arg_callback_func =
    ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>;
pub type em_str_callback_func =
    ::std::option::Option<unsafe extern "C" fn(arg1: *const ::std::os::raw::c_char)>;
extern "C" {
    pub fn emscripten_asm_const_int(
        code: *const ::std::os::raw::c_char,
        arg_sigs: *const ::std::os::raw::c_char,
        ...
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_asm_const_ptr(
        code: *const ::std::os::raw::c_char,
        arg_sigs: *const ::std::os::raw::c_char,
        ...
    ) -> *mut ::std::os::raw::c_void;
}
extern "C" {
    pub fn emscripten_asm_const_double(
        code: *const ::std::os::raw::c_char,
        arg_sigs: *const ::std::os::raw::c_char,
        ...
    ) -> f64;
}
extern "C" {
    pub fn emscripten_asm_const_int_sync_on_main_thread(
        code: *const ::std::os::raw::c_char,
        arg_sigs: *const ::std::os::raw::c_char,
        ...
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_asm_const_ptr_sync_on_main_thread(
        code: *const ::std::os::raw::c_char,
        arg_sigs: *const ::std::os::raw::c_char,
        ...
    ) -> *mut ::std::os::raw::c_void;
}
extern "C" {
    pub fn emscripten_asm_const_double_sync_on_main_thread(
        code: *const ::std::os::raw::c_char,
        arg_sigs: *const ::std::os::raw::c_char,
        ...
    ) -> f64;
}
extern "C" {
    pub fn emscripten_asm_const_async_on_main_thread(
        code: *const ::std::os::raw::c_char,
        arg_sigs: *const ::std::os::raw::c_char,
        ...
    );
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _em_promise {
    _unused: [u8; 0],
}
pub type em_promise_t = *mut _em_promise;
pub const em_promise_result_t_EM_PROMISE_FULFILL: em_promise_result_t = 0;
pub const em_promise_result_t_EM_PROMISE_MATCH: em_promise_result_t = 1;
pub const em_promise_result_t_EM_PROMISE_MATCH_RELEASE: em_promise_result_t = 2;
pub const em_promise_result_t_EM_PROMISE_REJECT: em_promise_result_t = 3;
pub type em_promise_result_t = ::std::os::raw::c_uint;
pub type em_promise_callback_t = ::std::option::Option<
    unsafe extern "C" fn(
        result: *mut *mut ::std::os::raw::c_void,
        data: *mut ::std::os::raw::c_void,
        value: *mut ::std::os::raw::c_void,
    ) -> em_promise_result_t,
>;
extern "C" {
    pub fn emscripten_promise_create() -> em_promise_t;
}
extern "C" {
    pub fn emscripten_promise_destroy(promise: em_promise_t);
}
extern "C" {
    pub fn emscripten_promise_resolve(
        promise: em_promise_t,
        result: em_promise_result_t,
        value: *mut ::std::os::raw::c_void,
    );
}
extern "C" {
    pub fn emscripten_promise_then(
        promise: em_promise_t,
        on_fulfilled: em_promise_callback_t,
        on_rejected: em_promise_callback_t,
        data: *mut ::std::os::raw::c_void,
    ) -> em_promise_t;
}
extern "C" {
    pub fn emscripten_promise_all(
        promises: *mut em_promise_t,
        results: *mut *mut ::std::os::raw::c_void,
        num_promises: usize,
    ) -> em_promise_t;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct em_settled_result_t {
    pub result: em_promise_result_t,
    pub value: *mut ::std::os::raw::c_void,
}
#[test]
fn bindgen_test_layout_em_settled_result_t() {
    const UNINIT: ::std::mem::MaybeUninit<em_settled_result_t> = ::std::mem::MaybeUninit::uninit();
    let ptr = UNINIT.as_ptr();
    assert_eq!(
        ::std::mem::size_of::<em_settled_result_t>(),
        16usize,
        concat!("Size of: ", stringify!(em_settled_result_t))
    );
    assert_eq!(
        ::std::mem::align_of::<em_settled_result_t>(),
        8usize,
        concat!("Alignment of ", stringify!(em_settled_result_t))
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).result) as usize - ptr as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(em_settled_result_t),
            "::",
            stringify!(result)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).value) as usize - ptr as usize },
        8usize,
        concat!(
            "Offset of field: ",
            stringify!(em_settled_result_t),
            "::",
            stringify!(value)
        )
    );
}
extern "C" {
    pub fn emscripten_promise_all_settled(
        promises: *mut em_promise_t,
        results: *mut em_settled_result_t,
        num_promises: usize,
    ) -> em_promise_t;
}
extern "C" {
    pub fn emscripten_promise_any(
        promises: *mut em_promise_t,
        errors: *mut *mut ::std::os::raw::c_void,
        num_promises: usize,
    ) -> em_promise_t;
}
extern "C" {
    pub fn emscripten_promise_race(
        promises: *mut em_promise_t,
        num_promises: usize,
    ) -> em_promise_t;
}
extern "C" {
    pub fn emscripten_promise_await(promise: em_promise_t) -> em_settled_result_t;
}
extern "C" {
    pub fn emscripten_async_wget(
        url: *const ::std::os::raw::c_char,
        file: *const ::std::os::raw::c_char,
        onload: em_str_callback_func,
        onerror: em_str_callback_func,
    );
}
pub type em_async_wget_onload_func = ::std::option::Option<
    unsafe extern "C" fn(
        userdata: *mut ::std::os::raw::c_void,
        data: *mut ::std::os::raw::c_void,
        size: ::std::os::raw::c_int,
    ),
>;
extern "C" {
    pub fn emscripten_async_wget_data(
        url: *const ::std::os::raw::c_char,
        userdata: *mut ::std::os::raw::c_void,
        onload: em_async_wget_onload_func,
        onerror: em_arg_callback_func,
    );
}
pub type em_async_wget2_onload_func = ::std::option::Option<
    unsafe extern "C" fn(
        handle: ::std::os::raw::c_uint,
        userdata: *mut ::std::os::raw::c_void,
        data: *const ::std::os::raw::c_char,
    ),
>;
pub type em_async_wget2_onstatus_func = ::std::option::Option<
    unsafe extern "C" fn(
        handle: ::std::os::raw::c_uint,
        userdata: *mut ::std::os::raw::c_void,
        status: ::std::os::raw::c_int,
    ),
>;
extern "C" {
    pub fn emscripten_async_wget2(
        url: *const ::std::os::raw::c_char,
        file: *const ::std::os::raw::c_char,
        requesttype: *const ::std::os::raw::c_char,
        param: *const ::std::os::raw::c_char,
        userdata: *mut ::std::os::raw::c_void,
        onload: em_async_wget2_onload_func,
        onerror: em_async_wget2_onstatus_func,
        onprogress: em_async_wget2_onstatus_func,
    ) -> ::std::os::raw::c_int;
}
pub type em_async_wget2_data_onload_func = ::std::option::Option<
    unsafe extern "C" fn(
        handle: ::std::os::raw::c_uint,
        userdata: *mut ::std::os::raw::c_void,
        data: *mut ::std::os::raw::c_void,
        size: ::std::os::raw::c_uint,
    ),
>;
pub type em_async_wget2_data_onerror_func = ::std::option::Option<
    unsafe extern "C" fn(
        handle: ::std::os::raw::c_uint,
        userdata: *mut ::std::os::raw::c_void,
        status: ::std::os::raw::c_int,
        status_text: *const ::std::os::raw::c_char,
    ),
>;
pub type em_async_wget2_data_onprogress_func = ::std::option::Option<
    unsafe extern "C" fn(
        handle: ::std::os::raw::c_uint,
        userdata: *mut ::std::os::raw::c_void,
        loaded: ::std::os::raw::c_int,
        total: ::std::os::raw::c_int,
    ),
>;
extern "C" {
    pub fn emscripten_async_wget2_data(
        url: *const ::std::os::raw::c_char,
        requesttype: *const ::std::os::raw::c_char,
        param: *const ::std::os::raw::c_char,
        arg: *mut ::std::os::raw::c_void,
        free: ::std::os::raw::c_int,
        onload: em_async_wget2_data_onload_func,
        onerror: em_async_wget2_data_onerror_func,
        onprogress: em_async_wget2_data_onprogress_func,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_async_wget2_abort(handle: ::std::os::raw::c_int);
}
extern "C" {
    pub fn emscripten_wget(
        url: *const ::std::os::raw::c_char,
        file: *const ::std::os::raw::c_char,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_wget_data(
        url: *const ::std::os::raw::c_char,
        pbuffer: *mut *mut ::std::os::raw::c_void,
        pnum: *mut ::std::os::raw::c_int,
        perror: *mut ::std::os::raw::c_int,
    );
}
extern "C" {
    pub fn emscripten_run_script(script: *const ::std::os::raw::c_char);
}
extern "C" {
    pub fn emscripten_run_script_int(
        script: *const ::std::os::raw::c_char,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_run_script_string(
        script: *const ::std::os::raw::c_char,
    ) -> *mut ::std::os::raw::c_char;
}
extern "C" {
    pub fn emscripten_async_run_script(
        script: *const ::std::os::raw::c_char,
        millis: ::std::os::raw::c_int,
    );
}
extern "C" {
    pub fn emscripten_async_load_script(
        script: *const ::std::os::raw::c_char,
        onload: em_callback_func,
        onerror: em_callback_func,
    );
}
extern "C" {
    pub fn emscripten_set_main_loop(
        func: em_callback_func,
        fps: ::std::os::raw::c_int,
        simulate_infinite_loop: bool,
    );
}
extern "C" {
    pub fn emscripten_set_main_loop_timing(
        mode: ::std::os::raw::c_int,
        value: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_get_main_loop_timing(
        mode: *mut ::std::os::raw::c_int,
        value: *mut ::std::os::raw::c_int,
    );
}
extern "C" {
    pub fn emscripten_set_main_loop_arg(
        func: em_arg_callback_func,
        arg: *mut ::std::os::raw::c_void,
        fps: ::std::os::raw::c_int,
        simulate_infinite_loop: bool,
    );
}
extern "C" {
    pub fn emscripten_pause_main_loop();
}
extern "C" {
    pub fn emscripten_resume_main_loop();
}
extern "C" {
    pub fn emscripten_cancel_main_loop();
}
pub type em_socket_callback = ::std::option::Option<
    unsafe extern "C" fn(fd: ::std::os::raw::c_int, userData: *mut ::std::os::raw::c_void),
>;
pub type em_socket_error_callback = ::std::option::Option<
    unsafe extern "C" fn(
        fd: ::std::os::raw::c_int,
        err: ::std::os::raw::c_int,
        msg: *const ::std::os::raw::c_char,
        userData: *mut ::std::os::raw::c_void,
    ),
>;
extern "C" {
    pub fn emscripten_set_socket_error_callback(
        userData: *mut ::std::os::raw::c_void,
        callback: em_socket_error_callback,
    );
}
extern "C" {
    pub fn emscripten_set_socket_open_callback(
        userData: *mut ::std::os::raw::c_void,
        callback: em_socket_callback,
    );
}
extern "C" {
    pub fn emscripten_set_socket_listen_callback(
        userData: *mut ::std::os::raw::c_void,
        callback: em_socket_callback,
    );
}
extern "C" {
    pub fn emscripten_set_socket_connection_callback(
        userData: *mut ::std::os::raw::c_void,
        callback: em_socket_callback,
    );
}
extern "C" {
    pub fn emscripten_set_socket_message_callback(
        userData: *mut ::std::os::raw::c_void,
        callback: em_socket_callback,
    );
}
extern "C" {
    pub fn emscripten_set_socket_close_callback(
        userData: *mut ::std::os::raw::c_void,
        callback: em_socket_callback,
    );
}
extern "C" {
    pub fn _emscripten_push_main_loop_blocker(
        func: em_arg_callback_func,
        arg: *mut ::std::os::raw::c_void,
        name: *const ::std::os::raw::c_char,
    );
}
extern "C" {
    pub fn _emscripten_push_uncounted_main_loop_blocker(
        func: em_arg_callback_func,
        arg: *mut ::std::os::raw::c_void,
        name: *const ::std::os::raw::c_char,
    );
}
extern "C" {
    pub fn emscripten_set_main_loop_expected_blockers(num: ::std::os::raw::c_int);
}
extern "C" {
    pub fn emscripten_async_call(
        func: em_arg_callback_func,
        arg: *mut ::std::os::raw::c_void,
        millis: ::std::os::raw::c_int,
    );
}
extern "C" {
    pub fn emscripten_exit_with_live_runtime() -> !;
}
extern "C" {
    pub fn emscripten_force_exit(status: ::std::os::raw::c_int) -> !;
}
extern "C" {
    pub fn emscripten_get_device_pixel_ratio() -> f64;
}
extern "C" {
    pub fn emscripten_get_window_title() -> *mut ::std::os::raw::c_char;
}
extern "C" {
    pub fn emscripten_set_window_title(arg1: *const ::std::os::raw::c_char);
}
extern "C" {
    pub fn emscripten_get_screen_size(
        width: *mut ::std::os::raw::c_int,
        height: *mut ::std::os::raw::c_int,
    );
}
extern "C" {
    pub fn emscripten_hide_mouse();
}
extern "C" {
    pub fn emscripten_set_canvas_size(width: ::std::os::raw::c_int, height: ::std::os::raw::c_int);
}
extern "C" {
    pub fn emscripten_get_canvas_size(
        width: *mut ::std::os::raw::c_int,
        height: *mut ::std::os::raw::c_int,
        isFullscreen: *mut ::std::os::raw::c_int,
    );
}
extern "C" {
    pub fn emscripten_get_now() -> f64;
}
extern "C" {
    pub fn emscripten_random() -> f32;
}
pub type em_idb_onload_func = ::std::option::Option<
    unsafe extern "C" fn(
        arg1: *mut ::std::os::raw::c_void,
        arg2: *mut ::std::os::raw::c_void,
        arg3: ::std::os::raw::c_int,
    ),
>;
extern "C" {
    pub fn emscripten_idb_async_load(
        db_name: *const ::std::os::raw::c_char,
        file_id: *const ::std::os::raw::c_char,
        arg: *mut ::std::os::raw::c_void,
        onload: em_idb_onload_func,
        onerror: em_arg_callback_func,
    );
}
extern "C" {
    pub fn emscripten_idb_async_store(
        db_name: *const ::std::os::raw::c_char,
        file_id: *const ::std::os::raw::c_char,
        ptr: *mut ::std::os::raw::c_void,
        num: ::std::os::raw::c_int,
        arg: *mut ::std::os::raw::c_void,
        onstore: em_arg_callback_func,
        onerror: em_arg_callback_func,
    );
}
extern "C" {
    pub fn emscripten_idb_async_delete(
        db_name: *const ::std::os::raw::c_char,
        file_id: *const ::std::os::raw::c_char,
        arg: *mut ::std::os::raw::c_void,
        ondelete: em_arg_callback_func,
        onerror: em_arg_callback_func,
    );
}
pub type em_idb_exists_func = ::std::option::Option<
    unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void, arg2: ::std::os::raw::c_int),
>;
extern "C" {
    pub fn emscripten_idb_async_exists(
        db_name: *const ::std::os::raw::c_char,
        file_id: *const ::std::os::raw::c_char,
        arg: *mut ::std::os::raw::c_void,
        oncheck: em_idb_exists_func,
        onerror: em_arg_callback_func,
    );
}
extern "C" {
    pub fn emscripten_idb_async_clear(
        db_name: *const ::std::os::raw::c_char,
        arg: *mut ::std::os::raw::c_void,
        onclear: em_arg_callback_func,
        onerror: em_arg_callback_func,
    );
}
extern "C" {
    pub fn emscripten_idb_load(
        db_name: *const ::std::os::raw::c_char,
        file_id: *const ::std::os::raw::c_char,
        pbuffer: *mut *mut ::std::os::raw::c_void,
        pnum: *mut ::std::os::raw::c_int,
        perror: *mut ::std::os::raw::c_int,
    );
}
extern "C" {
    pub fn emscripten_idb_store(
        db_name: *const ::std::os::raw::c_char,
        file_id: *const ::std::os::raw::c_char,
        buffer: *mut ::std::os::raw::c_void,
        num: ::std::os::raw::c_int,
        perror: *mut ::std::os::raw::c_int,
    );
}
extern "C" {
    pub fn emscripten_idb_delete(
        db_name: *const ::std::os::raw::c_char,
        file_id: *const ::std::os::raw::c_char,
        perror: *mut ::std::os::raw::c_int,
    );
}
extern "C" {
    pub fn emscripten_idb_exists(
        db_name: *const ::std::os::raw::c_char,
        file_id: *const ::std::os::raw::c_char,
        pexists: *mut ::std::os::raw::c_int,
        perror: *mut ::std::os::raw::c_int,
    );
}
extern "C" {
    pub fn emscripten_idb_clear(
        db_name: *const ::std::os::raw::c_char,
        perror: *mut ::std::os::raw::c_int,
    );
}
extern "C" {
    pub fn emscripten_idb_load_blob(
        db_name: *const ::std::os::raw::c_char,
        file_id: *const ::std::os::raw::c_char,
        pblob: *mut ::std::os::raw::c_int,
        perror: *mut ::std::os::raw::c_int,
    );
}
extern "C" {
    pub fn emscripten_idb_store_blob(
        db_name: *const ::std::os::raw::c_char,
        file_id: *const ::std::os::raw::c_char,
        buffer: *mut ::std::os::raw::c_void,
        num: ::std::os::raw::c_int,
        perror: *mut ::std::os::raw::c_int,
    );
}
extern "C" {
    pub fn emscripten_idb_read_from_blob(
        blob: ::std::os::raw::c_int,
        start: ::std::os::raw::c_int,
        num: ::std::os::raw::c_int,
        buffer: *mut ::std::os::raw::c_void,
    );
}
extern "C" {
    pub fn emscripten_idb_free_blob(blob: ::std::os::raw::c_int);
}
extern "C" {
    pub fn emscripten_run_preload_plugins(
        file: *const ::std::os::raw::c_char,
        onload: em_str_callback_func,
        onerror: em_str_callback_func,
    ) -> ::std::os::raw::c_int;
}
pub type em_run_preload_plugins_data_onload_func = ::std::option::Option<
    unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void, arg2: *const ::std::os::raw::c_char),
>;
extern "C" {
    pub fn emscripten_run_preload_plugins_data(
        data: *mut ::std::os::raw::c_char,
        size: ::std::os::raw::c_int,
        suffix: *const ::std::os::raw::c_char,
        arg: *mut ::std::os::raw::c_void,
        onload: em_run_preload_plugins_data_onload_func,
        onerror: em_arg_callback_func,
    );
}
extern "C" {
    pub fn emscripten_lazy_load_code();
}
pub type worker_handle = ::std::os::raw::c_int;
extern "C" {
    pub fn emscripten_create_worker(url: *const ::std::os::raw::c_char) -> worker_handle;
}
extern "C" {
    pub fn emscripten_destroy_worker(worker: worker_handle);
}
pub type em_worker_callback_func = ::std::option::Option<
    unsafe extern "C" fn(
        arg1: *mut ::std::os::raw::c_char,
        arg2: ::std::os::raw::c_int,
        arg3: *mut ::std::os::raw::c_void,
    ),
>;
extern "C" {
    pub fn emscripten_call_worker(
        worker: worker_handle,
        funcname: *const ::std::os::raw::c_char,
        data: *mut ::std::os::raw::c_char,
        size: ::std::os::raw::c_int,
        callback: em_worker_callback_func,
        arg: *mut ::std::os::raw::c_void,
    );
}
extern "C" {
    pub fn emscripten_worker_respond(
        data: *mut ::std::os::raw::c_char,
        size: ::std::os::raw::c_int,
    );
}
extern "C" {
    pub fn emscripten_worker_respond_provisionally(
        data: *mut ::std::os::raw::c_char,
        size: ::std::os::raw::c_int,
    );
}
extern "C" {
    pub fn emscripten_get_worker_queue_size(worker: worker_handle) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_get_compiler_setting(
        name: *const ::std::os::raw::c_char,
    ) -> ::std::os::raw::c_long;
}
extern "C" {
    pub fn emscripten_has_asyncify() -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_debugger();
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _IO_FILE {
    _unused: [u8; 0],
}
pub type FILE = _IO_FILE;
extern "C" {
    pub fn emscripten_get_preloaded_image_data(
        path: *const ::std::os::raw::c_char,
        w: *mut ::std::os::raw::c_int,
        h: *mut ::std::os::raw::c_int,
    ) -> *mut ::std::os::raw::c_char;
}
extern "C" {
    pub fn emscripten_get_preloaded_image_data_from_FILE(
        file: *mut FILE,
        w: *mut ::std::os::raw::c_int,
        h: *mut ::std::os::raw::c_int,
    ) -> *mut ::std::os::raw::c_char;
}
extern "C" {
    pub fn emscripten_log(flags: ::std::os::raw::c_int, format: *const ::std::os::raw::c_char, ...);
}
extern "C" {
    pub fn emscripten_get_callstack(
        flags: ::std::os::raw::c_int,
        out: *mut ::std::os::raw::c_char,
        maxbytes: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_print_double(
        x: f64,
        to: *mut ::std::os::raw::c_char,
        max: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
pub type em_scan_func = ::std::option::Option<
    unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void, arg2: *mut ::std::os::raw::c_void),
>;
extern "C" {
    pub fn emscripten_scan_registers(func: em_scan_func);
}
extern "C" {
    pub fn emscripten_scan_stack(func: em_scan_func);
}
pub type em_dlopen_callback = ::std::option::Option<
    unsafe extern "C" fn(
        user_data: *mut ::std::os::raw::c_void,
        handle: *mut ::std::os::raw::c_void,
    ),
>;
extern "C" {
    pub fn emscripten_dlopen(
        filename: *const ::std::os::raw::c_char,
        flags: ::std::os::raw::c_int,
        user_data: *mut ::std::os::raw::c_void,
        onsuccess: em_dlopen_callback,
        onerror: em_arg_callback_func,
    );
}
extern "C" {
    pub fn emscripten_dlopen_promise(
        filename: *const ::std::os::raw::c_char,
        flags: ::std::os::raw::c_int,
    ) -> em_promise_t;
}
extern "C" {
    pub fn emscripten_throw_number(number: f64);
}
extern "C" {
    pub fn emscripten_throw_string(utf8String: *const ::std::os::raw::c_char);
}
extern "C" {
    pub fn emscripten_sleep(ms: ::std::os::raw::c_uint);
}
extern "C" {
    pub fn emscripten_unwind_to_js_event_loop() -> !;
}
extern "C" {
    pub fn emscripten_set_timeout(
        cb: ::std::option::Option<unsafe extern "C" fn(user_data: *mut ::std::os::raw::c_void)>,
        msecs: f64,
        user_data: *mut ::std::os::raw::c_void,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_clear_timeout(id: ::std::os::raw::c_int);
}
extern "C" {
    pub fn emscripten_set_timeout_loop(
        cb: ::std::option::Option<
            unsafe extern "C" fn(time: f64, user_data: *mut ::std::os::raw::c_void) -> bool,
        >,
        interval_ms: f64,
        user_data: *mut ::std::os::raw::c_void,
    );
}
extern "C" {
    pub fn emscripten_set_immediate(
        cb: ::std::option::Option<unsafe extern "C" fn(user_data: *mut ::std::os::raw::c_void)>,
        user_data: *mut ::std::os::raw::c_void,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_clear_immediate(id: ::std::os::raw::c_int);
}
extern "C" {
    pub fn emscripten_set_immediate_loop(
        cb: ::std::option::Option<
            unsafe extern "C" fn(user_data: *mut ::std::os::raw::c_void) -> bool,
        >,
        user_data: *mut ::std::os::raw::c_void,
    );
}
extern "C" {
    pub fn emscripten_set_interval(
        cb: ::std::option::Option<unsafe extern "C" fn(user_data: *mut ::std::os::raw::c_void)>,
        interval_ms: f64,
        user_data: *mut ::std::os::raw::c_void,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_clear_interval(id: ::std::os::raw::c_int);
}
extern "C" {
    pub fn emscripten_runtime_keepalive_push();
}
extern "C" {
    pub fn emscripten_runtime_keepalive_pop();
}
extern "C" {
    pub fn emscripten_runtime_keepalive_check() -> bool;
}
extern "C" {
    pub fn emscripten_console_log(utf8String: *const ::std::os::raw::c_char);
}
extern "C" {
    pub fn emscripten_console_warn(utf8String: *const ::std::os::raw::c_char);
}
extern "C" {
    pub fn emscripten_console_error(utf8String: *const ::std::os::raw::c_char);
}
extern "C" {
    pub fn emscripten_console_trace(utf8String: *const ::std::os::raw::c_char);
}
extern "C" {
    pub fn emscripten_out(utf8String: *const ::std::os::raw::c_char);
}
extern "C" {
    pub fn emscripten_err(utf8String: *const ::std::os::raw::c_char);
}
extern "C" {
    pub fn emscripten_dbg(utf8String: *const ::std::os::raw::c_char);
}
extern "C" {
    pub fn emscripten_dbg_backtrace(utf8String: *const ::std::os::raw::c_char);
}
extern "C" {
    pub fn emscripten_outn(utf8String: *const ::std::os::raw::c_char, len: usize);
}
extern "C" {
    pub fn emscripten_errn(utf8String: *const ::std::os::raw::c_char, len: usize);
}
extern "C" {
    pub fn emscripten_dbgn(utf8String: *const ::std::os::raw::c_char, len: usize);
}
extern "C" {
    pub fn emscripten_console_logf(format: *const ::std::os::raw::c_char, ...);
}
extern "C" {
    pub fn emscripten_console_warnf(format: *const ::std::os::raw::c_char, ...);
}
extern "C" {
    pub fn emscripten_console_errorf(format: *const ::std::os::raw::c_char, ...);
}
extern "C" {
    pub fn emscripten_console_tracef(format: *const ::std::os::raw::c_char, ...);
}
extern "C" {
    pub fn emscripten_outf(format: *const ::std::os::raw::c_char, ...);
}
extern "C" {
    pub fn emscripten_errf(format: *const ::std::os::raw::c_char, ...);
}
extern "C" {
    pub fn emscripten_dbgf(format: *const ::std::os::raw::c_char, ...);
}
extern "C" {
    pub fn emscripten_dbg_backtracef(format: *const ::std::os::raw::c_char, ...);
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EmscriptenKeyboardEvent {
    pub timestamp: f64,
    pub location: ::std::os::raw::c_uint,
    pub ctrlKey: bool,
    pub shiftKey: bool,
    pub altKey: bool,
    pub metaKey: bool,
    pub repeat: bool,
    pub charCode: ::std::os::raw::c_uint,
    pub keyCode: ::std::os::raw::c_uint,
    pub which: ::std::os::raw::c_uint,
    pub key: [::std::os::raw::c_char; 32usize],
    pub code: [::std::os::raw::c_char; 32usize],
    pub charValue: [::std::os::raw::c_char; 32usize],
    pub locale: [::std::os::raw::c_char; 32usize],
}
#[test]
fn bindgen_test_layout_EmscriptenKeyboardEvent() {
    const UNINIT: ::std::mem::MaybeUninit<EmscriptenKeyboardEvent> =
        ::std::mem::MaybeUninit::uninit();
    let ptr = UNINIT.as_ptr();
    assert_eq!(
        ::std::mem::size_of::<EmscriptenKeyboardEvent>(),
        160usize,
        concat!("Size of: ", stringify!(EmscriptenKeyboardEvent))
    );
    assert_eq!(
        ::std::mem::align_of::<EmscriptenKeyboardEvent>(),
        8usize,
        concat!("Alignment of ", stringify!(EmscriptenKeyboardEvent))
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).timestamp) as usize - ptr as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenKeyboardEvent),
            "::",
            stringify!(timestamp)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).location) as usize - ptr as usize },
        8usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenKeyboardEvent),
            "::",
            stringify!(location)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).ctrlKey) as usize - ptr as usize },
        12usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenKeyboardEvent),
            "::",
            stringify!(ctrlKey)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).shiftKey) as usize - ptr as usize },
        13usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenKeyboardEvent),
            "::",
            stringify!(shiftKey)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).altKey) as usize - ptr as usize },
        14usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenKeyboardEvent),
            "::",
            stringify!(altKey)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).metaKey) as usize - ptr as usize },
        15usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenKeyboardEvent),
            "::",
            stringify!(metaKey)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).repeat) as usize - ptr as usize },
        16usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenKeyboardEvent),
            "::",
            stringify!(repeat)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).charCode) as usize - ptr as usize },
        20usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenKeyboardEvent),
            "::",
            stringify!(charCode)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).keyCode) as usize - ptr as usize },
        24usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenKeyboardEvent),
            "::",
            stringify!(keyCode)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).which) as usize - ptr as usize },
        28usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenKeyboardEvent),
            "::",
            stringify!(which)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).key) as usize - ptr as usize },
        32usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenKeyboardEvent),
            "::",
            stringify!(key)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).code) as usize - ptr as usize },
        64usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenKeyboardEvent),
            "::",
            stringify!(code)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).charValue) as usize - ptr as usize },
        96usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenKeyboardEvent),
            "::",
            stringify!(charValue)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).locale) as usize - ptr as usize },
        128usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenKeyboardEvent),
            "::",
            stringify!(locale)
        )
    );
}
pub type em_key_callback_func = ::std::option::Option<
    unsafe extern "C" fn(
        eventType: ::std::os::raw::c_int,
        keyEvent: *const EmscriptenKeyboardEvent,
        userData: *mut ::std::os::raw::c_void,
    ) -> bool,
>;
extern "C" {
    pub fn emscripten_set_keypress_callback_on_thread(
        target: *const ::std::os::raw::c_char,
        userData: *mut ::std::os::raw::c_void,
        useCapture: bool,
        callback: em_key_callback_func,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_set_keydown_callback_on_thread(
        target: *const ::std::os::raw::c_char,
        userData: *mut ::std::os::raw::c_void,
        useCapture: bool,
        callback: em_key_callback_func,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_set_keyup_callback_on_thread(
        target: *const ::std::os::raw::c_char,
        userData: *mut ::std::os::raw::c_void,
        useCapture: bool,
        callback: em_key_callback_func,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EmscriptenMouseEvent {
    pub timestamp: f64,
    pub screenX: ::std::os::raw::c_int,
    pub screenY: ::std::os::raw::c_int,
    pub clientX: ::std::os::raw::c_int,
    pub clientY: ::std::os::raw::c_int,
    pub ctrlKey: bool,
    pub shiftKey: bool,
    pub altKey: bool,
    pub metaKey: bool,
    pub button: ::std::os::raw::c_ushort,
    pub buttons: ::std::os::raw::c_ushort,
    pub movementX: ::std::os::raw::c_int,
    pub movementY: ::std::os::raw::c_int,
    pub targetX: ::std::os::raw::c_int,
    pub targetY: ::std::os::raw::c_int,
    pub canvasX: ::std::os::raw::c_int,
    pub canvasY: ::std::os::raw::c_int,
    pub padding: ::std::os::raw::c_int,
}
#[test]
fn bindgen_test_layout_EmscriptenMouseEvent() {
    const UNINIT: ::std::mem::MaybeUninit<EmscriptenMouseEvent> = ::std::mem::MaybeUninit::uninit();
    let ptr = UNINIT.as_ptr();
    assert_eq!(
        ::std::mem::size_of::<EmscriptenMouseEvent>(),
        64usize,
        concat!("Size of: ", stringify!(EmscriptenMouseEvent))
    );
    assert_eq!(
        ::std::mem::align_of::<EmscriptenMouseEvent>(),
        8usize,
        concat!("Alignment of ", stringify!(EmscriptenMouseEvent))
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).timestamp) as usize - ptr as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenMouseEvent),
            "::",
            stringify!(timestamp)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).screenX) as usize - ptr as usize },
        8usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenMouseEvent),
            "::",
            stringify!(screenX)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).screenY) as usize - ptr as usize },
        12usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenMouseEvent),
            "::",
            stringify!(screenY)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).clientX) as usize - ptr as usize },
        16usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenMouseEvent),
            "::",
            stringify!(clientX)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).clientY) as usize - ptr as usize },
        20usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenMouseEvent),
            "::",
            stringify!(clientY)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).ctrlKey) as usize - ptr as usize },
        24usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenMouseEvent),
            "::",
            stringify!(ctrlKey)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).shiftKey) as usize - ptr as usize },
        25usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenMouseEvent),
            "::",
            stringify!(shiftKey)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).altKey) as usize - ptr as usize },
        26usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenMouseEvent),
            "::",
            stringify!(altKey)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).metaKey) as usize - ptr as usize },
        27usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenMouseEvent),
            "::",
            stringify!(metaKey)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).button) as usize - ptr as usize },
        28usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenMouseEvent),
            "::",
            stringify!(button)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).buttons) as usize - ptr as usize },
        30usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenMouseEvent),
            "::",
            stringify!(buttons)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).movementX) as usize - ptr as usize },
        32usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenMouseEvent),
            "::",
            stringify!(movementX)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).movementY) as usize - ptr as usize },
        36usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenMouseEvent),
            "::",
            stringify!(movementY)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).targetX) as usize - ptr as usize },
        40usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenMouseEvent),
            "::",
            stringify!(targetX)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).targetY) as usize - ptr as usize },
        44usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenMouseEvent),
            "::",
            stringify!(targetY)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).canvasX) as usize - ptr as usize },
        48usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenMouseEvent),
            "::",
            stringify!(canvasX)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).canvasY) as usize - ptr as usize },
        52usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenMouseEvent),
            "::",
            stringify!(canvasY)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).padding) as usize - ptr as usize },
        56usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenMouseEvent),
            "::",
            stringify!(padding)
        )
    );
}
pub type em_mouse_callback_func = ::std::option::Option<
    unsafe extern "C" fn(
        eventType: ::std::os::raw::c_int,
        mouseEvent: *const EmscriptenMouseEvent,
        userData: *mut ::std::os::raw::c_void,
    ) -> bool,
>;
extern "C" {
    pub fn emscripten_set_click_callback_on_thread(
        target: *const ::std::os::raw::c_char,
        userData: *mut ::std::os::raw::c_void,
        useCapture: bool,
        callback: em_mouse_callback_func,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_set_mousedown_callback_on_thread(
        target: *const ::std::os::raw::c_char,
        userData: *mut ::std::os::raw::c_void,
        useCapture: bool,
        callback: em_mouse_callback_func,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_set_mouseup_callback_on_thread(
        target: *const ::std::os::raw::c_char,
        userData: *mut ::std::os::raw::c_void,
        useCapture: bool,
        callback: em_mouse_callback_func,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_set_dblclick_callback_on_thread(
        target: *const ::std::os::raw::c_char,
        userData: *mut ::std::os::raw::c_void,
        useCapture: bool,
        callback: em_mouse_callback_func,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_set_mousemove_callback_on_thread(
        target: *const ::std::os::raw::c_char,
        userData: *mut ::std::os::raw::c_void,
        useCapture: bool,
        callback: em_mouse_callback_func,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_set_mouseenter_callback_on_thread(
        target: *const ::std::os::raw::c_char,
        userData: *mut ::std::os::raw::c_void,
        useCapture: bool,
        callback: em_mouse_callback_func,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_set_mouseleave_callback_on_thread(
        target: *const ::std::os::raw::c_char,
        userData: *mut ::std::os::raw::c_void,
        useCapture: bool,
        callback: em_mouse_callback_func,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_set_mouseover_callback_on_thread(
        target: *const ::std::os::raw::c_char,
        userData: *mut ::std::os::raw::c_void,
        useCapture: bool,
        callback: em_mouse_callback_func,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_set_mouseout_callback_on_thread(
        target: *const ::std::os::raw::c_char,
        userData: *mut ::std::os::raw::c_void,
        useCapture: bool,
        callback: em_mouse_callback_func,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_get_mouse_status(
        mouseState: *mut EmscriptenMouseEvent,
    ) -> ::std::os::raw::c_int;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EmscriptenWheelEvent {
    pub mouse: EmscriptenMouseEvent,
    pub deltaX: f64,
    pub deltaY: f64,
    pub deltaZ: f64,
    pub deltaMode: ::std::os::raw::c_uint,
}
#[test]
fn bindgen_test_layout_EmscriptenWheelEvent() {
    const UNINIT: ::std::mem::MaybeUninit<EmscriptenWheelEvent> = ::std::mem::MaybeUninit::uninit();
    let ptr = UNINIT.as_ptr();
    assert_eq!(
        ::std::mem::size_of::<EmscriptenWheelEvent>(),
        96usize,
        concat!("Size of: ", stringify!(EmscriptenWheelEvent))
    );
    assert_eq!(
        ::std::mem::align_of::<EmscriptenWheelEvent>(),
        8usize,
        concat!("Alignment of ", stringify!(EmscriptenWheelEvent))
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).mouse) as usize - ptr as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenWheelEvent),
            "::",
            stringify!(mouse)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).deltaX) as usize - ptr as usize },
        64usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenWheelEvent),
            "::",
            stringify!(deltaX)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).deltaY) as usize - ptr as usize },
        72usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenWheelEvent),
            "::",
            stringify!(deltaY)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).deltaZ) as usize - ptr as usize },
        80usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenWheelEvent),
            "::",
            stringify!(deltaZ)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).deltaMode) as usize - ptr as usize },
        88usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenWheelEvent),
            "::",
            stringify!(deltaMode)
        )
    );
}
pub type em_wheel_callback_func = ::std::option::Option<
    unsafe extern "C" fn(
        eventType: ::std::os::raw::c_int,
        wheelEvent: *const EmscriptenWheelEvent,
        userData: *mut ::std::os::raw::c_void,
    ) -> bool,
>;
extern "C" {
    pub fn emscripten_set_wheel_callback_on_thread(
        target: *const ::std::os::raw::c_char,
        userData: *mut ::std::os::raw::c_void,
        useCapture: bool,
        callback: em_wheel_callback_func,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EmscriptenUiEvent {
    pub detail: ::std::os::raw::c_int,
    pub documentBodyClientWidth: ::std::os::raw::c_int,
    pub documentBodyClientHeight: ::std::os::raw::c_int,
    pub windowInnerWidth: ::std::os::raw::c_int,
    pub windowInnerHeight: ::std::os::raw::c_int,
    pub windowOuterWidth: ::std::os::raw::c_int,
    pub windowOuterHeight: ::std::os::raw::c_int,
    pub scrollTop: ::std::os::raw::c_int,
    pub scrollLeft: ::std::os::raw::c_int,
}
#[test]
fn bindgen_test_layout_EmscriptenUiEvent() {
    const UNINIT: ::std::mem::MaybeUninit<EmscriptenUiEvent> = ::std::mem::MaybeUninit::uninit();
    let ptr = UNINIT.as_ptr();
    assert_eq!(
        ::std::mem::size_of::<EmscriptenUiEvent>(),
        36usize,
        concat!("Size of: ", stringify!(EmscriptenUiEvent))
    );
    assert_eq!(
        ::std::mem::align_of::<EmscriptenUiEvent>(),
        4usize,
        concat!("Alignment of ", stringify!(EmscriptenUiEvent))
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).detail) as usize - ptr as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenUiEvent),
            "::",
            stringify!(detail)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).documentBodyClientWidth) as usize - ptr as usize },
        4usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenUiEvent),
            "::",
            stringify!(documentBodyClientWidth)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).documentBodyClientHeight) as usize - ptr as usize },
        8usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenUiEvent),
            "::",
            stringify!(documentBodyClientHeight)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).windowInnerWidth) as usize - ptr as usize },
        12usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenUiEvent),
            "::",
            stringify!(windowInnerWidth)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).windowInnerHeight) as usize - ptr as usize },
        16usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenUiEvent),
            "::",
            stringify!(windowInnerHeight)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).windowOuterWidth) as usize - ptr as usize },
        20usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenUiEvent),
            "::",
            stringify!(windowOuterWidth)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).windowOuterHeight) as usize - ptr as usize },
        24usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenUiEvent),
            "::",
            stringify!(windowOuterHeight)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).scrollTop) as usize - ptr as usize },
        28usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenUiEvent),
            "::",
            stringify!(scrollTop)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).scrollLeft) as usize - ptr as usize },
        32usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenUiEvent),
            "::",
            stringify!(scrollLeft)
        )
    );
}
pub type em_ui_callback_func = ::std::option::Option<
    unsafe extern "C" fn(
        eventType: ::std::os::raw::c_int,
        uiEvent: *const EmscriptenUiEvent,
        userData: *mut ::std::os::raw::c_void,
    ) -> bool,
>;
extern "C" {
    pub fn emscripten_set_resize_callback_on_thread(
        target: *const ::std::os::raw::c_char,
        userData: *mut ::std::os::raw::c_void,
        useCapture: bool,
        callback: em_ui_callback_func,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_set_scroll_callback_on_thread(
        target: *const ::std::os::raw::c_char,
        userData: *mut ::std::os::raw::c_void,
        useCapture: bool,
        callback: em_ui_callback_func,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EmscriptenFocusEvent {
    pub nodeName: [::std::os::raw::c_char; 128usize],
    pub id: [::std::os::raw::c_char; 128usize],
}
#[test]
fn bindgen_test_layout_EmscriptenFocusEvent() {
    const UNINIT: ::std::mem::MaybeUninit<EmscriptenFocusEvent> = ::std::mem::MaybeUninit::uninit();
    let ptr = UNINIT.as_ptr();
    assert_eq!(
        ::std::mem::size_of::<EmscriptenFocusEvent>(),
        256usize,
        concat!("Size of: ", stringify!(EmscriptenFocusEvent))
    );
    assert_eq!(
        ::std::mem::align_of::<EmscriptenFocusEvent>(),
        1usize,
        concat!("Alignment of ", stringify!(EmscriptenFocusEvent))
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).nodeName) as usize - ptr as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenFocusEvent),
            "::",
            stringify!(nodeName)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).id) as usize - ptr as usize },
        128usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenFocusEvent),
            "::",
            stringify!(id)
        )
    );
}
pub type em_focus_callback_func = ::std::option::Option<
    unsafe extern "C" fn(
        eventType: ::std::os::raw::c_int,
        focusEvent: *const EmscriptenFocusEvent,
        userData: *mut ::std::os::raw::c_void,
    ) -> bool,
>;
extern "C" {
    pub fn emscripten_set_blur_callback_on_thread(
        target: *const ::std::os::raw::c_char,
        userData: *mut ::std::os::raw::c_void,
        useCapture: bool,
        callback: em_focus_callback_func,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_set_focus_callback_on_thread(
        target: *const ::std::os::raw::c_char,
        userData: *mut ::std::os::raw::c_void,
        useCapture: bool,
        callback: em_focus_callback_func,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_set_focusin_callback_on_thread(
        target: *const ::std::os::raw::c_char,
        userData: *mut ::std::os::raw::c_void,
        useCapture: bool,
        callback: em_focus_callback_func,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_set_focusout_callback_on_thread(
        target: *const ::std::os::raw::c_char,
        userData: *mut ::std::os::raw::c_void,
        useCapture: bool,
        callback: em_focus_callback_func,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EmscriptenDeviceOrientationEvent {
    pub alpha: f64,
    pub beta: f64,
    pub gamma: f64,
    pub absolute: bool,
}
#[test]
fn bindgen_test_layout_EmscriptenDeviceOrientationEvent() {
    const UNINIT: ::std::mem::MaybeUninit<EmscriptenDeviceOrientationEvent> =
        ::std::mem::MaybeUninit::uninit();
    let ptr = UNINIT.as_ptr();
    assert_eq!(
        ::std::mem::size_of::<EmscriptenDeviceOrientationEvent>(),
        32usize,
        concat!("Size of: ", stringify!(EmscriptenDeviceOrientationEvent))
    );
    assert_eq!(
        ::std::mem::align_of::<EmscriptenDeviceOrientationEvent>(),
        8usize,
        concat!(
            "Alignment of ",
            stringify!(EmscriptenDeviceOrientationEvent)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).alpha) as usize - ptr as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenDeviceOrientationEvent),
            "::",
            stringify!(alpha)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).beta) as usize - ptr as usize },
        8usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenDeviceOrientationEvent),
            "::",
            stringify!(beta)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).gamma) as usize - ptr as usize },
        16usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenDeviceOrientationEvent),
            "::",
            stringify!(gamma)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).absolute) as usize - ptr as usize },
        24usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenDeviceOrientationEvent),
            "::",
            stringify!(absolute)
        )
    );
}
pub type em_deviceorientation_callback_func = ::std::option::Option<
    unsafe extern "C" fn(
        eventType: ::std::os::raw::c_int,
        deviceOrientationEvent: *const EmscriptenDeviceOrientationEvent,
        userData: *mut ::std::os::raw::c_void,
    ) -> bool,
>;
extern "C" {
    pub fn emscripten_set_deviceorientation_callback_on_thread(
        userData: *mut ::std::os::raw::c_void,
        useCapture: bool,
        callback: em_deviceorientation_callback_func,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_get_deviceorientation_status(
        orientationState: *mut EmscriptenDeviceOrientationEvent,
    ) -> ::std::os::raw::c_int;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EmscriptenDeviceMotionEvent {
    pub accelerationX: f64,
    pub accelerationY: f64,
    pub accelerationZ: f64,
    pub accelerationIncludingGravityX: f64,
    pub accelerationIncludingGravityY: f64,
    pub accelerationIncludingGravityZ: f64,
    pub rotationRateAlpha: f64,
    pub rotationRateBeta: f64,
    pub rotationRateGamma: f64,
    pub supportedFields: ::std::os::raw::c_int,
}
#[test]
fn bindgen_test_layout_EmscriptenDeviceMotionEvent() {
    const UNINIT: ::std::mem::MaybeUninit<EmscriptenDeviceMotionEvent> =
        ::std::mem::MaybeUninit::uninit();
    let ptr = UNINIT.as_ptr();
    assert_eq!(
        ::std::mem::size_of::<EmscriptenDeviceMotionEvent>(),
        80usize,
        concat!("Size of: ", stringify!(EmscriptenDeviceMotionEvent))
    );
    assert_eq!(
        ::std::mem::align_of::<EmscriptenDeviceMotionEvent>(),
        8usize,
        concat!("Alignment of ", stringify!(EmscriptenDeviceMotionEvent))
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).accelerationX) as usize - ptr as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenDeviceMotionEvent),
            "::",
            stringify!(accelerationX)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).accelerationY) as usize - ptr as usize },
        8usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenDeviceMotionEvent),
            "::",
            stringify!(accelerationY)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).accelerationZ) as usize - ptr as usize },
        16usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenDeviceMotionEvent),
            "::",
            stringify!(accelerationZ)
        )
    );
    assert_eq!(
        unsafe {
            ::std::ptr::addr_of!((*ptr).accelerationIncludingGravityX) as usize - ptr as usize
        },
        24usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenDeviceMotionEvent),
            "::",
            stringify!(accelerationIncludingGravityX)
        )
    );
    assert_eq!(
        unsafe {
            ::std::ptr::addr_of!((*ptr).accelerationIncludingGravityY) as usize - ptr as usize
        },
        32usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenDeviceMotionEvent),
            "::",
            stringify!(accelerationIncludingGravityY)
        )
    );
    assert_eq!(
        unsafe {
            ::std::ptr::addr_of!((*ptr).accelerationIncludingGravityZ) as usize - ptr as usize
        },
        40usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenDeviceMotionEvent),
            "::",
            stringify!(accelerationIncludingGravityZ)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).rotationRateAlpha) as usize - ptr as usize },
        48usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenDeviceMotionEvent),
            "::",
            stringify!(rotationRateAlpha)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).rotationRateBeta) as usize - ptr as usize },
        56usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenDeviceMotionEvent),
            "::",
            stringify!(rotationRateBeta)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).rotationRateGamma) as usize - ptr as usize },
        64usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenDeviceMotionEvent),
            "::",
            stringify!(rotationRateGamma)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).supportedFields) as usize - ptr as usize },
        72usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenDeviceMotionEvent),
            "::",
            stringify!(supportedFields)
        )
    );
}
pub type em_devicemotion_callback_func = ::std::option::Option<
    unsafe extern "C" fn(
        eventType: ::std::os::raw::c_int,
        deviceMotionEvent: *const EmscriptenDeviceMotionEvent,
        userData: *mut ::std::os::raw::c_void,
    ) -> bool,
>;
extern "C" {
    pub fn emscripten_set_devicemotion_callback_on_thread(
        userData: *mut ::std::os::raw::c_void,
        useCapture: bool,
        callback: em_devicemotion_callback_func,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_get_devicemotion_status(
        motionState: *mut EmscriptenDeviceMotionEvent,
    ) -> ::std::os::raw::c_int;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EmscriptenOrientationChangeEvent {
    pub orientationIndex: ::std::os::raw::c_int,
    pub orientationAngle: ::std::os::raw::c_int,
}
#[test]
fn bindgen_test_layout_EmscriptenOrientationChangeEvent() {
    const UNINIT: ::std::mem::MaybeUninit<EmscriptenOrientationChangeEvent> =
        ::std::mem::MaybeUninit::uninit();
    let ptr = UNINIT.as_ptr();
    assert_eq!(
        ::std::mem::size_of::<EmscriptenOrientationChangeEvent>(),
        8usize,
        concat!("Size of: ", stringify!(EmscriptenOrientationChangeEvent))
    );
    assert_eq!(
        ::std::mem::align_of::<EmscriptenOrientationChangeEvent>(),
        4usize,
        concat!(
            "Alignment of ",
            stringify!(EmscriptenOrientationChangeEvent)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).orientationIndex) as usize - ptr as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenOrientationChangeEvent),
            "::",
            stringify!(orientationIndex)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).orientationAngle) as usize - ptr as usize },
        4usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenOrientationChangeEvent),
            "::",
            stringify!(orientationAngle)
        )
    );
}
pub type em_orientationchange_callback_func = ::std::option::Option<
    unsafe extern "C" fn(
        eventType: ::std::os::raw::c_int,
        orientationChangeEvent: *const EmscriptenOrientationChangeEvent,
        userData: *mut ::std::os::raw::c_void,
    ) -> bool,
>;
extern "C" {
    pub fn emscripten_set_orientationchange_callback_on_thread(
        userData: *mut ::std::os::raw::c_void,
        useCapture: bool,
        callback: em_orientationchange_callback_func,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_get_orientation_status(
        orientationStatus: *mut EmscriptenOrientationChangeEvent,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_lock_orientation(
        allowedOrientations: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_unlock_orientation() -> ::std::os::raw::c_int;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EmscriptenFullscreenChangeEvent {
    pub isFullscreen: bool,
    pub fullscreenEnabled: bool,
    pub nodeName: [::std::os::raw::c_char; 128usize],
    pub id: [::std::os::raw::c_char; 128usize],
    pub elementWidth: ::std::os::raw::c_int,
    pub elementHeight: ::std::os::raw::c_int,
    pub screenWidth: ::std::os::raw::c_int,
    pub screenHeight: ::std::os::raw::c_int,
}
#[test]
fn bindgen_test_layout_EmscriptenFullscreenChangeEvent() {
    const UNINIT: ::std::mem::MaybeUninit<EmscriptenFullscreenChangeEvent> =
        ::std::mem::MaybeUninit::uninit();
    let ptr = UNINIT.as_ptr();
    assert_eq!(
        ::std::mem::size_of::<EmscriptenFullscreenChangeEvent>(),
        276usize,
        concat!("Size of: ", stringify!(EmscriptenFullscreenChangeEvent))
    );
    assert_eq!(
        ::std::mem::align_of::<EmscriptenFullscreenChangeEvent>(),
        4usize,
        concat!("Alignment of ", stringify!(EmscriptenFullscreenChangeEvent))
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).isFullscreen) as usize - ptr as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenFullscreenChangeEvent),
            "::",
            stringify!(isFullscreen)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).fullscreenEnabled) as usize - ptr as usize },
        1usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenFullscreenChangeEvent),
            "::",
            stringify!(fullscreenEnabled)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).nodeName) as usize - ptr as usize },
        2usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenFullscreenChangeEvent),
            "::",
            stringify!(nodeName)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).id) as usize - ptr as usize },
        130usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenFullscreenChangeEvent),
            "::",
            stringify!(id)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).elementWidth) as usize - ptr as usize },
        260usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenFullscreenChangeEvent),
            "::",
            stringify!(elementWidth)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).elementHeight) as usize - ptr as usize },
        264usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenFullscreenChangeEvent),
            "::",
            stringify!(elementHeight)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).screenWidth) as usize - ptr as usize },
        268usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenFullscreenChangeEvent),
            "::",
            stringify!(screenWidth)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).screenHeight) as usize - ptr as usize },
        272usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenFullscreenChangeEvent),
            "::",
            stringify!(screenHeight)
        )
    );
}
pub type em_fullscreenchange_callback_func = ::std::option::Option<
    unsafe extern "C" fn(
        eventType: ::std::os::raw::c_int,
        fullscreenChangeEvent: *const EmscriptenFullscreenChangeEvent,
        userData: *mut ::std::os::raw::c_void,
    ) -> bool,
>;
extern "C" {
    pub fn emscripten_set_fullscreenchange_callback_on_thread(
        target: *const ::std::os::raw::c_char,
        userData: *mut ::std::os::raw::c_void,
        useCapture: bool,
        callback: em_fullscreenchange_callback_func,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_get_fullscreen_status(
        fullscreenStatus: *mut EmscriptenFullscreenChangeEvent,
    ) -> ::std::os::raw::c_int;
}
pub type em_canvasresized_callback_func = ::std::option::Option<
    unsafe extern "C" fn(
        eventType: ::std::os::raw::c_int,
        reserved: *const ::std::os::raw::c_void,
        userData: *mut ::std::os::raw::c_void,
    ) -> bool,
>;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EmscriptenFullscreenStrategy {
    pub scaleMode: ::std::os::raw::c_int,
    pub canvasResolutionScaleMode: ::std::os::raw::c_int,
    pub filteringMode: ::std::os::raw::c_int,
    pub canvasResizedCallback: em_canvasresized_callback_func,
    pub canvasResizedCallbackUserData: *mut ::std::os::raw::c_void,
    pub canvasResizedCallbackTargetThread: pthread_t,
}
#[test]
fn bindgen_test_layout_EmscriptenFullscreenStrategy() {
    const UNINIT: ::std::mem::MaybeUninit<EmscriptenFullscreenStrategy> =
        ::std::mem::MaybeUninit::uninit();
    let ptr = UNINIT.as_ptr();
    assert_eq!(
        ::std::mem::size_of::<EmscriptenFullscreenStrategy>(),
        40usize,
        concat!("Size of: ", stringify!(EmscriptenFullscreenStrategy))
    );
    assert_eq!(
        ::std::mem::align_of::<EmscriptenFullscreenStrategy>(),
        8usize,
        concat!("Alignment of ", stringify!(EmscriptenFullscreenStrategy))
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).scaleMode) as usize - ptr as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenFullscreenStrategy),
            "::",
            stringify!(scaleMode)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).canvasResolutionScaleMode) as usize - ptr as usize },
        4usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenFullscreenStrategy),
            "::",
            stringify!(canvasResolutionScaleMode)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).filteringMode) as usize - ptr as usize },
        8usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenFullscreenStrategy),
            "::",
            stringify!(filteringMode)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).canvasResizedCallback) as usize - ptr as usize },
        16usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenFullscreenStrategy),
            "::",
            stringify!(canvasResizedCallback)
        )
    );
    assert_eq!(
        unsafe {
            ::std::ptr::addr_of!((*ptr).canvasResizedCallbackUserData) as usize - ptr as usize
        },
        24usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenFullscreenStrategy),
            "::",
            stringify!(canvasResizedCallbackUserData)
        )
    );
    assert_eq!(
        unsafe {
            ::std::ptr::addr_of!((*ptr).canvasResizedCallbackTargetThread) as usize - ptr as usize
        },
        32usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenFullscreenStrategy),
            "::",
            stringify!(canvasResizedCallbackTargetThread)
        )
    );
}
extern "C" {
    pub fn emscripten_request_fullscreen(
        target: *const ::std::os::raw::c_char,
        deferUntilInEventHandler: bool,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_request_fullscreen_strategy(
        target: *const ::std::os::raw::c_char,
        deferUntilInEventHandler: bool,
        fullscreenStrategy: *const EmscriptenFullscreenStrategy,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_exit_fullscreen() -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_enter_soft_fullscreen(
        target: *const ::std::os::raw::c_char,
        fullscreenStrategy: *const EmscriptenFullscreenStrategy,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_exit_soft_fullscreen() -> ::std::os::raw::c_int;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EmscriptenPointerlockChangeEvent {
    pub isActive: bool,
    pub nodeName: [::std::os::raw::c_char; 128usize],
    pub id: [::std::os::raw::c_char; 128usize],
}
#[test]
fn bindgen_test_layout_EmscriptenPointerlockChangeEvent() {
    const UNINIT: ::std::mem::MaybeUninit<EmscriptenPointerlockChangeEvent> =
        ::std::mem::MaybeUninit::uninit();
    let ptr = UNINIT.as_ptr();
    assert_eq!(
        ::std::mem::size_of::<EmscriptenPointerlockChangeEvent>(),
        257usize,
        concat!("Size of: ", stringify!(EmscriptenPointerlockChangeEvent))
    );
    assert_eq!(
        ::std::mem::align_of::<EmscriptenPointerlockChangeEvent>(),
        1usize,
        concat!(
            "Alignment of ",
            stringify!(EmscriptenPointerlockChangeEvent)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).isActive) as usize - ptr as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenPointerlockChangeEvent),
            "::",
            stringify!(isActive)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).nodeName) as usize - ptr as usize },
        1usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenPointerlockChangeEvent),
            "::",
            stringify!(nodeName)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).id) as usize - ptr as usize },
        129usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenPointerlockChangeEvent),
            "::",
            stringify!(id)
        )
    );
}
pub type em_pointerlockchange_callback_func = ::std::option::Option<
    unsafe extern "C" fn(
        eventType: ::std::os::raw::c_int,
        pointerlockChangeEvent: *const EmscriptenPointerlockChangeEvent,
        userData: *mut ::std::os::raw::c_void,
    ) -> bool,
>;
extern "C" {
    pub fn emscripten_set_pointerlockchange_callback_on_thread(
        target: *const ::std::os::raw::c_char,
        userData: *mut ::std::os::raw::c_void,
        useCapture: bool,
        callback: em_pointerlockchange_callback_func,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
pub type em_pointerlockerror_callback_func = ::std::option::Option<
    unsafe extern "C" fn(
        eventType: ::std::os::raw::c_int,
        reserved: *const ::std::os::raw::c_void,
        userData: *mut ::std::os::raw::c_void,
    ) -> bool,
>;
extern "C" {
    pub fn emscripten_set_pointerlockerror_callback_on_thread(
        target: *const ::std::os::raw::c_char,
        userData: *mut ::std::os::raw::c_void,
        useCapture: bool,
        callback: em_pointerlockerror_callback_func,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_get_pointerlock_status(
        pointerlockStatus: *mut EmscriptenPointerlockChangeEvent,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_request_pointerlock(
        target: *const ::std::os::raw::c_char,
        deferUntilInEventHandler: bool,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_exit_pointerlock() -> ::std::os::raw::c_int;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EmscriptenVisibilityChangeEvent {
    pub hidden: bool,
    pub visibilityState: ::std::os::raw::c_int,
}
#[test]
fn bindgen_test_layout_EmscriptenVisibilityChangeEvent() {
    const UNINIT: ::std::mem::MaybeUninit<EmscriptenVisibilityChangeEvent> =
        ::std::mem::MaybeUninit::uninit();
    let ptr = UNINIT.as_ptr();
    assert_eq!(
        ::std::mem::size_of::<EmscriptenVisibilityChangeEvent>(),
        8usize,
        concat!("Size of: ", stringify!(EmscriptenVisibilityChangeEvent))
    );
    assert_eq!(
        ::std::mem::align_of::<EmscriptenVisibilityChangeEvent>(),
        4usize,
        concat!("Alignment of ", stringify!(EmscriptenVisibilityChangeEvent))
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).hidden) as usize - ptr as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenVisibilityChangeEvent),
            "::",
            stringify!(hidden)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).visibilityState) as usize - ptr as usize },
        4usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenVisibilityChangeEvent),
            "::",
            stringify!(visibilityState)
        )
    );
}
pub type em_visibilitychange_callback_func = ::std::option::Option<
    unsafe extern "C" fn(
        eventType: ::std::os::raw::c_int,
        visibilityChangeEvent: *const EmscriptenVisibilityChangeEvent,
        userData: *mut ::std::os::raw::c_void,
    ) -> bool,
>;
extern "C" {
    pub fn emscripten_set_visibilitychange_callback_on_thread(
        userData: *mut ::std::os::raw::c_void,
        useCapture: bool,
        callback: em_visibilitychange_callback_func,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_get_visibility_status(
        visibilityStatus: *mut EmscriptenVisibilityChangeEvent,
    ) -> ::std::os::raw::c_int;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EmscriptenTouchPoint {
    pub identifier: ::std::os::raw::c_int,
    pub screenX: ::std::os::raw::c_int,
    pub screenY: ::std::os::raw::c_int,
    pub clientX: ::std::os::raw::c_int,
    pub clientY: ::std::os::raw::c_int,
    pub pageX: ::std::os::raw::c_int,
    pub pageY: ::std::os::raw::c_int,
    pub isChanged: bool,
    pub onTarget: bool,
    pub targetX: ::std::os::raw::c_int,
    pub targetY: ::std::os::raw::c_int,
    pub canvasX: ::std::os::raw::c_int,
    pub canvasY: ::std::os::raw::c_int,
}
#[test]
fn bindgen_test_layout_EmscriptenTouchPoint() {
    const UNINIT: ::std::mem::MaybeUninit<EmscriptenTouchPoint> = ::std::mem::MaybeUninit::uninit();
    let ptr = UNINIT.as_ptr();
    assert_eq!(
        ::std::mem::size_of::<EmscriptenTouchPoint>(),
        48usize,
        concat!("Size of: ", stringify!(EmscriptenTouchPoint))
    );
    assert_eq!(
        ::std::mem::align_of::<EmscriptenTouchPoint>(),
        4usize,
        concat!("Alignment of ", stringify!(EmscriptenTouchPoint))
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).identifier) as usize - ptr as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenTouchPoint),
            "::",
            stringify!(identifier)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).screenX) as usize - ptr as usize },
        4usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenTouchPoint),
            "::",
            stringify!(screenX)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).screenY) as usize - ptr as usize },
        8usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenTouchPoint),
            "::",
            stringify!(screenY)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).clientX) as usize - ptr as usize },
        12usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenTouchPoint),
            "::",
            stringify!(clientX)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).clientY) as usize - ptr as usize },
        16usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenTouchPoint),
            "::",
            stringify!(clientY)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).pageX) as usize - ptr as usize },
        20usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenTouchPoint),
            "::",
            stringify!(pageX)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).pageY) as usize - ptr as usize },
        24usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenTouchPoint),
            "::",
            stringify!(pageY)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).isChanged) as usize - ptr as usize },
        28usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenTouchPoint),
            "::",
            stringify!(isChanged)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).onTarget) as usize - ptr as usize },
        29usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenTouchPoint),
            "::",
            stringify!(onTarget)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).targetX) as usize - ptr as usize },
        32usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenTouchPoint),
            "::",
            stringify!(targetX)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).targetY) as usize - ptr as usize },
        36usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenTouchPoint),
            "::",
            stringify!(targetY)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).canvasX) as usize - ptr as usize },
        40usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenTouchPoint),
            "::",
            stringify!(canvasX)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).canvasY) as usize - ptr as usize },
        44usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenTouchPoint),
            "::",
            stringify!(canvasY)
        )
    );
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EmscriptenTouchEvent {
    pub timestamp: f64,
    pub numTouches: ::std::os::raw::c_int,
    pub ctrlKey: bool,
    pub shiftKey: bool,
    pub altKey: bool,
    pub metaKey: bool,
    pub touches: [EmscriptenTouchPoint; 32usize],
}
#[test]
fn bindgen_test_layout_EmscriptenTouchEvent() {
    const UNINIT: ::std::mem::MaybeUninit<EmscriptenTouchEvent> = ::std::mem::MaybeUninit::uninit();
    let ptr = UNINIT.as_ptr();
    assert_eq!(
        ::std::mem::size_of::<EmscriptenTouchEvent>(),
        1552usize,
        concat!("Size of: ", stringify!(EmscriptenTouchEvent))
    );
    assert_eq!(
        ::std::mem::align_of::<EmscriptenTouchEvent>(),
        8usize,
        concat!("Alignment of ", stringify!(EmscriptenTouchEvent))
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).timestamp) as usize - ptr as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenTouchEvent),
            "::",
            stringify!(timestamp)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).numTouches) as usize - ptr as usize },
        8usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenTouchEvent),
            "::",
            stringify!(numTouches)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).ctrlKey) as usize - ptr as usize },
        12usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenTouchEvent),
            "::",
            stringify!(ctrlKey)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).shiftKey) as usize - ptr as usize },
        13usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenTouchEvent),
            "::",
            stringify!(shiftKey)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).altKey) as usize - ptr as usize },
        14usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenTouchEvent),
            "::",
            stringify!(altKey)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).metaKey) as usize - ptr as usize },
        15usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenTouchEvent),
            "::",
            stringify!(metaKey)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).touches) as usize - ptr as usize },
        16usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenTouchEvent),
            "::",
            stringify!(touches)
        )
    );
}
pub type em_touch_callback_func = ::std::option::Option<
    unsafe extern "C" fn(
        eventType: ::std::os::raw::c_int,
        touchEvent: *const EmscriptenTouchEvent,
        userData: *mut ::std::os::raw::c_void,
    ) -> bool,
>;
extern "C" {
    pub fn emscripten_set_touchstart_callback_on_thread(
        target: *const ::std::os::raw::c_char,
        userData: *mut ::std::os::raw::c_void,
        useCapture: bool,
        callback: em_touch_callback_func,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_set_touchend_callback_on_thread(
        target: *const ::std::os::raw::c_char,
        userData: *mut ::std::os::raw::c_void,
        useCapture: bool,
        callback: em_touch_callback_func,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_set_touchmove_callback_on_thread(
        target: *const ::std::os::raw::c_char,
        userData: *mut ::std::os::raw::c_void,
        useCapture: bool,
        callback: em_touch_callback_func,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_set_touchcancel_callback_on_thread(
        target: *const ::std::os::raw::c_char,
        userData: *mut ::std::os::raw::c_void,
        useCapture: bool,
        callback: em_touch_callback_func,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EmscriptenGamepadEvent {
    pub timestamp: f64,
    pub numAxes: ::std::os::raw::c_int,
    pub numButtons: ::std::os::raw::c_int,
    pub axis: [f64; 64usize],
    pub analogButton: [f64; 64usize],
    pub digitalButton: [bool; 64usize],
    pub connected: bool,
    pub index: ::std::os::raw::c_int,
    pub id: [::std::os::raw::c_char; 64usize],
    pub mapping: [::std::os::raw::c_char; 64usize],
}
#[test]
fn bindgen_test_layout_EmscriptenGamepadEvent() {
    const UNINIT: ::std::mem::MaybeUninit<EmscriptenGamepadEvent> =
        ::std::mem::MaybeUninit::uninit();
    let ptr = UNINIT.as_ptr();
    assert_eq!(
        ::std::mem::size_of::<EmscriptenGamepadEvent>(),
        1240usize,
        concat!("Size of: ", stringify!(EmscriptenGamepadEvent))
    );
    assert_eq!(
        ::std::mem::align_of::<EmscriptenGamepadEvent>(),
        8usize,
        concat!("Alignment of ", stringify!(EmscriptenGamepadEvent))
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).timestamp) as usize - ptr as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenGamepadEvent),
            "::",
            stringify!(timestamp)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).numAxes) as usize - ptr as usize },
        8usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenGamepadEvent),
            "::",
            stringify!(numAxes)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).numButtons) as usize - ptr as usize },
        12usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenGamepadEvent),
            "::",
            stringify!(numButtons)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).axis) as usize - ptr as usize },
        16usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenGamepadEvent),
            "::",
            stringify!(axis)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).analogButton) as usize - ptr as usize },
        528usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenGamepadEvent),
            "::",
            stringify!(analogButton)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).digitalButton) as usize - ptr as usize },
        1040usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenGamepadEvent),
            "::",
            stringify!(digitalButton)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).connected) as usize - ptr as usize },
        1104usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenGamepadEvent),
            "::",
            stringify!(connected)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).index) as usize - ptr as usize },
        1108usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenGamepadEvent),
            "::",
            stringify!(index)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).id) as usize - ptr as usize },
        1112usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenGamepadEvent),
            "::",
            stringify!(id)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).mapping) as usize - ptr as usize },
        1176usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenGamepadEvent),
            "::",
            stringify!(mapping)
        )
    );
}
pub type em_gamepad_callback_func = ::std::option::Option<
    unsafe extern "C" fn(
        eventType: ::std::os::raw::c_int,
        gamepadEvent: *const EmscriptenGamepadEvent,
        userData: *mut ::std::os::raw::c_void,
    ) -> bool,
>;
extern "C" {
    pub fn emscripten_set_gamepadconnected_callback_on_thread(
        userData: *mut ::std::os::raw::c_void,
        useCapture: bool,
        callback: em_gamepad_callback_func,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_set_gamepaddisconnected_callback_on_thread(
        userData: *mut ::std::os::raw::c_void,
        useCapture: bool,
        callback: em_gamepad_callback_func,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_sample_gamepad_data() -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_get_num_gamepads() -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_get_gamepad_status(
        index: ::std::os::raw::c_int,
        gamepadState: *mut EmscriptenGamepadEvent,
    ) -> ::std::os::raw::c_int;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EmscriptenBatteryEvent {
    pub chargingTime: f64,
    pub dischargingTime: f64,
    pub level: f64,
    pub charging: bool,
}
#[test]
fn bindgen_test_layout_EmscriptenBatteryEvent() {
    const UNINIT: ::std::mem::MaybeUninit<EmscriptenBatteryEvent> =
        ::std::mem::MaybeUninit::uninit();
    let ptr = UNINIT.as_ptr();
    assert_eq!(
        ::std::mem::size_of::<EmscriptenBatteryEvent>(),
        32usize,
        concat!("Size of: ", stringify!(EmscriptenBatteryEvent))
    );
    assert_eq!(
        ::std::mem::align_of::<EmscriptenBatteryEvent>(),
        8usize,
        concat!("Alignment of ", stringify!(EmscriptenBatteryEvent))
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).chargingTime) as usize - ptr as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenBatteryEvent),
            "::",
            stringify!(chargingTime)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).dischargingTime) as usize - ptr as usize },
        8usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenBatteryEvent),
            "::",
            stringify!(dischargingTime)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).level) as usize - ptr as usize },
        16usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenBatteryEvent),
            "::",
            stringify!(level)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).charging) as usize - ptr as usize },
        24usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenBatteryEvent),
            "::",
            stringify!(charging)
        )
    );
}
pub type em_battery_callback_func = ::std::option::Option<
    unsafe extern "C" fn(
        eventType: ::std::os::raw::c_int,
        batteryEvent: *const EmscriptenBatteryEvent,
        userData: *mut ::std::os::raw::c_void,
    ) -> bool,
>;
extern "C" {
    pub fn emscripten_set_batterychargingchange_callback_on_thread(
        userData: *mut ::std::os::raw::c_void,
        callback: em_battery_callback_func,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_set_batterylevelchange_callback_on_thread(
        userData: *mut ::std::os::raw::c_void,
        callback: em_battery_callback_func,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_get_battery_status(
        batteryState: *mut EmscriptenBatteryEvent,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_vibrate(msecs: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_vibrate_pattern(
        msecsArray: *mut ::std::os::raw::c_int,
        numEntries: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
pub type em_beforeunload_callback = ::std::option::Option<
    unsafe extern "C" fn(
        eventType: ::std::os::raw::c_int,
        reserved: *const ::std::os::raw::c_void,
        userData: *mut ::std::os::raw::c_void,
    ) -> *const ::std::os::raw::c_char,
>;
extern "C" {
    pub fn emscripten_set_beforeunload_callback_on_thread(
        userData: *mut ::std::os::raw::c_void,
        callback: em_beforeunload_callback,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_set_canvas_element_size(
        target: *const ::std::os::raw::c_char,
        width: ::std::os::raw::c_int,
        height: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_get_canvas_element_size(
        target: *const ::std::os::raw::c_char,
        width: *mut ::std::os::raw::c_int,
        height: *mut ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_set_element_css_size(
        target: *const ::std::os::raw::c_char,
        width: f64,
        height: f64,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_get_element_css_size(
        target: *const ::std::os::raw::c_char,
        width: *mut f64,
        height: *mut f64,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_html5_remove_all_event_listeners();
}
extern "C" {
    pub fn emscripten_request_animation_frame(
        cb: ::std::option::Option<
            unsafe extern "C" fn(time: f64, userData: *mut ::std::os::raw::c_void) -> bool,
        >,
        userData: *mut ::std::os::raw::c_void,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_cancel_animation_frame(requestAnimationFrameId: ::std::os::raw::c_int);
}
extern "C" {
    pub fn emscripten_request_animation_frame_loop(
        cb: ::std::option::Option<
            unsafe extern "C" fn(time: f64, userData: *mut ::std::os::raw::c_void) -> bool,
        >,
        userData: *mut ::std::os::raw::c_void,
    );
}
extern "C" {
    pub fn emscripten_date_now() -> f64;
}
extern "C" {
    pub fn emscripten_performance_now() -> f64;
}
pub type EMSCRIPTEN_WEBGL_CONTEXT_HANDLE = usize;
pub type EMSCRIPTEN_WEBGL_CONTEXT_PROXY_MODE = ::std::os::raw::c_int;
pub type EM_WEBGL_POWER_PREFERENCE = ::std::os::raw::c_int;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EmscriptenWebGLContextAttributes {
    pub alpha: bool,
    pub depth: bool,
    pub stencil: bool,
    pub antialias: bool,
    pub premultipliedAlpha: bool,
    pub preserveDrawingBuffer: bool,
    pub powerPreference: EM_WEBGL_POWER_PREFERENCE,
    pub failIfMajorPerformanceCaveat: bool,
    pub majorVersion: ::std::os::raw::c_int,
    pub minorVersion: ::std::os::raw::c_int,
    pub enableExtensionsByDefault: bool,
    pub explicitSwapControl: bool,
    pub proxyContextToMainThread: EMSCRIPTEN_WEBGL_CONTEXT_PROXY_MODE,
    pub renderViaOffscreenBackBuffer: bool,
}
#[test]
fn bindgen_test_layout_EmscriptenWebGLContextAttributes() {
    const UNINIT: ::std::mem::MaybeUninit<EmscriptenWebGLContextAttributes> =
        ::std::mem::MaybeUninit::uninit();
    let ptr = UNINIT.as_ptr();
    assert_eq!(
        ::std::mem::size_of::<EmscriptenWebGLContextAttributes>(),
        36usize,
        concat!("Size of: ", stringify!(EmscriptenWebGLContextAttributes))
    );
    assert_eq!(
        ::std::mem::align_of::<EmscriptenWebGLContextAttributes>(),
        4usize,
        concat!(
            "Alignment of ",
            stringify!(EmscriptenWebGLContextAttributes)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).alpha) as usize - ptr as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenWebGLContextAttributes),
            "::",
            stringify!(alpha)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).depth) as usize - ptr as usize },
        1usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenWebGLContextAttributes),
            "::",
            stringify!(depth)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).stencil) as usize - ptr as usize },
        2usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenWebGLContextAttributes),
            "::",
            stringify!(stencil)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).antialias) as usize - ptr as usize },
        3usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenWebGLContextAttributes),
            "::",
            stringify!(antialias)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).premultipliedAlpha) as usize - ptr as usize },
        4usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenWebGLContextAttributes),
            "::",
            stringify!(premultipliedAlpha)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).preserveDrawingBuffer) as usize - ptr as usize },
        5usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenWebGLContextAttributes),
            "::",
            stringify!(preserveDrawingBuffer)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).powerPreference) as usize - ptr as usize },
        8usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenWebGLContextAttributes),
            "::",
            stringify!(powerPreference)
        )
    );
    assert_eq!(
        unsafe {
            ::std::ptr::addr_of!((*ptr).failIfMajorPerformanceCaveat) as usize - ptr as usize
        },
        12usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenWebGLContextAttributes),
            "::",
            stringify!(failIfMajorPerformanceCaveat)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).majorVersion) as usize - ptr as usize },
        16usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenWebGLContextAttributes),
            "::",
            stringify!(majorVersion)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).minorVersion) as usize - ptr as usize },
        20usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenWebGLContextAttributes),
            "::",
            stringify!(minorVersion)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).enableExtensionsByDefault) as usize - ptr as usize },
        24usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenWebGLContextAttributes),
            "::",
            stringify!(enableExtensionsByDefault)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).explicitSwapControl) as usize - ptr as usize },
        25usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenWebGLContextAttributes),
            "::",
            stringify!(explicitSwapControl)
        )
    );
    assert_eq!(
        unsafe { ::std::ptr::addr_of!((*ptr).proxyContextToMainThread) as usize - ptr as usize },
        28usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenWebGLContextAttributes),
            "::",
            stringify!(proxyContextToMainThread)
        )
    );
    assert_eq!(
        unsafe {
            ::std::ptr::addr_of!((*ptr).renderViaOffscreenBackBuffer) as usize - ptr as usize
        },
        32usize,
        concat!(
            "Offset of field: ",
            stringify!(EmscriptenWebGLContextAttributes),
            "::",
            stringify!(renderViaOffscreenBackBuffer)
        )
    );
}
extern "C" {
    pub fn emscripten_webgl_init_context_attributes(
        attributes: *mut EmscriptenWebGLContextAttributes,
    );
}
extern "C" {
    pub fn emscripten_webgl_create_context(
        target: *const ::std::os::raw::c_char,
        attributes: *const EmscriptenWebGLContextAttributes,
    ) -> EMSCRIPTEN_WEBGL_CONTEXT_HANDLE;
}
extern "C" {
    pub fn emscripten_webgl_make_context_current(
        context: EMSCRIPTEN_WEBGL_CONTEXT_HANDLE,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_webgl_get_current_context() -> EMSCRIPTEN_WEBGL_CONTEXT_HANDLE;
}
extern "C" {
    pub fn emscripten_webgl_get_drawing_buffer_size(
        context: EMSCRIPTEN_WEBGL_CONTEXT_HANDLE,
        width: *mut ::std::os::raw::c_int,
        height: *mut ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_webgl_get_context_attributes(
        context: EMSCRIPTEN_WEBGL_CONTEXT_HANDLE,
        outAttributes: *mut EmscriptenWebGLContextAttributes,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_webgl_destroy_context(
        context: EMSCRIPTEN_WEBGL_CONTEXT_HANDLE,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_webgl_enable_extension(
        context: EMSCRIPTEN_WEBGL_CONTEXT_HANDLE,
        extension: *const ::std::os::raw::c_char,
    ) -> bool;
}
extern "C" {
    pub fn emscripten_webgl_enable_ANGLE_instanced_arrays(
        context: EMSCRIPTEN_WEBGL_CONTEXT_HANDLE,
    ) -> bool;
}
extern "C" {
    pub fn emscripten_webgl_enable_OES_vertex_array_object(
        context: EMSCRIPTEN_WEBGL_CONTEXT_HANDLE,
    ) -> bool;
}
extern "C" {
    pub fn emscripten_webgl_enable_WEBGL_draw_buffers(
        context: EMSCRIPTEN_WEBGL_CONTEXT_HANDLE,
    ) -> bool;
}
extern "C" {
    pub fn emscripten_webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(
        context: EMSCRIPTEN_WEBGL_CONTEXT_HANDLE,
    ) -> bool;
}
extern "C" {
    pub fn emscripten_webgl_enable_WEBGL_multi_draw(
        context: EMSCRIPTEN_WEBGL_CONTEXT_HANDLE,
    ) -> bool;
}
extern "C" {
    pub fn emscripten_webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(
        context: EMSCRIPTEN_WEBGL_CONTEXT_HANDLE,
    ) -> bool;
}
extern "C" {
    pub fn emscripten_webgl_enable_EXT_polygon_offset_clamp(
        context: EMSCRIPTEN_WEBGL_CONTEXT_HANDLE,
    ) -> bool;
}
extern "C" {
    pub fn emscripten_webgl_enable_EXT_clip_control(
        context: EMSCRIPTEN_WEBGL_CONTEXT_HANDLE,
    ) -> bool;
}
extern "C" {
    pub fn emscripten_webgl_enable_WEBGL_polygon_mode(
        context: EMSCRIPTEN_WEBGL_CONTEXT_HANDLE,
    ) -> bool;
}
pub type em_webgl_context_callback = ::std::option::Option<
    unsafe extern "C" fn(
        eventType: ::std::os::raw::c_int,
        reserved: *const ::std::os::raw::c_void,
        userData: *mut ::std::os::raw::c_void,
    ) -> bool,
>;
extern "C" {
    pub fn emscripten_set_webglcontextlost_callback_on_thread(
        target: *const ::std::os::raw::c_char,
        userData: *mut ::std::os::raw::c_void,
        useCapture: bool,
        callback: em_webgl_context_callback,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_set_webglcontextrestored_callback_on_thread(
        target: *const ::std::os::raw::c_char,
        userData: *mut ::std::os::raw::c_void,
        useCapture: bool,
        callback: em_webgl_context_callback,
        targetThread: pthread_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_is_webgl_context_lost(context: EMSCRIPTEN_WEBGL_CONTEXT_HANDLE) -> bool;
}
extern "C" {
    pub fn emscripten_webgl_commit_frame() -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_supports_offscreencanvas() -> bool;
}
extern "C" {
    pub fn emscripten_webgl1_get_proc_address(
        name: *const ::std::os::raw::c_char,
    ) -> *mut ::std::os::raw::c_void;
}
extern "C" {
    pub fn emscripten_webgl2_get_proc_address(
        name: *const ::std::os::raw::c_char,
    ) -> *mut ::std::os::raw::c_void;
}
extern "C" {
    pub fn emscripten_webgl_get_proc_address(
        name: *const ::std::os::raw::c_char,
    ) -> *mut ::std::os::raw::c_void;
}
extern "C" {
    pub fn emscripten_webgl_get_supported_extensions() -> *mut ::std::os::raw::c_char;
}
extern "C" {
    pub fn emscripten_webgl_get_shader_parameter_d(
        shader: ::std::os::raw::c_int,
        param: ::std::os::raw::c_int,
    ) -> f64;
}
extern "C" {
    pub fn emscripten_webgl_get_shader_info_log_utf8(
        shader: ::std::os::raw::c_int,
    ) -> *mut ::std::os::raw::c_char;
}
extern "C" {
    pub fn emscripten_webgl_get_shader_source_utf8(
        shader: ::std::os::raw::c_int,
    ) -> *mut ::std::os::raw::c_char;
}
extern "C" {
    pub fn emscripten_webgl_get_program_parameter_d(
        program: ::std::os::raw::c_int,
        param: ::std::os::raw::c_int,
    ) -> f64;
}
extern "C" {
    pub fn emscripten_webgl_get_program_info_log_utf8(
        program: ::std::os::raw::c_int,
    ) -> *mut ::std::os::raw::c_char;
}
extern "C" {
    pub fn emscripten_webgl_get_vertex_attrib_d(
        index: ::std::os::raw::c_int,
        param: ::std::os::raw::c_int,
    ) -> f64;
}
extern "C" {
    pub fn emscripten_webgl_get_vertex_attrib_o(
        index: ::std::os::raw::c_int,
        param: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_webgl_get_vertex_attrib_v(
        index: ::std::os::raw::c_int,
        param: ::std::os::raw::c_int,
        dst: *mut ::std::os::raw::c_void,
        dstLength: ::std::os::raw::c_int,
        dstType: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_webgl_get_uniform_d(
        program: ::std::os::raw::c_int,
        location: ::std::os::raw::c_int,
    ) -> f64;
}
extern "C" {
    pub fn emscripten_webgl_get_uniform_v(
        program: ::std::os::raw::c_int,
        location: ::std::os::raw::c_int,
        dst: *mut ::std::os::raw::c_void,
        dstLength: ::std::os::raw::c_int,
        dstType: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_webgl_get_parameter_v(
        param: ::std::os::raw::c_int,
        dst: *mut ::std::os::raw::c_void,
        dstLength: ::std::os::raw::c_int,
        dstType: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_webgl_get_parameter_d(param: ::std::os::raw::c_int) -> f64;
}
extern "C" {
    pub fn emscripten_webgl_get_parameter_o(param: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn emscripten_webgl_get_parameter_utf8(
        param: ::std::os::raw::c_int,
    ) -> *mut ::std::os::raw::c_char;
}
extern "C" {
    pub fn emscripten_webgl_get_parameter_i64v(
        param: ::std::os::raw::c_int,
        dst: *mut ::std::os::raw::c_longlong,
    );
}