1#![allow(deref_nullptr)]
4
5#[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}