emscripten_functions_sys/
html5.rs

1/* automatically generated by rust-bindgen 0.66.1 */
2
3pub const EM_TRUE: u32 = 1;
4pub const EM_FALSE: u32 = 0;
5pub const EMSCRIPTEN_RESULT_SUCCESS: u32 = 0;
6pub const EMSCRIPTEN_RESULT_DEFERRED: u32 = 1;
7pub const EMSCRIPTEN_RESULT_NOT_SUPPORTED: i32 = -1;
8pub const EMSCRIPTEN_RESULT_FAILED_NOT_DEFERRED: i32 = -2;
9pub const EMSCRIPTEN_RESULT_INVALID_TARGET: i32 = -3;
10pub const EMSCRIPTEN_RESULT_UNKNOWN_TARGET: i32 = -4;
11pub const EMSCRIPTEN_RESULT_INVALID_PARAM: i32 = -5;
12pub const EMSCRIPTEN_RESULT_FAILED: i32 = -6;
13pub const EMSCRIPTEN_RESULT_NO_DATA: i32 = -7;
14pub const EMSCRIPTEN_RESULT_TIMED_OUT: i32 = -8;
15pub const LONG_CODE: u8 = 105u8;
16pub const __EMSCRIPTEN_major__: u32 = 4;
17pub const __EMSCRIPTEN_minor__: u32 = 0;
18pub const __EMSCRIPTEN_tiny__: u32 = 1;
19pub const EM_TIMING_SETTIMEOUT: u32 = 0;
20pub const EM_TIMING_RAF: u32 = 1;
21pub const EM_TIMING_SETIMMEDIATE: u32 = 2;
22pub const EM_LOG_CONSOLE: u32 = 1;
23pub const EM_LOG_WARN: u32 = 2;
24pub const EM_LOG_ERROR: u32 = 4;
25pub const EM_LOG_C_STACK: u32 = 8;
26pub const EM_LOG_JS_STACK: u32 = 16;
27pub const EM_LOG_DEMANGLE: u32 = 32;
28pub const EM_LOG_NO_PATHS: u32 = 64;
29pub const EM_LOG_FUNC_PARAMS: u32 = 128;
30pub const EM_LOG_DEBUG: u32 = 256;
31pub const EM_LOG_INFO: u32 = 512;
32pub const EMSCRIPTEN_EVENT_KEYPRESS: u32 = 1;
33pub const EMSCRIPTEN_EVENT_KEYDOWN: u32 = 2;
34pub const EMSCRIPTEN_EVENT_KEYUP: u32 = 3;
35pub const EMSCRIPTEN_EVENT_CLICK: u32 = 4;
36pub const EMSCRIPTEN_EVENT_MOUSEDOWN: u32 = 5;
37pub const EMSCRIPTEN_EVENT_MOUSEUP: u32 = 6;
38pub const EMSCRIPTEN_EVENT_DBLCLICK: u32 = 7;
39pub const EMSCRIPTEN_EVENT_MOUSEMOVE: u32 = 8;
40pub const EMSCRIPTEN_EVENT_WHEEL: u32 = 9;
41pub const EMSCRIPTEN_EVENT_RESIZE: u32 = 10;
42pub const EMSCRIPTEN_EVENT_SCROLL: u32 = 11;
43pub const EMSCRIPTEN_EVENT_BLUR: u32 = 12;
44pub const EMSCRIPTEN_EVENT_FOCUS: u32 = 13;
45pub const EMSCRIPTEN_EVENT_FOCUSIN: u32 = 14;
46pub const EMSCRIPTEN_EVENT_FOCUSOUT: u32 = 15;
47pub const EMSCRIPTEN_EVENT_DEVICEORIENTATION: u32 = 16;
48pub const EMSCRIPTEN_EVENT_DEVICEMOTION: u32 = 17;
49pub const EMSCRIPTEN_EVENT_ORIENTATIONCHANGE: u32 = 18;
50pub const EMSCRIPTEN_EVENT_FULLSCREENCHANGE: u32 = 19;
51pub const EMSCRIPTEN_EVENT_POINTERLOCKCHANGE: u32 = 20;
52pub const EMSCRIPTEN_EVENT_VISIBILITYCHANGE: u32 = 21;
53pub const EMSCRIPTEN_EVENT_TOUCHSTART: u32 = 22;
54pub const EMSCRIPTEN_EVENT_TOUCHEND: u32 = 23;
55pub const EMSCRIPTEN_EVENT_TOUCHMOVE: u32 = 24;
56pub const EMSCRIPTEN_EVENT_TOUCHCANCEL: u32 = 25;
57pub const EMSCRIPTEN_EVENT_GAMEPADCONNECTED: u32 = 26;
58pub const EMSCRIPTEN_EVENT_GAMEPADDISCONNECTED: u32 = 27;
59pub const EMSCRIPTEN_EVENT_BEFOREUNLOAD: u32 = 28;
60pub const EMSCRIPTEN_EVENT_BATTERYCHARGINGCHANGE: u32 = 29;
61pub const EMSCRIPTEN_EVENT_BATTERYLEVELCHANGE: u32 = 30;
62pub const EMSCRIPTEN_EVENT_WEBGLCONTEXTLOST: u32 = 31;
63pub const EMSCRIPTEN_EVENT_WEBGLCONTEXTRESTORED: u32 = 32;
64pub const EMSCRIPTEN_EVENT_MOUSEENTER: u32 = 33;
65pub const EMSCRIPTEN_EVENT_MOUSELEAVE: u32 = 34;
66pub const EMSCRIPTEN_EVENT_MOUSEOVER: u32 = 35;
67pub const EMSCRIPTEN_EVENT_MOUSEOUT: u32 = 36;
68pub const EMSCRIPTEN_EVENT_CANVASRESIZED: u32 = 37;
69pub const EMSCRIPTEN_EVENT_POINTERLOCKERROR: u32 = 38;
70pub const EMSCRIPTEN_EVENT_TARGET_INVALID: u32 = 0;
71pub const DOM_KEY_LOCATION_STANDARD: u32 = 0;
72pub const DOM_KEY_LOCATION_LEFT: u32 = 1;
73pub const DOM_KEY_LOCATION_RIGHT: u32 = 2;
74pub const DOM_KEY_LOCATION_NUMPAD: u32 = 3;
75pub const EM_HTML5_SHORT_STRING_LEN_BYTES: u32 = 32;
76pub const EM_HTML5_MEDIUM_STRING_LEN_BYTES: u32 = 64;
77pub const EM_HTML5_LONG_STRING_LEN_BYTES: u32 = 128;
78pub const DOM_DELTA_PIXEL: u32 = 0;
79pub const DOM_DELTA_LINE: u32 = 1;
80pub const DOM_DELTA_PAGE: u32 = 2;
81pub const EMSCRIPTEN_DEVICE_MOTION_EVENT_SUPPORTS_ACCELERATION: u32 = 1;
82pub const EMSCRIPTEN_DEVICE_MOTION_EVENT_SUPPORTS_ACCELERATION_INCLUDING_GRAVITY: u32 = 2;
83pub const EMSCRIPTEN_DEVICE_MOTION_EVENT_SUPPORTS_ROTATION_RATE: u32 = 4;
84pub const EMSCRIPTEN_ORIENTATION_UNSUPPORTED: u32 = 0;
85pub const EMSCRIPTEN_ORIENTATION_PORTRAIT_PRIMARY: u32 = 1;
86pub const EMSCRIPTEN_ORIENTATION_PORTRAIT_SECONDARY: u32 = 2;
87pub const EMSCRIPTEN_ORIENTATION_LANDSCAPE_PRIMARY: u32 = 4;
88pub const EMSCRIPTEN_ORIENTATION_LANDSCAPE_SECONDARY: u32 = 8;
89pub const EMSCRIPTEN_FULLSCREEN_SCALE_DEFAULT: u32 = 0;
90pub const EMSCRIPTEN_FULLSCREEN_SCALE_STRETCH: u32 = 1;
91pub const EMSCRIPTEN_FULLSCREEN_SCALE_ASPECT: u32 = 2;
92pub const EMSCRIPTEN_FULLSCREEN_SCALE_CENTER: u32 = 3;
93pub const EMSCRIPTEN_FULLSCREEN_CANVAS_SCALE_NONE: u32 = 0;
94pub const EMSCRIPTEN_FULLSCREEN_CANVAS_SCALE_STDDEF: u32 = 1;
95pub const EMSCRIPTEN_FULLSCREEN_CANVAS_SCALE_HIDEF: u32 = 2;
96pub const EMSCRIPTEN_FULLSCREEN_FILTERING_DEFAULT: u32 = 0;
97pub const EMSCRIPTEN_FULLSCREEN_FILTERING_NEAREST: u32 = 1;
98pub const EMSCRIPTEN_FULLSCREEN_FILTERING_BILINEAR: u32 = 2;
99pub const EMSCRIPTEN_VISIBILITY_HIDDEN: u32 = 0;
100pub const EMSCRIPTEN_VISIBILITY_VISIBLE: u32 = 1;
101pub const EMSCRIPTEN_VISIBILITY_PRERENDER: u32 = 2;
102pub const EMSCRIPTEN_VISIBILITY_UNLOADED: u32 = 3;
103pub const EMSCRIPTEN_WEBGL_CONTEXT_PROXY_DISALLOW: u32 = 0;
104pub const EMSCRIPTEN_WEBGL_CONTEXT_PROXY_FALLBACK: u32 = 1;
105pub const EMSCRIPTEN_WEBGL_CONTEXT_PROXY_ALWAYS: u32 = 2;
106pub const EM_WEBGL_POWER_PREFERENCE_DEFAULT: u32 = 0;
107pub const EM_WEBGL_POWER_PREFERENCE_LOW_POWER: u32 = 1;
108pub const EM_WEBGL_POWER_PREFERENCE_HIGH_PERFORMANCE: u32 = 2;
109pub const EMSCRIPTEN_WEBGL_PARAM_TYPE_INT: u32 = 0;
110pub const EMSCRIPTEN_WEBGL_PARAM_TYPE_FLOAT: u32 = 1;
111#[repr(C)]
112#[derive(Debug, Copy, Clone)]
113pub struct __pthread {
114    _unused: [u8; 0],
115}
116pub type pthread_t = *mut __pthread;
117pub type emscripten_align1_short = ::std::os::raw::c_short;
118pub type emscripten_align4_int64 = ::std::os::raw::c_longlong;
119pub type emscripten_align2_int64 = ::std::os::raw::c_longlong;
120pub type emscripten_align1_int64 = ::std::os::raw::c_longlong;
121pub type emscripten_align2_int = ::std::os::raw::c_int;
122pub type emscripten_align1_int = ::std::os::raw::c_int;
123pub type emscripten_align2_float = f32;
124pub type emscripten_align1_float = f32;
125pub type emscripten_align4_double = f64;
126pub type emscripten_align2_double = f64;
127pub type emscripten_align1_double = f64;
128pub type em_callback_func = ::std::option::Option<unsafe extern "C" fn()>;
129pub type em_arg_callback_func =
130    ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>;
131pub type em_str_callback_func =
132    ::std::option::Option<unsafe extern "C" fn(arg1: *const ::std::os::raw::c_char)>;
133extern "C" {
134    pub fn emscripten_asm_const_int(
135        code: *const ::std::os::raw::c_char,
136        arg_sigs: *const ::std::os::raw::c_char,
137        ...
138    ) -> ::std::os::raw::c_int;
139}
140extern "C" {
141    pub fn emscripten_asm_const_ptr(
142        code: *const ::std::os::raw::c_char,
143        arg_sigs: *const ::std::os::raw::c_char,
144        ...
145    ) -> *mut ::std::os::raw::c_void;
146}
147extern "C" {
148    pub fn emscripten_asm_const_double(
149        code: *const ::std::os::raw::c_char,
150        arg_sigs: *const ::std::os::raw::c_char,
151        ...
152    ) -> f64;
153}
154extern "C" {
155    pub fn emscripten_asm_const_int_sync_on_main_thread(
156        code: *const ::std::os::raw::c_char,
157        arg_sigs: *const ::std::os::raw::c_char,
158        ...
159    ) -> ::std::os::raw::c_int;
160}
161extern "C" {
162    pub fn emscripten_asm_const_ptr_sync_on_main_thread(
163        code: *const ::std::os::raw::c_char,
164        arg_sigs: *const ::std::os::raw::c_char,
165        ...
166    ) -> *mut ::std::os::raw::c_void;
167}
168extern "C" {
169    pub fn emscripten_asm_const_double_sync_on_main_thread(
170        code: *const ::std::os::raw::c_char,
171        arg_sigs: *const ::std::os::raw::c_char,
172        ...
173    ) -> f64;
174}
175extern "C" {
176    pub fn emscripten_asm_const_async_on_main_thread(
177        code: *const ::std::os::raw::c_char,
178        arg_sigs: *const ::std::os::raw::c_char,
179        ...
180    );
181}
182#[repr(C)]
183#[derive(Debug, Copy, Clone)]
184pub struct _em_promise {
185    _unused: [u8; 0],
186}
187pub type em_promise_t = *mut _em_promise;
188pub const em_promise_result_t_EM_PROMISE_FULFILL: em_promise_result_t = 0;
189pub const em_promise_result_t_EM_PROMISE_MATCH: em_promise_result_t = 1;
190pub const em_promise_result_t_EM_PROMISE_MATCH_RELEASE: em_promise_result_t = 2;
191pub const em_promise_result_t_EM_PROMISE_REJECT: em_promise_result_t = 3;
192pub type em_promise_result_t = ::std::os::raw::c_uint;
193pub type em_promise_callback_t = ::std::option::Option<
194    unsafe extern "C" fn(
195        result: *mut *mut ::std::os::raw::c_void,
196        data: *mut ::std::os::raw::c_void,
197        value: *mut ::std::os::raw::c_void,
198    ) -> em_promise_result_t,
199>;
200extern "C" {
201    pub fn emscripten_promise_create() -> em_promise_t;
202}
203extern "C" {
204    pub fn emscripten_promise_destroy(promise: em_promise_t);
205}
206extern "C" {
207    pub fn emscripten_promise_resolve(
208        promise: em_promise_t,
209        result: em_promise_result_t,
210        value: *mut ::std::os::raw::c_void,
211    );
212}
213extern "C" {
214    pub fn emscripten_promise_then(
215        promise: em_promise_t,
216        on_fulfilled: em_promise_callback_t,
217        on_rejected: em_promise_callback_t,
218        data: *mut ::std::os::raw::c_void,
219    ) -> em_promise_t;
220}
221extern "C" {
222    pub fn emscripten_promise_all(
223        promises: *mut em_promise_t,
224        results: *mut *mut ::std::os::raw::c_void,
225        num_promises: usize,
226    ) -> em_promise_t;
227}
228#[repr(C)]
229#[derive(Debug, Copy, Clone)]
230pub struct em_settled_result_t {
231    pub result: em_promise_result_t,
232    pub value: *mut ::std::os::raw::c_void,
233}
234#[test]
235fn bindgen_test_layout_em_settled_result_t() {
236    const UNINIT: ::std::mem::MaybeUninit<em_settled_result_t> = ::std::mem::MaybeUninit::uninit();
237    let ptr = UNINIT.as_ptr();
238    assert_eq!(
239        ::std::mem::size_of::<em_settled_result_t>(),
240        16usize,
241        concat!("Size of: ", stringify!(em_settled_result_t))
242    );
243    assert_eq!(
244        ::std::mem::align_of::<em_settled_result_t>(),
245        8usize,
246        concat!("Alignment of ", stringify!(em_settled_result_t))
247    );
248    assert_eq!(
249        unsafe { ::std::ptr::addr_of!((*ptr).result) as usize - ptr as usize },
250        0usize,
251        concat!(
252            "Offset of field: ",
253            stringify!(em_settled_result_t),
254            "::",
255            stringify!(result)
256        )
257    );
258    assert_eq!(
259        unsafe { ::std::ptr::addr_of!((*ptr).value) as usize - ptr as usize },
260        8usize,
261        concat!(
262            "Offset of field: ",
263            stringify!(em_settled_result_t),
264            "::",
265            stringify!(value)
266        )
267    );
268}
269extern "C" {
270    pub fn emscripten_promise_all_settled(
271        promises: *mut em_promise_t,
272        results: *mut em_settled_result_t,
273        num_promises: usize,
274    ) -> em_promise_t;
275}
276extern "C" {
277    pub fn emscripten_promise_any(
278        promises: *mut em_promise_t,
279        errors: *mut *mut ::std::os::raw::c_void,
280        num_promises: usize,
281    ) -> em_promise_t;
282}
283extern "C" {
284    pub fn emscripten_promise_race(
285        promises: *mut em_promise_t,
286        num_promises: usize,
287    ) -> em_promise_t;
288}
289extern "C" {
290    pub fn emscripten_promise_await(promise: em_promise_t) -> em_settled_result_t;
291}
292extern "C" {
293    pub fn emscripten_async_wget(
294        url: *const ::std::os::raw::c_char,
295        file: *const ::std::os::raw::c_char,
296        onload: em_str_callback_func,
297        onerror: em_str_callback_func,
298    );
299}
300pub type em_async_wget_onload_func = ::std::option::Option<
301    unsafe extern "C" fn(
302        userdata: *mut ::std::os::raw::c_void,
303        data: *mut ::std::os::raw::c_void,
304        size: ::std::os::raw::c_int,
305    ),
306>;
307extern "C" {
308    pub fn emscripten_async_wget_data(
309        url: *const ::std::os::raw::c_char,
310        userdata: *mut ::std::os::raw::c_void,
311        onload: em_async_wget_onload_func,
312        onerror: em_arg_callback_func,
313    );
314}
315pub type em_async_wget2_onload_func = ::std::option::Option<
316    unsafe extern "C" fn(
317        handle: ::std::os::raw::c_uint,
318        userdata: *mut ::std::os::raw::c_void,
319        data: *const ::std::os::raw::c_char,
320    ),
321>;
322pub type em_async_wget2_onstatus_func = ::std::option::Option<
323    unsafe extern "C" fn(
324        handle: ::std::os::raw::c_uint,
325        userdata: *mut ::std::os::raw::c_void,
326        status: ::std::os::raw::c_int,
327    ),
328>;
329extern "C" {
330    pub fn emscripten_async_wget2(
331        url: *const ::std::os::raw::c_char,
332        file: *const ::std::os::raw::c_char,
333        requesttype: *const ::std::os::raw::c_char,
334        param: *const ::std::os::raw::c_char,
335        userdata: *mut ::std::os::raw::c_void,
336        onload: em_async_wget2_onload_func,
337        onerror: em_async_wget2_onstatus_func,
338        onprogress: em_async_wget2_onstatus_func,
339    ) -> ::std::os::raw::c_int;
340}
341pub type em_async_wget2_data_onload_func = ::std::option::Option<
342    unsafe extern "C" fn(
343        handle: ::std::os::raw::c_uint,
344        userdata: *mut ::std::os::raw::c_void,
345        data: *mut ::std::os::raw::c_void,
346        size: ::std::os::raw::c_uint,
347    ),
348>;
349pub type em_async_wget2_data_onerror_func = ::std::option::Option<
350    unsafe extern "C" fn(
351        handle: ::std::os::raw::c_uint,
352        userdata: *mut ::std::os::raw::c_void,
353        status: ::std::os::raw::c_int,
354        status_text: *const ::std::os::raw::c_char,
355    ),
356>;
357pub type em_async_wget2_data_onprogress_func = ::std::option::Option<
358    unsafe extern "C" fn(
359        handle: ::std::os::raw::c_uint,
360        userdata: *mut ::std::os::raw::c_void,
361        loaded: ::std::os::raw::c_int,
362        total: ::std::os::raw::c_int,
363    ),
364>;
365extern "C" {
366    pub fn emscripten_async_wget2_data(
367        url: *const ::std::os::raw::c_char,
368        requesttype: *const ::std::os::raw::c_char,
369        param: *const ::std::os::raw::c_char,
370        arg: *mut ::std::os::raw::c_void,
371        free: ::std::os::raw::c_int,
372        onload: em_async_wget2_data_onload_func,
373        onerror: em_async_wget2_data_onerror_func,
374        onprogress: em_async_wget2_data_onprogress_func,
375    ) -> ::std::os::raw::c_int;
376}
377extern "C" {
378    pub fn emscripten_async_wget2_abort(handle: ::std::os::raw::c_int);
379}
380extern "C" {
381    pub fn emscripten_wget(
382        url: *const ::std::os::raw::c_char,
383        file: *const ::std::os::raw::c_char,
384    ) -> ::std::os::raw::c_int;
385}
386extern "C" {
387    pub fn emscripten_wget_data(
388        url: *const ::std::os::raw::c_char,
389        pbuffer: *mut *mut ::std::os::raw::c_void,
390        pnum: *mut ::std::os::raw::c_int,
391        perror: *mut ::std::os::raw::c_int,
392    );
393}
394extern "C" {
395    pub fn emscripten_run_script(script: *const ::std::os::raw::c_char);
396}
397extern "C" {
398    pub fn emscripten_run_script_int(
399        script: *const ::std::os::raw::c_char,
400    ) -> ::std::os::raw::c_int;
401}
402extern "C" {
403    pub fn emscripten_run_script_string(
404        script: *const ::std::os::raw::c_char,
405    ) -> *mut ::std::os::raw::c_char;
406}
407extern "C" {
408    pub fn emscripten_async_run_script(
409        script: *const ::std::os::raw::c_char,
410        millis: ::std::os::raw::c_int,
411    );
412}
413extern "C" {
414    pub fn emscripten_async_load_script(
415        script: *const ::std::os::raw::c_char,
416        onload: em_callback_func,
417        onerror: em_callback_func,
418    );
419}
420extern "C" {
421    pub fn emscripten_set_main_loop(
422        func: em_callback_func,
423        fps: ::std::os::raw::c_int,
424        simulate_infinite_loop: bool,
425    );
426}
427extern "C" {
428    pub fn emscripten_set_main_loop_timing(
429        mode: ::std::os::raw::c_int,
430        value: ::std::os::raw::c_int,
431    ) -> ::std::os::raw::c_int;
432}
433extern "C" {
434    pub fn emscripten_get_main_loop_timing(
435        mode: *mut ::std::os::raw::c_int,
436        value: *mut ::std::os::raw::c_int,
437    );
438}
439extern "C" {
440    pub fn emscripten_set_main_loop_arg(
441        func: em_arg_callback_func,
442        arg: *mut ::std::os::raw::c_void,
443        fps: ::std::os::raw::c_int,
444        simulate_infinite_loop: bool,
445    );
446}
447extern "C" {
448    pub fn emscripten_pause_main_loop();
449}
450extern "C" {
451    pub fn emscripten_resume_main_loop();
452}
453extern "C" {
454    pub fn emscripten_cancel_main_loop();
455}
456pub type em_socket_callback = ::std::option::Option<
457    unsafe extern "C" fn(fd: ::std::os::raw::c_int, userData: *mut ::std::os::raw::c_void),
458>;
459pub type em_socket_error_callback = ::std::option::Option<
460    unsafe extern "C" fn(
461        fd: ::std::os::raw::c_int,
462        err: ::std::os::raw::c_int,
463        msg: *const ::std::os::raw::c_char,
464        userData: *mut ::std::os::raw::c_void,
465    ),
466>;
467extern "C" {
468    pub fn emscripten_set_socket_error_callback(
469        userData: *mut ::std::os::raw::c_void,
470        callback: em_socket_error_callback,
471    );
472}
473extern "C" {
474    pub fn emscripten_set_socket_open_callback(
475        userData: *mut ::std::os::raw::c_void,
476        callback: em_socket_callback,
477    );
478}
479extern "C" {
480    pub fn emscripten_set_socket_listen_callback(
481        userData: *mut ::std::os::raw::c_void,
482        callback: em_socket_callback,
483    );
484}
485extern "C" {
486    pub fn emscripten_set_socket_connection_callback(
487        userData: *mut ::std::os::raw::c_void,
488        callback: em_socket_callback,
489    );
490}
491extern "C" {
492    pub fn emscripten_set_socket_message_callback(
493        userData: *mut ::std::os::raw::c_void,
494        callback: em_socket_callback,
495    );
496}
497extern "C" {
498    pub fn emscripten_set_socket_close_callback(
499        userData: *mut ::std::os::raw::c_void,
500        callback: em_socket_callback,
501    );
502}
503extern "C" {
504    pub fn _emscripten_push_main_loop_blocker(
505        func: em_arg_callback_func,
506        arg: *mut ::std::os::raw::c_void,
507        name: *const ::std::os::raw::c_char,
508    );
509}
510extern "C" {
511    pub fn _emscripten_push_uncounted_main_loop_blocker(
512        func: em_arg_callback_func,
513        arg: *mut ::std::os::raw::c_void,
514        name: *const ::std::os::raw::c_char,
515    );
516}
517extern "C" {
518    pub fn emscripten_set_main_loop_expected_blockers(num: ::std::os::raw::c_int);
519}
520extern "C" {
521    pub fn emscripten_async_call(
522        func: em_arg_callback_func,
523        arg: *mut ::std::os::raw::c_void,
524        millis: ::std::os::raw::c_int,
525    );
526}
527extern "C" {
528    pub fn emscripten_exit_with_live_runtime() -> !;
529}
530extern "C" {
531    pub fn emscripten_force_exit(status: ::std::os::raw::c_int) -> !;
532}
533extern "C" {
534    pub fn emscripten_get_device_pixel_ratio() -> f64;
535}
536extern "C" {
537    pub fn emscripten_get_window_title() -> *mut ::std::os::raw::c_char;
538}
539extern "C" {
540    pub fn emscripten_set_window_title(arg1: *const ::std::os::raw::c_char);
541}
542extern "C" {
543    pub fn emscripten_get_screen_size(
544        width: *mut ::std::os::raw::c_int,
545        height: *mut ::std::os::raw::c_int,
546    );
547}
548extern "C" {
549    pub fn emscripten_hide_mouse();
550}
551extern "C" {
552    pub fn emscripten_set_canvas_size(width: ::std::os::raw::c_int, height: ::std::os::raw::c_int);
553}
554extern "C" {
555    pub fn emscripten_get_canvas_size(
556        width: *mut ::std::os::raw::c_int,
557        height: *mut ::std::os::raw::c_int,
558        isFullscreen: *mut ::std::os::raw::c_int,
559    );
560}
561extern "C" {
562    pub fn emscripten_get_now() -> f64;
563}
564extern "C" {
565    pub fn emscripten_random() -> f32;
566}
567pub type em_idb_onload_func = ::std::option::Option<
568    unsafe extern "C" fn(
569        arg1: *mut ::std::os::raw::c_void,
570        arg2: *mut ::std::os::raw::c_void,
571        arg3: ::std::os::raw::c_int,
572    ),
573>;
574extern "C" {
575    pub fn emscripten_idb_async_load(
576        db_name: *const ::std::os::raw::c_char,
577        file_id: *const ::std::os::raw::c_char,
578        arg: *mut ::std::os::raw::c_void,
579        onload: em_idb_onload_func,
580        onerror: em_arg_callback_func,
581    );
582}
583extern "C" {
584    pub fn emscripten_idb_async_store(
585        db_name: *const ::std::os::raw::c_char,
586        file_id: *const ::std::os::raw::c_char,
587        ptr: *mut ::std::os::raw::c_void,
588        num: ::std::os::raw::c_int,
589        arg: *mut ::std::os::raw::c_void,
590        onstore: em_arg_callback_func,
591        onerror: em_arg_callback_func,
592    );
593}
594extern "C" {
595    pub fn emscripten_idb_async_delete(
596        db_name: *const ::std::os::raw::c_char,
597        file_id: *const ::std::os::raw::c_char,
598        arg: *mut ::std::os::raw::c_void,
599        ondelete: em_arg_callback_func,
600        onerror: em_arg_callback_func,
601    );
602}
603pub type em_idb_exists_func = ::std::option::Option<
604    unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void, arg2: ::std::os::raw::c_int),
605>;
606extern "C" {
607    pub fn emscripten_idb_async_exists(
608        db_name: *const ::std::os::raw::c_char,
609        file_id: *const ::std::os::raw::c_char,
610        arg: *mut ::std::os::raw::c_void,
611        oncheck: em_idb_exists_func,
612        onerror: em_arg_callback_func,
613    );
614}
615extern "C" {
616    pub fn emscripten_idb_async_clear(
617        db_name: *const ::std::os::raw::c_char,
618        arg: *mut ::std::os::raw::c_void,
619        onclear: em_arg_callback_func,
620        onerror: em_arg_callback_func,
621    );
622}
623extern "C" {
624    pub fn emscripten_idb_load(
625        db_name: *const ::std::os::raw::c_char,
626        file_id: *const ::std::os::raw::c_char,
627        pbuffer: *mut *mut ::std::os::raw::c_void,
628        pnum: *mut ::std::os::raw::c_int,
629        perror: *mut ::std::os::raw::c_int,
630    );
631}
632extern "C" {
633    pub fn emscripten_idb_store(
634        db_name: *const ::std::os::raw::c_char,
635        file_id: *const ::std::os::raw::c_char,
636        buffer: *mut ::std::os::raw::c_void,
637        num: ::std::os::raw::c_int,
638        perror: *mut ::std::os::raw::c_int,
639    );
640}
641extern "C" {
642    pub fn emscripten_idb_delete(
643        db_name: *const ::std::os::raw::c_char,
644        file_id: *const ::std::os::raw::c_char,
645        perror: *mut ::std::os::raw::c_int,
646    );
647}
648extern "C" {
649    pub fn emscripten_idb_exists(
650        db_name: *const ::std::os::raw::c_char,
651        file_id: *const ::std::os::raw::c_char,
652        pexists: *mut ::std::os::raw::c_int,
653        perror: *mut ::std::os::raw::c_int,
654    );
655}
656extern "C" {
657    pub fn emscripten_idb_clear(
658        db_name: *const ::std::os::raw::c_char,
659        perror: *mut ::std::os::raw::c_int,
660    );
661}
662extern "C" {
663    pub fn emscripten_idb_load_blob(
664        db_name: *const ::std::os::raw::c_char,
665        file_id: *const ::std::os::raw::c_char,
666        pblob: *mut ::std::os::raw::c_int,
667        perror: *mut ::std::os::raw::c_int,
668    );
669}
670extern "C" {
671    pub fn emscripten_idb_store_blob(
672        db_name: *const ::std::os::raw::c_char,
673        file_id: *const ::std::os::raw::c_char,
674        buffer: *mut ::std::os::raw::c_void,
675        num: ::std::os::raw::c_int,
676        perror: *mut ::std::os::raw::c_int,
677    );
678}
679extern "C" {
680    pub fn emscripten_idb_read_from_blob(
681        blob: ::std::os::raw::c_int,
682        start: ::std::os::raw::c_int,
683        num: ::std::os::raw::c_int,
684        buffer: *mut ::std::os::raw::c_void,
685    );
686}
687extern "C" {
688    pub fn emscripten_idb_free_blob(blob: ::std::os::raw::c_int);
689}
690extern "C" {
691    pub fn emscripten_run_preload_plugins(
692        file: *const ::std::os::raw::c_char,
693        onload: em_str_callback_func,
694        onerror: em_str_callback_func,
695    ) -> ::std::os::raw::c_int;
696}
697pub type em_run_preload_plugins_data_onload_func = ::std::option::Option<
698    unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void, arg2: *const ::std::os::raw::c_char),
699>;
700extern "C" {
701    pub fn emscripten_run_preload_plugins_data(
702        data: *mut ::std::os::raw::c_char,
703        size: ::std::os::raw::c_int,
704        suffix: *const ::std::os::raw::c_char,
705        arg: *mut ::std::os::raw::c_void,
706        onload: em_run_preload_plugins_data_onload_func,
707        onerror: em_arg_callback_func,
708    );
709}
710extern "C" {
711    pub fn emscripten_lazy_load_code();
712}
713pub type worker_handle = ::std::os::raw::c_int;
714extern "C" {
715    pub fn emscripten_create_worker(url: *const ::std::os::raw::c_char) -> worker_handle;
716}
717extern "C" {
718    pub fn emscripten_destroy_worker(worker: worker_handle);
719}
720pub type em_worker_callback_func = ::std::option::Option<
721    unsafe extern "C" fn(
722        arg1: *mut ::std::os::raw::c_char,
723        arg2: ::std::os::raw::c_int,
724        arg3: *mut ::std::os::raw::c_void,
725    ),
726>;
727extern "C" {
728    pub fn emscripten_call_worker(
729        worker: worker_handle,
730        funcname: *const ::std::os::raw::c_char,
731        data: *mut ::std::os::raw::c_char,
732        size: ::std::os::raw::c_int,
733        callback: em_worker_callback_func,
734        arg: *mut ::std::os::raw::c_void,
735    );
736}
737extern "C" {
738    pub fn emscripten_worker_respond(
739        data: *mut ::std::os::raw::c_char,
740        size: ::std::os::raw::c_int,
741    );
742}
743extern "C" {
744    pub fn emscripten_worker_respond_provisionally(
745        data: *mut ::std::os::raw::c_char,
746        size: ::std::os::raw::c_int,
747    );
748}
749extern "C" {
750    pub fn emscripten_get_worker_queue_size(worker: worker_handle) -> ::std::os::raw::c_int;
751}
752extern "C" {
753    pub fn emscripten_get_compiler_setting(
754        name: *const ::std::os::raw::c_char,
755    ) -> ::std::os::raw::c_long;
756}
757extern "C" {
758    pub fn emscripten_has_asyncify() -> ::std::os::raw::c_int;
759}
760extern "C" {
761    pub fn emscripten_debugger();
762}
763#[repr(C)]
764#[derive(Debug, Copy, Clone)]
765pub struct _IO_FILE {
766    _unused: [u8; 0],
767}
768pub type FILE = _IO_FILE;
769extern "C" {
770    pub fn emscripten_get_preloaded_image_data(
771        path: *const ::std::os::raw::c_char,
772        w: *mut ::std::os::raw::c_int,
773        h: *mut ::std::os::raw::c_int,
774    ) -> *mut ::std::os::raw::c_char;
775}
776extern "C" {
777    pub fn emscripten_get_preloaded_image_data_from_FILE(
778        file: *mut FILE,
779        w: *mut ::std::os::raw::c_int,
780        h: *mut ::std::os::raw::c_int,
781    ) -> *mut ::std::os::raw::c_char;
782}
783extern "C" {
784    pub fn emscripten_log(flags: ::std::os::raw::c_int, format: *const ::std::os::raw::c_char, ...);
785}
786extern "C" {
787    pub fn emscripten_get_callstack(
788        flags: ::std::os::raw::c_int,
789        out: *mut ::std::os::raw::c_char,
790        maxbytes: ::std::os::raw::c_int,
791    ) -> ::std::os::raw::c_int;
792}
793extern "C" {
794    pub fn emscripten_print_double(
795        x: f64,
796        to: *mut ::std::os::raw::c_char,
797        max: ::std::os::raw::c_int,
798    ) -> ::std::os::raw::c_int;
799}
800pub type em_scan_func = ::std::option::Option<
801    unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void, arg2: *mut ::std::os::raw::c_void),
802>;
803extern "C" {
804    pub fn emscripten_scan_registers(func: em_scan_func);
805}
806extern "C" {
807    pub fn emscripten_scan_stack(func: em_scan_func);
808}
809pub type em_dlopen_callback = ::std::option::Option<
810    unsafe extern "C" fn(
811        user_data: *mut ::std::os::raw::c_void,
812        handle: *mut ::std::os::raw::c_void,
813    ),
814>;
815extern "C" {
816    pub fn emscripten_dlopen(
817        filename: *const ::std::os::raw::c_char,
818        flags: ::std::os::raw::c_int,
819        user_data: *mut ::std::os::raw::c_void,
820        onsuccess: em_dlopen_callback,
821        onerror: em_arg_callback_func,
822    );
823}
824extern "C" {
825    pub fn emscripten_dlopen_promise(
826        filename: *const ::std::os::raw::c_char,
827        flags: ::std::os::raw::c_int,
828    ) -> em_promise_t;
829}
830extern "C" {
831    pub fn emscripten_throw_number(number: f64);
832}
833extern "C" {
834    pub fn emscripten_throw_string(utf8String: *const ::std::os::raw::c_char);
835}
836extern "C" {
837    pub fn emscripten_sleep(ms: ::std::os::raw::c_uint);
838}
839extern "C" {
840    pub fn emscripten_unwind_to_js_event_loop() -> !;
841}
842extern "C" {
843    pub fn emscripten_set_timeout(
844        cb: ::std::option::Option<unsafe extern "C" fn(user_data: *mut ::std::os::raw::c_void)>,
845        msecs: f64,
846        user_data: *mut ::std::os::raw::c_void,
847    ) -> ::std::os::raw::c_int;
848}
849extern "C" {
850    pub fn emscripten_clear_timeout(id: ::std::os::raw::c_int);
851}
852extern "C" {
853    pub fn emscripten_set_timeout_loop(
854        cb: ::std::option::Option<
855            unsafe extern "C" fn(time: f64, user_data: *mut ::std::os::raw::c_void) -> bool,
856        >,
857        interval_ms: f64,
858        user_data: *mut ::std::os::raw::c_void,
859    );
860}
861extern "C" {
862    pub fn emscripten_set_immediate(
863        cb: ::std::option::Option<unsafe extern "C" fn(user_data: *mut ::std::os::raw::c_void)>,
864        user_data: *mut ::std::os::raw::c_void,
865    ) -> ::std::os::raw::c_int;
866}
867extern "C" {
868    pub fn emscripten_clear_immediate(id: ::std::os::raw::c_int);
869}
870extern "C" {
871    pub fn emscripten_set_immediate_loop(
872        cb: ::std::option::Option<
873            unsafe extern "C" fn(user_data: *mut ::std::os::raw::c_void) -> bool,
874        >,
875        user_data: *mut ::std::os::raw::c_void,
876    );
877}
878extern "C" {
879    pub fn emscripten_set_interval(
880        cb: ::std::option::Option<unsafe extern "C" fn(user_data: *mut ::std::os::raw::c_void)>,
881        interval_ms: f64,
882        user_data: *mut ::std::os::raw::c_void,
883    ) -> ::std::os::raw::c_int;
884}
885extern "C" {
886    pub fn emscripten_clear_interval(id: ::std::os::raw::c_int);
887}
888extern "C" {
889    pub fn emscripten_runtime_keepalive_push();
890}
891extern "C" {
892    pub fn emscripten_runtime_keepalive_pop();
893}
894extern "C" {
895    pub fn emscripten_runtime_keepalive_check() -> bool;
896}
897extern "C" {
898    pub fn emscripten_console_log(utf8String: *const ::std::os::raw::c_char);
899}
900extern "C" {
901    pub fn emscripten_console_warn(utf8String: *const ::std::os::raw::c_char);
902}
903extern "C" {
904    pub fn emscripten_console_error(utf8String: *const ::std::os::raw::c_char);
905}
906extern "C" {
907    pub fn emscripten_console_trace(utf8String: *const ::std::os::raw::c_char);
908}
909extern "C" {
910    pub fn emscripten_out(utf8String: *const ::std::os::raw::c_char);
911}
912extern "C" {
913    pub fn emscripten_err(utf8String: *const ::std::os::raw::c_char);
914}
915extern "C" {
916    pub fn emscripten_dbg(utf8String: *const ::std::os::raw::c_char);
917}
918extern "C" {
919    pub fn emscripten_dbg_backtrace(utf8String: *const ::std::os::raw::c_char);
920}
921extern "C" {
922    pub fn emscripten_outn(utf8String: *const ::std::os::raw::c_char, len: usize);
923}
924extern "C" {
925    pub fn emscripten_errn(utf8String: *const ::std::os::raw::c_char, len: usize);
926}
927extern "C" {
928    pub fn emscripten_dbgn(utf8String: *const ::std::os::raw::c_char, len: usize);
929}
930extern "C" {
931    pub fn emscripten_console_logf(format: *const ::std::os::raw::c_char, ...);
932}
933extern "C" {
934    pub fn emscripten_console_warnf(format: *const ::std::os::raw::c_char, ...);
935}
936extern "C" {
937    pub fn emscripten_console_errorf(format: *const ::std::os::raw::c_char, ...);
938}
939extern "C" {
940    pub fn emscripten_console_tracef(format: *const ::std::os::raw::c_char, ...);
941}
942extern "C" {
943    pub fn emscripten_outf(format: *const ::std::os::raw::c_char, ...);
944}
945extern "C" {
946    pub fn emscripten_errf(format: *const ::std::os::raw::c_char, ...);
947}
948extern "C" {
949    pub fn emscripten_dbgf(format: *const ::std::os::raw::c_char, ...);
950}
951extern "C" {
952    pub fn emscripten_dbg_backtracef(format: *const ::std::os::raw::c_char, ...);
953}
954#[repr(C)]
955#[derive(Debug, Copy, Clone)]
956pub struct EmscriptenKeyboardEvent {
957    pub timestamp: f64,
958    pub location: ::std::os::raw::c_uint,
959    pub ctrlKey: bool,
960    pub shiftKey: bool,
961    pub altKey: bool,
962    pub metaKey: bool,
963    pub repeat: bool,
964    pub charCode: ::std::os::raw::c_uint,
965    pub keyCode: ::std::os::raw::c_uint,
966    pub which: ::std::os::raw::c_uint,
967    pub key: [::std::os::raw::c_char; 32usize],
968    pub code: [::std::os::raw::c_char; 32usize],
969    pub charValue: [::std::os::raw::c_char; 32usize],
970    pub locale: [::std::os::raw::c_char; 32usize],
971}
972#[test]
973fn bindgen_test_layout_EmscriptenKeyboardEvent() {
974    const UNINIT: ::std::mem::MaybeUninit<EmscriptenKeyboardEvent> =
975        ::std::mem::MaybeUninit::uninit();
976    let ptr = UNINIT.as_ptr();
977    assert_eq!(
978        ::std::mem::size_of::<EmscriptenKeyboardEvent>(),
979        160usize,
980        concat!("Size of: ", stringify!(EmscriptenKeyboardEvent))
981    );
982    assert_eq!(
983        ::std::mem::align_of::<EmscriptenKeyboardEvent>(),
984        8usize,
985        concat!("Alignment of ", stringify!(EmscriptenKeyboardEvent))
986    );
987    assert_eq!(
988        unsafe { ::std::ptr::addr_of!((*ptr).timestamp) as usize - ptr as usize },
989        0usize,
990        concat!(
991            "Offset of field: ",
992            stringify!(EmscriptenKeyboardEvent),
993            "::",
994            stringify!(timestamp)
995        )
996    );
997    assert_eq!(
998        unsafe { ::std::ptr::addr_of!((*ptr).location) as usize - ptr as usize },
999        8usize,
1000        concat!(
1001            "Offset of field: ",
1002            stringify!(EmscriptenKeyboardEvent),
1003            "::",
1004            stringify!(location)
1005        )
1006    );
1007    assert_eq!(
1008        unsafe { ::std::ptr::addr_of!((*ptr).ctrlKey) as usize - ptr as usize },
1009        12usize,
1010        concat!(
1011            "Offset of field: ",
1012            stringify!(EmscriptenKeyboardEvent),
1013            "::",
1014            stringify!(ctrlKey)
1015        )
1016    );
1017    assert_eq!(
1018        unsafe { ::std::ptr::addr_of!((*ptr).shiftKey) as usize - ptr as usize },
1019        13usize,
1020        concat!(
1021            "Offset of field: ",
1022            stringify!(EmscriptenKeyboardEvent),
1023            "::",
1024            stringify!(shiftKey)
1025        )
1026    );
1027    assert_eq!(
1028        unsafe { ::std::ptr::addr_of!((*ptr).altKey) as usize - ptr as usize },
1029        14usize,
1030        concat!(
1031            "Offset of field: ",
1032            stringify!(EmscriptenKeyboardEvent),
1033            "::",
1034            stringify!(altKey)
1035        )
1036    );
1037    assert_eq!(
1038        unsafe { ::std::ptr::addr_of!((*ptr).metaKey) as usize - ptr as usize },
1039        15usize,
1040        concat!(
1041            "Offset of field: ",
1042            stringify!(EmscriptenKeyboardEvent),
1043            "::",
1044            stringify!(metaKey)
1045        )
1046    );
1047    assert_eq!(
1048        unsafe { ::std::ptr::addr_of!((*ptr).repeat) as usize - ptr as usize },
1049        16usize,
1050        concat!(
1051            "Offset of field: ",
1052            stringify!(EmscriptenKeyboardEvent),
1053            "::",
1054            stringify!(repeat)
1055        )
1056    );
1057    assert_eq!(
1058        unsafe { ::std::ptr::addr_of!((*ptr).charCode) as usize - ptr as usize },
1059        20usize,
1060        concat!(
1061            "Offset of field: ",
1062            stringify!(EmscriptenKeyboardEvent),
1063            "::",
1064            stringify!(charCode)
1065        )
1066    );
1067    assert_eq!(
1068        unsafe { ::std::ptr::addr_of!((*ptr).keyCode) as usize - ptr as usize },
1069        24usize,
1070        concat!(
1071            "Offset of field: ",
1072            stringify!(EmscriptenKeyboardEvent),
1073            "::",
1074            stringify!(keyCode)
1075        )
1076    );
1077    assert_eq!(
1078        unsafe { ::std::ptr::addr_of!((*ptr).which) as usize - ptr as usize },
1079        28usize,
1080        concat!(
1081            "Offset of field: ",
1082            stringify!(EmscriptenKeyboardEvent),
1083            "::",
1084            stringify!(which)
1085        )
1086    );
1087    assert_eq!(
1088        unsafe { ::std::ptr::addr_of!((*ptr).key) as usize - ptr as usize },
1089        32usize,
1090        concat!(
1091            "Offset of field: ",
1092            stringify!(EmscriptenKeyboardEvent),
1093            "::",
1094            stringify!(key)
1095        )
1096    );
1097    assert_eq!(
1098        unsafe { ::std::ptr::addr_of!((*ptr).code) as usize - ptr as usize },
1099        64usize,
1100        concat!(
1101            "Offset of field: ",
1102            stringify!(EmscriptenKeyboardEvent),
1103            "::",
1104            stringify!(code)
1105        )
1106    );
1107    assert_eq!(
1108        unsafe { ::std::ptr::addr_of!((*ptr).charValue) as usize - ptr as usize },
1109        96usize,
1110        concat!(
1111            "Offset of field: ",
1112            stringify!(EmscriptenKeyboardEvent),
1113            "::",
1114            stringify!(charValue)
1115        )
1116    );
1117    assert_eq!(
1118        unsafe { ::std::ptr::addr_of!((*ptr).locale) as usize - ptr as usize },
1119        128usize,
1120        concat!(
1121            "Offset of field: ",
1122            stringify!(EmscriptenKeyboardEvent),
1123            "::",
1124            stringify!(locale)
1125        )
1126    );
1127}
1128pub type em_key_callback_func = ::std::option::Option<
1129    unsafe extern "C" fn(
1130        eventType: ::std::os::raw::c_int,
1131        keyEvent: *const EmscriptenKeyboardEvent,
1132        userData: *mut ::std::os::raw::c_void,
1133    ) -> bool,
1134>;
1135extern "C" {
1136    pub fn emscripten_set_keypress_callback_on_thread(
1137        target: *const ::std::os::raw::c_char,
1138        userData: *mut ::std::os::raw::c_void,
1139        useCapture: bool,
1140        callback: em_key_callback_func,
1141        targetThread: pthread_t,
1142    ) -> ::std::os::raw::c_int;
1143}
1144extern "C" {
1145    pub fn emscripten_set_keydown_callback_on_thread(
1146        target: *const ::std::os::raw::c_char,
1147        userData: *mut ::std::os::raw::c_void,
1148        useCapture: bool,
1149        callback: em_key_callback_func,
1150        targetThread: pthread_t,
1151    ) -> ::std::os::raw::c_int;
1152}
1153extern "C" {
1154    pub fn emscripten_set_keyup_callback_on_thread(
1155        target: *const ::std::os::raw::c_char,
1156        userData: *mut ::std::os::raw::c_void,
1157        useCapture: bool,
1158        callback: em_key_callback_func,
1159        targetThread: pthread_t,
1160    ) -> ::std::os::raw::c_int;
1161}
1162#[repr(C)]
1163#[derive(Debug, Copy, Clone)]
1164pub struct EmscriptenMouseEvent {
1165    pub timestamp: f64,
1166    pub screenX: ::std::os::raw::c_int,
1167    pub screenY: ::std::os::raw::c_int,
1168    pub clientX: ::std::os::raw::c_int,
1169    pub clientY: ::std::os::raw::c_int,
1170    pub ctrlKey: bool,
1171    pub shiftKey: bool,
1172    pub altKey: bool,
1173    pub metaKey: bool,
1174    pub button: ::std::os::raw::c_ushort,
1175    pub buttons: ::std::os::raw::c_ushort,
1176    pub movementX: ::std::os::raw::c_int,
1177    pub movementY: ::std::os::raw::c_int,
1178    pub targetX: ::std::os::raw::c_int,
1179    pub targetY: ::std::os::raw::c_int,
1180    pub canvasX: ::std::os::raw::c_int,
1181    pub canvasY: ::std::os::raw::c_int,
1182    pub padding: ::std::os::raw::c_int,
1183}
1184#[test]
1185fn bindgen_test_layout_EmscriptenMouseEvent() {
1186    const UNINIT: ::std::mem::MaybeUninit<EmscriptenMouseEvent> = ::std::mem::MaybeUninit::uninit();
1187    let ptr = UNINIT.as_ptr();
1188    assert_eq!(
1189        ::std::mem::size_of::<EmscriptenMouseEvent>(),
1190        64usize,
1191        concat!("Size of: ", stringify!(EmscriptenMouseEvent))
1192    );
1193    assert_eq!(
1194        ::std::mem::align_of::<EmscriptenMouseEvent>(),
1195        8usize,
1196        concat!("Alignment of ", stringify!(EmscriptenMouseEvent))
1197    );
1198    assert_eq!(
1199        unsafe { ::std::ptr::addr_of!((*ptr).timestamp) as usize - ptr as usize },
1200        0usize,
1201        concat!(
1202            "Offset of field: ",
1203            stringify!(EmscriptenMouseEvent),
1204            "::",
1205            stringify!(timestamp)
1206        )
1207    );
1208    assert_eq!(
1209        unsafe { ::std::ptr::addr_of!((*ptr).screenX) as usize - ptr as usize },
1210        8usize,
1211        concat!(
1212            "Offset of field: ",
1213            stringify!(EmscriptenMouseEvent),
1214            "::",
1215            stringify!(screenX)
1216        )
1217    );
1218    assert_eq!(
1219        unsafe { ::std::ptr::addr_of!((*ptr).screenY) as usize - ptr as usize },
1220        12usize,
1221        concat!(
1222            "Offset of field: ",
1223            stringify!(EmscriptenMouseEvent),
1224            "::",
1225            stringify!(screenY)
1226        )
1227    );
1228    assert_eq!(
1229        unsafe { ::std::ptr::addr_of!((*ptr).clientX) as usize - ptr as usize },
1230        16usize,
1231        concat!(
1232            "Offset of field: ",
1233            stringify!(EmscriptenMouseEvent),
1234            "::",
1235            stringify!(clientX)
1236        )
1237    );
1238    assert_eq!(
1239        unsafe { ::std::ptr::addr_of!((*ptr).clientY) as usize - ptr as usize },
1240        20usize,
1241        concat!(
1242            "Offset of field: ",
1243            stringify!(EmscriptenMouseEvent),
1244            "::",
1245            stringify!(clientY)
1246        )
1247    );
1248    assert_eq!(
1249        unsafe { ::std::ptr::addr_of!((*ptr).ctrlKey) as usize - ptr as usize },
1250        24usize,
1251        concat!(
1252            "Offset of field: ",
1253            stringify!(EmscriptenMouseEvent),
1254            "::",
1255            stringify!(ctrlKey)
1256        )
1257    );
1258    assert_eq!(
1259        unsafe { ::std::ptr::addr_of!((*ptr).shiftKey) as usize - ptr as usize },
1260        25usize,
1261        concat!(
1262            "Offset of field: ",
1263            stringify!(EmscriptenMouseEvent),
1264            "::",
1265            stringify!(shiftKey)
1266        )
1267    );
1268    assert_eq!(
1269        unsafe { ::std::ptr::addr_of!((*ptr).altKey) as usize - ptr as usize },
1270        26usize,
1271        concat!(
1272            "Offset of field: ",
1273            stringify!(EmscriptenMouseEvent),
1274            "::",
1275            stringify!(altKey)
1276        )
1277    );
1278    assert_eq!(
1279        unsafe { ::std::ptr::addr_of!((*ptr).metaKey) as usize - ptr as usize },
1280        27usize,
1281        concat!(
1282            "Offset of field: ",
1283            stringify!(EmscriptenMouseEvent),
1284            "::",
1285            stringify!(metaKey)
1286        )
1287    );
1288    assert_eq!(
1289        unsafe { ::std::ptr::addr_of!((*ptr).button) as usize - ptr as usize },
1290        28usize,
1291        concat!(
1292            "Offset of field: ",
1293            stringify!(EmscriptenMouseEvent),
1294            "::",
1295            stringify!(button)
1296        )
1297    );
1298    assert_eq!(
1299        unsafe { ::std::ptr::addr_of!((*ptr).buttons) as usize - ptr as usize },
1300        30usize,
1301        concat!(
1302            "Offset of field: ",
1303            stringify!(EmscriptenMouseEvent),
1304            "::",
1305            stringify!(buttons)
1306        )
1307    );
1308    assert_eq!(
1309        unsafe { ::std::ptr::addr_of!((*ptr).movementX) as usize - ptr as usize },
1310        32usize,
1311        concat!(
1312            "Offset of field: ",
1313            stringify!(EmscriptenMouseEvent),
1314            "::",
1315            stringify!(movementX)
1316        )
1317    );
1318    assert_eq!(
1319        unsafe { ::std::ptr::addr_of!((*ptr).movementY) as usize - ptr as usize },
1320        36usize,
1321        concat!(
1322            "Offset of field: ",
1323            stringify!(EmscriptenMouseEvent),
1324            "::",
1325            stringify!(movementY)
1326        )
1327    );
1328    assert_eq!(
1329        unsafe { ::std::ptr::addr_of!((*ptr).targetX) as usize - ptr as usize },
1330        40usize,
1331        concat!(
1332            "Offset of field: ",
1333            stringify!(EmscriptenMouseEvent),
1334            "::",
1335            stringify!(targetX)
1336        )
1337    );
1338    assert_eq!(
1339        unsafe { ::std::ptr::addr_of!((*ptr).targetY) as usize - ptr as usize },
1340        44usize,
1341        concat!(
1342            "Offset of field: ",
1343            stringify!(EmscriptenMouseEvent),
1344            "::",
1345            stringify!(targetY)
1346        )
1347    );
1348    assert_eq!(
1349        unsafe { ::std::ptr::addr_of!((*ptr).canvasX) as usize - ptr as usize },
1350        48usize,
1351        concat!(
1352            "Offset of field: ",
1353            stringify!(EmscriptenMouseEvent),
1354            "::",
1355            stringify!(canvasX)
1356        )
1357    );
1358    assert_eq!(
1359        unsafe { ::std::ptr::addr_of!((*ptr).canvasY) as usize - ptr as usize },
1360        52usize,
1361        concat!(
1362            "Offset of field: ",
1363            stringify!(EmscriptenMouseEvent),
1364            "::",
1365            stringify!(canvasY)
1366        )
1367    );
1368    assert_eq!(
1369        unsafe { ::std::ptr::addr_of!((*ptr).padding) as usize - ptr as usize },
1370        56usize,
1371        concat!(
1372            "Offset of field: ",
1373            stringify!(EmscriptenMouseEvent),
1374            "::",
1375            stringify!(padding)
1376        )
1377    );
1378}
1379pub type em_mouse_callback_func = ::std::option::Option<
1380    unsafe extern "C" fn(
1381        eventType: ::std::os::raw::c_int,
1382        mouseEvent: *const EmscriptenMouseEvent,
1383        userData: *mut ::std::os::raw::c_void,
1384    ) -> bool,
1385>;
1386extern "C" {
1387    pub fn emscripten_set_click_callback_on_thread(
1388        target: *const ::std::os::raw::c_char,
1389        userData: *mut ::std::os::raw::c_void,
1390        useCapture: bool,
1391        callback: em_mouse_callback_func,
1392        targetThread: pthread_t,
1393    ) -> ::std::os::raw::c_int;
1394}
1395extern "C" {
1396    pub fn emscripten_set_mousedown_callback_on_thread(
1397        target: *const ::std::os::raw::c_char,
1398        userData: *mut ::std::os::raw::c_void,
1399        useCapture: bool,
1400        callback: em_mouse_callback_func,
1401        targetThread: pthread_t,
1402    ) -> ::std::os::raw::c_int;
1403}
1404extern "C" {
1405    pub fn emscripten_set_mouseup_callback_on_thread(
1406        target: *const ::std::os::raw::c_char,
1407        userData: *mut ::std::os::raw::c_void,
1408        useCapture: bool,
1409        callback: em_mouse_callback_func,
1410        targetThread: pthread_t,
1411    ) -> ::std::os::raw::c_int;
1412}
1413extern "C" {
1414    pub fn emscripten_set_dblclick_callback_on_thread(
1415        target: *const ::std::os::raw::c_char,
1416        userData: *mut ::std::os::raw::c_void,
1417        useCapture: bool,
1418        callback: em_mouse_callback_func,
1419        targetThread: pthread_t,
1420    ) -> ::std::os::raw::c_int;
1421}
1422extern "C" {
1423    pub fn emscripten_set_mousemove_callback_on_thread(
1424        target: *const ::std::os::raw::c_char,
1425        userData: *mut ::std::os::raw::c_void,
1426        useCapture: bool,
1427        callback: em_mouse_callback_func,
1428        targetThread: pthread_t,
1429    ) -> ::std::os::raw::c_int;
1430}
1431extern "C" {
1432    pub fn emscripten_set_mouseenter_callback_on_thread(
1433        target: *const ::std::os::raw::c_char,
1434        userData: *mut ::std::os::raw::c_void,
1435        useCapture: bool,
1436        callback: em_mouse_callback_func,
1437        targetThread: pthread_t,
1438    ) -> ::std::os::raw::c_int;
1439}
1440extern "C" {
1441    pub fn emscripten_set_mouseleave_callback_on_thread(
1442        target: *const ::std::os::raw::c_char,
1443        userData: *mut ::std::os::raw::c_void,
1444        useCapture: bool,
1445        callback: em_mouse_callback_func,
1446        targetThread: pthread_t,
1447    ) -> ::std::os::raw::c_int;
1448}
1449extern "C" {
1450    pub fn emscripten_set_mouseover_callback_on_thread(
1451        target: *const ::std::os::raw::c_char,
1452        userData: *mut ::std::os::raw::c_void,
1453        useCapture: bool,
1454        callback: em_mouse_callback_func,
1455        targetThread: pthread_t,
1456    ) -> ::std::os::raw::c_int;
1457}
1458extern "C" {
1459    pub fn emscripten_set_mouseout_callback_on_thread(
1460        target: *const ::std::os::raw::c_char,
1461        userData: *mut ::std::os::raw::c_void,
1462        useCapture: bool,
1463        callback: em_mouse_callback_func,
1464        targetThread: pthread_t,
1465    ) -> ::std::os::raw::c_int;
1466}
1467extern "C" {
1468    pub fn emscripten_get_mouse_status(
1469        mouseState: *mut EmscriptenMouseEvent,
1470    ) -> ::std::os::raw::c_int;
1471}
1472#[repr(C)]
1473#[derive(Debug, Copy, Clone)]
1474pub struct EmscriptenWheelEvent {
1475    pub mouse: EmscriptenMouseEvent,
1476    pub deltaX: f64,
1477    pub deltaY: f64,
1478    pub deltaZ: f64,
1479    pub deltaMode: ::std::os::raw::c_uint,
1480}
1481#[test]
1482fn bindgen_test_layout_EmscriptenWheelEvent() {
1483    const UNINIT: ::std::mem::MaybeUninit<EmscriptenWheelEvent> = ::std::mem::MaybeUninit::uninit();
1484    let ptr = UNINIT.as_ptr();
1485    assert_eq!(
1486        ::std::mem::size_of::<EmscriptenWheelEvent>(),
1487        96usize,
1488        concat!("Size of: ", stringify!(EmscriptenWheelEvent))
1489    );
1490    assert_eq!(
1491        ::std::mem::align_of::<EmscriptenWheelEvent>(),
1492        8usize,
1493        concat!("Alignment of ", stringify!(EmscriptenWheelEvent))
1494    );
1495    assert_eq!(
1496        unsafe { ::std::ptr::addr_of!((*ptr).mouse) as usize - ptr as usize },
1497        0usize,
1498        concat!(
1499            "Offset of field: ",
1500            stringify!(EmscriptenWheelEvent),
1501            "::",
1502            stringify!(mouse)
1503        )
1504    );
1505    assert_eq!(
1506        unsafe { ::std::ptr::addr_of!((*ptr).deltaX) as usize - ptr as usize },
1507        64usize,
1508        concat!(
1509            "Offset of field: ",
1510            stringify!(EmscriptenWheelEvent),
1511            "::",
1512            stringify!(deltaX)
1513        )
1514    );
1515    assert_eq!(
1516        unsafe { ::std::ptr::addr_of!((*ptr).deltaY) as usize - ptr as usize },
1517        72usize,
1518        concat!(
1519            "Offset of field: ",
1520            stringify!(EmscriptenWheelEvent),
1521            "::",
1522            stringify!(deltaY)
1523        )
1524    );
1525    assert_eq!(
1526        unsafe { ::std::ptr::addr_of!((*ptr).deltaZ) as usize - ptr as usize },
1527        80usize,
1528        concat!(
1529            "Offset of field: ",
1530            stringify!(EmscriptenWheelEvent),
1531            "::",
1532            stringify!(deltaZ)
1533        )
1534    );
1535    assert_eq!(
1536        unsafe { ::std::ptr::addr_of!((*ptr).deltaMode) as usize - ptr as usize },
1537        88usize,
1538        concat!(
1539            "Offset of field: ",
1540            stringify!(EmscriptenWheelEvent),
1541            "::",
1542            stringify!(deltaMode)
1543        )
1544    );
1545}
1546pub type em_wheel_callback_func = ::std::option::Option<
1547    unsafe extern "C" fn(
1548        eventType: ::std::os::raw::c_int,
1549        wheelEvent: *const EmscriptenWheelEvent,
1550        userData: *mut ::std::os::raw::c_void,
1551    ) -> bool,
1552>;
1553extern "C" {
1554    pub fn emscripten_set_wheel_callback_on_thread(
1555        target: *const ::std::os::raw::c_char,
1556        userData: *mut ::std::os::raw::c_void,
1557        useCapture: bool,
1558        callback: em_wheel_callback_func,
1559        targetThread: pthread_t,
1560    ) -> ::std::os::raw::c_int;
1561}
1562#[repr(C)]
1563#[derive(Debug, Copy, Clone)]
1564pub struct EmscriptenUiEvent {
1565    pub detail: ::std::os::raw::c_int,
1566    pub documentBodyClientWidth: ::std::os::raw::c_int,
1567    pub documentBodyClientHeight: ::std::os::raw::c_int,
1568    pub windowInnerWidth: ::std::os::raw::c_int,
1569    pub windowInnerHeight: ::std::os::raw::c_int,
1570    pub windowOuterWidth: ::std::os::raw::c_int,
1571    pub windowOuterHeight: ::std::os::raw::c_int,
1572    pub scrollTop: ::std::os::raw::c_int,
1573    pub scrollLeft: ::std::os::raw::c_int,
1574}
1575#[test]
1576fn bindgen_test_layout_EmscriptenUiEvent() {
1577    const UNINIT: ::std::mem::MaybeUninit<EmscriptenUiEvent> = ::std::mem::MaybeUninit::uninit();
1578    let ptr = UNINIT.as_ptr();
1579    assert_eq!(
1580        ::std::mem::size_of::<EmscriptenUiEvent>(),
1581        36usize,
1582        concat!("Size of: ", stringify!(EmscriptenUiEvent))
1583    );
1584    assert_eq!(
1585        ::std::mem::align_of::<EmscriptenUiEvent>(),
1586        4usize,
1587        concat!("Alignment of ", stringify!(EmscriptenUiEvent))
1588    );
1589    assert_eq!(
1590        unsafe { ::std::ptr::addr_of!((*ptr).detail) as usize - ptr as usize },
1591        0usize,
1592        concat!(
1593            "Offset of field: ",
1594            stringify!(EmscriptenUiEvent),
1595            "::",
1596            stringify!(detail)
1597        )
1598    );
1599    assert_eq!(
1600        unsafe { ::std::ptr::addr_of!((*ptr).documentBodyClientWidth) as usize - ptr as usize },
1601        4usize,
1602        concat!(
1603            "Offset of field: ",
1604            stringify!(EmscriptenUiEvent),
1605            "::",
1606            stringify!(documentBodyClientWidth)
1607        )
1608    );
1609    assert_eq!(
1610        unsafe { ::std::ptr::addr_of!((*ptr).documentBodyClientHeight) as usize - ptr as usize },
1611        8usize,
1612        concat!(
1613            "Offset of field: ",
1614            stringify!(EmscriptenUiEvent),
1615            "::",
1616            stringify!(documentBodyClientHeight)
1617        )
1618    );
1619    assert_eq!(
1620        unsafe { ::std::ptr::addr_of!((*ptr).windowInnerWidth) as usize - ptr as usize },
1621        12usize,
1622        concat!(
1623            "Offset of field: ",
1624            stringify!(EmscriptenUiEvent),
1625            "::",
1626            stringify!(windowInnerWidth)
1627        )
1628    );
1629    assert_eq!(
1630        unsafe { ::std::ptr::addr_of!((*ptr).windowInnerHeight) as usize - ptr as usize },
1631        16usize,
1632        concat!(
1633            "Offset of field: ",
1634            stringify!(EmscriptenUiEvent),
1635            "::",
1636            stringify!(windowInnerHeight)
1637        )
1638    );
1639    assert_eq!(
1640        unsafe { ::std::ptr::addr_of!((*ptr).windowOuterWidth) as usize - ptr as usize },
1641        20usize,
1642        concat!(
1643            "Offset of field: ",
1644            stringify!(EmscriptenUiEvent),
1645            "::",
1646            stringify!(windowOuterWidth)
1647        )
1648    );
1649    assert_eq!(
1650        unsafe { ::std::ptr::addr_of!((*ptr).windowOuterHeight) as usize - ptr as usize },
1651        24usize,
1652        concat!(
1653            "Offset of field: ",
1654            stringify!(EmscriptenUiEvent),
1655            "::",
1656            stringify!(windowOuterHeight)
1657        )
1658    );
1659    assert_eq!(
1660        unsafe { ::std::ptr::addr_of!((*ptr).scrollTop) as usize - ptr as usize },
1661        28usize,
1662        concat!(
1663            "Offset of field: ",
1664            stringify!(EmscriptenUiEvent),
1665            "::",
1666            stringify!(scrollTop)
1667        )
1668    );
1669    assert_eq!(
1670        unsafe { ::std::ptr::addr_of!((*ptr).scrollLeft) as usize - ptr as usize },
1671        32usize,
1672        concat!(
1673            "Offset of field: ",
1674            stringify!(EmscriptenUiEvent),
1675            "::",
1676            stringify!(scrollLeft)
1677        )
1678    );
1679}
1680pub type em_ui_callback_func = ::std::option::Option<
1681    unsafe extern "C" fn(
1682        eventType: ::std::os::raw::c_int,
1683        uiEvent: *const EmscriptenUiEvent,
1684        userData: *mut ::std::os::raw::c_void,
1685    ) -> bool,
1686>;
1687extern "C" {
1688    pub fn emscripten_set_resize_callback_on_thread(
1689        target: *const ::std::os::raw::c_char,
1690        userData: *mut ::std::os::raw::c_void,
1691        useCapture: bool,
1692        callback: em_ui_callback_func,
1693        targetThread: pthread_t,
1694    ) -> ::std::os::raw::c_int;
1695}
1696extern "C" {
1697    pub fn emscripten_set_scroll_callback_on_thread(
1698        target: *const ::std::os::raw::c_char,
1699        userData: *mut ::std::os::raw::c_void,
1700        useCapture: bool,
1701        callback: em_ui_callback_func,
1702        targetThread: pthread_t,
1703    ) -> ::std::os::raw::c_int;
1704}
1705#[repr(C)]
1706#[derive(Debug, Copy, Clone)]
1707pub struct EmscriptenFocusEvent {
1708    pub nodeName: [::std::os::raw::c_char; 128usize],
1709    pub id: [::std::os::raw::c_char; 128usize],
1710}
1711#[test]
1712fn bindgen_test_layout_EmscriptenFocusEvent() {
1713    const UNINIT: ::std::mem::MaybeUninit<EmscriptenFocusEvent> = ::std::mem::MaybeUninit::uninit();
1714    let ptr = UNINIT.as_ptr();
1715    assert_eq!(
1716        ::std::mem::size_of::<EmscriptenFocusEvent>(),
1717        256usize,
1718        concat!("Size of: ", stringify!(EmscriptenFocusEvent))
1719    );
1720    assert_eq!(
1721        ::std::mem::align_of::<EmscriptenFocusEvent>(),
1722        1usize,
1723        concat!("Alignment of ", stringify!(EmscriptenFocusEvent))
1724    );
1725    assert_eq!(
1726        unsafe { ::std::ptr::addr_of!((*ptr).nodeName) as usize - ptr as usize },
1727        0usize,
1728        concat!(
1729            "Offset of field: ",
1730            stringify!(EmscriptenFocusEvent),
1731            "::",
1732            stringify!(nodeName)
1733        )
1734    );
1735    assert_eq!(
1736        unsafe { ::std::ptr::addr_of!((*ptr).id) as usize - ptr as usize },
1737        128usize,
1738        concat!(
1739            "Offset of field: ",
1740            stringify!(EmscriptenFocusEvent),
1741            "::",
1742            stringify!(id)
1743        )
1744    );
1745}
1746pub type em_focus_callback_func = ::std::option::Option<
1747    unsafe extern "C" fn(
1748        eventType: ::std::os::raw::c_int,
1749        focusEvent: *const EmscriptenFocusEvent,
1750        userData: *mut ::std::os::raw::c_void,
1751    ) -> bool,
1752>;
1753extern "C" {
1754    pub fn emscripten_set_blur_callback_on_thread(
1755        target: *const ::std::os::raw::c_char,
1756        userData: *mut ::std::os::raw::c_void,
1757        useCapture: bool,
1758        callback: em_focus_callback_func,
1759        targetThread: pthread_t,
1760    ) -> ::std::os::raw::c_int;
1761}
1762extern "C" {
1763    pub fn emscripten_set_focus_callback_on_thread(
1764        target: *const ::std::os::raw::c_char,
1765        userData: *mut ::std::os::raw::c_void,
1766        useCapture: bool,
1767        callback: em_focus_callback_func,
1768        targetThread: pthread_t,
1769    ) -> ::std::os::raw::c_int;
1770}
1771extern "C" {
1772    pub fn emscripten_set_focusin_callback_on_thread(
1773        target: *const ::std::os::raw::c_char,
1774        userData: *mut ::std::os::raw::c_void,
1775        useCapture: bool,
1776        callback: em_focus_callback_func,
1777        targetThread: pthread_t,
1778    ) -> ::std::os::raw::c_int;
1779}
1780extern "C" {
1781    pub fn emscripten_set_focusout_callback_on_thread(
1782        target: *const ::std::os::raw::c_char,
1783        userData: *mut ::std::os::raw::c_void,
1784        useCapture: bool,
1785        callback: em_focus_callback_func,
1786        targetThread: pthread_t,
1787    ) -> ::std::os::raw::c_int;
1788}
1789#[repr(C)]
1790#[derive(Debug, Copy, Clone)]
1791pub struct EmscriptenDeviceOrientationEvent {
1792    pub alpha: f64,
1793    pub beta: f64,
1794    pub gamma: f64,
1795    pub absolute: bool,
1796}
1797#[test]
1798fn bindgen_test_layout_EmscriptenDeviceOrientationEvent() {
1799    const UNINIT: ::std::mem::MaybeUninit<EmscriptenDeviceOrientationEvent> =
1800        ::std::mem::MaybeUninit::uninit();
1801    let ptr = UNINIT.as_ptr();
1802    assert_eq!(
1803        ::std::mem::size_of::<EmscriptenDeviceOrientationEvent>(),
1804        32usize,
1805        concat!("Size of: ", stringify!(EmscriptenDeviceOrientationEvent))
1806    );
1807    assert_eq!(
1808        ::std::mem::align_of::<EmscriptenDeviceOrientationEvent>(),
1809        8usize,
1810        concat!(
1811            "Alignment of ",
1812            stringify!(EmscriptenDeviceOrientationEvent)
1813        )
1814    );
1815    assert_eq!(
1816        unsafe { ::std::ptr::addr_of!((*ptr).alpha) as usize - ptr as usize },
1817        0usize,
1818        concat!(
1819            "Offset of field: ",
1820            stringify!(EmscriptenDeviceOrientationEvent),
1821            "::",
1822            stringify!(alpha)
1823        )
1824    );
1825    assert_eq!(
1826        unsafe { ::std::ptr::addr_of!((*ptr).beta) as usize - ptr as usize },
1827        8usize,
1828        concat!(
1829            "Offset of field: ",
1830            stringify!(EmscriptenDeviceOrientationEvent),
1831            "::",
1832            stringify!(beta)
1833        )
1834    );
1835    assert_eq!(
1836        unsafe { ::std::ptr::addr_of!((*ptr).gamma) as usize - ptr as usize },
1837        16usize,
1838        concat!(
1839            "Offset of field: ",
1840            stringify!(EmscriptenDeviceOrientationEvent),
1841            "::",
1842            stringify!(gamma)
1843        )
1844    );
1845    assert_eq!(
1846        unsafe { ::std::ptr::addr_of!((*ptr).absolute) as usize - ptr as usize },
1847        24usize,
1848        concat!(
1849            "Offset of field: ",
1850            stringify!(EmscriptenDeviceOrientationEvent),
1851            "::",
1852            stringify!(absolute)
1853        )
1854    );
1855}
1856pub type em_deviceorientation_callback_func = ::std::option::Option<
1857    unsafe extern "C" fn(
1858        eventType: ::std::os::raw::c_int,
1859        deviceOrientationEvent: *const EmscriptenDeviceOrientationEvent,
1860        userData: *mut ::std::os::raw::c_void,
1861    ) -> bool,
1862>;
1863extern "C" {
1864    pub fn emscripten_set_deviceorientation_callback_on_thread(
1865        userData: *mut ::std::os::raw::c_void,
1866        useCapture: bool,
1867        callback: em_deviceorientation_callback_func,
1868        targetThread: pthread_t,
1869    ) -> ::std::os::raw::c_int;
1870}
1871extern "C" {
1872    pub fn emscripten_get_deviceorientation_status(
1873        orientationState: *mut EmscriptenDeviceOrientationEvent,
1874    ) -> ::std::os::raw::c_int;
1875}
1876#[repr(C)]
1877#[derive(Debug, Copy, Clone)]
1878pub struct EmscriptenDeviceMotionEvent {
1879    pub accelerationX: f64,
1880    pub accelerationY: f64,
1881    pub accelerationZ: f64,
1882    pub accelerationIncludingGravityX: f64,
1883    pub accelerationIncludingGravityY: f64,
1884    pub accelerationIncludingGravityZ: f64,
1885    pub rotationRateAlpha: f64,
1886    pub rotationRateBeta: f64,
1887    pub rotationRateGamma: f64,
1888    pub supportedFields: ::std::os::raw::c_int,
1889}
1890#[test]
1891fn bindgen_test_layout_EmscriptenDeviceMotionEvent() {
1892    const UNINIT: ::std::mem::MaybeUninit<EmscriptenDeviceMotionEvent> =
1893        ::std::mem::MaybeUninit::uninit();
1894    let ptr = UNINIT.as_ptr();
1895    assert_eq!(
1896        ::std::mem::size_of::<EmscriptenDeviceMotionEvent>(),
1897        80usize,
1898        concat!("Size of: ", stringify!(EmscriptenDeviceMotionEvent))
1899    );
1900    assert_eq!(
1901        ::std::mem::align_of::<EmscriptenDeviceMotionEvent>(),
1902        8usize,
1903        concat!("Alignment of ", stringify!(EmscriptenDeviceMotionEvent))
1904    );
1905    assert_eq!(
1906        unsafe { ::std::ptr::addr_of!((*ptr).accelerationX) as usize - ptr as usize },
1907        0usize,
1908        concat!(
1909            "Offset of field: ",
1910            stringify!(EmscriptenDeviceMotionEvent),
1911            "::",
1912            stringify!(accelerationX)
1913        )
1914    );
1915    assert_eq!(
1916        unsafe { ::std::ptr::addr_of!((*ptr).accelerationY) as usize - ptr as usize },
1917        8usize,
1918        concat!(
1919            "Offset of field: ",
1920            stringify!(EmscriptenDeviceMotionEvent),
1921            "::",
1922            stringify!(accelerationY)
1923        )
1924    );
1925    assert_eq!(
1926        unsafe { ::std::ptr::addr_of!((*ptr).accelerationZ) as usize - ptr as usize },
1927        16usize,
1928        concat!(
1929            "Offset of field: ",
1930            stringify!(EmscriptenDeviceMotionEvent),
1931            "::",
1932            stringify!(accelerationZ)
1933        )
1934    );
1935    assert_eq!(
1936        unsafe {
1937            ::std::ptr::addr_of!((*ptr).accelerationIncludingGravityX) as usize - ptr as usize
1938        },
1939        24usize,
1940        concat!(
1941            "Offset of field: ",
1942            stringify!(EmscriptenDeviceMotionEvent),
1943            "::",
1944            stringify!(accelerationIncludingGravityX)
1945        )
1946    );
1947    assert_eq!(
1948        unsafe {
1949            ::std::ptr::addr_of!((*ptr).accelerationIncludingGravityY) as usize - ptr as usize
1950        },
1951        32usize,
1952        concat!(
1953            "Offset of field: ",
1954            stringify!(EmscriptenDeviceMotionEvent),
1955            "::",
1956            stringify!(accelerationIncludingGravityY)
1957        )
1958    );
1959    assert_eq!(
1960        unsafe {
1961            ::std::ptr::addr_of!((*ptr).accelerationIncludingGravityZ) as usize - ptr as usize
1962        },
1963        40usize,
1964        concat!(
1965            "Offset of field: ",
1966            stringify!(EmscriptenDeviceMotionEvent),
1967            "::",
1968            stringify!(accelerationIncludingGravityZ)
1969        )
1970    );
1971    assert_eq!(
1972        unsafe { ::std::ptr::addr_of!((*ptr).rotationRateAlpha) as usize - ptr as usize },
1973        48usize,
1974        concat!(
1975            "Offset of field: ",
1976            stringify!(EmscriptenDeviceMotionEvent),
1977            "::",
1978            stringify!(rotationRateAlpha)
1979        )
1980    );
1981    assert_eq!(
1982        unsafe { ::std::ptr::addr_of!((*ptr).rotationRateBeta) as usize - ptr as usize },
1983        56usize,
1984        concat!(
1985            "Offset of field: ",
1986            stringify!(EmscriptenDeviceMotionEvent),
1987            "::",
1988            stringify!(rotationRateBeta)
1989        )
1990    );
1991    assert_eq!(
1992        unsafe { ::std::ptr::addr_of!((*ptr).rotationRateGamma) as usize - ptr as usize },
1993        64usize,
1994        concat!(
1995            "Offset of field: ",
1996            stringify!(EmscriptenDeviceMotionEvent),
1997            "::",
1998            stringify!(rotationRateGamma)
1999        )
2000    );
2001    assert_eq!(
2002        unsafe { ::std::ptr::addr_of!((*ptr).supportedFields) as usize - ptr as usize },
2003        72usize,
2004        concat!(
2005            "Offset of field: ",
2006            stringify!(EmscriptenDeviceMotionEvent),
2007            "::",
2008            stringify!(supportedFields)
2009        )
2010    );
2011}
2012pub type em_devicemotion_callback_func = ::std::option::Option<
2013    unsafe extern "C" fn(
2014        eventType: ::std::os::raw::c_int,
2015        deviceMotionEvent: *const EmscriptenDeviceMotionEvent,
2016        userData: *mut ::std::os::raw::c_void,
2017    ) -> bool,
2018>;
2019extern "C" {
2020    pub fn emscripten_set_devicemotion_callback_on_thread(
2021        userData: *mut ::std::os::raw::c_void,
2022        useCapture: bool,
2023        callback: em_devicemotion_callback_func,
2024        targetThread: pthread_t,
2025    ) -> ::std::os::raw::c_int;
2026}
2027extern "C" {
2028    pub fn emscripten_get_devicemotion_status(
2029        motionState: *mut EmscriptenDeviceMotionEvent,
2030    ) -> ::std::os::raw::c_int;
2031}
2032#[repr(C)]
2033#[derive(Debug, Copy, Clone)]
2034pub struct EmscriptenOrientationChangeEvent {
2035    pub orientationIndex: ::std::os::raw::c_int,
2036    pub orientationAngle: ::std::os::raw::c_int,
2037}
2038#[test]
2039fn bindgen_test_layout_EmscriptenOrientationChangeEvent() {
2040    const UNINIT: ::std::mem::MaybeUninit<EmscriptenOrientationChangeEvent> =
2041        ::std::mem::MaybeUninit::uninit();
2042    let ptr = UNINIT.as_ptr();
2043    assert_eq!(
2044        ::std::mem::size_of::<EmscriptenOrientationChangeEvent>(),
2045        8usize,
2046        concat!("Size of: ", stringify!(EmscriptenOrientationChangeEvent))
2047    );
2048    assert_eq!(
2049        ::std::mem::align_of::<EmscriptenOrientationChangeEvent>(),
2050        4usize,
2051        concat!(
2052            "Alignment of ",
2053            stringify!(EmscriptenOrientationChangeEvent)
2054        )
2055    );
2056    assert_eq!(
2057        unsafe { ::std::ptr::addr_of!((*ptr).orientationIndex) as usize - ptr as usize },
2058        0usize,
2059        concat!(
2060            "Offset of field: ",
2061            stringify!(EmscriptenOrientationChangeEvent),
2062            "::",
2063            stringify!(orientationIndex)
2064        )
2065    );
2066    assert_eq!(
2067        unsafe { ::std::ptr::addr_of!((*ptr).orientationAngle) as usize - ptr as usize },
2068        4usize,
2069        concat!(
2070            "Offset of field: ",
2071            stringify!(EmscriptenOrientationChangeEvent),
2072            "::",
2073            stringify!(orientationAngle)
2074        )
2075    );
2076}
2077pub type em_orientationchange_callback_func = ::std::option::Option<
2078    unsafe extern "C" fn(
2079        eventType: ::std::os::raw::c_int,
2080        orientationChangeEvent: *const EmscriptenOrientationChangeEvent,
2081        userData: *mut ::std::os::raw::c_void,
2082    ) -> bool,
2083>;
2084extern "C" {
2085    pub fn emscripten_set_orientationchange_callback_on_thread(
2086        userData: *mut ::std::os::raw::c_void,
2087        useCapture: bool,
2088        callback: em_orientationchange_callback_func,
2089        targetThread: pthread_t,
2090    ) -> ::std::os::raw::c_int;
2091}
2092extern "C" {
2093    pub fn emscripten_get_orientation_status(
2094        orientationStatus: *mut EmscriptenOrientationChangeEvent,
2095    ) -> ::std::os::raw::c_int;
2096}
2097extern "C" {
2098    pub fn emscripten_lock_orientation(
2099        allowedOrientations: ::std::os::raw::c_int,
2100    ) -> ::std::os::raw::c_int;
2101}
2102extern "C" {
2103    pub fn emscripten_unlock_orientation() -> ::std::os::raw::c_int;
2104}
2105#[repr(C)]
2106#[derive(Debug, Copy, Clone)]
2107pub struct EmscriptenFullscreenChangeEvent {
2108    pub isFullscreen: bool,
2109    pub fullscreenEnabled: bool,
2110    pub nodeName: [::std::os::raw::c_char; 128usize],
2111    pub id: [::std::os::raw::c_char; 128usize],
2112    pub elementWidth: ::std::os::raw::c_int,
2113    pub elementHeight: ::std::os::raw::c_int,
2114    pub screenWidth: ::std::os::raw::c_int,
2115    pub screenHeight: ::std::os::raw::c_int,
2116}
2117#[test]
2118fn bindgen_test_layout_EmscriptenFullscreenChangeEvent() {
2119    const UNINIT: ::std::mem::MaybeUninit<EmscriptenFullscreenChangeEvent> =
2120        ::std::mem::MaybeUninit::uninit();
2121    let ptr = UNINIT.as_ptr();
2122    assert_eq!(
2123        ::std::mem::size_of::<EmscriptenFullscreenChangeEvent>(),
2124        276usize,
2125        concat!("Size of: ", stringify!(EmscriptenFullscreenChangeEvent))
2126    );
2127    assert_eq!(
2128        ::std::mem::align_of::<EmscriptenFullscreenChangeEvent>(),
2129        4usize,
2130        concat!("Alignment of ", stringify!(EmscriptenFullscreenChangeEvent))
2131    );
2132    assert_eq!(
2133        unsafe { ::std::ptr::addr_of!((*ptr).isFullscreen) as usize - ptr as usize },
2134        0usize,
2135        concat!(
2136            "Offset of field: ",
2137            stringify!(EmscriptenFullscreenChangeEvent),
2138            "::",
2139            stringify!(isFullscreen)
2140        )
2141    );
2142    assert_eq!(
2143        unsafe { ::std::ptr::addr_of!((*ptr).fullscreenEnabled) as usize - ptr as usize },
2144        1usize,
2145        concat!(
2146            "Offset of field: ",
2147            stringify!(EmscriptenFullscreenChangeEvent),
2148            "::",
2149            stringify!(fullscreenEnabled)
2150        )
2151    );
2152    assert_eq!(
2153        unsafe { ::std::ptr::addr_of!((*ptr).nodeName) as usize - ptr as usize },
2154        2usize,
2155        concat!(
2156            "Offset of field: ",
2157            stringify!(EmscriptenFullscreenChangeEvent),
2158            "::",
2159            stringify!(nodeName)
2160        )
2161    );
2162    assert_eq!(
2163        unsafe { ::std::ptr::addr_of!((*ptr).id) as usize - ptr as usize },
2164        130usize,
2165        concat!(
2166            "Offset of field: ",
2167            stringify!(EmscriptenFullscreenChangeEvent),
2168            "::",
2169            stringify!(id)
2170        )
2171    );
2172    assert_eq!(
2173        unsafe { ::std::ptr::addr_of!((*ptr).elementWidth) as usize - ptr as usize },
2174        260usize,
2175        concat!(
2176            "Offset of field: ",
2177            stringify!(EmscriptenFullscreenChangeEvent),
2178            "::",
2179            stringify!(elementWidth)
2180        )
2181    );
2182    assert_eq!(
2183        unsafe { ::std::ptr::addr_of!((*ptr).elementHeight) as usize - ptr as usize },
2184        264usize,
2185        concat!(
2186            "Offset of field: ",
2187            stringify!(EmscriptenFullscreenChangeEvent),
2188            "::",
2189            stringify!(elementHeight)
2190        )
2191    );
2192    assert_eq!(
2193        unsafe { ::std::ptr::addr_of!((*ptr).screenWidth) as usize - ptr as usize },
2194        268usize,
2195        concat!(
2196            "Offset of field: ",
2197            stringify!(EmscriptenFullscreenChangeEvent),
2198            "::",
2199            stringify!(screenWidth)
2200        )
2201    );
2202    assert_eq!(
2203        unsafe { ::std::ptr::addr_of!((*ptr).screenHeight) as usize - ptr as usize },
2204        272usize,
2205        concat!(
2206            "Offset of field: ",
2207            stringify!(EmscriptenFullscreenChangeEvent),
2208            "::",
2209            stringify!(screenHeight)
2210        )
2211    );
2212}
2213pub type em_fullscreenchange_callback_func = ::std::option::Option<
2214    unsafe extern "C" fn(
2215        eventType: ::std::os::raw::c_int,
2216        fullscreenChangeEvent: *const EmscriptenFullscreenChangeEvent,
2217        userData: *mut ::std::os::raw::c_void,
2218    ) -> bool,
2219>;
2220extern "C" {
2221    pub fn emscripten_set_fullscreenchange_callback_on_thread(
2222        target: *const ::std::os::raw::c_char,
2223        userData: *mut ::std::os::raw::c_void,
2224        useCapture: bool,
2225        callback: em_fullscreenchange_callback_func,
2226        targetThread: pthread_t,
2227    ) -> ::std::os::raw::c_int;
2228}
2229extern "C" {
2230    pub fn emscripten_get_fullscreen_status(
2231        fullscreenStatus: *mut EmscriptenFullscreenChangeEvent,
2232    ) -> ::std::os::raw::c_int;
2233}
2234pub type em_canvasresized_callback_func = ::std::option::Option<
2235    unsafe extern "C" fn(
2236        eventType: ::std::os::raw::c_int,
2237        reserved: *const ::std::os::raw::c_void,
2238        userData: *mut ::std::os::raw::c_void,
2239    ) -> bool,
2240>;
2241#[repr(C)]
2242#[derive(Debug, Copy, Clone)]
2243pub struct EmscriptenFullscreenStrategy {
2244    pub scaleMode: ::std::os::raw::c_int,
2245    pub canvasResolutionScaleMode: ::std::os::raw::c_int,
2246    pub filteringMode: ::std::os::raw::c_int,
2247    pub canvasResizedCallback: em_canvasresized_callback_func,
2248    pub canvasResizedCallbackUserData: *mut ::std::os::raw::c_void,
2249    pub canvasResizedCallbackTargetThread: pthread_t,
2250}
2251#[test]
2252fn bindgen_test_layout_EmscriptenFullscreenStrategy() {
2253    const UNINIT: ::std::mem::MaybeUninit<EmscriptenFullscreenStrategy> =
2254        ::std::mem::MaybeUninit::uninit();
2255    let ptr = UNINIT.as_ptr();
2256    assert_eq!(
2257        ::std::mem::size_of::<EmscriptenFullscreenStrategy>(),
2258        40usize,
2259        concat!("Size of: ", stringify!(EmscriptenFullscreenStrategy))
2260    );
2261    assert_eq!(
2262        ::std::mem::align_of::<EmscriptenFullscreenStrategy>(),
2263        8usize,
2264        concat!("Alignment of ", stringify!(EmscriptenFullscreenStrategy))
2265    );
2266    assert_eq!(
2267        unsafe { ::std::ptr::addr_of!((*ptr).scaleMode) as usize - ptr as usize },
2268        0usize,
2269        concat!(
2270            "Offset of field: ",
2271            stringify!(EmscriptenFullscreenStrategy),
2272            "::",
2273            stringify!(scaleMode)
2274        )
2275    );
2276    assert_eq!(
2277        unsafe { ::std::ptr::addr_of!((*ptr).canvasResolutionScaleMode) as usize - ptr as usize },
2278        4usize,
2279        concat!(
2280            "Offset of field: ",
2281            stringify!(EmscriptenFullscreenStrategy),
2282            "::",
2283            stringify!(canvasResolutionScaleMode)
2284        )
2285    );
2286    assert_eq!(
2287        unsafe { ::std::ptr::addr_of!((*ptr).filteringMode) as usize - ptr as usize },
2288        8usize,
2289        concat!(
2290            "Offset of field: ",
2291            stringify!(EmscriptenFullscreenStrategy),
2292            "::",
2293            stringify!(filteringMode)
2294        )
2295    );
2296    assert_eq!(
2297        unsafe { ::std::ptr::addr_of!((*ptr).canvasResizedCallback) as usize - ptr as usize },
2298        16usize,
2299        concat!(
2300            "Offset of field: ",
2301            stringify!(EmscriptenFullscreenStrategy),
2302            "::",
2303            stringify!(canvasResizedCallback)
2304        )
2305    );
2306    assert_eq!(
2307        unsafe {
2308            ::std::ptr::addr_of!((*ptr).canvasResizedCallbackUserData) as usize - ptr as usize
2309        },
2310        24usize,
2311        concat!(
2312            "Offset of field: ",
2313            stringify!(EmscriptenFullscreenStrategy),
2314            "::",
2315            stringify!(canvasResizedCallbackUserData)
2316        )
2317    );
2318    assert_eq!(
2319        unsafe {
2320            ::std::ptr::addr_of!((*ptr).canvasResizedCallbackTargetThread) as usize - ptr as usize
2321        },
2322        32usize,
2323        concat!(
2324            "Offset of field: ",
2325            stringify!(EmscriptenFullscreenStrategy),
2326            "::",
2327            stringify!(canvasResizedCallbackTargetThread)
2328        )
2329    );
2330}
2331extern "C" {
2332    pub fn emscripten_request_fullscreen(
2333        target: *const ::std::os::raw::c_char,
2334        deferUntilInEventHandler: bool,
2335    ) -> ::std::os::raw::c_int;
2336}
2337extern "C" {
2338    pub fn emscripten_request_fullscreen_strategy(
2339        target: *const ::std::os::raw::c_char,
2340        deferUntilInEventHandler: bool,
2341        fullscreenStrategy: *const EmscriptenFullscreenStrategy,
2342    ) -> ::std::os::raw::c_int;
2343}
2344extern "C" {
2345    pub fn emscripten_exit_fullscreen() -> ::std::os::raw::c_int;
2346}
2347extern "C" {
2348    pub fn emscripten_enter_soft_fullscreen(
2349        target: *const ::std::os::raw::c_char,
2350        fullscreenStrategy: *const EmscriptenFullscreenStrategy,
2351    ) -> ::std::os::raw::c_int;
2352}
2353extern "C" {
2354    pub fn emscripten_exit_soft_fullscreen() -> ::std::os::raw::c_int;
2355}
2356#[repr(C)]
2357#[derive(Debug, Copy, Clone)]
2358pub struct EmscriptenPointerlockChangeEvent {
2359    pub isActive: bool,
2360    pub nodeName: [::std::os::raw::c_char; 128usize],
2361    pub id: [::std::os::raw::c_char; 128usize],
2362}
2363#[test]
2364fn bindgen_test_layout_EmscriptenPointerlockChangeEvent() {
2365    const UNINIT: ::std::mem::MaybeUninit<EmscriptenPointerlockChangeEvent> =
2366        ::std::mem::MaybeUninit::uninit();
2367    let ptr = UNINIT.as_ptr();
2368    assert_eq!(
2369        ::std::mem::size_of::<EmscriptenPointerlockChangeEvent>(),
2370        257usize,
2371        concat!("Size of: ", stringify!(EmscriptenPointerlockChangeEvent))
2372    );
2373    assert_eq!(
2374        ::std::mem::align_of::<EmscriptenPointerlockChangeEvent>(),
2375        1usize,
2376        concat!(
2377            "Alignment of ",
2378            stringify!(EmscriptenPointerlockChangeEvent)
2379        )
2380    );
2381    assert_eq!(
2382        unsafe { ::std::ptr::addr_of!((*ptr).isActive) as usize - ptr as usize },
2383        0usize,
2384        concat!(
2385            "Offset of field: ",
2386            stringify!(EmscriptenPointerlockChangeEvent),
2387            "::",
2388            stringify!(isActive)
2389        )
2390    );
2391    assert_eq!(
2392        unsafe { ::std::ptr::addr_of!((*ptr).nodeName) as usize - ptr as usize },
2393        1usize,
2394        concat!(
2395            "Offset of field: ",
2396            stringify!(EmscriptenPointerlockChangeEvent),
2397            "::",
2398            stringify!(nodeName)
2399        )
2400    );
2401    assert_eq!(
2402        unsafe { ::std::ptr::addr_of!((*ptr).id) as usize - ptr as usize },
2403        129usize,
2404        concat!(
2405            "Offset of field: ",
2406            stringify!(EmscriptenPointerlockChangeEvent),
2407            "::",
2408            stringify!(id)
2409        )
2410    );
2411}
2412pub type em_pointerlockchange_callback_func = ::std::option::Option<
2413    unsafe extern "C" fn(
2414        eventType: ::std::os::raw::c_int,
2415        pointerlockChangeEvent: *const EmscriptenPointerlockChangeEvent,
2416        userData: *mut ::std::os::raw::c_void,
2417    ) -> bool,
2418>;
2419extern "C" {
2420    pub fn emscripten_set_pointerlockchange_callback_on_thread(
2421        target: *const ::std::os::raw::c_char,
2422        userData: *mut ::std::os::raw::c_void,
2423        useCapture: bool,
2424        callback: em_pointerlockchange_callback_func,
2425        targetThread: pthread_t,
2426    ) -> ::std::os::raw::c_int;
2427}
2428pub type em_pointerlockerror_callback_func = ::std::option::Option<
2429    unsafe extern "C" fn(
2430        eventType: ::std::os::raw::c_int,
2431        reserved: *const ::std::os::raw::c_void,
2432        userData: *mut ::std::os::raw::c_void,
2433    ) -> bool,
2434>;
2435extern "C" {
2436    pub fn emscripten_set_pointerlockerror_callback_on_thread(
2437        target: *const ::std::os::raw::c_char,
2438        userData: *mut ::std::os::raw::c_void,
2439        useCapture: bool,
2440        callback: em_pointerlockerror_callback_func,
2441        targetThread: pthread_t,
2442    ) -> ::std::os::raw::c_int;
2443}
2444extern "C" {
2445    pub fn emscripten_get_pointerlock_status(
2446        pointerlockStatus: *mut EmscriptenPointerlockChangeEvent,
2447    ) -> ::std::os::raw::c_int;
2448}
2449extern "C" {
2450    pub fn emscripten_request_pointerlock(
2451        target: *const ::std::os::raw::c_char,
2452        deferUntilInEventHandler: bool,
2453    ) -> ::std::os::raw::c_int;
2454}
2455extern "C" {
2456    pub fn emscripten_exit_pointerlock() -> ::std::os::raw::c_int;
2457}
2458#[repr(C)]
2459#[derive(Debug, Copy, Clone)]
2460pub struct EmscriptenVisibilityChangeEvent {
2461    pub hidden: bool,
2462    pub visibilityState: ::std::os::raw::c_int,
2463}
2464#[test]
2465fn bindgen_test_layout_EmscriptenVisibilityChangeEvent() {
2466    const UNINIT: ::std::mem::MaybeUninit<EmscriptenVisibilityChangeEvent> =
2467        ::std::mem::MaybeUninit::uninit();
2468    let ptr = UNINIT.as_ptr();
2469    assert_eq!(
2470        ::std::mem::size_of::<EmscriptenVisibilityChangeEvent>(),
2471        8usize,
2472        concat!("Size of: ", stringify!(EmscriptenVisibilityChangeEvent))
2473    );
2474    assert_eq!(
2475        ::std::mem::align_of::<EmscriptenVisibilityChangeEvent>(),
2476        4usize,
2477        concat!("Alignment of ", stringify!(EmscriptenVisibilityChangeEvent))
2478    );
2479    assert_eq!(
2480        unsafe { ::std::ptr::addr_of!((*ptr).hidden) as usize - ptr as usize },
2481        0usize,
2482        concat!(
2483            "Offset of field: ",
2484            stringify!(EmscriptenVisibilityChangeEvent),
2485            "::",
2486            stringify!(hidden)
2487        )
2488    );
2489    assert_eq!(
2490        unsafe { ::std::ptr::addr_of!((*ptr).visibilityState) as usize - ptr as usize },
2491        4usize,
2492        concat!(
2493            "Offset of field: ",
2494            stringify!(EmscriptenVisibilityChangeEvent),
2495            "::",
2496            stringify!(visibilityState)
2497        )
2498    );
2499}
2500pub type em_visibilitychange_callback_func = ::std::option::Option<
2501    unsafe extern "C" fn(
2502        eventType: ::std::os::raw::c_int,
2503        visibilityChangeEvent: *const EmscriptenVisibilityChangeEvent,
2504        userData: *mut ::std::os::raw::c_void,
2505    ) -> bool,
2506>;
2507extern "C" {
2508    pub fn emscripten_set_visibilitychange_callback_on_thread(
2509        userData: *mut ::std::os::raw::c_void,
2510        useCapture: bool,
2511        callback: em_visibilitychange_callback_func,
2512        targetThread: pthread_t,
2513    ) -> ::std::os::raw::c_int;
2514}
2515extern "C" {
2516    pub fn emscripten_get_visibility_status(
2517        visibilityStatus: *mut EmscriptenVisibilityChangeEvent,
2518    ) -> ::std::os::raw::c_int;
2519}
2520#[repr(C)]
2521#[derive(Debug, Copy, Clone)]
2522pub struct EmscriptenTouchPoint {
2523    pub identifier: ::std::os::raw::c_int,
2524    pub screenX: ::std::os::raw::c_int,
2525    pub screenY: ::std::os::raw::c_int,
2526    pub clientX: ::std::os::raw::c_int,
2527    pub clientY: ::std::os::raw::c_int,
2528    pub pageX: ::std::os::raw::c_int,
2529    pub pageY: ::std::os::raw::c_int,
2530    pub isChanged: bool,
2531    pub onTarget: bool,
2532    pub targetX: ::std::os::raw::c_int,
2533    pub targetY: ::std::os::raw::c_int,
2534    pub canvasX: ::std::os::raw::c_int,
2535    pub canvasY: ::std::os::raw::c_int,
2536}
2537#[test]
2538fn bindgen_test_layout_EmscriptenTouchPoint() {
2539    const UNINIT: ::std::mem::MaybeUninit<EmscriptenTouchPoint> = ::std::mem::MaybeUninit::uninit();
2540    let ptr = UNINIT.as_ptr();
2541    assert_eq!(
2542        ::std::mem::size_of::<EmscriptenTouchPoint>(),
2543        48usize,
2544        concat!("Size of: ", stringify!(EmscriptenTouchPoint))
2545    );
2546    assert_eq!(
2547        ::std::mem::align_of::<EmscriptenTouchPoint>(),
2548        4usize,
2549        concat!("Alignment of ", stringify!(EmscriptenTouchPoint))
2550    );
2551    assert_eq!(
2552        unsafe { ::std::ptr::addr_of!((*ptr).identifier) as usize - ptr as usize },
2553        0usize,
2554        concat!(
2555            "Offset of field: ",
2556            stringify!(EmscriptenTouchPoint),
2557            "::",
2558            stringify!(identifier)
2559        )
2560    );
2561    assert_eq!(
2562        unsafe { ::std::ptr::addr_of!((*ptr).screenX) as usize - ptr as usize },
2563        4usize,
2564        concat!(
2565            "Offset of field: ",
2566            stringify!(EmscriptenTouchPoint),
2567            "::",
2568            stringify!(screenX)
2569        )
2570    );
2571    assert_eq!(
2572        unsafe { ::std::ptr::addr_of!((*ptr).screenY) as usize - ptr as usize },
2573        8usize,
2574        concat!(
2575            "Offset of field: ",
2576            stringify!(EmscriptenTouchPoint),
2577            "::",
2578            stringify!(screenY)
2579        )
2580    );
2581    assert_eq!(
2582        unsafe { ::std::ptr::addr_of!((*ptr).clientX) as usize - ptr as usize },
2583        12usize,
2584        concat!(
2585            "Offset of field: ",
2586            stringify!(EmscriptenTouchPoint),
2587            "::",
2588            stringify!(clientX)
2589        )
2590    );
2591    assert_eq!(
2592        unsafe { ::std::ptr::addr_of!((*ptr).clientY) as usize - ptr as usize },
2593        16usize,
2594        concat!(
2595            "Offset of field: ",
2596            stringify!(EmscriptenTouchPoint),
2597            "::",
2598            stringify!(clientY)
2599        )
2600    );
2601    assert_eq!(
2602        unsafe { ::std::ptr::addr_of!((*ptr).pageX) as usize - ptr as usize },
2603        20usize,
2604        concat!(
2605            "Offset of field: ",
2606            stringify!(EmscriptenTouchPoint),
2607            "::",
2608            stringify!(pageX)
2609        )
2610    );
2611    assert_eq!(
2612        unsafe { ::std::ptr::addr_of!((*ptr).pageY) as usize - ptr as usize },
2613        24usize,
2614        concat!(
2615            "Offset of field: ",
2616            stringify!(EmscriptenTouchPoint),
2617            "::",
2618            stringify!(pageY)
2619        )
2620    );
2621    assert_eq!(
2622        unsafe { ::std::ptr::addr_of!((*ptr).isChanged) as usize - ptr as usize },
2623        28usize,
2624        concat!(
2625            "Offset of field: ",
2626            stringify!(EmscriptenTouchPoint),
2627            "::",
2628            stringify!(isChanged)
2629        )
2630    );
2631    assert_eq!(
2632        unsafe { ::std::ptr::addr_of!((*ptr).onTarget) as usize - ptr as usize },
2633        29usize,
2634        concat!(
2635            "Offset of field: ",
2636            stringify!(EmscriptenTouchPoint),
2637            "::",
2638            stringify!(onTarget)
2639        )
2640    );
2641    assert_eq!(
2642        unsafe { ::std::ptr::addr_of!((*ptr).targetX) as usize - ptr as usize },
2643        32usize,
2644        concat!(
2645            "Offset of field: ",
2646            stringify!(EmscriptenTouchPoint),
2647            "::",
2648            stringify!(targetX)
2649        )
2650    );
2651    assert_eq!(
2652        unsafe { ::std::ptr::addr_of!((*ptr).targetY) as usize - ptr as usize },
2653        36usize,
2654        concat!(
2655            "Offset of field: ",
2656            stringify!(EmscriptenTouchPoint),
2657            "::",
2658            stringify!(targetY)
2659        )
2660    );
2661    assert_eq!(
2662        unsafe { ::std::ptr::addr_of!((*ptr).canvasX) as usize - ptr as usize },
2663        40usize,
2664        concat!(
2665            "Offset of field: ",
2666            stringify!(EmscriptenTouchPoint),
2667            "::",
2668            stringify!(canvasX)
2669        )
2670    );
2671    assert_eq!(
2672        unsafe { ::std::ptr::addr_of!((*ptr).canvasY) as usize - ptr as usize },
2673        44usize,
2674        concat!(
2675            "Offset of field: ",
2676            stringify!(EmscriptenTouchPoint),
2677            "::",
2678            stringify!(canvasY)
2679        )
2680    );
2681}
2682#[repr(C)]
2683#[derive(Debug, Copy, Clone)]
2684pub struct EmscriptenTouchEvent {
2685    pub timestamp: f64,
2686    pub numTouches: ::std::os::raw::c_int,
2687    pub ctrlKey: bool,
2688    pub shiftKey: bool,
2689    pub altKey: bool,
2690    pub metaKey: bool,
2691    pub touches: [EmscriptenTouchPoint; 32usize],
2692}
2693#[test]
2694fn bindgen_test_layout_EmscriptenTouchEvent() {
2695    const UNINIT: ::std::mem::MaybeUninit<EmscriptenTouchEvent> = ::std::mem::MaybeUninit::uninit();
2696    let ptr = UNINIT.as_ptr();
2697    assert_eq!(
2698        ::std::mem::size_of::<EmscriptenTouchEvent>(),
2699        1552usize,
2700        concat!("Size of: ", stringify!(EmscriptenTouchEvent))
2701    );
2702    assert_eq!(
2703        ::std::mem::align_of::<EmscriptenTouchEvent>(),
2704        8usize,
2705        concat!("Alignment of ", stringify!(EmscriptenTouchEvent))
2706    );
2707    assert_eq!(
2708        unsafe { ::std::ptr::addr_of!((*ptr).timestamp) as usize - ptr as usize },
2709        0usize,
2710        concat!(
2711            "Offset of field: ",
2712            stringify!(EmscriptenTouchEvent),
2713            "::",
2714            stringify!(timestamp)
2715        )
2716    );
2717    assert_eq!(
2718        unsafe { ::std::ptr::addr_of!((*ptr).numTouches) as usize - ptr as usize },
2719        8usize,
2720        concat!(
2721            "Offset of field: ",
2722            stringify!(EmscriptenTouchEvent),
2723            "::",
2724            stringify!(numTouches)
2725        )
2726    );
2727    assert_eq!(
2728        unsafe { ::std::ptr::addr_of!((*ptr).ctrlKey) as usize - ptr as usize },
2729        12usize,
2730        concat!(
2731            "Offset of field: ",
2732            stringify!(EmscriptenTouchEvent),
2733            "::",
2734            stringify!(ctrlKey)
2735        )
2736    );
2737    assert_eq!(
2738        unsafe { ::std::ptr::addr_of!((*ptr).shiftKey) as usize - ptr as usize },
2739        13usize,
2740        concat!(
2741            "Offset of field: ",
2742            stringify!(EmscriptenTouchEvent),
2743            "::",
2744            stringify!(shiftKey)
2745        )
2746    );
2747    assert_eq!(
2748        unsafe { ::std::ptr::addr_of!((*ptr).altKey) as usize - ptr as usize },
2749        14usize,
2750        concat!(
2751            "Offset of field: ",
2752            stringify!(EmscriptenTouchEvent),
2753            "::",
2754            stringify!(altKey)
2755        )
2756    );
2757    assert_eq!(
2758        unsafe { ::std::ptr::addr_of!((*ptr).metaKey) as usize - ptr as usize },
2759        15usize,
2760        concat!(
2761            "Offset of field: ",
2762            stringify!(EmscriptenTouchEvent),
2763            "::",
2764            stringify!(metaKey)
2765        )
2766    );
2767    assert_eq!(
2768        unsafe { ::std::ptr::addr_of!((*ptr).touches) as usize - ptr as usize },
2769        16usize,
2770        concat!(
2771            "Offset of field: ",
2772            stringify!(EmscriptenTouchEvent),
2773            "::",
2774            stringify!(touches)
2775        )
2776    );
2777}
2778pub type em_touch_callback_func = ::std::option::Option<
2779    unsafe extern "C" fn(
2780        eventType: ::std::os::raw::c_int,
2781        touchEvent: *const EmscriptenTouchEvent,
2782        userData: *mut ::std::os::raw::c_void,
2783    ) -> bool,
2784>;
2785extern "C" {
2786    pub fn emscripten_set_touchstart_callback_on_thread(
2787        target: *const ::std::os::raw::c_char,
2788        userData: *mut ::std::os::raw::c_void,
2789        useCapture: bool,
2790        callback: em_touch_callback_func,
2791        targetThread: pthread_t,
2792    ) -> ::std::os::raw::c_int;
2793}
2794extern "C" {
2795    pub fn emscripten_set_touchend_callback_on_thread(
2796        target: *const ::std::os::raw::c_char,
2797        userData: *mut ::std::os::raw::c_void,
2798        useCapture: bool,
2799        callback: em_touch_callback_func,
2800        targetThread: pthread_t,
2801    ) -> ::std::os::raw::c_int;
2802}
2803extern "C" {
2804    pub fn emscripten_set_touchmove_callback_on_thread(
2805        target: *const ::std::os::raw::c_char,
2806        userData: *mut ::std::os::raw::c_void,
2807        useCapture: bool,
2808        callback: em_touch_callback_func,
2809        targetThread: pthread_t,
2810    ) -> ::std::os::raw::c_int;
2811}
2812extern "C" {
2813    pub fn emscripten_set_touchcancel_callback_on_thread(
2814        target: *const ::std::os::raw::c_char,
2815        userData: *mut ::std::os::raw::c_void,
2816        useCapture: bool,
2817        callback: em_touch_callback_func,
2818        targetThread: pthread_t,
2819    ) -> ::std::os::raw::c_int;
2820}
2821#[repr(C)]
2822#[derive(Debug, Copy, Clone)]
2823pub struct EmscriptenGamepadEvent {
2824    pub timestamp: f64,
2825    pub numAxes: ::std::os::raw::c_int,
2826    pub numButtons: ::std::os::raw::c_int,
2827    pub axis: [f64; 64usize],
2828    pub analogButton: [f64; 64usize],
2829    pub digitalButton: [bool; 64usize],
2830    pub connected: bool,
2831    pub index: ::std::os::raw::c_int,
2832    pub id: [::std::os::raw::c_char; 64usize],
2833    pub mapping: [::std::os::raw::c_char; 64usize],
2834}
2835#[test]
2836fn bindgen_test_layout_EmscriptenGamepadEvent() {
2837    const UNINIT: ::std::mem::MaybeUninit<EmscriptenGamepadEvent> =
2838        ::std::mem::MaybeUninit::uninit();
2839    let ptr = UNINIT.as_ptr();
2840    assert_eq!(
2841        ::std::mem::size_of::<EmscriptenGamepadEvent>(),
2842        1240usize,
2843        concat!("Size of: ", stringify!(EmscriptenGamepadEvent))
2844    );
2845    assert_eq!(
2846        ::std::mem::align_of::<EmscriptenGamepadEvent>(),
2847        8usize,
2848        concat!("Alignment of ", stringify!(EmscriptenGamepadEvent))
2849    );
2850    assert_eq!(
2851        unsafe { ::std::ptr::addr_of!((*ptr).timestamp) as usize - ptr as usize },
2852        0usize,
2853        concat!(
2854            "Offset of field: ",
2855            stringify!(EmscriptenGamepadEvent),
2856            "::",
2857            stringify!(timestamp)
2858        )
2859    );
2860    assert_eq!(
2861        unsafe { ::std::ptr::addr_of!((*ptr).numAxes) as usize - ptr as usize },
2862        8usize,
2863        concat!(
2864            "Offset of field: ",
2865            stringify!(EmscriptenGamepadEvent),
2866            "::",
2867            stringify!(numAxes)
2868        )
2869    );
2870    assert_eq!(
2871        unsafe { ::std::ptr::addr_of!((*ptr).numButtons) as usize - ptr as usize },
2872        12usize,
2873        concat!(
2874            "Offset of field: ",
2875            stringify!(EmscriptenGamepadEvent),
2876            "::",
2877            stringify!(numButtons)
2878        )
2879    );
2880    assert_eq!(
2881        unsafe { ::std::ptr::addr_of!((*ptr).axis) as usize - ptr as usize },
2882        16usize,
2883        concat!(
2884            "Offset of field: ",
2885            stringify!(EmscriptenGamepadEvent),
2886            "::",
2887            stringify!(axis)
2888        )
2889    );
2890    assert_eq!(
2891        unsafe { ::std::ptr::addr_of!((*ptr).analogButton) as usize - ptr as usize },
2892        528usize,
2893        concat!(
2894            "Offset of field: ",
2895            stringify!(EmscriptenGamepadEvent),
2896            "::",
2897            stringify!(analogButton)
2898        )
2899    );
2900    assert_eq!(
2901        unsafe { ::std::ptr::addr_of!((*ptr).digitalButton) as usize - ptr as usize },
2902        1040usize,
2903        concat!(
2904            "Offset of field: ",
2905            stringify!(EmscriptenGamepadEvent),
2906            "::",
2907            stringify!(digitalButton)
2908        )
2909    );
2910    assert_eq!(
2911        unsafe { ::std::ptr::addr_of!((*ptr).connected) as usize - ptr as usize },
2912        1104usize,
2913        concat!(
2914            "Offset of field: ",
2915            stringify!(EmscriptenGamepadEvent),
2916            "::",
2917            stringify!(connected)
2918        )
2919    );
2920    assert_eq!(
2921        unsafe { ::std::ptr::addr_of!((*ptr).index) as usize - ptr as usize },
2922        1108usize,
2923        concat!(
2924            "Offset of field: ",
2925            stringify!(EmscriptenGamepadEvent),
2926            "::",
2927            stringify!(index)
2928        )
2929    );
2930    assert_eq!(
2931        unsafe { ::std::ptr::addr_of!((*ptr).id) as usize - ptr as usize },
2932        1112usize,
2933        concat!(
2934            "Offset of field: ",
2935            stringify!(EmscriptenGamepadEvent),
2936            "::",
2937            stringify!(id)
2938        )
2939    );
2940    assert_eq!(
2941        unsafe { ::std::ptr::addr_of!((*ptr).mapping) as usize - ptr as usize },
2942        1176usize,
2943        concat!(
2944            "Offset of field: ",
2945            stringify!(EmscriptenGamepadEvent),
2946            "::",
2947            stringify!(mapping)
2948        )
2949    );
2950}
2951pub type em_gamepad_callback_func = ::std::option::Option<
2952    unsafe extern "C" fn(
2953        eventType: ::std::os::raw::c_int,
2954        gamepadEvent: *const EmscriptenGamepadEvent,
2955        userData: *mut ::std::os::raw::c_void,
2956    ) -> bool,
2957>;
2958extern "C" {
2959    pub fn emscripten_set_gamepadconnected_callback_on_thread(
2960        userData: *mut ::std::os::raw::c_void,
2961        useCapture: bool,
2962        callback: em_gamepad_callback_func,
2963        targetThread: pthread_t,
2964    ) -> ::std::os::raw::c_int;
2965}
2966extern "C" {
2967    pub fn emscripten_set_gamepaddisconnected_callback_on_thread(
2968        userData: *mut ::std::os::raw::c_void,
2969        useCapture: bool,
2970        callback: em_gamepad_callback_func,
2971        targetThread: pthread_t,
2972    ) -> ::std::os::raw::c_int;
2973}
2974extern "C" {
2975    pub fn emscripten_sample_gamepad_data() -> ::std::os::raw::c_int;
2976}
2977extern "C" {
2978    pub fn emscripten_get_num_gamepads() -> ::std::os::raw::c_int;
2979}
2980extern "C" {
2981    pub fn emscripten_get_gamepad_status(
2982        index: ::std::os::raw::c_int,
2983        gamepadState: *mut EmscriptenGamepadEvent,
2984    ) -> ::std::os::raw::c_int;
2985}
2986#[repr(C)]
2987#[derive(Debug, Copy, Clone)]
2988pub struct EmscriptenBatteryEvent {
2989    pub chargingTime: f64,
2990    pub dischargingTime: f64,
2991    pub level: f64,
2992    pub charging: bool,
2993}
2994#[test]
2995fn bindgen_test_layout_EmscriptenBatteryEvent() {
2996    const UNINIT: ::std::mem::MaybeUninit<EmscriptenBatteryEvent> =
2997        ::std::mem::MaybeUninit::uninit();
2998    let ptr = UNINIT.as_ptr();
2999    assert_eq!(
3000        ::std::mem::size_of::<EmscriptenBatteryEvent>(),
3001        32usize,
3002        concat!("Size of: ", stringify!(EmscriptenBatteryEvent))
3003    );
3004    assert_eq!(
3005        ::std::mem::align_of::<EmscriptenBatteryEvent>(),
3006        8usize,
3007        concat!("Alignment of ", stringify!(EmscriptenBatteryEvent))
3008    );
3009    assert_eq!(
3010        unsafe { ::std::ptr::addr_of!((*ptr).chargingTime) as usize - ptr as usize },
3011        0usize,
3012        concat!(
3013            "Offset of field: ",
3014            stringify!(EmscriptenBatteryEvent),
3015            "::",
3016            stringify!(chargingTime)
3017        )
3018    );
3019    assert_eq!(
3020        unsafe { ::std::ptr::addr_of!((*ptr).dischargingTime) as usize - ptr as usize },
3021        8usize,
3022        concat!(
3023            "Offset of field: ",
3024            stringify!(EmscriptenBatteryEvent),
3025            "::",
3026            stringify!(dischargingTime)
3027        )
3028    );
3029    assert_eq!(
3030        unsafe { ::std::ptr::addr_of!((*ptr).level) as usize - ptr as usize },
3031        16usize,
3032        concat!(
3033            "Offset of field: ",
3034            stringify!(EmscriptenBatteryEvent),
3035            "::",
3036            stringify!(level)
3037        )
3038    );
3039    assert_eq!(
3040        unsafe { ::std::ptr::addr_of!((*ptr).charging) as usize - ptr as usize },
3041        24usize,
3042        concat!(
3043            "Offset of field: ",
3044            stringify!(EmscriptenBatteryEvent),
3045            "::",
3046            stringify!(charging)
3047        )
3048    );
3049}
3050pub type em_battery_callback_func = ::std::option::Option<
3051    unsafe extern "C" fn(
3052        eventType: ::std::os::raw::c_int,
3053        batteryEvent: *const EmscriptenBatteryEvent,
3054        userData: *mut ::std::os::raw::c_void,
3055    ) -> bool,
3056>;
3057extern "C" {
3058    pub fn emscripten_set_batterychargingchange_callback_on_thread(
3059        userData: *mut ::std::os::raw::c_void,
3060        callback: em_battery_callback_func,
3061        targetThread: pthread_t,
3062    ) -> ::std::os::raw::c_int;
3063}
3064extern "C" {
3065    pub fn emscripten_set_batterylevelchange_callback_on_thread(
3066        userData: *mut ::std::os::raw::c_void,
3067        callback: em_battery_callback_func,
3068        targetThread: pthread_t,
3069    ) -> ::std::os::raw::c_int;
3070}
3071extern "C" {
3072    pub fn emscripten_get_battery_status(
3073        batteryState: *mut EmscriptenBatteryEvent,
3074    ) -> ::std::os::raw::c_int;
3075}
3076extern "C" {
3077    pub fn emscripten_vibrate(msecs: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
3078}
3079extern "C" {
3080    pub fn emscripten_vibrate_pattern(
3081        msecsArray: *mut ::std::os::raw::c_int,
3082        numEntries: ::std::os::raw::c_int,
3083    ) -> ::std::os::raw::c_int;
3084}
3085pub type em_beforeunload_callback = ::std::option::Option<
3086    unsafe extern "C" fn(
3087        eventType: ::std::os::raw::c_int,
3088        reserved: *const ::std::os::raw::c_void,
3089        userData: *mut ::std::os::raw::c_void,
3090    ) -> *const ::std::os::raw::c_char,
3091>;
3092extern "C" {
3093    pub fn emscripten_set_beforeunload_callback_on_thread(
3094        userData: *mut ::std::os::raw::c_void,
3095        callback: em_beforeunload_callback,
3096        targetThread: pthread_t,
3097    ) -> ::std::os::raw::c_int;
3098}
3099extern "C" {
3100    pub fn emscripten_set_canvas_element_size(
3101        target: *const ::std::os::raw::c_char,
3102        width: ::std::os::raw::c_int,
3103        height: ::std::os::raw::c_int,
3104    ) -> ::std::os::raw::c_int;
3105}
3106extern "C" {
3107    pub fn emscripten_get_canvas_element_size(
3108        target: *const ::std::os::raw::c_char,
3109        width: *mut ::std::os::raw::c_int,
3110        height: *mut ::std::os::raw::c_int,
3111    ) -> ::std::os::raw::c_int;
3112}
3113extern "C" {
3114    pub fn emscripten_set_element_css_size(
3115        target: *const ::std::os::raw::c_char,
3116        width: f64,
3117        height: f64,
3118    ) -> ::std::os::raw::c_int;
3119}
3120extern "C" {
3121    pub fn emscripten_get_element_css_size(
3122        target: *const ::std::os::raw::c_char,
3123        width: *mut f64,
3124        height: *mut f64,
3125    ) -> ::std::os::raw::c_int;
3126}
3127extern "C" {
3128    pub fn emscripten_html5_remove_all_event_listeners();
3129}
3130extern "C" {
3131    pub fn emscripten_request_animation_frame(
3132        cb: ::std::option::Option<
3133            unsafe extern "C" fn(time: f64, userData: *mut ::std::os::raw::c_void) -> bool,
3134        >,
3135        userData: *mut ::std::os::raw::c_void,
3136    ) -> ::std::os::raw::c_int;
3137}
3138extern "C" {
3139    pub fn emscripten_cancel_animation_frame(requestAnimationFrameId: ::std::os::raw::c_int);
3140}
3141extern "C" {
3142    pub fn emscripten_request_animation_frame_loop(
3143        cb: ::std::option::Option<
3144            unsafe extern "C" fn(time: f64, userData: *mut ::std::os::raw::c_void) -> bool,
3145        >,
3146        userData: *mut ::std::os::raw::c_void,
3147    );
3148}
3149extern "C" {
3150    pub fn emscripten_date_now() -> f64;
3151}
3152extern "C" {
3153    pub fn emscripten_performance_now() -> f64;
3154}
3155pub type EMSCRIPTEN_WEBGL_CONTEXT_HANDLE = usize;
3156pub type EMSCRIPTEN_WEBGL_CONTEXT_PROXY_MODE = ::std::os::raw::c_int;
3157pub type EM_WEBGL_POWER_PREFERENCE = ::std::os::raw::c_int;
3158#[repr(C)]
3159#[derive(Debug, Copy, Clone)]
3160pub struct EmscriptenWebGLContextAttributes {
3161    pub alpha: bool,
3162    pub depth: bool,
3163    pub stencil: bool,
3164    pub antialias: bool,
3165    pub premultipliedAlpha: bool,
3166    pub preserveDrawingBuffer: bool,
3167    pub powerPreference: EM_WEBGL_POWER_PREFERENCE,
3168    pub failIfMajorPerformanceCaveat: bool,
3169    pub majorVersion: ::std::os::raw::c_int,
3170    pub minorVersion: ::std::os::raw::c_int,
3171    pub enableExtensionsByDefault: bool,
3172    pub explicitSwapControl: bool,
3173    pub proxyContextToMainThread: EMSCRIPTEN_WEBGL_CONTEXT_PROXY_MODE,
3174    pub renderViaOffscreenBackBuffer: bool,
3175}
3176#[test]
3177fn bindgen_test_layout_EmscriptenWebGLContextAttributes() {
3178    const UNINIT: ::std::mem::MaybeUninit<EmscriptenWebGLContextAttributes> =
3179        ::std::mem::MaybeUninit::uninit();
3180    let ptr = UNINIT.as_ptr();
3181    assert_eq!(
3182        ::std::mem::size_of::<EmscriptenWebGLContextAttributes>(),
3183        36usize,
3184        concat!("Size of: ", stringify!(EmscriptenWebGLContextAttributes))
3185    );
3186    assert_eq!(
3187        ::std::mem::align_of::<EmscriptenWebGLContextAttributes>(),
3188        4usize,
3189        concat!(
3190            "Alignment of ",
3191            stringify!(EmscriptenWebGLContextAttributes)
3192        )
3193    );
3194    assert_eq!(
3195        unsafe { ::std::ptr::addr_of!((*ptr).alpha) as usize - ptr as usize },
3196        0usize,
3197        concat!(
3198            "Offset of field: ",
3199            stringify!(EmscriptenWebGLContextAttributes),
3200            "::",
3201            stringify!(alpha)
3202        )
3203    );
3204    assert_eq!(
3205        unsafe { ::std::ptr::addr_of!((*ptr).depth) as usize - ptr as usize },
3206        1usize,
3207        concat!(
3208            "Offset of field: ",
3209            stringify!(EmscriptenWebGLContextAttributes),
3210            "::",
3211            stringify!(depth)
3212        )
3213    );
3214    assert_eq!(
3215        unsafe { ::std::ptr::addr_of!((*ptr).stencil) as usize - ptr as usize },
3216        2usize,
3217        concat!(
3218            "Offset of field: ",
3219            stringify!(EmscriptenWebGLContextAttributes),
3220            "::",
3221            stringify!(stencil)
3222        )
3223    );
3224    assert_eq!(
3225        unsafe { ::std::ptr::addr_of!((*ptr).antialias) as usize - ptr as usize },
3226        3usize,
3227        concat!(
3228            "Offset of field: ",
3229            stringify!(EmscriptenWebGLContextAttributes),
3230            "::",
3231            stringify!(antialias)
3232        )
3233    );
3234    assert_eq!(
3235        unsafe { ::std::ptr::addr_of!((*ptr).premultipliedAlpha) as usize - ptr as usize },
3236        4usize,
3237        concat!(
3238            "Offset of field: ",
3239            stringify!(EmscriptenWebGLContextAttributes),
3240            "::",
3241            stringify!(premultipliedAlpha)
3242        )
3243    );
3244    assert_eq!(
3245        unsafe { ::std::ptr::addr_of!((*ptr).preserveDrawingBuffer) as usize - ptr as usize },
3246        5usize,
3247        concat!(
3248            "Offset of field: ",
3249            stringify!(EmscriptenWebGLContextAttributes),
3250            "::",
3251            stringify!(preserveDrawingBuffer)
3252        )
3253    );
3254    assert_eq!(
3255        unsafe { ::std::ptr::addr_of!((*ptr).powerPreference) as usize - ptr as usize },
3256        8usize,
3257        concat!(
3258            "Offset of field: ",
3259            stringify!(EmscriptenWebGLContextAttributes),
3260            "::",
3261            stringify!(powerPreference)
3262        )
3263    );
3264    assert_eq!(
3265        unsafe {
3266            ::std::ptr::addr_of!((*ptr).failIfMajorPerformanceCaveat) as usize - ptr as usize
3267        },
3268        12usize,
3269        concat!(
3270            "Offset of field: ",
3271            stringify!(EmscriptenWebGLContextAttributes),
3272            "::",
3273            stringify!(failIfMajorPerformanceCaveat)
3274        )
3275    );
3276    assert_eq!(
3277        unsafe { ::std::ptr::addr_of!((*ptr).majorVersion) as usize - ptr as usize },
3278        16usize,
3279        concat!(
3280            "Offset of field: ",
3281            stringify!(EmscriptenWebGLContextAttributes),
3282            "::",
3283            stringify!(majorVersion)
3284        )
3285    );
3286    assert_eq!(
3287        unsafe { ::std::ptr::addr_of!((*ptr).minorVersion) as usize - ptr as usize },
3288        20usize,
3289        concat!(
3290            "Offset of field: ",
3291            stringify!(EmscriptenWebGLContextAttributes),
3292            "::",
3293            stringify!(minorVersion)
3294        )
3295    );
3296    assert_eq!(
3297        unsafe { ::std::ptr::addr_of!((*ptr).enableExtensionsByDefault) as usize - ptr as usize },
3298        24usize,
3299        concat!(
3300            "Offset of field: ",
3301            stringify!(EmscriptenWebGLContextAttributes),
3302            "::",
3303            stringify!(enableExtensionsByDefault)
3304        )
3305    );
3306    assert_eq!(
3307        unsafe { ::std::ptr::addr_of!((*ptr).explicitSwapControl) as usize - ptr as usize },
3308        25usize,
3309        concat!(
3310            "Offset of field: ",
3311            stringify!(EmscriptenWebGLContextAttributes),
3312            "::",
3313            stringify!(explicitSwapControl)
3314        )
3315    );
3316    assert_eq!(
3317        unsafe { ::std::ptr::addr_of!((*ptr).proxyContextToMainThread) as usize - ptr as usize },
3318        28usize,
3319        concat!(
3320            "Offset of field: ",
3321            stringify!(EmscriptenWebGLContextAttributes),
3322            "::",
3323            stringify!(proxyContextToMainThread)
3324        )
3325    );
3326    assert_eq!(
3327        unsafe {
3328            ::std::ptr::addr_of!((*ptr).renderViaOffscreenBackBuffer) as usize - ptr as usize
3329        },
3330        32usize,
3331        concat!(
3332            "Offset of field: ",
3333            stringify!(EmscriptenWebGLContextAttributes),
3334            "::",
3335            stringify!(renderViaOffscreenBackBuffer)
3336        )
3337    );
3338}
3339extern "C" {
3340    pub fn emscripten_webgl_init_context_attributes(
3341        attributes: *mut EmscriptenWebGLContextAttributes,
3342    );
3343}
3344extern "C" {
3345    pub fn emscripten_webgl_create_context(
3346        target: *const ::std::os::raw::c_char,
3347        attributes: *const EmscriptenWebGLContextAttributes,
3348    ) -> EMSCRIPTEN_WEBGL_CONTEXT_HANDLE;
3349}
3350extern "C" {
3351    pub fn emscripten_webgl_make_context_current(
3352        context: EMSCRIPTEN_WEBGL_CONTEXT_HANDLE,
3353    ) -> ::std::os::raw::c_int;
3354}
3355extern "C" {
3356    pub fn emscripten_webgl_get_current_context() -> EMSCRIPTEN_WEBGL_CONTEXT_HANDLE;
3357}
3358extern "C" {
3359    pub fn emscripten_webgl_get_drawing_buffer_size(
3360        context: EMSCRIPTEN_WEBGL_CONTEXT_HANDLE,
3361        width: *mut ::std::os::raw::c_int,
3362        height: *mut ::std::os::raw::c_int,
3363    ) -> ::std::os::raw::c_int;
3364}
3365extern "C" {
3366    pub fn emscripten_webgl_get_context_attributes(
3367        context: EMSCRIPTEN_WEBGL_CONTEXT_HANDLE,
3368        outAttributes: *mut EmscriptenWebGLContextAttributes,
3369    ) -> ::std::os::raw::c_int;
3370}
3371extern "C" {
3372    pub fn emscripten_webgl_destroy_context(
3373        context: EMSCRIPTEN_WEBGL_CONTEXT_HANDLE,
3374    ) -> ::std::os::raw::c_int;
3375}
3376extern "C" {
3377    pub fn emscripten_webgl_enable_extension(
3378        context: EMSCRIPTEN_WEBGL_CONTEXT_HANDLE,
3379        extension: *const ::std::os::raw::c_char,
3380    ) -> bool;
3381}
3382extern "C" {
3383    pub fn emscripten_webgl_enable_ANGLE_instanced_arrays(
3384        context: EMSCRIPTEN_WEBGL_CONTEXT_HANDLE,
3385    ) -> bool;
3386}
3387extern "C" {
3388    pub fn emscripten_webgl_enable_OES_vertex_array_object(
3389        context: EMSCRIPTEN_WEBGL_CONTEXT_HANDLE,
3390    ) -> bool;
3391}
3392extern "C" {
3393    pub fn emscripten_webgl_enable_WEBGL_draw_buffers(
3394        context: EMSCRIPTEN_WEBGL_CONTEXT_HANDLE,
3395    ) -> bool;
3396}
3397extern "C" {
3398    pub fn emscripten_webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(
3399        context: EMSCRIPTEN_WEBGL_CONTEXT_HANDLE,
3400    ) -> bool;
3401}
3402extern "C" {
3403    pub fn emscripten_webgl_enable_WEBGL_multi_draw(
3404        context: EMSCRIPTEN_WEBGL_CONTEXT_HANDLE,
3405    ) -> bool;
3406}
3407extern "C" {
3408    pub fn emscripten_webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(
3409        context: EMSCRIPTEN_WEBGL_CONTEXT_HANDLE,
3410    ) -> bool;
3411}
3412extern "C" {
3413    pub fn emscripten_webgl_enable_EXT_polygon_offset_clamp(
3414        context: EMSCRIPTEN_WEBGL_CONTEXT_HANDLE,
3415    ) -> bool;
3416}
3417extern "C" {
3418    pub fn emscripten_webgl_enable_EXT_clip_control(
3419        context: EMSCRIPTEN_WEBGL_CONTEXT_HANDLE,
3420    ) -> bool;
3421}
3422extern "C" {
3423    pub fn emscripten_webgl_enable_WEBGL_polygon_mode(
3424        context: EMSCRIPTEN_WEBGL_CONTEXT_HANDLE,
3425    ) -> bool;
3426}
3427pub type em_webgl_context_callback = ::std::option::Option<
3428    unsafe extern "C" fn(
3429        eventType: ::std::os::raw::c_int,
3430        reserved: *const ::std::os::raw::c_void,
3431        userData: *mut ::std::os::raw::c_void,
3432    ) -> bool,
3433>;
3434extern "C" {
3435    pub fn emscripten_set_webglcontextlost_callback_on_thread(
3436        target: *const ::std::os::raw::c_char,
3437        userData: *mut ::std::os::raw::c_void,
3438        useCapture: bool,
3439        callback: em_webgl_context_callback,
3440        targetThread: pthread_t,
3441    ) -> ::std::os::raw::c_int;
3442}
3443extern "C" {
3444    pub fn emscripten_set_webglcontextrestored_callback_on_thread(
3445        target: *const ::std::os::raw::c_char,
3446        userData: *mut ::std::os::raw::c_void,
3447        useCapture: bool,
3448        callback: em_webgl_context_callback,
3449        targetThread: pthread_t,
3450    ) -> ::std::os::raw::c_int;
3451}
3452extern "C" {
3453    pub fn emscripten_is_webgl_context_lost(context: EMSCRIPTEN_WEBGL_CONTEXT_HANDLE) -> bool;
3454}
3455extern "C" {
3456    pub fn emscripten_webgl_commit_frame() -> ::std::os::raw::c_int;
3457}
3458extern "C" {
3459    pub fn emscripten_supports_offscreencanvas() -> bool;
3460}
3461extern "C" {
3462    pub fn emscripten_webgl1_get_proc_address(
3463        name: *const ::std::os::raw::c_char,
3464    ) -> *mut ::std::os::raw::c_void;
3465}
3466extern "C" {
3467    pub fn emscripten_webgl2_get_proc_address(
3468        name: *const ::std::os::raw::c_char,
3469    ) -> *mut ::std::os::raw::c_void;
3470}
3471extern "C" {
3472    pub fn emscripten_webgl_get_proc_address(
3473        name: *const ::std::os::raw::c_char,
3474    ) -> *mut ::std::os::raw::c_void;
3475}
3476extern "C" {
3477    pub fn emscripten_webgl_get_supported_extensions() -> *mut ::std::os::raw::c_char;
3478}
3479extern "C" {
3480    pub fn emscripten_webgl_get_shader_parameter_d(
3481        shader: ::std::os::raw::c_int,
3482        param: ::std::os::raw::c_int,
3483    ) -> f64;
3484}
3485extern "C" {
3486    pub fn emscripten_webgl_get_shader_info_log_utf8(
3487        shader: ::std::os::raw::c_int,
3488    ) -> *mut ::std::os::raw::c_char;
3489}
3490extern "C" {
3491    pub fn emscripten_webgl_get_shader_source_utf8(
3492        shader: ::std::os::raw::c_int,
3493    ) -> *mut ::std::os::raw::c_char;
3494}
3495extern "C" {
3496    pub fn emscripten_webgl_get_program_parameter_d(
3497        program: ::std::os::raw::c_int,
3498        param: ::std::os::raw::c_int,
3499    ) -> f64;
3500}
3501extern "C" {
3502    pub fn emscripten_webgl_get_program_info_log_utf8(
3503        program: ::std::os::raw::c_int,
3504    ) -> *mut ::std::os::raw::c_char;
3505}
3506extern "C" {
3507    pub fn emscripten_webgl_get_vertex_attrib_d(
3508        index: ::std::os::raw::c_int,
3509        param: ::std::os::raw::c_int,
3510    ) -> f64;
3511}
3512extern "C" {
3513    pub fn emscripten_webgl_get_vertex_attrib_o(
3514        index: ::std::os::raw::c_int,
3515        param: ::std::os::raw::c_int,
3516    ) -> ::std::os::raw::c_int;
3517}
3518extern "C" {
3519    pub fn emscripten_webgl_get_vertex_attrib_v(
3520        index: ::std::os::raw::c_int,
3521        param: ::std::os::raw::c_int,
3522        dst: *mut ::std::os::raw::c_void,
3523        dstLength: ::std::os::raw::c_int,
3524        dstType: ::std::os::raw::c_int,
3525    ) -> ::std::os::raw::c_int;
3526}
3527extern "C" {
3528    pub fn emscripten_webgl_get_uniform_d(
3529        program: ::std::os::raw::c_int,
3530        location: ::std::os::raw::c_int,
3531    ) -> f64;
3532}
3533extern "C" {
3534    pub fn emscripten_webgl_get_uniform_v(
3535        program: ::std::os::raw::c_int,
3536        location: ::std::os::raw::c_int,
3537        dst: *mut ::std::os::raw::c_void,
3538        dstLength: ::std::os::raw::c_int,
3539        dstType: ::std::os::raw::c_int,
3540    ) -> ::std::os::raw::c_int;
3541}
3542extern "C" {
3543    pub fn emscripten_webgl_get_parameter_v(
3544        param: ::std::os::raw::c_int,
3545        dst: *mut ::std::os::raw::c_void,
3546        dstLength: ::std::os::raw::c_int,
3547        dstType: ::std::os::raw::c_int,
3548    ) -> ::std::os::raw::c_int;
3549}
3550extern "C" {
3551    pub fn emscripten_webgl_get_parameter_d(param: ::std::os::raw::c_int) -> f64;
3552}
3553extern "C" {
3554    pub fn emscripten_webgl_get_parameter_o(param: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
3555}
3556extern "C" {
3557    pub fn emscripten_webgl_get_parameter_utf8(
3558        param: ::std::os::raw::c_int,
3559    ) -> *mut ::std::os::raw::c_char;
3560}
3561extern "C" {
3562    pub fn emscripten_webgl_get_parameter_i64v(
3563        param: ::std::os::raw::c_int,
3564        dst: *mut ::std::os::raw::c_longlong,
3565    );
3566}