craydate_sys/
bindings.rs

1// To regenerate this bindings module: `cargo run --features=generate`
2
3#![allow(deref_nullptr)]
4
5/* automatically generated by rust-bindgen 0.59.2 */
6
7#[repr(C)]
8#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
9pub struct __BindgenBitfieldUnit<Storage> {
10  storage: Storage,
11}
12impl<Storage> __BindgenBitfieldUnit<Storage> {
13  #[inline]
14  pub const fn new(storage: Storage) -> Self {
15    Self { storage }
16  }
17}
18impl<Storage> __BindgenBitfieldUnit<Storage>
19where
20  Storage: AsRef<[u8]> + AsMut<[u8]>,
21{
22  #[inline]
23  pub fn get_bit(&self, index: usize) -> bool {
24    debug_assert!(index / 8 < self.storage.as_ref().len());
25    let byte_index = index / 8;
26    let byte = self.storage.as_ref()[byte_index];
27    let bit_index = if cfg!(target_endian = "big") {
28      7 - (index % 8)
29    } else {
30      index % 8
31    };
32    let mask = 1 << bit_index;
33    byte & mask == mask
34  }
35  #[inline]
36  pub fn set_bit(&mut self, index: usize, val: bool) {
37    debug_assert!(index / 8 < self.storage.as_ref().len());
38    let byte_index = index / 8;
39    let byte = &mut self.storage.as_mut()[byte_index];
40    let bit_index = if cfg!(target_endian = "big") {
41      7 - (index % 8)
42    } else {
43      index % 8
44    };
45    let mask = 1 << bit_index;
46    if val {
47      *byte |= mask;
48    } else {
49      *byte &= !mask;
50    }
51  }
52  #[inline]
53  pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {
54    debug_assert!(bit_width <= 64);
55    debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
56    debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
57    let mut val = 0;
58    for i in 0..(bit_width as usize) {
59      if self.get_bit(i + bit_offset) {
60        let index = if cfg!(target_endian = "big") {
61          bit_width as usize - 1 - i
62        } else {
63          i
64        };
65        val |= 1 << index;
66      }
67    }
68    val
69  }
70  #[inline]
71  pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {
72    debug_assert!(bit_width <= 64);
73    debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
74    debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
75    for i in 0..(bit_width as usize) {
76      let mask = 1 << i;
77      let val_bit_is_set = val & mask == mask;
78      let index = if cfg!(target_endian = "big") {
79        bit_width as usize - 1 - i
80      } else {
81        i
82      };
83      self.set_bit(index + bit_offset, val_bit_is_set);
84    }
85  }
86}
87pub const LCD_COLUMNS: u32 = 400;
88pub const LCD_ROWS: u32 = 240;
89pub const LCD_ROWSIZE: u32 = 52;
90pub const SEEK_SET: u32 = 0;
91pub const SEEK_CUR: u32 = 1;
92pub const SEEK_END: u32 = 2;
93pub type size_t = super::ctypes::c_ulonglong;
94#[repr(C)]
95#[derive(Debug, Copy, Clone)]
96pub struct LCDRect {
97  pub left: super::ctypes::c_int,
98  pub right: super::ctypes::c_int,
99  pub top: super::ctypes::c_int,
100  pub bottom: super::ctypes::c_int,
101}
102#[test]
103fn bindgen_test_layout_LCDRect() {
104  assert_eq!(
105    ::core::mem::size_of::<LCDRect>(),
106    16usize,
107    concat!("Size of: ", stringify!(LCDRect))
108  );
109  assert_eq!(
110    ::core::mem::align_of::<LCDRect>(),
111    4usize,
112    concat!("Alignment of ", stringify!(LCDRect))
113  );
114  assert_eq!(
115    unsafe { &(*(::core::ptr::null::<LCDRect>())).left as *const _ as usize },
116    0usize,
117    concat!(
118      "Offset of field: ",
119      stringify!(LCDRect),
120      "::",
121      stringify!(left)
122    )
123  );
124  assert_eq!(
125    unsafe { &(*(::core::ptr::null::<LCDRect>())).right as *const _ as usize },
126    4usize,
127    concat!(
128      "Offset of field: ",
129      stringify!(LCDRect),
130      "::",
131      stringify!(right)
132    )
133  );
134  assert_eq!(
135    unsafe { &(*(::core::ptr::null::<LCDRect>())).top as *const _ as usize },
136    8usize,
137    concat!(
138      "Offset of field: ",
139      stringify!(LCDRect),
140      "::",
141      stringify!(top)
142    )
143  );
144  assert_eq!(
145    unsafe { &(*(::core::ptr::null::<LCDRect>())).bottom as *const _ as usize },
146    12usize,
147    concat!(
148      "Offset of field: ",
149      stringify!(LCDRect),
150      "::",
151      stringify!(bottom)
152    )
153  );
154}
155impl LCDBitmapDrawMode {
156  pub const kDrawModeCopy: LCDBitmapDrawMode = LCDBitmapDrawMode(0);
157}
158impl LCDBitmapDrawMode {
159  pub const kDrawModeWhiteTransparent: LCDBitmapDrawMode = LCDBitmapDrawMode(1);
160}
161impl LCDBitmapDrawMode {
162  pub const kDrawModeBlackTransparent: LCDBitmapDrawMode = LCDBitmapDrawMode(2);
163}
164impl LCDBitmapDrawMode {
165  pub const kDrawModeFillWhite: LCDBitmapDrawMode = LCDBitmapDrawMode(3);
166}
167impl LCDBitmapDrawMode {
168  pub const kDrawModeFillBlack: LCDBitmapDrawMode = LCDBitmapDrawMode(4);
169}
170impl LCDBitmapDrawMode {
171  pub const kDrawModeXOR: LCDBitmapDrawMode = LCDBitmapDrawMode(5);
172}
173impl LCDBitmapDrawMode {
174  pub const kDrawModeNXOR: LCDBitmapDrawMode = LCDBitmapDrawMode(6);
175}
176impl LCDBitmapDrawMode {
177  pub const kDrawModeInverted: LCDBitmapDrawMode = LCDBitmapDrawMode(7);
178}
179#[repr(transparent)]
180#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
181pub struct LCDBitmapDrawMode(pub super::ctypes::c_int);
182impl LCDBitmapFlip {
183  pub const kBitmapUnflipped: LCDBitmapFlip = LCDBitmapFlip(0);
184}
185impl LCDBitmapFlip {
186  pub const kBitmapFlippedX: LCDBitmapFlip = LCDBitmapFlip(1);
187}
188impl LCDBitmapFlip {
189  pub const kBitmapFlippedY: LCDBitmapFlip = LCDBitmapFlip(2);
190}
191impl LCDBitmapFlip {
192  pub const kBitmapFlippedXY: LCDBitmapFlip = LCDBitmapFlip(3);
193}
194#[repr(transparent)]
195#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
196pub struct LCDBitmapFlip(pub super::ctypes::c_int);
197impl LCDSolidColor {
198  pub const kColorBlack: LCDSolidColor = LCDSolidColor(0);
199}
200impl LCDSolidColor {
201  pub const kColorWhite: LCDSolidColor = LCDSolidColor(1);
202}
203impl LCDSolidColor {
204  pub const kColorClear: LCDSolidColor = LCDSolidColor(2);
205}
206impl LCDSolidColor {
207  pub const kColorXOR: LCDSolidColor = LCDSolidColor(3);
208}
209#[repr(transparent)]
210#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
211pub struct LCDSolidColor(pub super::ctypes::c_int);
212impl LCDLineCapStyle {
213  pub const kLineCapStyleButt: LCDLineCapStyle = LCDLineCapStyle(0);
214}
215impl LCDLineCapStyle {
216  pub const kLineCapStyleSquare: LCDLineCapStyle = LCDLineCapStyle(1);
217}
218impl LCDLineCapStyle {
219  pub const kLineCapStyleRound: LCDLineCapStyle = LCDLineCapStyle(2);
220}
221#[repr(transparent)]
222#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
223pub struct LCDLineCapStyle(pub super::ctypes::c_int);
224impl PDStringEncoding {
225  pub const kASCIIEncoding: PDStringEncoding = PDStringEncoding(0);
226}
227impl PDStringEncoding {
228  pub const kUTF8Encoding: PDStringEncoding = PDStringEncoding(1);
229}
230impl PDStringEncoding {
231  pub const k16BitLEEncoding: PDStringEncoding = PDStringEncoding(2);
232}
233#[repr(transparent)]
234#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
235pub struct PDStringEncoding(pub super::ctypes::c_int);
236pub type LCDPattern = [u8; 16usize];
237pub type LCDColor = usize;
238impl LCDPolygonFillRule {
239  pub const kPolygonFillNonZero: LCDPolygonFillRule = LCDPolygonFillRule(0);
240}
241impl LCDPolygonFillRule {
242  pub const kPolygonFillEvenOdd: LCDPolygonFillRule = LCDPolygonFillRule(1);
243}
244#[repr(transparent)]
245#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
246pub struct LCDPolygonFillRule(pub super::ctypes::c_int);
247#[repr(C)]
248#[derive(Debug, Copy, Clone)]
249pub struct LCDBitmap {
250  _unused: [u8; 0],
251}
252#[repr(C)]
253#[derive(Debug, Copy, Clone)]
254pub struct LCDBitmapTable {
255  _unused: [u8; 0],
256}
257#[repr(C)]
258#[derive(Debug, Copy, Clone)]
259pub struct LCDFont {
260  _unused: [u8; 0],
261}
262#[repr(C)]
263#[derive(Debug, Copy, Clone)]
264pub struct LCDFontPage {
265  _unused: [u8; 0],
266}
267#[repr(C)]
268#[derive(Debug, Copy, Clone)]
269pub struct LCDFontGlyph {
270  _unused: [u8; 0],
271}
272#[repr(C)]
273#[derive(Debug, Copy, Clone)]
274pub struct LCDVideoPlayer {
275  _unused: [u8; 0],
276}
277#[repr(C)]
278#[derive(Debug, Copy, Clone)]
279pub struct playdate_video {
280  pub loadVideo: ::core::option::Option<
281    unsafe extern "C" fn(path: *const super::ctypes::c_char) -> *mut LCDVideoPlayer,
282  >,
283  pub freePlayer: ::core::option::Option<unsafe extern "C" fn(p: *mut LCDVideoPlayer)>,
284  pub setContext: ::core::option::Option<
285    unsafe extern "C" fn(p: *mut LCDVideoPlayer, context: *mut LCDBitmap) -> super::ctypes::c_int,
286  >,
287  pub useScreenContext: ::core::option::Option<unsafe extern "C" fn(p: *mut LCDVideoPlayer)>,
288  pub renderFrame: ::core::option::Option<
289    unsafe extern "C" fn(p: *mut LCDVideoPlayer, n: super::ctypes::c_int) -> super::ctypes::c_int,
290  >,
291  pub getError: ::core::option::Option<
292    unsafe extern "C" fn(p: *mut LCDVideoPlayer) -> *const super::ctypes::c_char,
293  >,
294  pub getInfo: ::core::option::Option<
295    unsafe extern "C" fn(
296      p: *mut LCDVideoPlayer,
297      outWidth: *mut super::ctypes::c_int,
298      outHeight: *mut super::ctypes::c_int,
299      outFrameRate: *mut f32,
300      outFrameCount: *mut super::ctypes::c_int,
301      outCurrentFrame: *mut super::ctypes::c_int,
302    ),
303  >,
304  pub getContext:
305    ::core::option::Option<unsafe extern "C" fn(p: *mut LCDVideoPlayer) -> *mut LCDBitmap>,
306}
307#[test]
308fn bindgen_test_layout_playdate_video() {
309  assert_eq!(
310    ::core::mem::size_of::<playdate_video>(),
311    64usize,
312    concat!("Size of: ", stringify!(playdate_video))
313  );
314  assert_eq!(
315    ::core::mem::align_of::<playdate_video>(),
316    8usize,
317    concat!("Alignment of ", stringify!(playdate_video))
318  );
319  assert_eq!(
320    unsafe { &(*(::core::ptr::null::<playdate_video>())).loadVideo as *const _ as usize },
321    0usize,
322    concat!(
323      "Offset of field: ",
324      stringify!(playdate_video),
325      "::",
326      stringify!(loadVideo)
327    )
328  );
329  assert_eq!(
330    unsafe { &(*(::core::ptr::null::<playdate_video>())).freePlayer as *const _ as usize },
331    8usize,
332    concat!(
333      "Offset of field: ",
334      stringify!(playdate_video),
335      "::",
336      stringify!(freePlayer)
337    )
338  );
339  assert_eq!(
340    unsafe { &(*(::core::ptr::null::<playdate_video>())).setContext as *const _ as usize },
341    16usize,
342    concat!(
343      "Offset of field: ",
344      stringify!(playdate_video),
345      "::",
346      stringify!(setContext)
347    )
348  );
349  assert_eq!(
350    unsafe { &(*(::core::ptr::null::<playdate_video>())).useScreenContext as *const _ as usize },
351    24usize,
352    concat!(
353      "Offset of field: ",
354      stringify!(playdate_video),
355      "::",
356      stringify!(useScreenContext)
357    )
358  );
359  assert_eq!(
360    unsafe { &(*(::core::ptr::null::<playdate_video>())).renderFrame as *const _ as usize },
361    32usize,
362    concat!(
363      "Offset of field: ",
364      stringify!(playdate_video),
365      "::",
366      stringify!(renderFrame)
367    )
368  );
369  assert_eq!(
370    unsafe { &(*(::core::ptr::null::<playdate_video>())).getError as *const _ as usize },
371    40usize,
372    concat!(
373      "Offset of field: ",
374      stringify!(playdate_video),
375      "::",
376      stringify!(getError)
377    )
378  );
379  assert_eq!(
380    unsafe { &(*(::core::ptr::null::<playdate_video>())).getInfo as *const _ as usize },
381    48usize,
382    concat!(
383      "Offset of field: ",
384      stringify!(playdate_video),
385      "::",
386      stringify!(getInfo)
387    )
388  );
389  assert_eq!(
390    unsafe { &(*(::core::ptr::null::<playdate_video>())).getContext as *const _ as usize },
391    56usize,
392    concat!(
393      "Offset of field: ",
394      stringify!(playdate_video),
395      "::",
396      stringify!(getContext)
397    )
398  );
399}
400#[repr(C)]
401#[derive(Debug, Copy, Clone)]
402pub struct playdate_graphics {
403  pub video: *const playdate_video,
404  pub clear: ::core::option::Option<unsafe extern "C" fn(color: LCDColor)>,
405  pub setBackgroundColor: ::core::option::Option<unsafe extern "C" fn(color: LCDSolidColor)>,
406  pub setStencil: ::core::option::Option<unsafe extern "C" fn(stencil: *mut LCDBitmap)>,
407  pub setDrawMode: ::core::option::Option<unsafe extern "C" fn(mode: LCDBitmapDrawMode)>,
408  pub setDrawOffset: ::core::option::Option<
409    unsafe extern "C" fn(dx: super::ctypes::c_int, dy: super::ctypes::c_int),
410  >,
411  pub setClipRect: ::core::option::Option<
412    unsafe extern "C" fn(
413      x: super::ctypes::c_int,
414      y: super::ctypes::c_int,
415      width: super::ctypes::c_int,
416      height: super::ctypes::c_int,
417    ),
418  >,
419  pub clearClipRect: ::core::option::Option<unsafe extern "C" fn()>,
420  pub setLineCapStyle: ::core::option::Option<unsafe extern "C" fn(endCapStyle: LCDLineCapStyle)>,
421  pub setFont: ::core::option::Option<unsafe extern "C" fn(font: *mut LCDFont)>,
422  pub setTextTracking: ::core::option::Option<unsafe extern "C" fn(tracking: super::ctypes::c_int)>,
423  pub pushContext: ::core::option::Option<unsafe extern "C" fn(target: *mut LCDBitmap)>,
424  pub popContext: ::core::option::Option<unsafe extern "C" fn()>,
425  pub drawBitmap: ::core::option::Option<
426    unsafe extern "C" fn(
427      bitmap: *mut LCDBitmap,
428      x: super::ctypes::c_int,
429      y: super::ctypes::c_int,
430      flip: LCDBitmapFlip,
431    ),
432  >,
433  pub tileBitmap: ::core::option::Option<
434    unsafe extern "C" fn(
435      bitmap: *mut LCDBitmap,
436      x: super::ctypes::c_int,
437      y: super::ctypes::c_int,
438      width: super::ctypes::c_int,
439      height: super::ctypes::c_int,
440      flip: LCDBitmapFlip,
441    ),
442  >,
443  pub drawLine: ::core::option::Option<
444    unsafe extern "C" fn(
445      x1: super::ctypes::c_int,
446      y1: super::ctypes::c_int,
447      x2: super::ctypes::c_int,
448      y2: super::ctypes::c_int,
449      width: super::ctypes::c_int,
450      color: LCDColor,
451    ),
452  >,
453  pub fillTriangle: ::core::option::Option<
454    unsafe extern "C" fn(
455      x1: super::ctypes::c_int,
456      y1: super::ctypes::c_int,
457      x2: super::ctypes::c_int,
458      y2: super::ctypes::c_int,
459      x3: super::ctypes::c_int,
460      y3: super::ctypes::c_int,
461      color: LCDColor,
462    ),
463  >,
464  pub drawRect: ::core::option::Option<
465    unsafe extern "C" fn(
466      x: super::ctypes::c_int,
467      y: super::ctypes::c_int,
468      width: super::ctypes::c_int,
469      height: super::ctypes::c_int,
470      color: LCDColor,
471    ),
472  >,
473  pub fillRect: ::core::option::Option<
474    unsafe extern "C" fn(
475      x: super::ctypes::c_int,
476      y: super::ctypes::c_int,
477      width: super::ctypes::c_int,
478      height: super::ctypes::c_int,
479      color: LCDColor,
480    ),
481  >,
482  pub drawEllipse: ::core::option::Option<
483    unsafe extern "C" fn(
484      x: super::ctypes::c_int,
485      y: super::ctypes::c_int,
486      width: super::ctypes::c_int,
487      height: super::ctypes::c_int,
488      lineWidth: super::ctypes::c_int,
489      startAngle: f32,
490      endAngle: f32,
491      color: LCDColor,
492    ),
493  >,
494  pub fillEllipse: ::core::option::Option<
495    unsafe extern "C" fn(
496      x: super::ctypes::c_int,
497      y: super::ctypes::c_int,
498      width: super::ctypes::c_int,
499      height: super::ctypes::c_int,
500      startAngle: f32,
501      endAngle: f32,
502      color: LCDColor,
503    ),
504  >,
505  pub drawScaledBitmap: ::core::option::Option<
506    unsafe extern "C" fn(
507      bitmap: *mut LCDBitmap,
508      x: super::ctypes::c_int,
509      y: super::ctypes::c_int,
510      xscale: f32,
511      yscale: f32,
512    ),
513  >,
514  pub drawText: ::core::option::Option<
515    unsafe extern "C" fn(
516      text: *const super::ctypes::c_void,
517      len: size_t,
518      encoding: PDStringEncoding,
519      x: super::ctypes::c_int,
520      y: super::ctypes::c_int,
521    ) -> super::ctypes::c_int,
522  >,
523  pub newBitmap: ::core::option::Option<
524    unsafe extern "C" fn(
525      width: super::ctypes::c_int,
526      height: super::ctypes::c_int,
527      bgcolor: LCDColor,
528    ) -> *mut LCDBitmap,
529  >,
530  pub freeBitmap: ::core::option::Option<unsafe extern "C" fn(arg1: *mut LCDBitmap)>,
531  pub loadBitmap: ::core::option::Option<
532    unsafe extern "C" fn(
533      path: *const super::ctypes::c_char,
534      outerr: *mut *const super::ctypes::c_char,
535    ) -> *mut LCDBitmap,
536  >,
537  pub copyBitmap:
538    ::core::option::Option<unsafe extern "C" fn(bitmap: *mut LCDBitmap) -> *mut LCDBitmap>,
539  pub loadIntoBitmap: ::core::option::Option<
540    unsafe extern "C" fn(
541      path: *const super::ctypes::c_char,
542      bitmap: *mut LCDBitmap,
543      outerr: *mut *const super::ctypes::c_char,
544    ),
545  >,
546  pub getBitmapData: ::core::option::Option<
547    unsafe extern "C" fn(
548      bitmap: *mut LCDBitmap,
549      width: *mut super::ctypes::c_int,
550      height: *mut super::ctypes::c_int,
551      rowbytes: *mut super::ctypes::c_int,
552      hasmask: *mut super::ctypes::c_int,
553      data: *mut *mut u8,
554    ),
555  >,
556  pub clearBitmap:
557    ::core::option::Option<unsafe extern "C" fn(bitmap: *mut LCDBitmap, bgcolor: LCDColor)>,
558  pub rotatedBitmap: ::core::option::Option<
559    unsafe extern "C" fn(
560      bitmap: *mut LCDBitmap,
561      rotation: f32,
562      xscale: f32,
563      yscale: f32,
564      allocedSize: *mut super::ctypes::c_int,
565    ) -> *mut LCDBitmap,
566  >,
567  pub newBitmapTable: ::core::option::Option<
568    unsafe extern "C" fn(
569      count: super::ctypes::c_int,
570      width: super::ctypes::c_int,
571      height: super::ctypes::c_int,
572    ) -> *mut LCDBitmapTable,
573  >,
574  pub freeBitmapTable: ::core::option::Option<unsafe extern "C" fn(table: *mut LCDBitmapTable)>,
575  pub loadBitmapTable: ::core::option::Option<
576    unsafe extern "C" fn(
577      path: *const super::ctypes::c_char,
578      outerr: *mut *const super::ctypes::c_char,
579    ) -> *mut LCDBitmapTable,
580  >,
581  pub loadIntoBitmapTable: ::core::option::Option<
582    unsafe extern "C" fn(
583      path: *const super::ctypes::c_char,
584      table: *mut LCDBitmapTable,
585      outerr: *mut *const super::ctypes::c_char,
586    ),
587  >,
588  pub getTableBitmap: ::core::option::Option<
589    unsafe extern "C" fn(table: *mut LCDBitmapTable, idx: super::ctypes::c_int) -> *mut LCDBitmap,
590  >,
591  pub loadFont: ::core::option::Option<
592    unsafe extern "C" fn(
593      path: *const super::ctypes::c_char,
594      outErr: *mut *const super::ctypes::c_char,
595    ) -> *mut LCDFont,
596  >,
597  pub getFontPage:
598    ::core::option::Option<unsafe extern "C" fn(font: *mut LCDFont, c: u32) -> *mut LCDFontPage>,
599  pub getPageGlyph: ::core::option::Option<
600    unsafe extern "C" fn(
601      page: *mut LCDFontPage,
602      c: u32,
603      bitmap: *mut *mut LCDBitmap,
604      advance: *mut super::ctypes::c_int,
605    ) -> *mut LCDFontGlyph,
606  >,
607  pub getGlyphKerning: ::core::option::Option<
608    unsafe extern "C" fn(
609      glyph: *mut LCDFontGlyph,
610      glyphcode: u32,
611      nextcode: u32,
612    ) -> super::ctypes::c_int,
613  >,
614  pub getTextWidth: ::core::option::Option<
615    unsafe extern "C" fn(
616      font: *mut LCDFont,
617      text: *const super::ctypes::c_void,
618      len: size_t,
619      encoding: PDStringEncoding,
620      tracking: super::ctypes::c_int,
621    ) -> super::ctypes::c_int,
622  >,
623  pub getFrame: ::core::option::Option<unsafe extern "C" fn() -> *mut u8>,
624  pub getDisplayFrame: ::core::option::Option<unsafe extern "C" fn() -> *mut u8>,
625  pub getDebugBitmap: ::core::option::Option<unsafe extern "C" fn() -> *mut LCDBitmap>,
626  pub copyFrameBufferBitmap: ::core::option::Option<unsafe extern "C" fn() -> *mut LCDBitmap>,
627  pub markUpdatedRows: ::core::option::Option<
628    unsafe extern "C" fn(start: super::ctypes::c_int, end: super::ctypes::c_int),
629  >,
630  pub display: ::core::option::Option<unsafe extern "C" fn()>,
631  pub setColorToPattern: ::core::option::Option<
632    unsafe extern "C" fn(
633      color: *mut LCDColor,
634      bitmap: *mut LCDBitmap,
635      x: super::ctypes::c_int,
636      y: super::ctypes::c_int,
637    ),
638  >,
639  pub checkMaskCollision: ::core::option::Option<
640    unsafe extern "C" fn(
641      bitmap1: *mut LCDBitmap,
642      x1: super::ctypes::c_int,
643      y1: super::ctypes::c_int,
644      flip1: LCDBitmapFlip,
645      bitmap2: *mut LCDBitmap,
646      x2: super::ctypes::c_int,
647      y2: super::ctypes::c_int,
648      flip2: LCDBitmapFlip,
649      rect: LCDRect,
650    ) -> super::ctypes::c_int,
651  >,
652  pub setScreenClipRect: ::core::option::Option<
653    unsafe extern "C" fn(
654      x: super::ctypes::c_int,
655      y: super::ctypes::c_int,
656      width: super::ctypes::c_int,
657      height: super::ctypes::c_int,
658    ),
659  >,
660  pub fillPolygon: ::core::option::Option<
661    unsafe extern "C" fn(
662      nPoints: super::ctypes::c_int,
663      coords: *mut super::ctypes::c_int,
664      color: LCDColor,
665      fillrule: LCDPolygonFillRule,
666    ),
667  >,
668  pub getFontHeight: ::core::option::Option<unsafe extern "C" fn(font: *mut LCDFont) -> u8>,
669  pub getDisplayBufferBitmap: ::core::option::Option<unsafe extern "C" fn() -> *mut LCDBitmap>,
670  pub drawRotatedBitmap: ::core::option::Option<
671    unsafe extern "C" fn(
672      bitmap: *mut LCDBitmap,
673      x: super::ctypes::c_int,
674      y: super::ctypes::c_int,
675      rotation: f32,
676      centerx: f32,
677      centery: f32,
678      xscale: f32,
679      yscale: f32,
680    ),
681  >,
682  pub setTextLeading:
683    ::core::option::Option<unsafe extern "C" fn(lineHeightAdustment: super::ctypes::c_int)>,
684  pub setBitmapMask: ::core::option::Option<
685    unsafe extern "C" fn(bitmap: *mut LCDBitmap, mask: *mut LCDBitmap) -> super::ctypes::c_int,
686  >,
687  pub getBitmapMask:
688    ::core::option::Option<unsafe extern "C" fn(bitmap: *mut LCDBitmap) -> *mut LCDBitmap>,
689  pub setStencilImage: ::core::option::Option<
690    unsafe extern "C" fn(stencil: *mut LCDBitmap, tile: super::ctypes::c_int),
691  >,
692}
693#[test]
694fn bindgen_test_layout_playdate_graphics() {
695  assert_eq!(
696    ::core::mem::size_of::<playdate_graphics>(),
697    464usize,
698    concat!("Size of: ", stringify!(playdate_graphics))
699  );
700  assert_eq!(
701    ::core::mem::align_of::<playdate_graphics>(),
702    8usize,
703    concat!("Alignment of ", stringify!(playdate_graphics))
704  );
705  assert_eq!(
706    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).video as *const _ as usize },
707    0usize,
708    concat!(
709      "Offset of field: ",
710      stringify!(playdate_graphics),
711      "::",
712      stringify!(video)
713    )
714  );
715  assert_eq!(
716    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).clear as *const _ as usize },
717    8usize,
718    concat!(
719      "Offset of field: ",
720      stringify!(playdate_graphics),
721      "::",
722      stringify!(clear)
723    )
724  );
725  assert_eq!(
726    unsafe {
727      &(*(::core::ptr::null::<playdate_graphics>())).setBackgroundColor as *const _ as usize
728    },
729    16usize,
730    concat!(
731      "Offset of field: ",
732      stringify!(playdate_graphics),
733      "::",
734      stringify!(setBackgroundColor)
735    )
736  );
737  assert_eq!(
738    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).setStencil as *const _ as usize },
739    24usize,
740    concat!(
741      "Offset of field: ",
742      stringify!(playdate_graphics),
743      "::",
744      stringify!(setStencil)
745    )
746  );
747  assert_eq!(
748    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).setDrawMode as *const _ as usize },
749    32usize,
750    concat!(
751      "Offset of field: ",
752      stringify!(playdate_graphics),
753      "::",
754      stringify!(setDrawMode)
755    )
756  );
757  assert_eq!(
758    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).setDrawOffset as *const _ as usize },
759    40usize,
760    concat!(
761      "Offset of field: ",
762      stringify!(playdate_graphics),
763      "::",
764      stringify!(setDrawOffset)
765    )
766  );
767  assert_eq!(
768    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).setClipRect as *const _ as usize },
769    48usize,
770    concat!(
771      "Offset of field: ",
772      stringify!(playdate_graphics),
773      "::",
774      stringify!(setClipRect)
775    )
776  );
777  assert_eq!(
778    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).clearClipRect as *const _ as usize },
779    56usize,
780    concat!(
781      "Offset of field: ",
782      stringify!(playdate_graphics),
783      "::",
784      stringify!(clearClipRect)
785    )
786  );
787  assert_eq!(
788    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).setLineCapStyle as *const _ as usize },
789    64usize,
790    concat!(
791      "Offset of field: ",
792      stringify!(playdate_graphics),
793      "::",
794      stringify!(setLineCapStyle)
795    )
796  );
797  assert_eq!(
798    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).setFont as *const _ as usize },
799    72usize,
800    concat!(
801      "Offset of field: ",
802      stringify!(playdate_graphics),
803      "::",
804      stringify!(setFont)
805    )
806  );
807  assert_eq!(
808    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).setTextTracking as *const _ as usize },
809    80usize,
810    concat!(
811      "Offset of field: ",
812      stringify!(playdate_graphics),
813      "::",
814      stringify!(setTextTracking)
815    )
816  );
817  assert_eq!(
818    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).pushContext as *const _ as usize },
819    88usize,
820    concat!(
821      "Offset of field: ",
822      stringify!(playdate_graphics),
823      "::",
824      stringify!(pushContext)
825    )
826  );
827  assert_eq!(
828    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).popContext as *const _ as usize },
829    96usize,
830    concat!(
831      "Offset of field: ",
832      stringify!(playdate_graphics),
833      "::",
834      stringify!(popContext)
835    )
836  );
837  assert_eq!(
838    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).drawBitmap as *const _ as usize },
839    104usize,
840    concat!(
841      "Offset of field: ",
842      stringify!(playdate_graphics),
843      "::",
844      stringify!(drawBitmap)
845    )
846  );
847  assert_eq!(
848    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).tileBitmap as *const _ as usize },
849    112usize,
850    concat!(
851      "Offset of field: ",
852      stringify!(playdate_graphics),
853      "::",
854      stringify!(tileBitmap)
855    )
856  );
857  assert_eq!(
858    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).drawLine as *const _ as usize },
859    120usize,
860    concat!(
861      "Offset of field: ",
862      stringify!(playdate_graphics),
863      "::",
864      stringify!(drawLine)
865    )
866  );
867  assert_eq!(
868    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).fillTriangle as *const _ as usize },
869    128usize,
870    concat!(
871      "Offset of field: ",
872      stringify!(playdate_graphics),
873      "::",
874      stringify!(fillTriangle)
875    )
876  );
877  assert_eq!(
878    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).drawRect as *const _ as usize },
879    136usize,
880    concat!(
881      "Offset of field: ",
882      stringify!(playdate_graphics),
883      "::",
884      stringify!(drawRect)
885    )
886  );
887  assert_eq!(
888    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).fillRect as *const _ as usize },
889    144usize,
890    concat!(
891      "Offset of field: ",
892      stringify!(playdate_graphics),
893      "::",
894      stringify!(fillRect)
895    )
896  );
897  assert_eq!(
898    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).drawEllipse as *const _ as usize },
899    152usize,
900    concat!(
901      "Offset of field: ",
902      stringify!(playdate_graphics),
903      "::",
904      stringify!(drawEllipse)
905    )
906  );
907  assert_eq!(
908    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).fillEllipse as *const _ as usize },
909    160usize,
910    concat!(
911      "Offset of field: ",
912      stringify!(playdate_graphics),
913      "::",
914      stringify!(fillEllipse)
915    )
916  );
917  assert_eq!(
918    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).drawScaledBitmap as *const _ as usize },
919    168usize,
920    concat!(
921      "Offset of field: ",
922      stringify!(playdate_graphics),
923      "::",
924      stringify!(drawScaledBitmap)
925    )
926  );
927  assert_eq!(
928    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).drawText as *const _ as usize },
929    176usize,
930    concat!(
931      "Offset of field: ",
932      stringify!(playdate_graphics),
933      "::",
934      stringify!(drawText)
935    )
936  );
937  assert_eq!(
938    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).newBitmap as *const _ as usize },
939    184usize,
940    concat!(
941      "Offset of field: ",
942      stringify!(playdate_graphics),
943      "::",
944      stringify!(newBitmap)
945    )
946  );
947  assert_eq!(
948    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).freeBitmap as *const _ as usize },
949    192usize,
950    concat!(
951      "Offset of field: ",
952      stringify!(playdate_graphics),
953      "::",
954      stringify!(freeBitmap)
955    )
956  );
957  assert_eq!(
958    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).loadBitmap as *const _ as usize },
959    200usize,
960    concat!(
961      "Offset of field: ",
962      stringify!(playdate_graphics),
963      "::",
964      stringify!(loadBitmap)
965    )
966  );
967  assert_eq!(
968    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).copyBitmap as *const _ as usize },
969    208usize,
970    concat!(
971      "Offset of field: ",
972      stringify!(playdate_graphics),
973      "::",
974      stringify!(copyBitmap)
975    )
976  );
977  assert_eq!(
978    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).loadIntoBitmap as *const _ as usize },
979    216usize,
980    concat!(
981      "Offset of field: ",
982      stringify!(playdate_graphics),
983      "::",
984      stringify!(loadIntoBitmap)
985    )
986  );
987  assert_eq!(
988    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).getBitmapData as *const _ as usize },
989    224usize,
990    concat!(
991      "Offset of field: ",
992      stringify!(playdate_graphics),
993      "::",
994      stringify!(getBitmapData)
995    )
996  );
997  assert_eq!(
998    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).clearBitmap as *const _ as usize },
999    232usize,
1000    concat!(
1001      "Offset of field: ",
1002      stringify!(playdate_graphics),
1003      "::",
1004      stringify!(clearBitmap)
1005    )
1006  );
1007  assert_eq!(
1008    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).rotatedBitmap as *const _ as usize },
1009    240usize,
1010    concat!(
1011      "Offset of field: ",
1012      stringify!(playdate_graphics),
1013      "::",
1014      stringify!(rotatedBitmap)
1015    )
1016  );
1017  assert_eq!(
1018    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).newBitmapTable as *const _ as usize },
1019    248usize,
1020    concat!(
1021      "Offset of field: ",
1022      stringify!(playdate_graphics),
1023      "::",
1024      stringify!(newBitmapTable)
1025    )
1026  );
1027  assert_eq!(
1028    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).freeBitmapTable as *const _ as usize },
1029    256usize,
1030    concat!(
1031      "Offset of field: ",
1032      stringify!(playdate_graphics),
1033      "::",
1034      stringify!(freeBitmapTable)
1035    )
1036  );
1037  assert_eq!(
1038    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).loadBitmapTable as *const _ as usize },
1039    264usize,
1040    concat!(
1041      "Offset of field: ",
1042      stringify!(playdate_graphics),
1043      "::",
1044      stringify!(loadBitmapTable)
1045    )
1046  );
1047  assert_eq!(
1048    unsafe {
1049      &(*(::core::ptr::null::<playdate_graphics>())).loadIntoBitmapTable as *const _ as usize
1050    },
1051    272usize,
1052    concat!(
1053      "Offset of field: ",
1054      stringify!(playdate_graphics),
1055      "::",
1056      stringify!(loadIntoBitmapTable)
1057    )
1058  );
1059  assert_eq!(
1060    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).getTableBitmap as *const _ as usize },
1061    280usize,
1062    concat!(
1063      "Offset of field: ",
1064      stringify!(playdate_graphics),
1065      "::",
1066      stringify!(getTableBitmap)
1067    )
1068  );
1069  assert_eq!(
1070    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).loadFont as *const _ as usize },
1071    288usize,
1072    concat!(
1073      "Offset of field: ",
1074      stringify!(playdate_graphics),
1075      "::",
1076      stringify!(loadFont)
1077    )
1078  );
1079  assert_eq!(
1080    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).getFontPage as *const _ as usize },
1081    296usize,
1082    concat!(
1083      "Offset of field: ",
1084      stringify!(playdate_graphics),
1085      "::",
1086      stringify!(getFontPage)
1087    )
1088  );
1089  assert_eq!(
1090    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).getPageGlyph as *const _ as usize },
1091    304usize,
1092    concat!(
1093      "Offset of field: ",
1094      stringify!(playdate_graphics),
1095      "::",
1096      stringify!(getPageGlyph)
1097    )
1098  );
1099  assert_eq!(
1100    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).getGlyphKerning as *const _ as usize },
1101    312usize,
1102    concat!(
1103      "Offset of field: ",
1104      stringify!(playdate_graphics),
1105      "::",
1106      stringify!(getGlyphKerning)
1107    )
1108  );
1109  assert_eq!(
1110    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).getTextWidth as *const _ as usize },
1111    320usize,
1112    concat!(
1113      "Offset of field: ",
1114      stringify!(playdate_graphics),
1115      "::",
1116      stringify!(getTextWidth)
1117    )
1118  );
1119  assert_eq!(
1120    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).getFrame as *const _ as usize },
1121    328usize,
1122    concat!(
1123      "Offset of field: ",
1124      stringify!(playdate_graphics),
1125      "::",
1126      stringify!(getFrame)
1127    )
1128  );
1129  assert_eq!(
1130    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).getDisplayFrame as *const _ as usize },
1131    336usize,
1132    concat!(
1133      "Offset of field: ",
1134      stringify!(playdate_graphics),
1135      "::",
1136      stringify!(getDisplayFrame)
1137    )
1138  );
1139  assert_eq!(
1140    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).getDebugBitmap as *const _ as usize },
1141    344usize,
1142    concat!(
1143      "Offset of field: ",
1144      stringify!(playdate_graphics),
1145      "::",
1146      stringify!(getDebugBitmap)
1147    )
1148  );
1149  assert_eq!(
1150    unsafe {
1151      &(*(::core::ptr::null::<playdate_graphics>())).copyFrameBufferBitmap as *const _ as usize
1152    },
1153    352usize,
1154    concat!(
1155      "Offset of field: ",
1156      stringify!(playdate_graphics),
1157      "::",
1158      stringify!(copyFrameBufferBitmap)
1159    )
1160  );
1161  assert_eq!(
1162    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).markUpdatedRows as *const _ as usize },
1163    360usize,
1164    concat!(
1165      "Offset of field: ",
1166      stringify!(playdate_graphics),
1167      "::",
1168      stringify!(markUpdatedRows)
1169    )
1170  );
1171  assert_eq!(
1172    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).display as *const _ as usize },
1173    368usize,
1174    concat!(
1175      "Offset of field: ",
1176      stringify!(playdate_graphics),
1177      "::",
1178      stringify!(display)
1179    )
1180  );
1181  assert_eq!(
1182    unsafe {
1183      &(*(::core::ptr::null::<playdate_graphics>())).setColorToPattern as *const _ as usize
1184    },
1185    376usize,
1186    concat!(
1187      "Offset of field: ",
1188      stringify!(playdate_graphics),
1189      "::",
1190      stringify!(setColorToPattern)
1191    )
1192  );
1193  assert_eq!(
1194    unsafe {
1195      &(*(::core::ptr::null::<playdate_graphics>())).checkMaskCollision as *const _ as usize
1196    },
1197    384usize,
1198    concat!(
1199      "Offset of field: ",
1200      stringify!(playdate_graphics),
1201      "::",
1202      stringify!(checkMaskCollision)
1203    )
1204  );
1205  assert_eq!(
1206    unsafe {
1207      &(*(::core::ptr::null::<playdate_graphics>())).setScreenClipRect as *const _ as usize
1208    },
1209    392usize,
1210    concat!(
1211      "Offset of field: ",
1212      stringify!(playdate_graphics),
1213      "::",
1214      stringify!(setScreenClipRect)
1215    )
1216  );
1217  assert_eq!(
1218    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).fillPolygon as *const _ as usize },
1219    400usize,
1220    concat!(
1221      "Offset of field: ",
1222      stringify!(playdate_graphics),
1223      "::",
1224      stringify!(fillPolygon)
1225    )
1226  );
1227  assert_eq!(
1228    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).getFontHeight as *const _ as usize },
1229    408usize,
1230    concat!(
1231      "Offset of field: ",
1232      stringify!(playdate_graphics),
1233      "::",
1234      stringify!(getFontHeight)
1235    )
1236  );
1237  assert_eq!(
1238    unsafe {
1239      &(*(::core::ptr::null::<playdate_graphics>())).getDisplayBufferBitmap as *const _ as usize
1240    },
1241    416usize,
1242    concat!(
1243      "Offset of field: ",
1244      stringify!(playdate_graphics),
1245      "::",
1246      stringify!(getDisplayBufferBitmap)
1247    )
1248  );
1249  assert_eq!(
1250    unsafe {
1251      &(*(::core::ptr::null::<playdate_graphics>())).drawRotatedBitmap as *const _ as usize
1252    },
1253    424usize,
1254    concat!(
1255      "Offset of field: ",
1256      stringify!(playdate_graphics),
1257      "::",
1258      stringify!(drawRotatedBitmap)
1259    )
1260  );
1261  assert_eq!(
1262    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).setTextLeading as *const _ as usize },
1263    432usize,
1264    concat!(
1265      "Offset of field: ",
1266      stringify!(playdate_graphics),
1267      "::",
1268      stringify!(setTextLeading)
1269    )
1270  );
1271  assert_eq!(
1272    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).setBitmapMask as *const _ as usize },
1273    440usize,
1274    concat!(
1275      "Offset of field: ",
1276      stringify!(playdate_graphics),
1277      "::",
1278      stringify!(setBitmapMask)
1279    )
1280  );
1281  assert_eq!(
1282    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).getBitmapMask as *const _ as usize },
1283    448usize,
1284    concat!(
1285      "Offset of field: ",
1286      stringify!(playdate_graphics),
1287      "::",
1288      stringify!(getBitmapMask)
1289    )
1290  );
1291  assert_eq!(
1292    unsafe { &(*(::core::ptr::null::<playdate_graphics>())).setStencilImage as *const _ as usize },
1293    456usize,
1294    concat!(
1295      "Offset of field: ",
1296      stringify!(playdate_graphics),
1297      "::",
1298      stringify!(setStencilImage)
1299    )
1300  );
1301}
1302impl PDButtons {
1303  pub const kButtonLeft: PDButtons = PDButtons(1);
1304}
1305impl PDButtons {
1306  pub const kButtonRight: PDButtons = PDButtons(2);
1307}
1308impl PDButtons {
1309  pub const kButtonUp: PDButtons = PDButtons(4);
1310}
1311impl PDButtons {
1312  pub const kButtonDown: PDButtons = PDButtons(8);
1313}
1314impl PDButtons {
1315  pub const kButtonB: PDButtons = PDButtons(16);
1316}
1317impl PDButtons {
1318  pub const kButtonA: PDButtons = PDButtons(32);
1319}
1320impl ::core::ops::BitOr<PDButtons> for PDButtons {
1321  type Output = Self;
1322  #[inline]
1323  fn bitor(self, other: Self) -> Self {
1324    PDButtons(self.0 | other.0)
1325  }
1326}
1327impl ::core::ops::BitOrAssign for PDButtons {
1328  #[inline]
1329  fn bitor_assign(&mut self, rhs: PDButtons) {
1330    self.0 |= rhs.0;
1331  }
1332}
1333impl ::core::ops::BitAnd<PDButtons> for PDButtons {
1334  type Output = Self;
1335  #[inline]
1336  fn bitand(self, other: Self) -> Self {
1337    PDButtons(self.0 & other.0)
1338  }
1339}
1340impl ::core::ops::BitAndAssign for PDButtons {
1341  #[inline]
1342  fn bitand_assign(&mut self, rhs: PDButtons) {
1343    self.0 &= rhs.0;
1344  }
1345}
1346#[repr(transparent)]
1347#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
1348pub struct PDButtons(pub super::ctypes::c_int);
1349impl PDLanguage {
1350  pub const kPDLanguageEnglish: PDLanguage = PDLanguage(0);
1351}
1352impl PDLanguage {
1353  pub const kPDLanguageJapanese: PDLanguage = PDLanguage(1);
1354}
1355impl PDLanguage {
1356  pub const kPDLanguageUnknown: PDLanguage = PDLanguage(2);
1357}
1358#[repr(transparent)]
1359#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
1360pub struct PDLanguage(pub super::ctypes::c_int);
1361#[repr(C)]
1362#[derive(Debug, Copy, Clone)]
1363pub struct PDMenuItem {
1364  _unused: [u8; 0],
1365}
1366impl PDPeripherals {
1367  pub const kNone: PDPeripherals = PDPeripherals(0);
1368}
1369impl PDPeripherals {
1370  pub const kAccelerometer: PDPeripherals = PDPeripherals(1);
1371}
1372impl PDPeripherals {
1373  pub const kAllPeripherals: PDPeripherals = PDPeripherals(65535);
1374}
1375impl ::core::ops::BitOr<PDPeripherals> for PDPeripherals {
1376  type Output = Self;
1377  #[inline]
1378  fn bitor(self, other: Self) -> Self {
1379    PDPeripherals(self.0 | other.0)
1380  }
1381}
1382impl ::core::ops::BitOrAssign for PDPeripherals {
1383  #[inline]
1384  fn bitor_assign(&mut self, rhs: PDPeripherals) {
1385    self.0 |= rhs.0;
1386  }
1387}
1388impl ::core::ops::BitAnd<PDPeripherals> for PDPeripherals {
1389  type Output = Self;
1390  #[inline]
1391  fn bitand(self, other: Self) -> Self {
1392    PDPeripherals(self.0 & other.0)
1393  }
1394}
1395impl ::core::ops::BitAndAssign for PDPeripherals {
1396  #[inline]
1397  fn bitand_assign(&mut self, rhs: PDPeripherals) {
1398    self.0 &= rhs.0;
1399  }
1400}
1401#[repr(transparent)]
1402#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
1403pub struct PDPeripherals(pub super::ctypes::c_int);
1404pub type PDCallbackFunction = ::core::option::Option<
1405  unsafe extern "C" fn(userdata: *mut super::ctypes::c_void) -> super::ctypes::c_int,
1406>;
1407pub type PDMenuItemCallbackFunction =
1408  ::core::option::Option<unsafe extern "C" fn(userdata: *mut super::ctypes::c_void)>;
1409#[repr(C)]
1410#[derive(Debug, Copy, Clone)]
1411pub struct playdate_sys {
1412  pub realloc: ::core::option::Option<
1413    unsafe extern "C" fn(
1414      ptr: *mut super::ctypes::c_void,
1415      size: size_t,
1416    ) -> *mut super::ctypes::c_void,
1417  >,
1418  pub formatString: ::core::option::Option<
1419    unsafe extern "C" fn(
1420      ret: *mut *mut super::ctypes::c_char,
1421      fmt: *const super::ctypes::c_char,
1422      ...
1423    ) -> super::ctypes::c_int,
1424  >,
1425  pub logToConsole:
1426    ::core::option::Option<unsafe extern "C" fn(fmt: *const super::ctypes::c_char, ...)>,
1427  pub error: ::core::option::Option<unsafe extern "C" fn(fmt: *const super::ctypes::c_char, ...)>,
1428  pub getLanguage: ::core::option::Option<unsafe extern "C" fn() -> PDLanguage>,
1429  pub getCurrentTimeMilliseconds:
1430    ::core::option::Option<unsafe extern "C" fn() -> super::ctypes::c_uint>,
1431  pub getSecondsSinceEpoch: ::core::option::Option<
1432    unsafe extern "C" fn(milliseconds: *mut super::ctypes::c_uint) -> super::ctypes::c_uint,
1433  >,
1434  pub drawFPS:
1435    ::core::option::Option<unsafe extern "C" fn(x: super::ctypes::c_int, y: super::ctypes::c_int)>,
1436  pub setUpdateCallback: ::core::option::Option<
1437    unsafe extern "C" fn(update: PDCallbackFunction, userdata: *mut super::ctypes::c_void),
1438  >,
1439  pub getButtonState: ::core::option::Option<
1440    unsafe extern "C" fn(current: *mut PDButtons, pushed: *mut PDButtons, released: *mut PDButtons),
1441  >,
1442  pub setPeripheralsEnabled: ::core::option::Option<unsafe extern "C" fn(mask: PDPeripherals)>,
1443  pub getAccelerometer:
1444    ::core::option::Option<unsafe extern "C" fn(outx: *mut f32, outy: *mut f32, outz: *mut f32)>,
1445  pub getCrankChange: ::core::option::Option<unsafe extern "C" fn() -> f32>,
1446  pub getCrankAngle: ::core::option::Option<unsafe extern "C" fn() -> f32>,
1447  pub isCrankDocked: ::core::option::Option<unsafe extern "C" fn() -> super::ctypes::c_int>,
1448  pub setCrankSoundsDisabled: ::core::option::Option<
1449    unsafe extern "C" fn(flag: super::ctypes::c_int) -> super::ctypes::c_int,
1450  >,
1451  pub getFlipped: ::core::option::Option<unsafe extern "C" fn() -> super::ctypes::c_int>,
1452  pub setAutoLockDisabled:
1453    ::core::option::Option<unsafe extern "C" fn(disable: super::ctypes::c_int)>,
1454  pub setMenuImage: ::core::option::Option<
1455    unsafe extern "C" fn(bitmap: *mut LCDBitmap, xOffset: super::ctypes::c_int),
1456  >,
1457  pub addMenuItem: ::core::option::Option<
1458    unsafe extern "C" fn(
1459      title: *const super::ctypes::c_char,
1460      callback: PDMenuItemCallbackFunction,
1461      userdata: *mut super::ctypes::c_void,
1462    ) -> *mut PDMenuItem,
1463  >,
1464  pub addCheckmarkMenuItem: ::core::option::Option<
1465    unsafe extern "C" fn(
1466      title: *const super::ctypes::c_char,
1467      value: super::ctypes::c_int,
1468      callback: PDMenuItemCallbackFunction,
1469      userdata: *mut super::ctypes::c_void,
1470    ) -> *mut PDMenuItem,
1471  >,
1472  pub addOptionsMenuItem: ::core::option::Option<
1473    unsafe extern "C" fn(
1474      title: *const super::ctypes::c_char,
1475      optionTitles: *mut *const super::ctypes::c_char,
1476      optionsCount: super::ctypes::c_int,
1477      f: PDMenuItemCallbackFunction,
1478      userdata: *mut super::ctypes::c_void,
1479    ) -> *mut PDMenuItem,
1480  >,
1481  pub removeAllMenuItems: ::core::option::Option<unsafe extern "C" fn()>,
1482  pub removeMenuItem: ::core::option::Option<unsafe extern "C" fn(menuItem: *mut PDMenuItem)>,
1483  pub getMenuItemValue:
1484    ::core::option::Option<unsafe extern "C" fn(menuItem: *mut PDMenuItem) -> super::ctypes::c_int>,
1485  pub setMenuItemValue: ::core::option::Option<
1486    unsafe extern "C" fn(menuItem: *mut PDMenuItem, value: super::ctypes::c_int),
1487  >,
1488  pub getMenuItemTitle: ::core::option::Option<
1489    unsafe extern "C" fn(menuItem: *mut PDMenuItem) -> *const super::ctypes::c_char,
1490  >,
1491  pub setMenuItemTitle: ::core::option::Option<
1492    unsafe extern "C" fn(menuItem: *mut PDMenuItem, title: *const super::ctypes::c_char),
1493  >,
1494  pub getMenuItemUserdata: ::core::option::Option<
1495    unsafe extern "C" fn(menuItem: *mut PDMenuItem) -> *mut super::ctypes::c_void,
1496  >,
1497  pub setMenuItemUserdata: ::core::option::Option<
1498    unsafe extern "C" fn(menuItem: *mut PDMenuItem, ud: *mut super::ctypes::c_void),
1499  >,
1500  pub getReduceFlashing: ::core::option::Option<unsafe extern "C" fn() -> super::ctypes::c_int>,
1501  pub getElapsedTime: ::core::option::Option<unsafe extern "C" fn() -> f32>,
1502  pub resetElapsedTime: ::core::option::Option<unsafe extern "C" fn()>,
1503  pub getBatteryPercentage: ::core::option::Option<unsafe extern "C" fn() -> f32>,
1504  pub getBatteryVoltage: ::core::option::Option<unsafe extern "C" fn() -> f32>,
1505}
1506#[test]
1507fn bindgen_test_layout_playdate_sys() {
1508  assert_eq!(
1509    ::core::mem::size_of::<playdate_sys>(),
1510    280usize,
1511    concat!("Size of: ", stringify!(playdate_sys))
1512  );
1513  assert_eq!(
1514    ::core::mem::align_of::<playdate_sys>(),
1515    8usize,
1516    concat!("Alignment of ", stringify!(playdate_sys))
1517  );
1518  assert_eq!(
1519    unsafe { &(*(::core::ptr::null::<playdate_sys>())).realloc as *const _ as usize },
1520    0usize,
1521    concat!(
1522      "Offset of field: ",
1523      stringify!(playdate_sys),
1524      "::",
1525      stringify!(realloc)
1526    )
1527  );
1528  assert_eq!(
1529    unsafe { &(*(::core::ptr::null::<playdate_sys>())).formatString as *const _ as usize },
1530    8usize,
1531    concat!(
1532      "Offset of field: ",
1533      stringify!(playdate_sys),
1534      "::",
1535      stringify!(formatString)
1536    )
1537  );
1538  assert_eq!(
1539    unsafe { &(*(::core::ptr::null::<playdate_sys>())).logToConsole as *const _ as usize },
1540    16usize,
1541    concat!(
1542      "Offset of field: ",
1543      stringify!(playdate_sys),
1544      "::",
1545      stringify!(logToConsole)
1546    )
1547  );
1548  assert_eq!(
1549    unsafe { &(*(::core::ptr::null::<playdate_sys>())).error as *const _ as usize },
1550    24usize,
1551    concat!(
1552      "Offset of field: ",
1553      stringify!(playdate_sys),
1554      "::",
1555      stringify!(error)
1556    )
1557  );
1558  assert_eq!(
1559    unsafe { &(*(::core::ptr::null::<playdate_sys>())).getLanguage as *const _ as usize },
1560    32usize,
1561    concat!(
1562      "Offset of field: ",
1563      stringify!(playdate_sys),
1564      "::",
1565      stringify!(getLanguage)
1566    )
1567  );
1568  assert_eq!(
1569    unsafe {
1570      &(*(::core::ptr::null::<playdate_sys>())).getCurrentTimeMilliseconds as *const _ as usize
1571    },
1572    40usize,
1573    concat!(
1574      "Offset of field: ",
1575      stringify!(playdate_sys),
1576      "::",
1577      stringify!(getCurrentTimeMilliseconds)
1578    )
1579  );
1580  assert_eq!(
1581    unsafe { &(*(::core::ptr::null::<playdate_sys>())).getSecondsSinceEpoch as *const _ as usize },
1582    48usize,
1583    concat!(
1584      "Offset of field: ",
1585      stringify!(playdate_sys),
1586      "::",
1587      stringify!(getSecondsSinceEpoch)
1588    )
1589  );
1590  assert_eq!(
1591    unsafe { &(*(::core::ptr::null::<playdate_sys>())).drawFPS as *const _ as usize },
1592    56usize,
1593    concat!(
1594      "Offset of field: ",
1595      stringify!(playdate_sys),
1596      "::",
1597      stringify!(drawFPS)
1598    )
1599  );
1600  assert_eq!(
1601    unsafe { &(*(::core::ptr::null::<playdate_sys>())).setUpdateCallback as *const _ as usize },
1602    64usize,
1603    concat!(
1604      "Offset of field: ",
1605      stringify!(playdate_sys),
1606      "::",
1607      stringify!(setUpdateCallback)
1608    )
1609  );
1610  assert_eq!(
1611    unsafe { &(*(::core::ptr::null::<playdate_sys>())).getButtonState as *const _ as usize },
1612    72usize,
1613    concat!(
1614      "Offset of field: ",
1615      stringify!(playdate_sys),
1616      "::",
1617      stringify!(getButtonState)
1618    )
1619  );
1620  assert_eq!(
1621    unsafe { &(*(::core::ptr::null::<playdate_sys>())).setPeripheralsEnabled as *const _ as usize },
1622    80usize,
1623    concat!(
1624      "Offset of field: ",
1625      stringify!(playdate_sys),
1626      "::",
1627      stringify!(setPeripheralsEnabled)
1628    )
1629  );
1630  assert_eq!(
1631    unsafe { &(*(::core::ptr::null::<playdate_sys>())).getAccelerometer as *const _ as usize },
1632    88usize,
1633    concat!(
1634      "Offset of field: ",
1635      stringify!(playdate_sys),
1636      "::",
1637      stringify!(getAccelerometer)
1638    )
1639  );
1640  assert_eq!(
1641    unsafe { &(*(::core::ptr::null::<playdate_sys>())).getCrankChange as *const _ as usize },
1642    96usize,
1643    concat!(
1644      "Offset of field: ",
1645      stringify!(playdate_sys),
1646      "::",
1647      stringify!(getCrankChange)
1648    )
1649  );
1650  assert_eq!(
1651    unsafe { &(*(::core::ptr::null::<playdate_sys>())).getCrankAngle as *const _ as usize },
1652    104usize,
1653    concat!(
1654      "Offset of field: ",
1655      stringify!(playdate_sys),
1656      "::",
1657      stringify!(getCrankAngle)
1658    )
1659  );
1660  assert_eq!(
1661    unsafe { &(*(::core::ptr::null::<playdate_sys>())).isCrankDocked as *const _ as usize },
1662    112usize,
1663    concat!(
1664      "Offset of field: ",
1665      stringify!(playdate_sys),
1666      "::",
1667      stringify!(isCrankDocked)
1668    )
1669  );
1670  assert_eq!(
1671    unsafe {
1672      &(*(::core::ptr::null::<playdate_sys>())).setCrankSoundsDisabled as *const _ as usize
1673    },
1674    120usize,
1675    concat!(
1676      "Offset of field: ",
1677      stringify!(playdate_sys),
1678      "::",
1679      stringify!(setCrankSoundsDisabled)
1680    )
1681  );
1682  assert_eq!(
1683    unsafe { &(*(::core::ptr::null::<playdate_sys>())).getFlipped as *const _ as usize },
1684    128usize,
1685    concat!(
1686      "Offset of field: ",
1687      stringify!(playdate_sys),
1688      "::",
1689      stringify!(getFlipped)
1690    )
1691  );
1692  assert_eq!(
1693    unsafe { &(*(::core::ptr::null::<playdate_sys>())).setAutoLockDisabled as *const _ as usize },
1694    136usize,
1695    concat!(
1696      "Offset of field: ",
1697      stringify!(playdate_sys),
1698      "::",
1699      stringify!(setAutoLockDisabled)
1700    )
1701  );
1702  assert_eq!(
1703    unsafe { &(*(::core::ptr::null::<playdate_sys>())).setMenuImage as *const _ as usize },
1704    144usize,
1705    concat!(
1706      "Offset of field: ",
1707      stringify!(playdate_sys),
1708      "::",
1709      stringify!(setMenuImage)
1710    )
1711  );
1712  assert_eq!(
1713    unsafe { &(*(::core::ptr::null::<playdate_sys>())).addMenuItem as *const _ as usize },
1714    152usize,
1715    concat!(
1716      "Offset of field: ",
1717      stringify!(playdate_sys),
1718      "::",
1719      stringify!(addMenuItem)
1720    )
1721  );
1722  assert_eq!(
1723    unsafe { &(*(::core::ptr::null::<playdate_sys>())).addCheckmarkMenuItem as *const _ as usize },
1724    160usize,
1725    concat!(
1726      "Offset of field: ",
1727      stringify!(playdate_sys),
1728      "::",
1729      stringify!(addCheckmarkMenuItem)
1730    )
1731  );
1732  assert_eq!(
1733    unsafe { &(*(::core::ptr::null::<playdate_sys>())).addOptionsMenuItem as *const _ as usize },
1734    168usize,
1735    concat!(
1736      "Offset of field: ",
1737      stringify!(playdate_sys),
1738      "::",
1739      stringify!(addOptionsMenuItem)
1740    )
1741  );
1742  assert_eq!(
1743    unsafe { &(*(::core::ptr::null::<playdate_sys>())).removeAllMenuItems as *const _ as usize },
1744    176usize,
1745    concat!(
1746      "Offset of field: ",
1747      stringify!(playdate_sys),
1748      "::",
1749      stringify!(removeAllMenuItems)
1750    )
1751  );
1752  assert_eq!(
1753    unsafe { &(*(::core::ptr::null::<playdate_sys>())).removeMenuItem as *const _ as usize },
1754    184usize,
1755    concat!(
1756      "Offset of field: ",
1757      stringify!(playdate_sys),
1758      "::",
1759      stringify!(removeMenuItem)
1760    )
1761  );
1762  assert_eq!(
1763    unsafe { &(*(::core::ptr::null::<playdate_sys>())).getMenuItemValue as *const _ as usize },
1764    192usize,
1765    concat!(
1766      "Offset of field: ",
1767      stringify!(playdate_sys),
1768      "::",
1769      stringify!(getMenuItemValue)
1770    )
1771  );
1772  assert_eq!(
1773    unsafe { &(*(::core::ptr::null::<playdate_sys>())).setMenuItemValue as *const _ as usize },
1774    200usize,
1775    concat!(
1776      "Offset of field: ",
1777      stringify!(playdate_sys),
1778      "::",
1779      stringify!(setMenuItemValue)
1780    )
1781  );
1782  assert_eq!(
1783    unsafe { &(*(::core::ptr::null::<playdate_sys>())).getMenuItemTitle as *const _ as usize },
1784    208usize,
1785    concat!(
1786      "Offset of field: ",
1787      stringify!(playdate_sys),
1788      "::",
1789      stringify!(getMenuItemTitle)
1790    )
1791  );
1792  assert_eq!(
1793    unsafe { &(*(::core::ptr::null::<playdate_sys>())).setMenuItemTitle as *const _ as usize },
1794    216usize,
1795    concat!(
1796      "Offset of field: ",
1797      stringify!(playdate_sys),
1798      "::",
1799      stringify!(setMenuItemTitle)
1800    )
1801  );
1802  assert_eq!(
1803    unsafe { &(*(::core::ptr::null::<playdate_sys>())).getMenuItemUserdata as *const _ as usize },
1804    224usize,
1805    concat!(
1806      "Offset of field: ",
1807      stringify!(playdate_sys),
1808      "::",
1809      stringify!(getMenuItemUserdata)
1810    )
1811  );
1812  assert_eq!(
1813    unsafe { &(*(::core::ptr::null::<playdate_sys>())).setMenuItemUserdata as *const _ as usize },
1814    232usize,
1815    concat!(
1816      "Offset of field: ",
1817      stringify!(playdate_sys),
1818      "::",
1819      stringify!(setMenuItemUserdata)
1820    )
1821  );
1822  assert_eq!(
1823    unsafe { &(*(::core::ptr::null::<playdate_sys>())).getReduceFlashing as *const _ as usize },
1824    240usize,
1825    concat!(
1826      "Offset of field: ",
1827      stringify!(playdate_sys),
1828      "::",
1829      stringify!(getReduceFlashing)
1830    )
1831  );
1832  assert_eq!(
1833    unsafe { &(*(::core::ptr::null::<playdate_sys>())).getElapsedTime as *const _ as usize },
1834    248usize,
1835    concat!(
1836      "Offset of field: ",
1837      stringify!(playdate_sys),
1838      "::",
1839      stringify!(getElapsedTime)
1840    )
1841  );
1842  assert_eq!(
1843    unsafe { &(*(::core::ptr::null::<playdate_sys>())).resetElapsedTime as *const _ as usize },
1844    256usize,
1845    concat!(
1846      "Offset of field: ",
1847      stringify!(playdate_sys),
1848      "::",
1849      stringify!(resetElapsedTime)
1850    )
1851  );
1852  assert_eq!(
1853    unsafe { &(*(::core::ptr::null::<playdate_sys>())).getBatteryPercentage as *const _ as usize },
1854    264usize,
1855    concat!(
1856      "Offset of field: ",
1857      stringify!(playdate_sys),
1858      "::",
1859      stringify!(getBatteryPercentage)
1860    )
1861  );
1862  assert_eq!(
1863    unsafe { &(*(::core::ptr::null::<playdate_sys>())).getBatteryVoltage as *const _ as usize },
1864    272usize,
1865    concat!(
1866      "Offset of field: ",
1867      stringify!(playdate_sys),
1868      "::",
1869      stringify!(getBatteryVoltage)
1870    )
1871  );
1872}
1873pub type lua_State = *mut super::ctypes::c_void;
1874pub type lua_CFunction =
1875  ::core::option::Option<unsafe extern "C" fn(L: *mut lua_State) -> super::ctypes::c_int>;
1876#[repr(C)]
1877#[derive(Copy, Clone)]
1878pub struct luaL_Val {
1879  pub name: *const super::ctypes::c_char,
1880  pub type_: luaL_Val__bindgen_ty_1,
1881  pub v: luaL_Val__bindgen_ty_2,
1882}
1883pub const luaL_Val_kInt: super::ctypes::c_int = 0;
1884pub const luaL_Val_kFloat: super::ctypes::c_int = 1;
1885pub const luaL_Val_kStr: super::ctypes::c_int = 2;
1886pub type luaL_Val__bindgen_ty_1 = super::ctypes::c_int;
1887#[repr(C)]
1888#[derive(Copy, Clone)]
1889pub union luaL_Val__bindgen_ty_2 {
1890  pub intval: super::ctypes::c_uint,
1891  pub floatval: f32,
1892  pub strval: *const super::ctypes::c_char,
1893}
1894#[test]
1895fn bindgen_test_layout_luaL_Val__bindgen_ty_2() {
1896  assert_eq!(
1897    ::core::mem::size_of::<luaL_Val__bindgen_ty_2>(),
1898    8usize,
1899    concat!("Size of: ", stringify!(luaL_Val__bindgen_ty_2))
1900  );
1901  assert_eq!(
1902    ::core::mem::align_of::<luaL_Val__bindgen_ty_2>(),
1903    8usize,
1904    concat!("Alignment of ", stringify!(luaL_Val__bindgen_ty_2))
1905  );
1906  assert_eq!(
1907    unsafe { &(*(::core::ptr::null::<luaL_Val__bindgen_ty_2>())).intval as *const _ as usize },
1908    0usize,
1909    concat!(
1910      "Offset of field: ",
1911      stringify!(luaL_Val__bindgen_ty_2),
1912      "::",
1913      stringify!(intval)
1914    )
1915  );
1916  assert_eq!(
1917    unsafe { &(*(::core::ptr::null::<luaL_Val__bindgen_ty_2>())).floatval as *const _ as usize },
1918    0usize,
1919    concat!(
1920      "Offset of field: ",
1921      stringify!(luaL_Val__bindgen_ty_2),
1922      "::",
1923      stringify!(floatval)
1924    )
1925  );
1926  assert_eq!(
1927    unsafe { &(*(::core::ptr::null::<luaL_Val__bindgen_ty_2>())).strval as *const _ as usize },
1928    0usize,
1929    concat!(
1930      "Offset of field: ",
1931      stringify!(luaL_Val__bindgen_ty_2),
1932      "::",
1933      stringify!(strval)
1934    )
1935  );
1936}
1937#[test]
1938fn bindgen_test_layout_luaL_Val() {
1939  assert_eq!(
1940    ::core::mem::size_of::<luaL_Val>(),
1941    24usize,
1942    concat!("Size of: ", stringify!(luaL_Val))
1943  );
1944  assert_eq!(
1945    ::core::mem::align_of::<luaL_Val>(),
1946    8usize,
1947    concat!("Alignment of ", stringify!(luaL_Val))
1948  );
1949  assert_eq!(
1950    unsafe { &(*(::core::ptr::null::<luaL_Val>())).name as *const _ as usize },
1951    0usize,
1952    concat!(
1953      "Offset of field: ",
1954      stringify!(luaL_Val),
1955      "::",
1956      stringify!(name)
1957    )
1958  );
1959  assert_eq!(
1960    unsafe { &(*(::core::ptr::null::<luaL_Val>())).type_ as *const _ as usize },
1961    8usize,
1962    concat!(
1963      "Offset of field: ",
1964      stringify!(luaL_Val),
1965      "::",
1966      stringify!(type_)
1967    )
1968  );
1969  assert_eq!(
1970    unsafe { &(*(::core::ptr::null::<luaL_Val>())).v as *const _ as usize },
1971    16usize,
1972    concat!(
1973      "Offset of field: ",
1974      stringify!(luaL_Val),
1975      "::",
1976      stringify!(v)
1977    )
1978  );
1979}
1980#[repr(C)]
1981#[derive(Debug, Copy, Clone)]
1982pub struct LuaUDObject {
1983  _unused: [u8; 0],
1984}
1985#[repr(C)]
1986#[derive(Debug, Copy, Clone)]
1987pub struct LCDSprite {
1988  _unused: [u8; 0],
1989}
1990#[repr(C)]
1991#[derive(Debug, Copy, Clone)]
1992pub struct lua_reg {
1993  pub name: *const super::ctypes::c_char,
1994  pub func: lua_CFunction,
1995}
1996#[test]
1997fn bindgen_test_layout_lua_reg() {
1998  assert_eq!(
1999    ::core::mem::size_of::<lua_reg>(),
2000    16usize,
2001    concat!("Size of: ", stringify!(lua_reg))
2002  );
2003  assert_eq!(
2004    ::core::mem::align_of::<lua_reg>(),
2005    8usize,
2006    concat!("Alignment of ", stringify!(lua_reg))
2007  );
2008  assert_eq!(
2009    unsafe { &(*(::core::ptr::null::<lua_reg>())).name as *const _ as usize },
2010    0usize,
2011    concat!(
2012      "Offset of field: ",
2013      stringify!(lua_reg),
2014      "::",
2015      stringify!(name)
2016    )
2017  );
2018  assert_eq!(
2019    unsafe { &(*(::core::ptr::null::<lua_reg>())).func as *const _ as usize },
2020    8usize,
2021    concat!(
2022      "Offset of field: ",
2023      stringify!(lua_reg),
2024      "::",
2025      stringify!(func)
2026    )
2027  );
2028}
2029pub const LuaType_kTypeNil: LuaType = 0;
2030pub const LuaType_kTypeBool: LuaType = 1;
2031pub const LuaType_kTypeInt: LuaType = 2;
2032pub const LuaType_kTypeFloat: LuaType = 3;
2033pub const LuaType_kTypeString: LuaType = 4;
2034pub const LuaType_kTypeTable: LuaType = 5;
2035pub const LuaType_kTypeFunction: LuaType = 6;
2036pub const LuaType_kTypeThread: LuaType = 7;
2037pub const LuaType_kTypeObject: LuaType = 8;
2038pub type LuaType = super::ctypes::c_int;
2039#[repr(C)]
2040#[derive(Debug, Copy, Clone)]
2041pub struct playdate_lua {
2042  pub addFunction: ::core::option::Option<
2043    unsafe extern "C" fn(
2044      f: lua_CFunction,
2045      name: *const super::ctypes::c_char,
2046      outErr: *mut *const super::ctypes::c_char,
2047    ) -> super::ctypes::c_int,
2048  >,
2049  pub registerClass: ::core::option::Option<
2050    unsafe extern "C" fn(
2051      name: *const super::ctypes::c_char,
2052      reg: *const lua_reg,
2053      vals: *const luaL_Val,
2054      isstatic: super::ctypes::c_int,
2055      outErr: *mut *const super::ctypes::c_char,
2056    ) -> super::ctypes::c_int,
2057  >,
2058  pub pushFunction: ::core::option::Option<unsafe extern "C" fn(f: lua_CFunction)>,
2059  pub indexMetatable: ::core::option::Option<unsafe extern "C" fn() -> super::ctypes::c_int>,
2060  pub stop: ::core::option::Option<unsafe extern "C" fn()>,
2061  pub start: ::core::option::Option<unsafe extern "C" fn()>,
2062  pub getArgCount: ::core::option::Option<unsafe extern "C" fn() -> super::ctypes::c_int>,
2063  pub getArgType: ::core::option::Option<
2064    unsafe extern "C" fn(
2065      pos: super::ctypes::c_int,
2066      outClass: *mut *const super::ctypes::c_char,
2067    ) -> LuaType,
2068  >,
2069  pub argIsNil:
2070    ::core::option::Option<unsafe extern "C" fn(pos: super::ctypes::c_int) -> super::ctypes::c_int>,
2071  pub getArgBool:
2072    ::core::option::Option<unsafe extern "C" fn(pos: super::ctypes::c_int) -> super::ctypes::c_int>,
2073  pub getArgInt:
2074    ::core::option::Option<unsafe extern "C" fn(pos: super::ctypes::c_int) -> super::ctypes::c_int>,
2075  pub getArgFloat: ::core::option::Option<unsafe extern "C" fn(pos: super::ctypes::c_int) -> f32>,
2076  pub getArgString: ::core::option::Option<
2077    unsafe extern "C" fn(pos: super::ctypes::c_int) -> *const super::ctypes::c_char,
2078  >,
2079  pub getArgBytes: ::core::option::Option<
2080    unsafe extern "C" fn(
2081      pos: super::ctypes::c_int,
2082      outlen: *mut size_t,
2083    ) -> *const super::ctypes::c_char,
2084  >,
2085  pub getArgObject: ::core::option::Option<
2086    unsafe extern "C" fn(
2087      pos: super::ctypes::c_int,
2088      type_: *mut super::ctypes::c_char,
2089      outud: *mut *mut LuaUDObject,
2090    ) -> *mut super::ctypes::c_void,
2091  >,
2092  pub getBitmap:
2093    ::core::option::Option<unsafe extern "C" fn(pos: super::ctypes::c_int) -> *mut LCDBitmap>,
2094  pub getSprite:
2095    ::core::option::Option<unsafe extern "C" fn(pos: super::ctypes::c_int) -> *mut LCDSprite>,
2096  pub pushNil: ::core::option::Option<unsafe extern "C" fn()>,
2097  pub pushBool: ::core::option::Option<unsafe extern "C" fn(val: super::ctypes::c_int)>,
2098  pub pushInt: ::core::option::Option<unsafe extern "C" fn(val: super::ctypes::c_int)>,
2099  pub pushFloat: ::core::option::Option<unsafe extern "C" fn(val: f32)>,
2100  pub pushString: ::core::option::Option<unsafe extern "C" fn(str_: *const super::ctypes::c_char)>,
2101  pub pushBytes:
2102    ::core::option::Option<unsafe extern "C" fn(str_: *const super::ctypes::c_char, len: size_t)>,
2103  pub pushBitmap: ::core::option::Option<unsafe extern "C" fn(bitmap: *mut LCDBitmap)>,
2104  pub pushSprite: ::core::option::Option<unsafe extern "C" fn(sprite: *mut LCDSprite)>,
2105  pub pushObject: ::core::option::Option<
2106    unsafe extern "C" fn(
2107      obj: *mut super::ctypes::c_void,
2108      type_: *mut super::ctypes::c_char,
2109      nValues: super::ctypes::c_int,
2110    ) -> *mut LuaUDObject,
2111  >,
2112  pub retainObject:
2113    ::core::option::Option<unsafe extern "C" fn(obj: *mut LuaUDObject) -> *mut LuaUDObject>,
2114  pub releaseObject: ::core::option::Option<unsafe extern "C" fn(obj: *mut LuaUDObject)>,
2115  pub setObjectValue:
2116    ::core::option::Option<unsafe extern "C" fn(obj: *mut LuaUDObject, slot: super::ctypes::c_int)>,
2117  pub getObjectValue: ::core::option::Option<
2118    unsafe extern "C" fn(obj: *mut LuaUDObject, slot: super::ctypes::c_int) -> super::ctypes::c_int,
2119  >,
2120  pub callFunction_deprecated: ::core::option::Option<
2121    unsafe extern "C" fn(name: *const super::ctypes::c_char, nargs: super::ctypes::c_int),
2122  >,
2123  pub callFunction: ::core::option::Option<
2124    unsafe extern "C" fn(
2125      name: *const super::ctypes::c_char,
2126      nargs: super::ctypes::c_int,
2127      outerr: *mut *const super::ctypes::c_char,
2128    ) -> super::ctypes::c_int,
2129  >,
2130}
2131#[test]
2132fn bindgen_test_layout_playdate_lua() {
2133  assert_eq!(
2134    ::core::mem::size_of::<playdate_lua>(),
2135    256usize,
2136    concat!("Size of: ", stringify!(playdate_lua))
2137  );
2138  assert_eq!(
2139    ::core::mem::align_of::<playdate_lua>(),
2140    8usize,
2141    concat!("Alignment of ", stringify!(playdate_lua))
2142  );
2143  assert_eq!(
2144    unsafe { &(*(::core::ptr::null::<playdate_lua>())).addFunction as *const _ as usize },
2145    0usize,
2146    concat!(
2147      "Offset of field: ",
2148      stringify!(playdate_lua),
2149      "::",
2150      stringify!(addFunction)
2151    )
2152  );
2153  assert_eq!(
2154    unsafe { &(*(::core::ptr::null::<playdate_lua>())).registerClass as *const _ as usize },
2155    8usize,
2156    concat!(
2157      "Offset of field: ",
2158      stringify!(playdate_lua),
2159      "::",
2160      stringify!(registerClass)
2161    )
2162  );
2163  assert_eq!(
2164    unsafe { &(*(::core::ptr::null::<playdate_lua>())).pushFunction as *const _ as usize },
2165    16usize,
2166    concat!(
2167      "Offset of field: ",
2168      stringify!(playdate_lua),
2169      "::",
2170      stringify!(pushFunction)
2171    )
2172  );
2173  assert_eq!(
2174    unsafe { &(*(::core::ptr::null::<playdate_lua>())).indexMetatable as *const _ as usize },
2175    24usize,
2176    concat!(
2177      "Offset of field: ",
2178      stringify!(playdate_lua),
2179      "::",
2180      stringify!(indexMetatable)
2181    )
2182  );
2183  assert_eq!(
2184    unsafe { &(*(::core::ptr::null::<playdate_lua>())).stop as *const _ as usize },
2185    32usize,
2186    concat!(
2187      "Offset of field: ",
2188      stringify!(playdate_lua),
2189      "::",
2190      stringify!(stop)
2191    )
2192  );
2193  assert_eq!(
2194    unsafe { &(*(::core::ptr::null::<playdate_lua>())).start as *const _ as usize },
2195    40usize,
2196    concat!(
2197      "Offset of field: ",
2198      stringify!(playdate_lua),
2199      "::",
2200      stringify!(start)
2201    )
2202  );
2203  assert_eq!(
2204    unsafe { &(*(::core::ptr::null::<playdate_lua>())).getArgCount as *const _ as usize },
2205    48usize,
2206    concat!(
2207      "Offset of field: ",
2208      stringify!(playdate_lua),
2209      "::",
2210      stringify!(getArgCount)
2211    )
2212  );
2213  assert_eq!(
2214    unsafe { &(*(::core::ptr::null::<playdate_lua>())).getArgType as *const _ as usize },
2215    56usize,
2216    concat!(
2217      "Offset of field: ",
2218      stringify!(playdate_lua),
2219      "::",
2220      stringify!(getArgType)
2221    )
2222  );
2223  assert_eq!(
2224    unsafe { &(*(::core::ptr::null::<playdate_lua>())).argIsNil as *const _ as usize },
2225    64usize,
2226    concat!(
2227      "Offset of field: ",
2228      stringify!(playdate_lua),
2229      "::",
2230      stringify!(argIsNil)
2231    )
2232  );
2233  assert_eq!(
2234    unsafe { &(*(::core::ptr::null::<playdate_lua>())).getArgBool as *const _ as usize },
2235    72usize,
2236    concat!(
2237      "Offset of field: ",
2238      stringify!(playdate_lua),
2239      "::",
2240      stringify!(getArgBool)
2241    )
2242  );
2243  assert_eq!(
2244    unsafe { &(*(::core::ptr::null::<playdate_lua>())).getArgInt as *const _ as usize },
2245    80usize,
2246    concat!(
2247      "Offset of field: ",
2248      stringify!(playdate_lua),
2249      "::",
2250      stringify!(getArgInt)
2251    )
2252  );
2253  assert_eq!(
2254    unsafe { &(*(::core::ptr::null::<playdate_lua>())).getArgFloat as *const _ as usize },
2255    88usize,
2256    concat!(
2257      "Offset of field: ",
2258      stringify!(playdate_lua),
2259      "::",
2260      stringify!(getArgFloat)
2261    )
2262  );
2263  assert_eq!(
2264    unsafe { &(*(::core::ptr::null::<playdate_lua>())).getArgString as *const _ as usize },
2265    96usize,
2266    concat!(
2267      "Offset of field: ",
2268      stringify!(playdate_lua),
2269      "::",
2270      stringify!(getArgString)
2271    )
2272  );
2273  assert_eq!(
2274    unsafe { &(*(::core::ptr::null::<playdate_lua>())).getArgBytes as *const _ as usize },
2275    104usize,
2276    concat!(
2277      "Offset of field: ",
2278      stringify!(playdate_lua),
2279      "::",
2280      stringify!(getArgBytes)
2281    )
2282  );
2283  assert_eq!(
2284    unsafe { &(*(::core::ptr::null::<playdate_lua>())).getArgObject as *const _ as usize },
2285    112usize,
2286    concat!(
2287      "Offset of field: ",
2288      stringify!(playdate_lua),
2289      "::",
2290      stringify!(getArgObject)
2291    )
2292  );
2293  assert_eq!(
2294    unsafe { &(*(::core::ptr::null::<playdate_lua>())).getBitmap as *const _ as usize },
2295    120usize,
2296    concat!(
2297      "Offset of field: ",
2298      stringify!(playdate_lua),
2299      "::",
2300      stringify!(getBitmap)
2301    )
2302  );
2303  assert_eq!(
2304    unsafe { &(*(::core::ptr::null::<playdate_lua>())).getSprite as *const _ as usize },
2305    128usize,
2306    concat!(
2307      "Offset of field: ",
2308      stringify!(playdate_lua),
2309      "::",
2310      stringify!(getSprite)
2311    )
2312  );
2313  assert_eq!(
2314    unsafe { &(*(::core::ptr::null::<playdate_lua>())).pushNil as *const _ as usize },
2315    136usize,
2316    concat!(
2317      "Offset of field: ",
2318      stringify!(playdate_lua),
2319      "::",
2320      stringify!(pushNil)
2321    )
2322  );
2323  assert_eq!(
2324    unsafe { &(*(::core::ptr::null::<playdate_lua>())).pushBool as *const _ as usize },
2325    144usize,
2326    concat!(
2327      "Offset of field: ",
2328      stringify!(playdate_lua),
2329      "::",
2330      stringify!(pushBool)
2331    )
2332  );
2333  assert_eq!(
2334    unsafe { &(*(::core::ptr::null::<playdate_lua>())).pushInt as *const _ as usize },
2335    152usize,
2336    concat!(
2337      "Offset of field: ",
2338      stringify!(playdate_lua),
2339      "::",
2340      stringify!(pushInt)
2341    )
2342  );
2343  assert_eq!(
2344    unsafe { &(*(::core::ptr::null::<playdate_lua>())).pushFloat as *const _ as usize },
2345    160usize,
2346    concat!(
2347      "Offset of field: ",
2348      stringify!(playdate_lua),
2349      "::",
2350      stringify!(pushFloat)
2351    )
2352  );
2353  assert_eq!(
2354    unsafe { &(*(::core::ptr::null::<playdate_lua>())).pushString as *const _ as usize },
2355    168usize,
2356    concat!(
2357      "Offset of field: ",
2358      stringify!(playdate_lua),
2359      "::",
2360      stringify!(pushString)
2361    )
2362  );
2363  assert_eq!(
2364    unsafe { &(*(::core::ptr::null::<playdate_lua>())).pushBytes as *const _ as usize },
2365    176usize,
2366    concat!(
2367      "Offset of field: ",
2368      stringify!(playdate_lua),
2369      "::",
2370      stringify!(pushBytes)
2371    )
2372  );
2373  assert_eq!(
2374    unsafe { &(*(::core::ptr::null::<playdate_lua>())).pushBitmap as *const _ as usize },
2375    184usize,
2376    concat!(
2377      "Offset of field: ",
2378      stringify!(playdate_lua),
2379      "::",
2380      stringify!(pushBitmap)
2381    )
2382  );
2383  assert_eq!(
2384    unsafe { &(*(::core::ptr::null::<playdate_lua>())).pushSprite as *const _ as usize },
2385    192usize,
2386    concat!(
2387      "Offset of field: ",
2388      stringify!(playdate_lua),
2389      "::",
2390      stringify!(pushSprite)
2391    )
2392  );
2393  assert_eq!(
2394    unsafe { &(*(::core::ptr::null::<playdate_lua>())).pushObject as *const _ as usize },
2395    200usize,
2396    concat!(
2397      "Offset of field: ",
2398      stringify!(playdate_lua),
2399      "::",
2400      stringify!(pushObject)
2401    )
2402  );
2403  assert_eq!(
2404    unsafe { &(*(::core::ptr::null::<playdate_lua>())).retainObject as *const _ as usize },
2405    208usize,
2406    concat!(
2407      "Offset of field: ",
2408      stringify!(playdate_lua),
2409      "::",
2410      stringify!(retainObject)
2411    )
2412  );
2413  assert_eq!(
2414    unsafe { &(*(::core::ptr::null::<playdate_lua>())).releaseObject as *const _ as usize },
2415    216usize,
2416    concat!(
2417      "Offset of field: ",
2418      stringify!(playdate_lua),
2419      "::",
2420      stringify!(releaseObject)
2421    )
2422  );
2423  assert_eq!(
2424    unsafe { &(*(::core::ptr::null::<playdate_lua>())).setObjectValue as *const _ as usize },
2425    224usize,
2426    concat!(
2427      "Offset of field: ",
2428      stringify!(playdate_lua),
2429      "::",
2430      stringify!(setObjectValue)
2431    )
2432  );
2433  assert_eq!(
2434    unsafe { &(*(::core::ptr::null::<playdate_lua>())).getObjectValue as *const _ as usize },
2435    232usize,
2436    concat!(
2437      "Offset of field: ",
2438      stringify!(playdate_lua),
2439      "::",
2440      stringify!(getObjectValue)
2441    )
2442  );
2443  assert_eq!(
2444    unsafe {
2445      &(*(::core::ptr::null::<playdate_lua>())).callFunction_deprecated as *const _ as usize
2446    },
2447    240usize,
2448    concat!(
2449      "Offset of field: ",
2450      stringify!(playdate_lua),
2451      "::",
2452      stringify!(callFunction_deprecated)
2453    )
2454  );
2455  assert_eq!(
2456    unsafe { &(*(::core::ptr::null::<playdate_lua>())).callFunction as *const _ as usize },
2457    248usize,
2458    concat!(
2459      "Offset of field: ",
2460      stringify!(playdate_lua),
2461      "::",
2462      stringify!(callFunction)
2463    )
2464  );
2465}
2466pub const json_value_type_kJSONNull: json_value_type = 0;
2467pub const json_value_type_kJSONTrue: json_value_type = 1;
2468pub const json_value_type_kJSONFalse: json_value_type = 2;
2469pub const json_value_type_kJSONInteger: json_value_type = 3;
2470pub const json_value_type_kJSONFloat: json_value_type = 4;
2471pub const json_value_type_kJSONString: json_value_type = 5;
2472pub const json_value_type_kJSONArray: json_value_type = 6;
2473pub const json_value_type_kJSONTable: json_value_type = 7;
2474pub type json_value_type = super::ctypes::c_int;
2475#[repr(C)]
2476#[derive(Copy, Clone)]
2477pub struct json_value {
2478  pub type_: super::ctypes::c_char,
2479  pub data: json_value__bindgen_ty_1,
2480}
2481#[repr(C)]
2482#[derive(Copy, Clone)]
2483pub union json_value__bindgen_ty_1 {
2484  pub intval: super::ctypes::c_int,
2485  pub floatval: f32,
2486  pub stringval: *mut super::ctypes::c_char,
2487  pub arrayval: *mut super::ctypes::c_void,
2488  pub tableval: *mut super::ctypes::c_void,
2489}
2490#[test]
2491fn bindgen_test_layout_json_value__bindgen_ty_1() {
2492  assert_eq!(
2493    ::core::mem::size_of::<json_value__bindgen_ty_1>(),
2494    8usize,
2495    concat!("Size of: ", stringify!(json_value__bindgen_ty_1))
2496  );
2497  assert_eq!(
2498    ::core::mem::align_of::<json_value__bindgen_ty_1>(),
2499    8usize,
2500    concat!("Alignment of ", stringify!(json_value__bindgen_ty_1))
2501  );
2502  assert_eq!(
2503    unsafe { &(*(::core::ptr::null::<json_value__bindgen_ty_1>())).intval as *const _ as usize },
2504    0usize,
2505    concat!(
2506      "Offset of field: ",
2507      stringify!(json_value__bindgen_ty_1),
2508      "::",
2509      stringify!(intval)
2510    )
2511  );
2512  assert_eq!(
2513    unsafe { &(*(::core::ptr::null::<json_value__bindgen_ty_1>())).floatval as *const _ as usize },
2514    0usize,
2515    concat!(
2516      "Offset of field: ",
2517      stringify!(json_value__bindgen_ty_1),
2518      "::",
2519      stringify!(floatval)
2520    )
2521  );
2522  assert_eq!(
2523    unsafe { &(*(::core::ptr::null::<json_value__bindgen_ty_1>())).stringval as *const _ as usize },
2524    0usize,
2525    concat!(
2526      "Offset of field: ",
2527      stringify!(json_value__bindgen_ty_1),
2528      "::",
2529      stringify!(stringval)
2530    )
2531  );
2532  assert_eq!(
2533    unsafe { &(*(::core::ptr::null::<json_value__bindgen_ty_1>())).arrayval as *const _ as usize },
2534    0usize,
2535    concat!(
2536      "Offset of field: ",
2537      stringify!(json_value__bindgen_ty_1),
2538      "::",
2539      stringify!(arrayval)
2540    )
2541  );
2542  assert_eq!(
2543    unsafe { &(*(::core::ptr::null::<json_value__bindgen_ty_1>())).tableval as *const _ as usize },
2544    0usize,
2545    concat!(
2546      "Offset of field: ",
2547      stringify!(json_value__bindgen_ty_1),
2548      "::",
2549      stringify!(tableval)
2550    )
2551  );
2552}
2553#[test]
2554fn bindgen_test_layout_json_value() {
2555  assert_eq!(
2556    ::core::mem::size_of::<json_value>(),
2557    16usize,
2558    concat!("Size of: ", stringify!(json_value))
2559  );
2560  assert_eq!(
2561    ::core::mem::align_of::<json_value>(),
2562    8usize,
2563    concat!("Alignment of ", stringify!(json_value))
2564  );
2565  assert_eq!(
2566    unsafe { &(*(::core::ptr::null::<json_value>())).type_ as *const _ as usize },
2567    0usize,
2568    concat!(
2569      "Offset of field: ",
2570      stringify!(json_value),
2571      "::",
2572      stringify!(type_)
2573    )
2574  );
2575  assert_eq!(
2576    unsafe { &(*(::core::ptr::null::<json_value>())).data as *const _ as usize },
2577    8usize,
2578    concat!(
2579      "Offset of field: ",
2580      stringify!(json_value),
2581      "::",
2582      stringify!(data)
2583    )
2584  );
2585}
2586#[repr(C)]
2587#[derive(Debug, Copy, Clone)]
2588pub struct json_decoder {
2589  pub decodeError: ::core::option::Option<
2590    unsafe extern "C" fn(
2591      decoder: *mut json_decoder,
2592      error: *const super::ctypes::c_char,
2593      linenum: super::ctypes::c_int,
2594    ),
2595  >,
2596  pub willDecodeSublist: ::core::option::Option<
2597    unsafe extern "C" fn(
2598      decoder: *mut json_decoder,
2599      name: *const super::ctypes::c_char,
2600      type_: json_value_type,
2601    ),
2602  >,
2603  pub shouldDecodeTableValueForKey: ::core::option::Option<
2604    unsafe extern "C" fn(
2605      decoder: *mut json_decoder,
2606      key: *const super::ctypes::c_char,
2607    ) -> super::ctypes::c_int,
2608  >,
2609  pub didDecodeTableValue: ::core::option::Option<
2610    unsafe extern "C" fn(
2611      decoder: *mut json_decoder,
2612      key: *const super::ctypes::c_char,
2613      value: json_value,
2614    ),
2615  >,
2616  pub shouldDecodeArrayValueAtIndex: ::core::option::Option<
2617    unsafe extern "C" fn(
2618      decoder: *mut json_decoder,
2619      pos: super::ctypes::c_int,
2620    ) -> super::ctypes::c_int,
2621  >,
2622  pub didDecodeArrayValue: ::core::option::Option<
2623    unsafe extern "C" fn(decoder: *mut json_decoder, pos: super::ctypes::c_int, value: json_value),
2624  >,
2625  pub didDecodeSublist: ::core::option::Option<
2626    unsafe extern "C" fn(
2627      decoder: *mut json_decoder,
2628      name: *const super::ctypes::c_char,
2629      type_: json_value_type,
2630    ) -> *mut super::ctypes::c_void,
2631  >,
2632  pub userdata: *mut super::ctypes::c_void,
2633  pub returnString: super::ctypes::c_int,
2634  pub path: *const super::ctypes::c_char,
2635}
2636#[test]
2637fn bindgen_test_layout_json_decoder() {
2638  assert_eq!(
2639    ::core::mem::size_of::<json_decoder>(),
2640    80usize,
2641    concat!("Size of: ", stringify!(json_decoder))
2642  );
2643  assert_eq!(
2644    ::core::mem::align_of::<json_decoder>(),
2645    8usize,
2646    concat!("Alignment of ", stringify!(json_decoder))
2647  );
2648  assert_eq!(
2649    unsafe { &(*(::core::ptr::null::<json_decoder>())).decodeError as *const _ as usize },
2650    0usize,
2651    concat!(
2652      "Offset of field: ",
2653      stringify!(json_decoder),
2654      "::",
2655      stringify!(decodeError)
2656    )
2657  );
2658  assert_eq!(
2659    unsafe { &(*(::core::ptr::null::<json_decoder>())).willDecodeSublist as *const _ as usize },
2660    8usize,
2661    concat!(
2662      "Offset of field: ",
2663      stringify!(json_decoder),
2664      "::",
2665      stringify!(willDecodeSublist)
2666    )
2667  );
2668  assert_eq!(
2669    unsafe {
2670      &(*(::core::ptr::null::<json_decoder>())).shouldDecodeTableValueForKey as *const _ as usize
2671    },
2672    16usize,
2673    concat!(
2674      "Offset of field: ",
2675      stringify!(json_decoder),
2676      "::",
2677      stringify!(shouldDecodeTableValueForKey)
2678    )
2679  );
2680  assert_eq!(
2681    unsafe { &(*(::core::ptr::null::<json_decoder>())).didDecodeTableValue as *const _ as usize },
2682    24usize,
2683    concat!(
2684      "Offset of field: ",
2685      stringify!(json_decoder),
2686      "::",
2687      stringify!(didDecodeTableValue)
2688    )
2689  );
2690  assert_eq!(
2691    unsafe {
2692      &(*(::core::ptr::null::<json_decoder>())).shouldDecodeArrayValueAtIndex as *const _ as usize
2693    },
2694    32usize,
2695    concat!(
2696      "Offset of field: ",
2697      stringify!(json_decoder),
2698      "::",
2699      stringify!(shouldDecodeArrayValueAtIndex)
2700    )
2701  );
2702  assert_eq!(
2703    unsafe { &(*(::core::ptr::null::<json_decoder>())).didDecodeArrayValue as *const _ as usize },
2704    40usize,
2705    concat!(
2706      "Offset of field: ",
2707      stringify!(json_decoder),
2708      "::",
2709      stringify!(didDecodeArrayValue)
2710    )
2711  );
2712  assert_eq!(
2713    unsafe { &(*(::core::ptr::null::<json_decoder>())).didDecodeSublist as *const _ as usize },
2714    48usize,
2715    concat!(
2716      "Offset of field: ",
2717      stringify!(json_decoder),
2718      "::",
2719      stringify!(didDecodeSublist)
2720    )
2721  );
2722  assert_eq!(
2723    unsafe { &(*(::core::ptr::null::<json_decoder>())).userdata as *const _ as usize },
2724    56usize,
2725    concat!(
2726      "Offset of field: ",
2727      stringify!(json_decoder),
2728      "::",
2729      stringify!(userdata)
2730    )
2731  );
2732  assert_eq!(
2733    unsafe { &(*(::core::ptr::null::<json_decoder>())).returnString as *const _ as usize },
2734    64usize,
2735    concat!(
2736      "Offset of field: ",
2737      stringify!(json_decoder),
2738      "::",
2739      stringify!(returnString)
2740    )
2741  );
2742  assert_eq!(
2743    unsafe { &(*(::core::ptr::null::<json_decoder>())).path as *const _ as usize },
2744    72usize,
2745    concat!(
2746      "Offset of field: ",
2747      stringify!(json_decoder),
2748      "::",
2749      stringify!(path)
2750    )
2751  );
2752}
2753#[repr(C)]
2754#[derive(Debug, Copy, Clone)]
2755pub struct json_reader {
2756  pub read: ::core::option::Option<
2757    unsafe extern "C" fn(
2758      userdata: *mut super::ctypes::c_void,
2759      buf: *mut u8,
2760      bufsize: super::ctypes::c_int,
2761    ) -> super::ctypes::c_int,
2762  >,
2763  pub userdata: *mut super::ctypes::c_void,
2764}
2765#[test]
2766fn bindgen_test_layout_json_reader() {
2767  assert_eq!(
2768    ::core::mem::size_of::<json_reader>(),
2769    16usize,
2770    concat!("Size of: ", stringify!(json_reader))
2771  );
2772  assert_eq!(
2773    ::core::mem::align_of::<json_reader>(),
2774    8usize,
2775    concat!("Alignment of ", stringify!(json_reader))
2776  );
2777  assert_eq!(
2778    unsafe { &(*(::core::ptr::null::<json_reader>())).read as *const _ as usize },
2779    0usize,
2780    concat!(
2781      "Offset of field: ",
2782      stringify!(json_reader),
2783      "::",
2784      stringify!(read)
2785    )
2786  );
2787  assert_eq!(
2788    unsafe { &(*(::core::ptr::null::<json_reader>())).userdata as *const _ as usize },
2789    8usize,
2790    concat!(
2791      "Offset of field: ",
2792      stringify!(json_reader),
2793      "::",
2794      stringify!(userdata)
2795    )
2796  );
2797}
2798pub type writeFunc = ::core::option::Option<
2799  unsafe extern "C" fn(
2800    userdata: *mut super::ctypes::c_void,
2801    str_: *const super::ctypes::c_char,
2802    len: super::ctypes::c_int,
2803  ),
2804>;
2805#[repr(C)]
2806#[derive(Debug, Copy, Clone)]
2807pub struct json_encoder {
2808  pub writeStringFunc: writeFunc,
2809  pub userdata: *mut super::ctypes::c_void,
2810  pub _bitfield_align_1: [u32; 0],
2811  pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize]>,
2812  pub startArray: ::core::option::Option<unsafe extern "C" fn(encoder: *mut json_encoder)>,
2813  pub addArrayMember: ::core::option::Option<unsafe extern "C" fn(encoder: *mut json_encoder)>,
2814  pub endArray: ::core::option::Option<unsafe extern "C" fn(encoder: *mut json_encoder)>,
2815  pub startTable: ::core::option::Option<unsafe extern "C" fn(encoder: *mut json_encoder)>,
2816  pub addTableMember: ::core::option::Option<
2817    unsafe extern "C" fn(
2818      encoder: *mut json_encoder,
2819      name: *const super::ctypes::c_char,
2820      len: super::ctypes::c_int,
2821    ),
2822  >,
2823  pub endTable: ::core::option::Option<unsafe extern "C" fn(encoder: *mut json_encoder)>,
2824  pub writeNull: ::core::option::Option<unsafe extern "C" fn(encoder: *mut json_encoder)>,
2825  pub writeFalse: ::core::option::Option<unsafe extern "C" fn(encoder: *mut json_encoder)>,
2826  pub writeTrue: ::core::option::Option<unsafe extern "C" fn(encoder: *mut json_encoder)>,
2827  pub writeInt: ::core::option::Option<
2828    unsafe extern "C" fn(encoder: *mut json_encoder, num: super::ctypes::c_int),
2829  >,
2830  pub writeDouble:
2831    ::core::option::Option<unsafe extern "C" fn(encoder: *mut json_encoder, num: f64)>,
2832  pub writeString: ::core::option::Option<
2833    unsafe extern "C" fn(
2834      encoder: *mut json_encoder,
2835      str_: *const super::ctypes::c_char,
2836      len: super::ctypes::c_int,
2837    ),
2838  >,
2839}
2840#[test]
2841fn bindgen_test_layout_json_encoder() {
2842  assert_eq!(
2843    ::core::mem::size_of::<json_encoder>(),
2844    120usize,
2845    concat!("Size of: ", stringify!(json_encoder))
2846  );
2847  assert_eq!(
2848    ::core::mem::align_of::<json_encoder>(),
2849    8usize,
2850    concat!("Alignment of ", stringify!(json_encoder))
2851  );
2852  assert_eq!(
2853    unsafe { &(*(::core::ptr::null::<json_encoder>())).writeStringFunc as *const _ as usize },
2854    0usize,
2855    concat!(
2856      "Offset of field: ",
2857      stringify!(json_encoder),
2858      "::",
2859      stringify!(writeStringFunc)
2860    )
2861  );
2862  assert_eq!(
2863    unsafe { &(*(::core::ptr::null::<json_encoder>())).userdata as *const _ as usize },
2864    8usize,
2865    concat!(
2866      "Offset of field: ",
2867      stringify!(json_encoder),
2868      "::",
2869      stringify!(userdata)
2870    )
2871  );
2872  assert_eq!(
2873    unsafe { &(*(::core::ptr::null::<json_encoder>())).startArray as *const _ as usize },
2874    24usize,
2875    concat!(
2876      "Offset of field: ",
2877      stringify!(json_encoder),
2878      "::",
2879      stringify!(startArray)
2880    )
2881  );
2882  assert_eq!(
2883    unsafe { &(*(::core::ptr::null::<json_encoder>())).addArrayMember as *const _ as usize },
2884    32usize,
2885    concat!(
2886      "Offset of field: ",
2887      stringify!(json_encoder),
2888      "::",
2889      stringify!(addArrayMember)
2890    )
2891  );
2892  assert_eq!(
2893    unsafe { &(*(::core::ptr::null::<json_encoder>())).endArray as *const _ as usize },
2894    40usize,
2895    concat!(
2896      "Offset of field: ",
2897      stringify!(json_encoder),
2898      "::",
2899      stringify!(endArray)
2900    )
2901  );
2902  assert_eq!(
2903    unsafe { &(*(::core::ptr::null::<json_encoder>())).startTable as *const _ as usize },
2904    48usize,
2905    concat!(
2906      "Offset of field: ",
2907      stringify!(json_encoder),
2908      "::",
2909      stringify!(startTable)
2910    )
2911  );
2912  assert_eq!(
2913    unsafe { &(*(::core::ptr::null::<json_encoder>())).addTableMember as *const _ as usize },
2914    56usize,
2915    concat!(
2916      "Offset of field: ",
2917      stringify!(json_encoder),
2918      "::",
2919      stringify!(addTableMember)
2920    )
2921  );
2922  assert_eq!(
2923    unsafe { &(*(::core::ptr::null::<json_encoder>())).endTable as *const _ as usize },
2924    64usize,
2925    concat!(
2926      "Offset of field: ",
2927      stringify!(json_encoder),
2928      "::",
2929      stringify!(endTable)
2930    )
2931  );
2932  assert_eq!(
2933    unsafe { &(*(::core::ptr::null::<json_encoder>())).writeNull as *const _ as usize },
2934    72usize,
2935    concat!(
2936      "Offset of field: ",
2937      stringify!(json_encoder),
2938      "::",
2939      stringify!(writeNull)
2940    )
2941  );
2942  assert_eq!(
2943    unsafe { &(*(::core::ptr::null::<json_encoder>())).writeFalse as *const _ as usize },
2944    80usize,
2945    concat!(
2946      "Offset of field: ",
2947      stringify!(json_encoder),
2948      "::",
2949      stringify!(writeFalse)
2950    )
2951  );
2952  assert_eq!(
2953    unsafe { &(*(::core::ptr::null::<json_encoder>())).writeTrue as *const _ as usize },
2954    88usize,
2955    concat!(
2956      "Offset of field: ",
2957      stringify!(json_encoder),
2958      "::",
2959      stringify!(writeTrue)
2960    )
2961  );
2962  assert_eq!(
2963    unsafe { &(*(::core::ptr::null::<json_encoder>())).writeInt as *const _ as usize },
2964    96usize,
2965    concat!(
2966      "Offset of field: ",
2967      stringify!(json_encoder),
2968      "::",
2969      stringify!(writeInt)
2970    )
2971  );
2972  assert_eq!(
2973    unsafe { &(*(::core::ptr::null::<json_encoder>())).writeDouble as *const _ as usize },
2974    104usize,
2975    concat!(
2976      "Offset of field: ",
2977      stringify!(json_encoder),
2978      "::",
2979      stringify!(writeDouble)
2980    )
2981  );
2982  assert_eq!(
2983    unsafe { &(*(::core::ptr::null::<json_encoder>())).writeString as *const _ as usize },
2984    112usize,
2985    concat!(
2986      "Offset of field: ",
2987      stringify!(json_encoder),
2988      "::",
2989      stringify!(writeString)
2990    )
2991  );
2992}
2993impl json_encoder {
2994  #[inline]
2995  pub fn pretty(&self) -> super::ctypes::c_int {
2996    unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
2997  }
2998  #[inline]
2999  pub fn set_pretty(&mut self, val: super::ctypes::c_int) {
3000    unsafe {
3001      let val: u32 = ::core::mem::transmute(val);
3002      self._bitfield_1.set(0usize, 1u8, val as u64)
3003    }
3004  }
3005  #[inline]
3006  pub fn startedTable(&self) -> super::ctypes::c_int {
3007    unsafe { ::core::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u32) }
3008  }
3009  #[inline]
3010  pub fn set_startedTable(&mut self, val: super::ctypes::c_int) {
3011    unsafe {
3012      let val: u32 = ::core::mem::transmute(val);
3013      self._bitfield_1.set(1usize, 1u8, val as u64)
3014    }
3015  }
3016  #[inline]
3017  pub fn startedArray(&self) -> super::ctypes::c_int {
3018    unsafe { ::core::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u32) }
3019  }
3020  #[inline]
3021  pub fn set_startedArray(&mut self, val: super::ctypes::c_int) {
3022    unsafe {
3023      let val: u32 = ::core::mem::transmute(val);
3024      self._bitfield_1.set(2usize, 1u8, val as u64)
3025    }
3026  }
3027  #[inline]
3028  pub fn depth(&self) -> super::ctypes::c_int {
3029    unsafe { ::core::mem::transmute(self._bitfield_1.get(3usize, 29u8) as u32) }
3030  }
3031  #[inline]
3032  pub fn set_depth(&mut self, val: super::ctypes::c_int) {
3033    unsafe {
3034      let val: u32 = ::core::mem::transmute(val);
3035      self._bitfield_1.set(3usize, 29u8, val as u64)
3036    }
3037  }
3038  #[inline]
3039  pub fn new_bitfield_1(
3040    pretty: super::ctypes::c_int,
3041    startedTable: super::ctypes::c_int,
3042    startedArray: super::ctypes::c_int,
3043    depth: super::ctypes::c_int,
3044  ) -> __BindgenBitfieldUnit<[u8; 4usize]> {
3045    let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize]> = Default::default();
3046    __bindgen_bitfield_unit.set(0usize, 1u8, {
3047      let pretty: u32 = unsafe { ::core::mem::transmute(pretty) };
3048      pretty as u64
3049    });
3050    __bindgen_bitfield_unit.set(1usize, 1u8, {
3051      let startedTable: u32 = unsafe { ::core::mem::transmute(startedTable) };
3052      startedTable as u64
3053    });
3054    __bindgen_bitfield_unit.set(2usize, 1u8, {
3055      let startedArray: u32 = unsafe { ::core::mem::transmute(startedArray) };
3056      startedArray as u64
3057    });
3058    __bindgen_bitfield_unit.set(3usize, 29u8, {
3059      let depth: u32 = unsafe { ::core::mem::transmute(depth) };
3060      depth as u64
3061    });
3062    __bindgen_bitfield_unit
3063  }
3064}
3065#[repr(C)]
3066#[derive(Debug, Copy, Clone)]
3067pub struct playdate_json {
3068  pub initEncoder: ::core::option::Option<
3069    unsafe extern "C" fn(
3070      encoder: *mut json_encoder,
3071      write: writeFunc,
3072      userdata: *mut super::ctypes::c_void,
3073      pretty: super::ctypes::c_int,
3074    ),
3075  >,
3076  pub decode: ::core::option::Option<
3077    unsafe extern "C" fn(
3078      functions: *mut json_decoder,
3079      reader: json_reader,
3080      outval: *mut json_value,
3081    ) -> super::ctypes::c_int,
3082  >,
3083  pub decodeString: ::core::option::Option<
3084    unsafe extern "C" fn(
3085      functions: *mut json_decoder,
3086      jsonString: *const super::ctypes::c_char,
3087      outval: *mut json_value,
3088    ) -> super::ctypes::c_int,
3089  >,
3090}
3091#[test]
3092fn bindgen_test_layout_playdate_json() {
3093  assert_eq!(
3094    ::core::mem::size_of::<playdate_json>(),
3095    24usize,
3096    concat!("Size of: ", stringify!(playdate_json))
3097  );
3098  assert_eq!(
3099    ::core::mem::align_of::<playdate_json>(),
3100    8usize,
3101    concat!("Alignment of ", stringify!(playdate_json))
3102  );
3103  assert_eq!(
3104    unsafe { &(*(::core::ptr::null::<playdate_json>())).initEncoder as *const _ as usize },
3105    0usize,
3106    concat!(
3107      "Offset of field: ",
3108      stringify!(playdate_json),
3109      "::",
3110      stringify!(initEncoder)
3111    )
3112  );
3113  assert_eq!(
3114    unsafe { &(*(::core::ptr::null::<playdate_json>())).decode as *const _ as usize },
3115    8usize,
3116    concat!(
3117      "Offset of field: ",
3118      stringify!(playdate_json),
3119      "::",
3120      stringify!(decode)
3121    )
3122  );
3123  assert_eq!(
3124    unsafe { &(*(::core::ptr::null::<playdate_json>())).decodeString as *const _ as usize },
3125    16usize,
3126    concat!(
3127      "Offset of field: ",
3128      stringify!(playdate_json),
3129      "::",
3130      stringify!(decodeString)
3131    )
3132  );
3133}
3134pub type SDFile = super::ctypes::c_void;
3135impl FileOptions {
3136  pub const kFileRead: FileOptions = FileOptions(1);
3137}
3138impl FileOptions {
3139  pub const kFileReadData: FileOptions = FileOptions(2);
3140}
3141impl FileOptions {
3142  pub const kFileWrite: FileOptions = FileOptions(4);
3143}
3144impl FileOptions {
3145  pub const kFileAppend: FileOptions = FileOptions(8);
3146}
3147impl ::core::ops::BitOr<FileOptions> for FileOptions {
3148  type Output = Self;
3149  #[inline]
3150  fn bitor(self, other: Self) -> Self {
3151    FileOptions(self.0 | other.0)
3152  }
3153}
3154impl ::core::ops::BitOrAssign for FileOptions {
3155  #[inline]
3156  fn bitor_assign(&mut self, rhs: FileOptions) {
3157    self.0 |= rhs.0;
3158  }
3159}
3160impl ::core::ops::BitAnd<FileOptions> for FileOptions {
3161  type Output = Self;
3162  #[inline]
3163  fn bitand(self, other: Self) -> Self {
3164    FileOptions(self.0 & other.0)
3165  }
3166}
3167impl ::core::ops::BitAndAssign for FileOptions {
3168  #[inline]
3169  fn bitand_assign(&mut self, rhs: FileOptions) {
3170    self.0 &= rhs.0;
3171  }
3172}
3173#[repr(transparent)]
3174#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
3175pub struct FileOptions(pub super::ctypes::c_int);
3176#[repr(C)]
3177#[derive(Debug, Copy, Clone)]
3178pub struct FileStat {
3179  pub isdir: super::ctypes::c_int,
3180  pub size: super::ctypes::c_uint,
3181  pub m_year: super::ctypes::c_int,
3182  pub m_month: super::ctypes::c_int,
3183  pub m_day: super::ctypes::c_int,
3184  pub m_hour: super::ctypes::c_int,
3185  pub m_minute: super::ctypes::c_int,
3186  pub m_second: super::ctypes::c_int,
3187}
3188#[test]
3189fn bindgen_test_layout_FileStat() {
3190  assert_eq!(
3191    ::core::mem::size_of::<FileStat>(),
3192    32usize,
3193    concat!("Size of: ", stringify!(FileStat))
3194  );
3195  assert_eq!(
3196    ::core::mem::align_of::<FileStat>(),
3197    4usize,
3198    concat!("Alignment of ", stringify!(FileStat))
3199  );
3200  assert_eq!(
3201    unsafe { &(*(::core::ptr::null::<FileStat>())).isdir as *const _ as usize },
3202    0usize,
3203    concat!(
3204      "Offset of field: ",
3205      stringify!(FileStat),
3206      "::",
3207      stringify!(isdir)
3208    )
3209  );
3210  assert_eq!(
3211    unsafe { &(*(::core::ptr::null::<FileStat>())).size as *const _ as usize },
3212    4usize,
3213    concat!(
3214      "Offset of field: ",
3215      stringify!(FileStat),
3216      "::",
3217      stringify!(size)
3218    )
3219  );
3220  assert_eq!(
3221    unsafe { &(*(::core::ptr::null::<FileStat>())).m_year as *const _ as usize },
3222    8usize,
3223    concat!(
3224      "Offset of field: ",
3225      stringify!(FileStat),
3226      "::",
3227      stringify!(m_year)
3228    )
3229  );
3230  assert_eq!(
3231    unsafe { &(*(::core::ptr::null::<FileStat>())).m_month as *const _ as usize },
3232    12usize,
3233    concat!(
3234      "Offset of field: ",
3235      stringify!(FileStat),
3236      "::",
3237      stringify!(m_month)
3238    )
3239  );
3240  assert_eq!(
3241    unsafe { &(*(::core::ptr::null::<FileStat>())).m_day as *const _ as usize },
3242    16usize,
3243    concat!(
3244      "Offset of field: ",
3245      stringify!(FileStat),
3246      "::",
3247      stringify!(m_day)
3248    )
3249  );
3250  assert_eq!(
3251    unsafe { &(*(::core::ptr::null::<FileStat>())).m_hour as *const _ as usize },
3252    20usize,
3253    concat!(
3254      "Offset of field: ",
3255      stringify!(FileStat),
3256      "::",
3257      stringify!(m_hour)
3258    )
3259  );
3260  assert_eq!(
3261    unsafe { &(*(::core::ptr::null::<FileStat>())).m_minute as *const _ as usize },
3262    24usize,
3263    concat!(
3264      "Offset of field: ",
3265      stringify!(FileStat),
3266      "::",
3267      stringify!(m_minute)
3268    )
3269  );
3270  assert_eq!(
3271    unsafe { &(*(::core::ptr::null::<FileStat>())).m_second as *const _ as usize },
3272    28usize,
3273    concat!(
3274      "Offset of field: ",
3275      stringify!(FileStat),
3276      "::",
3277      stringify!(m_second)
3278    )
3279  );
3280}
3281#[repr(C)]
3282#[derive(Debug, Copy, Clone)]
3283pub struct playdate_file {
3284  pub geterr: ::core::option::Option<unsafe extern "C" fn() -> *const super::ctypes::c_char>,
3285  pub listfiles: ::core::option::Option<
3286    unsafe extern "C" fn(
3287      path: *const super::ctypes::c_char,
3288      callback: ::core::option::Option<
3289        unsafe extern "C" fn(
3290          path: *const super::ctypes::c_char,
3291          userdata: *mut super::ctypes::c_void,
3292        ),
3293      >,
3294      userdata: *mut super::ctypes::c_void,
3295    ) -> super::ctypes::c_int,
3296  >,
3297  pub stat: ::core::option::Option<
3298    unsafe extern "C" fn(
3299      path: *const super::ctypes::c_char,
3300      stat: *mut FileStat,
3301    ) -> super::ctypes::c_int,
3302  >,
3303  pub mkdir: ::core::option::Option<
3304    unsafe extern "C" fn(path: *const super::ctypes::c_char) -> super::ctypes::c_int,
3305  >,
3306  pub unlink: ::core::option::Option<
3307    unsafe extern "C" fn(
3308      name: *const super::ctypes::c_char,
3309      recursive: super::ctypes::c_int,
3310    ) -> super::ctypes::c_int,
3311  >,
3312  pub rename: ::core::option::Option<
3313    unsafe extern "C" fn(
3314      from: *const super::ctypes::c_char,
3315      to: *const super::ctypes::c_char,
3316    ) -> super::ctypes::c_int,
3317  >,
3318  pub open: ::core::option::Option<
3319    unsafe extern "C" fn(name: *const super::ctypes::c_char, mode: FileOptions) -> *mut SDFile,
3320  >,
3321  pub close:
3322    ::core::option::Option<unsafe extern "C" fn(file: *mut SDFile) -> super::ctypes::c_int>,
3323  pub read: ::core::option::Option<
3324    unsafe extern "C" fn(
3325      file: *mut SDFile,
3326      buf: *mut super::ctypes::c_void,
3327      len: super::ctypes::c_uint,
3328    ) -> super::ctypes::c_int,
3329  >,
3330  pub write: ::core::option::Option<
3331    unsafe extern "C" fn(
3332      file: *mut SDFile,
3333      buf: *const super::ctypes::c_void,
3334      len: super::ctypes::c_uint,
3335    ) -> super::ctypes::c_int,
3336  >,
3337  pub flush:
3338    ::core::option::Option<unsafe extern "C" fn(file: *mut SDFile) -> super::ctypes::c_int>,
3339  pub tell: ::core::option::Option<unsafe extern "C" fn(file: *mut SDFile) -> super::ctypes::c_int>,
3340  pub seek: ::core::option::Option<
3341    unsafe extern "C" fn(
3342      file: *mut SDFile,
3343      pos: super::ctypes::c_int,
3344      whence: super::ctypes::c_int,
3345    ) -> super::ctypes::c_int,
3346  >,
3347}
3348#[test]
3349fn bindgen_test_layout_playdate_file() {
3350  assert_eq!(
3351    ::core::mem::size_of::<playdate_file>(),
3352    104usize,
3353    concat!("Size of: ", stringify!(playdate_file))
3354  );
3355  assert_eq!(
3356    ::core::mem::align_of::<playdate_file>(),
3357    8usize,
3358    concat!("Alignment of ", stringify!(playdate_file))
3359  );
3360  assert_eq!(
3361    unsafe { &(*(::core::ptr::null::<playdate_file>())).geterr as *const _ as usize },
3362    0usize,
3363    concat!(
3364      "Offset of field: ",
3365      stringify!(playdate_file),
3366      "::",
3367      stringify!(geterr)
3368    )
3369  );
3370  assert_eq!(
3371    unsafe { &(*(::core::ptr::null::<playdate_file>())).listfiles as *const _ as usize },
3372    8usize,
3373    concat!(
3374      "Offset of field: ",
3375      stringify!(playdate_file),
3376      "::",
3377      stringify!(listfiles)
3378    )
3379  );
3380  assert_eq!(
3381    unsafe { &(*(::core::ptr::null::<playdate_file>())).stat as *const _ as usize },
3382    16usize,
3383    concat!(
3384      "Offset of field: ",
3385      stringify!(playdate_file),
3386      "::",
3387      stringify!(stat)
3388    )
3389  );
3390  assert_eq!(
3391    unsafe { &(*(::core::ptr::null::<playdate_file>())).mkdir as *const _ as usize },
3392    24usize,
3393    concat!(
3394      "Offset of field: ",
3395      stringify!(playdate_file),
3396      "::",
3397      stringify!(mkdir)
3398    )
3399  );
3400  assert_eq!(
3401    unsafe { &(*(::core::ptr::null::<playdate_file>())).unlink as *const _ as usize },
3402    32usize,
3403    concat!(
3404      "Offset of field: ",
3405      stringify!(playdate_file),
3406      "::",
3407      stringify!(unlink)
3408    )
3409  );
3410  assert_eq!(
3411    unsafe { &(*(::core::ptr::null::<playdate_file>())).rename as *const _ as usize },
3412    40usize,
3413    concat!(
3414      "Offset of field: ",
3415      stringify!(playdate_file),
3416      "::",
3417      stringify!(rename)
3418    )
3419  );
3420  assert_eq!(
3421    unsafe { &(*(::core::ptr::null::<playdate_file>())).open as *const _ as usize },
3422    48usize,
3423    concat!(
3424      "Offset of field: ",
3425      stringify!(playdate_file),
3426      "::",
3427      stringify!(open)
3428    )
3429  );
3430  assert_eq!(
3431    unsafe { &(*(::core::ptr::null::<playdate_file>())).close as *const _ as usize },
3432    56usize,
3433    concat!(
3434      "Offset of field: ",
3435      stringify!(playdate_file),
3436      "::",
3437      stringify!(close)
3438    )
3439  );
3440  assert_eq!(
3441    unsafe { &(*(::core::ptr::null::<playdate_file>())).read as *const _ as usize },
3442    64usize,
3443    concat!(
3444      "Offset of field: ",
3445      stringify!(playdate_file),
3446      "::",
3447      stringify!(read)
3448    )
3449  );
3450  assert_eq!(
3451    unsafe { &(*(::core::ptr::null::<playdate_file>())).write as *const _ as usize },
3452    72usize,
3453    concat!(
3454      "Offset of field: ",
3455      stringify!(playdate_file),
3456      "::",
3457      stringify!(write)
3458    )
3459  );
3460  assert_eq!(
3461    unsafe { &(*(::core::ptr::null::<playdate_file>())).flush as *const _ as usize },
3462    80usize,
3463    concat!(
3464      "Offset of field: ",
3465      stringify!(playdate_file),
3466      "::",
3467      stringify!(flush)
3468    )
3469  );
3470  assert_eq!(
3471    unsafe { &(*(::core::ptr::null::<playdate_file>())).tell as *const _ as usize },
3472    88usize,
3473    concat!(
3474      "Offset of field: ",
3475      stringify!(playdate_file),
3476      "::",
3477      stringify!(tell)
3478    )
3479  );
3480  assert_eq!(
3481    unsafe { &(*(::core::ptr::null::<playdate_file>())).seek as *const _ as usize },
3482    96usize,
3483    concat!(
3484      "Offset of field: ",
3485      stringify!(playdate_file),
3486      "::",
3487      stringify!(seek)
3488    )
3489  );
3490}
3491impl SpriteCollisionResponseType {
3492  pub const kCollisionTypeSlide: SpriteCollisionResponseType = SpriteCollisionResponseType(0);
3493}
3494impl SpriteCollisionResponseType {
3495  pub const kCollisionTypeFreeze: SpriteCollisionResponseType = SpriteCollisionResponseType(1);
3496}
3497impl SpriteCollisionResponseType {
3498  pub const kCollisionTypeOverlap: SpriteCollisionResponseType = SpriteCollisionResponseType(2);
3499}
3500impl SpriteCollisionResponseType {
3501  pub const kCollisionTypeBounce: SpriteCollisionResponseType = SpriteCollisionResponseType(3);
3502}
3503#[repr(transparent)]
3504#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
3505pub struct SpriteCollisionResponseType(pub super::ctypes::c_int);
3506#[repr(C)]
3507#[derive(Debug, Copy, Clone)]
3508pub struct PDRect {
3509  pub x: f32,
3510  pub y: f32,
3511  pub width: f32,
3512  pub height: f32,
3513}
3514#[test]
3515fn bindgen_test_layout_PDRect() {
3516  assert_eq!(
3517    ::core::mem::size_of::<PDRect>(),
3518    16usize,
3519    concat!("Size of: ", stringify!(PDRect))
3520  );
3521  assert_eq!(
3522    ::core::mem::align_of::<PDRect>(),
3523    4usize,
3524    concat!("Alignment of ", stringify!(PDRect))
3525  );
3526  assert_eq!(
3527    unsafe { &(*(::core::ptr::null::<PDRect>())).x as *const _ as usize },
3528    0usize,
3529    concat!("Offset of field: ", stringify!(PDRect), "::", stringify!(x))
3530  );
3531  assert_eq!(
3532    unsafe { &(*(::core::ptr::null::<PDRect>())).y as *const _ as usize },
3533    4usize,
3534    concat!("Offset of field: ", stringify!(PDRect), "::", stringify!(y))
3535  );
3536  assert_eq!(
3537    unsafe { &(*(::core::ptr::null::<PDRect>())).width as *const _ as usize },
3538    8usize,
3539    concat!(
3540      "Offset of field: ",
3541      stringify!(PDRect),
3542      "::",
3543      stringify!(width)
3544    )
3545  );
3546  assert_eq!(
3547    unsafe { &(*(::core::ptr::null::<PDRect>())).height as *const _ as usize },
3548    12usize,
3549    concat!(
3550      "Offset of field: ",
3551      stringify!(PDRect),
3552      "::",
3553      stringify!(height)
3554    )
3555  );
3556}
3557#[repr(C)]
3558#[derive(Debug, Copy, Clone)]
3559pub struct CollisionPoint {
3560  pub x: f32,
3561  pub y: f32,
3562}
3563#[test]
3564fn bindgen_test_layout_CollisionPoint() {
3565  assert_eq!(
3566    ::core::mem::size_of::<CollisionPoint>(),
3567    8usize,
3568    concat!("Size of: ", stringify!(CollisionPoint))
3569  );
3570  assert_eq!(
3571    ::core::mem::align_of::<CollisionPoint>(),
3572    4usize,
3573    concat!("Alignment of ", stringify!(CollisionPoint))
3574  );
3575  assert_eq!(
3576    unsafe { &(*(::core::ptr::null::<CollisionPoint>())).x as *const _ as usize },
3577    0usize,
3578    concat!(
3579      "Offset of field: ",
3580      stringify!(CollisionPoint),
3581      "::",
3582      stringify!(x)
3583    )
3584  );
3585  assert_eq!(
3586    unsafe { &(*(::core::ptr::null::<CollisionPoint>())).y as *const _ as usize },
3587    4usize,
3588    concat!(
3589      "Offset of field: ",
3590      stringify!(CollisionPoint),
3591      "::",
3592      stringify!(y)
3593    )
3594  );
3595}
3596#[repr(C)]
3597#[derive(Debug, Copy, Clone)]
3598pub struct CollisionVector {
3599  pub x: super::ctypes::c_int,
3600  pub y: super::ctypes::c_int,
3601}
3602#[test]
3603fn bindgen_test_layout_CollisionVector() {
3604  assert_eq!(
3605    ::core::mem::size_of::<CollisionVector>(),
3606    8usize,
3607    concat!("Size of: ", stringify!(CollisionVector))
3608  );
3609  assert_eq!(
3610    ::core::mem::align_of::<CollisionVector>(),
3611    4usize,
3612    concat!("Alignment of ", stringify!(CollisionVector))
3613  );
3614  assert_eq!(
3615    unsafe { &(*(::core::ptr::null::<CollisionVector>())).x as *const _ as usize },
3616    0usize,
3617    concat!(
3618      "Offset of field: ",
3619      stringify!(CollisionVector),
3620      "::",
3621      stringify!(x)
3622    )
3623  );
3624  assert_eq!(
3625    unsafe { &(*(::core::ptr::null::<CollisionVector>())).y as *const _ as usize },
3626    4usize,
3627    concat!(
3628      "Offset of field: ",
3629      stringify!(CollisionVector),
3630      "::",
3631      stringify!(y)
3632    )
3633  );
3634}
3635#[repr(C)]
3636#[derive(Debug, Copy, Clone)]
3637pub struct SpriteCollisionInfo {
3638  pub sprite: *mut LCDSprite,
3639  pub other: *mut LCDSprite,
3640  pub responseType: SpriteCollisionResponseType,
3641  pub overlaps: u8,
3642  pub ti: f32,
3643  pub move_: CollisionPoint,
3644  pub normal: CollisionVector,
3645  pub touch: CollisionPoint,
3646  pub spriteRect: PDRect,
3647  pub otherRect: PDRect,
3648}
3649#[test]
3650fn bindgen_test_layout_SpriteCollisionInfo() {
3651  assert_eq!(
3652    ::core::mem::size_of::<SpriteCollisionInfo>(),
3653    88usize,
3654    concat!("Size of: ", stringify!(SpriteCollisionInfo))
3655  );
3656  assert_eq!(
3657    ::core::mem::align_of::<SpriteCollisionInfo>(),
3658    8usize,
3659    concat!("Alignment of ", stringify!(SpriteCollisionInfo))
3660  );
3661  assert_eq!(
3662    unsafe { &(*(::core::ptr::null::<SpriteCollisionInfo>())).sprite as *const _ as usize },
3663    0usize,
3664    concat!(
3665      "Offset of field: ",
3666      stringify!(SpriteCollisionInfo),
3667      "::",
3668      stringify!(sprite)
3669    )
3670  );
3671  assert_eq!(
3672    unsafe { &(*(::core::ptr::null::<SpriteCollisionInfo>())).other as *const _ as usize },
3673    8usize,
3674    concat!(
3675      "Offset of field: ",
3676      stringify!(SpriteCollisionInfo),
3677      "::",
3678      stringify!(other)
3679    )
3680  );
3681  assert_eq!(
3682    unsafe { &(*(::core::ptr::null::<SpriteCollisionInfo>())).responseType as *const _ as usize },
3683    16usize,
3684    concat!(
3685      "Offset of field: ",
3686      stringify!(SpriteCollisionInfo),
3687      "::",
3688      stringify!(responseType)
3689    )
3690  );
3691  assert_eq!(
3692    unsafe { &(*(::core::ptr::null::<SpriteCollisionInfo>())).overlaps as *const _ as usize },
3693    20usize,
3694    concat!(
3695      "Offset of field: ",
3696      stringify!(SpriteCollisionInfo),
3697      "::",
3698      stringify!(overlaps)
3699    )
3700  );
3701  assert_eq!(
3702    unsafe { &(*(::core::ptr::null::<SpriteCollisionInfo>())).ti as *const _ as usize },
3703    24usize,
3704    concat!(
3705      "Offset of field: ",
3706      stringify!(SpriteCollisionInfo),
3707      "::",
3708      stringify!(ti)
3709    )
3710  );
3711  assert_eq!(
3712    unsafe { &(*(::core::ptr::null::<SpriteCollisionInfo>())).move_ as *const _ as usize },
3713    28usize,
3714    concat!(
3715      "Offset of field: ",
3716      stringify!(SpriteCollisionInfo),
3717      "::",
3718      stringify!(move_)
3719    )
3720  );
3721  assert_eq!(
3722    unsafe { &(*(::core::ptr::null::<SpriteCollisionInfo>())).normal as *const _ as usize },
3723    36usize,
3724    concat!(
3725      "Offset of field: ",
3726      stringify!(SpriteCollisionInfo),
3727      "::",
3728      stringify!(normal)
3729    )
3730  );
3731  assert_eq!(
3732    unsafe { &(*(::core::ptr::null::<SpriteCollisionInfo>())).touch as *const _ as usize },
3733    44usize,
3734    concat!(
3735      "Offset of field: ",
3736      stringify!(SpriteCollisionInfo),
3737      "::",
3738      stringify!(touch)
3739    )
3740  );
3741  assert_eq!(
3742    unsafe { &(*(::core::ptr::null::<SpriteCollisionInfo>())).spriteRect as *const _ as usize },
3743    52usize,
3744    concat!(
3745      "Offset of field: ",
3746      stringify!(SpriteCollisionInfo),
3747      "::",
3748      stringify!(spriteRect)
3749    )
3750  );
3751  assert_eq!(
3752    unsafe { &(*(::core::ptr::null::<SpriteCollisionInfo>())).otherRect as *const _ as usize },
3753    68usize,
3754    concat!(
3755      "Offset of field: ",
3756      stringify!(SpriteCollisionInfo),
3757      "::",
3758      stringify!(otherRect)
3759    )
3760  );
3761}
3762#[repr(C)]
3763#[derive(Debug, Copy, Clone)]
3764pub struct SpriteQueryInfo {
3765  pub sprite: *mut LCDSprite,
3766  pub ti1: f32,
3767  pub ti2: f32,
3768  pub entryPoint: CollisionPoint,
3769  pub exitPoint: CollisionPoint,
3770}
3771#[test]
3772fn bindgen_test_layout_SpriteQueryInfo() {
3773  assert_eq!(
3774    ::core::mem::size_of::<SpriteQueryInfo>(),
3775    32usize,
3776    concat!("Size of: ", stringify!(SpriteQueryInfo))
3777  );
3778  assert_eq!(
3779    ::core::mem::align_of::<SpriteQueryInfo>(),
3780    8usize,
3781    concat!("Alignment of ", stringify!(SpriteQueryInfo))
3782  );
3783  assert_eq!(
3784    unsafe { &(*(::core::ptr::null::<SpriteQueryInfo>())).sprite as *const _ as usize },
3785    0usize,
3786    concat!(
3787      "Offset of field: ",
3788      stringify!(SpriteQueryInfo),
3789      "::",
3790      stringify!(sprite)
3791    )
3792  );
3793  assert_eq!(
3794    unsafe { &(*(::core::ptr::null::<SpriteQueryInfo>())).ti1 as *const _ as usize },
3795    8usize,
3796    concat!(
3797      "Offset of field: ",
3798      stringify!(SpriteQueryInfo),
3799      "::",
3800      stringify!(ti1)
3801    )
3802  );
3803  assert_eq!(
3804    unsafe { &(*(::core::ptr::null::<SpriteQueryInfo>())).ti2 as *const _ as usize },
3805    12usize,
3806    concat!(
3807      "Offset of field: ",
3808      stringify!(SpriteQueryInfo),
3809      "::",
3810      stringify!(ti2)
3811    )
3812  );
3813  assert_eq!(
3814    unsafe { &(*(::core::ptr::null::<SpriteQueryInfo>())).entryPoint as *const _ as usize },
3815    16usize,
3816    concat!(
3817      "Offset of field: ",
3818      stringify!(SpriteQueryInfo),
3819      "::",
3820      stringify!(entryPoint)
3821    )
3822  );
3823  assert_eq!(
3824    unsafe { &(*(::core::ptr::null::<SpriteQueryInfo>())).exitPoint as *const _ as usize },
3825    24usize,
3826    concat!(
3827      "Offset of field: ",
3828      stringify!(SpriteQueryInfo),
3829      "::",
3830      stringify!(exitPoint)
3831    )
3832  );
3833}
3834pub type LCDSpriteDrawFunction = ::core::option::Option<
3835  unsafe extern "C" fn(sprite: *mut LCDSprite, bounds: PDRect, drawrect: PDRect),
3836>;
3837pub type LCDSpriteUpdateFunction =
3838  ::core::option::Option<unsafe extern "C" fn(sprite: *mut LCDSprite)>;
3839pub type LCDSpriteCollisionFilterProc = ::core::option::Option<
3840  unsafe extern "C" fn(
3841    sprite: *mut LCDSprite,
3842    other: *mut LCDSprite,
3843  ) -> SpriteCollisionResponseType,
3844>;
3845#[repr(C)]
3846#[derive(Debug, Copy, Clone)]
3847pub struct playdate_sprite {
3848  pub setAlwaysRedraw: ::core::option::Option<unsafe extern "C" fn(flag: super::ctypes::c_int)>,
3849  pub addDirtyRect: ::core::option::Option<unsafe extern "C" fn(dirtyRect: LCDRect)>,
3850  pub drawSprites: ::core::option::Option<unsafe extern "C" fn()>,
3851  pub updateAndDrawSprites: ::core::option::Option<unsafe extern "C" fn()>,
3852  pub newSprite: ::core::option::Option<unsafe extern "C" fn() -> *mut LCDSprite>,
3853  pub freeSprite: ::core::option::Option<unsafe extern "C" fn(sprite: *mut LCDSprite)>,
3854  pub copy: ::core::option::Option<unsafe extern "C" fn(sprite: *mut LCDSprite) -> *mut LCDSprite>,
3855  pub addSprite: ::core::option::Option<unsafe extern "C" fn(sprite: *mut LCDSprite)>,
3856  pub removeSprite: ::core::option::Option<unsafe extern "C" fn(sprite: *mut LCDSprite)>,
3857  pub removeSprites: ::core::option::Option<
3858    unsafe extern "C" fn(sprites: *mut *mut LCDSprite, count: super::ctypes::c_int),
3859  >,
3860  pub removeAllSprites: ::core::option::Option<unsafe extern "C" fn()>,
3861  pub getSpriteCount: ::core::option::Option<unsafe extern "C" fn() -> super::ctypes::c_int>,
3862  pub setBounds:
3863    ::core::option::Option<unsafe extern "C" fn(sprite: *mut LCDSprite, bounds: PDRect)>,
3864  pub getBounds: ::core::option::Option<unsafe extern "C" fn(sprite: *mut LCDSprite) -> PDRect>,
3865  pub moveTo: ::core::option::Option<unsafe extern "C" fn(sprite: *mut LCDSprite, x: f32, y: f32)>,
3866  pub moveBy:
3867    ::core::option::Option<unsafe extern "C" fn(sprite: *mut LCDSprite, dx: f32, dy: f32)>,
3868  pub setImage: ::core::option::Option<
3869    unsafe extern "C" fn(sprite: *mut LCDSprite, image: *mut LCDBitmap, flip: LCDBitmapFlip),
3870  >,
3871  pub getImage:
3872    ::core::option::Option<unsafe extern "C" fn(sprite: *mut LCDSprite) -> *mut LCDBitmap>,
3873  pub setSize:
3874    ::core::option::Option<unsafe extern "C" fn(s: *mut LCDSprite, width: f32, height: f32)>,
3875  pub setZIndex: ::core::option::Option<unsafe extern "C" fn(sprite: *mut LCDSprite, zIndex: i16)>,
3876  pub getZIndex: ::core::option::Option<unsafe extern "C" fn(sprite: *mut LCDSprite) -> i16>,
3877  pub setDrawMode:
3878    ::core::option::Option<unsafe extern "C" fn(sprite: *mut LCDSprite, mode: LCDBitmapDrawMode)>,
3879  pub setImageFlip:
3880    ::core::option::Option<unsafe extern "C" fn(sprite: *mut LCDSprite, flip: LCDBitmapFlip)>,
3881  pub getImageFlip:
3882    ::core::option::Option<unsafe extern "C" fn(sprite: *mut LCDSprite) -> LCDBitmapFlip>,
3883  pub setStencil:
3884    ::core::option::Option<unsafe extern "C" fn(sprite: *mut LCDSprite, stencil: *mut LCDBitmap)>,
3885  pub setClipRect:
3886    ::core::option::Option<unsafe extern "C" fn(sprite: *mut LCDSprite, clipRect: LCDRect)>,
3887  pub clearClipRect: ::core::option::Option<unsafe extern "C" fn(sprite: *mut LCDSprite)>,
3888  pub setClipRectsInRange: ::core::option::Option<
3889    unsafe extern "C" fn(
3890      clipRect: LCDRect,
3891      startZ: super::ctypes::c_int,
3892      endZ: super::ctypes::c_int,
3893    ),
3894  >,
3895  pub clearClipRectsInRange: ::core::option::Option<
3896    unsafe extern "C" fn(startZ: super::ctypes::c_int, endZ: super::ctypes::c_int),
3897  >,
3898  pub setUpdatesEnabled: ::core::option::Option<
3899    unsafe extern "C" fn(sprite: *mut LCDSprite, flag: super::ctypes::c_int),
3900  >,
3901  pub updatesEnabled:
3902    ::core::option::Option<unsafe extern "C" fn(sprite: *mut LCDSprite) -> super::ctypes::c_int>,
3903  pub setCollisionsEnabled: ::core::option::Option<
3904    unsafe extern "C" fn(sprite: *mut LCDSprite, flag: super::ctypes::c_int),
3905  >,
3906  pub collisionsEnabled:
3907    ::core::option::Option<unsafe extern "C" fn(sprite: *mut LCDSprite) -> super::ctypes::c_int>,
3908  pub setVisible: ::core::option::Option<
3909    unsafe extern "C" fn(sprite: *mut LCDSprite, flag: super::ctypes::c_int),
3910  >,
3911  pub isVisible:
3912    ::core::option::Option<unsafe extern "C" fn(sprite: *mut LCDSprite) -> super::ctypes::c_int>,
3913  pub setOpaque: ::core::option::Option<
3914    unsafe extern "C" fn(sprite: *mut LCDSprite, flag: super::ctypes::c_int),
3915  >,
3916  pub markDirty: ::core::option::Option<unsafe extern "C" fn(sprite: *mut LCDSprite)>,
3917  pub setTag: ::core::option::Option<unsafe extern "C" fn(sprite: *mut LCDSprite, tag: u8)>,
3918  pub getTag: ::core::option::Option<unsafe extern "C" fn(sprite: *mut LCDSprite) -> u8>,
3919  pub setIgnoresDrawOffset: ::core::option::Option<
3920    unsafe extern "C" fn(sprite: *mut LCDSprite, flag: super::ctypes::c_int),
3921  >,
3922  pub setUpdateFunction: ::core::option::Option<
3923    unsafe extern "C" fn(sprite: *mut LCDSprite, func: LCDSpriteUpdateFunction),
3924  >,
3925  pub setDrawFunction: ::core::option::Option<
3926    unsafe extern "C" fn(sprite: *mut LCDSprite, func: LCDSpriteDrawFunction),
3927  >,
3928  pub getPosition:
3929    ::core::option::Option<unsafe extern "C" fn(sprite: *mut LCDSprite, x: *mut f32, y: *mut f32)>,
3930  pub resetCollisionWorld: ::core::option::Option<unsafe extern "C" fn()>,
3931  pub setCollideRect:
3932    ::core::option::Option<unsafe extern "C" fn(sprite: *mut LCDSprite, collideRect: PDRect)>,
3933  pub getCollideRect:
3934    ::core::option::Option<unsafe extern "C" fn(sprite: *mut LCDSprite) -> PDRect>,
3935  pub clearCollideRect: ::core::option::Option<unsafe extern "C" fn(sprite: *mut LCDSprite)>,
3936  pub setCollisionResponseFunction: ::core::option::Option<
3937    unsafe extern "C" fn(sprite: *mut LCDSprite, func: LCDSpriteCollisionFilterProc),
3938  >,
3939  pub checkCollisions: ::core::option::Option<
3940    unsafe extern "C" fn(
3941      sprite: *mut LCDSprite,
3942      goalX: f32,
3943      goalY: f32,
3944      actualX: *mut f32,
3945      actualY: *mut f32,
3946      len: *mut super::ctypes::c_int,
3947    ) -> *mut SpriteCollisionInfo,
3948  >,
3949  pub moveWithCollisions: ::core::option::Option<
3950    unsafe extern "C" fn(
3951      sprite: *mut LCDSprite,
3952      goalX: f32,
3953      goalY: f32,
3954      actualX: *mut f32,
3955      actualY: *mut f32,
3956      len: *mut super::ctypes::c_int,
3957    ) -> *mut SpriteCollisionInfo,
3958  >,
3959  pub querySpritesAtPoint: ::core::option::Option<
3960    unsafe extern "C" fn(x: f32, y: f32, len: *mut super::ctypes::c_int) -> *mut *mut LCDSprite,
3961  >,
3962  pub querySpritesInRect: ::core::option::Option<
3963    unsafe extern "C" fn(
3964      x: f32,
3965      y: f32,
3966      width: f32,
3967      height: f32,
3968      len: *mut super::ctypes::c_int,
3969    ) -> *mut *mut LCDSprite,
3970  >,
3971  pub querySpritesAlongLine: ::core::option::Option<
3972    unsafe extern "C" fn(
3973      x1: f32,
3974      y1: f32,
3975      x2: f32,
3976      y2: f32,
3977      len: *mut super::ctypes::c_int,
3978    ) -> *mut *mut LCDSprite,
3979  >,
3980  pub querySpriteInfoAlongLine: ::core::option::Option<
3981    unsafe extern "C" fn(
3982      x1: f32,
3983      y1: f32,
3984      x2: f32,
3985      y2: f32,
3986      len: *mut super::ctypes::c_int,
3987    ) -> *mut SpriteQueryInfo,
3988  >,
3989  pub overlappingSprites: ::core::option::Option<
3990    unsafe extern "C" fn(
3991      sprite: *mut LCDSprite,
3992      len: *mut super::ctypes::c_int,
3993    ) -> *mut *mut LCDSprite,
3994  >,
3995  pub allOverlappingSprites: ::core::option::Option<
3996    unsafe extern "C" fn(len: *mut super::ctypes::c_int) -> *mut *mut LCDSprite,
3997  >,
3998  pub setStencilPattern:
3999    ::core::option::Option<unsafe extern "C" fn(sprite: *mut LCDSprite, pattern: *mut u8)>,
4000  pub clearStencil: ::core::option::Option<unsafe extern "C" fn(sprite: *mut LCDSprite)>,
4001  pub setUserdata: ::core::option::Option<
4002    unsafe extern "C" fn(sprite: *mut LCDSprite, userdata: *mut super::ctypes::c_void),
4003  >,
4004  pub getUserdata: ::core::option::Option<
4005    unsafe extern "C" fn(sprite: *mut LCDSprite) -> *mut super::ctypes::c_void,
4006  >,
4007  pub setStencilImage: ::core::option::Option<
4008    unsafe extern "C" fn(
4009      sprite: *mut LCDSprite,
4010      stencil: *mut LCDBitmap,
4011      tile: super::ctypes::c_int,
4012    ),
4013  >,
4014}
4015#[test]
4016fn bindgen_test_layout_playdate_sprite() {
4017  assert_eq!(
4018    ::core::mem::size_of::<playdate_sprite>(),
4019    488usize,
4020    concat!("Size of: ", stringify!(playdate_sprite))
4021  );
4022  assert_eq!(
4023    ::core::mem::align_of::<playdate_sprite>(),
4024    8usize,
4025    concat!("Alignment of ", stringify!(playdate_sprite))
4026  );
4027  assert_eq!(
4028    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).setAlwaysRedraw as *const _ as usize },
4029    0usize,
4030    concat!(
4031      "Offset of field: ",
4032      stringify!(playdate_sprite),
4033      "::",
4034      stringify!(setAlwaysRedraw)
4035    )
4036  );
4037  assert_eq!(
4038    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).addDirtyRect as *const _ as usize },
4039    8usize,
4040    concat!(
4041      "Offset of field: ",
4042      stringify!(playdate_sprite),
4043      "::",
4044      stringify!(addDirtyRect)
4045    )
4046  );
4047  assert_eq!(
4048    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).drawSprites as *const _ as usize },
4049    16usize,
4050    concat!(
4051      "Offset of field: ",
4052      stringify!(playdate_sprite),
4053      "::",
4054      stringify!(drawSprites)
4055    )
4056  );
4057  assert_eq!(
4058    unsafe {
4059      &(*(::core::ptr::null::<playdate_sprite>())).updateAndDrawSprites as *const _ as usize
4060    },
4061    24usize,
4062    concat!(
4063      "Offset of field: ",
4064      stringify!(playdate_sprite),
4065      "::",
4066      stringify!(updateAndDrawSprites)
4067    )
4068  );
4069  assert_eq!(
4070    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).newSprite as *const _ as usize },
4071    32usize,
4072    concat!(
4073      "Offset of field: ",
4074      stringify!(playdate_sprite),
4075      "::",
4076      stringify!(newSprite)
4077    )
4078  );
4079  assert_eq!(
4080    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).freeSprite as *const _ as usize },
4081    40usize,
4082    concat!(
4083      "Offset of field: ",
4084      stringify!(playdate_sprite),
4085      "::",
4086      stringify!(freeSprite)
4087    )
4088  );
4089  assert_eq!(
4090    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).copy as *const _ as usize },
4091    48usize,
4092    concat!(
4093      "Offset of field: ",
4094      stringify!(playdate_sprite),
4095      "::",
4096      stringify!(copy)
4097    )
4098  );
4099  assert_eq!(
4100    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).addSprite as *const _ as usize },
4101    56usize,
4102    concat!(
4103      "Offset of field: ",
4104      stringify!(playdate_sprite),
4105      "::",
4106      stringify!(addSprite)
4107    )
4108  );
4109  assert_eq!(
4110    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).removeSprite as *const _ as usize },
4111    64usize,
4112    concat!(
4113      "Offset of field: ",
4114      stringify!(playdate_sprite),
4115      "::",
4116      stringify!(removeSprite)
4117    )
4118  );
4119  assert_eq!(
4120    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).removeSprites as *const _ as usize },
4121    72usize,
4122    concat!(
4123      "Offset of field: ",
4124      stringify!(playdate_sprite),
4125      "::",
4126      stringify!(removeSprites)
4127    )
4128  );
4129  assert_eq!(
4130    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).removeAllSprites as *const _ as usize },
4131    80usize,
4132    concat!(
4133      "Offset of field: ",
4134      stringify!(playdate_sprite),
4135      "::",
4136      stringify!(removeAllSprites)
4137    )
4138  );
4139  assert_eq!(
4140    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).getSpriteCount as *const _ as usize },
4141    88usize,
4142    concat!(
4143      "Offset of field: ",
4144      stringify!(playdate_sprite),
4145      "::",
4146      stringify!(getSpriteCount)
4147    )
4148  );
4149  assert_eq!(
4150    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).setBounds as *const _ as usize },
4151    96usize,
4152    concat!(
4153      "Offset of field: ",
4154      stringify!(playdate_sprite),
4155      "::",
4156      stringify!(setBounds)
4157    )
4158  );
4159  assert_eq!(
4160    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).getBounds as *const _ as usize },
4161    104usize,
4162    concat!(
4163      "Offset of field: ",
4164      stringify!(playdate_sprite),
4165      "::",
4166      stringify!(getBounds)
4167    )
4168  );
4169  assert_eq!(
4170    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).moveTo as *const _ as usize },
4171    112usize,
4172    concat!(
4173      "Offset of field: ",
4174      stringify!(playdate_sprite),
4175      "::",
4176      stringify!(moveTo)
4177    )
4178  );
4179  assert_eq!(
4180    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).moveBy as *const _ as usize },
4181    120usize,
4182    concat!(
4183      "Offset of field: ",
4184      stringify!(playdate_sprite),
4185      "::",
4186      stringify!(moveBy)
4187    )
4188  );
4189  assert_eq!(
4190    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).setImage as *const _ as usize },
4191    128usize,
4192    concat!(
4193      "Offset of field: ",
4194      stringify!(playdate_sprite),
4195      "::",
4196      stringify!(setImage)
4197    )
4198  );
4199  assert_eq!(
4200    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).getImage as *const _ as usize },
4201    136usize,
4202    concat!(
4203      "Offset of field: ",
4204      stringify!(playdate_sprite),
4205      "::",
4206      stringify!(getImage)
4207    )
4208  );
4209  assert_eq!(
4210    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).setSize as *const _ as usize },
4211    144usize,
4212    concat!(
4213      "Offset of field: ",
4214      stringify!(playdate_sprite),
4215      "::",
4216      stringify!(setSize)
4217    )
4218  );
4219  assert_eq!(
4220    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).setZIndex as *const _ as usize },
4221    152usize,
4222    concat!(
4223      "Offset of field: ",
4224      stringify!(playdate_sprite),
4225      "::",
4226      stringify!(setZIndex)
4227    )
4228  );
4229  assert_eq!(
4230    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).getZIndex as *const _ as usize },
4231    160usize,
4232    concat!(
4233      "Offset of field: ",
4234      stringify!(playdate_sprite),
4235      "::",
4236      stringify!(getZIndex)
4237    )
4238  );
4239  assert_eq!(
4240    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).setDrawMode as *const _ as usize },
4241    168usize,
4242    concat!(
4243      "Offset of field: ",
4244      stringify!(playdate_sprite),
4245      "::",
4246      stringify!(setDrawMode)
4247    )
4248  );
4249  assert_eq!(
4250    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).setImageFlip as *const _ as usize },
4251    176usize,
4252    concat!(
4253      "Offset of field: ",
4254      stringify!(playdate_sprite),
4255      "::",
4256      stringify!(setImageFlip)
4257    )
4258  );
4259  assert_eq!(
4260    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).getImageFlip as *const _ as usize },
4261    184usize,
4262    concat!(
4263      "Offset of field: ",
4264      stringify!(playdate_sprite),
4265      "::",
4266      stringify!(getImageFlip)
4267    )
4268  );
4269  assert_eq!(
4270    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).setStencil as *const _ as usize },
4271    192usize,
4272    concat!(
4273      "Offset of field: ",
4274      stringify!(playdate_sprite),
4275      "::",
4276      stringify!(setStencil)
4277    )
4278  );
4279  assert_eq!(
4280    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).setClipRect as *const _ as usize },
4281    200usize,
4282    concat!(
4283      "Offset of field: ",
4284      stringify!(playdate_sprite),
4285      "::",
4286      stringify!(setClipRect)
4287    )
4288  );
4289  assert_eq!(
4290    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).clearClipRect as *const _ as usize },
4291    208usize,
4292    concat!(
4293      "Offset of field: ",
4294      stringify!(playdate_sprite),
4295      "::",
4296      stringify!(clearClipRect)
4297    )
4298  );
4299  assert_eq!(
4300    unsafe {
4301      &(*(::core::ptr::null::<playdate_sprite>())).setClipRectsInRange as *const _ as usize
4302    },
4303    216usize,
4304    concat!(
4305      "Offset of field: ",
4306      stringify!(playdate_sprite),
4307      "::",
4308      stringify!(setClipRectsInRange)
4309    )
4310  );
4311  assert_eq!(
4312    unsafe {
4313      &(*(::core::ptr::null::<playdate_sprite>())).clearClipRectsInRange as *const _ as usize
4314    },
4315    224usize,
4316    concat!(
4317      "Offset of field: ",
4318      stringify!(playdate_sprite),
4319      "::",
4320      stringify!(clearClipRectsInRange)
4321    )
4322  );
4323  assert_eq!(
4324    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).setUpdatesEnabled as *const _ as usize },
4325    232usize,
4326    concat!(
4327      "Offset of field: ",
4328      stringify!(playdate_sprite),
4329      "::",
4330      stringify!(setUpdatesEnabled)
4331    )
4332  );
4333  assert_eq!(
4334    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).updatesEnabled as *const _ as usize },
4335    240usize,
4336    concat!(
4337      "Offset of field: ",
4338      stringify!(playdate_sprite),
4339      "::",
4340      stringify!(updatesEnabled)
4341    )
4342  );
4343  assert_eq!(
4344    unsafe {
4345      &(*(::core::ptr::null::<playdate_sprite>())).setCollisionsEnabled as *const _ as usize
4346    },
4347    248usize,
4348    concat!(
4349      "Offset of field: ",
4350      stringify!(playdate_sprite),
4351      "::",
4352      stringify!(setCollisionsEnabled)
4353    )
4354  );
4355  assert_eq!(
4356    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).collisionsEnabled as *const _ as usize },
4357    256usize,
4358    concat!(
4359      "Offset of field: ",
4360      stringify!(playdate_sprite),
4361      "::",
4362      stringify!(collisionsEnabled)
4363    )
4364  );
4365  assert_eq!(
4366    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).setVisible as *const _ as usize },
4367    264usize,
4368    concat!(
4369      "Offset of field: ",
4370      stringify!(playdate_sprite),
4371      "::",
4372      stringify!(setVisible)
4373    )
4374  );
4375  assert_eq!(
4376    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).isVisible as *const _ as usize },
4377    272usize,
4378    concat!(
4379      "Offset of field: ",
4380      stringify!(playdate_sprite),
4381      "::",
4382      stringify!(isVisible)
4383    )
4384  );
4385  assert_eq!(
4386    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).setOpaque as *const _ as usize },
4387    280usize,
4388    concat!(
4389      "Offset of field: ",
4390      stringify!(playdate_sprite),
4391      "::",
4392      stringify!(setOpaque)
4393    )
4394  );
4395  assert_eq!(
4396    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).markDirty as *const _ as usize },
4397    288usize,
4398    concat!(
4399      "Offset of field: ",
4400      stringify!(playdate_sprite),
4401      "::",
4402      stringify!(markDirty)
4403    )
4404  );
4405  assert_eq!(
4406    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).setTag as *const _ as usize },
4407    296usize,
4408    concat!(
4409      "Offset of field: ",
4410      stringify!(playdate_sprite),
4411      "::",
4412      stringify!(setTag)
4413    )
4414  );
4415  assert_eq!(
4416    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).getTag as *const _ as usize },
4417    304usize,
4418    concat!(
4419      "Offset of field: ",
4420      stringify!(playdate_sprite),
4421      "::",
4422      stringify!(getTag)
4423    )
4424  );
4425  assert_eq!(
4426    unsafe {
4427      &(*(::core::ptr::null::<playdate_sprite>())).setIgnoresDrawOffset as *const _ as usize
4428    },
4429    312usize,
4430    concat!(
4431      "Offset of field: ",
4432      stringify!(playdate_sprite),
4433      "::",
4434      stringify!(setIgnoresDrawOffset)
4435    )
4436  );
4437  assert_eq!(
4438    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).setUpdateFunction as *const _ as usize },
4439    320usize,
4440    concat!(
4441      "Offset of field: ",
4442      stringify!(playdate_sprite),
4443      "::",
4444      stringify!(setUpdateFunction)
4445    )
4446  );
4447  assert_eq!(
4448    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).setDrawFunction as *const _ as usize },
4449    328usize,
4450    concat!(
4451      "Offset of field: ",
4452      stringify!(playdate_sprite),
4453      "::",
4454      stringify!(setDrawFunction)
4455    )
4456  );
4457  assert_eq!(
4458    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).getPosition as *const _ as usize },
4459    336usize,
4460    concat!(
4461      "Offset of field: ",
4462      stringify!(playdate_sprite),
4463      "::",
4464      stringify!(getPosition)
4465    )
4466  );
4467  assert_eq!(
4468    unsafe {
4469      &(*(::core::ptr::null::<playdate_sprite>())).resetCollisionWorld as *const _ as usize
4470    },
4471    344usize,
4472    concat!(
4473      "Offset of field: ",
4474      stringify!(playdate_sprite),
4475      "::",
4476      stringify!(resetCollisionWorld)
4477    )
4478  );
4479  assert_eq!(
4480    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).setCollideRect as *const _ as usize },
4481    352usize,
4482    concat!(
4483      "Offset of field: ",
4484      stringify!(playdate_sprite),
4485      "::",
4486      stringify!(setCollideRect)
4487    )
4488  );
4489  assert_eq!(
4490    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).getCollideRect as *const _ as usize },
4491    360usize,
4492    concat!(
4493      "Offset of field: ",
4494      stringify!(playdate_sprite),
4495      "::",
4496      stringify!(getCollideRect)
4497    )
4498  );
4499  assert_eq!(
4500    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).clearCollideRect as *const _ as usize },
4501    368usize,
4502    concat!(
4503      "Offset of field: ",
4504      stringify!(playdate_sprite),
4505      "::",
4506      stringify!(clearCollideRect)
4507    )
4508  );
4509  assert_eq!(
4510    unsafe {
4511      &(*(::core::ptr::null::<playdate_sprite>())).setCollisionResponseFunction as *const _ as usize
4512    },
4513    376usize,
4514    concat!(
4515      "Offset of field: ",
4516      stringify!(playdate_sprite),
4517      "::",
4518      stringify!(setCollisionResponseFunction)
4519    )
4520  );
4521  assert_eq!(
4522    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).checkCollisions as *const _ as usize },
4523    384usize,
4524    concat!(
4525      "Offset of field: ",
4526      stringify!(playdate_sprite),
4527      "::",
4528      stringify!(checkCollisions)
4529    )
4530  );
4531  assert_eq!(
4532    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).moveWithCollisions as *const _ as usize },
4533    392usize,
4534    concat!(
4535      "Offset of field: ",
4536      stringify!(playdate_sprite),
4537      "::",
4538      stringify!(moveWithCollisions)
4539    )
4540  );
4541  assert_eq!(
4542    unsafe {
4543      &(*(::core::ptr::null::<playdate_sprite>())).querySpritesAtPoint as *const _ as usize
4544    },
4545    400usize,
4546    concat!(
4547      "Offset of field: ",
4548      stringify!(playdate_sprite),
4549      "::",
4550      stringify!(querySpritesAtPoint)
4551    )
4552  );
4553  assert_eq!(
4554    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).querySpritesInRect as *const _ as usize },
4555    408usize,
4556    concat!(
4557      "Offset of field: ",
4558      stringify!(playdate_sprite),
4559      "::",
4560      stringify!(querySpritesInRect)
4561    )
4562  );
4563  assert_eq!(
4564    unsafe {
4565      &(*(::core::ptr::null::<playdate_sprite>())).querySpritesAlongLine as *const _ as usize
4566    },
4567    416usize,
4568    concat!(
4569      "Offset of field: ",
4570      stringify!(playdate_sprite),
4571      "::",
4572      stringify!(querySpritesAlongLine)
4573    )
4574  );
4575  assert_eq!(
4576    unsafe {
4577      &(*(::core::ptr::null::<playdate_sprite>())).querySpriteInfoAlongLine as *const _ as usize
4578    },
4579    424usize,
4580    concat!(
4581      "Offset of field: ",
4582      stringify!(playdate_sprite),
4583      "::",
4584      stringify!(querySpriteInfoAlongLine)
4585    )
4586  );
4587  assert_eq!(
4588    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).overlappingSprites as *const _ as usize },
4589    432usize,
4590    concat!(
4591      "Offset of field: ",
4592      stringify!(playdate_sprite),
4593      "::",
4594      stringify!(overlappingSprites)
4595    )
4596  );
4597  assert_eq!(
4598    unsafe {
4599      &(*(::core::ptr::null::<playdate_sprite>())).allOverlappingSprites as *const _ as usize
4600    },
4601    440usize,
4602    concat!(
4603      "Offset of field: ",
4604      stringify!(playdate_sprite),
4605      "::",
4606      stringify!(allOverlappingSprites)
4607    )
4608  );
4609  assert_eq!(
4610    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).setStencilPattern as *const _ as usize },
4611    448usize,
4612    concat!(
4613      "Offset of field: ",
4614      stringify!(playdate_sprite),
4615      "::",
4616      stringify!(setStencilPattern)
4617    )
4618  );
4619  assert_eq!(
4620    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).clearStencil as *const _ as usize },
4621    456usize,
4622    concat!(
4623      "Offset of field: ",
4624      stringify!(playdate_sprite),
4625      "::",
4626      stringify!(clearStencil)
4627    )
4628  );
4629  assert_eq!(
4630    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).setUserdata as *const _ as usize },
4631    464usize,
4632    concat!(
4633      "Offset of field: ",
4634      stringify!(playdate_sprite),
4635      "::",
4636      stringify!(setUserdata)
4637    )
4638  );
4639  assert_eq!(
4640    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).getUserdata as *const _ as usize },
4641    472usize,
4642    concat!(
4643      "Offset of field: ",
4644      stringify!(playdate_sprite),
4645      "::",
4646      stringify!(getUserdata)
4647    )
4648  );
4649  assert_eq!(
4650    unsafe { &(*(::core::ptr::null::<playdate_sprite>())).setStencilImage as *const _ as usize },
4651    480usize,
4652    concat!(
4653      "Offset of field: ",
4654      stringify!(playdate_sprite),
4655      "::",
4656      stringify!(setStencilImage)
4657    )
4658  );
4659}
4660impl SoundFormat {
4661  pub const kSound8bitMono: SoundFormat = SoundFormat(0);
4662}
4663impl SoundFormat {
4664  pub const kSound8bitStereo: SoundFormat = SoundFormat(1);
4665}
4666impl SoundFormat {
4667  pub const kSound16bitMono: SoundFormat = SoundFormat(2);
4668}
4669impl SoundFormat {
4670  pub const kSound16bitStereo: SoundFormat = SoundFormat(3);
4671}
4672impl SoundFormat {
4673  pub const kSoundADPCMMono: SoundFormat = SoundFormat(4);
4674}
4675impl SoundFormat {
4676  pub const kSoundADPCMStereo: SoundFormat = SoundFormat(5);
4677}
4678#[repr(transparent)]
4679#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
4680pub struct SoundFormat(pub super::ctypes::c_int);
4681#[repr(C)]
4682#[derive(Debug, Copy, Clone)]
4683pub struct SoundSource {
4684  _unused: [u8; 0],
4685}
4686pub type sndCallbackProc = ::core::option::Option<unsafe extern "C" fn(c: *mut SoundSource)>;
4687#[repr(C)]
4688#[derive(Debug, Copy, Clone)]
4689pub struct playdate_sound_source {
4690  pub setVolume:
4691    ::core::option::Option<unsafe extern "C" fn(c: *mut SoundSource, lvol: f32, rvol: f32)>,
4692  pub getVolume: ::core::option::Option<
4693    unsafe extern "C" fn(c: *mut SoundSource, outl: *mut f32, outr: *mut f32),
4694  >,
4695  pub isPlaying:
4696    ::core::option::Option<unsafe extern "C" fn(c: *mut SoundSource) -> super::ctypes::c_int>,
4697  pub setFinishCallback:
4698    ::core::option::Option<unsafe extern "C" fn(c: *mut SoundSource, callback: sndCallbackProc)>,
4699}
4700#[test]
4701fn bindgen_test_layout_playdate_sound_source() {
4702  assert_eq!(
4703    ::core::mem::size_of::<playdate_sound_source>(),
4704    32usize,
4705    concat!("Size of: ", stringify!(playdate_sound_source))
4706  );
4707  assert_eq!(
4708    ::core::mem::align_of::<playdate_sound_source>(),
4709    8usize,
4710    concat!("Alignment of ", stringify!(playdate_sound_source))
4711  );
4712  assert_eq!(
4713    unsafe { &(*(::core::ptr::null::<playdate_sound_source>())).setVolume as *const _ as usize },
4714    0usize,
4715    concat!(
4716      "Offset of field: ",
4717      stringify!(playdate_sound_source),
4718      "::",
4719      stringify!(setVolume)
4720    )
4721  );
4722  assert_eq!(
4723    unsafe { &(*(::core::ptr::null::<playdate_sound_source>())).getVolume as *const _ as usize },
4724    8usize,
4725    concat!(
4726      "Offset of field: ",
4727      stringify!(playdate_sound_source),
4728      "::",
4729      stringify!(getVolume)
4730    )
4731  );
4732  assert_eq!(
4733    unsafe { &(*(::core::ptr::null::<playdate_sound_source>())).isPlaying as *const _ as usize },
4734    16usize,
4735    concat!(
4736      "Offset of field: ",
4737      stringify!(playdate_sound_source),
4738      "::",
4739      stringify!(isPlaying)
4740    )
4741  );
4742  assert_eq!(
4743    unsafe {
4744      &(*(::core::ptr::null::<playdate_sound_source>())).setFinishCallback as *const _ as usize
4745    },
4746    24usize,
4747    concat!(
4748      "Offset of field: ",
4749      stringify!(playdate_sound_source),
4750      "::",
4751      stringify!(setFinishCallback)
4752    )
4753  );
4754}
4755#[repr(C)]
4756#[derive(Debug, Copy, Clone)]
4757pub struct FilePlayer {
4758  _unused: [u8; 0],
4759}
4760#[repr(C)]
4761#[derive(Debug, Copy, Clone)]
4762pub struct playdate_sound_fileplayer {
4763  pub newPlayer: ::core::option::Option<unsafe extern "C" fn() -> *mut FilePlayer>,
4764  pub freePlayer: ::core::option::Option<unsafe extern "C" fn(player: *mut FilePlayer)>,
4765  pub loadIntoPlayer: ::core::option::Option<
4766    unsafe extern "C" fn(
4767      player: *mut FilePlayer,
4768      path: *const super::ctypes::c_char,
4769    ) -> super::ctypes::c_int,
4770  >,
4771  pub setBufferLength:
4772    ::core::option::Option<unsafe extern "C" fn(player: *mut FilePlayer, bufferLen: f32)>,
4773  pub play: ::core::option::Option<
4774    unsafe extern "C" fn(
4775      player: *mut FilePlayer,
4776      repeat: super::ctypes::c_int,
4777    ) -> super::ctypes::c_int,
4778  >,
4779  pub isPlaying:
4780    ::core::option::Option<unsafe extern "C" fn(player: *mut FilePlayer) -> super::ctypes::c_int>,
4781  pub pause: ::core::option::Option<unsafe extern "C" fn(player: *mut FilePlayer)>,
4782  pub stop: ::core::option::Option<unsafe extern "C" fn(player: *mut FilePlayer)>,
4783  pub setVolume:
4784    ::core::option::Option<unsafe extern "C" fn(player: *mut FilePlayer, left: f32, right: f32)>,
4785  pub getVolume: ::core::option::Option<
4786    unsafe extern "C" fn(player: *mut FilePlayer, left: *mut f32, right: *mut f32),
4787  >,
4788  pub getLength: ::core::option::Option<unsafe extern "C" fn(player: *mut FilePlayer) -> f32>,
4789  pub setOffset: ::core::option::Option<unsafe extern "C" fn(player: *mut FilePlayer, offset: f32)>,
4790  pub setRate: ::core::option::Option<unsafe extern "C" fn(player: *mut FilePlayer, rate: f32)>,
4791  pub setLoopRange:
4792    ::core::option::Option<unsafe extern "C" fn(player: *mut FilePlayer, start: f32, end: f32)>,
4793  pub didUnderrun:
4794    ::core::option::Option<unsafe extern "C" fn(player: *mut FilePlayer) -> super::ctypes::c_int>,
4795  pub setFinishCallback: ::core::option::Option<
4796    unsafe extern "C" fn(player: *mut FilePlayer, callback: sndCallbackProc),
4797  >,
4798  pub setLoopCallback: ::core::option::Option<
4799    unsafe extern "C" fn(player: *mut FilePlayer, callback: sndCallbackProc),
4800  >,
4801  pub getOffset: ::core::option::Option<unsafe extern "C" fn(player: *mut FilePlayer) -> f32>,
4802  pub getRate: ::core::option::Option<unsafe extern "C" fn(player: *mut FilePlayer) -> f32>,
4803  pub setStopOnUnderrun: ::core::option::Option<
4804    unsafe extern "C" fn(player: *mut FilePlayer, flag: super::ctypes::c_int),
4805  >,
4806  pub fadeVolume: ::core::option::Option<
4807    unsafe extern "C" fn(
4808      player: *mut FilePlayer,
4809      left: f32,
4810      right: f32,
4811      len: i32,
4812      finishCallback: sndCallbackProc,
4813    ),
4814  >,
4815  pub setMP3StreamSource: ::core::option::Option<
4816    unsafe extern "C" fn(
4817      player: *mut FilePlayer,
4818      dataSource: ::core::option::Option<
4819        unsafe extern "C" fn(
4820          data: *mut u8,
4821          bytes: super::ctypes::c_int,
4822          userdata: *mut super::ctypes::c_void,
4823        ) -> super::ctypes::c_int,
4824      >,
4825      userdata: *mut super::ctypes::c_void,
4826      bufferLen: f32,
4827    ),
4828  >,
4829}
4830#[test]
4831fn bindgen_test_layout_playdate_sound_fileplayer() {
4832  assert_eq!(
4833    ::core::mem::size_of::<playdate_sound_fileplayer>(),
4834    176usize,
4835    concat!("Size of: ", stringify!(playdate_sound_fileplayer))
4836  );
4837  assert_eq!(
4838    ::core::mem::align_of::<playdate_sound_fileplayer>(),
4839    8usize,
4840    concat!("Alignment of ", stringify!(playdate_sound_fileplayer))
4841  );
4842  assert_eq!(
4843    unsafe {
4844      &(*(::core::ptr::null::<playdate_sound_fileplayer>())).newPlayer as *const _ as usize
4845    },
4846    0usize,
4847    concat!(
4848      "Offset of field: ",
4849      stringify!(playdate_sound_fileplayer),
4850      "::",
4851      stringify!(newPlayer)
4852    )
4853  );
4854  assert_eq!(
4855    unsafe {
4856      &(*(::core::ptr::null::<playdate_sound_fileplayer>())).freePlayer as *const _ as usize
4857    },
4858    8usize,
4859    concat!(
4860      "Offset of field: ",
4861      stringify!(playdate_sound_fileplayer),
4862      "::",
4863      stringify!(freePlayer)
4864    )
4865  );
4866  assert_eq!(
4867    unsafe {
4868      &(*(::core::ptr::null::<playdate_sound_fileplayer>())).loadIntoPlayer as *const _ as usize
4869    },
4870    16usize,
4871    concat!(
4872      "Offset of field: ",
4873      stringify!(playdate_sound_fileplayer),
4874      "::",
4875      stringify!(loadIntoPlayer)
4876    )
4877  );
4878  assert_eq!(
4879    unsafe {
4880      &(*(::core::ptr::null::<playdate_sound_fileplayer>())).setBufferLength as *const _ as usize
4881    },
4882    24usize,
4883    concat!(
4884      "Offset of field: ",
4885      stringify!(playdate_sound_fileplayer),
4886      "::",
4887      stringify!(setBufferLength)
4888    )
4889  );
4890  assert_eq!(
4891    unsafe { &(*(::core::ptr::null::<playdate_sound_fileplayer>())).play as *const _ as usize },
4892    32usize,
4893    concat!(
4894      "Offset of field: ",
4895      stringify!(playdate_sound_fileplayer),
4896      "::",
4897      stringify!(play)
4898    )
4899  );
4900  assert_eq!(
4901    unsafe {
4902      &(*(::core::ptr::null::<playdate_sound_fileplayer>())).isPlaying as *const _ as usize
4903    },
4904    40usize,
4905    concat!(
4906      "Offset of field: ",
4907      stringify!(playdate_sound_fileplayer),
4908      "::",
4909      stringify!(isPlaying)
4910    )
4911  );
4912  assert_eq!(
4913    unsafe { &(*(::core::ptr::null::<playdate_sound_fileplayer>())).pause as *const _ as usize },
4914    48usize,
4915    concat!(
4916      "Offset of field: ",
4917      stringify!(playdate_sound_fileplayer),
4918      "::",
4919      stringify!(pause)
4920    )
4921  );
4922  assert_eq!(
4923    unsafe { &(*(::core::ptr::null::<playdate_sound_fileplayer>())).stop as *const _ as usize },
4924    56usize,
4925    concat!(
4926      "Offset of field: ",
4927      stringify!(playdate_sound_fileplayer),
4928      "::",
4929      stringify!(stop)
4930    )
4931  );
4932  assert_eq!(
4933    unsafe {
4934      &(*(::core::ptr::null::<playdate_sound_fileplayer>())).setVolume as *const _ as usize
4935    },
4936    64usize,
4937    concat!(
4938      "Offset of field: ",
4939      stringify!(playdate_sound_fileplayer),
4940      "::",
4941      stringify!(setVolume)
4942    )
4943  );
4944  assert_eq!(
4945    unsafe {
4946      &(*(::core::ptr::null::<playdate_sound_fileplayer>())).getVolume as *const _ as usize
4947    },
4948    72usize,
4949    concat!(
4950      "Offset of field: ",
4951      stringify!(playdate_sound_fileplayer),
4952      "::",
4953      stringify!(getVolume)
4954    )
4955  );
4956  assert_eq!(
4957    unsafe {
4958      &(*(::core::ptr::null::<playdate_sound_fileplayer>())).getLength as *const _ as usize
4959    },
4960    80usize,
4961    concat!(
4962      "Offset of field: ",
4963      stringify!(playdate_sound_fileplayer),
4964      "::",
4965      stringify!(getLength)
4966    )
4967  );
4968  assert_eq!(
4969    unsafe {
4970      &(*(::core::ptr::null::<playdate_sound_fileplayer>())).setOffset as *const _ as usize
4971    },
4972    88usize,
4973    concat!(
4974      "Offset of field: ",
4975      stringify!(playdate_sound_fileplayer),
4976      "::",
4977      stringify!(setOffset)
4978    )
4979  );
4980  assert_eq!(
4981    unsafe { &(*(::core::ptr::null::<playdate_sound_fileplayer>())).setRate as *const _ as usize },
4982    96usize,
4983    concat!(
4984      "Offset of field: ",
4985      stringify!(playdate_sound_fileplayer),
4986      "::",
4987      stringify!(setRate)
4988    )
4989  );
4990  assert_eq!(
4991    unsafe {
4992      &(*(::core::ptr::null::<playdate_sound_fileplayer>())).setLoopRange as *const _ as usize
4993    },
4994    104usize,
4995    concat!(
4996      "Offset of field: ",
4997      stringify!(playdate_sound_fileplayer),
4998      "::",
4999      stringify!(setLoopRange)
5000    )
5001  );
5002  assert_eq!(
5003    unsafe {
5004      &(*(::core::ptr::null::<playdate_sound_fileplayer>())).didUnderrun as *const _ as usize
5005    },
5006    112usize,
5007    concat!(
5008      "Offset of field: ",
5009      stringify!(playdate_sound_fileplayer),
5010      "::",
5011      stringify!(didUnderrun)
5012    )
5013  );
5014  assert_eq!(
5015    unsafe {
5016      &(*(::core::ptr::null::<playdate_sound_fileplayer>())).setFinishCallback as *const _ as usize
5017    },
5018    120usize,
5019    concat!(
5020      "Offset of field: ",
5021      stringify!(playdate_sound_fileplayer),
5022      "::",
5023      stringify!(setFinishCallback)
5024    )
5025  );
5026  assert_eq!(
5027    unsafe {
5028      &(*(::core::ptr::null::<playdate_sound_fileplayer>())).setLoopCallback as *const _ as usize
5029    },
5030    128usize,
5031    concat!(
5032      "Offset of field: ",
5033      stringify!(playdate_sound_fileplayer),
5034      "::",
5035      stringify!(setLoopCallback)
5036    )
5037  );
5038  assert_eq!(
5039    unsafe {
5040      &(*(::core::ptr::null::<playdate_sound_fileplayer>())).getOffset as *const _ as usize
5041    },
5042    136usize,
5043    concat!(
5044      "Offset of field: ",
5045      stringify!(playdate_sound_fileplayer),
5046      "::",
5047      stringify!(getOffset)
5048    )
5049  );
5050  assert_eq!(
5051    unsafe { &(*(::core::ptr::null::<playdate_sound_fileplayer>())).getRate as *const _ as usize },
5052    144usize,
5053    concat!(
5054      "Offset of field: ",
5055      stringify!(playdate_sound_fileplayer),
5056      "::",
5057      stringify!(getRate)
5058    )
5059  );
5060  assert_eq!(
5061    unsafe {
5062      &(*(::core::ptr::null::<playdate_sound_fileplayer>())).setStopOnUnderrun as *const _ as usize
5063    },
5064    152usize,
5065    concat!(
5066      "Offset of field: ",
5067      stringify!(playdate_sound_fileplayer),
5068      "::",
5069      stringify!(setStopOnUnderrun)
5070    )
5071  );
5072  assert_eq!(
5073    unsafe {
5074      &(*(::core::ptr::null::<playdate_sound_fileplayer>())).fadeVolume as *const _ as usize
5075    },
5076    160usize,
5077    concat!(
5078      "Offset of field: ",
5079      stringify!(playdate_sound_fileplayer),
5080      "::",
5081      stringify!(fadeVolume)
5082    )
5083  );
5084  assert_eq!(
5085    unsafe {
5086      &(*(::core::ptr::null::<playdate_sound_fileplayer>())).setMP3StreamSource as *const _ as usize
5087    },
5088    168usize,
5089    concat!(
5090      "Offset of field: ",
5091      stringify!(playdate_sound_fileplayer),
5092      "::",
5093      stringify!(setMP3StreamSource)
5094    )
5095  );
5096}
5097#[repr(C)]
5098#[derive(Debug, Copy, Clone)]
5099pub struct AudioSample {
5100  _unused: [u8; 0],
5101}
5102#[repr(C)]
5103#[derive(Debug, Copy, Clone)]
5104pub struct SamplePlayer {
5105  _unused: [u8; 0],
5106}
5107#[repr(C)]
5108#[derive(Debug, Copy, Clone)]
5109pub struct playdate_sound_sample {
5110  pub newSampleBuffer: ::core::option::Option<
5111    unsafe extern "C" fn(byteCount: super::ctypes::c_int) -> *mut AudioSample,
5112  >,
5113  pub loadIntoSample: ::core::option::Option<
5114    unsafe extern "C" fn(
5115      sample: *mut AudioSample,
5116      path: *const super::ctypes::c_char,
5117    ) -> super::ctypes::c_int,
5118  >,
5119  pub load: ::core::option::Option<
5120    unsafe extern "C" fn(path: *const super::ctypes::c_char) -> *mut AudioSample,
5121  >,
5122  pub newSampleFromData: ::core::option::Option<
5123    unsafe extern "C" fn(
5124      data: *mut u8,
5125      format: SoundFormat,
5126      sampleRate: u32,
5127      byteCount: super::ctypes::c_int,
5128    ) -> *mut AudioSample,
5129  >,
5130  pub getData: ::core::option::Option<
5131    unsafe extern "C" fn(
5132      sample: *mut AudioSample,
5133      data: *mut *mut u8,
5134      format: *mut SoundFormat,
5135      sampleRate: *mut u32,
5136      bytelength: *mut u32,
5137    ),
5138  >,
5139  pub freeSample: ::core::option::Option<unsafe extern "C" fn(sample: *mut AudioSample)>,
5140  pub getLength: ::core::option::Option<unsafe extern "C" fn(sample: *mut AudioSample) -> f32>,
5141}
5142#[test]
5143fn bindgen_test_layout_playdate_sound_sample() {
5144  assert_eq!(
5145    ::core::mem::size_of::<playdate_sound_sample>(),
5146    56usize,
5147    concat!("Size of: ", stringify!(playdate_sound_sample))
5148  );
5149  assert_eq!(
5150    ::core::mem::align_of::<playdate_sound_sample>(),
5151    8usize,
5152    concat!("Alignment of ", stringify!(playdate_sound_sample))
5153  );
5154  assert_eq!(
5155    unsafe {
5156      &(*(::core::ptr::null::<playdate_sound_sample>())).newSampleBuffer as *const _ as usize
5157    },
5158    0usize,
5159    concat!(
5160      "Offset of field: ",
5161      stringify!(playdate_sound_sample),
5162      "::",
5163      stringify!(newSampleBuffer)
5164    )
5165  );
5166  assert_eq!(
5167    unsafe {
5168      &(*(::core::ptr::null::<playdate_sound_sample>())).loadIntoSample as *const _ as usize
5169    },
5170    8usize,
5171    concat!(
5172      "Offset of field: ",
5173      stringify!(playdate_sound_sample),
5174      "::",
5175      stringify!(loadIntoSample)
5176    )
5177  );
5178  assert_eq!(
5179    unsafe { &(*(::core::ptr::null::<playdate_sound_sample>())).load as *const _ as usize },
5180    16usize,
5181    concat!(
5182      "Offset of field: ",
5183      stringify!(playdate_sound_sample),
5184      "::",
5185      stringify!(load)
5186    )
5187  );
5188  assert_eq!(
5189    unsafe {
5190      &(*(::core::ptr::null::<playdate_sound_sample>())).newSampleFromData as *const _ as usize
5191    },
5192    24usize,
5193    concat!(
5194      "Offset of field: ",
5195      stringify!(playdate_sound_sample),
5196      "::",
5197      stringify!(newSampleFromData)
5198    )
5199  );
5200  assert_eq!(
5201    unsafe { &(*(::core::ptr::null::<playdate_sound_sample>())).getData as *const _ as usize },
5202    32usize,
5203    concat!(
5204      "Offset of field: ",
5205      stringify!(playdate_sound_sample),
5206      "::",
5207      stringify!(getData)
5208    )
5209  );
5210  assert_eq!(
5211    unsafe { &(*(::core::ptr::null::<playdate_sound_sample>())).freeSample as *const _ as usize },
5212    40usize,
5213    concat!(
5214      "Offset of field: ",
5215      stringify!(playdate_sound_sample),
5216      "::",
5217      stringify!(freeSample)
5218    )
5219  );
5220  assert_eq!(
5221    unsafe { &(*(::core::ptr::null::<playdate_sound_sample>())).getLength as *const _ as usize },
5222    48usize,
5223    concat!(
5224      "Offset of field: ",
5225      stringify!(playdate_sound_sample),
5226      "::",
5227      stringify!(getLength)
5228    )
5229  );
5230}
5231#[repr(C)]
5232#[derive(Debug, Copy, Clone)]
5233pub struct playdate_sound_sampleplayer {
5234  pub newPlayer: ::core::option::Option<unsafe extern "C" fn() -> *mut SamplePlayer>,
5235  pub freePlayer: ::core::option::Option<unsafe extern "C" fn(player: *mut SamplePlayer)>,
5236  pub setSample: ::core::option::Option<
5237    unsafe extern "C" fn(player: *mut SamplePlayer, sample: *mut AudioSample),
5238  >,
5239  pub play: ::core::option::Option<
5240    unsafe extern "C" fn(
5241      player: *mut SamplePlayer,
5242      repeat: super::ctypes::c_int,
5243      rate: f32,
5244    ) -> super::ctypes::c_int,
5245  >,
5246  pub isPlaying:
5247    ::core::option::Option<unsafe extern "C" fn(player: *mut SamplePlayer) -> super::ctypes::c_int>,
5248  pub stop: ::core::option::Option<unsafe extern "C" fn(player: *mut SamplePlayer)>,
5249  pub setVolume:
5250    ::core::option::Option<unsafe extern "C" fn(player: *mut SamplePlayer, left: f32, right: f32)>,
5251  pub getVolume: ::core::option::Option<
5252    unsafe extern "C" fn(player: *mut SamplePlayer, left: *mut f32, right: *mut f32),
5253  >,
5254  pub getLength: ::core::option::Option<unsafe extern "C" fn(player: *mut SamplePlayer) -> f32>,
5255  pub setOffset:
5256    ::core::option::Option<unsafe extern "C" fn(player: *mut SamplePlayer, offset: f32)>,
5257  pub setRate: ::core::option::Option<unsafe extern "C" fn(player: *mut SamplePlayer, rate: f32)>,
5258  pub setPlayRange: ::core::option::Option<
5259    unsafe extern "C" fn(
5260      player: *mut SamplePlayer,
5261      start: super::ctypes::c_int,
5262      end: super::ctypes::c_int,
5263    ),
5264  >,
5265  pub setFinishCallback: ::core::option::Option<
5266    unsafe extern "C" fn(player: *mut SamplePlayer, callback: sndCallbackProc),
5267  >,
5268  pub setLoopCallback: ::core::option::Option<
5269    unsafe extern "C" fn(player: *mut SamplePlayer, callback: sndCallbackProc),
5270  >,
5271  pub getOffset: ::core::option::Option<unsafe extern "C" fn(player: *mut SamplePlayer) -> f32>,
5272  pub getRate: ::core::option::Option<unsafe extern "C" fn(player: *mut SamplePlayer) -> f32>,
5273  pub setPaused: ::core::option::Option<
5274    unsafe extern "C" fn(player: *mut SamplePlayer, flag: super::ctypes::c_int),
5275  >,
5276}
5277#[test]
5278fn bindgen_test_layout_playdate_sound_sampleplayer() {
5279  assert_eq!(
5280    ::core::mem::size_of::<playdate_sound_sampleplayer>(),
5281    136usize,
5282    concat!("Size of: ", stringify!(playdate_sound_sampleplayer))
5283  );
5284  assert_eq!(
5285    ::core::mem::align_of::<playdate_sound_sampleplayer>(),
5286    8usize,
5287    concat!("Alignment of ", stringify!(playdate_sound_sampleplayer))
5288  );
5289  assert_eq!(
5290    unsafe {
5291      &(*(::core::ptr::null::<playdate_sound_sampleplayer>())).newPlayer as *const _ as usize
5292    },
5293    0usize,
5294    concat!(
5295      "Offset of field: ",
5296      stringify!(playdate_sound_sampleplayer),
5297      "::",
5298      stringify!(newPlayer)
5299    )
5300  );
5301  assert_eq!(
5302    unsafe {
5303      &(*(::core::ptr::null::<playdate_sound_sampleplayer>())).freePlayer as *const _ as usize
5304    },
5305    8usize,
5306    concat!(
5307      "Offset of field: ",
5308      stringify!(playdate_sound_sampleplayer),
5309      "::",
5310      stringify!(freePlayer)
5311    )
5312  );
5313  assert_eq!(
5314    unsafe {
5315      &(*(::core::ptr::null::<playdate_sound_sampleplayer>())).setSample as *const _ as usize
5316    },
5317    16usize,
5318    concat!(
5319      "Offset of field: ",
5320      stringify!(playdate_sound_sampleplayer),
5321      "::",
5322      stringify!(setSample)
5323    )
5324  );
5325  assert_eq!(
5326    unsafe { &(*(::core::ptr::null::<playdate_sound_sampleplayer>())).play as *const _ as usize },
5327    24usize,
5328    concat!(
5329      "Offset of field: ",
5330      stringify!(playdate_sound_sampleplayer),
5331      "::",
5332      stringify!(play)
5333    )
5334  );
5335  assert_eq!(
5336    unsafe {
5337      &(*(::core::ptr::null::<playdate_sound_sampleplayer>())).isPlaying as *const _ as usize
5338    },
5339    32usize,
5340    concat!(
5341      "Offset of field: ",
5342      stringify!(playdate_sound_sampleplayer),
5343      "::",
5344      stringify!(isPlaying)
5345    )
5346  );
5347  assert_eq!(
5348    unsafe { &(*(::core::ptr::null::<playdate_sound_sampleplayer>())).stop as *const _ as usize },
5349    40usize,
5350    concat!(
5351      "Offset of field: ",
5352      stringify!(playdate_sound_sampleplayer),
5353      "::",
5354      stringify!(stop)
5355    )
5356  );
5357  assert_eq!(
5358    unsafe {
5359      &(*(::core::ptr::null::<playdate_sound_sampleplayer>())).setVolume as *const _ as usize
5360    },
5361    48usize,
5362    concat!(
5363      "Offset of field: ",
5364      stringify!(playdate_sound_sampleplayer),
5365      "::",
5366      stringify!(setVolume)
5367    )
5368  );
5369  assert_eq!(
5370    unsafe {
5371      &(*(::core::ptr::null::<playdate_sound_sampleplayer>())).getVolume as *const _ as usize
5372    },
5373    56usize,
5374    concat!(
5375      "Offset of field: ",
5376      stringify!(playdate_sound_sampleplayer),
5377      "::",
5378      stringify!(getVolume)
5379    )
5380  );
5381  assert_eq!(
5382    unsafe {
5383      &(*(::core::ptr::null::<playdate_sound_sampleplayer>())).getLength as *const _ as usize
5384    },
5385    64usize,
5386    concat!(
5387      "Offset of field: ",
5388      stringify!(playdate_sound_sampleplayer),
5389      "::",
5390      stringify!(getLength)
5391    )
5392  );
5393  assert_eq!(
5394    unsafe {
5395      &(*(::core::ptr::null::<playdate_sound_sampleplayer>())).setOffset as *const _ as usize
5396    },
5397    72usize,
5398    concat!(
5399      "Offset of field: ",
5400      stringify!(playdate_sound_sampleplayer),
5401      "::",
5402      stringify!(setOffset)
5403    )
5404  );
5405  assert_eq!(
5406    unsafe {
5407      &(*(::core::ptr::null::<playdate_sound_sampleplayer>())).setRate as *const _ as usize
5408    },
5409    80usize,
5410    concat!(
5411      "Offset of field: ",
5412      stringify!(playdate_sound_sampleplayer),
5413      "::",
5414      stringify!(setRate)
5415    )
5416  );
5417  assert_eq!(
5418    unsafe {
5419      &(*(::core::ptr::null::<playdate_sound_sampleplayer>())).setPlayRange as *const _ as usize
5420    },
5421    88usize,
5422    concat!(
5423      "Offset of field: ",
5424      stringify!(playdate_sound_sampleplayer),
5425      "::",
5426      stringify!(setPlayRange)
5427    )
5428  );
5429  assert_eq!(
5430    unsafe {
5431      &(*(::core::ptr::null::<playdate_sound_sampleplayer>())).setFinishCallback as *const _
5432        as usize
5433    },
5434    96usize,
5435    concat!(
5436      "Offset of field: ",
5437      stringify!(playdate_sound_sampleplayer),
5438      "::",
5439      stringify!(setFinishCallback)
5440    )
5441  );
5442  assert_eq!(
5443    unsafe {
5444      &(*(::core::ptr::null::<playdate_sound_sampleplayer>())).setLoopCallback as *const _ as usize
5445    },
5446    104usize,
5447    concat!(
5448      "Offset of field: ",
5449      stringify!(playdate_sound_sampleplayer),
5450      "::",
5451      stringify!(setLoopCallback)
5452    )
5453  );
5454  assert_eq!(
5455    unsafe {
5456      &(*(::core::ptr::null::<playdate_sound_sampleplayer>())).getOffset as *const _ as usize
5457    },
5458    112usize,
5459    concat!(
5460      "Offset of field: ",
5461      stringify!(playdate_sound_sampleplayer),
5462      "::",
5463      stringify!(getOffset)
5464    )
5465  );
5466  assert_eq!(
5467    unsafe {
5468      &(*(::core::ptr::null::<playdate_sound_sampleplayer>())).getRate as *const _ as usize
5469    },
5470    120usize,
5471    concat!(
5472      "Offset of field: ",
5473      stringify!(playdate_sound_sampleplayer),
5474      "::",
5475      stringify!(getRate)
5476    )
5477  );
5478  assert_eq!(
5479    unsafe {
5480      &(*(::core::ptr::null::<playdate_sound_sampleplayer>())).setPaused as *const _ as usize
5481    },
5482    128usize,
5483    concat!(
5484      "Offset of field: ",
5485      stringify!(playdate_sound_sampleplayer),
5486      "::",
5487      stringify!(setPaused)
5488    )
5489  );
5490}
5491#[repr(C)]
5492#[derive(Debug, Copy, Clone)]
5493pub struct PDSynthSignalValue {
5494  _unused: [u8; 0],
5495}
5496impl LFOType {
5497  pub const kLFOTypeSquare: LFOType = LFOType(0);
5498}
5499impl LFOType {
5500  pub const kLFOTypeTriangle: LFOType = LFOType(1);
5501}
5502impl LFOType {
5503  pub const kLFOTypeSine: LFOType = LFOType(2);
5504}
5505impl LFOType {
5506  pub const kLFOTypeSampleAndHold: LFOType = LFOType(3);
5507}
5508impl LFOType {
5509  pub const kLFOTypeSawtoothUp: LFOType = LFOType(4);
5510}
5511impl LFOType {
5512  pub const kLFOTypeSawtoothDown: LFOType = LFOType(5);
5513}
5514impl LFOType {
5515  pub const kLFOTypeArpeggiator: LFOType = LFOType(6);
5516}
5517impl LFOType {
5518  pub const kLFOTypeFunction: LFOType = LFOType(7);
5519}
5520#[repr(transparent)]
5521#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
5522pub struct LFOType(pub super::ctypes::c_int);
5523#[repr(C)]
5524#[derive(Debug, Copy, Clone)]
5525pub struct PDSynthLFO {
5526  _unused: [u8; 0],
5527}
5528#[repr(C)]
5529#[derive(Debug, Copy, Clone)]
5530pub struct playdate_sound_lfo {
5531  pub newLFO: ::core::option::Option<unsafe extern "C" fn(type_: LFOType) -> *mut PDSynthLFO>,
5532  pub freeLFO: ::core::option::Option<unsafe extern "C" fn(lfo: *mut PDSynthLFO)>,
5533  pub setType: ::core::option::Option<unsafe extern "C" fn(lfo: *mut PDSynthLFO, type_: LFOType)>,
5534  pub setRate: ::core::option::Option<unsafe extern "C" fn(lfo: *mut PDSynthLFO, rate: f32)>,
5535  pub setPhase: ::core::option::Option<unsafe extern "C" fn(lfo: *mut PDSynthLFO, phase: f32)>,
5536  pub setCenter: ::core::option::Option<unsafe extern "C" fn(lfo: *mut PDSynthLFO, center: f32)>,
5537  pub setDepth: ::core::option::Option<unsafe extern "C" fn(lfo: *mut PDSynthLFO, depth: f32)>,
5538  pub setArpeggiation: ::core::option::Option<
5539    unsafe extern "C" fn(lfo: *mut PDSynthLFO, nSteps: super::ctypes::c_int, steps: *mut f32),
5540  >,
5541  pub setFunction: ::core::option::Option<
5542    unsafe extern "C" fn(
5543      lfo: *mut PDSynthLFO,
5544      lfoFunc: ::core::option::Option<
5545        unsafe extern "C" fn(lfo: *mut PDSynthLFO, userdata: *mut super::ctypes::c_void) -> f32,
5546      >,
5547      userdata: *mut super::ctypes::c_void,
5548      interpolate: super::ctypes::c_int,
5549    ),
5550  >,
5551  pub setDelay:
5552    ::core::option::Option<unsafe extern "C" fn(lfo: *mut PDSynthLFO, holdoff: f32, ramptime: f32)>,
5553  pub setRetrigger:
5554    ::core::option::Option<unsafe extern "C" fn(lfo: *mut PDSynthLFO, flag: super::ctypes::c_int)>,
5555  pub getValue: ::core::option::Option<unsafe extern "C" fn(lfo: *mut PDSynthLFO) -> f32>,
5556  pub setGlobal: ::core::option::Option<
5557    unsafe extern "C" fn(lfo: *mut PDSynthLFO, global: super::ctypes::c_int),
5558  >,
5559}
5560#[test]
5561fn bindgen_test_layout_playdate_sound_lfo() {
5562  assert_eq!(
5563    ::core::mem::size_of::<playdate_sound_lfo>(),
5564    104usize,
5565    concat!("Size of: ", stringify!(playdate_sound_lfo))
5566  );
5567  assert_eq!(
5568    ::core::mem::align_of::<playdate_sound_lfo>(),
5569    8usize,
5570    concat!("Alignment of ", stringify!(playdate_sound_lfo))
5571  );
5572  assert_eq!(
5573    unsafe { &(*(::core::ptr::null::<playdate_sound_lfo>())).newLFO as *const _ as usize },
5574    0usize,
5575    concat!(
5576      "Offset of field: ",
5577      stringify!(playdate_sound_lfo),
5578      "::",
5579      stringify!(newLFO)
5580    )
5581  );
5582  assert_eq!(
5583    unsafe { &(*(::core::ptr::null::<playdate_sound_lfo>())).freeLFO as *const _ as usize },
5584    8usize,
5585    concat!(
5586      "Offset of field: ",
5587      stringify!(playdate_sound_lfo),
5588      "::",
5589      stringify!(freeLFO)
5590    )
5591  );
5592  assert_eq!(
5593    unsafe { &(*(::core::ptr::null::<playdate_sound_lfo>())).setType as *const _ as usize },
5594    16usize,
5595    concat!(
5596      "Offset of field: ",
5597      stringify!(playdate_sound_lfo),
5598      "::",
5599      stringify!(setType)
5600    )
5601  );
5602  assert_eq!(
5603    unsafe { &(*(::core::ptr::null::<playdate_sound_lfo>())).setRate as *const _ as usize },
5604    24usize,
5605    concat!(
5606      "Offset of field: ",
5607      stringify!(playdate_sound_lfo),
5608      "::",
5609      stringify!(setRate)
5610    )
5611  );
5612  assert_eq!(
5613    unsafe { &(*(::core::ptr::null::<playdate_sound_lfo>())).setPhase as *const _ as usize },
5614    32usize,
5615    concat!(
5616      "Offset of field: ",
5617      stringify!(playdate_sound_lfo),
5618      "::",
5619      stringify!(setPhase)
5620    )
5621  );
5622  assert_eq!(
5623    unsafe { &(*(::core::ptr::null::<playdate_sound_lfo>())).setCenter as *const _ as usize },
5624    40usize,
5625    concat!(
5626      "Offset of field: ",
5627      stringify!(playdate_sound_lfo),
5628      "::",
5629      stringify!(setCenter)
5630    )
5631  );
5632  assert_eq!(
5633    unsafe { &(*(::core::ptr::null::<playdate_sound_lfo>())).setDepth as *const _ as usize },
5634    48usize,
5635    concat!(
5636      "Offset of field: ",
5637      stringify!(playdate_sound_lfo),
5638      "::",
5639      stringify!(setDepth)
5640    )
5641  );
5642  assert_eq!(
5643    unsafe { &(*(::core::ptr::null::<playdate_sound_lfo>())).setArpeggiation as *const _ as usize },
5644    56usize,
5645    concat!(
5646      "Offset of field: ",
5647      stringify!(playdate_sound_lfo),
5648      "::",
5649      stringify!(setArpeggiation)
5650    )
5651  );
5652  assert_eq!(
5653    unsafe { &(*(::core::ptr::null::<playdate_sound_lfo>())).setFunction as *const _ as usize },
5654    64usize,
5655    concat!(
5656      "Offset of field: ",
5657      stringify!(playdate_sound_lfo),
5658      "::",
5659      stringify!(setFunction)
5660    )
5661  );
5662  assert_eq!(
5663    unsafe { &(*(::core::ptr::null::<playdate_sound_lfo>())).setDelay as *const _ as usize },
5664    72usize,
5665    concat!(
5666      "Offset of field: ",
5667      stringify!(playdate_sound_lfo),
5668      "::",
5669      stringify!(setDelay)
5670    )
5671  );
5672  assert_eq!(
5673    unsafe { &(*(::core::ptr::null::<playdate_sound_lfo>())).setRetrigger as *const _ as usize },
5674    80usize,
5675    concat!(
5676      "Offset of field: ",
5677      stringify!(playdate_sound_lfo),
5678      "::",
5679      stringify!(setRetrigger)
5680    )
5681  );
5682  assert_eq!(
5683    unsafe { &(*(::core::ptr::null::<playdate_sound_lfo>())).getValue as *const _ as usize },
5684    88usize,
5685    concat!(
5686      "Offset of field: ",
5687      stringify!(playdate_sound_lfo),
5688      "::",
5689      stringify!(getValue)
5690    )
5691  );
5692  assert_eq!(
5693    unsafe { &(*(::core::ptr::null::<playdate_sound_lfo>())).setGlobal as *const _ as usize },
5694    96usize,
5695    concat!(
5696      "Offset of field: ",
5697      stringify!(playdate_sound_lfo),
5698      "::",
5699      stringify!(setGlobal)
5700    )
5701  );
5702}
5703#[repr(C)]
5704#[derive(Debug, Copy, Clone)]
5705pub struct PDSynthEnvelope {
5706  _unused: [u8; 0],
5707}
5708pub type MIDINote = f32;
5709#[repr(C)]
5710#[derive(Debug, Copy, Clone)]
5711pub struct playdate_sound_envelope {
5712  pub newEnvelope: ::core::option::Option<
5713    unsafe extern "C" fn(
5714      attack: f32,
5715      decay: f32,
5716      sustain: f32,
5717      release: f32,
5718    ) -> *mut PDSynthEnvelope,
5719  >,
5720  pub freeEnvelope: ::core::option::Option<unsafe extern "C" fn(env: *mut PDSynthEnvelope)>,
5721  pub setAttack:
5722    ::core::option::Option<unsafe extern "C" fn(env: *mut PDSynthEnvelope, attack: f32)>,
5723  pub setDecay: ::core::option::Option<unsafe extern "C" fn(env: *mut PDSynthEnvelope, decay: f32)>,
5724  pub setSustain:
5725    ::core::option::Option<unsafe extern "C" fn(env: *mut PDSynthEnvelope, sustain: f32)>,
5726  pub setRelease:
5727    ::core::option::Option<unsafe extern "C" fn(env: *mut PDSynthEnvelope, release: f32)>,
5728  pub setLegato: ::core::option::Option<
5729    unsafe extern "C" fn(env: *mut PDSynthEnvelope, flag: super::ctypes::c_int),
5730  >,
5731  pub setRetrigger: ::core::option::Option<
5732    unsafe extern "C" fn(lfo: *mut PDSynthEnvelope, flag: super::ctypes::c_int),
5733  >,
5734  pub getValue: ::core::option::Option<unsafe extern "C" fn(env: *mut PDSynthEnvelope) -> f32>,
5735}
5736#[test]
5737fn bindgen_test_layout_playdate_sound_envelope() {
5738  assert_eq!(
5739    ::core::mem::size_of::<playdate_sound_envelope>(),
5740    72usize,
5741    concat!("Size of: ", stringify!(playdate_sound_envelope))
5742  );
5743  assert_eq!(
5744    ::core::mem::align_of::<playdate_sound_envelope>(),
5745    8usize,
5746    concat!("Alignment of ", stringify!(playdate_sound_envelope))
5747  );
5748  assert_eq!(
5749    unsafe {
5750      &(*(::core::ptr::null::<playdate_sound_envelope>())).newEnvelope as *const _ as usize
5751    },
5752    0usize,
5753    concat!(
5754      "Offset of field: ",
5755      stringify!(playdate_sound_envelope),
5756      "::",
5757      stringify!(newEnvelope)
5758    )
5759  );
5760  assert_eq!(
5761    unsafe {
5762      &(*(::core::ptr::null::<playdate_sound_envelope>())).freeEnvelope as *const _ as usize
5763    },
5764    8usize,
5765    concat!(
5766      "Offset of field: ",
5767      stringify!(playdate_sound_envelope),
5768      "::",
5769      stringify!(freeEnvelope)
5770    )
5771  );
5772  assert_eq!(
5773    unsafe { &(*(::core::ptr::null::<playdate_sound_envelope>())).setAttack as *const _ as usize },
5774    16usize,
5775    concat!(
5776      "Offset of field: ",
5777      stringify!(playdate_sound_envelope),
5778      "::",
5779      stringify!(setAttack)
5780    )
5781  );
5782  assert_eq!(
5783    unsafe { &(*(::core::ptr::null::<playdate_sound_envelope>())).setDecay as *const _ as usize },
5784    24usize,
5785    concat!(
5786      "Offset of field: ",
5787      stringify!(playdate_sound_envelope),
5788      "::",
5789      stringify!(setDecay)
5790    )
5791  );
5792  assert_eq!(
5793    unsafe { &(*(::core::ptr::null::<playdate_sound_envelope>())).setSustain as *const _ as usize },
5794    32usize,
5795    concat!(
5796      "Offset of field: ",
5797      stringify!(playdate_sound_envelope),
5798      "::",
5799      stringify!(setSustain)
5800    )
5801  );
5802  assert_eq!(
5803    unsafe { &(*(::core::ptr::null::<playdate_sound_envelope>())).setRelease as *const _ as usize },
5804    40usize,
5805    concat!(
5806      "Offset of field: ",
5807      stringify!(playdate_sound_envelope),
5808      "::",
5809      stringify!(setRelease)
5810    )
5811  );
5812  assert_eq!(
5813    unsafe { &(*(::core::ptr::null::<playdate_sound_envelope>())).setLegato as *const _ as usize },
5814    48usize,
5815    concat!(
5816      "Offset of field: ",
5817      stringify!(playdate_sound_envelope),
5818      "::",
5819      stringify!(setLegato)
5820    )
5821  );
5822  assert_eq!(
5823    unsafe {
5824      &(*(::core::ptr::null::<playdate_sound_envelope>())).setRetrigger as *const _ as usize
5825    },
5826    56usize,
5827    concat!(
5828      "Offset of field: ",
5829      stringify!(playdate_sound_envelope),
5830      "::",
5831      stringify!(setRetrigger)
5832    )
5833  );
5834  assert_eq!(
5835    unsafe { &(*(::core::ptr::null::<playdate_sound_envelope>())).getValue as *const _ as usize },
5836    64usize,
5837    concat!(
5838      "Offset of field: ",
5839      stringify!(playdate_sound_envelope),
5840      "::",
5841      stringify!(getValue)
5842    )
5843  );
5844}
5845impl SoundWaveform {
5846  pub const kWaveformSquare: SoundWaveform = SoundWaveform(0);
5847}
5848impl SoundWaveform {
5849  pub const kWaveformTriangle: SoundWaveform = SoundWaveform(1);
5850}
5851impl SoundWaveform {
5852  pub const kWaveformSine: SoundWaveform = SoundWaveform(2);
5853}
5854impl SoundWaveform {
5855  pub const kWaveformNoise: SoundWaveform = SoundWaveform(3);
5856}
5857impl SoundWaveform {
5858  pub const kWaveformSawtooth: SoundWaveform = SoundWaveform(4);
5859}
5860impl SoundWaveform {
5861  pub const kWaveformPOPhase: SoundWaveform = SoundWaveform(5);
5862}
5863impl SoundWaveform {
5864  pub const kWaveformPODigital: SoundWaveform = SoundWaveform(6);
5865}
5866impl SoundWaveform {
5867  pub const kWaveformPOVosim: SoundWaveform = SoundWaveform(7);
5868}
5869#[repr(transparent)]
5870#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
5871pub struct SoundWaveform(pub super::ctypes::c_int);
5872pub type synthRenderFunc = ::core::option::Option<
5873  unsafe extern "C" fn(
5874    userdata: *mut super::ctypes::c_void,
5875    left: *mut i32,
5876    right: *mut i32,
5877    nsamples: super::ctypes::c_int,
5878    rate: u32,
5879    drate: i32,
5880    l: i32,
5881    dl: i32,
5882    r: i32,
5883    dr: i32,
5884  ) -> super::ctypes::c_int,
5885>;
5886pub type synthNoteOnFunc = ::core::option::Option<
5887  unsafe extern "C" fn(
5888    userdata: *mut super::ctypes::c_void,
5889    note: MIDINote,
5890    velocity: f32,
5891    len: f32,
5892  ),
5893>;
5894pub type synthReleaseFunc = ::core::option::Option<
5895  unsafe extern "C" fn(userdata: *mut super::ctypes::c_void, stop: super::ctypes::c_int),
5896>;
5897pub type synthSetParameterFunc = ::core::option::Option<
5898  unsafe extern "C" fn(
5899    userdata: *mut super::ctypes::c_void,
5900    parameter: u8,
5901    value: f32,
5902  ) -> super::ctypes::c_int,
5903>;
5904pub type synthDeallocFunc =
5905  ::core::option::Option<unsafe extern "C" fn(userdata: *mut super::ctypes::c_void)>;
5906#[repr(C)]
5907#[derive(Debug, Copy, Clone)]
5908pub struct PDSynth {
5909  _unused: [u8; 0],
5910}
5911#[repr(C)]
5912#[derive(Debug, Copy, Clone)]
5913pub struct playdate_sound_synth {
5914  pub newSynth: ::core::option::Option<unsafe extern "C" fn() -> *mut PDSynth>,
5915  pub freeSynth: ::core::option::Option<unsafe extern "C" fn(synth: *mut PDSynth)>,
5916  pub setWaveform:
5917    ::core::option::Option<unsafe extern "C" fn(synth: *mut PDSynth, wave: SoundWaveform)>,
5918  pub setGenerator: ::core::option::Option<
5919    unsafe extern "C" fn(
5920      synth: *mut PDSynth,
5921      render: *mut synthRenderFunc,
5922      noteOn: *mut synthNoteOnFunc,
5923      release: *mut synthReleaseFunc,
5924      setparam: *mut synthSetParameterFunc,
5925      dealloc: *mut synthDeallocFunc,
5926      userdata: *mut super::ctypes::c_void,
5927    ),
5928  >,
5929  pub setSample: ::core::option::Option<
5930    unsafe extern "C" fn(
5931      synth: *mut PDSynth,
5932      sample: *mut AudioSample,
5933      sustainStart: u32,
5934      sustainEnd: u32,
5935    ),
5936  >,
5937  pub setAttackTime: ::core::option::Option<unsafe extern "C" fn(synth: *mut PDSynth, attack: f32)>,
5938  pub setDecayTime: ::core::option::Option<unsafe extern "C" fn(synth: *mut PDSynth, decay: f32)>,
5939  pub setSustainLevel:
5940    ::core::option::Option<unsafe extern "C" fn(synth: *mut PDSynth, sustain: f32)>,
5941  pub setReleaseTime:
5942    ::core::option::Option<unsafe extern "C" fn(synth: *mut PDSynth, release: f32)>,
5943  pub setTranspose:
5944    ::core::option::Option<unsafe extern "C" fn(synth: *mut PDSynth, halfSteps: f32)>,
5945  pub setFrequencyModulator: ::core::option::Option<
5946    unsafe extern "C" fn(synth: *mut PDSynth, mod_: *mut PDSynthSignalValue),
5947  >,
5948  pub getFrequencyModulator:
5949    ::core::option::Option<unsafe extern "C" fn(synth: *mut PDSynth) -> *mut PDSynthSignalValue>,
5950  pub setAmplitudeModulator: ::core::option::Option<
5951    unsafe extern "C" fn(synth: *mut PDSynth, mod_: *mut PDSynthSignalValue),
5952  >,
5953  pub getAmplitudeModulator:
5954    ::core::option::Option<unsafe extern "C" fn(synth: *mut PDSynth) -> *mut PDSynthSignalValue>,
5955  pub getParameterCount:
5956    ::core::option::Option<unsafe extern "C" fn(synth: *mut PDSynth) -> super::ctypes::c_int>,
5957  pub setParameter: ::core::option::Option<
5958    unsafe extern "C" fn(
5959      synth: *mut PDSynth,
5960      parameter: super::ctypes::c_int,
5961      value: f32,
5962    ) -> super::ctypes::c_int,
5963  >,
5964  pub setParameterModulator: ::core::option::Option<
5965    unsafe extern "C" fn(
5966      synth: *mut PDSynth,
5967      parameter: super::ctypes::c_int,
5968      mod_: *mut PDSynthSignalValue,
5969    ),
5970  >,
5971  pub getParameterModulator: ::core::option::Option<
5972    unsafe extern "C" fn(
5973      synth: *mut PDSynth,
5974      parameter: super::ctypes::c_int,
5975    ) -> *mut PDSynthSignalValue,
5976  >,
5977  pub playNote: ::core::option::Option<
5978    unsafe extern "C" fn(synth: *mut PDSynth, freq: f32, vel: f32, len: f32, when: u32),
5979  >,
5980  pub playMIDINote: ::core::option::Option<
5981    unsafe extern "C" fn(synth: *mut PDSynth, note: MIDINote, vel: f32, len: f32, when: u32),
5982  >,
5983  pub noteOff: ::core::option::Option<unsafe extern "C" fn(synth: *mut PDSynth, when: u32)>,
5984  pub stop: ::core::option::Option<unsafe extern "C" fn(synth: *mut PDSynth)>,
5985  pub setVolume:
5986    ::core::option::Option<unsafe extern "C" fn(synth: *mut PDSynth, left: f32, right: f32)>,
5987  pub getVolume: ::core::option::Option<
5988    unsafe extern "C" fn(synth: *mut PDSynth, left: *mut f32, right: *mut f32),
5989  >,
5990  pub isPlaying:
5991    ::core::option::Option<unsafe extern "C" fn(synth: *mut PDSynth) -> super::ctypes::c_int>,
5992}
5993#[test]
5994fn bindgen_test_layout_playdate_sound_synth() {
5995  assert_eq!(
5996    ::core::mem::size_of::<playdate_sound_synth>(),
5997    200usize,
5998    concat!("Size of: ", stringify!(playdate_sound_synth))
5999  );
6000  assert_eq!(
6001    ::core::mem::align_of::<playdate_sound_synth>(),
6002    8usize,
6003    concat!("Alignment of ", stringify!(playdate_sound_synth))
6004  );
6005  assert_eq!(
6006    unsafe { &(*(::core::ptr::null::<playdate_sound_synth>())).newSynth as *const _ as usize },
6007    0usize,
6008    concat!(
6009      "Offset of field: ",
6010      stringify!(playdate_sound_synth),
6011      "::",
6012      stringify!(newSynth)
6013    )
6014  );
6015  assert_eq!(
6016    unsafe { &(*(::core::ptr::null::<playdate_sound_synth>())).freeSynth as *const _ as usize },
6017    8usize,
6018    concat!(
6019      "Offset of field: ",
6020      stringify!(playdate_sound_synth),
6021      "::",
6022      stringify!(freeSynth)
6023    )
6024  );
6025  assert_eq!(
6026    unsafe { &(*(::core::ptr::null::<playdate_sound_synth>())).setWaveform as *const _ as usize },
6027    16usize,
6028    concat!(
6029      "Offset of field: ",
6030      stringify!(playdate_sound_synth),
6031      "::",
6032      stringify!(setWaveform)
6033    )
6034  );
6035  assert_eq!(
6036    unsafe { &(*(::core::ptr::null::<playdate_sound_synth>())).setGenerator as *const _ as usize },
6037    24usize,
6038    concat!(
6039      "Offset of field: ",
6040      stringify!(playdate_sound_synth),
6041      "::",
6042      stringify!(setGenerator)
6043    )
6044  );
6045  assert_eq!(
6046    unsafe { &(*(::core::ptr::null::<playdate_sound_synth>())).setSample as *const _ as usize },
6047    32usize,
6048    concat!(
6049      "Offset of field: ",
6050      stringify!(playdate_sound_synth),
6051      "::",
6052      stringify!(setSample)
6053    )
6054  );
6055  assert_eq!(
6056    unsafe { &(*(::core::ptr::null::<playdate_sound_synth>())).setAttackTime as *const _ as usize },
6057    40usize,
6058    concat!(
6059      "Offset of field: ",
6060      stringify!(playdate_sound_synth),
6061      "::",
6062      stringify!(setAttackTime)
6063    )
6064  );
6065  assert_eq!(
6066    unsafe { &(*(::core::ptr::null::<playdate_sound_synth>())).setDecayTime as *const _ as usize },
6067    48usize,
6068    concat!(
6069      "Offset of field: ",
6070      stringify!(playdate_sound_synth),
6071      "::",
6072      stringify!(setDecayTime)
6073    )
6074  );
6075  assert_eq!(
6076    unsafe {
6077      &(*(::core::ptr::null::<playdate_sound_synth>())).setSustainLevel as *const _ as usize
6078    },
6079    56usize,
6080    concat!(
6081      "Offset of field: ",
6082      stringify!(playdate_sound_synth),
6083      "::",
6084      stringify!(setSustainLevel)
6085    )
6086  );
6087  assert_eq!(
6088    unsafe {
6089      &(*(::core::ptr::null::<playdate_sound_synth>())).setReleaseTime as *const _ as usize
6090    },
6091    64usize,
6092    concat!(
6093      "Offset of field: ",
6094      stringify!(playdate_sound_synth),
6095      "::",
6096      stringify!(setReleaseTime)
6097    )
6098  );
6099  assert_eq!(
6100    unsafe { &(*(::core::ptr::null::<playdate_sound_synth>())).setTranspose as *const _ as usize },
6101    72usize,
6102    concat!(
6103      "Offset of field: ",
6104      stringify!(playdate_sound_synth),
6105      "::",
6106      stringify!(setTranspose)
6107    )
6108  );
6109  assert_eq!(
6110    unsafe {
6111      &(*(::core::ptr::null::<playdate_sound_synth>())).setFrequencyModulator as *const _ as usize
6112    },
6113    80usize,
6114    concat!(
6115      "Offset of field: ",
6116      stringify!(playdate_sound_synth),
6117      "::",
6118      stringify!(setFrequencyModulator)
6119    )
6120  );
6121  assert_eq!(
6122    unsafe {
6123      &(*(::core::ptr::null::<playdate_sound_synth>())).getFrequencyModulator as *const _ as usize
6124    },
6125    88usize,
6126    concat!(
6127      "Offset of field: ",
6128      stringify!(playdate_sound_synth),
6129      "::",
6130      stringify!(getFrequencyModulator)
6131    )
6132  );
6133  assert_eq!(
6134    unsafe {
6135      &(*(::core::ptr::null::<playdate_sound_synth>())).setAmplitudeModulator as *const _ as usize
6136    },
6137    96usize,
6138    concat!(
6139      "Offset of field: ",
6140      stringify!(playdate_sound_synth),
6141      "::",
6142      stringify!(setAmplitudeModulator)
6143    )
6144  );
6145  assert_eq!(
6146    unsafe {
6147      &(*(::core::ptr::null::<playdate_sound_synth>())).getAmplitudeModulator as *const _ as usize
6148    },
6149    104usize,
6150    concat!(
6151      "Offset of field: ",
6152      stringify!(playdate_sound_synth),
6153      "::",
6154      stringify!(getAmplitudeModulator)
6155    )
6156  );
6157  assert_eq!(
6158    unsafe {
6159      &(*(::core::ptr::null::<playdate_sound_synth>())).getParameterCount as *const _ as usize
6160    },
6161    112usize,
6162    concat!(
6163      "Offset of field: ",
6164      stringify!(playdate_sound_synth),
6165      "::",
6166      stringify!(getParameterCount)
6167    )
6168  );
6169  assert_eq!(
6170    unsafe { &(*(::core::ptr::null::<playdate_sound_synth>())).setParameter as *const _ as usize },
6171    120usize,
6172    concat!(
6173      "Offset of field: ",
6174      stringify!(playdate_sound_synth),
6175      "::",
6176      stringify!(setParameter)
6177    )
6178  );
6179  assert_eq!(
6180    unsafe {
6181      &(*(::core::ptr::null::<playdate_sound_synth>())).setParameterModulator as *const _ as usize
6182    },
6183    128usize,
6184    concat!(
6185      "Offset of field: ",
6186      stringify!(playdate_sound_synth),
6187      "::",
6188      stringify!(setParameterModulator)
6189    )
6190  );
6191  assert_eq!(
6192    unsafe {
6193      &(*(::core::ptr::null::<playdate_sound_synth>())).getParameterModulator as *const _ as usize
6194    },
6195    136usize,
6196    concat!(
6197      "Offset of field: ",
6198      stringify!(playdate_sound_synth),
6199      "::",
6200      stringify!(getParameterModulator)
6201    )
6202  );
6203  assert_eq!(
6204    unsafe { &(*(::core::ptr::null::<playdate_sound_synth>())).playNote as *const _ as usize },
6205    144usize,
6206    concat!(
6207      "Offset of field: ",
6208      stringify!(playdate_sound_synth),
6209      "::",
6210      stringify!(playNote)
6211    )
6212  );
6213  assert_eq!(
6214    unsafe { &(*(::core::ptr::null::<playdate_sound_synth>())).playMIDINote as *const _ as usize },
6215    152usize,
6216    concat!(
6217      "Offset of field: ",
6218      stringify!(playdate_sound_synth),
6219      "::",
6220      stringify!(playMIDINote)
6221    )
6222  );
6223  assert_eq!(
6224    unsafe { &(*(::core::ptr::null::<playdate_sound_synth>())).noteOff as *const _ as usize },
6225    160usize,
6226    concat!(
6227      "Offset of field: ",
6228      stringify!(playdate_sound_synth),
6229      "::",
6230      stringify!(noteOff)
6231    )
6232  );
6233  assert_eq!(
6234    unsafe { &(*(::core::ptr::null::<playdate_sound_synth>())).stop as *const _ as usize },
6235    168usize,
6236    concat!(
6237      "Offset of field: ",
6238      stringify!(playdate_sound_synth),
6239      "::",
6240      stringify!(stop)
6241    )
6242  );
6243  assert_eq!(
6244    unsafe { &(*(::core::ptr::null::<playdate_sound_synth>())).setVolume as *const _ as usize },
6245    176usize,
6246    concat!(
6247      "Offset of field: ",
6248      stringify!(playdate_sound_synth),
6249      "::",
6250      stringify!(setVolume)
6251    )
6252  );
6253  assert_eq!(
6254    unsafe { &(*(::core::ptr::null::<playdate_sound_synth>())).getVolume as *const _ as usize },
6255    184usize,
6256    concat!(
6257      "Offset of field: ",
6258      stringify!(playdate_sound_synth),
6259      "::",
6260      stringify!(getVolume)
6261    )
6262  );
6263  assert_eq!(
6264    unsafe { &(*(::core::ptr::null::<playdate_sound_synth>())).isPlaying as *const _ as usize },
6265    192usize,
6266    concat!(
6267      "Offset of field: ",
6268      stringify!(playdate_sound_synth),
6269      "::",
6270      stringify!(isPlaying)
6271    )
6272  );
6273}
6274#[repr(C)]
6275#[derive(Debug, Copy, Clone)]
6276pub struct ControlSignal {
6277  _unused: [u8; 0],
6278}
6279#[repr(C)]
6280#[derive(Debug, Copy, Clone)]
6281pub struct playdate_control_signal {
6282  pub newSignal: ::core::option::Option<unsafe extern "C" fn() -> *mut ControlSignal>,
6283  pub freeSignal: ::core::option::Option<unsafe extern "C" fn(signal: *mut ControlSignal)>,
6284  pub clearEvents: ::core::option::Option<unsafe extern "C" fn(control: *mut ControlSignal)>,
6285  pub addEvent: ::core::option::Option<
6286    unsafe extern "C" fn(
6287      control: *mut ControlSignal,
6288      step: super::ctypes::c_int,
6289      value: f32,
6290      interpolate: super::ctypes::c_int,
6291    ),
6292  >,
6293  pub removeEvent: ::core::option::Option<
6294    unsafe extern "C" fn(control: *mut ControlSignal, step: super::ctypes::c_int),
6295  >,
6296  pub getMIDIControllerNumber: ::core::option::Option<
6297    unsafe extern "C" fn(control: *mut ControlSignal) -> super::ctypes::c_int,
6298  >,
6299}
6300#[test]
6301fn bindgen_test_layout_playdate_control_signal() {
6302  assert_eq!(
6303    ::core::mem::size_of::<playdate_control_signal>(),
6304    48usize,
6305    concat!("Size of: ", stringify!(playdate_control_signal))
6306  );
6307  assert_eq!(
6308    ::core::mem::align_of::<playdate_control_signal>(),
6309    8usize,
6310    concat!("Alignment of ", stringify!(playdate_control_signal))
6311  );
6312  assert_eq!(
6313    unsafe { &(*(::core::ptr::null::<playdate_control_signal>())).newSignal as *const _ as usize },
6314    0usize,
6315    concat!(
6316      "Offset of field: ",
6317      stringify!(playdate_control_signal),
6318      "::",
6319      stringify!(newSignal)
6320    )
6321  );
6322  assert_eq!(
6323    unsafe { &(*(::core::ptr::null::<playdate_control_signal>())).freeSignal as *const _ as usize },
6324    8usize,
6325    concat!(
6326      "Offset of field: ",
6327      stringify!(playdate_control_signal),
6328      "::",
6329      stringify!(freeSignal)
6330    )
6331  );
6332  assert_eq!(
6333    unsafe {
6334      &(*(::core::ptr::null::<playdate_control_signal>())).clearEvents as *const _ as usize
6335    },
6336    16usize,
6337    concat!(
6338      "Offset of field: ",
6339      stringify!(playdate_control_signal),
6340      "::",
6341      stringify!(clearEvents)
6342    )
6343  );
6344  assert_eq!(
6345    unsafe { &(*(::core::ptr::null::<playdate_control_signal>())).addEvent as *const _ as usize },
6346    24usize,
6347    concat!(
6348      "Offset of field: ",
6349      stringify!(playdate_control_signal),
6350      "::",
6351      stringify!(addEvent)
6352    )
6353  );
6354  assert_eq!(
6355    unsafe {
6356      &(*(::core::ptr::null::<playdate_control_signal>())).removeEvent as *const _ as usize
6357    },
6358    32usize,
6359    concat!(
6360      "Offset of field: ",
6361      stringify!(playdate_control_signal),
6362      "::",
6363      stringify!(removeEvent)
6364    )
6365  );
6366  assert_eq!(
6367    unsafe {
6368      &(*(::core::ptr::null::<playdate_control_signal>())).getMIDIControllerNumber as *const _
6369        as usize
6370    },
6371    40usize,
6372    concat!(
6373      "Offset of field: ",
6374      stringify!(playdate_control_signal),
6375      "::",
6376      stringify!(getMIDIControllerNumber)
6377    )
6378  );
6379}
6380#[repr(C)]
6381#[derive(Debug, Copy, Clone)]
6382pub struct PDSynthInstrument {
6383  _unused: [u8; 0],
6384}
6385#[repr(C)]
6386#[derive(Debug, Copy, Clone)]
6387pub struct playdate_sound_instrument {
6388  pub newInstrument: ::core::option::Option<unsafe extern "C" fn() -> *mut PDSynthInstrument>,
6389  pub freeInstrument: ::core::option::Option<unsafe extern "C" fn(inst: *mut PDSynthInstrument)>,
6390  pub addVoice: ::core::option::Option<
6391    unsafe extern "C" fn(
6392      inst: *mut PDSynthInstrument,
6393      synth: *mut PDSynth,
6394      rangeStart: MIDINote,
6395      rangeEnd: MIDINote,
6396      transpose: f32,
6397    ) -> super::ctypes::c_int,
6398  >,
6399  pub playNote: ::core::option::Option<
6400    unsafe extern "C" fn(
6401      inst: *mut PDSynthInstrument,
6402      frequency: f32,
6403      vel: f32,
6404      len: f32,
6405      when: u32,
6406    ) -> *mut PDSynth,
6407  >,
6408  pub playMIDINote: ::core::option::Option<
6409    unsafe extern "C" fn(
6410      inst: *mut PDSynthInstrument,
6411      note: MIDINote,
6412      vel: f32,
6413      len: f32,
6414      when: u32,
6415    ) -> *mut PDSynth,
6416  >,
6417  pub setPitchBend:
6418    ::core::option::Option<unsafe extern "C" fn(inst: *mut PDSynthInstrument, bend: f32)>,
6419  pub setPitchBendRange:
6420    ::core::option::Option<unsafe extern "C" fn(inst: *mut PDSynthInstrument, halfSteps: f32)>,
6421  pub setTranspose:
6422    ::core::option::Option<unsafe extern "C" fn(inst: *mut PDSynthInstrument, halfSteps: f32)>,
6423  pub noteOff: ::core::option::Option<
6424    unsafe extern "C" fn(inst: *mut PDSynthInstrument, note: MIDINote, when: u32),
6425  >,
6426  pub allNotesOff:
6427    ::core::option::Option<unsafe extern "C" fn(inst: *mut PDSynthInstrument, when: u32)>,
6428  pub setVolume: ::core::option::Option<
6429    unsafe extern "C" fn(inst: *mut PDSynthInstrument, left: f32, right: f32),
6430  >,
6431  pub getVolume: ::core::option::Option<
6432    unsafe extern "C" fn(inst: *mut PDSynthInstrument, left: *mut f32, right: *mut f32),
6433  >,
6434  pub activeVoiceCount: ::core::option::Option<
6435    unsafe extern "C" fn(inst: *mut PDSynthInstrument) -> super::ctypes::c_int,
6436  >,
6437}
6438#[test]
6439fn bindgen_test_layout_playdate_sound_instrument() {
6440  assert_eq!(
6441    ::core::mem::size_of::<playdate_sound_instrument>(),
6442    104usize,
6443    concat!("Size of: ", stringify!(playdate_sound_instrument))
6444  );
6445  assert_eq!(
6446    ::core::mem::align_of::<playdate_sound_instrument>(),
6447    8usize,
6448    concat!("Alignment of ", stringify!(playdate_sound_instrument))
6449  );
6450  assert_eq!(
6451    unsafe {
6452      &(*(::core::ptr::null::<playdate_sound_instrument>())).newInstrument as *const _ as usize
6453    },
6454    0usize,
6455    concat!(
6456      "Offset of field: ",
6457      stringify!(playdate_sound_instrument),
6458      "::",
6459      stringify!(newInstrument)
6460    )
6461  );
6462  assert_eq!(
6463    unsafe {
6464      &(*(::core::ptr::null::<playdate_sound_instrument>())).freeInstrument as *const _ as usize
6465    },
6466    8usize,
6467    concat!(
6468      "Offset of field: ",
6469      stringify!(playdate_sound_instrument),
6470      "::",
6471      stringify!(freeInstrument)
6472    )
6473  );
6474  assert_eq!(
6475    unsafe { &(*(::core::ptr::null::<playdate_sound_instrument>())).addVoice as *const _ as usize },
6476    16usize,
6477    concat!(
6478      "Offset of field: ",
6479      stringify!(playdate_sound_instrument),
6480      "::",
6481      stringify!(addVoice)
6482    )
6483  );
6484  assert_eq!(
6485    unsafe { &(*(::core::ptr::null::<playdate_sound_instrument>())).playNote as *const _ as usize },
6486    24usize,
6487    concat!(
6488      "Offset of field: ",
6489      stringify!(playdate_sound_instrument),
6490      "::",
6491      stringify!(playNote)
6492    )
6493  );
6494  assert_eq!(
6495    unsafe {
6496      &(*(::core::ptr::null::<playdate_sound_instrument>())).playMIDINote as *const _ as usize
6497    },
6498    32usize,
6499    concat!(
6500      "Offset of field: ",
6501      stringify!(playdate_sound_instrument),
6502      "::",
6503      stringify!(playMIDINote)
6504    )
6505  );
6506  assert_eq!(
6507    unsafe {
6508      &(*(::core::ptr::null::<playdate_sound_instrument>())).setPitchBend as *const _ as usize
6509    },
6510    40usize,
6511    concat!(
6512      "Offset of field: ",
6513      stringify!(playdate_sound_instrument),
6514      "::",
6515      stringify!(setPitchBend)
6516    )
6517  );
6518  assert_eq!(
6519    unsafe {
6520      &(*(::core::ptr::null::<playdate_sound_instrument>())).setPitchBendRange as *const _ as usize
6521    },
6522    48usize,
6523    concat!(
6524      "Offset of field: ",
6525      stringify!(playdate_sound_instrument),
6526      "::",
6527      stringify!(setPitchBendRange)
6528    )
6529  );
6530  assert_eq!(
6531    unsafe {
6532      &(*(::core::ptr::null::<playdate_sound_instrument>())).setTranspose as *const _ as usize
6533    },
6534    56usize,
6535    concat!(
6536      "Offset of field: ",
6537      stringify!(playdate_sound_instrument),
6538      "::",
6539      stringify!(setTranspose)
6540    )
6541  );
6542  assert_eq!(
6543    unsafe { &(*(::core::ptr::null::<playdate_sound_instrument>())).noteOff as *const _ as usize },
6544    64usize,
6545    concat!(
6546      "Offset of field: ",
6547      stringify!(playdate_sound_instrument),
6548      "::",
6549      stringify!(noteOff)
6550    )
6551  );
6552  assert_eq!(
6553    unsafe {
6554      &(*(::core::ptr::null::<playdate_sound_instrument>())).allNotesOff as *const _ as usize
6555    },
6556    72usize,
6557    concat!(
6558      "Offset of field: ",
6559      stringify!(playdate_sound_instrument),
6560      "::",
6561      stringify!(allNotesOff)
6562    )
6563  );
6564  assert_eq!(
6565    unsafe {
6566      &(*(::core::ptr::null::<playdate_sound_instrument>())).setVolume as *const _ as usize
6567    },
6568    80usize,
6569    concat!(
6570      "Offset of field: ",
6571      stringify!(playdate_sound_instrument),
6572      "::",
6573      stringify!(setVolume)
6574    )
6575  );
6576  assert_eq!(
6577    unsafe {
6578      &(*(::core::ptr::null::<playdate_sound_instrument>())).getVolume as *const _ as usize
6579    },
6580    88usize,
6581    concat!(
6582      "Offset of field: ",
6583      stringify!(playdate_sound_instrument),
6584      "::",
6585      stringify!(getVolume)
6586    )
6587  );
6588  assert_eq!(
6589    unsafe {
6590      &(*(::core::ptr::null::<playdate_sound_instrument>())).activeVoiceCount as *const _ as usize
6591    },
6592    96usize,
6593    concat!(
6594      "Offset of field: ",
6595      stringify!(playdate_sound_instrument),
6596      "::",
6597      stringify!(activeVoiceCount)
6598    )
6599  );
6600}
6601#[repr(C)]
6602#[derive(Debug, Copy, Clone)]
6603pub struct SequenceTrack {
6604  _unused: [u8; 0],
6605}
6606#[repr(C)]
6607#[derive(Debug, Copy, Clone)]
6608pub struct playdate_sound_track {
6609  pub newTrack: ::core::option::Option<unsafe extern "C" fn() -> *mut SequenceTrack>,
6610  pub freeTrack: ::core::option::Option<unsafe extern "C" fn(track: *mut SequenceTrack)>,
6611  pub setInstrument: ::core::option::Option<
6612    unsafe extern "C" fn(track: *mut SequenceTrack, inst: *mut PDSynthInstrument),
6613  >,
6614  pub getInstrument: ::core::option::Option<
6615    unsafe extern "C" fn(track: *mut SequenceTrack) -> *mut PDSynthInstrument,
6616  >,
6617  pub addNoteEvent: ::core::option::Option<
6618    unsafe extern "C" fn(
6619      track: *mut SequenceTrack,
6620      step: u32,
6621      len: u32,
6622      note: MIDINote,
6623      velocity: f32,
6624    ),
6625  >,
6626  pub removeNoteEvent: ::core::option::Option<
6627    unsafe extern "C" fn(track: *mut SequenceTrack, step: u32, note: MIDINote),
6628  >,
6629  pub clearNotes: ::core::option::Option<unsafe extern "C" fn(track: *mut SequenceTrack)>,
6630  pub getControlSignalCount:
6631    ::core::option::Option<unsafe extern "C" fn(track: *mut SequenceTrack) -> super::ctypes::c_int>,
6632  pub getControlSignal: ::core::option::Option<
6633    unsafe extern "C" fn(
6634      track: *mut SequenceTrack,
6635      idx: super::ctypes::c_int,
6636    ) -> *mut ControlSignal,
6637  >,
6638  pub clearControlEvents: ::core::option::Option<unsafe extern "C" fn(track: *mut SequenceTrack)>,
6639  pub getPolyphony:
6640    ::core::option::Option<unsafe extern "C" fn(track: *mut SequenceTrack) -> super::ctypes::c_int>,
6641  pub activeVoiceCount:
6642    ::core::option::Option<unsafe extern "C" fn(track: *mut SequenceTrack) -> super::ctypes::c_int>,
6643  pub setMuted: ::core::option::Option<
6644    unsafe extern "C" fn(track: *mut SequenceTrack, mute: super::ctypes::c_int),
6645  >,
6646  pub getLength: ::core::option::Option<unsafe extern "C" fn(track: *mut SequenceTrack) -> u32>,
6647  pub getIndexForStep: ::core::option::Option<
6648    unsafe extern "C" fn(track: *mut SequenceTrack, step: u32) -> super::ctypes::c_int,
6649  >,
6650  pub getNoteAtIndex: ::core::option::Option<
6651    unsafe extern "C" fn(
6652      track: *mut SequenceTrack,
6653      index: super::ctypes::c_int,
6654      outStep: *mut u32,
6655      outLen: *mut u32,
6656      outNote: *mut MIDINote,
6657      outVelocity: *mut f32,
6658    ) -> super::ctypes::c_int,
6659  >,
6660  pub getSignalForController: ::core::option::Option<
6661    unsafe extern "C" fn(
6662      track: *mut SequenceTrack,
6663      controller: super::ctypes::c_int,
6664      create: super::ctypes::c_int,
6665    ) -> *mut ControlSignal,
6666  >,
6667}
6668#[test]
6669fn bindgen_test_layout_playdate_sound_track() {
6670  assert_eq!(
6671    ::core::mem::size_of::<playdate_sound_track>(),
6672    136usize,
6673    concat!("Size of: ", stringify!(playdate_sound_track))
6674  );
6675  assert_eq!(
6676    ::core::mem::align_of::<playdate_sound_track>(),
6677    8usize,
6678    concat!("Alignment of ", stringify!(playdate_sound_track))
6679  );
6680  assert_eq!(
6681    unsafe { &(*(::core::ptr::null::<playdate_sound_track>())).newTrack as *const _ as usize },
6682    0usize,
6683    concat!(
6684      "Offset of field: ",
6685      stringify!(playdate_sound_track),
6686      "::",
6687      stringify!(newTrack)
6688    )
6689  );
6690  assert_eq!(
6691    unsafe { &(*(::core::ptr::null::<playdate_sound_track>())).freeTrack as *const _ as usize },
6692    8usize,
6693    concat!(
6694      "Offset of field: ",
6695      stringify!(playdate_sound_track),
6696      "::",
6697      stringify!(freeTrack)
6698    )
6699  );
6700  assert_eq!(
6701    unsafe { &(*(::core::ptr::null::<playdate_sound_track>())).setInstrument as *const _ as usize },
6702    16usize,
6703    concat!(
6704      "Offset of field: ",
6705      stringify!(playdate_sound_track),
6706      "::",
6707      stringify!(setInstrument)
6708    )
6709  );
6710  assert_eq!(
6711    unsafe { &(*(::core::ptr::null::<playdate_sound_track>())).getInstrument as *const _ as usize },
6712    24usize,
6713    concat!(
6714      "Offset of field: ",
6715      stringify!(playdate_sound_track),
6716      "::",
6717      stringify!(getInstrument)
6718    )
6719  );
6720  assert_eq!(
6721    unsafe { &(*(::core::ptr::null::<playdate_sound_track>())).addNoteEvent as *const _ as usize },
6722    32usize,
6723    concat!(
6724      "Offset of field: ",
6725      stringify!(playdate_sound_track),
6726      "::",
6727      stringify!(addNoteEvent)
6728    )
6729  );
6730  assert_eq!(
6731    unsafe {
6732      &(*(::core::ptr::null::<playdate_sound_track>())).removeNoteEvent as *const _ as usize
6733    },
6734    40usize,
6735    concat!(
6736      "Offset of field: ",
6737      stringify!(playdate_sound_track),
6738      "::",
6739      stringify!(removeNoteEvent)
6740    )
6741  );
6742  assert_eq!(
6743    unsafe { &(*(::core::ptr::null::<playdate_sound_track>())).clearNotes as *const _ as usize },
6744    48usize,
6745    concat!(
6746      "Offset of field: ",
6747      stringify!(playdate_sound_track),
6748      "::",
6749      stringify!(clearNotes)
6750    )
6751  );
6752  assert_eq!(
6753    unsafe {
6754      &(*(::core::ptr::null::<playdate_sound_track>())).getControlSignalCount as *const _ as usize
6755    },
6756    56usize,
6757    concat!(
6758      "Offset of field: ",
6759      stringify!(playdate_sound_track),
6760      "::",
6761      stringify!(getControlSignalCount)
6762    )
6763  );
6764  assert_eq!(
6765    unsafe {
6766      &(*(::core::ptr::null::<playdate_sound_track>())).getControlSignal as *const _ as usize
6767    },
6768    64usize,
6769    concat!(
6770      "Offset of field: ",
6771      stringify!(playdate_sound_track),
6772      "::",
6773      stringify!(getControlSignal)
6774    )
6775  );
6776  assert_eq!(
6777    unsafe {
6778      &(*(::core::ptr::null::<playdate_sound_track>())).clearControlEvents as *const _ as usize
6779    },
6780    72usize,
6781    concat!(
6782      "Offset of field: ",
6783      stringify!(playdate_sound_track),
6784      "::",
6785      stringify!(clearControlEvents)
6786    )
6787  );
6788  assert_eq!(
6789    unsafe { &(*(::core::ptr::null::<playdate_sound_track>())).getPolyphony as *const _ as usize },
6790    80usize,
6791    concat!(
6792      "Offset of field: ",
6793      stringify!(playdate_sound_track),
6794      "::",
6795      stringify!(getPolyphony)
6796    )
6797  );
6798  assert_eq!(
6799    unsafe {
6800      &(*(::core::ptr::null::<playdate_sound_track>())).activeVoiceCount as *const _ as usize
6801    },
6802    88usize,
6803    concat!(
6804      "Offset of field: ",
6805      stringify!(playdate_sound_track),
6806      "::",
6807      stringify!(activeVoiceCount)
6808    )
6809  );
6810  assert_eq!(
6811    unsafe { &(*(::core::ptr::null::<playdate_sound_track>())).setMuted as *const _ as usize },
6812    96usize,
6813    concat!(
6814      "Offset of field: ",
6815      stringify!(playdate_sound_track),
6816      "::",
6817      stringify!(setMuted)
6818    )
6819  );
6820  assert_eq!(
6821    unsafe { &(*(::core::ptr::null::<playdate_sound_track>())).getLength as *const _ as usize },
6822    104usize,
6823    concat!(
6824      "Offset of field: ",
6825      stringify!(playdate_sound_track),
6826      "::",
6827      stringify!(getLength)
6828    )
6829  );
6830  assert_eq!(
6831    unsafe {
6832      &(*(::core::ptr::null::<playdate_sound_track>())).getIndexForStep as *const _ as usize
6833    },
6834    112usize,
6835    concat!(
6836      "Offset of field: ",
6837      stringify!(playdate_sound_track),
6838      "::",
6839      stringify!(getIndexForStep)
6840    )
6841  );
6842  assert_eq!(
6843    unsafe {
6844      &(*(::core::ptr::null::<playdate_sound_track>())).getNoteAtIndex as *const _ as usize
6845    },
6846    120usize,
6847    concat!(
6848      "Offset of field: ",
6849      stringify!(playdate_sound_track),
6850      "::",
6851      stringify!(getNoteAtIndex)
6852    )
6853  );
6854  assert_eq!(
6855    unsafe {
6856      &(*(::core::ptr::null::<playdate_sound_track>())).getSignalForController as *const _ as usize
6857    },
6858    128usize,
6859    concat!(
6860      "Offset of field: ",
6861      stringify!(playdate_sound_track),
6862      "::",
6863      stringify!(getSignalForController)
6864    )
6865  );
6866}
6867#[repr(C)]
6868#[derive(Debug, Copy, Clone)]
6869pub struct SoundSequence {
6870  _unused: [u8; 0],
6871}
6872pub type SequenceFinishedCallback = ::core::option::Option<
6873  unsafe extern "C" fn(seq: *mut SoundSequence, userdata: *mut super::ctypes::c_void),
6874>;
6875#[repr(C)]
6876#[derive(Debug, Copy, Clone)]
6877pub struct playdate_sound_sequence {
6878  pub newSequence: ::core::option::Option<unsafe extern "C" fn() -> *mut SoundSequence>,
6879  pub freeSequence: ::core::option::Option<unsafe extern "C" fn(sequence: *mut SoundSequence)>,
6880  pub loadMidiFile: ::core::option::Option<
6881    unsafe extern "C" fn(
6882      seq: *mut SoundSequence,
6883      path: *const super::ctypes::c_char,
6884    ) -> super::ctypes::c_int,
6885  >,
6886  pub getTime: ::core::option::Option<unsafe extern "C" fn(seq: *mut SoundSequence) -> u32>,
6887  pub setTime: ::core::option::Option<unsafe extern "C" fn(seq: *mut SoundSequence, time: u32)>,
6888  pub setLoops: ::core::option::Option<
6889    unsafe extern "C" fn(
6890      seq: *mut SoundSequence,
6891      loopstart: super::ctypes::c_int,
6892      loopend: super::ctypes::c_int,
6893      loops: super::ctypes::c_int,
6894    ),
6895  >,
6896  pub getTempo:
6897    ::core::option::Option<unsafe extern "C" fn(seq: *mut SoundSequence) -> super::ctypes::c_int>,
6898  pub setTempo: ::core::option::Option<
6899    unsafe extern "C" fn(seq: *mut SoundSequence, stepsPerSecond: super::ctypes::c_int),
6900  >,
6901  pub getTrackCount:
6902    ::core::option::Option<unsafe extern "C" fn(seq: *mut SoundSequence) -> super::ctypes::c_int>,
6903  pub addTrack:
6904    ::core::option::Option<unsafe extern "C" fn(seq: *mut SoundSequence) -> *mut SequenceTrack>,
6905  pub getTrackAtIndex: ::core::option::Option<
6906    unsafe extern "C" fn(
6907      seq: *mut SoundSequence,
6908      track: super::ctypes::c_uint,
6909    ) -> *mut SequenceTrack,
6910  >,
6911  pub setTrackAtIndex: ::core::option::Option<
6912    unsafe extern "C" fn(
6913      seq: *mut SoundSequence,
6914      track: *mut SequenceTrack,
6915      idx: super::ctypes::c_uint,
6916    ),
6917  >,
6918  pub allNotesOff: ::core::option::Option<unsafe extern "C" fn(seq: *mut SoundSequence)>,
6919  pub isPlaying:
6920    ::core::option::Option<unsafe extern "C" fn(seq: *mut SoundSequence) -> super::ctypes::c_int>,
6921  pub getLength: ::core::option::Option<unsafe extern "C" fn(seq: *mut SoundSequence) -> u32>,
6922  pub play: ::core::option::Option<
6923    unsafe extern "C" fn(
6924      seq: *mut SoundSequence,
6925      finishCallback: SequenceFinishedCallback,
6926      userdata: *mut super::ctypes::c_void,
6927    ),
6928  >,
6929  pub stop: ::core::option::Option<unsafe extern "C" fn(seq: *mut SoundSequence)>,
6930  pub getCurrentStep: ::core::option::Option<
6931    unsafe extern "C" fn(
6932      seq: *mut SoundSequence,
6933      timeOffset: *mut super::ctypes::c_int,
6934    ) -> super::ctypes::c_int,
6935  >,
6936  pub setCurrentStep: ::core::option::Option<
6937    unsafe extern "C" fn(
6938      seq: *mut SoundSequence,
6939      step: super::ctypes::c_int,
6940      timeOffset: super::ctypes::c_int,
6941      playNotes: super::ctypes::c_int,
6942    ),
6943  >,
6944}
6945#[test]
6946fn bindgen_test_layout_playdate_sound_sequence() {
6947  assert_eq!(
6948    ::core::mem::size_of::<playdate_sound_sequence>(),
6949    152usize,
6950    concat!("Size of: ", stringify!(playdate_sound_sequence))
6951  );
6952  assert_eq!(
6953    ::core::mem::align_of::<playdate_sound_sequence>(),
6954    8usize,
6955    concat!("Alignment of ", stringify!(playdate_sound_sequence))
6956  );
6957  assert_eq!(
6958    unsafe {
6959      &(*(::core::ptr::null::<playdate_sound_sequence>())).newSequence as *const _ as usize
6960    },
6961    0usize,
6962    concat!(
6963      "Offset of field: ",
6964      stringify!(playdate_sound_sequence),
6965      "::",
6966      stringify!(newSequence)
6967    )
6968  );
6969  assert_eq!(
6970    unsafe {
6971      &(*(::core::ptr::null::<playdate_sound_sequence>())).freeSequence as *const _ as usize
6972    },
6973    8usize,
6974    concat!(
6975      "Offset of field: ",
6976      stringify!(playdate_sound_sequence),
6977      "::",
6978      stringify!(freeSequence)
6979    )
6980  );
6981  assert_eq!(
6982    unsafe {
6983      &(*(::core::ptr::null::<playdate_sound_sequence>())).loadMidiFile as *const _ as usize
6984    },
6985    16usize,
6986    concat!(
6987      "Offset of field: ",
6988      stringify!(playdate_sound_sequence),
6989      "::",
6990      stringify!(loadMidiFile)
6991    )
6992  );
6993  assert_eq!(
6994    unsafe { &(*(::core::ptr::null::<playdate_sound_sequence>())).getTime as *const _ as usize },
6995    24usize,
6996    concat!(
6997      "Offset of field: ",
6998      stringify!(playdate_sound_sequence),
6999      "::",
7000      stringify!(getTime)
7001    )
7002  );
7003  assert_eq!(
7004    unsafe { &(*(::core::ptr::null::<playdate_sound_sequence>())).setTime as *const _ as usize },
7005    32usize,
7006    concat!(
7007      "Offset of field: ",
7008      stringify!(playdate_sound_sequence),
7009      "::",
7010      stringify!(setTime)
7011    )
7012  );
7013  assert_eq!(
7014    unsafe { &(*(::core::ptr::null::<playdate_sound_sequence>())).setLoops as *const _ as usize },
7015    40usize,
7016    concat!(
7017      "Offset of field: ",
7018      stringify!(playdate_sound_sequence),
7019      "::",
7020      stringify!(setLoops)
7021    )
7022  );
7023  assert_eq!(
7024    unsafe { &(*(::core::ptr::null::<playdate_sound_sequence>())).getTempo as *const _ as usize },
7025    48usize,
7026    concat!(
7027      "Offset of field: ",
7028      stringify!(playdate_sound_sequence),
7029      "::",
7030      stringify!(getTempo)
7031    )
7032  );
7033  assert_eq!(
7034    unsafe { &(*(::core::ptr::null::<playdate_sound_sequence>())).setTempo as *const _ as usize },
7035    56usize,
7036    concat!(
7037      "Offset of field: ",
7038      stringify!(playdate_sound_sequence),
7039      "::",
7040      stringify!(setTempo)
7041    )
7042  );
7043  assert_eq!(
7044    unsafe {
7045      &(*(::core::ptr::null::<playdate_sound_sequence>())).getTrackCount as *const _ as usize
7046    },
7047    64usize,
7048    concat!(
7049      "Offset of field: ",
7050      stringify!(playdate_sound_sequence),
7051      "::",
7052      stringify!(getTrackCount)
7053    )
7054  );
7055  assert_eq!(
7056    unsafe { &(*(::core::ptr::null::<playdate_sound_sequence>())).addTrack as *const _ as usize },
7057    72usize,
7058    concat!(
7059      "Offset of field: ",
7060      stringify!(playdate_sound_sequence),
7061      "::",
7062      stringify!(addTrack)
7063    )
7064  );
7065  assert_eq!(
7066    unsafe {
7067      &(*(::core::ptr::null::<playdate_sound_sequence>())).getTrackAtIndex as *const _ as usize
7068    },
7069    80usize,
7070    concat!(
7071      "Offset of field: ",
7072      stringify!(playdate_sound_sequence),
7073      "::",
7074      stringify!(getTrackAtIndex)
7075    )
7076  );
7077  assert_eq!(
7078    unsafe {
7079      &(*(::core::ptr::null::<playdate_sound_sequence>())).setTrackAtIndex as *const _ as usize
7080    },
7081    88usize,
7082    concat!(
7083      "Offset of field: ",
7084      stringify!(playdate_sound_sequence),
7085      "::",
7086      stringify!(setTrackAtIndex)
7087    )
7088  );
7089  assert_eq!(
7090    unsafe {
7091      &(*(::core::ptr::null::<playdate_sound_sequence>())).allNotesOff as *const _ as usize
7092    },
7093    96usize,
7094    concat!(
7095      "Offset of field: ",
7096      stringify!(playdate_sound_sequence),
7097      "::",
7098      stringify!(allNotesOff)
7099    )
7100  );
7101  assert_eq!(
7102    unsafe { &(*(::core::ptr::null::<playdate_sound_sequence>())).isPlaying as *const _ as usize },
7103    104usize,
7104    concat!(
7105      "Offset of field: ",
7106      stringify!(playdate_sound_sequence),
7107      "::",
7108      stringify!(isPlaying)
7109    )
7110  );
7111  assert_eq!(
7112    unsafe { &(*(::core::ptr::null::<playdate_sound_sequence>())).getLength as *const _ as usize },
7113    112usize,
7114    concat!(
7115      "Offset of field: ",
7116      stringify!(playdate_sound_sequence),
7117      "::",
7118      stringify!(getLength)
7119    )
7120  );
7121  assert_eq!(
7122    unsafe { &(*(::core::ptr::null::<playdate_sound_sequence>())).play as *const _ as usize },
7123    120usize,
7124    concat!(
7125      "Offset of field: ",
7126      stringify!(playdate_sound_sequence),
7127      "::",
7128      stringify!(play)
7129    )
7130  );
7131  assert_eq!(
7132    unsafe { &(*(::core::ptr::null::<playdate_sound_sequence>())).stop as *const _ as usize },
7133    128usize,
7134    concat!(
7135      "Offset of field: ",
7136      stringify!(playdate_sound_sequence),
7137      "::",
7138      stringify!(stop)
7139    )
7140  );
7141  assert_eq!(
7142    unsafe {
7143      &(*(::core::ptr::null::<playdate_sound_sequence>())).getCurrentStep as *const _ as usize
7144    },
7145    136usize,
7146    concat!(
7147      "Offset of field: ",
7148      stringify!(playdate_sound_sequence),
7149      "::",
7150      stringify!(getCurrentStep)
7151    )
7152  );
7153  assert_eq!(
7154    unsafe {
7155      &(*(::core::ptr::null::<playdate_sound_sequence>())).setCurrentStep as *const _ as usize
7156    },
7157    144usize,
7158    concat!(
7159      "Offset of field: ",
7160      stringify!(playdate_sound_sequence),
7161      "::",
7162      stringify!(setCurrentStep)
7163    )
7164  );
7165}
7166#[repr(C)]
7167#[derive(Debug, Copy, Clone)]
7168pub struct TwoPoleFilter {
7169  _unused: [u8; 0],
7170}
7171impl TwoPoleFilterType {
7172  pub const kFilterTypeLowPass: TwoPoleFilterType = TwoPoleFilterType(0);
7173}
7174impl TwoPoleFilterType {
7175  pub const kFilterTypeHighPass: TwoPoleFilterType = TwoPoleFilterType(1);
7176}
7177impl TwoPoleFilterType {
7178  pub const kFilterTypeBandPass: TwoPoleFilterType = TwoPoleFilterType(2);
7179}
7180impl TwoPoleFilterType {
7181  pub const kFilterTypeNotch: TwoPoleFilterType = TwoPoleFilterType(3);
7182}
7183impl TwoPoleFilterType {
7184  pub const kFilterTypePEQ: TwoPoleFilterType = TwoPoleFilterType(4);
7185}
7186impl TwoPoleFilterType {
7187  pub const kFilterTypeLowShelf: TwoPoleFilterType = TwoPoleFilterType(5);
7188}
7189impl TwoPoleFilterType {
7190  pub const kFilterTypeHighShelf: TwoPoleFilterType = TwoPoleFilterType(6);
7191}
7192#[repr(transparent)]
7193#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
7194pub struct TwoPoleFilterType(pub super::ctypes::c_int);
7195#[repr(C)]
7196#[derive(Debug, Copy, Clone)]
7197pub struct playdate_sound_effect_twopolefilter {
7198  pub newFilter: ::core::option::Option<unsafe extern "C" fn() -> *mut TwoPoleFilter>,
7199  pub freeFilter: ::core::option::Option<unsafe extern "C" fn(filter: *mut TwoPoleFilter)>,
7200  pub setType: ::core::option::Option<
7201    unsafe extern "C" fn(filter: *mut TwoPoleFilter, type_: TwoPoleFilterType),
7202  >,
7203  pub setFrequency:
7204    ::core::option::Option<unsafe extern "C" fn(filter: *mut TwoPoleFilter, frequency: f32)>,
7205  pub setFrequencyModulator: ::core::option::Option<
7206    unsafe extern "C" fn(filter: *mut TwoPoleFilter, signal: *mut PDSynthSignalValue),
7207  >,
7208  pub getFrequencyModulator: ::core::option::Option<
7209    unsafe extern "C" fn(filter: *mut TwoPoleFilter) -> *mut PDSynthSignalValue,
7210  >,
7211  pub setGain: ::core::option::Option<unsafe extern "C" fn(filter: *mut TwoPoleFilter, gain: f32)>,
7212  pub setResonance:
7213    ::core::option::Option<unsafe extern "C" fn(filter: *mut TwoPoleFilter, resonance: f32)>,
7214  pub setResonanceModulator: ::core::option::Option<
7215    unsafe extern "C" fn(filter: *mut TwoPoleFilter, signal: *mut PDSynthSignalValue),
7216  >,
7217  pub getResonanceModulator: ::core::option::Option<
7218    unsafe extern "C" fn(filter: *mut TwoPoleFilter) -> *mut PDSynthSignalValue,
7219  >,
7220}
7221#[test]
7222fn bindgen_test_layout_playdate_sound_effect_twopolefilter() {
7223  assert_eq!(
7224    ::core::mem::size_of::<playdate_sound_effect_twopolefilter>(),
7225    80usize,
7226    concat!("Size of: ", stringify!(playdate_sound_effect_twopolefilter))
7227  );
7228  assert_eq!(
7229    ::core::mem::align_of::<playdate_sound_effect_twopolefilter>(),
7230    8usize,
7231    concat!(
7232      "Alignment of ",
7233      stringify!(playdate_sound_effect_twopolefilter)
7234    )
7235  );
7236  assert_eq!(
7237    unsafe {
7238      &(*(::core::ptr::null::<playdate_sound_effect_twopolefilter>())).newFilter as *const _
7239        as usize
7240    },
7241    0usize,
7242    concat!(
7243      "Offset of field: ",
7244      stringify!(playdate_sound_effect_twopolefilter),
7245      "::",
7246      stringify!(newFilter)
7247    )
7248  );
7249  assert_eq!(
7250    unsafe {
7251      &(*(::core::ptr::null::<playdate_sound_effect_twopolefilter>())).freeFilter as *const _
7252        as usize
7253    },
7254    8usize,
7255    concat!(
7256      "Offset of field: ",
7257      stringify!(playdate_sound_effect_twopolefilter),
7258      "::",
7259      stringify!(freeFilter)
7260    )
7261  );
7262  assert_eq!(
7263    unsafe {
7264      &(*(::core::ptr::null::<playdate_sound_effect_twopolefilter>())).setType as *const _ as usize
7265    },
7266    16usize,
7267    concat!(
7268      "Offset of field: ",
7269      stringify!(playdate_sound_effect_twopolefilter),
7270      "::",
7271      stringify!(setType)
7272    )
7273  );
7274  assert_eq!(
7275    unsafe {
7276      &(*(::core::ptr::null::<playdate_sound_effect_twopolefilter>())).setFrequency as *const _
7277        as usize
7278    },
7279    24usize,
7280    concat!(
7281      "Offset of field: ",
7282      stringify!(playdate_sound_effect_twopolefilter),
7283      "::",
7284      stringify!(setFrequency)
7285    )
7286  );
7287  assert_eq!(
7288    unsafe {
7289      &(*(::core::ptr::null::<playdate_sound_effect_twopolefilter>())).setFrequencyModulator
7290        as *const _ as usize
7291    },
7292    32usize,
7293    concat!(
7294      "Offset of field: ",
7295      stringify!(playdate_sound_effect_twopolefilter),
7296      "::",
7297      stringify!(setFrequencyModulator)
7298    )
7299  );
7300  assert_eq!(
7301    unsafe {
7302      &(*(::core::ptr::null::<playdate_sound_effect_twopolefilter>())).getFrequencyModulator
7303        as *const _ as usize
7304    },
7305    40usize,
7306    concat!(
7307      "Offset of field: ",
7308      stringify!(playdate_sound_effect_twopolefilter),
7309      "::",
7310      stringify!(getFrequencyModulator)
7311    )
7312  );
7313  assert_eq!(
7314    unsafe {
7315      &(*(::core::ptr::null::<playdate_sound_effect_twopolefilter>())).setGain as *const _ as usize
7316    },
7317    48usize,
7318    concat!(
7319      "Offset of field: ",
7320      stringify!(playdate_sound_effect_twopolefilter),
7321      "::",
7322      stringify!(setGain)
7323    )
7324  );
7325  assert_eq!(
7326    unsafe {
7327      &(*(::core::ptr::null::<playdate_sound_effect_twopolefilter>())).setResonance as *const _
7328        as usize
7329    },
7330    56usize,
7331    concat!(
7332      "Offset of field: ",
7333      stringify!(playdate_sound_effect_twopolefilter),
7334      "::",
7335      stringify!(setResonance)
7336    )
7337  );
7338  assert_eq!(
7339    unsafe {
7340      &(*(::core::ptr::null::<playdate_sound_effect_twopolefilter>())).setResonanceModulator
7341        as *const _ as usize
7342    },
7343    64usize,
7344    concat!(
7345      "Offset of field: ",
7346      stringify!(playdate_sound_effect_twopolefilter),
7347      "::",
7348      stringify!(setResonanceModulator)
7349    )
7350  );
7351  assert_eq!(
7352    unsafe {
7353      &(*(::core::ptr::null::<playdate_sound_effect_twopolefilter>())).getResonanceModulator
7354        as *const _ as usize
7355    },
7356    72usize,
7357    concat!(
7358      "Offset of field: ",
7359      stringify!(playdate_sound_effect_twopolefilter),
7360      "::",
7361      stringify!(getResonanceModulator)
7362    )
7363  );
7364}
7365#[repr(C)]
7366#[derive(Debug, Copy, Clone)]
7367pub struct OnePoleFilter {
7368  _unused: [u8; 0],
7369}
7370#[repr(C)]
7371#[derive(Debug, Copy, Clone)]
7372pub struct playdate_sound_effect_onepolefilter {
7373  pub newFilter: ::core::option::Option<unsafe extern "C" fn() -> *mut OnePoleFilter>,
7374  pub freeFilter: ::core::option::Option<unsafe extern "C" fn(filter: *mut OnePoleFilter)>,
7375  pub setParameter:
7376    ::core::option::Option<unsafe extern "C" fn(filter: *mut OnePoleFilter, parameter: f32)>,
7377  pub setParameterModulator: ::core::option::Option<
7378    unsafe extern "C" fn(filter: *mut OnePoleFilter, signal: *mut PDSynthSignalValue),
7379  >,
7380  pub getParameterModulator: ::core::option::Option<
7381    unsafe extern "C" fn(filter: *mut OnePoleFilter) -> *mut PDSynthSignalValue,
7382  >,
7383}
7384#[test]
7385fn bindgen_test_layout_playdate_sound_effect_onepolefilter() {
7386  assert_eq!(
7387    ::core::mem::size_of::<playdate_sound_effect_onepolefilter>(),
7388    40usize,
7389    concat!("Size of: ", stringify!(playdate_sound_effect_onepolefilter))
7390  );
7391  assert_eq!(
7392    ::core::mem::align_of::<playdate_sound_effect_onepolefilter>(),
7393    8usize,
7394    concat!(
7395      "Alignment of ",
7396      stringify!(playdate_sound_effect_onepolefilter)
7397    )
7398  );
7399  assert_eq!(
7400    unsafe {
7401      &(*(::core::ptr::null::<playdate_sound_effect_onepolefilter>())).newFilter as *const _
7402        as usize
7403    },
7404    0usize,
7405    concat!(
7406      "Offset of field: ",
7407      stringify!(playdate_sound_effect_onepolefilter),
7408      "::",
7409      stringify!(newFilter)
7410    )
7411  );
7412  assert_eq!(
7413    unsafe {
7414      &(*(::core::ptr::null::<playdate_sound_effect_onepolefilter>())).freeFilter as *const _
7415        as usize
7416    },
7417    8usize,
7418    concat!(
7419      "Offset of field: ",
7420      stringify!(playdate_sound_effect_onepolefilter),
7421      "::",
7422      stringify!(freeFilter)
7423    )
7424  );
7425  assert_eq!(
7426    unsafe {
7427      &(*(::core::ptr::null::<playdate_sound_effect_onepolefilter>())).setParameter as *const _
7428        as usize
7429    },
7430    16usize,
7431    concat!(
7432      "Offset of field: ",
7433      stringify!(playdate_sound_effect_onepolefilter),
7434      "::",
7435      stringify!(setParameter)
7436    )
7437  );
7438  assert_eq!(
7439    unsafe {
7440      &(*(::core::ptr::null::<playdate_sound_effect_onepolefilter>())).setParameterModulator
7441        as *const _ as usize
7442    },
7443    24usize,
7444    concat!(
7445      "Offset of field: ",
7446      stringify!(playdate_sound_effect_onepolefilter),
7447      "::",
7448      stringify!(setParameterModulator)
7449    )
7450  );
7451  assert_eq!(
7452    unsafe {
7453      &(*(::core::ptr::null::<playdate_sound_effect_onepolefilter>())).getParameterModulator
7454        as *const _ as usize
7455    },
7456    32usize,
7457    concat!(
7458      "Offset of field: ",
7459      stringify!(playdate_sound_effect_onepolefilter),
7460      "::",
7461      stringify!(getParameterModulator)
7462    )
7463  );
7464}
7465#[repr(C)]
7466#[derive(Debug, Copy, Clone)]
7467pub struct BitCrusher {
7468  _unused: [u8; 0],
7469}
7470#[repr(C)]
7471#[derive(Debug, Copy, Clone)]
7472pub struct playdate_sound_effect_bitcrusher {
7473  pub newBitCrusher: ::core::option::Option<unsafe extern "C" fn() -> *mut BitCrusher>,
7474  pub freeBitCrusher: ::core::option::Option<unsafe extern "C" fn(filter: *mut BitCrusher)>,
7475  pub setAmount: ::core::option::Option<unsafe extern "C" fn(filter: *mut BitCrusher, amount: f32)>,
7476  pub setAmountModulator: ::core::option::Option<
7477    unsafe extern "C" fn(filter: *mut BitCrusher, signal: *mut PDSynthSignalValue),
7478  >,
7479  pub getAmountModulator: ::core::option::Option<
7480    unsafe extern "C" fn(filter: *mut BitCrusher) -> *mut PDSynthSignalValue,
7481  >,
7482  pub setUndersampling:
7483    ::core::option::Option<unsafe extern "C" fn(filter: *mut BitCrusher, undersampling: f32)>,
7484  pub setUndersampleModulator: ::core::option::Option<
7485    unsafe extern "C" fn(filter: *mut BitCrusher, signal: *mut PDSynthSignalValue),
7486  >,
7487  pub getUndersampleModulator: ::core::option::Option<
7488    unsafe extern "C" fn(filter: *mut BitCrusher) -> *mut PDSynthSignalValue,
7489  >,
7490}
7491#[test]
7492fn bindgen_test_layout_playdate_sound_effect_bitcrusher() {
7493  assert_eq!(
7494    ::core::mem::size_of::<playdate_sound_effect_bitcrusher>(),
7495    64usize,
7496    concat!("Size of: ", stringify!(playdate_sound_effect_bitcrusher))
7497  );
7498  assert_eq!(
7499    ::core::mem::align_of::<playdate_sound_effect_bitcrusher>(),
7500    8usize,
7501    concat!(
7502      "Alignment of ",
7503      stringify!(playdate_sound_effect_bitcrusher)
7504    )
7505  );
7506  assert_eq!(
7507    unsafe {
7508      &(*(::core::ptr::null::<playdate_sound_effect_bitcrusher>())).newBitCrusher as *const _
7509        as usize
7510    },
7511    0usize,
7512    concat!(
7513      "Offset of field: ",
7514      stringify!(playdate_sound_effect_bitcrusher),
7515      "::",
7516      stringify!(newBitCrusher)
7517    )
7518  );
7519  assert_eq!(
7520    unsafe {
7521      &(*(::core::ptr::null::<playdate_sound_effect_bitcrusher>())).freeBitCrusher as *const _
7522        as usize
7523    },
7524    8usize,
7525    concat!(
7526      "Offset of field: ",
7527      stringify!(playdate_sound_effect_bitcrusher),
7528      "::",
7529      stringify!(freeBitCrusher)
7530    )
7531  );
7532  assert_eq!(
7533    unsafe {
7534      &(*(::core::ptr::null::<playdate_sound_effect_bitcrusher>())).setAmount as *const _ as usize
7535    },
7536    16usize,
7537    concat!(
7538      "Offset of field: ",
7539      stringify!(playdate_sound_effect_bitcrusher),
7540      "::",
7541      stringify!(setAmount)
7542    )
7543  );
7544  assert_eq!(
7545    unsafe {
7546      &(*(::core::ptr::null::<playdate_sound_effect_bitcrusher>())).setAmountModulator as *const _
7547        as usize
7548    },
7549    24usize,
7550    concat!(
7551      "Offset of field: ",
7552      stringify!(playdate_sound_effect_bitcrusher),
7553      "::",
7554      stringify!(setAmountModulator)
7555    )
7556  );
7557  assert_eq!(
7558    unsafe {
7559      &(*(::core::ptr::null::<playdate_sound_effect_bitcrusher>())).getAmountModulator as *const _
7560        as usize
7561    },
7562    32usize,
7563    concat!(
7564      "Offset of field: ",
7565      stringify!(playdate_sound_effect_bitcrusher),
7566      "::",
7567      stringify!(getAmountModulator)
7568    )
7569  );
7570  assert_eq!(
7571    unsafe {
7572      &(*(::core::ptr::null::<playdate_sound_effect_bitcrusher>())).setUndersampling as *const _
7573        as usize
7574    },
7575    40usize,
7576    concat!(
7577      "Offset of field: ",
7578      stringify!(playdate_sound_effect_bitcrusher),
7579      "::",
7580      stringify!(setUndersampling)
7581    )
7582  );
7583  assert_eq!(
7584    unsafe {
7585      &(*(::core::ptr::null::<playdate_sound_effect_bitcrusher>())).setUndersampleModulator
7586        as *const _ as usize
7587    },
7588    48usize,
7589    concat!(
7590      "Offset of field: ",
7591      stringify!(playdate_sound_effect_bitcrusher),
7592      "::",
7593      stringify!(setUndersampleModulator)
7594    )
7595  );
7596  assert_eq!(
7597    unsafe {
7598      &(*(::core::ptr::null::<playdate_sound_effect_bitcrusher>())).getUndersampleModulator
7599        as *const _ as usize
7600    },
7601    56usize,
7602    concat!(
7603      "Offset of field: ",
7604      stringify!(playdate_sound_effect_bitcrusher),
7605      "::",
7606      stringify!(getUndersampleModulator)
7607    )
7608  );
7609}
7610#[repr(C)]
7611#[derive(Debug, Copy, Clone)]
7612pub struct RingModulator {
7613  _unused: [u8; 0],
7614}
7615#[repr(C)]
7616#[derive(Debug, Copy, Clone)]
7617pub struct playdate_sound_effect_ringmodulator {
7618  pub newRingmod: ::core::option::Option<unsafe extern "C" fn() -> *mut RingModulator>,
7619  pub freeRingmod: ::core::option::Option<unsafe extern "C" fn(filter: *mut RingModulator)>,
7620  pub setFrequency:
7621    ::core::option::Option<unsafe extern "C" fn(filter: *mut RingModulator, frequency: f32)>,
7622  pub setFrequencyModulator: ::core::option::Option<
7623    unsafe extern "C" fn(filter: *mut RingModulator, signal: *mut PDSynthSignalValue),
7624  >,
7625  pub getFrequencyModulator: ::core::option::Option<
7626    unsafe extern "C" fn(filter: *mut RingModulator) -> *mut PDSynthSignalValue,
7627  >,
7628}
7629#[test]
7630fn bindgen_test_layout_playdate_sound_effect_ringmodulator() {
7631  assert_eq!(
7632    ::core::mem::size_of::<playdate_sound_effect_ringmodulator>(),
7633    40usize,
7634    concat!("Size of: ", stringify!(playdate_sound_effect_ringmodulator))
7635  );
7636  assert_eq!(
7637    ::core::mem::align_of::<playdate_sound_effect_ringmodulator>(),
7638    8usize,
7639    concat!(
7640      "Alignment of ",
7641      stringify!(playdate_sound_effect_ringmodulator)
7642    )
7643  );
7644  assert_eq!(
7645    unsafe {
7646      &(*(::core::ptr::null::<playdate_sound_effect_ringmodulator>())).newRingmod as *const _
7647        as usize
7648    },
7649    0usize,
7650    concat!(
7651      "Offset of field: ",
7652      stringify!(playdate_sound_effect_ringmodulator),
7653      "::",
7654      stringify!(newRingmod)
7655    )
7656  );
7657  assert_eq!(
7658    unsafe {
7659      &(*(::core::ptr::null::<playdate_sound_effect_ringmodulator>())).freeRingmod as *const _
7660        as usize
7661    },
7662    8usize,
7663    concat!(
7664      "Offset of field: ",
7665      stringify!(playdate_sound_effect_ringmodulator),
7666      "::",
7667      stringify!(freeRingmod)
7668    )
7669  );
7670  assert_eq!(
7671    unsafe {
7672      &(*(::core::ptr::null::<playdate_sound_effect_ringmodulator>())).setFrequency as *const _
7673        as usize
7674    },
7675    16usize,
7676    concat!(
7677      "Offset of field: ",
7678      stringify!(playdate_sound_effect_ringmodulator),
7679      "::",
7680      stringify!(setFrequency)
7681    )
7682  );
7683  assert_eq!(
7684    unsafe {
7685      &(*(::core::ptr::null::<playdate_sound_effect_ringmodulator>())).setFrequencyModulator
7686        as *const _ as usize
7687    },
7688    24usize,
7689    concat!(
7690      "Offset of field: ",
7691      stringify!(playdate_sound_effect_ringmodulator),
7692      "::",
7693      stringify!(setFrequencyModulator)
7694    )
7695  );
7696  assert_eq!(
7697    unsafe {
7698      &(*(::core::ptr::null::<playdate_sound_effect_ringmodulator>())).getFrequencyModulator
7699        as *const _ as usize
7700    },
7701    32usize,
7702    concat!(
7703      "Offset of field: ",
7704      stringify!(playdate_sound_effect_ringmodulator),
7705      "::",
7706      stringify!(getFrequencyModulator)
7707    )
7708  );
7709}
7710#[repr(C)]
7711#[derive(Debug, Copy, Clone)]
7712pub struct DelayLine {
7713  _unused: [u8; 0],
7714}
7715#[repr(C)]
7716#[derive(Debug, Copy, Clone)]
7717pub struct DelayLineTap {
7718  _unused: [u8; 0],
7719}
7720#[repr(C)]
7721#[derive(Debug, Copy, Clone)]
7722pub struct playdate_sound_effect_delayline {
7723  pub newDelayLine: ::core::option::Option<
7724    unsafe extern "C" fn(
7725      length: super::ctypes::c_int,
7726      stereo: super::ctypes::c_int,
7727    ) -> *mut DelayLine,
7728  >,
7729  pub freeDelayLine: ::core::option::Option<unsafe extern "C" fn(filter: *mut DelayLine)>,
7730  pub setLength:
7731    ::core::option::Option<unsafe extern "C" fn(d: *mut DelayLine, frames: super::ctypes::c_int)>,
7732  pub setFeedback: ::core::option::Option<unsafe extern "C" fn(d: *mut DelayLine, fb: f32)>,
7733  pub addTap: ::core::option::Option<
7734    unsafe extern "C" fn(d: *mut DelayLine, delay: super::ctypes::c_int) -> *mut DelayLineTap,
7735  >,
7736  pub freeTap: ::core::option::Option<unsafe extern "C" fn(tap: *mut DelayLineTap)>,
7737  pub setTapDelay: ::core::option::Option<
7738    unsafe extern "C" fn(t: *mut DelayLineTap, frames: super::ctypes::c_int),
7739  >,
7740  pub setTapDelayModulator: ::core::option::Option<
7741    unsafe extern "C" fn(t: *mut DelayLineTap, mod_: *mut PDSynthSignalValue),
7742  >,
7743  pub getTapDelayModulator:
7744    ::core::option::Option<unsafe extern "C" fn(t: *mut DelayLineTap) -> *mut PDSynthSignalValue>,
7745  pub setTapChannelsFlipped:
7746    ::core::option::Option<unsafe extern "C" fn(t: *mut DelayLineTap, flip: super::ctypes::c_int)>,
7747}
7748#[test]
7749fn bindgen_test_layout_playdate_sound_effect_delayline() {
7750  assert_eq!(
7751    ::core::mem::size_of::<playdate_sound_effect_delayline>(),
7752    80usize,
7753    concat!("Size of: ", stringify!(playdate_sound_effect_delayline))
7754  );
7755  assert_eq!(
7756    ::core::mem::align_of::<playdate_sound_effect_delayline>(),
7757    8usize,
7758    concat!("Alignment of ", stringify!(playdate_sound_effect_delayline))
7759  );
7760  assert_eq!(
7761    unsafe {
7762      &(*(::core::ptr::null::<playdate_sound_effect_delayline>())).newDelayLine as *const _ as usize
7763    },
7764    0usize,
7765    concat!(
7766      "Offset of field: ",
7767      stringify!(playdate_sound_effect_delayline),
7768      "::",
7769      stringify!(newDelayLine)
7770    )
7771  );
7772  assert_eq!(
7773    unsafe {
7774      &(*(::core::ptr::null::<playdate_sound_effect_delayline>())).freeDelayLine as *const _
7775        as usize
7776    },
7777    8usize,
7778    concat!(
7779      "Offset of field: ",
7780      stringify!(playdate_sound_effect_delayline),
7781      "::",
7782      stringify!(freeDelayLine)
7783    )
7784  );
7785  assert_eq!(
7786    unsafe {
7787      &(*(::core::ptr::null::<playdate_sound_effect_delayline>())).setLength as *const _ as usize
7788    },
7789    16usize,
7790    concat!(
7791      "Offset of field: ",
7792      stringify!(playdate_sound_effect_delayline),
7793      "::",
7794      stringify!(setLength)
7795    )
7796  );
7797  assert_eq!(
7798    unsafe {
7799      &(*(::core::ptr::null::<playdate_sound_effect_delayline>())).setFeedback as *const _ as usize
7800    },
7801    24usize,
7802    concat!(
7803      "Offset of field: ",
7804      stringify!(playdate_sound_effect_delayline),
7805      "::",
7806      stringify!(setFeedback)
7807    )
7808  );
7809  assert_eq!(
7810    unsafe {
7811      &(*(::core::ptr::null::<playdate_sound_effect_delayline>())).addTap as *const _ as usize
7812    },
7813    32usize,
7814    concat!(
7815      "Offset of field: ",
7816      stringify!(playdate_sound_effect_delayline),
7817      "::",
7818      stringify!(addTap)
7819    )
7820  );
7821  assert_eq!(
7822    unsafe {
7823      &(*(::core::ptr::null::<playdate_sound_effect_delayline>())).freeTap as *const _ as usize
7824    },
7825    40usize,
7826    concat!(
7827      "Offset of field: ",
7828      stringify!(playdate_sound_effect_delayline),
7829      "::",
7830      stringify!(freeTap)
7831    )
7832  );
7833  assert_eq!(
7834    unsafe {
7835      &(*(::core::ptr::null::<playdate_sound_effect_delayline>())).setTapDelay as *const _ as usize
7836    },
7837    48usize,
7838    concat!(
7839      "Offset of field: ",
7840      stringify!(playdate_sound_effect_delayline),
7841      "::",
7842      stringify!(setTapDelay)
7843    )
7844  );
7845  assert_eq!(
7846    unsafe {
7847      &(*(::core::ptr::null::<playdate_sound_effect_delayline>())).setTapDelayModulator as *const _
7848        as usize
7849    },
7850    56usize,
7851    concat!(
7852      "Offset of field: ",
7853      stringify!(playdate_sound_effect_delayline),
7854      "::",
7855      stringify!(setTapDelayModulator)
7856    )
7857  );
7858  assert_eq!(
7859    unsafe {
7860      &(*(::core::ptr::null::<playdate_sound_effect_delayline>())).getTapDelayModulator as *const _
7861        as usize
7862    },
7863    64usize,
7864    concat!(
7865      "Offset of field: ",
7866      stringify!(playdate_sound_effect_delayline),
7867      "::",
7868      stringify!(getTapDelayModulator)
7869    )
7870  );
7871  assert_eq!(
7872    unsafe {
7873      &(*(::core::ptr::null::<playdate_sound_effect_delayline>())).setTapChannelsFlipped as *const _
7874        as usize
7875    },
7876    72usize,
7877    concat!(
7878      "Offset of field: ",
7879      stringify!(playdate_sound_effect_delayline),
7880      "::",
7881      stringify!(setTapChannelsFlipped)
7882    )
7883  );
7884}
7885#[repr(C)]
7886#[derive(Debug, Copy, Clone)]
7887pub struct Overdrive {
7888  _unused: [u8; 0],
7889}
7890#[repr(C)]
7891#[derive(Debug, Copy, Clone)]
7892pub struct playdate_sound_effect_overdrive {
7893  pub newOverdrive: ::core::option::Option<unsafe extern "C" fn() -> *mut Overdrive>,
7894  pub freeOverdrive: ::core::option::Option<unsafe extern "C" fn(filter: *mut Overdrive)>,
7895  pub setGain: ::core::option::Option<unsafe extern "C" fn(o: *mut Overdrive, gain: f32)>,
7896  pub setLimit: ::core::option::Option<unsafe extern "C" fn(o: *mut Overdrive, limit: f32)>,
7897  pub setLimitModulator:
7898    ::core::option::Option<unsafe extern "C" fn(o: *mut Overdrive, mod_: *mut PDSynthSignalValue)>,
7899  pub getLimitModulator:
7900    ::core::option::Option<unsafe extern "C" fn(o: *mut Overdrive) -> *mut PDSynthSignalValue>,
7901  pub setOffset: ::core::option::Option<unsafe extern "C" fn(o: *mut Overdrive, offset: f32)>,
7902  pub setOffsetModulator:
7903    ::core::option::Option<unsafe extern "C" fn(o: *mut Overdrive, mod_: *mut PDSynthSignalValue)>,
7904  pub getOffsetModulator:
7905    ::core::option::Option<unsafe extern "C" fn(o: *mut Overdrive) -> *mut PDSynthSignalValue>,
7906}
7907#[test]
7908fn bindgen_test_layout_playdate_sound_effect_overdrive() {
7909  assert_eq!(
7910    ::core::mem::size_of::<playdate_sound_effect_overdrive>(),
7911    72usize,
7912    concat!("Size of: ", stringify!(playdate_sound_effect_overdrive))
7913  );
7914  assert_eq!(
7915    ::core::mem::align_of::<playdate_sound_effect_overdrive>(),
7916    8usize,
7917    concat!("Alignment of ", stringify!(playdate_sound_effect_overdrive))
7918  );
7919  assert_eq!(
7920    unsafe {
7921      &(*(::core::ptr::null::<playdate_sound_effect_overdrive>())).newOverdrive as *const _ as usize
7922    },
7923    0usize,
7924    concat!(
7925      "Offset of field: ",
7926      stringify!(playdate_sound_effect_overdrive),
7927      "::",
7928      stringify!(newOverdrive)
7929    )
7930  );
7931  assert_eq!(
7932    unsafe {
7933      &(*(::core::ptr::null::<playdate_sound_effect_overdrive>())).freeOverdrive as *const _
7934        as usize
7935    },
7936    8usize,
7937    concat!(
7938      "Offset of field: ",
7939      stringify!(playdate_sound_effect_overdrive),
7940      "::",
7941      stringify!(freeOverdrive)
7942    )
7943  );
7944  assert_eq!(
7945    unsafe {
7946      &(*(::core::ptr::null::<playdate_sound_effect_overdrive>())).setGain as *const _ as usize
7947    },
7948    16usize,
7949    concat!(
7950      "Offset of field: ",
7951      stringify!(playdate_sound_effect_overdrive),
7952      "::",
7953      stringify!(setGain)
7954    )
7955  );
7956  assert_eq!(
7957    unsafe {
7958      &(*(::core::ptr::null::<playdate_sound_effect_overdrive>())).setLimit as *const _ as usize
7959    },
7960    24usize,
7961    concat!(
7962      "Offset of field: ",
7963      stringify!(playdate_sound_effect_overdrive),
7964      "::",
7965      stringify!(setLimit)
7966    )
7967  );
7968  assert_eq!(
7969    unsafe {
7970      &(*(::core::ptr::null::<playdate_sound_effect_overdrive>())).setLimitModulator as *const _
7971        as usize
7972    },
7973    32usize,
7974    concat!(
7975      "Offset of field: ",
7976      stringify!(playdate_sound_effect_overdrive),
7977      "::",
7978      stringify!(setLimitModulator)
7979    )
7980  );
7981  assert_eq!(
7982    unsafe {
7983      &(*(::core::ptr::null::<playdate_sound_effect_overdrive>())).getLimitModulator as *const _
7984        as usize
7985    },
7986    40usize,
7987    concat!(
7988      "Offset of field: ",
7989      stringify!(playdate_sound_effect_overdrive),
7990      "::",
7991      stringify!(getLimitModulator)
7992    )
7993  );
7994  assert_eq!(
7995    unsafe {
7996      &(*(::core::ptr::null::<playdate_sound_effect_overdrive>())).setOffset as *const _ as usize
7997    },
7998    48usize,
7999    concat!(
8000      "Offset of field: ",
8001      stringify!(playdate_sound_effect_overdrive),
8002      "::",
8003      stringify!(setOffset)
8004    )
8005  );
8006  assert_eq!(
8007    unsafe {
8008      &(*(::core::ptr::null::<playdate_sound_effect_overdrive>())).setOffsetModulator as *const _
8009        as usize
8010    },
8011    56usize,
8012    concat!(
8013      "Offset of field: ",
8014      stringify!(playdate_sound_effect_overdrive),
8015      "::",
8016      stringify!(setOffsetModulator)
8017    )
8018  );
8019  assert_eq!(
8020    unsafe {
8021      &(*(::core::ptr::null::<playdate_sound_effect_overdrive>())).getOffsetModulator as *const _
8022        as usize
8023    },
8024    64usize,
8025    concat!(
8026      "Offset of field: ",
8027      stringify!(playdate_sound_effect_overdrive),
8028      "::",
8029      stringify!(getOffsetModulator)
8030    )
8031  );
8032}
8033#[repr(C)]
8034#[derive(Debug, Copy, Clone)]
8035pub struct SoundEffect {
8036  _unused: [u8; 0],
8037}
8038pub type effectProc = ::core::option::Option<
8039  unsafe extern "C" fn(
8040    e: *mut SoundEffect,
8041    left: *mut i32,
8042    right: *mut i32,
8043    nsamples: super::ctypes::c_int,
8044    bufactive: super::ctypes::c_int,
8045  ) -> super::ctypes::c_int,
8046>;
8047#[repr(C)]
8048#[derive(Debug, Copy, Clone)]
8049pub struct playdate_sound_effect {
8050  pub newEffect: ::core::option::Option<
8051    unsafe extern "C" fn(
8052      proc_: effectProc,
8053      userdata: *mut super::ctypes::c_void,
8054    ) -> *mut SoundEffect,
8055  >,
8056  pub freeEffect: ::core::option::Option<unsafe extern "C" fn(effect: *mut SoundEffect)>,
8057  pub setMix: ::core::option::Option<unsafe extern "C" fn(effect: *mut SoundEffect, level: f32)>,
8058  pub setMixModulator: ::core::option::Option<
8059    unsafe extern "C" fn(effect: *mut SoundEffect, signal: *mut PDSynthSignalValue),
8060  >,
8061  pub getMixModulator: ::core::option::Option<
8062    unsafe extern "C" fn(effect: *mut SoundEffect) -> *mut PDSynthSignalValue,
8063  >,
8064  pub setUserdata: ::core::option::Option<
8065    unsafe extern "C" fn(effect: *mut SoundEffect, userdata: *mut super::ctypes::c_void),
8066  >,
8067  pub getUserdata: ::core::option::Option<
8068    unsafe extern "C" fn(effect: *mut SoundEffect) -> *mut super::ctypes::c_void,
8069  >,
8070  pub twopolefilter: *const playdate_sound_effect_twopolefilter,
8071  pub onepolefilter: *const playdate_sound_effect_onepolefilter,
8072  pub bitcrusher: *const playdate_sound_effect_bitcrusher,
8073  pub ringmodulator: *const playdate_sound_effect_ringmodulator,
8074  pub delayline: *const playdate_sound_effect_delayline,
8075  pub overdrive: *const playdate_sound_effect_overdrive,
8076}
8077#[test]
8078fn bindgen_test_layout_playdate_sound_effect() {
8079  assert_eq!(
8080    ::core::mem::size_of::<playdate_sound_effect>(),
8081    104usize,
8082    concat!("Size of: ", stringify!(playdate_sound_effect))
8083  );
8084  assert_eq!(
8085    ::core::mem::align_of::<playdate_sound_effect>(),
8086    8usize,
8087    concat!("Alignment of ", stringify!(playdate_sound_effect))
8088  );
8089  assert_eq!(
8090    unsafe { &(*(::core::ptr::null::<playdate_sound_effect>())).newEffect as *const _ as usize },
8091    0usize,
8092    concat!(
8093      "Offset of field: ",
8094      stringify!(playdate_sound_effect),
8095      "::",
8096      stringify!(newEffect)
8097    )
8098  );
8099  assert_eq!(
8100    unsafe { &(*(::core::ptr::null::<playdate_sound_effect>())).freeEffect as *const _ as usize },
8101    8usize,
8102    concat!(
8103      "Offset of field: ",
8104      stringify!(playdate_sound_effect),
8105      "::",
8106      stringify!(freeEffect)
8107    )
8108  );
8109  assert_eq!(
8110    unsafe { &(*(::core::ptr::null::<playdate_sound_effect>())).setMix as *const _ as usize },
8111    16usize,
8112    concat!(
8113      "Offset of field: ",
8114      stringify!(playdate_sound_effect),
8115      "::",
8116      stringify!(setMix)
8117    )
8118  );
8119  assert_eq!(
8120    unsafe {
8121      &(*(::core::ptr::null::<playdate_sound_effect>())).setMixModulator as *const _ as usize
8122    },
8123    24usize,
8124    concat!(
8125      "Offset of field: ",
8126      stringify!(playdate_sound_effect),
8127      "::",
8128      stringify!(setMixModulator)
8129    )
8130  );
8131  assert_eq!(
8132    unsafe {
8133      &(*(::core::ptr::null::<playdate_sound_effect>())).getMixModulator as *const _ as usize
8134    },
8135    32usize,
8136    concat!(
8137      "Offset of field: ",
8138      stringify!(playdate_sound_effect),
8139      "::",
8140      stringify!(getMixModulator)
8141    )
8142  );
8143  assert_eq!(
8144    unsafe { &(*(::core::ptr::null::<playdate_sound_effect>())).setUserdata as *const _ as usize },
8145    40usize,
8146    concat!(
8147      "Offset of field: ",
8148      stringify!(playdate_sound_effect),
8149      "::",
8150      stringify!(setUserdata)
8151    )
8152  );
8153  assert_eq!(
8154    unsafe { &(*(::core::ptr::null::<playdate_sound_effect>())).getUserdata as *const _ as usize },
8155    48usize,
8156    concat!(
8157      "Offset of field: ",
8158      stringify!(playdate_sound_effect),
8159      "::",
8160      stringify!(getUserdata)
8161    )
8162  );
8163  assert_eq!(
8164    unsafe {
8165      &(*(::core::ptr::null::<playdate_sound_effect>())).twopolefilter as *const _ as usize
8166    },
8167    56usize,
8168    concat!(
8169      "Offset of field: ",
8170      stringify!(playdate_sound_effect),
8171      "::",
8172      stringify!(twopolefilter)
8173    )
8174  );
8175  assert_eq!(
8176    unsafe {
8177      &(*(::core::ptr::null::<playdate_sound_effect>())).onepolefilter as *const _ as usize
8178    },
8179    64usize,
8180    concat!(
8181      "Offset of field: ",
8182      stringify!(playdate_sound_effect),
8183      "::",
8184      stringify!(onepolefilter)
8185    )
8186  );
8187  assert_eq!(
8188    unsafe { &(*(::core::ptr::null::<playdate_sound_effect>())).bitcrusher as *const _ as usize },
8189    72usize,
8190    concat!(
8191      "Offset of field: ",
8192      stringify!(playdate_sound_effect),
8193      "::",
8194      stringify!(bitcrusher)
8195    )
8196  );
8197  assert_eq!(
8198    unsafe {
8199      &(*(::core::ptr::null::<playdate_sound_effect>())).ringmodulator as *const _ as usize
8200    },
8201    80usize,
8202    concat!(
8203      "Offset of field: ",
8204      stringify!(playdate_sound_effect),
8205      "::",
8206      stringify!(ringmodulator)
8207    )
8208  );
8209  assert_eq!(
8210    unsafe { &(*(::core::ptr::null::<playdate_sound_effect>())).delayline as *const _ as usize },
8211    88usize,
8212    concat!(
8213      "Offset of field: ",
8214      stringify!(playdate_sound_effect),
8215      "::",
8216      stringify!(delayline)
8217    )
8218  );
8219  assert_eq!(
8220    unsafe { &(*(::core::ptr::null::<playdate_sound_effect>())).overdrive as *const _ as usize },
8221    96usize,
8222    concat!(
8223      "Offset of field: ",
8224      stringify!(playdate_sound_effect),
8225      "::",
8226      stringify!(overdrive)
8227    )
8228  );
8229}
8230#[repr(C)]
8231#[derive(Debug, Copy, Clone)]
8232pub struct SoundChannel {
8233  _unused: [u8; 0],
8234}
8235pub type AudioSourceFunction = ::core::option::Option<
8236  unsafe extern "C" fn(
8237    context: *mut super::ctypes::c_void,
8238    left: *mut i16,
8239    right: *mut i16,
8240    len: super::ctypes::c_int,
8241  ) -> super::ctypes::c_int,
8242>;
8243#[repr(C)]
8244#[derive(Debug, Copy, Clone)]
8245pub struct playdate_sound_channel {
8246  pub newChannel: ::core::option::Option<unsafe extern "C" fn() -> *mut SoundChannel>,
8247  pub freeChannel: ::core::option::Option<unsafe extern "C" fn(channel: *mut SoundChannel)>,
8248  pub addSource: ::core::option::Option<
8249    unsafe extern "C" fn(
8250      channel: *mut SoundChannel,
8251      source: *mut SoundSource,
8252    ) -> super::ctypes::c_int,
8253  >,
8254  pub removeSource: ::core::option::Option<
8255    unsafe extern "C" fn(
8256      channel: *mut SoundChannel,
8257      source: *mut SoundSource,
8258    ) -> super::ctypes::c_int,
8259  >,
8260  pub addCallbackSource: ::core::option::Option<
8261    unsafe extern "C" fn(
8262      channel: *mut SoundChannel,
8263      callback: AudioSourceFunction,
8264      context: *mut super::ctypes::c_void,
8265      stereo: super::ctypes::c_int,
8266    ) -> *mut SoundSource,
8267  >,
8268  pub addEffect: ::core::option::Option<
8269    unsafe extern "C" fn(channel: *mut SoundChannel, effect: *mut SoundEffect),
8270  >,
8271  pub removeEffect: ::core::option::Option<
8272    unsafe extern "C" fn(channel: *mut SoundChannel, effect: *mut SoundEffect),
8273  >,
8274  pub setVolume:
8275    ::core::option::Option<unsafe extern "C" fn(channel: *mut SoundChannel, volume: f32)>,
8276  pub getVolume: ::core::option::Option<unsafe extern "C" fn(channel: *mut SoundChannel) -> f32>,
8277  pub setVolumeModulator: ::core::option::Option<
8278    unsafe extern "C" fn(channel: *mut SoundChannel, mod_: *mut PDSynthSignalValue),
8279  >,
8280  pub getVolumeModulator: ::core::option::Option<
8281    unsafe extern "C" fn(channel: *mut SoundChannel) -> *mut PDSynthSignalValue,
8282  >,
8283  pub setPan: ::core::option::Option<unsafe extern "C" fn(channel: *mut SoundChannel, pan: f32)>,
8284  pub setPanModulator: ::core::option::Option<
8285    unsafe extern "C" fn(channel: *mut SoundChannel, mod_: *mut PDSynthSignalValue),
8286  >,
8287  pub getPanModulator: ::core::option::Option<
8288    unsafe extern "C" fn(channel: *mut SoundChannel) -> *mut PDSynthSignalValue,
8289  >,
8290  pub getDryLevelSignal: ::core::option::Option<
8291    unsafe extern "C" fn(channel: *mut SoundChannel) -> *mut PDSynthSignalValue,
8292  >,
8293  pub getWetLevelSignal: ::core::option::Option<
8294    unsafe extern "C" fn(channel: *mut SoundChannel) -> *mut PDSynthSignalValue,
8295  >,
8296}
8297#[test]
8298fn bindgen_test_layout_playdate_sound_channel() {
8299  assert_eq!(
8300    ::core::mem::size_of::<playdate_sound_channel>(),
8301    128usize,
8302    concat!("Size of: ", stringify!(playdate_sound_channel))
8303  );
8304  assert_eq!(
8305    ::core::mem::align_of::<playdate_sound_channel>(),
8306    8usize,
8307    concat!("Alignment of ", stringify!(playdate_sound_channel))
8308  );
8309  assert_eq!(
8310    unsafe { &(*(::core::ptr::null::<playdate_sound_channel>())).newChannel as *const _ as usize },
8311    0usize,
8312    concat!(
8313      "Offset of field: ",
8314      stringify!(playdate_sound_channel),
8315      "::",
8316      stringify!(newChannel)
8317    )
8318  );
8319  assert_eq!(
8320    unsafe { &(*(::core::ptr::null::<playdate_sound_channel>())).freeChannel as *const _ as usize },
8321    8usize,
8322    concat!(
8323      "Offset of field: ",
8324      stringify!(playdate_sound_channel),
8325      "::",
8326      stringify!(freeChannel)
8327    )
8328  );
8329  assert_eq!(
8330    unsafe { &(*(::core::ptr::null::<playdate_sound_channel>())).addSource as *const _ as usize },
8331    16usize,
8332    concat!(
8333      "Offset of field: ",
8334      stringify!(playdate_sound_channel),
8335      "::",
8336      stringify!(addSource)
8337    )
8338  );
8339  assert_eq!(
8340    unsafe {
8341      &(*(::core::ptr::null::<playdate_sound_channel>())).removeSource as *const _ as usize
8342    },
8343    24usize,
8344    concat!(
8345      "Offset of field: ",
8346      stringify!(playdate_sound_channel),
8347      "::",
8348      stringify!(removeSource)
8349    )
8350  );
8351  assert_eq!(
8352    unsafe {
8353      &(*(::core::ptr::null::<playdate_sound_channel>())).addCallbackSource as *const _ as usize
8354    },
8355    32usize,
8356    concat!(
8357      "Offset of field: ",
8358      stringify!(playdate_sound_channel),
8359      "::",
8360      stringify!(addCallbackSource)
8361    )
8362  );
8363  assert_eq!(
8364    unsafe { &(*(::core::ptr::null::<playdate_sound_channel>())).addEffect as *const _ as usize },
8365    40usize,
8366    concat!(
8367      "Offset of field: ",
8368      stringify!(playdate_sound_channel),
8369      "::",
8370      stringify!(addEffect)
8371    )
8372  );
8373  assert_eq!(
8374    unsafe {
8375      &(*(::core::ptr::null::<playdate_sound_channel>())).removeEffect as *const _ as usize
8376    },
8377    48usize,
8378    concat!(
8379      "Offset of field: ",
8380      stringify!(playdate_sound_channel),
8381      "::",
8382      stringify!(removeEffect)
8383    )
8384  );
8385  assert_eq!(
8386    unsafe { &(*(::core::ptr::null::<playdate_sound_channel>())).setVolume as *const _ as usize },
8387    56usize,
8388    concat!(
8389      "Offset of field: ",
8390      stringify!(playdate_sound_channel),
8391      "::",
8392      stringify!(setVolume)
8393    )
8394  );
8395  assert_eq!(
8396    unsafe { &(*(::core::ptr::null::<playdate_sound_channel>())).getVolume as *const _ as usize },
8397    64usize,
8398    concat!(
8399      "Offset of field: ",
8400      stringify!(playdate_sound_channel),
8401      "::",
8402      stringify!(getVolume)
8403    )
8404  );
8405  assert_eq!(
8406    unsafe {
8407      &(*(::core::ptr::null::<playdate_sound_channel>())).setVolumeModulator as *const _ as usize
8408    },
8409    72usize,
8410    concat!(
8411      "Offset of field: ",
8412      stringify!(playdate_sound_channel),
8413      "::",
8414      stringify!(setVolumeModulator)
8415    )
8416  );
8417  assert_eq!(
8418    unsafe {
8419      &(*(::core::ptr::null::<playdate_sound_channel>())).getVolumeModulator as *const _ as usize
8420    },
8421    80usize,
8422    concat!(
8423      "Offset of field: ",
8424      stringify!(playdate_sound_channel),
8425      "::",
8426      stringify!(getVolumeModulator)
8427    )
8428  );
8429  assert_eq!(
8430    unsafe { &(*(::core::ptr::null::<playdate_sound_channel>())).setPan as *const _ as usize },
8431    88usize,
8432    concat!(
8433      "Offset of field: ",
8434      stringify!(playdate_sound_channel),
8435      "::",
8436      stringify!(setPan)
8437    )
8438  );
8439  assert_eq!(
8440    unsafe {
8441      &(*(::core::ptr::null::<playdate_sound_channel>())).setPanModulator as *const _ as usize
8442    },
8443    96usize,
8444    concat!(
8445      "Offset of field: ",
8446      stringify!(playdate_sound_channel),
8447      "::",
8448      stringify!(setPanModulator)
8449    )
8450  );
8451  assert_eq!(
8452    unsafe {
8453      &(*(::core::ptr::null::<playdate_sound_channel>())).getPanModulator as *const _ as usize
8454    },
8455    104usize,
8456    concat!(
8457      "Offset of field: ",
8458      stringify!(playdate_sound_channel),
8459      "::",
8460      stringify!(getPanModulator)
8461    )
8462  );
8463  assert_eq!(
8464    unsafe {
8465      &(*(::core::ptr::null::<playdate_sound_channel>())).getDryLevelSignal as *const _ as usize
8466    },
8467    112usize,
8468    concat!(
8469      "Offset of field: ",
8470      stringify!(playdate_sound_channel),
8471      "::",
8472      stringify!(getDryLevelSignal)
8473    )
8474  );
8475  assert_eq!(
8476    unsafe {
8477      &(*(::core::ptr::null::<playdate_sound_channel>())).getWetLevelSignal as *const _ as usize
8478    },
8479    120usize,
8480    concat!(
8481      "Offset of field: ",
8482      stringify!(playdate_sound_channel),
8483      "::",
8484      stringify!(getWetLevelSignal)
8485    )
8486  );
8487}
8488pub type RecordCallback = ::core::option::Option<
8489  unsafe extern "C" fn(
8490    context: *mut super::ctypes::c_void,
8491    buffer: *mut i16,
8492    length: super::ctypes::c_int,
8493  ) -> super::ctypes::c_int,
8494>;
8495#[repr(C)]
8496#[derive(Debug, Copy, Clone)]
8497pub struct playdate_sound {
8498  pub channel: *const playdate_sound_channel,
8499  pub fileplayer: *const playdate_sound_fileplayer,
8500  pub sample: *const playdate_sound_sample,
8501  pub sampleplayer: *const playdate_sound_sampleplayer,
8502  pub synth: *const playdate_sound_synth,
8503  pub sequence: *const playdate_sound_sequence,
8504  pub effect: *const playdate_sound_effect,
8505  pub lfo: *const playdate_sound_lfo,
8506  pub envelope: *const playdate_sound_envelope,
8507  pub source: *const playdate_sound_source,
8508  pub controlsignal: *const playdate_control_signal,
8509  pub track: *const playdate_sound_track,
8510  pub instrument: *const playdate_sound_instrument,
8511  pub getCurrentTime: ::core::option::Option<unsafe extern "C" fn() -> u32>,
8512  pub addSource: ::core::option::Option<
8513    unsafe extern "C" fn(
8514      callback: AudioSourceFunction,
8515      context: *mut super::ctypes::c_void,
8516      stereo: super::ctypes::c_int,
8517    ) -> *mut SoundSource,
8518  >,
8519  pub getDefaultChannel: ::core::option::Option<unsafe extern "C" fn() -> *mut SoundChannel>,
8520  pub addChannel: ::core::option::Option<unsafe extern "C" fn(channel: *mut SoundChannel)>,
8521  pub removeChannel: ::core::option::Option<unsafe extern "C" fn(channel: *mut SoundChannel)>,
8522  pub setMicCallback: ::core::option::Option<
8523    unsafe extern "C" fn(
8524      callback: RecordCallback,
8525      context: *mut super::ctypes::c_void,
8526      forceInternal: super::ctypes::c_int,
8527    ),
8528  >,
8529  pub getHeadphoneState: ::core::option::Option<
8530    unsafe extern "C" fn(
8531      headphone: *mut super::ctypes::c_int,
8532      headsetmic: *mut super::ctypes::c_int,
8533      changeCallback: ::core::option::Option<
8534        unsafe extern "C" fn(headphone: super::ctypes::c_int, mic: super::ctypes::c_int),
8535      >,
8536    ),
8537  >,
8538  pub setOutputsActive: ::core::option::Option<
8539    unsafe extern "C" fn(headphone: super::ctypes::c_int, speaker: super::ctypes::c_int),
8540  >,
8541  pub removeSource: ::core::option::Option<unsafe extern "C" fn(source: *mut SoundSource)>,
8542}
8543#[test]
8544fn bindgen_test_layout_playdate_sound() {
8545  assert_eq!(
8546    ::core::mem::size_of::<playdate_sound>(),
8547    176usize,
8548    concat!("Size of: ", stringify!(playdate_sound))
8549  );
8550  assert_eq!(
8551    ::core::mem::align_of::<playdate_sound>(),
8552    8usize,
8553    concat!("Alignment of ", stringify!(playdate_sound))
8554  );
8555  assert_eq!(
8556    unsafe { &(*(::core::ptr::null::<playdate_sound>())).channel as *const _ as usize },
8557    0usize,
8558    concat!(
8559      "Offset of field: ",
8560      stringify!(playdate_sound),
8561      "::",
8562      stringify!(channel)
8563    )
8564  );
8565  assert_eq!(
8566    unsafe { &(*(::core::ptr::null::<playdate_sound>())).fileplayer as *const _ as usize },
8567    8usize,
8568    concat!(
8569      "Offset of field: ",
8570      stringify!(playdate_sound),
8571      "::",
8572      stringify!(fileplayer)
8573    )
8574  );
8575  assert_eq!(
8576    unsafe { &(*(::core::ptr::null::<playdate_sound>())).sample as *const _ as usize },
8577    16usize,
8578    concat!(
8579      "Offset of field: ",
8580      stringify!(playdate_sound),
8581      "::",
8582      stringify!(sample)
8583    )
8584  );
8585  assert_eq!(
8586    unsafe { &(*(::core::ptr::null::<playdate_sound>())).sampleplayer as *const _ as usize },
8587    24usize,
8588    concat!(
8589      "Offset of field: ",
8590      stringify!(playdate_sound),
8591      "::",
8592      stringify!(sampleplayer)
8593    )
8594  );
8595  assert_eq!(
8596    unsafe { &(*(::core::ptr::null::<playdate_sound>())).synth as *const _ as usize },
8597    32usize,
8598    concat!(
8599      "Offset of field: ",
8600      stringify!(playdate_sound),
8601      "::",
8602      stringify!(synth)
8603    )
8604  );
8605  assert_eq!(
8606    unsafe { &(*(::core::ptr::null::<playdate_sound>())).sequence as *const _ as usize },
8607    40usize,
8608    concat!(
8609      "Offset of field: ",
8610      stringify!(playdate_sound),
8611      "::",
8612      stringify!(sequence)
8613    )
8614  );
8615  assert_eq!(
8616    unsafe { &(*(::core::ptr::null::<playdate_sound>())).effect as *const _ as usize },
8617    48usize,
8618    concat!(
8619      "Offset of field: ",
8620      stringify!(playdate_sound),
8621      "::",
8622      stringify!(effect)
8623    )
8624  );
8625  assert_eq!(
8626    unsafe { &(*(::core::ptr::null::<playdate_sound>())).lfo as *const _ as usize },
8627    56usize,
8628    concat!(
8629      "Offset of field: ",
8630      stringify!(playdate_sound),
8631      "::",
8632      stringify!(lfo)
8633    )
8634  );
8635  assert_eq!(
8636    unsafe { &(*(::core::ptr::null::<playdate_sound>())).envelope as *const _ as usize },
8637    64usize,
8638    concat!(
8639      "Offset of field: ",
8640      stringify!(playdate_sound),
8641      "::",
8642      stringify!(envelope)
8643    )
8644  );
8645  assert_eq!(
8646    unsafe { &(*(::core::ptr::null::<playdate_sound>())).source as *const _ as usize },
8647    72usize,
8648    concat!(
8649      "Offset of field: ",
8650      stringify!(playdate_sound),
8651      "::",
8652      stringify!(source)
8653    )
8654  );
8655  assert_eq!(
8656    unsafe { &(*(::core::ptr::null::<playdate_sound>())).controlsignal as *const _ as usize },
8657    80usize,
8658    concat!(
8659      "Offset of field: ",
8660      stringify!(playdate_sound),
8661      "::",
8662      stringify!(controlsignal)
8663    )
8664  );
8665  assert_eq!(
8666    unsafe { &(*(::core::ptr::null::<playdate_sound>())).track as *const _ as usize },
8667    88usize,
8668    concat!(
8669      "Offset of field: ",
8670      stringify!(playdate_sound),
8671      "::",
8672      stringify!(track)
8673    )
8674  );
8675  assert_eq!(
8676    unsafe { &(*(::core::ptr::null::<playdate_sound>())).instrument as *const _ as usize },
8677    96usize,
8678    concat!(
8679      "Offset of field: ",
8680      stringify!(playdate_sound),
8681      "::",
8682      stringify!(instrument)
8683    )
8684  );
8685  assert_eq!(
8686    unsafe { &(*(::core::ptr::null::<playdate_sound>())).getCurrentTime as *const _ as usize },
8687    104usize,
8688    concat!(
8689      "Offset of field: ",
8690      stringify!(playdate_sound),
8691      "::",
8692      stringify!(getCurrentTime)
8693    )
8694  );
8695  assert_eq!(
8696    unsafe { &(*(::core::ptr::null::<playdate_sound>())).addSource as *const _ as usize },
8697    112usize,
8698    concat!(
8699      "Offset of field: ",
8700      stringify!(playdate_sound),
8701      "::",
8702      stringify!(addSource)
8703    )
8704  );
8705  assert_eq!(
8706    unsafe { &(*(::core::ptr::null::<playdate_sound>())).getDefaultChannel as *const _ as usize },
8707    120usize,
8708    concat!(
8709      "Offset of field: ",
8710      stringify!(playdate_sound),
8711      "::",
8712      stringify!(getDefaultChannel)
8713    )
8714  );
8715  assert_eq!(
8716    unsafe { &(*(::core::ptr::null::<playdate_sound>())).addChannel as *const _ as usize },
8717    128usize,
8718    concat!(
8719      "Offset of field: ",
8720      stringify!(playdate_sound),
8721      "::",
8722      stringify!(addChannel)
8723    )
8724  );
8725  assert_eq!(
8726    unsafe { &(*(::core::ptr::null::<playdate_sound>())).removeChannel as *const _ as usize },
8727    136usize,
8728    concat!(
8729      "Offset of field: ",
8730      stringify!(playdate_sound),
8731      "::",
8732      stringify!(removeChannel)
8733    )
8734  );
8735  assert_eq!(
8736    unsafe { &(*(::core::ptr::null::<playdate_sound>())).setMicCallback as *const _ as usize },
8737    144usize,
8738    concat!(
8739      "Offset of field: ",
8740      stringify!(playdate_sound),
8741      "::",
8742      stringify!(setMicCallback)
8743    )
8744  );
8745  assert_eq!(
8746    unsafe { &(*(::core::ptr::null::<playdate_sound>())).getHeadphoneState as *const _ as usize },
8747    152usize,
8748    concat!(
8749      "Offset of field: ",
8750      stringify!(playdate_sound),
8751      "::",
8752      stringify!(getHeadphoneState)
8753    )
8754  );
8755  assert_eq!(
8756    unsafe { &(*(::core::ptr::null::<playdate_sound>())).setOutputsActive as *const _ as usize },
8757    160usize,
8758    concat!(
8759      "Offset of field: ",
8760      stringify!(playdate_sound),
8761      "::",
8762      stringify!(setOutputsActive)
8763    )
8764  );
8765  assert_eq!(
8766    unsafe { &(*(::core::ptr::null::<playdate_sound>())).removeSource as *const _ as usize },
8767    168usize,
8768    concat!(
8769      "Offset of field: ",
8770      stringify!(playdate_sound),
8771      "::",
8772      stringify!(removeSource)
8773    )
8774  );
8775}
8776#[repr(C)]
8777#[derive(Debug, Copy, Clone)]
8778pub struct playdate_display {
8779  pub getWidth: ::core::option::Option<unsafe extern "C" fn() -> super::ctypes::c_int>,
8780  pub getHeight: ::core::option::Option<unsafe extern "C" fn() -> super::ctypes::c_int>,
8781  pub setRefreshRate: ::core::option::Option<unsafe extern "C" fn(rate: f32)>,
8782  pub setInverted: ::core::option::Option<unsafe extern "C" fn(flag: super::ctypes::c_int)>,
8783  pub setScale: ::core::option::Option<unsafe extern "C" fn(s: super::ctypes::c_uint)>,
8784  pub setMosaic: ::core::option::Option<
8785    unsafe extern "C" fn(x: super::ctypes::c_uint, y: super::ctypes::c_uint),
8786  >,
8787  pub setFlipped:
8788    ::core::option::Option<unsafe extern "C" fn(x: super::ctypes::c_int, y: super::ctypes::c_int)>,
8789  pub setOffset:
8790    ::core::option::Option<unsafe extern "C" fn(x: super::ctypes::c_int, y: super::ctypes::c_int)>,
8791}
8792#[test]
8793fn bindgen_test_layout_playdate_display() {
8794  assert_eq!(
8795    ::core::mem::size_of::<playdate_display>(),
8796    64usize,
8797    concat!("Size of: ", stringify!(playdate_display))
8798  );
8799  assert_eq!(
8800    ::core::mem::align_of::<playdate_display>(),
8801    8usize,
8802    concat!("Alignment of ", stringify!(playdate_display))
8803  );
8804  assert_eq!(
8805    unsafe { &(*(::core::ptr::null::<playdate_display>())).getWidth as *const _ as usize },
8806    0usize,
8807    concat!(
8808      "Offset of field: ",
8809      stringify!(playdate_display),
8810      "::",
8811      stringify!(getWidth)
8812    )
8813  );
8814  assert_eq!(
8815    unsafe { &(*(::core::ptr::null::<playdate_display>())).getHeight as *const _ as usize },
8816    8usize,
8817    concat!(
8818      "Offset of field: ",
8819      stringify!(playdate_display),
8820      "::",
8821      stringify!(getHeight)
8822    )
8823  );
8824  assert_eq!(
8825    unsafe { &(*(::core::ptr::null::<playdate_display>())).setRefreshRate as *const _ as usize },
8826    16usize,
8827    concat!(
8828      "Offset of field: ",
8829      stringify!(playdate_display),
8830      "::",
8831      stringify!(setRefreshRate)
8832    )
8833  );
8834  assert_eq!(
8835    unsafe { &(*(::core::ptr::null::<playdate_display>())).setInverted as *const _ as usize },
8836    24usize,
8837    concat!(
8838      "Offset of field: ",
8839      stringify!(playdate_display),
8840      "::",
8841      stringify!(setInverted)
8842    )
8843  );
8844  assert_eq!(
8845    unsafe { &(*(::core::ptr::null::<playdate_display>())).setScale as *const _ as usize },
8846    32usize,
8847    concat!(
8848      "Offset of field: ",
8849      stringify!(playdate_display),
8850      "::",
8851      stringify!(setScale)
8852    )
8853  );
8854  assert_eq!(
8855    unsafe { &(*(::core::ptr::null::<playdate_display>())).setMosaic as *const _ as usize },
8856    40usize,
8857    concat!(
8858      "Offset of field: ",
8859      stringify!(playdate_display),
8860      "::",
8861      stringify!(setMosaic)
8862    )
8863  );
8864  assert_eq!(
8865    unsafe { &(*(::core::ptr::null::<playdate_display>())).setFlipped as *const _ as usize },
8866    48usize,
8867    concat!(
8868      "Offset of field: ",
8869      stringify!(playdate_display),
8870      "::",
8871      stringify!(setFlipped)
8872    )
8873  );
8874  assert_eq!(
8875    unsafe { &(*(::core::ptr::null::<playdate_display>())).setOffset as *const _ as usize },
8876    56usize,
8877    concat!(
8878      "Offset of field: ",
8879      stringify!(playdate_display),
8880      "::",
8881      stringify!(setOffset)
8882    )
8883  );
8884}
8885#[repr(C)]
8886#[derive(Debug, Copy, Clone)]
8887pub struct PDScore {
8888  pub rank: u32,
8889  pub value: u32,
8890  pub player: *mut super::ctypes::c_char,
8891}
8892#[test]
8893fn bindgen_test_layout_PDScore() {
8894  assert_eq!(
8895    ::core::mem::size_of::<PDScore>(),
8896    16usize,
8897    concat!("Size of: ", stringify!(PDScore))
8898  );
8899  assert_eq!(
8900    ::core::mem::align_of::<PDScore>(),
8901    8usize,
8902    concat!("Alignment of ", stringify!(PDScore))
8903  );
8904  assert_eq!(
8905    unsafe { &(*(::core::ptr::null::<PDScore>())).rank as *const _ as usize },
8906    0usize,
8907    concat!(
8908      "Offset of field: ",
8909      stringify!(PDScore),
8910      "::",
8911      stringify!(rank)
8912    )
8913  );
8914  assert_eq!(
8915    unsafe { &(*(::core::ptr::null::<PDScore>())).value as *const _ as usize },
8916    4usize,
8917    concat!(
8918      "Offset of field: ",
8919      stringify!(PDScore),
8920      "::",
8921      stringify!(value)
8922    )
8923  );
8924  assert_eq!(
8925    unsafe { &(*(::core::ptr::null::<PDScore>())).player as *const _ as usize },
8926    8usize,
8927    concat!(
8928      "Offset of field: ",
8929      stringify!(PDScore),
8930      "::",
8931      stringify!(player)
8932    )
8933  );
8934}
8935#[repr(C)]
8936#[derive(Debug, Copy, Clone)]
8937pub struct PDScoresList {
8938  pub boardID: *mut super::ctypes::c_char,
8939  pub count: super::ctypes::c_uint,
8940  pub lastUpdated: u32,
8941  pub playerIncluded: super::ctypes::c_int,
8942  pub limit: super::ctypes::c_uint,
8943  pub scores: *mut PDScore,
8944}
8945#[test]
8946fn bindgen_test_layout_PDScoresList() {
8947  assert_eq!(
8948    ::core::mem::size_of::<PDScoresList>(),
8949    32usize,
8950    concat!("Size of: ", stringify!(PDScoresList))
8951  );
8952  assert_eq!(
8953    ::core::mem::align_of::<PDScoresList>(),
8954    8usize,
8955    concat!("Alignment of ", stringify!(PDScoresList))
8956  );
8957  assert_eq!(
8958    unsafe { &(*(::core::ptr::null::<PDScoresList>())).boardID as *const _ as usize },
8959    0usize,
8960    concat!(
8961      "Offset of field: ",
8962      stringify!(PDScoresList),
8963      "::",
8964      stringify!(boardID)
8965    )
8966  );
8967  assert_eq!(
8968    unsafe { &(*(::core::ptr::null::<PDScoresList>())).count as *const _ as usize },
8969    8usize,
8970    concat!(
8971      "Offset of field: ",
8972      stringify!(PDScoresList),
8973      "::",
8974      stringify!(count)
8975    )
8976  );
8977  assert_eq!(
8978    unsafe { &(*(::core::ptr::null::<PDScoresList>())).lastUpdated as *const _ as usize },
8979    12usize,
8980    concat!(
8981      "Offset of field: ",
8982      stringify!(PDScoresList),
8983      "::",
8984      stringify!(lastUpdated)
8985    )
8986  );
8987  assert_eq!(
8988    unsafe { &(*(::core::ptr::null::<PDScoresList>())).playerIncluded as *const _ as usize },
8989    16usize,
8990    concat!(
8991      "Offset of field: ",
8992      stringify!(PDScoresList),
8993      "::",
8994      stringify!(playerIncluded)
8995    )
8996  );
8997  assert_eq!(
8998    unsafe { &(*(::core::ptr::null::<PDScoresList>())).limit as *const _ as usize },
8999    20usize,
9000    concat!(
9001      "Offset of field: ",
9002      stringify!(PDScoresList),
9003      "::",
9004      stringify!(limit)
9005    )
9006  );
9007  assert_eq!(
9008    unsafe { &(*(::core::ptr::null::<PDScoresList>())).scores as *const _ as usize },
9009    24usize,
9010    concat!(
9011      "Offset of field: ",
9012      stringify!(PDScoresList),
9013      "::",
9014      stringify!(scores)
9015    )
9016  );
9017}
9018#[repr(C)]
9019#[derive(Debug, Copy, Clone)]
9020pub struct PDBoard {
9021  pub boardID: *mut super::ctypes::c_char,
9022  pub name: *mut super::ctypes::c_char,
9023}
9024#[test]
9025fn bindgen_test_layout_PDBoard() {
9026  assert_eq!(
9027    ::core::mem::size_of::<PDBoard>(),
9028    16usize,
9029    concat!("Size of: ", stringify!(PDBoard))
9030  );
9031  assert_eq!(
9032    ::core::mem::align_of::<PDBoard>(),
9033    8usize,
9034    concat!("Alignment of ", stringify!(PDBoard))
9035  );
9036  assert_eq!(
9037    unsafe { &(*(::core::ptr::null::<PDBoard>())).boardID as *const _ as usize },
9038    0usize,
9039    concat!(
9040      "Offset of field: ",
9041      stringify!(PDBoard),
9042      "::",
9043      stringify!(boardID)
9044    )
9045  );
9046  assert_eq!(
9047    unsafe { &(*(::core::ptr::null::<PDBoard>())).name as *const _ as usize },
9048    8usize,
9049    concat!(
9050      "Offset of field: ",
9051      stringify!(PDBoard),
9052      "::",
9053      stringify!(name)
9054    )
9055  );
9056}
9057#[repr(C)]
9058#[derive(Debug, Copy, Clone)]
9059pub struct PDBoardsList {
9060  pub count: super::ctypes::c_uint,
9061  pub lastUpdated: u32,
9062  pub boards: *mut PDBoard,
9063}
9064#[test]
9065fn bindgen_test_layout_PDBoardsList() {
9066  assert_eq!(
9067    ::core::mem::size_of::<PDBoardsList>(),
9068    16usize,
9069    concat!("Size of: ", stringify!(PDBoardsList))
9070  );
9071  assert_eq!(
9072    ::core::mem::align_of::<PDBoardsList>(),
9073    8usize,
9074    concat!("Alignment of ", stringify!(PDBoardsList))
9075  );
9076  assert_eq!(
9077    unsafe { &(*(::core::ptr::null::<PDBoardsList>())).count as *const _ as usize },
9078    0usize,
9079    concat!(
9080      "Offset of field: ",
9081      stringify!(PDBoardsList),
9082      "::",
9083      stringify!(count)
9084    )
9085  );
9086  assert_eq!(
9087    unsafe { &(*(::core::ptr::null::<PDBoardsList>())).lastUpdated as *const _ as usize },
9088    4usize,
9089    concat!(
9090      "Offset of field: ",
9091      stringify!(PDBoardsList),
9092      "::",
9093      stringify!(lastUpdated)
9094    )
9095  );
9096  assert_eq!(
9097    unsafe { &(*(::core::ptr::null::<PDBoardsList>())).boards as *const _ as usize },
9098    8usize,
9099    concat!(
9100      "Offset of field: ",
9101      stringify!(PDBoardsList),
9102      "::",
9103      stringify!(boards)
9104    )
9105  );
9106}
9107pub type AddScoreCallback = ::core::option::Option<
9108  unsafe extern "C" fn(score: *mut PDScore, errorMessage: *const super::ctypes::c_char),
9109>;
9110pub type PersonalBestCallback = ::core::option::Option<
9111  unsafe extern "C" fn(score: *mut PDScore, errorMessage: *const super::ctypes::c_char),
9112>;
9113pub type BoardsListCallback = ::core::option::Option<
9114  unsafe extern "C" fn(boards: *mut PDBoardsList, errorMessage: *const super::ctypes::c_char),
9115>;
9116pub type ScoresCallback = ::core::option::Option<
9117  unsafe extern "C" fn(scores: *mut PDScoresList, errorMessage: *const super::ctypes::c_char),
9118>;
9119#[repr(C)]
9120#[derive(Debug, Copy, Clone)]
9121pub struct playdate_scoreboards {
9122  pub addScore: ::core::option::Option<
9123    unsafe extern "C" fn(
9124      boardId: *const super::ctypes::c_char,
9125      value: u32,
9126      callback: AddScoreCallback,
9127    ) -> super::ctypes::c_int,
9128  >,
9129  pub getPersonalBest: ::core::option::Option<
9130    unsafe extern "C" fn(
9131      boardId: *const super::ctypes::c_char,
9132      callback: PersonalBestCallback,
9133    ) -> super::ctypes::c_int,
9134  >,
9135  pub freeScore: ::core::option::Option<unsafe extern "C" fn(score: *mut PDScore)>,
9136  pub getScoreboards: ::core::option::Option<
9137    unsafe extern "C" fn(callback: BoardsListCallback) -> super::ctypes::c_int,
9138  >,
9139  pub freeBoardsList: ::core::option::Option<unsafe extern "C" fn(boardsList: *mut PDBoardsList)>,
9140  pub getScores: ::core::option::Option<
9141    unsafe extern "C" fn(
9142      boardId: *const super::ctypes::c_char,
9143      callback: ScoresCallback,
9144    ) -> super::ctypes::c_int,
9145  >,
9146  pub freeScoresList: ::core::option::Option<unsafe extern "C" fn(scoresList: *mut PDScoresList)>,
9147}
9148#[test]
9149fn bindgen_test_layout_playdate_scoreboards() {
9150  assert_eq!(
9151    ::core::mem::size_of::<playdate_scoreboards>(),
9152    56usize,
9153    concat!("Size of: ", stringify!(playdate_scoreboards))
9154  );
9155  assert_eq!(
9156    ::core::mem::align_of::<playdate_scoreboards>(),
9157    8usize,
9158    concat!("Alignment of ", stringify!(playdate_scoreboards))
9159  );
9160  assert_eq!(
9161    unsafe { &(*(::core::ptr::null::<playdate_scoreboards>())).addScore as *const _ as usize },
9162    0usize,
9163    concat!(
9164      "Offset of field: ",
9165      stringify!(playdate_scoreboards),
9166      "::",
9167      stringify!(addScore)
9168    )
9169  );
9170  assert_eq!(
9171    unsafe {
9172      &(*(::core::ptr::null::<playdate_scoreboards>())).getPersonalBest as *const _ as usize
9173    },
9174    8usize,
9175    concat!(
9176      "Offset of field: ",
9177      stringify!(playdate_scoreboards),
9178      "::",
9179      stringify!(getPersonalBest)
9180    )
9181  );
9182  assert_eq!(
9183    unsafe { &(*(::core::ptr::null::<playdate_scoreboards>())).freeScore as *const _ as usize },
9184    16usize,
9185    concat!(
9186      "Offset of field: ",
9187      stringify!(playdate_scoreboards),
9188      "::",
9189      stringify!(freeScore)
9190    )
9191  );
9192  assert_eq!(
9193    unsafe {
9194      &(*(::core::ptr::null::<playdate_scoreboards>())).getScoreboards as *const _ as usize
9195    },
9196    24usize,
9197    concat!(
9198      "Offset of field: ",
9199      stringify!(playdate_scoreboards),
9200      "::",
9201      stringify!(getScoreboards)
9202    )
9203  );
9204  assert_eq!(
9205    unsafe {
9206      &(*(::core::ptr::null::<playdate_scoreboards>())).freeBoardsList as *const _ as usize
9207    },
9208    32usize,
9209    concat!(
9210      "Offset of field: ",
9211      stringify!(playdate_scoreboards),
9212      "::",
9213      stringify!(freeBoardsList)
9214    )
9215  );
9216  assert_eq!(
9217    unsafe { &(*(::core::ptr::null::<playdate_scoreboards>())).getScores as *const _ as usize },
9218    40usize,
9219    concat!(
9220      "Offset of field: ",
9221      stringify!(playdate_scoreboards),
9222      "::",
9223      stringify!(getScores)
9224    )
9225  );
9226  assert_eq!(
9227    unsafe {
9228      &(*(::core::ptr::null::<playdate_scoreboards>())).freeScoresList as *const _ as usize
9229    },
9230    48usize,
9231    concat!(
9232      "Offset of field: ",
9233      stringify!(playdate_scoreboards),
9234      "::",
9235      stringify!(freeScoresList)
9236    )
9237  );
9238}
9239#[repr(C)]
9240#[derive(Debug, Copy, Clone)]
9241pub struct PlaydateAPI {
9242  pub system: *const playdate_sys,
9243  pub file: *const playdate_file,
9244  pub graphics: *const playdate_graphics,
9245  pub sprite: *const playdate_sprite,
9246  pub display: *const playdate_display,
9247  pub sound: *const playdate_sound,
9248  pub lua: *const playdate_lua,
9249  pub json: *const playdate_json,
9250  pub scoreboards: *const playdate_scoreboards,
9251}
9252#[test]
9253fn bindgen_test_layout_PlaydateAPI() {
9254  assert_eq!(
9255    ::core::mem::size_of::<PlaydateAPI>(),
9256    72usize,
9257    concat!("Size of: ", stringify!(PlaydateAPI))
9258  );
9259  assert_eq!(
9260    ::core::mem::align_of::<PlaydateAPI>(),
9261    8usize,
9262    concat!("Alignment of ", stringify!(PlaydateAPI))
9263  );
9264  assert_eq!(
9265    unsafe { &(*(::core::ptr::null::<PlaydateAPI>())).system as *const _ as usize },
9266    0usize,
9267    concat!(
9268      "Offset of field: ",
9269      stringify!(PlaydateAPI),
9270      "::",
9271      stringify!(system)
9272    )
9273  );
9274  assert_eq!(
9275    unsafe { &(*(::core::ptr::null::<PlaydateAPI>())).file as *const _ as usize },
9276    8usize,
9277    concat!(
9278      "Offset of field: ",
9279      stringify!(PlaydateAPI),
9280      "::",
9281      stringify!(file)
9282    )
9283  );
9284  assert_eq!(
9285    unsafe { &(*(::core::ptr::null::<PlaydateAPI>())).graphics as *const _ as usize },
9286    16usize,
9287    concat!(
9288      "Offset of field: ",
9289      stringify!(PlaydateAPI),
9290      "::",
9291      stringify!(graphics)
9292    )
9293  );
9294  assert_eq!(
9295    unsafe { &(*(::core::ptr::null::<PlaydateAPI>())).sprite as *const _ as usize },
9296    24usize,
9297    concat!(
9298      "Offset of field: ",
9299      stringify!(PlaydateAPI),
9300      "::",
9301      stringify!(sprite)
9302    )
9303  );
9304  assert_eq!(
9305    unsafe { &(*(::core::ptr::null::<PlaydateAPI>())).display as *const _ as usize },
9306    32usize,
9307    concat!(
9308      "Offset of field: ",
9309      stringify!(PlaydateAPI),
9310      "::",
9311      stringify!(display)
9312    )
9313  );
9314  assert_eq!(
9315    unsafe { &(*(::core::ptr::null::<PlaydateAPI>())).sound as *const _ as usize },
9316    40usize,
9317    concat!(
9318      "Offset of field: ",
9319      stringify!(PlaydateAPI),
9320      "::",
9321      stringify!(sound)
9322    )
9323  );
9324  assert_eq!(
9325    unsafe { &(*(::core::ptr::null::<PlaydateAPI>())).lua as *const _ as usize },
9326    48usize,
9327    concat!(
9328      "Offset of field: ",
9329      stringify!(PlaydateAPI),
9330      "::",
9331      stringify!(lua)
9332    )
9333  );
9334  assert_eq!(
9335    unsafe { &(*(::core::ptr::null::<PlaydateAPI>())).json as *const _ as usize },
9336    56usize,
9337    concat!(
9338      "Offset of field: ",
9339      stringify!(PlaydateAPI),
9340      "::",
9341      stringify!(json)
9342    )
9343  );
9344  assert_eq!(
9345    unsafe { &(*(::core::ptr::null::<PlaydateAPI>())).scoreboards as *const _ as usize },
9346    64usize,
9347    concat!(
9348      "Offset of field: ",
9349      stringify!(PlaydateAPI),
9350      "::",
9351      stringify!(scoreboards)
9352    )
9353  );
9354}
9355impl PDSystemEvent {
9356  pub const kEventInit: PDSystemEvent = PDSystemEvent(0);
9357}
9358impl PDSystemEvent {
9359  pub const kEventInitLua: PDSystemEvent = PDSystemEvent(1);
9360}
9361impl PDSystemEvent {
9362  pub const kEventLock: PDSystemEvent = PDSystemEvent(2);
9363}
9364impl PDSystemEvent {
9365  pub const kEventUnlock: PDSystemEvent = PDSystemEvent(3);
9366}
9367impl PDSystemEvent {
9368  pub const kEventPause: PDSystemEvent = PDSystemEvent(4);
9369}
9370impl PDSystemEvent {
9371  pub const kEventResume: PDSystemEvent = PDSystemEvent(5);
9372}
9373impl PDSystemEvent {
9374  pub const kEventTerminate: PDSystemEvent = PDSystemEvent(6);
9375}
9376impl PDSystemEvent {
9377  pub const kEventKeyPressed: PDSystemEvent = PDSystemEvent(7);
9378}
9379impl PDSystemEvent {
9380  pub const kEventKeyReleased: PDSystemEvent = PDSystemEvent(8);
9381}
9382impl PDSystemEvent {
9383  pub const kEventLowPower: PDSystemEvent = PDSystemEvent(9);
9384}
9385#[repr(transparent)]
9386#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
9387pub struct PDSystemEvent(pub super::ctypes::c_int);
9388extern "C" {
9389  pub fn eventHandler(
9390    playdate: *mut PlaydateAPI,
9391    event: PDSystemEvent,
9392    arg: u32,
9393  ) -> super::ctypes::c_int;
9394}