{-# OPTIONS -Wall #-}
module Raylib.Types where

-- This file includes Haskell counterparts to the structs defined in raylib


import Foreign.C
    ( CString, CChar, CUShort, CUInt, CInt, CUChar, CFloat, CBool )
import Foreign
    ( Ptr,
      plusPtr,
      pokeArray,
      peekArray,
      castPtr,
      Storable(pokeByteOff, poke, peek, alignment, sizeOf, peekByteOff) )


------------------------------------------------

-- Raylib enumerations -------------------------

------------------------------------------------


data ConfigFlag = VsyncHint              
                 | FullscreenMode         
                 | WindowResizable        
                 | WindowUndecorated      
                 | WindowHidden           
                 | WindowMinimized        
                 | WindowMaximized        
                 | WindowUnfocused        
                 | WindowTopmost          
                 | WindowAlwaysRun        
                 | WindowTransparent      
                 | WindowHighdpi          
                 | WindowMousePassthrough 
                 | Msaa4xHint             
                 | InterlacedHint         
  deriving (ConfigFlag -> ConfigFlag -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ConfigFlag -> ConfigFlag -> Bool
$c/= :: ConfigFlag -> ConfigFlag -> Bool
== :: ConfigFlag -> ConfigFlag -> Bool
$c== :: ConfigFlag -> ConfigFlag -> Bool
Eq, Int -> ConfigFlag -> ShowS
[ConfigFlag] -> ShowS
ConfigFlag -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ConfigFlag] -> ShowS
$cshowList :: [ConfigFlag] -> ShowS
show :: ConfigFlag -> String
$cshow :: ConfigFlag -> String
showsPrec :: Int -> ConfigFlag -> ShowS
$cshowsPrec :: Int -> ConfigFlag -> ShowS
Show)
  
instance Enum ConfigFlag where
    fromEnum :: ConfigFlag -> Int
fromEnum ConfigFlag
g = case ConfigFlag
g of 
            ConfigFlag
VsyncHint              -> Int
64
            ConfigFlag
FullscreenMode         -> Int
2
            ConfigFlag
WindowResizable        -> Int
4
            ConfigFlag
WindowUndecorated      -> Int
8
            ConfigFlag
WindowHidden           -> Int
128
            ConfigFlag
WindowMinimized        -> Int
512
            ConfigFlag
WindowMaximized        -> Int
1024
            ConfigFlag
WindowUnfocused        -> Int
2048
            ConfigFlag
WindowTopmost          -> Int
4096
            ConfigFlag
WindowAlwaysRun        -> Int
256
            ConfigFlag
WindowTransparent      -> Int
16
            ConfigFlag
WindowHighdpi          -> Int
8192
            ConfigFlag
WindowMousePassthrough -> Int
16384
            ConfigFlag
Msaa4xHint             -> Int
32
            ConfigFlag
InterlacedHint         -> Int
65536
    toEnum :: Int -> ConfigFlag
toEnum Int
x = case Int
x of 
      Int
64    -> ConfigFlag
VsyncHint              
      Int
2     -> ConfigFlag
FullscreenMode         
      Int
4     -> ConfigFlag
WindowResizable        
      Int
8     -> ConfigFlag
WindowUndecorated      
      Int
128   -> ConfigFlag
WindowHidden           
      Int
512   -> ConfigFlag
WindowMinimized        
      Int
1024  -> ConfigFlag
WindowMaximized        
      Int
2048  -> ConfigFlag
WindowUnfocused        
      Int
4096  -> ConfigFlag
WindowTopmost          
      Int
256   -> ConfigFlag
WindowAlwaysRun        
      Int
16    -> ConfigFlag
WindowTransparent      
      Int
8192  -> ConfigFlag
WindowHighdpi          
      Int
16384 -> ConfigFlag
WindowMousePassthrough 
      Int
32    -> ConfigFlag
Msaa4xHint             
      Int
65536 -> ConfigFlag
InterlacedHint         
      Int
n     -> forall a. HasCallStack => String -> a
error forall a b. (a -> b) -> a -> b
$ String
"Invalid value " forall a. [a] -> [a] -> [a]
++ forall a. Show a => a -> String
show Int
n forall a. [a] -> [a] -> [a]
++ String
" for `toEnum`."

data TraceLogLevel = LogAll | LogTrace | LogDebug | LogInfo | LogWarning | LogError | LogFatal | LogNone 
    deriving (TraceLogLevel -> TraceLogLevel -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TraceLogLevel -> TraceLogLevel -> Bool
$c/= :: TraceLogLevel -> TraceLogLevel -> Bool
== :: TraceLogLevel -> TraceLogLevel -> Bool
$c== :: TraceLogLevel -> TraceLogLevel -> Bool
Eq, Int -> TraceLogLevel -> ShowS
[TraceLogLevel] -> ShowS
TraceLogLevel -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TraceLogLevel] -> ShowS
$cshowList :: [TraceLogLevel] -> ShowS
show :: TraceLogLevel -> String
$cshow :: TraceLogLevel -> String
showsPrec :: Int -> TraceLogLevel -> ShowS
$cshowsPrec :: Int -> TraceLogLevel -> ShowS
Show,Int -> TraceLogLevel
TraceLogLevel -> Int
TraceLogLevel -> [TraceLogLevel]
TraceLogLevel -> TraceLogLevel
TraceLogLevel -> TraceLogLevel -> [TraceLogLevel]
TraceLogLevel -> TraceLogLevel -> TraceLogLevel -> [TraceLogLevel]
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: TraceLogLevel -> TraceLogLevel -> TraceLogLevel -> [TraceLogLevel]
$cenumFromThenTo :: TraceLogLevel -> TraceLogLevel -> TraceLogLevel -> [TraceLogLevel]
enumFromTo :: TraceLogLevel -> TraceLogLevel -> [TraceLogLevel]
$cenumFromTo :: TraceLogLevel -> TraceLogLevel -> [TraceLogLevel]
enumFromThen :: TraceLogLevel -> TraceLogLevel -> [TraceLogLevel]
$cenumFromThen :: TraceLogLevel -> TraceLogLevel -> [TraceLogLevel]
enumFrom :: TraceLogLevel -> [TraceLogLevel]
$cenumFrom :: TraceLogLevel -> [TraceLogLevel]
fromEnum :: TraceLogLevel -> Int
$cfromEnum :: TraceLogLevel -> Int
toEnum :: Int -> TraceLogLevel
$ctoEnum :: Int -> TraceLogLevel
pred :: TraceLogLevel -> TraceLogLevel
$cpred :: TraceLogLevel -> TraceLogLevel
succ :: TraceLogLevel -> TraceLogLevel
$csucc :: TraceLogLevel -> TraceLogLevel
Enum)

data KeyboardKey = KeyNull        
                 | KeyApostrophe  
                 | KeyComma       
                 | KeyMinus       
                 | KeyPeriod      
                 | KeySlash       
                 | KeyZero        
                 | KeyOne         
                 | KeyTwo         
                 | KeyThree       
                 | KeyFour        
                 | KeyFive        
                 | KeySix         
                 | KeySeven       
                 | KeyEight       
                 | KeyNine        
                 | KeySemicolon   
                 | KeyEqual       
                 | KeyA           
                 | KeyB           
                 | KeyC           
                 | KeyD           
                 | KeyE           
                 | KeyF           
                 | KeyG           
                 | KeyH           
                 | KeyI           
                 | KeyJ           
                 | KeyK           
                 | KeyL           
                 | KeyM           
                 | KeyN           
                 | KeyO           
                 | KeyP           
                 | KeyQ           
                 | KeyR           
                 | KeyS           
                 | KeyT           
                 | KeyU           
                 | KeyV           
                 | KeyW           
                 | KeyX           
                 | KeyY           
                 | KeyZ           
                 | KeyLeftBracket 
                 | KeyBackslash   
                 | KeyRightBracket
                 | KeyGrave       
                 | KeySpace       
                 | KeyEscape      
                 | KeyEnter       
                 | KeyTab         
                 | KeyBackspace   
                 | KeyInsert      
                 | KeyDelete      
                 | KeyRight       
                 | KeyLeft        
                 | KeyDown        
                 | KeyUp          
                 | KeyPageUp      
                 | KeyPageDown    
                 | KeyHome        
                 | KeyEnd         
                 | KeyCapsLock    
                 | KeyScrollLock  
                 | KeyNumLock     
                 | KeyPrintScreen 
                 | KeyPause       
                 | KeyF1          
                 | KeyF2          
                 | KeyF3          
                 | KeyF4          
                 | KeyF5          
                 | KeyF6          
                 | KeyF7          
                 | KeyF8          
                 | KeyF9          
                 | KeyF10         
                 | KeyF11         
                 | KeyF12         
                 | KeyLeftShift   
                 | KeyLeftControl 
                 | KeyLeftAlt     
                 | KeyLeftSuper   
                 | KeyRightShift  
                 | KeyRightControl
                 | KeyRightAlt    
                 | KeyRightSuper  
                 | KeyKbMenu      
                 | KeyKp0         
                 | KeyKp1         
                 | KeyKp2         
                 | KeyKp3         
                 | KeyKp4         
                 | KeyKp5         
                 | KeyKp6         
                 | KeyKp7         
                 | KeyKp8         
                 | KeyKp9         
                 | KeyKpDecimal   
                 | KeyKpDivide    
                 | KeyKpMultiply  
                 | KeyKpSubtract  
                 | KeyKpAdd       
                 | KeyKpEnter     
                 | KeyKpEqual     
                 | KeyBack        
                 | KeyMenu        
                 | KeyVolumeUp    
                 | KeyVolumeDown  

  deriving (KeyboardKey -> KeyboardKey -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: KeyboardKey -> KeyboardKey -> Bool
$c/= :: KeyboardKey -> KeyboardKey -> Bool
== :: KeyboardKey -> KeyboardKey -> Bool
$c== :: KeyboardKey -> KeyboardKey -> Bool
Eq, Int -> KeyboardKey -> ShowS
[KeyboardKey] -> ShowS
KeyboardKey -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [KeyboardKey] -> ShowS
$cshowList :: [KeyboardKey] -> ShowS
show :: KeyboardKey -> String
$cshow :: KeyboardKey -> String
showsPrec :: Int -> KeyboardKey -> ShowS
$cshowsPrec :: Int -> KeyboardKey -> ShowS
Show)

instance Enum KeyboardKey where
    fromEnum :: KeyboardKey -> Int
fromEnum KeyboardKey
k = case KeyboardKey
k of 
        KeyboardKey
KeyNull         -> Int
0
        KeyboardKey
KeyApostrophe   -> Int
39
        KeyboardKey
KeyComma        -> Int
44
        KeyboardKey
KeyMinus        -> Int
45
        KeyboardKey
KeyPeriod       -> Int
46
        KeyboardKey
KeySlash        -> Int
47
        KeyboardKey
KeyZero         -> Int
48
        KeyboardKey
KeyOne          -> Int
49
        KeyboardKey
KeyTwo          -> Int
50
        KeyboardKey
KeyThree        -> Int
51
        KeyboardKey
KeyFour         -> Int
52
        KeyboardKey
KeyFive         -> Int
53
        KeyboardKey
KeySix          -> Int
54
        KeyboardKey
KeySeven        -> Int
55
        KeyboardKey
KeyEight        -> Int
56
        KeyboardKey
KeyNine         -> Int
57
        KeyboardKey
KeySemicolon    -> Int
59
        KeyboardKey
KeyEqual        -> Int
61
        KeyboardKey
KeyA            -> Int
65
        KeyboardKey
KeyB            -> Int
66
        KeyboardKey
KeyC            -> Int
67
        KeyboardKey
KeyD            -> Int
68
        KeyboardKey
KeyE            -> Int
69
        KeyboardKey
KeyF            -> Int
70
        KeyboardKey
KeyG            -> Int
71
        KeyboardKey
KeyH            -> Int
72
        KeyboardKey
KeyI            -> Int
73
        KeyboardKey
KeyJ            -> Int
74
        KeyboardKey
KeyK            -> Int
75
        KeyboardKey
KeyL            -> Int
76
        KeyboardKey
KeyM            -> Int
77
        KeyboardKey
KeyN            -> Int
78
        KeyboardKey
KeyO            -> Int
79
        KeyboardKey
KeyP            -> Int
80
        KeyboardKey
KeyQ            -> Int
81
        KeyboardKey
KeyR            -> Int
82
        KeyboardKey
KeyS            -> Int
83
        KeyboardKey
KeyT            -> Int
84
        KeyboardKey
KeyU            -> Int
85
        KeyboardKey
KeyV            -> Int
86
        KeyboardKey
KeyW            -> Int
87
        KeyboardKey
KeyX            -> Int
88
        KeyboardKey
KeyY            -> Int
89
        KeyboardKey
KeyZ            -> Int
90
        KeyboardKey
KeyLeftBracket  -> Int
91
        KeyboardKey
KeyBackslash    -> Int
92
        KeyboardKey
KeyRightBracket -> Int
93
        KeyboardKey
KeyGrave        -> Int
96
        KeyboardKey
KeySpace        -> Int
32
        KeyboardKey
KeyEscape       -> Int
256
        KeyboardKey
KeyEnter        -> Int
257
        KeyboardKey
KeyTab          -> Int
258
        KeyboardKey
KeyBackspace    -> Int
259
        KeyboardKey
KeyInsert       -> Int
260
        KeyboardKey
KeyDelete       -> Int
261
        KeyboardKey
KeyRight        -> Int
262
        KeyboardKey
KeyLeft         -> Int
263
        KeyboardKey
KeyDown         -> Int
264
        KeyboardKey
KeyUp           -> Int
265
        KeyboardKey
KeyPageUp       -> Int
266
        KeyboardKey
KeyPageDown     -> Int
267
        KeyboardKey
KeyHome         -> Int
268
        KeyboardKey
KeyEnd          -> Int
269
        KeyboardKey
KeyCapsLock     -> Int
280
        KeyboardKey
KeyScrollLock   -> Int
281
        KeyboardKey
KeyNumLock      -> Int
282
        KeyboardKey
KeyPrintScreen  -> Int
283
        KeyboardKey
KeyPause        -> Int
284
        KeyboardKey
KeyF1           -> Int
290
        KeyboardKey
KeyF2           -> Int
291
        KeyboardKey
KeyF3           -> Int
292
        KeyboardKey
KeyF4           -> Int
293
        KeyboardKey
KeyF5           -> Int
294
        KeyboardKey
KeyF6           -> Int
295
        KeyboardKey
KeyF7           -> Int
296
        KeyboardKey
KeyF8           -> Int
297
        KeyboardKey
KeyF9           -> Int
298
        KeyboardKey
KeyF10          -> Int
299
        KeyboardKey
KeyF11          -> Int
300
        KeyboardKey
KeyF12          -> Int
301
        KeyboardKey
KeyLeftShift    -> Int
340
        KeyboardKey
KeyLeftControl  -> Int
341
        KeyboardKey
KeyLeftAlt      -> Int
342
        KeyboardKey
KeyLeftSuper    -> Int
343
        KeyboardKey
KeyRightShift   -> Int
344
        KeyboardKey
KeyRightControl -> Int
345
        KeyboardKey
KeyRightAlt     -> Int
346
        KeyboardKey
KeyRightSuper   -> Int
347
        KeyboardKey
KeyKbMenu       -> Int
348
        KeyboardKey
KeyKp0          -> Int
320
        KeyboardKey
KeyKp1          -> Int
321
        KeyboardKey
KeyKp2          -> Int
322
        KeyboardKey
KeyKp3          -> Int
323
        KeyboardKey
KeyKp4          -> Int
324
        KeyboardKey
KeyKp5          -> Int
325
        KeyboardKey
KeyKp6          -> Int
326
        KeyboardKey
KeyKp7          -> Int
327
        KeyboardKey
KeyKp8          -> Int
328
        KeyboardKey
KeyKp9          -> Int
329
        KeyboardKey
KeyKpDecimal    -> Int
330
        KeyboardKey
KeyKpDivide     -> Int
331
        KeyboardKey
KeyKpMultiply   -> Int
332
        KeyboardKey
KeyKpSubtract   -> Int
333
        KeyboardKey
KeyKpAdd        -> Int
334
        KeyboardKey
KeyKpEnter      -> Int
335
        KeyboardKey
KeyKpEqual      -> Int
336
        -- Android buttons

        KeyboardKey
KeyBack         -> Int
4
        KeyboardKey
KeyMenu         -> Int
82
        KeyboardKey
KeyVolumeUp     -> Int
24
        KeyboardKey
KeyVolumeDown   -> Int
25

    toEnum :: Int -> KeyboardKey
toEnum Int
n = case Int
n of 
       Int
0   -> KeyboardKey
KeyNull        
       Int
39  -> KeyboardKey
KeyApostrophe  
       Int
44  -> KeyboardKey
KeyComma       
       Int
45  -> KeyboardKey
KeyMinus       
       Int
46  -> KeyboardKey
KeyPeriod      
       Int
47  -> KeyboardKey
KeySlash       
       Int
48  -> KeyboardKey
KeyZero        
       Int
49  -> KeyboardKey
KeyOne         
       Int
50  -> KeyboardKey
KeyTwo         
       Int
51  -> KeyboardKey
KeyThree       
       Int
52  -> KeyboardKey
KeyFour        
       Int
53  -> KeyboardKey
KeyFive        
       Int
54  -> KeyboardKey
KeySix         
       Int
55  -> KeyboardKey
KeySeven       
       Int
56  -> KeyboardKey
KeyEight       
       Int
57  -> KeyboardKey
KeyNine        
       Int
59  -> KeyboardKey
KeySemicolon   
       Int
61  -> KeyboardKey
KeyEqual       
       Int
65  -> KeyboardKey
KeyA           
       Int
66  -> KeyboardKey
KeyB           
       Int
67  -> KeyboardKey
KeyC           
       Int
68  -> KeyboardKey
KeyD           
       Int
69  -> KeyboardKey
KeyE           
       Int
70  -> KeyboardKey
KeyF           
       Int
71  -> KeyboardKey
KeyG           
       Int
72  -> KeyboardKey
KeyH           
       Int
73  -> KeyboardKey
KeyI           
       Int
74  -> KeyboardKey
KeyJ           
       Int
75  -> KeyboardKey
KeyK           
       Int
76  -> KeyboardKey
KeyL           
       Int
77  -> KeyboardKey
KeyM           
       Int
78  -> KeyboardKey
KeyN           
       Int
79  -> KeyboardKey
KeyO           
       Int
80  -> KeyboardKey
KeyP           
       Int
81  -> KeyboardKey
KeyQ           
       Int
82  -> KeyboardKey
KeyR           
       Int
83  -> KeyboardKey
KeyS           
       Int
84  -> KeyboardKey
KeyT           
       Int
85  -> KeyboardKey
KeyU           
       Int
86  -> KeyboardKey
KeyV           
       Int
87  -> KeyboardKey
KeyW           
       Int
88  -> KeyboardKey
KeyX           
       Int
89  -> KeyboardKey
KeyY           
       Int
90  -> KeyboardKey
KeyZ           
       Int
91  -> KeyboardKey
KeyLeftBracket 
       Int
92  -> KeyboardKey
KeyBackslash   
       Int
93  -> KeyboardKey
KeyRightBracket
       Int
96  -> KeyboardKey
KeyGrave       
       Int
32  -> KeyboardKey
KeySpace       
       Int
256 -> KeyboardKey
KeyEscape      
       Int
257 -> KeyboardKey
KeyEnter       
       Int
258 -> KeyboardKey
KeyTab         
       Int
259 -> KeyboardKey
KeyBackspace   
       Int
260 -> KeyboardKey
KeyInsert      
       Int
261 -> KeyboardKey
KeyDelete      
       Int
262 -> KeyboardKey
KeyRight       
       Int
263 -> KeyboardKey
KeyLeft        
       Int
264 -> KeyboardKey
KeyDown        
       Int
265 -> KeyboardKey
KeyUp          
       Int
266 -> KeyboardKey
KeyPageUp      
       Int
267 -> KeyboardKey
KeyPageDown    
       Int
268 -> KeyboardKey
KeyHome        
       Int
269 -> KeyboardKey
KeyEnd         
       Int
280 -> KeyboardKey
KeyCapsLock    
       Int
281 -> KeyboardKey
KeyScrollLock  
       Int
282 -> KeyboardKey
KeyNumLock     
       Int
283 -> KeyboardKey
KeyPrintScreen 
       Int
284 -> KeyboardKey
KeyPause       
       Int
290 -> KeyboardKey
KeyF1          
       Int
291 -> KeyboardKey
KeyF2          
       Int
292 -> KeyboardKey
KeyF3          
       Int
293 -> KeyboardKey
KeyF4          
       Int
294 -> KeyboardKey
KeyF5          
       Int
295 -> KeyboardKey
KeyF6          
       Int
296 -> KeyboardKey
KeyF7          
       Int
297 -> KeyboardKey
KeyF8          
       Int
298 -> KeyboardKey
KeyF9          
       Int
299 -> KeyboardKey
KeyF10         
       Int
300 -> KeyboardKey
KeyF11         
       Int
301 -> KeyboardKey
KeyF12         
       Int
340 -> KeyboardKey
KeyLeftShift   
       Int
341 -> KeyboardKey
KeyLeftControl 
       Int
342 -> KeyboardKey
KeyLeftAlt     
       Int
343 -> KeyboardKey
KeyLeftSuper   
       Int
344 -> KeyboardKey
KeyRightShift  
       Int
345 -> KeyboardKey
KeyRightControl
       Int
346 -> KeyboardKey
KeyRightAlt    
       Int
347 -> KeyboardKey
KeyRightSuper  
       Int
348 -> KeyboardKey
KeyKbMenu      
       Int
320 -> KeyboardKey
KeyKp0         
       Int
321 -> KeyboardKey
KeyKp1         
       Int
322 -> KeyboardKey
KeyKp2         
       Int
323 -> KeyboardKey
KeyKp3         
       Int
324 -> KeyboardKey
KeyKp4         
       Int
325 -> KeyboardKey
KeyKp5         
       Int
326 -> KeyboardKey
KeyKp6         
       Int
327 -> KeyboardKey
KeyKp7         
       Int
328 -> KeyboardKey
KeyKp8         
       Int
329 -> KeyboardKey
KeyKp9         
       Int
330 -> KeyboardKey
KeyKpDecimal   
       Int
331 -> KeyboardKey
KeyKpDivide    
       Int
332 -> KeyboardKey
KeyKpMultiply  
       Int
333 -> KeyboardKey
KeyKpSubtract  
       Int
334 -> KeyboardKey
KeyKpAdd       
       Int
335 -> KeyboardKey
KeyKpEnter     
       Int
336 -> KeyboardKey
KeyKpEqual     
       -- Android buttons

       Int
4   -> KeyboardKey
KeyBack        
      --  82  -> KeyMenu        

       Int
24  -> KeyboardKey
KeyVolumeUp    
       Int
25  -> KeyboardKey
KeyVolumeDown  
       Int
x   -> forall a. HasCallStack => String -> a
error forall a b. (a -> b) -> a -> b
$ String
"Invalid value " forall a. [a] -> [a] -> [a]
++ forall a. Show a => a -> String
show Int
x forall a. [a] -> [a] -> [a]
++ String
" for `fromEnum`."

data MouseButton
  = MouseButtonLeft
  | MouseButtonRight
  | MouseButtonMiddle
  | MouseButtonSide
  | MouseButtonExtra
  | MouseButtonForward
  | MouseButtonBack
  deriving (MouseButton -> MouseButton -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MouseButton -> MouseButton -> Bool
$c/= :: MouseButton -> MouseButton -> Bool
== :: MouseButton -> MouseButton -> Bool
$c== :: MouseButton -> MouseButton -> Bool
Eq, Int -> MouseButton -> ShowS
[MouseButton] -> ShowS
MouseButton -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MouseButton] -> ShowS
$cshowList :: [MouseButton] -> ShowS
show :: MouseButton -> String
$cshow :: MouseButton -> String
showsPrec :: Int -> MouseButton -> ShowS
$cshowsPrec :: Int -> MouseButton -> ShowS
Show, Int -> MouseButton
MouseButton -> Int
MouseButton -> [MouseButton]
MouseButton -> MouseButton
MouseButton -> MouseButton -> [MouseButton]
MouseButton -> MouseButton -> MouseButton -> [MouseButton]
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: MouseButton -> MouseButton -> MouseButton -> [MouseButton]
$cenumFromThenTo :: MouseButton -> MouseButton -> MouseButton -> [MouseButton]
enumFromTo :: MouseButton -> MouseButton -> [MouseButton]
$cenumFromTo :: MouseButton -> MouseButton -> [MouseButton]
enumFromThen :: MouseButton -> MouseButton -> [MouseButton]
$cenumFromThen :: MouseButton -> MouseButton -> [MouseButton]
enumFrom :: MouseButton -> [MouseButton]
$cenumFrom :: MouseButton -> [MouseButton]
fromEnum :: MouseButton -> Int
$cfromEnum :: MouseButton -> Int
toEnum :: Int -> MouseButton
$ctoEnum :: Int -> MouseButton
pred :: MouseButton -> MouseButton
$cpred :: MouseButton -> MouseButton
succ :: MouseButton -> MouseButton
$csucc :: MouseButton -> MouseButton
Enum)

data MouseCursor
  = MouseCursorDefault
  | MouseCursorArrow
  | MouseCursorIbeam
  | MouseCursorCrosshair
  | MouseCursorPointingHand
  | MouseCursorResizeEW
  | MouseCursorResizeNS
  | MouseCursorResizeNWSE
  | MouseCursorResizeNESW
  | MouseCursorResizeAll
  | MouseCursorNotAllowed
 deriving (MouseCursor -> MouseCursor -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MouseCursor -> MouseCursor -> Bool
$c/= :: MouseCursor -> MouseCursor -> Bool
== :: MouseCursor -> MouseCursor -> Bool
$c== :: MouseCursor -> MouseCursor -> Bool
Eq, Int -> MouseCursor -> ShowS
[MouseCursor] -> ShowS
MouseCursor -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MouseCursor] -> ShowS
$cshowList :: [MouseCursor] -> ShowS
show :: MouseCursor -> String
$cshow :: MouseCursor -> String
showsPrec :: Int -> MouseCursor -> ShowS
$cshowsPrec :: Int -> MouseCursor -> ShowS
Show, Int -> MouseCursor
MouseCursor -> Int
MouseCursor -> [MouseCursor]
MouseCursor -> MouseCursor
MouseCursor -> MouseCursor -> [MouseCursor]
MouseCursor -> MouseCursor -> MouseCursor -> [MouseCursor]
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: MouseCursor -> MouseCursor -> MouseCursor -> [MouseCursor]
$cenumFromThenTo :: MouseCursor -> MouseCursor -> MouseCursor -> [MouseCursor]
enumFromTo :: MouseCursor -> MouseCursor -> [MouseCursor]
$cenumFromTo :: MouseCursor -> MouseCursor -> [MouseCursor]
enumFromThen :: MouseCursor -> MouseCursor -> [MouseCursor]
$cenumFromThen :: MouseCursor -> MouseCursor -> [MouseCursor]
enumFrom :: MouseCursor -> [MouseCursor]
$cenumFrom :: MouseCursor -> [MouseCursor]
fromEnum :: MouseCursor -> Int
$cfromEnum :: MouseCursor -> Int
toEnum :: Int -> MouseCursor
$ctoEnum :: Int -> MouseCursor
pred :: MouseCursor -> MouseCursor
$cpred :: MouseCursor -> MouseCursor
succ :: MouseCursor -> MouseCursor
$csucc :: MouseCursor -> MouseCursor
Enum)

data GamepadButton = GamepadButtonUnknown 
                   | GamepadButtonUnknownLeftFaceUp 
                   | GamepadButtonLeftFaceRight
                   | GamepadButtonLeftFaceDown 
                   | GamepadButtonLeftFaceLeft
                   | GamepadButtonRightFaceUp
                   | GamepadButtonRightFaceRight 
                   | GamepadButtonRightFaceDown 
                   | GamepadButtonRightFaceLeft
                   | GamepadButtonLeftTrigger1
                   | GamepadButtonLeftTrigger2 
                   | GamepadButtonRightTrigger1 
                   | GamepadButtonRightTrigger2
                   | GamepadButtonMiddleLeft 
                   | GamepadButtonMiddle 
                   | GamepadButtonMiddleRight 
                   | GamepadButtonLeftThumb 
                   | GamepadButtonRightThumb 
    deriving (GamepadButton -> GamepadButton -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GamepadButton -> GamepadButton -> Bool
$c/= :: GamepadButton -> GamepadButton -> Bool
== :: GamepadButton -> GamepadButton -> Bool
$c== :: GamepadButton -> GamepadButton -> Bool
Eq, Int -> GamepadButton -> ShowS
[GamepadButton] -> ShowS
GamepadButton -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GamepadButton] -> ShowS
$cshowList :: [GamepadButton] -> ShowS
show :: GamepadButton -> String
$cshow :: GamepadButton -> String
showsPrec :: Int -> GamepadButton -> ShowS
$cshowsPrec :: Int -> GamepadButton -> ShowS
Show, Int -> GamepadButton
GamepadButton -> Int
GamepadButton -> [GamepadButton]
GamepadButton -> GamepadButton
GamepadButton -> GamepadButton -> [GamepadButton]
GamepadButton -> GamepadButton -> GamepadButton -> [GamepadButton]
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: GamepadButton -> GamepadButton -> GamepadButton -> [GamepadButton]
$cenumFromThenTo :: GamepadButton -> GamepadButton -> GamepadButton -> [GamepadButton]
enumFromTo :: GamepadButton -> GamepadButton -> [GamepadButton]
$cenumFromTo :: GamepadButton -> GamepadButton -> [GamepadButton]
enumFromThen :: GamepadButton -> GamepadButton -> [GamepadButton]
$cenumFromThen :: GamepadButton -> GamepadButton -> [GamepadButton]
enumFrom :: GamepadButton -> [GamepadButton]
$cenumFrom :: GamepadButton -> [GamepadButton]
fromEnum :: GamepadButton -> Int
$cfromEnum :: GamepadButton -> Int
toEnum :: Int -> GamepadButton
$ctoEnum :: Int -> GamepadButton
pred :: GamepadButton -> GamepadButton
$cpred :: GamepadButton -> GamepadButton
succ :: GamepadButton -> GamepadButton
$csucc :: GamepadButton -> GamepadButton
Enum)

data GamepadAxis = GamepadAxisLeftX 
                 | GamepadAxisLeftY
                 | GamepadAxisRightX 
                 | GamepadAxisRightY 
                 | GamepadAxisLeftTrigger 
                 | GamepadAxisRightTrigger 
    deriving (GamepadAxis -> GamepadAxis -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GamepadAxis -> GamepadAxis -> Bool
$c/= :: GamepadAxis -> GamepadAxis -> Bool
== :: GamepadAxis -> GamepadAxis -> Bool
$c== :: GamepadAxis -> GamepadAxis -> Bool
Eq, Int -> GamepadAxis -> ShowS
[GamepadAxis] -> ShowS
GamepadAxis -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GamepadAxis] -> ShowS
$cshowList :: [GamepadAxis] -> ShowS
show :: GamepadAxis -> String
$cshow :: GamepadAxis -> String
showsPrec :: Int -> GamepadAxis -> ShowS
$cshowsPrec :: Int -> GamepadAxis -> ShowS
Show, Int -> GamepadAxis
GamepadAxis -> Int
GamepadAxis -> [GamepadAxis]
GamepadAxis -> GamepadAxis
GamepadAxis -> GamepadAxis -> [GamepadAxis]
GamepadAxis -> GamepadAxis -> GamepadAxis -> [GamepadAxis]
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: GamepadAxis -> GamepadAxis -> GamepadAxis -> [GamepadAxis]
$cenumFromThenTo :: GamepadAxis -> GamepadAxis -> GamepadAxis -> [GamepadAxis]
enumFromTo :: GamepadAxis -> GamepadAxis -> [GamepadAxis]
$cenumFromTo :: GamepadAxis -> GamepadAxis -> [GamepadAxis]
enumFromThen :: GamepadAxis -> GamepadAxis -> [GamepadAxis]
$cenumFromThen :: GamepadAxis -> GamepadAxis -> [GamepadAxis]
enumFrom :: GamepadAxis -> [GamepadAxis]
$cenumFrom :: GamepadAxis -> [GamepadAxis]
fromEnum :: GamepadAxis -> Int
$cfromEnum :: GamepadAxis -> Int
toEnum :: Int -> GamepadAxis
$ctoEnum :: Int -> GamepadAxis
pred :: GamepadAxis -> GamepadAxis
$cpred :: GamepadAxis -> GamepadAxis
succ :: GamepadAxis -> GamepadAxis
$csucc :: GamepadAxis -> GamepadAxis
Enum)

data MaterialMapIndex = MaterialMapAlbedo    
                      | MaterialMapMetalness 
                      | MaterialMapNormal    
                      | MaterialMapRoughness 
                      | MaterialMapOcclusion 
                      | MaterialMapEmission  
                      | MaterialMapHeight    
                      | MaterialMapCubemap   
                      | MaterialMapIrradiance
                      | MaterialMapPrefilter 
                      | MaterialMapBrdf      
    deriving (MaterialMapIndex -> MaterialMapIndex -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MaterialMapIndex -> MaterialMapIndex -> Bool
$c/= :: MaterialMapIndex -> MaterialMapIndex -> Bool
== :: MaterialMapIndex -> MaterialMapIndex -> Bool
$c== :: MaterialMapIndex -> MaterialMapIndex -> Bool
Eq, Int -> MaterialMapIndex -> ShowS
[MaterialMapIndex] -> ShowS
MaterialMapIndex -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MaterialMapIndex] -> ShowS
$cshowList :: [MaterialMapIndex] -> ShowS
show :: MaterialMapIndex -> String
$cshow :: MaterialMapIndex -> String
showsPrec :: Int -> MaterialMapIndex -> ShowS
$cshowsPrec :: Int -> MaterialMapIndex -> ShowS
Show, Int -> MaterialMapIndex
MaterialMapIndex -> Int
MaterialMapIndex -> [MaterialMapIndex]
MaterialMapIndex -> MaterialMapIndex
MaterialMapIndex -> MaterialMapIndex -> [MaterialMapIndex]
MaterialMapIndex
-> MaterialMapIndex -> MaterialMapIndex -> [MaterialMapIndex]
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: MaterialMapIndex
-> MaterialMapIndex -> MaterialMapIndex -> [MaterialMapIndex]
$cenumFromThenTo :: MaterialMapIndex
-> MaterialMapIndex -> MaterialMapIndex -> [MaterialMapIndex]
enumFromTo :: MaterialMapIndex -> MaterialMapIndex -> [MaterialMapIndex]
$cenumFromTo :: MaterialMapIndex -> MaterialMapIndex -> [MaterialMapIndex]
enumFromThen :: MaterialMapIndex -> MaterialMapIndex -> [MaterialMapIndex]
$cenumFromThen :: MaterialMapIndex -> MaterialMapIndex -> [MaterialMapIndex]
enumFrom :: MaterialMapIndex -> [MaterialMapIndex]
$cenumFrom :: MaterialMapIndex -> [MaterialMapIndex]
fromEnum :: MaterialMapIndex -> Int
$cfromEnum :: MaterialMapIndex -> Int
toEnum :: Int -> MaterialMapIndex
$ctoEnum :: Int -> MaterialMapIndex
pred :: MaterialMapIndex -> MaterialMapIndex
$cpred :: MaterialMapIndex -> MaterialMapIndex
succ :: MaterialMapIndex -> MaterialMapIndex
$csucc :: MaterialMapIndex -> MaterialMapIndex
Enum)

data ShaderLocationIndex = ShaderLocVertexPosition  
                         | ShaderLocVertexTexcoord01
                         | ShaderLocVertexTexcoord02
                         | ShaderLocVertexNormal    
                         | ShaderLocVertexTangent   
                         | ShaderLocVertexColor     
                         | ShaderLocMatrixMvp       
                         | ShaderLocMatrixView      
                         | ShaderLocMatrixProjection
                         | ShaderLocMatrixModel     
                         | ShaderLocMatrixNormal    
                         | ShaderLocVectorView      
                         | ShaderLocColorDiffuse    
                         | ShaderLocColorSpecular   
                         | ShaderLocColorAmbient    
                         | ShaderLocMapAlbedo       
                         | ShaderLocMapMetalness    
                         | ShaderLocMapNormal       
                         | ShaderLocMapRoughness    
                         | ShaderLocMapOcclusion    
                         | ShaderLocMapEmission     
                         | ShaderLocMapHeight       
                         | ShaderLocMapCubemap      
                         | ShaderLocMapIrradiance   
                         | ShaderLocMapPrefilter    
                         | ShaderLocMapBrdf         
    deriving (ShaderLocationIndex -> ShaderLocationIndex -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ShaderLocationIndex -> ShaderLocationIndex -> Bool
$c/= :: ShaderLocationIndex -> ShaderLocationIndex -> Bool
== :: ShaderLocationIndex -> ShaderLocationIndex -> Bool
$c== :: ShaderLocationIndex -> ShaderLocationIndex -> Bool
Eq, Int -> ShaderLocationIndex -> ShowS
[ShaderLocationIndex] -> ShowS
ShaderLocationIndex -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ShaderLocationIndex] -> ShowS
$cshowList :: [ShaderLocationIndex] -> ShowS
show :: ShaderLocationIndex -> String
$cshow :: ShaderLocationIndex -> String
showsPrec :: Int -> ShaderLocationIndex -> ShowS
$cshowsPrec :: Int -> ShaderLocationIndex -> ShowS
Show, Int -> ShaderLocationIndex
ShaderLocationIndex -> Int
ShaderLocationIndex -> [ShaderLocationIndex]
ShaderLocationIndex -> ShaderLocationIndex
ShaderLocationIndex -> ShaderLocationIndex -> [ShaderLocationIndex]
ShaderLocationIndex
-> ShaderLocationIndex
-> ShaderLocationIndex
-> [ShaderLocationIndex]
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: ShaderLocationIndex
-> ShaderLocationIndex
-> ShaderLocationIndex
-> [ShaderLocationIndex]
$cenumFromThenTo :: ShaderLocationIndex
-> ShaderLocationIndex
-> ShaderLocationIndex
-> [ShaderLocationIndex]
enumFromTo :: ShaderLocationIndex -> ShaderLocationIndex -> [ShaderLocationIndex]
$cenumFromTo :: ShaderLocationIndex -> ShaderLocationIndex -> [ShaderLocationIndex]
enumFromThen :: ShaderLocationIndex -> ShaderLocationIndex -> [ShaderLocationIndex]
$cenumFromThen :: ShaderLocationIndex -> ShaderLocationIndex -> [ShaderLocationIndex]
enumFrom :: ShaderLocationIndex -> [ShaderLocationIndex]
$cenumFrom :: ShaderLocationIndex -> [ShaderLocationIndex]
fromEnum :: ShaderLocationIndex -> Int
$cfromEnum :: ShaderLocationIndex -> Int
toEnum :: Int -> ShaderLocationIndex
$ctoEnum :: Int -> ShaderLocationIndex
pred :: ShaderLocationIndex -> ShaderLocationIndex
$cpred :: ShaderLocationIndex -> ShaderLocationIndex
succ :: ShaderLocationIndex -> ShaderLocationIndex
$csucc :: ShaderLocationIndex -> ShaderLocationIndex
Enum)

data ShaderUniformDataType = ShaderUniformFloat    
                           | ShaderUniformVec2     
                           | ShaderUniformVec3      
                           | ShaderUniformVec4      
                           | ShaderUniformInt       
                           | ShaderUniformIvec2     
                           | ShaderUniformIvec3     
                           | ShaderUniformIvec4     
                           | ShaderUniformSampler2d 

    deriving (ShaderUniformDataType -> ShaderUniformDataType -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ShaderUniformDataType -> ShaderUniformDataType -> Bool
$c/= :: ShaderUniformDataType -> ShaderUniformDataType -> Bool
== :: ShaderUniformDataType -> ShaderUniformDataType -> Bool
$c== :: ShaderUniformDataType -> ShaderUniformDataType -> Bool
Eq, Int -> ShaderUniformDataType -> ShowS
[ShaderUniformDataType] -> ShowS
ShaderUniformDataType -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ShaderUniformDataType] -> ShowS
$cshowList :: [ShaderUniformDataType] -> ShowS
show :: ShaderUniformDataType -> String
$cshow :: ShaderUniformDataType -> String
showsPrec :: Int -> ShaderUniformDataType -> ShowS
$cshowsPrec :: Int -> ShaderUniformDataType -> ShowS
Show, Int -> ShaderUniformDataType
ShaderUniformDataType -> Int
ShaderUniformDataType -> [ShaderUniformDataType]
ShaderUniformDataType -> ShaderUniformDataType
ShaderUniformDataType
-> ShaderUniformDataType -> [ShaderUniformDataType]
ShaderUniformDataType
-> ShaderUniformDataType
-> ShaderUniformDataType
-> [ShaderUniformDataType]
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: ShaderUniformDataType
-> ShaderUniformDataType
-> ShaderUniformDataType
-> [ShaderUniformDataType]
$cenumFromThenTo :: ShaderUniformDataType
-> ShaderUniformDataType
-> ShaderUniformDataType
-> [ShaderUniformDataType]
enumFromTo :: ShaderUniformDataType
-> ShaderUniformDataType -> [ShaderUniformDataType]
$cenumFromTo :: ShaderUniformDataType
-> ShaderUniformDataType -> [ShaderUniformDataType]
enumFromThen :: ShaderUniformDataType
-> ShaderUniformDataType -> [ShaderUniformDataType]
$cenumFromThen :: ShaderUniformDataType
-> ShaderUniformDataType -> [ShaderUniformDataType]
enumFrom :: ShaderUniformDataType -> [ShaderUniformDataType]
$cenumFrom :: ShaderUniformDataType -> [ShaderUniformDataType]
fromEnum :: ShaderUniformDataType -> Int
$cfromEnum :: ShaderUniformDataType -> Int
toEnum :: Int -> ShaderUniformDataType
$ctoEnum :: Int -> ShaderUniformDataType
pred :: ShaderUniformDataType -> ShaderUniformDataType
$cpred :: ShaderUniformDataType -> ShaderUniformDataType
succ :: ShaderUniformDataType -> ShaderUniformDataType
$csucc :: ShaderUniformDataType -> ShaderUniformDataType
Enum)

-- I genuinely have no idea where this is used.

data ShaderAttributeDataType = ShaderAttribFloat
                             | ShaderAttribVec2 
                             | ShaderAttribVec3
                             | ShaderAttribVec4
    deriving (ShaderAttributeDataType -> ShaderAttributeDataType -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ShaderAttributeDataType -> ShaderAttributeDataType -> Bool
$c/= :: ShaderAttributeDataType -> ShaderAttributeDataType -> Bool
== :: ShaderAttributeDataType -> ShaderAttributeDataType -> Bool
$c== :: ShaderAttributeDataType -> ShaderAttributeDataType -> Bool
Eq, Int -> ShaderAttributeDataType -> ShowS
[ShaderAttributeDataType] -> ShowS
ShaderAttributeDataType -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ShaderAttributeDataType] -> ShowS
$cshowList :: [ShaderAttributeDataType] -> ShowS
show :: ShaderAttributeDataType -> String
$cshow :: ShaderAttributeDataType -> String
showsPrec :: Int -> ShaderAttributeDataType -> ShowS
$cshowsPrec :: Int -> ShaderAttributeDataType -> ShowS
Show, Int -> ShaderAttributeDataType
ShaderAttributeDataType -> Int
ShaderAttributeDataType -> [ShaderAttributeDataType]
ShaderAttributeDataType -> ShaderAttributeDataType
ShaderAttributeDataType
-> ShaderAttributeDataType -> [ShaderAttributeDataType]
ShaderAttributeDataType
-> ShaderAttributeDataType
-> ShaderAttributeDataType
-> [ShaderAttributeDataType]
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: ShaderAttributeDataType
-> ShaderAttributeDataType
-> ShaderAttributeDataType
-> [ShaderAttributeDataType]
$cenumFromThenTo :: ShaderAttributeDataType
-> ShaderAttributeDataType
-> ShaderAttributeDataType
-> [ShaderAttributeDataType]
enumFromTo :: ShaderAttributeDataType
-> ShaderAttributeDataType -> [ShaderAttributeDataType]
$cenumFromTo :: ShaderAttributeDataType
-> ShaderAttributeDataType -> [ShaderAttributeDataType]
enumFromThen :: ShaderAttributeDataType
-> ShaderAttributeDataType -> [ShaderAttributeDataType]
$cenumFromThen :: ShaderAttributeDataType
-> ShaderAttributeDataType -> [ShaderAttributeDataType]
enumFrom :: ShaderAttributeDataType -> [ShaderAttributeDataType]
$cenumFrom :: ShaderAttributeDataType -> [ShaderAttributeDataType]
fromEnum :: ShaderAttributeDataType -> Int
$cfromEnum :: ShaderAttributeDataType -> Int
toEnum :: Int -> ShaderAttributeDataType
$ctoEnum :: Int -> ShaderAttributeDataType
pred :: ShaderAttributeDataType -> ShaderAttributeDataType
$cpred :: ShaderAttributeDataType -> ShaderAttributeDataType
succ :: ShaderAttributeDataType -> ShaderAttributeDataType
$csucc :: ShaderAttributeDataType -> ShaderAttributeDataType
Enum)

data PixelFormat = PixelFormatUncompressedGrayscale   
                 | PixelFormatUncompressedGrayAlpha   
                 | PixelFormatUncompressedR5G6B5      
                 | PixelFormatUncompressedR8G8B8      
                 | PixelFormatUncompressedR5G5B5A1    
                 | PixelFormatUncompressedR4G4B4A4    
                 | PixelFormatUncompressedR8G8B8A8    
                 | PixelFormatUncompressedR32         
                 | PixelFormatUncompressedR32G32B32   
                 | PixelFormatUncompressedR32G32B32A32
                 | PixelFormatCompressedDxt1Rgb       
                 | PixelFormatCompressedDxt1Rgba      
                 | PixelFormatCompressedDxt3Rgba      
                 | PixelFormatCompressedDxt5Rgba      
                 | PixelFormatCompressedEtc1Rgb       
                 | PixelFormatCompressedEtc2Rgb       
                 | PixelFormatCompressedEtc2EacRgba   
                 | PixelFormatCompressedPvrtRgb       
                 | PixelFormatCompressedPvrtRgba      
                 | PixelFormatCompressedAstc4x4Rgba   
                 | PixelFormatCompressedAstc8x8Rgba   
    deriving (PixelFormat -> PixelFormat -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PixelFormat -> PixelFormat -> Bool
$c/= :: PixelFormat -> PixelFormat -> Bool
== :: PixelFormat -> PixelFormat -> Bool
$c== :: PixelFormat -> PixelFormat -> Bool
Eq, Int -> PixelFormat -> ShowS
[PixelFormat] -> ShowS
PixelFormat -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PixelFormat] -> ShowS
$cshowList :: [PixelFormat] -> ShowS
show :: PixelFormat -> String
$cshow :: PixelFormat -> String
showsPrec :: Int -> PixelFormat -> ShowS
$cshowsPrec :: Int -> PixelFormat -> ShowS
Show, Int -> PixelFormat
PixelFormat -> Int
PixelFormat -> [PixelFormat]
PixelFormat -> PixelFormat
PixelFormat -> PixelFormat -> [PixelFormat]
PixelFormat -> PixelFormat -> PixelFormat -> [PixelFormat]
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: PixelFormat -> PixelFormat -> PixelFormat -> [PixelFormat]
$cenumFromThenTo :: PixelFormat -> PixelFormat -> PixelFormat -> [PixelFormat]
enumFromTo :: PixelFormat -> PixelFormat -> [PixelFormat]
$cenumFromTo :: PixelFormat -> PixelFormat -> [PixelFormat]
enumFromThen :: PixelFormat -> PixelFormat -> [PixelFormat]
$cenumFromThen :: PixelFormat -> PixelFormat -> [PixelFormat]
enumFrom :: PixelFormat -> [PixelFormat]
$cenumFrom :: PixelFormat -> [PixelFormat]
fromEnum :: PixelFormat -> Int
$cfromEnum :: PixelFormat -> Int
toEnum :: Int -> PixelFormat
$ctoEnum :: Int -> PixelFormat
pred :: PixelFormat -> PixelFormat
$cpred :: PixelFormat -> PixelFormat
succ :: PixelFormat -> PixelFormat
$csucc :: PixelFormat -> PixelFormat
Enum)

instance Storable PixelFormat where
  sizeOf :: PixelFormat -> Int
sizeOf PixelFormat
_ = Int
4
  alignment :: PixelFormat -> Int
alignment PixelFormat
_ = Int
4
  peek :: Ptr PixelFormat -> IO PixelFormat
peek Ptr PixelFormat
ptr = do
    CInt
val <- forall a. Storable a => Ptr a -> IO a
peek (forall a b. Ptr a -> Ptr b
castPtr Ptr PixelFormat
ptr)
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ forall a. Enum a => Int -> a
toEnum forall a b. (a -> b) -> a -> b
$ forall a. Enum a => a -> Int
fromEnum (CInt
val :: CInt)
  poke :: Ptr PixelFormat -> PixelFormat -> IO ()
poke Ptr PixelFormat
ptr PixelFormat
v = forall a. Storable a => Ptr a -> a -> IO ()
poke (forall a b. Ptr a -> Ptr b
castPtr Ptr PixelFormat
ptr) (forall a. Enum a => Int -> a
toEnum forall a b. (a -> b) -> a -> b
$ forall a. Enum a => a -> Int
fromEnum PixelFormat
v :: CInt)

data TextureFilter = TextureFilterPoint 
                   | TextureFilterBilinear 
                   | TextureFilterTrilinear 
                   | TextureFilterAnisotropic4x
                   | TextureFilterAnisotropic8x
                   | TextureFilterAnisotropic16x
    deriving Int -> TextureFilter
TextureFilter -> Int
TextureFilter -> [TextureFilter]
TextureFilter -> TextureFilter
TextureFilter -> TextureFilter -> [TextureFilter]
TextureFilter -> TextureFilter -> TextureFilter -> [TextureFilter]
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: TextureFilter -> TextureFilter -> TextureFilter -> [TextureFilter]
$cenumFromThenTo :: TextureFilter -> TextureFilter -> TextureFilter -> [TextureFilter]
enumFromTo :: TextureFilter -> TextureFilter -> [TextureFilter]
$cenumFromTo :: TextureFilter -> TextureFilter -> [TextureFilter]
enumFromThen :: TextureFilter -> TextureFilter -> [TextureFilter]
$cenumFromThen :: TextureFilter -> TextureFilter -> [TextureFilter]
enumFrom :: TextureFilter -> [TextureFilter]
$cenumFrom :: TextureFilter -> [TextureFilter]
fromEnum :: TextureFilter -> Int
$cfromEnum :: TextureFilter -> Int
toEnum :: Int -> TextureFilter
$ctoEnum :: Int -> TextureFilter
pred :: TextureFilter -> TextureFilter
$cpred :: TextureFilter -> TextureFilter
succ :: TextureFilter -> TextureFilter
$csucc :: TextureFilter -> TextureFilter
Enum

data TextureWrap = TextureWrapRepeat
                 | TextureWrapClamp 
                 | TextureWrapMirrorRepeat 
                 | TextureWrapMirrorClamp
        deriving Int -> TextureWrap
TextureWrap -> Int
TextureWrap -> [TextureWrap]
TextureWrap -> TextureWrap
TextureWrap -> TextureWrap -> [TextureWrap]
TextureWrap -> TextureWrap -> TextureWrap -> [TextureWrap]
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: TextureWrap -> TextureWrap -> TextureWrap -> [TextureWrap]
$cenumFromThenTo :: TextureWrap -> TextureWrap -> TextureWrap -> [TextureWrap]
enumFromTo :: TextureWrap -> TextureWrap -> [TextureWrap]
$cenumFromTo :: TextureWrap -> TextureWrap -> [TextureWrap]
enumFromThen :: TextureWrap -> TextureWrap -> [TextureWrap]
$cenumFromThen :: TextureWrap -> TextureWrap -> [TextureWrap]
enumFrom :: TextureWrap -> [TextureWrap]
$cenumFrom :: TextureWrap -> [TextureWrap]
fromEnum :: TextureWrap -> Int
$cfromEnum :: TextureWrap -> Int
toEnum :: Int -> TextureWrap
$ctoEnum :: Int -> TextureWrap
pred :: TextureWrap -> TextureWrap
$cpred :: TextureWrap -> TextureWrap
succ :: TextureWrap -> TextureWrap
$csucc :: TextureWrap -> TextureWrap
Enum

data CubemapLayout = CubemapLayoutAutoDetect 
                   | CubemapLayoutLineVertical 
                   | CubemapLayoutLineHorizontal 
                   | CubemapLayoutCrossThreeByFour 
                   | CubemapLayoutCrossThreeByThree
                   | CubemapLayoutPanorama
    deriving Int -> CubemapLayout
CubemapLayout -> Int
CubemapLayout -> [CubemapLayout]
CubemapLayout -> CubemapLayout
CubemapLayout -> CubemapLayout -> [CubemapLayout]
CubemapLayout -> CubemapLayout -> CubemapLayout -> [CubemapLayout]
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: CubemapLayout -> CubemapLayout -> CubemapLayout -> [CubemapLayout]
$cenumFromThenTo :: CubemapLayout -> CubemapLayout -> CubemapLayout -> [CubemapLayout]
enumFromTo :: CubemapLayout -> CubemapLayout -> [CubemapLayout]
$cenumFromTo :: CubemapLayout -> CubemapLayout -> [CubemapLayout]
enumFromThen :: CubemapLayout -> CubemapLayout -> [CubemapLayout]
$cenumFromThen :: CubemapLayout -> CubemapLayout -> [CubemapLayout]
enumFrom :: CubemapLayout -> [CubemapLayout]
$cenumFrom :: CubemapLayout -> [CubemapLayout]
fromEnum :: CubemapLayout -> Int
$cfromEnum :: CubemapLayout -> Int
toEnum :: Int -> CubemapLayout
$ctoEnum :: Int -> CubemapLayout
pred :: CubemapLayout -> CubemapLayout
$cpred :: CubemapLayout -> CubemapLayout
succ :: CubemapLayout -> CubemapLayout
$csucc :: CubemapLayout -> CubemapLayout
Enum

data FontType = FontDefault | FontBitmap | FontSDF deriving Int -> FontType
FontType -> Int
FontType -> [FontType]
FontType -> FontType
FontType -> FontType -> [FontType]
FontType -> FontType -> FontType -> [FontType]
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: FontType -> FontType -> FontType -> [FontType]
$cenumFromThenTo :: FontType -> FontType -> FontType -> [FontType]
enumFromTo :: FontType -> FontType -> [FontType]
$cenumFromTo :: FontType -> FontType -> [FontType]
enumFromThen :: FontType -> FontType -> [FontType]
$cenumFromThen :: FontType -> FontType -> [FontType]
enumFrom :: FontType -> [FontType]
$cenumFrom :: FontType -> [FontType]
fromEnum :: FontType -> Int
$cfromEnum :: FontType -> Int
toEnum :: Int -> FontType
$ctoEnum :: Int -> FontType
pred :: FontType -> FontType
$cpred :: FontType -> FontType
succ :: FontType -> FontType
$csucc :: FontType -> FontType
Enum

data BlendMode = BlendAlpha | BlendAdditive | BlendMultiplied | BlendAddColors | BlendSubtractColors | BlendAlphaPremultiply | BlendCustom | BlendCustomSeparate deriving Int -> BlendMode
BlendMode -> Int
BlendMode -> [BlendMode]
BlendMode -> BlendMode
BlendMode -> BlendMode -> [BlendMode]
BlendMode -> BlendMode -> BlendMode -> [BlendMode]
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: BlendMode -> BlendMode -> BlendMode -> [BlendMode]
$cenumFromThenTo :: BlendMode -> BlendMode -> BlendMode -> [BlendMode]
enumFromTo :: BlendMode -> BlendMode -> [BlendMode]
$cenumFromTo :: BlendMode -> BlendMode -> [BlendMode]
enumFromThen :: BlendMode -> BlendMode -> [BlendMode]
$cenumFromThen :: BlendMode -> BlendMode -> [BlendMode]
enumFrom :: BlendMode -> [BlendMode]
$cenumFrom :: BlendMode -> [BlendMode]
fromEnum :: BlendMode -> Int
$cfromEnum :: BlendMode -> Int
toEnum :: Int -> BlendMode
$ctoEnum :: Int -> BlendMode
pred :: BlendMode -> BlendMode
$cpred :: BlendMode -> BlendMode
succ :: BlendMode -> BlendMode
$csucc :: BlendMode -> BlendMode
Enum

data Gesture
  = GestureNone
  | GestureTap
  | GestureDoubleTap
  | GestureHold
  | GestureDrag
  | GestureSwipeRight
  | GestureSwipeLeft
  | GestureSwipeUp
  | GestureSwipeDown
  | GesturePinchIn
  | GesturePinchOut
  deriving (Int -> Gesture -> ShowS
[Gesture] -> ShowS
Gesture -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Gesture] -> ShowS
$cshowList :: [Gesture] -> ShowS
show :: Gesture -> String
$cshow :: Gesture -> String
showsPrec :: Int -> Gesture -> ShowS
$cshowsPrec :: Int -> Gesture -> ShowS
Show)

-- NOTE: This is not the ideal solution, I need to make this unjanky

instance Enum Gesture where
  fromEnum :: Gesture -> Int
fromEnum Gesture
n = case Gesture
n of
    Gesture
GestureNone       -> Int
0
    Gesture
GestureTap        -> Int
1
    Gesture
GestureDoubleTap  -> Int
2
    Gesture
GestureHold       -> Int
4
    Gesture
GestureDrag       -> Int
8
    Gesture
GestureSwipeRight -> Int
16
    Gesture
GestureSwipeLeft  -> Int
32
    Gesture
GestureSwipeUp    -> Int
64
    Gesture
GestureSwipeDown  -> Int
128
    Gesture
GesturePinchIn    -> Int
256
    Gesture
GesturePinchOut   -> Int
512
  toEnum :: Int -> Gesture
toEnum Int
n = case Int
n of
    Int
0   -> Gesture
GestureNone
    Int
1   -> Gesture
GestureTap
    Int
2   -> Gesture
GestureDoubleTap
    Int
4   -> Gesture
GestureHold
    Int
8   -> Gesture
GestureDrag
    Int
16  -> Gesture
GestureSwipeRight
    Int
32  -> Gesture
GestureSwipeLeft
    Int
64  -> Gesture
GestureSwipeUp
    Int
128 -> Gesture
GestureSwipeDown
    Int
256 -> Gesture
GesturePinchIn
    Int
512 -> Gesture
GesturePinchOut
    Int
_   -> forall a. HasCallStack => String -> a
error String
"Invalid input"

data CameraMode
  = CameraModeCustom
  | CameraModeFree
  | CameraModeOrbital
  | CameraModeFirstPerson
  | CameraModeThirdPerson
  deriving (Int -> CameraMode
CameraMode -> Int
CameraMode -> [CameraMode]
CameraMode -> CameraMode
CameraMode -> CameraMode -> [CameraMode]
CameraMode -> CameraMode -> CameraMode -> [CameraMode]
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: CameraMode -> CameraMode -> CameraMode -> [CameraMode]
$cenumFromThenTo :: CameraMode -> CameraMode -> CameraMode -> [CameraMode]
enumFromTo :: CameraMode -> CameraMode -> [CameraMode]
$cenumFromTo :: CameraMode -> CameraMode -> [CameraMode]
enumFromThen :: CameraMode -> CameraMode -> [CameraMode]
$cenumFromThen :: CameraMode -> CameraMode -> [CameraMode]
enumFrom :: CameraMode -> [CameraMode]
$cenumFrom :: CameraMode -> [CameraMode]
fromEnum :: CameraMode -> Int
$cfromEnum :: CameraMode -> Int
toEnum :: Int -> CameraMode
$ctoEnum :: Int -> CameraMode
pred :: CameraMode -> CameraMode
$cpred :: CameraMode -> CameraMode
succ :: CameraMode -> CameraMode
$csucc :: CameraMode -> CameraMode
Enum)

data CameraProjection = CameraPerspective | CameraOrthographic deriving (CameraProjection -> CameraProjection -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CameraProjection -> CameraProjection -> Bool
$c/= :: CameraProjection -> CameraProjection -> Bool
== :: CameraProjection -> CameraProjection -> Bool
$c== :: CameraProjection -> CameraProjection -> Bool
Eq, Int -> CameraProjection -> ShowS
[CameraProjection] -> ShowS
CameraProjection -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CameraProjection] -> ShowS
$cshowList :: [CameraProjection] -> ShowS
show :: CameraProjection -> String
$cshow :: CameraProjection -> String
showsPrec :: Int -> CameraProjection -> ShowS
$cshowsPrec :: Int -> CameraProjection -> ShowS
Show, Int -> CameraProjection
CameraProjection -> Int
CameraProjection -> [CameraProjection]
CameraProjection -> CameraProjection
CameraProjection -> CameraProjection -> [CameraProjection]
CameraProjection
-> CameraProjection -> CameraProjection -> [CameraProjection]
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: CameraProjection
-> CameraProjection -> CameraProjection -> [CameraProjection]
$cenumFromThenTo :: CameraProjection
-> CameraProjection -> CameraProjection -> [CameraProjection]
enumFromTo :: CameraProjection -> CameraProjection -> [CameraProjection]
$cenumFromTo :: CameraProjection -> CameraProjection -> [CameraProjection]
enumFromThen :: CameraProjection -> CameraProjection -> [CameraProjection]
$cenumFromThen :: CameraProjection -> CameraProjection -> [CameraProjection]
enumFrom :: CameraProjection -> [CameraProjection]
$cenumFrom :: CameraProjection -> [CameraProjection]
fromEnum :: CameraProjection -> Int
$cfromEnum :: CameraProjection -> Int
toEnum :: Int -> CameraProjection
$ctoEnum :: Int -> CameraProjection
pred :: CameraProjection -> CameraProjection
$cpred :: CameraProjection -> CameraProjection
succ :: CameraProjection -> CameraProjection
$csucc :: CameraProjection -> CameraProjection
Enum)

instance Storable CameraProjection where
  sizeOf :: CameraProjection -> Int
sizeOf CameraProjection
_ = Int
4
  alignment :: CameraProjection -> Int
alignment CameraProjection
_ = Int
4
  peek :: Ptr CameraProjection -> IO CameraProjection
peek Ptr CameraProjection
ptr = do
    CInt
val <- forall a. Storable a => Ptr a -> IO a
peek (forall a b. Ptr a -> Ptr b
castPtr Ptr CameraProjection
ptr)
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ forall a. Enum a => Int -> a
toEnum forall a b. (a -> b) -> a -> b
$ forall a. Enum a => a -> Int
fromEnum (CInt
val :: CInt)
  poke :: Ptr CameraProjection -> CameraProjection -> IO ()
poke Ptr CameraProjection
ptr CameraProjection
v = forall a. Storable a => Ptr a -> a -> IO ()
poke (forall a b. Ptr a -> Ptr b
castPtr Ptr CameraProjection
ptr) (forall a. Enum a => Int -> a
toEnum forall a b. (a -> b) -> a -> b
$ forall a. Enum a => a -> Int
fromEnum CameraProjection
v :: CInt)

data NPatchLayout = NPatchNinePatch | NPatchThreePatchVertical | NPatchThreePatchHorizontal deriving (NPatchLayout -> NPatchLayout -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: NPatchLayout -> NPatchLayout -> Bool
$c/= :: NPatchLayout -> NPatchLayout -> Bool
== :: NPatchLayout -> NPatchLayout -> Bool
$c== :: NPatchLayout -> NPatchLayout -> Bool
Eq, Int -> NPatchLayout -> ShowS
[NPatchLayout] -> ShowS
NPatchLayout -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [NPatchLayout] -> ShowS
$cshowList :: [NPatchLayout] -> ShowS
show :: NPatchLayout -> String
$cshow :: NPatchLayout -> String
showsPrec :: Int -> NPatchLayout -> ShowS
$cshowsPrec :: Int -> NPatchLayout -> ShowS
Show, Int -> NPatchLayout
NPatchLayout -> Int
NPatchLayout -> [NPatchLayout]
NPatchLayout -> NPatchLayout
NPatchLayout -> NPatchLayout -> [NPatchLayout]
NPatchLayout -> NPatchLayout -> NPatchLayout -> [NPatchLayout]
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: NPatchLayout -> NPatchLayout -> NPatchLayout -> [NPatchLayout]
$cenumFromThenTo :: NPatchLayout -> NPatchLayout -> NPatchLayout -> [NPatchLayout]
enumFromTo :: NPatchLayout -> NPatchLayout -> [NPatchLayout]
$cenumFromTo :: NPatchLayout -> NPatchLayout -> [NPatchLayout]
enumFromThen :: NPatchLayout -> NPatchLayout -> [NPatchLayout]
$cenumFromThen :: NPatchLayout -> NPatchLayout -> [NPatchLayout]
enumFrom :: NPatchLayout -> [NPatchLayout]
$cenumFrom :: NPatchLayout -> [NPatchLayout]
fromEnum :: NPatchLayout -> Int
$cfromEnum :: NPatchLayout -> Int
toEnum :: Int -> NPatchLayout
$ctoEnum :: Int -> NPatchLayout
pred :: NPatchLayout -> NPatchLayout
$cpred :: NPatchLayout -> NPatchLayout
succ :: NPatchLayout -> NPatchLayout
$csucc :: NPatchLayout -> NPatchLayout
Enum)

instance Storable NPatchLayout where
  sizeOf :: NPatchLayout -> Int
sizeOf NPatchLayout
_ = Int
4
  alignment :: NPatchLayout -> Int
alignment NPatchLayout
_ = Int
4
  peek :: Ptr NPatchLayout -> IO NPatchLayout
peek Ptr NPatchLayout
ptr = do
    CInt
val <- forall a. Storable a => Ptr a -> IO a
peek (forall a b. Ptr a -> Ptr b
castPtr Ptr NPatchLayout
ptr)
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ forall a. Enum a => Int -> a
toEnum forall a b. (a -> b) -> a -> b
$ forall a. Enum a => a -> Int
fromEnum (CInt
val :: CInt)
  poke :: Ptr NPatchLayout -> NPatchLayout -> IO ()
poke Ptr NPatchLayout
ptr NPatchLayout
v = forall a. Storable a => Ptr a -> a -> IO ()
poke (forall a b. Ptr a -> Ptr b
castPtr Ptr NPatchLayout
ptr) (forall a. Enum a => Int -> a
toEnum forall a b. (a -> b) -> a -> b
$ forall a. Enum a => a -> Int
fromEnum NPatchLayout
v :: CInt)


------------------------------------------------

-- Raylib structures ---------------------------

------------------------------------------------


{- typedef struct Vector2 {
            float x; float y;
        } Vector2; -}
data Vector2 = Vector2
  { Vector2 -> CFloat
vector2'x :: CFloat,
    Vector2 -> CFloat
vector2'y :: CFloat
  }
  deriving (Vector2 -> Vector2 -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Vector2 -> Vector2 -> Bool
$c/= :: Vector2 -> Vector2 -> Bool
== :: Vector2 -> Vector2 -> Bool
$c== :: Vector2 -> Vector2 -> Bool
Eq, Int -> Vector2 -> ShowS
[Vector2] -> ShowS
Vector2 -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Vector2] -> ShowS
$cshowList :: [Vector2] -> ShowS
show :: Vector2 -> String
$cshow :: Vector2 -> String
showsPrec :: Int -> Vector2 -> ShowS
$cshowsPrec :: Int -> Vector2 -> ShowS
Show)

p'Vector2'x :: Ptr Vector2 -> Ptr CFloat
p'Vector2'x Ptr Vector2
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Vector2
p Int
0

p'Vector2'x :: Ptr Vector2 -> Ptr CFloat

p'Vector2'y :: Ptr Vector2 -> Ptr CFloat
p'Vector2'y Ptr Vector2
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Vector2
p Int
4

p'Vector2'y :: Ptr Vector2 -> Ptr CFloat

instance Storable Vector2 where
  sizeOf :: Vector2 -> Int
sizeOf Vector2
_ = Int
8
  alignment :: Vector2 -> Int
alignment Vector2
_ = Int
4
  peek :: Ptr Vector2 -> IO Vector2
peek Ptr Vector2
_p = do
    CFloat
v0 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Vector2
_p Int
0
    CFloat
v1 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Vector2
_p Int
4
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ CFloat -> CFloat -> Vector2
Vector2 CFloat
v0 CFloat
v1
  poke :: Ptr Vector2 -> Vector2 -> IO ()
poke Ptr Vector2
_p (Vector2 CFloat
v0 CFloat
v1) = do
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Vector2
_p Int
0 CFloat
v0
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Vector2
_p Int
4 CFloat
v1
    forall (m :: * -> *) a. Monad m => a -> m a
return ()

{- typedef struct Vector3 {
            float x; float y; float z;
        } Vector3; -}
data Vector3 = Vector3
  { Vector3 -> CFloat
vector3'x :: CFloat,
    Vector3 -> CFloat
vector3'y :: CFloat,
    Vector3 -> CFloat
vector3'z :: CFloat
  }
  deriving (Vector3 -> Vector3 -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Vector3 -> Vector3 -> Bool
$c/= :: Vector3 -> Vector3 -> Bool
== :: Vector3 -> Vector3 -> Bool
$c== :: Vector3 -> Vector3 -> Bool
Eq, Int -> Vector3 -> ShowS
[Vector3] -> ShowS
Vector3 -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Vector3] -> ShowS
$cshowList :: [Vector3] -> ShowS
show :: Vector3 -> String
$cshow :: Vector3 -> String
showsPrec :: Int -> Vector3 -> ShowS
$cshowsPrec :: Int -> Vector3 -> ShowS
Show)

p'Vector3'x :: Ptr Vector3 -> Ptr CFloat
p'Vector3'x Ptr Vector3
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Vector3
p Int
0

p'Vector3'x :: Ptr Vector3 -> Ptr CFloat

p'Vector3'y :: Ptr Vector3 -> Ptr CFloat
p'Vector3'y Ptr Vector3
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Vector3
p Int
4

p'Vector3'y :: Ptr Vector3 -> Ptr CFloat

p'Vector3'z :: Ptr Vector3 -> Ptr CFloat
p'Vector3'z Ptr Vector3
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Vector3
p Int
8

p'Vector3'z :: Ptr Vector3 -> Ptr CFloat

instance Storable Vector3 where
  sizeOf :: Vector3 -> Int
sizeOf Vector3
_ = Int
12
  alignment :: Vector3 -> Int
alignment Vector3
_ = Int
4
  peek :: Ptr Vector3 -> IO Vector3
peek Ptr Vector3
_p = do
    CFloat
v0 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Vector3
_p Int
0
    CFloat
v1 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Vector3
_p Int
4
    CFloat
v2 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Vector3
_p Int
8
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ CFloat -> CFloat -> CFloat -> Vector3
Vector3 CFloat
v0 CFloat
v1 CFloat
v2
  poke :: Ptr Vector3 -> Vector3 -> IO ()
poke Ptr Vector3
_p (Vector3 CFloat
v0 CFloat
v1 CFloat
v2) = do
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Vector3
_p Int
0 CFloat
v0
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Vector3
_p Int
4 CFloat
v1
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Vector3
_p Int
8 CFloat
v2
    forall (m :: * -> *) a. Monad m => a -> m a
return ()

{- typedef struct Vector4 {
            float x; float y; float z; float w;
        } Vector4; -}
data Vector4 = Vector4
  { Vector4 -> CFloat
vector4'x :: CFloat,
    Vector4 -> CFloat
vector4'y :: CFloat,
    Vector4 -> CFloat
vector4'z :: CFloat,
    Vector4 -> CFloat
vector4'w :: CFloat
  }
  deriving (Vector4 -> Vector4 -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Vector4 -> Vector4 -> Bool
$c/= :: Vector4 -> Vector4 -> Bool
== :: Vector4 -> Vector4 -> Bool
$c== :: Vector4 -> Vector4 -> Bool
Eq, Int -> Vector4 -> ShowS
[Vector4] -> ShowS
Vector4 -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Vector4] -> ShowS
$cshowList :: [Vector4] -> ShowS
show :: Vector4 -> String
$cshow :: Vector4 -> String
showsPrec :: Int -> Vector4 -> ShowS
$cshowsPrec :: Int -> Vector4 -> ShowS
Show)

p'Vector4'x :: Ptr Vector4 -> Ptr CFloat
p'Vector4'x Ptr Vector4
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Vector4
p Int
0

p'Vector4'x :: Ptr Vector4 -> Ptr CFloat

p'Vector4'y :: Ptr Vector4 -> Ptr CFloat
p'Vector4'y Ptr Vector4
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Vector4
p Int
4

p'Vector4'y :: Ptr Vector4 -> Ptr CFloat

p'Vector4'z :: Ptr Vector4 -> Ptr CFloat
p'Vector4'z Ptr Vector4
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Vector4
p Int
8

p'Vector4'z :: Ptr Vector4 -> Ptr CFloat

p'Vector4'w :: Ptr Vector4 -> Ptr CFloat
p'Vector4'w Ptr Vector4
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Vector4
p Int
12

p'Vector4'w :: Ptr Vector4 -> Ptr CFloat

instance Storable Vector4 where
  sizeOf :: Vector4 -> Int
sizeOf Vector4
_ = Int
16
  alignment :: Vector4 -> Int
alignment Vector4
_ = Int
4
  peek :: Ptr Vector4 -> IO Vector4
peek Ptr Vector4
_p = do
    CFloat
v0 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Vector4
_p Int
0
    CFloat
v1 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Vector4
_p Int
4
    CFloat
v2 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Vector4
_p Int
8
    CFloat
v3 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Vector4
_p Int
12
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ CFloat -> CFloat -> CFloat -> CFloat -> Vector4
Vector4 CFloat
v0 CFloat
v1 CFloat
v2 CFloat
v3
  poke :: Ptr Vector4 -> Vector4 -> IO ()
poke Ptr Vector4
_p (Vector4 CFloat
v0 CFloat
v1 CFloat
v2 CFloat
v3) = do
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Vector4
_p Int
0 CFloat
v0
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Vector4
_p Int
4 CFloat
v1
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Vector4
_p Int
8 CFloat
v2
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Vector4
_p Int
12 CFloat
v3
    forall (m :: * -> *) a. Monad m => a -> m a
return ()

{- typedef Vector4 Quaternion; -}
type Quaternion = Vector4

{- typedef struct Matrix {
            float m0, m4, m8, m12;
            float m1, m5, m9, m13;
            float m2, m6, m10, m14;
            float m3, m7, m11, m15;
        } Matrix; -}
data Matrix = Matrix
  { Matrix -> CFloat
matrix'm0 :: CFloat,
    Matrix -> CFloat
matrix'm4 :: CFloat,
    Matrix -> CFloat
matrix'm8 :: CFloat,
    Matrix -> CFloat
matrix'm12 :: CFloat,
    Matrix -> CFloat
matrix'm1 :: CFloat,
    Matrix -> CFloat
matrix'm5 :: CFloat,
    Matrix -> CFloat
matrix'm9 :: CFloat,
    Matrix -> CFloat
matrix'm13 :: CFloat,
    Matrix -> CFloat
matrix'm2 :: CFloat,
    Matrix -> CFloat
matrix'm6 :: CFloat,
    Matrix -> CFloat
matrix'm10 :: CFloat,
    Matrix -> CFloat
matrix'm14 :: CFloat,
    Matrix -> CFloat
matrix'm3 :: CFloat,
    Matrix -> CFloat
matrix'm7 :: CFloat,
    Matrix -> CFloat
matrix'm11 :: CFloat,
    Matrix -> CFloat
matrix'm15 :: CFloat
  }
  deriving (Matrix -> Matrix -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Matrix -> Matrix -> Bool
$c/= :: Matrix -> Matrix -> Bool
== :: Matrix -> Matrix -> Bool
$c== :: Matrix -> Matrix -> Bool
Eq, Int -> Matrix -> ShowS
[Matrix] -> ShowS
Matrix -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Matrix] -> ShowS
$cshowList :: [Matrix] -> ShowS
show :: Matrix -> String
$cshow :: Matrix -> String
showsPrec :: Int -> Matrix -> ShowS
$cshowsPrec :: Int -> Matrix -> ShowS
Show)

p'Matrix'm0 :: Ptr Matrix -> Ptr CFloat
p'Matrix'm0 Ptr Matrix
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Matrix
p Int
0

p'Matrix'm0 :: Ptr Matrix -> Ptr CFloat

p'Matrix'm4 :: Ptr Matrix -> Ptr CFloat
p'Matrix'm4 Ptr Matrix
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Matrix
p Int
4

p'Matrix'm4 :: Ptr Matrix -> Ptr CFloat

p'Matrix'm8 :: Ptr Matrix -> Ptr CFloat
p'Matrix'm8 Ptr Matrix
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Matrix
p Int
8

p'Matrix'm8 :: Ptr Matrix -> Ptr CFloat

p'Matrix'm12 :: Ptr Matrix -> Ptr CFloat
p'Matrix'm12 Ptr Matrix
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Matrix
p Int
12

p'Matrix'm12 :: Ptr Matrix -> Ptr CFloat

p'Matrix'm1 :: Ptr Matrix -> Ptr CFloat
p'Matrix'm1 Ptr Matrix
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Matrix
p Int
16

p'Matrix'm1 :: Ptr Matrix -> Ptr CFloat

p'Matrix'm5 :: Ptr Matrix -> Ptr CFloat
p'Matrix'm5 Ptr Matrix
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Matrix
p Int
20

p'Matrix'm5 :: Ptr Matrix -> Ptr CFloat

p'Matrix'm9 :: Ptr Matrix -> Ptr CFloat
p'Matrix'm9 Ptr Matrix
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Matrix
p Int
24

p'Matrix'm9 :: Ptr Matrix -> Ptr CFloat

p'Matrix'm13 :: Ptr Matrix -> Ptr CFloat
p'Matrix'm13 Ptr Matrix
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Matrix
p Int
28

p'Matrix'm13 :: Ptr Matrix -> Ptr CFloat

p'Matrix'm2 :: Ptr Matrix -> Ptr CFloat
p'Matrix'm2 Ptr Matrix
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Matrix
p Int
32

p'Matrix'm2 :: Ptr Matrix -> Ptr CFloat

p'Matrix'm6 :: Ptr Matrix -> Ptr CFloat
p'Matrix'm6 Ptr Matrix
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Matrix
p Int
36

p'Matrix'm6 :: Ptr Matrix -> Ptr CFloat

p'Matrix'm10 :: Ptr Matrix -> Ptr CFloat
p'Matrix'm10 Ptr Matrix
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Matrix
p Int
40

p'Matrix'm10 :: Ptr Matrix -> Ptr CFloat

p'Matrix'm14 :: Ptr Matrix -> Ptr CFloat
p'Matrix'm14 Ptr Matrix
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Matrix
p Int
44

p'Matrix'm14 :: Ptr Matrix -> Ptr CFloat

p'Matrix'm3 :: Ptr Matrix -> Ptr CFloat
p'Matrix'm3 Ptr Matrix
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Matrix
p Int
48

p'Matrix'm3 :: Ptr Matrix -> Ptr CFloat

p'Matrix'm7 :: Ptr Matrix -> Ptr CFloat
p'Matrix'm7 Ptr Matrix
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Matrix
p Int
52

p'Matrix'm7 :: Ptr Matrix -> Ptr CFloat

p'Matrix'm11 :: Ptr Matrix -> Ptr CFloat
p'Matrix'm11 Ptr Matrix
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Matrix
p Int
56

p'Matrix'm11 :: Ptr Matrix -> Ptr CFloat

p'Matrix'm15 :: Ptr Matrix -> Ptr CFloat
p'Matrix'm15 Ptr Matrix
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Matrix
p Int
60

p'Matrix'm15 :: Ptr Matrix -> Ptr CFloat

instance Storable Matrix where
  sizeOf :: Matrix -> Int
sizeOf Matrix
_ = Int
64
  alignment :: Matrix -> Int
alignment Matrix
_ = Int
4
  peek :: Ptr Matrix -> IO Matrix
peek Ptr Matrix
_p = do
    CFloat
v0 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Matrix
_p Int
0
    CFloat
v1 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Matrix
_p Int
4
    CFloat
v2 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Matrix
_p Int
8
    CFloat
v3 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Matrix
_p Int
12
    CFloat
v4 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Matrix
_p Int
16
    CFloat
v5 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Matrix
_p Int
20
    CFloat
v6 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Matrix
_p Int
24
    CFloat
v7 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Matrix
_p Int
28
    CFloat
v8 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Matrix
_p Int
32
    CFloat
v9 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Matrix
_p Int
36
    CFloat
v10 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Matrix
_p Int
40
    CFloat
v11 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Matrix
_p Int
44
    CFloat
v12 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Matrix
_p Int
48
    CFloat
v13 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Matrix
_p Int
52
    CFloat
v14 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Matrix
_p Int
56
    CFloat
v15 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Matrix
_p Int
60
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ CFloat
-> CFloat
-> CFloat
-> CFloat
-> CFloat
-> CFloat
-> CFloat
-> CFloat
-> CFloat
-> CFloat
-> CFloat
-> CFloat
-> CFloat
-> CFloat
-> CFloat
-> CFloat
-> Matrix
Matrix CFloat
v0 CFloat
v1 CFloat
v2 CFloat
v3 CFloat
v4 CFloat
v5 CFloat
v6 CFloat
v7 CFloat
v8 CFloat
v9 CFloat
v10 CFloat
v11 CFloat
v12 CFloat
v13 CFloat
v14 CFloat
v15
  poke :: Ptr Matrix -> Matrix -> IO ()
poke Ptr Matrix
_p (Matrix CFloat
v0 CFloat
v1 CFloat
v2 CFloat
v3 CFloat
v4 CFloat
v5 CFloat
v6 CFloat
v7 CFloat
v8 CFloat
v9 CFloat
v10 CFloat
v11 CFloat
v12 CFloat
v13 CFloat
v14 CFloat
v15) = do
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Matrix
_p Int
0 CFloat
v0
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Matrix
_p Int
4 CFloat
v1
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Matrix
_p Int
8 CFloat
v2
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Matrix
_p Int
12 CFloat
v3
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Matrix
_p Int
16 CFloat
v4
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Matrix
_p Int
20 CFloat
v5
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Matrix
_p Int
24 CFloat
v6
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Matrix
_p Int
28 CFloat
v7
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Matrix
_p Int
32 CFloat
v8
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Matrix
_p Int
36 CFloat
v9
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Matrix
_p Int
40 CFloat
v10
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Matrix
_p Int
44 CFloat
v11
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Matrix
_p Int
48 CFloat
v12
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Matrix
_p Int
52 CFloat
v13
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Matrix
_p Int
56 CFloat
v14
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Matrix
_p Int
60 CFloat
v15
    forall (m :: * -> *) a. Monad m => a -> m a
return ()

{- typedef struct Color {
            unsigned char r; unsigned char g; unsigned char b; unsigned char a;
        } Color; -}
data Color = Color
  { Color -> CUChar
color'r :: CUChar,
    Color -> CUChar
color'g :: CUChar,
    Color -> CUChar
color'b :: CUChar,
    Color -> CUChar
color'a :: CUChar
  }
  deriving (Color -> Color -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Color -> Color -> Bool
$c/= :: Color -> Color -> Bool
== :: Color -> Color -> Bool
$c== :: Color -> Color -> Bool
Eq, Int -> Color -> ShowS
[Color] -> ShowS
Color -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Color] -> ShowS
$cshowList :: [Color] -> ShowS
show :: Color -> String
$cshow :: Color -> String
showsPrec :: Int -> Color -> ShowS
$cshowsPrec :: Int -> Color -> ShowS
Show)

p'Color'r :: Ptr Color -> Ptr CUChar
p'Color'r Ptr Color
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Color
p Int
0

p'Color'r :: Ptr Color -> Ptr CUChar

p'Color'g :: Ptr Color -> Ptr CUChar
p'Color'g Ptr Color
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Color
p Int
1

p'Color'g :: Ptr Color -> Ptr CUChar

p'Color'b :: Ptr Color -> Ptr CUChar
p'Color'b Ptr Color
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Color
p Int
2

p'Color'b :: Ptr Color -> Ptr CUChar

p'Color'a :: Ptr Color -> Ptr CUChar
p'Color'a Ptr Color
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Color
p Int
3

p'Color'a :: Ptr Color -> Ptr CUChar

instance Storable Color where
  sizeOf :: Color -> Int
sizeOf Color
_ = Int
4
  alignment :: Color -> Int
alignment Color
_ = Int
1
  peek :: Ptr Color -> IO Color
peek Ptr Color
_p = do
    CUChar
v0 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Color
_p Int
0
    CUChar
v1 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Color
_p Int
1
    CUChar
v2 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Color
_p Int
2
    CUChar
v3 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Color
_p Int
3
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ CUChar -> CUChar -> CUChar -> CUChar -> Color
Color CUChar
v0 CUChar
v1 CUChar
v2 CUChar
v3
  poke :: Ptr Color -> Color -> IO ()
poke Ptr Color
_p (Color CUChar
v0 CUChar
v1 CUChar
v2 CUChar
v3) = do
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Color
_p Int
0 CUChar
v0
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Color
_p Int
1 CUChar
v1
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Color
_p Int
2 CUChar
v2
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Color
_p Int
3 CUChar
v3
    forall (m :: * -> *) a. Monad m => a -> m a
return ()

{- typedef struct Rectangle {
            float x; float y; float width; float height;
        } Rectangle; -}
data Rectangle = Rectangle
  { Rectangle -> CFloat
rectangle'x :: CFloat,
    Rectangle -> CFloat
rectangle'y :: CFloat,
    Rectangle -> CFloat
rectangle'width :: CFloat,
    Rectangle -> CFloat
rectangle'height :: CFloat
  }
  deriving (Rectangle -> Rectangle -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Rectangle -> Rectangle -> Bool
$c/= :: Rectangle -> Rectangle -> Bool
== :: Rectangle -> Rectangle -> Bool
$c== :: Rectangle -> Rectangle -> Bool
Eq, Int -> Rectangle -> ShowS
[Rectangle] -> ShowS
Rectangle -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Rectangle] -> ShowS
$cshowList :: [Rectangle] -> ShowS
show :: Rectangle -> String
$cshow :: Rectangle -> String
showsPrec :: Int -> Rectangle -> ShowS
$cshowsPrec :: Int -> Rectangle -> ShowS
Show)

p'Rectangle'x :: Ptr Rectangle -> Ptr CFloat
p'Rectangle'x Ptr Rectangle
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Rectangle
p Int
0

p'Rectangle'x :: Ptr Rectangle -> Ptr CFloat

p'Rectangle'y :: Ptr Rectangle -> Ptr CFloat
p'Rectangle'y Ptr Rectangle
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Rectangle
p Int
4

p'Rectangle'y :: Ptr Rectangle -> Ptr CFloat

p'Rectangle'width :: Ptr Rectangle -> Ptr CFloat
p'Rectangle'width Ptr Rectangle
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Rectangle
p Int
8

p'Rectangle'width :: Ptr Rectangle -> Ptr CFloat

p'Rectangle'height :: Ptr Rectangle -> Ptr CFloat
p'Rectangle'height Ptr Rectangle
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Rectangle
p Int
12

p'Rectangle'height :: Ptr Rectangle -> Ptr CFloat

instance Storable Rectangle where
  sizeOf :: Rectangle -> Int
sizeOf Rectangle
_ = Int
16
  alignment :: Rectangle -> Int
alignment Rectangle
_ = Int
4
  peek :: Ptr Rectangle -> IO Rectangle
peek Ptr Rectangle
_p = do
    CFloat
v0 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Rectangle
_p Int
0
    CFloat
v1 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Rectangle
_p Int
4
    CFloat
v2 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Rectangle
_p Int
8
    CFloat
v3 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Rectangle
_p Int
12
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ CFloat -> CFloat -> CFloat -> CFloat -> Rectangle
Rectangle CFloat
v0 CFloat
v1 CFloat
v2 CFloat
v3
  poke :: Ptr Rectangle -> Rectangle -> IO ()
poke Ptr Rectangle
_p (Rectangle CFloat
v0 CFloat
v1 CFloat
v2 CFloat
v3) = do
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Rectangle
_p Int
0 CFloat
v0
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Rectangle
_p Int
4 CFloat
v1
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Rectangle
_p Int
8 CFloat
v2
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Rectangle
_p Int
12 CFloat
v3
    forall (m :: * -> *) a. Monad m => a -> m a
return ()

{- typedef struct Image {
            void * data; int width; int height; int mipmaps; int format;
        } Image; -}
data Image = Image
  { Image -> Ptr ()
image'data :: Ptr (),
    Image -> CInt
image'width :: CInt,
    Image -> CInt
image'height :: CInt,
    Image -> CInt
image'mipmaps :: CInt,
    Image -> PixelFormat
image'format :: PixelFormat
  }
  deriving (Image -> Image -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Image -> Image -> Bool
$c/= :: Image -> Image -> Bool
== :: Image -> Image -> Bool
$c== :: Image -> Image -> Bool
Eq, Int -> Image -> ShowS
[Image] -> ShowS
Image -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Image] -> ShowS
$cshowList :: [Image] -> ShowS
show :: Image -> String
$cshow :: Image -> String
showsPrec :: Int -> Image -> ShowS
$cshowsPrec :: Int -> Image -> ShowS
Show)

p'Image'data :: Ptr Image -> Ptr (Ptr ())
p'Image'data Ptr Image
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Image
p Int
0

p'Image'data :: Ptr Image -> Ptr (Ptr ())

p'Image'width :: Ptr Image -> Ptr CInt
p'Image'width Ptr Image
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Image
p Int
4

p'Image'width :: Ptr Image -> Ptr CInt

p'Image'height :: Ptr Image -> Ptr CInt
p'Image'height Ptr Image
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Image
p Int
8

p'Image'height :: Ptr Image -> Ptr CInt

p'Image'mipmaps :: Ptr Image -> Ptr CInt
p'Image'mipmaps Ptr Image
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Image
p Int
12

p'Image'mipmaps :: Ptr Image -> Ptr CInt

p'Image'format :: Ptr Image -> Ptr CInt
p'Image'format Ptr Image
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Image
p Int
16

p'Image'format :: Ptr Image -> Ptr CInt

instance Storable Image where
  sizeOf :: Image -> Int
sizeOf Image
_ = Int
20
  alignment :: Image -> Int
alignment Image
_ = Int
4
  peek :: Ptr Image -> IO Image
peek Ptr Image
_p = do
    Ptr ()
v0 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Image
_p Int
0
    CInt
v1 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Image
_p Int
4
    CInt
v2 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Image
_p Int
8
    CInt
v3 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Image
_p Int
12
    PixelFormat
v4 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Image
_p Int
16
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ Ptr () -> CInt -> CInt -> CInt -> PixelFormat -> Image
Image Ptr ()
v0 CInt
v1 CInt
v2 CInt
v3 PixelFormat
v4
  poke :: Ptr Image -> Image -> IO ()
poke Ptr Image
_p (Image Ptr ()
v0 CInt
v1 CInt
v2 CInt
v3 PixelFormat
v4) = do
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Image
_p Int
0 Ptr ()
v0
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Image
_p Int
4 CInt
v1
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Image
_p Int
8 CInt
v2
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Image
_p Int
12 CInt
v3
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Image
_p Int
16 PixelFormat
v4
    forall (m :: * -> *) a. Monad m => a -> m a
return ()

{- typedef struct Texture {
            unsigned int id; int width; int height; int mipmaps; int format;
        } Texture; -}
data Texture = Texture
  { Texture -> CUInt
texture'id :: CUInt,
    Texture -> CInt
texture'width :: CInt,
    Texture -> CInt
texture'height :: CInt,
    Texture -> CInt
texture'mipmaps :: CInt,
    Texture -> PixelFormat
texture'format :: PixelFormat
  }
  deriving (Texture -> Texture -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Texture -> Texture -> Bool
$c/= :: Texture -> Texture -> Bool
== :: Texture -> Texture -> Bool
$c== :: Texture -> Texture -> Bool
Eq, Int -> Texture -> ShowS
[Texture] -> ShowS
Texture -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Texture] -> ShowS
$cshowList :: [Texture] -> ShowS
show :: Texture -> String
$cshow :: Texture -> String
showsPrec :: Int -> Texture -> ShowS
$cshowsPrec :: Int -> Texture -> ShowS
Show)

p'Texture'id :: Ptr Texture -> Ptr CUInt
p'Texture'id Ptr Texture
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Texture
p Int
0

p'Texture'id :: Ptr Texture -> Ptr CUInt

p'Texture'width :: Ptr Texture -> Ptr CInt
p'Texture'width Ptr Texture
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Texture
p Int
4

p'Texture'width :: Ptr Texture -> Ptr CInt

p'Texture'height :: Ptr Texture -> Ptr CInt
p'Texture'height Ptr Texture
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Texture
p Int
8

p'Texture'height :: Ptr Texture -> Ptr CInt

p'Texture'mipmaps :: Ptr Texture -> Ptr CInt
p'Texture'mipmaps Ptr Texture
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Texture
p Int
12

p'Texture'mipmaps :: Ptr Texture -> Ptr CInt

p'Texture'format :: Ptr Texture -> Ptr CInt
p'Texture'format Ptr Texture
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Texture
p Int
16

p'Texture'format :: Ptr Texture -> Ptr CInt

instance Storable Texture where
  sizeOf :: Texture -> Int
sizeOf Texture
_ = Int
20
  alignment :: Texture -> Int
alignment Texture
_ = Int
4
  peek :: Ptr Texture -> IO Texture
peek Ptr Texture
_p = do
    CUInt
v0 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Texture
_p Int
0
    CInt
v1 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Texture
_p Int
4
    CInt
v2 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Texture
_p Int
8
    CInt
v3 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Texture
_p Int
12
    PixelFormat
v4 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Texture
_p Int
16
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ CUInt -> CInt -> CInt -> CInt -> PixelFormat -> Texture
Texture CUInt
v0 CInt
v1 CInt
v2 CInt
v3 PixelFormat
v4
  poke :: Ptr Texture -> Texture -> IO ()
poke Ptr Texture
_p (Texture CUInt
v0 CInt
v1 CInt
v2 CInt
v3 PixelFormat
v4) = do
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Texture
_p Int
0 CUInt
v0
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Texture
_p Int
4 CInt
v1
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Texture
_p Int
8 CInt
v2
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Texture
_p Int
12 CInt
v3
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Texture
_p Int
16 PixelFormat
v4
    forall (m :: * -> *) a. Monad m => a -> m a
return ()

{- typedef Texture Texture2D; -}
type Texture2D = Texture

{- typedef Texture TextureCubemap; -}
type TextureCubemap = Texture

{- typedef struct RenderTexture {
            unsigned int id; Texture texture; Texture depth;
        } RenderTexture; -}
data RenderTexture = RenderTexture
  { RenderTexture -> CUInt
rendertexture'id :: CUInt,
    RenderTexture -> Texture
rendertexture'texture :: Texture,
    RenderTexture -> Texture
rendertexture'depth :: Texture
  }
  deriving (RenderTexture -> RenderTexture -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RenderTexture -> RenderTexture -> Bool
$c/= :: RenderTexture -> RenderTexture -> Bool
== :: RenderTexture -> RenderTexture -> Bool
$c== :: RenderTexture -> RenderTexture -> Bool
Eq, Int -> RenderTexture -> ShowS
[RenderTexture] -> ShowS
RenderTexture -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [RenderTexture] -> ShowS
$cshowList :: [RenderTexture] -> ShowS
show :: RenderTexture -> String
$cshow :: RenderTexture -> String
showsPrec :: Int -> RenderTexture -> ShowS
$cshowsPrec :: Int -> RenderTexture -> ShowS
Show)

p'RenderTexture'id :: Ptr RenderTexture -> Ptr CUInt
p'RenderTexture'id Ptr RenderTexture
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr RenderTexture
p Int
0

p'RenderTexture'id :: Ptr RenderTexture -> Ptr CUInt

p'RenderTexture'texture :: Ptr RenderTexture -> Ptr Texture
p'RenderTexture'texture Ptr RenderTexture
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr RenderTexture
p Int
4

p'RenderTexture'texture :: Ptr RenderTexture -> Ptr Texture

p'RenderTexture'depth :: Ptr RenderTexture -> Ptr Texture
p'RenderTexture'depth Ptr RenderTexture
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr RenderTexture
p Int
24

p'RenderTexture'depth :: Ptr RenderTexture -> Ptr Texture

instance Storable RenderTexture where
  sizeOf :: RenderTexture -> Int
sizeOf RenderTexture
_ = Int
44
  alignment :: RenderTexture -> Int
alignment RenderTexture
_ = Int
4
  peek :: Ptr RenderTexture -> IO RenderTexture
peek Ptr RenderTexture
_p = do
    CUInt
v0 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr RenderTexture
_p Int
0
    Texture
v1 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr RenderTexture
_p Int
4
    Texture
v2 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr RenderTexture
_p Int
24
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ CUInt -> Texture -> Texture -> RenderTexture
RenderTexture CUInt
v0 Texture
v1 Texture
v2
  poke :: Ptr RenderTexture -> RenderTexture -> IO ()
poke Ptr RenderTexture
_p (RenderTexture CUInt
v0 Texture
v1 Texture
v2) = do
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr RenderTexture
_p Int
0 CUInt
v0
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr RenderTexture
_p Int
4 Texture
v1
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr RenderTexture
_p Int
24 Texture
v2
    forall (m :: * -> *) a. Monad m => a -> m a
return ()

{- typedef RenderTexture RenderTexture2D; -}
type RenderTexture2D = RenderTexture

{- typedef struct NPatchInfo {
            Rectangle source;
            int left;
            int top;
            int right;
            int bottom;
            int layout;
        } NPatchInfo; -}
data NPatchInfo = NPatchInfo
  { NPatchInfo -> Rectangle
nPatchinfo'source :: Rectangle,
    NPatchInfo -> CInt
nPatchinfo'left :: CInt,
    NPatchInfo -> CInt
nPatchinfo'top :: CInt,
    NPatchInfo -> CInt
nPatchinfo'right :: CInt,
    NPatchInfo -> CInt
nPatchinfo'bottom :: CInt,
    NPatchInfo -> NPatchLayout
nPatchinfo'layout :: NPatchLayout
  }
  deriving (NPatchInfo -> NPatchInfo -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: NPatchInfo -> NPatchInfo -> Bool
$c/= :: NPatchInfo -> NPatchInfo -> Bool
== :: NPatchInfo -> NPatchInfo -> Bool
$c== :: NPatchInfo -> NPatchInfo -> Bool
Eq, Int -> NPatchInfo -> ShowS
[NPatchInfo] -> ShowS
NPatchInfo -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [NPatchInfo] -> ShowS
$cshowList :: [NPatchInfo] -> ShowS
show :: NPatchInfo -> String
$cshow :: NPatchInfo -> String
showsPrec :: Int -> NPatchInfo -> ShowS
$cshowsPrec :: Int -> NPatchInfo -> ShowS
Show)

p'NPatchInfo'source :: Ptr NPatchInfo -> Ptr Rectangle
p'NPatchInfo'source Ptr NPatchInfo
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr NPatchInfo
p Int
0

p'NPatchInfo'source :: Ptr NPatchInfo -> Ptr Rectangle

p'NPatchInfo'left :: Ptr NPatchInfo -> Ptr CInt
p'NPatchInfo'left Ptr NPatchInfo
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr NPatchInfo
p Int
16

p'NPatchInfo'left :: Ptr NPatchInfo -> Ptr CInt

p'NPatchInfo'top :: Ptr NPatchInfo -> Ptr CInt
p'NPatchInfo'top Ptr NPatchInfo
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr NPatchInfo
p Int
20

p'NPatchInfo'top :: Ptr NPatchInfo -> Ptr CInt

p'NPatchInfo'right :: Ptr NPatchInfo -> Ptr CInt
p'NPatchInfo'right Ptr NPatchInfo
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr NPatchInfo
p Int
24

p'NPatchInfo'right :: Ptr NPatchInfo -> Ptr CInt

p'NPatchInfo'bottom :: Ptr NPatchInfo -> Ptr CInt
p'NPatchInfo'bottom Ptr NPatchInfo
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr NPatchInfo
p Int
28

p'NPatchInfo'bottom :: Ptr NPatchInfo -> Ptr CInt

p'NPatchInfo'layout :: Ptr NPatchInfo -> Ptr CInt
p'NPatchInfo'layout Ptr NPatchInfo
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr NPatchInfo
p Int
32

p'NPatchInfo'layout :: Ptr NPatchInfo -> Ptr CInt

instance Storable NPatchInfo where
  sizeOf :: NPatchInfo -> Int
sizeOf NPatchInfo
_ = Int
36
  alignment :: NPatchInfo -> Int
alignment NPatchInfo
_ = Int
4
  peek :: Ptr NPatchInfo -> IO NPatchInfo
peek Ptr NPatchInfo
_p = do
    Rectangle
v0 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr NPatchInfo
_p Int
0
    CInt
v1 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr NPatchInfo
_p Int
16
    CInt
v2 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr NPatchInfo
_p Int
20
    CInt
v3 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr NPatchInfo
_p Int
24
    CInt
v4 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr NPatchInfo
_p Int
28
    NPatchLayout
v5 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr NPatchInfo
_p Int
32
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ Rectangle
-> CInt -> CInt -> CInt -> CInt -> NPatchLayout -> NPatchInfo
NPatchInfo Rectangle
v0 CInt
v1 CInt
v2 CInt
v3 CInt
v4 NPatchLayout
v5
  poke :: Ptr NPatchInfo -> NPatchInfo -> IO ()
poke Ptr NPatchInfo
_p (NPatchInfo Rectangle
v0 CInt
v1 CInt
v2 CInt
v3 CInt
v4 NPatchLayout
v5) = do
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr NPatchInfo
_p Int
0 Rectangle
v0
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr NPatchInfo
_p Int
16 CInt
v1
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr NPatchInfo
_p Int
20 CInt
v2
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr NPatchInfo
_p Int
24 CInt
v3
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr NPatchInfo
_p Int
28 CInt
v4
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr NPatchInfo
_p Int
32 NPatchLayout
v5
    forall (m :: * -> *) a. Monad m => a -> m a
return ()

{- typedef struct GlyphInfo {
            int value; int offsetX; int offsetY; int advanceX; Image image;
        } GlyphInfo; -}
data GlyphInfo = GlyphInfo
  { GlyphInfo -> CInt
glyphinfo'value :: CInt,
    GlyphInfo -> CInt
glyphInfo'offsetX :: CInt,
    GlyphInfo -> CInt
glyphInfo'offsetY :: CInt,
    GlyphInfo -> CInt
glyphInfo'advanceX :: CInt,
    GlyphInfo -> Image
glyphinfo'image :: Image
  }
  deriving (GlyphInfo -> GlyphInfo -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GlyphInfo -> GlyphInfo -> Bool
$c/= :: GlyphInfo -> GlyphInfo -> Bool
== :: GlyphInfo -> GlyphInfo -> Bool
$c== :: GlyphInfo -> GlyphInfo -> Bool
Eq, Int -> GlyphInfo -> ShowS
[GlyphInfo] -> ShowS
GlyphInfo -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GlyphInfo] -> ShowS
$cshowList :: [GlyphInfo] -> ShowS
show :: GlyphInfo -> String
$cshow :: GlyphInfo -> String
showsPrec :: Int -> GlyphInfo -> ShowS
$cshowsPrec :: Int -> GlyphInfo -> ShowS
Show)

p'GlyphInfo'value :: Ptr GlyphInfo -> Ptr CInt
p'GlyphInfo'value Ptr GlyphInfo
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr GlyphInfo
p Int
0

p'GlyphInfo'value :: Ptr GlyphInfo -> Ptr CInt

p'GlyphInfo'offsetX :: Ptr GlyphInfo -> Ptr CInt
p'GlyphInfo'offsetX Ptr GlyphInfo
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr GlyphInfo
p Int
4

p'GlyphInfo'offsetX :: Ptr GlyphInfo -> Ptr CInt

p'GlyphInfo'offsetY :: Ptr GlyphInfo -> Ptr CInt
p'GlyphInfo'offsetY Ptr GlyphInfo
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr GlyphInfo
p Int
8

p'GlyphInfo'offsetY :: Ptr GlyphInfo -> Ptr CInt

p'GlyphInfo'advanceX :: Ptr GlyphInfo -> Ptr CInt
p'GlyphInfo'advanceX Ptr GlyphInfo
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr GlyphInfo
p Int
12

p'GlyphInfo'advanceX :: Ptr GlyphInfo -> Ptr CInt

p'GlyphInfo'image :: Ptr GlyphInfo -> Ptr Image
p'GlyphInfo'image Ptr GlyphInfo
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr GlyphInfo
p Int
16

p'GlyphInfo'image :: Ptr GlyphInfo -> Ptr Image

instance Storable GlyphInfo where
  sizeOf :: GlyphInfo -> Int
sizeOf GlyphInfo
_ = Int
36
  alignment :: GlyphInfo -> Int
alignment GlyphInfo
_ = Int
4
  peek :: Ptr GlyphInfo -> IO GlyphInfo
peek Ptr GlyphInfo
_p = do
    CInt
v0 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr GlyphInfo
_p Int
0
    CInt
v1 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr GlyphInfo
_p Int
4
    CInt
v2 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr GlyphInfo
_p Int
8
    CInt
v3 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr GlyphInfo
_p Int
12
    Image
v4 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr GlyphInfo
_p Int
16
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ CInt -> CInt -> CInt -> CInt -> Image -> GlyphInfo
GlyphInfo CInt
v0 CInt
v1 CInt
v2 CInt
v3 Image
v4
  poke :: Ptr GlyphInfo -> GlyphInfo -> IO ()
poke Ptr GlyphInfo
_p (GlyphInfo CInt
v0 CInt
v1 CInt
v2 CInt
v3 Image
v4) = do
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr GlyphInfo
_p Int
0 CInt
v0
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr GlyphInfo
_p Int
4 CInt
v1
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr GlyphInfo
_p Int
8 CInt
v2
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr GlyphInfo
_p Int
12 CInt
v3
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr GlyphInfo
_p Int
16 Image
v4
    forall (m :: * -> *) a. Monad m => a -> m a
return ()

{- typedef struct Font {
            int baseSize;
            int glyphCount;
            int glyphPadding;
            Texture2D texture;
            Rectangle * recs;
            GlyphInfo * glyphs;
        } Font; -}
data Font = Font
  { Font -> CInt
font'baseSize :: CInt,
    Font -> CInt
font'glyphCount :: CInt,
    Font -> CInt
font'glyphPadding :: CInt,
    Font -> Texture
font'texture :: Texture,
    Font -> Ptr Rectangle
font'recs :: Ptr Rectangle,
    Font -> Ptr GlyphInfo
font'glyphs :: Ptr GlyphInfo
  }
  deriving (Font -> Font -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Font -> Font -> Bool
$c/= :: Font -> Font -> Bool
== :: Font -> Font -> Bool
$c== :: Font -> Font -> Bool
Eq, Int -> Font -> ShowS
[Font] -> ShowS
Font -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Font] -> ShowS
$cshowList :: [Font] -> ShowS
show :: Font -> String
$cshow :: Font -> String
showsPrec :: Int -> Font -> ShowS
$cshowsPrec :: Int -> Font -> ShowS
Show)

p'Font'baseSize :: Ptr Font -> Ptr CInt
p'Font'baseSize Ptr Font
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Font
p Int
0

p'Font'baseSize :: Ptr Font -> Ptr CInt

p'Font'glyphCount :: Ptr Font -> Ptr CInt
p'Font'glyphCount Ptr Font
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Font
p Int
4

p'Font'glyphCount :: Ptr Font -> Ptr CInt

p'Font'glyphPadding :: Ptr Font -> Ptr CInt
p'Font'glyphPadding Ptr Font
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Font
p Int
8

p'Font'glyphPadding :: Ptr Font -> Ptr CInt

p'Font'texture :: Ptr Font -> Ptr Texture
p'Font'texture Ptr Font
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Font
p Int
12

p'Font'texture :: Ptr Font -> Ptr Texture

p'Font'recs :: Ptr Font -> Ptr (Ptr Rectangle)
p'Font'recs Ptr Font
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Font
p Int
32

p'Font'recs :: Ptr Font -> Ptr (Ptr Rectangle)

p'Font'glyphs :: Ptr Font -> Ptr (Ptr GlyphInfo)
p'Font'glyphs Ptr Font
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Font
p Int
40

p'Font'glyphs :: Ptr Font -> Ptr (Ptr GlyphInfo)

instance Storable Font where
  sizeOf :: Font -> Int
sizeOf Font
_ = Int
48
  alignment :: Font -> Int
alignment Font
_ = Int
4
  peek :: Ptr Font -> IO Font
peek Ptr Font
_p = do
    CInt
v0 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Font
_p Int
0
    CInt
v1 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Font
_p Int
4
    CInt
v2 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Font
_p Int
8
    Texture
v3 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Font
_p Int
12
    Ptr Rectangle
v4 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Font
_p Int
32
    Ptr GlyphInfo
v5 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Font
_p Int
40
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ CInt
-> CInt
-> CInt
-> Texture
-> Ptr Rectangle
-> Ptr GlyphInfo
-> Font
Font CInt
v0 CInt
v1 CInt
v2 Texture
v3 Ptr Rectangle
v4 Ptr GlyphInfo
v5
  poke :: Ptr Font -> Font -> IO ()
poke Ptr Font
_p (Font CInt
v0 CInt
v1 CInt
v2 Texture
v3 Ptr Rectangle
v4 Ptr GlyphInfo
v5) = do
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Font
_p Int
0 CInt
v0
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Font
_p Int
4 CInt
v1
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Font
_p Int
8 CInt
v2
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Font
_p Int
12 Texture
v3
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Font
_p Int
32 Ptr Rectangle
v4
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Font
_p Int
40 Ptr GlyphInfo
v5
    forall (m :: * -> *) a. Monad m => a -> m a
return ()

{- typedef struct Camera3D {
            Vector3 position;
            Vector3 target;
            Vector3 up;
            float fovy;
            int projection;
        } Camera3D; -}
data Camera3D = Camera3D
  { Camera3D -> Vector3
camera3D'position :: Vector3,
    Camera3D -> Vector3
camera3D'target :: Vector3,
    Camera3D -> Vector3
camera3D'up :: Vector3,
    Camera3D -> CFloat
camera3D'fovy :: CFloat,
    Camera3D -> CameraProjection
camera3D'projection :: CameraProjection
  }
  deriving (Camera3D -> Camera3D -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Camera3D -> Camera3D -> Bool
$c/= :: Camera3D -> Camera3D -> Bool
== :: Camera3D -> Camera3D -> Bool
$c== :: Camera3D -> Camera3D -> Bool
Eq, Int -> Camera3D -> ShowS
[Camera3D] -> ShowS
Camera3D -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Camera3D] -> ShowS
$cshowList :: [Camera3D] -> ShowS
show :: Camera3D -> String
$cshow :: Camera3D -> String
showsPrec :: Int -> Camera3D -> ShowS
$cshowsPrec :: Int -> Camera3D -> ShowS
Show)

p'Camera3D'position :: Ptr Camera3D -> Ptr Vector3
p'Camera3D'position Ptr Camera3D
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Camera3D
p Int
0

p'Camera3D'position :: Ptr Camera3D -> Ptr Vector3

p'Camera3D'target :: Ptr Camera3D -> Ptr Vector3
p'Camera3D'target Ptr Camera3D
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Camera3D
p Int
12

p'Camera3D'target :: Ptr Camera3D -> Ptr Vector3

p'Camera3D'up :: Ptr Camera3D -> Ptr Vector3
p'Camera3D'up Ptr Camera3D
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Camera3D
p Int
24

p'Camera3D'up :: Ptr Camera3D -> Ptr Vector3

p'Camera3D'fovy :: Ptr Camera3D -> Ptr CFloat
p'Camera3D'fovy Ptr Camera3D
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Camera3D
p Int
36

p'Camera3D'fovy :: Ptr Camera3D -> Ptr CFloat

p'Camera3D'projection :: Ptr Camera3D -> Ptr CInt
p'Camera3D'projection Ptr Camera3D
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Camera3D
p Int
40

p'Camera3D'projection :: Ptr Camera3D -> Ptr CInt

instance Storable Camera3D where
  sizeOf :: Camera3D -> Int
sizeOf Camera3D
_ = Int
44
  alignment :: Camera3D -> Int
alignment Camera3D
_ = Int
4
  peek :: Ptr Camera3D -> IO Camera3D
peek Ptr Camera3D
_p = do
    Vector3
v0 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Camera3D
_p Int
0
    Vector3
v1 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Camera3D
_p Int
12
    Vector3
v2 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Camera3D
_p Int
24
    CFloat
v3 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Camera3D
_p Int
36
    CameraProjection
v4 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Camera3D
_p Int
40
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ Vector3
-> Vector3 -> Vector3 -> CFloat -> CameraProjection -> Camera3D
Camera3D Vector3
v0 Vector3
v1 Vector3
v2 CFloat
v3 CameraProjection
v4
  poke :: Ptr Camera3D -> Camera3D -> IO ()
poke Ptr Camera3D
_p (Camera3D Vector3
v0 Vector3
v1 Vector3
v2 CFloat
v3 CameraProjection
v4) = do
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Camera3D
_p Int
0 Vector3
v0
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Camera3D
_p Int
12 Vector3
v1
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Camera3D
_p Int
24 Vector3
v2
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Camera3D
_p Int
36 CFloat
v3
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Camera3D
_p Int
40 CameraProjection
v4
    forall (m :: * -> *) a. Monad m => a -> m a
return ()

{- typedef Camera3D Camera; -}
type Camera = Camera3D

{- typedef struct Camera2D {
            Vector2 offset; Vector2 target; float rotation; float zoom;
        } Camera2D; -}
data Camera2D = Camera2D
  { Camera2D -> Vector2
camera2D'offset :: Vector2,
    Camera2D -> Vector2
camera2D'target :: Vector2,
    Camera2D -> CFloat
camera2d'rotation :: CFloat,
    Camera2D -> CFloat
camera2d'zoom :: CFloat
  }
  deriving (Camera2D -> Camera2D -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Camera2D -> Camera2D -> Bool
$c/= :: Camera2D -> Camera2D -> Bool
== :: Camera2D -> Camera2D -> Bool
$c== :: Camera2D -> Camera2D -> Bool
Eq, Int -> Camera2D -> ShowS
[Camera2D] -> ShowS
Camera2D -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Camera2D] -> ShowS
$cshowList :: [Camera2D] -> ShowS
show :: Camera2D -> String
$cshow :: Camera2D -> String
showsPrec :: Int -> Camera2D -> ShowS
$cshowsPrec :: Int -> Camera2D -> ShowS
Show)

p'Camera2D'offset :: Ptr Camera2D -> Ptr Vector2
p'Camera2D'offset Ptr Camera2D
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Camera2D
p Int
0

p'Camera2D'offset :: Ptr Camera2D -> Ptr Vector2

p'Camera2D'target :: Ptr Camera2D -> Ptr Vector2
p'Camera2D'target Ptr Camera2D
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Camera2D
p Int
8

p'Camera2D'target :: Ptr Camera2D -> Ptr Vector2

p'Camera2D'rotation :: Ptr Camera2D -> Ptr CFloat
p'Camera2D'rotation Ptr Camera2D
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Camera2D
p Int
16

p'Camera2D'rotation :: Ptr Camera2D -> Ptr CFloat

p'Camera2D'zoom :: Ptr Camera2D -> Ptr CFloat
p'Camera2D'zoom Ptr Camera2D
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Camera2D
p Int
20

p'Camera2D'zoom :: Ptr Camera2D -> Ptr CFloat

instance Storable Camera2D where
  sizeOf :: Camera2D -> Int
sizeOf Camera2D
_ = Int
24
  alignment :: Camera2D -> Int
alignment Camera2D
_ = Int
4
  peek :: Ptr Camera2D -> IO Camera2D
peek Ptr Camera2D
_p = do
    Vector2
v0 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Camera2D
_p Int
0
    Vector2
v1 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Camera2D
_p Int
8
    CFloat
v2 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Camera2D
_p Int
16
    CFloat
v3 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Camera2D
_p Int
20
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ Vector2 -> Vector2 -> CFloat -> CFloat -> Camera2D
Camera2D Vector2
v0 Vector2
v1 CFloat
v2 CFloat
v3
  poke :: Ptr Camera2D -> Camera2D -> IO ()
poke Ptr Camera2D
_p (Camera2D Vector2
v0 Vector2
v1 CFloat
v2 CFloat
v3) = do
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Camera2D
_p Int
0 Vector2
v0
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Camera2D
_p Int
8 Vector2
v1
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Camera2D
_p Int
16 CFloat
v2
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Camera2D
_p Int
20 CFloat
v3
    forall (m :: * -> *) a. Monad m => a -> m a
return ()

{- typedef struct Mesh {
            int vertexCount;
            int triangleCount;
            float * vertices;
            float * texcoords;
            float * texcoords2;
            float * normals;
            float * tangents;
            unsigned char * colors;
            unsigned short * indices;
            float * animVertices;
            float * animNormals;
            unsigned char * boneIds;
            float * boneWeights;
            unsigned int vaoId;
            unsigned int * vboId;
        } Mesh; -}
data Mesh = Mesh
  { Mesh -> CInt
mesh'vertexCount :: CInt,
    Mesh -> CInt
mesh'triangleCount :: CInt,
    Mesh -> Ptr CFloat
mesh'vertices :: Ptr CFloat,
    Mesh -> Ptr CFloat
mesh'texcoords :: Ptr CFloat,
    Mesh -> Ptr CFloat
mesh'texcoords2 :: Ptr CFloat,
    Mesh -> Ptr CFloat
mesh'normals :: Ptr CFloat,
    Mesh -> Ptr CFloat
mesh'tangents :: Ptr CFloat,
    Mesh -> Ptr CUChar
mesh'colors :: Ptr CUChar,
    Mesh -> Ptr CUShort
mesh'indices :: Ptr CUShort,
    Mesh -> Ptr CFloat
mesh'animVertices :: Ptr CFloat,
    Mesh -> Ptr CFloat
mesh'animNormals :: Ptr CFloat,
    Mesh -> Ptr CUChar
mesh'boneIds :: Ptr CUChar,
    Mesh -> Ptr CFloat
mesh'boneWeights :: Ptr CFloat,
    Mesh -> CUInt
mesh'vaoId :: CUInt,
    Mesh -> Ptr CUInt
mesh'vboId :: Ptr CUInt
  }
  deriving (Mesh -> Mesh -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Mesh -> Mesh -> Bool
$c/= :: Mesh -> Mesh -> Bool
== :: Mesh -> Mesh -> Bool
$c== :: Mesh -> Mesh -> Bool
Eq, Int -> Mesh -> ShowS
[Mesh] -> ShowS
Mesh -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Mesh] -> ShowS
$cshowList :: [Mesh] -> ShowS
show :: Mesh -> String
$cshow :: Mesh -> String
showsPrec :: Int -> Mesh -> ShowS
$cshowsPrec :: Int -> Mesh -> ShowS
Show)

p'Mesh'vertexCount :: Ptr Mesh -> Ptr CInt
p'Mesh'vertexCount Ptr Mesh
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Mesh
p Int
0

p'Mesh'vertexCount :: Ptr Mesh -> Ptr CInt

p'Mesh'triangleCount :: Ptr Mesh -> Ptr CInt
p'Mesh'triangleCount Ptr Mesh
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Mesh
p Int
4

p'Mesh'triangleCount :: Ptr Mesh -> Ptr CInt

p'Mesh'vertices :: Ptr Mesh -> Ptr (Ptr CFloat)
p'Mesh'vertices Ptr Mesh
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Mesh
p Int
8

p'Mesh'vertices :: Ptr Mesh -> Ptr (Ptr CFloat)

p'Mesh'texcoords :: Ptr Mesh -> Ptr (Ptr CFloat)
p'Mesh'texcoords Ptr Mesh
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Mesh
p Int
12

p'Mesh'texcoords :: Ptr Mesh -> Ptr (Ptr CFloat)

p'Mesh'texcoords2 :: Ptr Mesh -> Ptr (Ptr CFloat)
p'Mesh'texcoords2 Ptr Mesh
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Mesh
p Int
16

p'Mesh'texcoords2 :: Ptr Mesh -> Ptr (Ptr CFloat)

p'Mesh'normals :: Ptr Mesh -> Ptr (Ptr CFloat)
p'Mesh'normals Ptr Mesh
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Mesh
p Int
20

p'Mesh'normals :: Ptr Mesh -> Ptr (Ptr CFloat)

p'Mesh'tangents :: Ptr Mesh -> Ptr (Ptr CFloat)
p'Mesh'tangents Ptr Mesh
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Mesh
p Int
24

p'Mesh'tangents :: Ptr Mesh -> Ptr (Ptr CFloat)

p'Mesh'colors :: Ptr Mesh -> Ptr (Ptr CUChar)
p'Mesh'colors Ptr Mesh
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Mesh
p Int
28

p'Mesh'colors :: Ptr Mesh -> Ptr (Ptr CUChar)

p'Mesh'indices :: Ptr Mesh -> Ptr (Ptr CUShort)
p'Mesh'indices Ptr Mesh
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Mesh
p Int
32

p'Mesh'indices :: Ptr Mesh -> Ptr (Ptr CUShort)

p'Mesh'animVertices :: Ptr Mesh -> Ptr (Ptr CFloat)
p'Mesh'animVertices Ptr Mesh
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Mesh
p Int
36

p'Mesh'animVertices :: Ptr Mesh -> Ptr (Ptr CFloat)

p'Mesh'animNormals :: Ptr Mesh -> Ptr (Ptr CFloat)
p'Mesh'animNormals Ptr Mesh
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Mesh
p Int
40

p'Mesh'animNormals :: Ptr Mesh -> Ptr (Ptr CFloat)

p'Mesh'boneIds :: Ptr Mesh -> Ptr (Ptr CUChar)
p'Mesh'boneIds Ptr Mesh
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Mesh
p Int
44

p'Mesh'boneIds :: Ptr Mesh -> Ptr (Ptr CUChar)

p'Mesh'boneWeights :: Ptr Mesh -> Ptr (Ptr CFloat)
p'Mesh'boneWeights Ptr Mesh
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Mesh
p Int
48

p'Mesh'boneWeights :: Ptr Mesh -> Ptr (Ptr CFloat)

p'Mesh'vaoId :: Ptr Mesh -> Ptr CUInt
p'Mesh'vaoId Ptr Mesh
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Mesh
p Int
52

p'Mesh'vaoId :: Ptr Mesh -> Ptr CUInt

p'Mesh'vboId :: Ptr Mesh -> Ptr (Ptr CUInt)
p'Mesh'vboId Ptr Mesh
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Mesh
p Int
56

p'Mesh'vboId :: Ptr Mesh -> Ptr (Ptr CUInt)

instance Storable Mesh where
  sizeOf :: Mesh -> Int
sizeOf Mesh
_ = Int
60
  alignment :: Mesh -> Int
alignment Mesh
_ = Int
4
  peek :: Ptr Mesh -> IO Mesh
peek Ptr Mesh
_p = do
    CInt
v0 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Mesh
_p Int
0
    CInt
v1 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Mesh
_p Int
4
    Ptr CFloat
v2 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Mesh
_p Int
8
    Ptr CFloat
v3 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Mesh
_p Int
12
    Ptr CFloat
v4 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Mesh
_p Int
16
    Ptr CFloat
v5 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Mesh
_p Int
20
    Ptr CFloat
v6 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Mesh
_p Int
24
    Ptr CUChar
v7 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Mesh
_p Int
28
    Ptr CUShort
v8 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Mesh
_p Int
32
    Ptr CFloat
v9 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Mesh
_p Int
36
    Ptr CFloat
v10 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Mesh
_p Int
40
    Ptr CUChar
v11 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Mesh
_p Int
44
    Ptr CFloat
v12 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Mesh
_p Int
48
    CUInt
v13 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Mesh
_p Int
52
    Ptr CUInt
v14 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Mesh
_p Int
56
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ CInt
-> CInt
-> Ptr CFloat
-> Ptr CFloat
-> Ptr CFloat
-> Ptr CFloat
-> Ptr CFloat
-> Ptr CUChar
-> Ptr CUShort
-> Ptr CFloat
-> Ptr CFloat
-> Ptr CUChar
-> Ptr CFloat
-> CUInt
-> Ptr CUInt
-> Mesh
Mesh CInt
v0 CInt
v1 Ptr CFloat
v2 Ptr CFloat
v3 Ptr CFloat
v4 Ptr CFloat
v5 Ptr CFloat
v6 Ptr CUChar
v7 Ptr CUShort
v8 Ptr CFloat
v9 Ptr CFloat
v10 Ptr CUChar
v11 Ptr CFloat
v12 CUInt
v13 Ptr CUInt
v14
  poke :: Ptr Mesh -> Mesh -> IO ()
poke Ptr Mesh
_p (Mesh CInt
v0 CInt
v1 Ptr CFloat
v2 Ptr CFloat
v3 Ptr CFloat
v4 Ptr CFloat
v5 Ptr CFloat
v6 Ptr CUChar
v7 Ptr CUShort
v8 Ptr CFloat
v9 Ptr CFloat
v10 Ptr CUChar
v11 Ptr CFloat
v12 CUInt
v13 Ptr CUInt
v14) = do
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Mesh
_p Int
0 CInt
v0
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Mesh
_p Int
4 CInt
v1
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Mesh
_p Int
8 Ptr CFloat
v2
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Mesh
_p Int
12 Ptr CFloat
v3
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Mesh
_p Int
16 Ptr CFloat
v4
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Mesh
_p Int
20 Ptr CFloat
v5
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Mesh
_p Int
24 Ptr CFloat
v6
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Mesh
_p Int
28 Ptr CUChar
v7
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Mesh
_p Int
32 Ptr CUShort
v8
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Mesh
_p Int
36 Ptr CFloat
v9
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Mesh
_p Int
40 Ptr CFloat
v10
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Mesh
_p Int
44 Ptr CUChar
v11
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Mesh
_p Int
48 Ptr CFloat
v12
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Mesh
_p Int
52 CUInt
v13
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Mesh
_p Int
56 Ptr CUInt
v14
    forall (m :: * -> *) a. Monad m => a -> m a
return ()

{- typedef struct Shader {
            unsigned int id; int * locs;
        } Shader; -}
data Shader = Shader
  { Shader -> CUInt
shader'id :: CUInt,
    Shader -> Ptr CInt
shader'locs :: Ptr CInt
  }
  deriving (Shader -> Shader -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Shader -> Shader -> Bool
$c/= :: Shader -> Shader -> Bool
== :: Shader -> Shader -> Bool
$c== :: Shader -> Shader -> Bool
Eq, Int -> Shader -> ShowS
[Shader] -> ShowS
Shader -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Shader] -> ShowS
$cshowList :: [Shader] -> ShowS
show :: Shader -> String
$cshow :: Shader -> String
showsPrec :: Int -> Shader -> ShowS
$cshowsPrec :: Int -> Shader -> ShowS
Show)

p'Shader'id :: Ptr Shader -> Ptr CUInt
p'Shader'id Ptr Shader
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Shader
p Int
0

p'Shader'id :: Ptr Shader -> Ptr CUInt

p'Shader'locs :: Ptr Shader -> Ptr (Ptr CInt)
p'Shader'locs Ptr Shader
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Shader
p Int
4

p'Shader'locs :: Ptr Shader -> Ptr (Ptr CInt)

instance Storable Shader where
  sizeOf :: Shader -> Int
sizeOf Shader
_ = Int
8
  alignment :: Shader -> Int
alignment Shader
_ = Int
4
  peek :: Ptr Shader -> IO Shader
peek Ptr Shader
_p = do
    CUInt
v0 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Shader
_p Int
0
    Ptr CInt
v1 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Shader
_p Int
4
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ CUInt -> Ptr CInt -> Shader
Shader CUInt
v0 Ptr CInt
v1
  poke :: Ptr Shader -> Shader -> IO ()
poke Ptr Shader
_p (Shader CUInt
v0 Ptr CInt
v1) = do
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Shader
_p Int
0 CUInt
v0
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Shader
_p Int
4 Ptr CInt
v1
    forall (m :: * -> *) a. Monad m => a -> m a
return ()

{- typedef struct MaterialMap {
            Texture2D texture; Color color; float value;
        } MaterialMap; -}
data MaterialMap = MaterialMap
  { MaterialMap -> Texture
materialmap'texture :: Texture,
    MaterialMap -> Color
materialmap'color :: Color,
    MaterialMap -> CFloat
materialmap'value :: CFloat
  }
  deriving (MaterialMap -> MaterialMap -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MaterialMap -> MaterialMap -> Bool
$c/= :: MaterialMap -> MaterialMap -> Bool
== :: MaterialMap -> MaterialMap -> Bool
$c== :: MaterialMap -> MaterialMap -> Bool
Eq, Int -> MaterialMap -> ShowS
[MaterialMap] -> ShowS
MaterialMap -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MaterialMap] -> ShowS
$cshowList :: [MaterialMap] -> ShowS
show :: MaterialMap -> String
$cshow :: MaterialMap -> String
showsPrec :: Int -> MaterialMap -> ShowS
$cshowsPrec :: Int -> MaterialMap -> ShowS
Show)

p'MaterialMap'texture :: Ptr MaterialMap -> Ptr Texture
p'MaterialMap'texture Ptr MaterialMap
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr MaterialMap
p Int
0

p'MaterialMap'texture :: Ptr MaterialMap -> Ptr Texture

p'MaterialMap'color :: Ptr MaterialMap -> Ptr Color
p'MaterialMap'color Ptr MaterialMap
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr MaterialMap
p Int
20

p'MaterialMap'color :: Ptr MaterialMap -> Ptr Color

p'MaterialMap'value :: Ptr MaterialMap -> Ptr CFloat
p'MaterialMap'value Ptr MaterialMap
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr MaterialMap
p Int
24

p'MaterialMap'value :: Ptr MaterialMap -> Ptr CFloat

instance Storable MaterialMap where
  sizeOf :: MaterialMap -> Int
sizeOf MaterialMap
_ = Int
28
  alignment :: MaterialMap -> Int
alignment MaterialMap
_ = Int
4
  peek :: Ptr MaterialMap -> IO MaterialMap
peek Ptr MaterialMap
_p = do
    Texture
v0 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr MaterialMap
_p Int
0
    Color
v1 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr MaterialMap
_p Int
20
    CFloat
v2 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr MaterialMap
_p Int
24
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ Texture -> Color -> CFloat -> MaterialMap
MaterialMap Texture
v0 Color
v1 CFloat
v2
  poke :: Ptr MaterialMap -> MaterialMap -> IO ()
poke Ptr MaterialMap
_p (MaterialMap Texture
v0 Color
v1 CFloat
v2) = do
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr MaterialMap
_p Int
0 Texture
v0
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr MaterialMap
_p Int
20 Color
v1
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr MaterialMap
_p Int
24 CFloat
v2
    forall (m :: * -> *) a. Monad m => a -> m a
return ()

{- typedef struct Material {
            Shader shader; MaterialMap * maps; float params[4];
        } Material; -}
data Material = Material
  { Material -> Shader
material'shader :: Shader,
    Material -> Ptr MaterialMap
material'maps :: Ptr MaterialMap,
    Material -> [CFloat]
material'params :: [CFloat]
  }
  deriving (Material -> Material -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Material -> Material -> Bool
$c/= :: Material -> Material -> Bool
== :: Material -> Material -> Bool
$c== :: Material -> Material -> Bool
Eq, Int -> Material -> ShowS
[Material] -> ShowS
Material -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Material] -> ShowS
$cshowList :: [Material] -> ShowS
show :: Material -> String
$cshow :: Material -> String
showsPrec :: Int -> Material -> ShowS
$cshowsPrec :: Int -> Material -> ShowS
Show)

p'Material'shader :: Ptr Material -> Ptr Shader
p'Material'shader Ptr Material
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Material
p Int
0

p'Material'shader :: Ptr Material -> Ptr Shader

p'Material'maps :: Ptr Material -> Ptr (Ptr MaterialMap)
p'Material'maps Ptr Material
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Material
p Int
8

p'Material'maps :: Ptr Material -> Ptr (Ptr MaterialMap)

p'Material'params :: Ptr Material -> Ptr CFloat
p'Material'params Ptr Material
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Material
p Int
12

p'Material'params :: Ptr Material -> Ptr CFloat

instance Storable Material where
  sizeOf :: Material -> Int
sizeOf Material
_ = Int
28
  alignment :: Material -> Int
alignment Material
_ = Int
4
  peek :: Ptr Material -> IO Material
peek Ptr Material
_p = do
    Shader
v0 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Material
_p Int
0
    Ptr MaterialMap
v1 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Material
_p Int
8
    [CFloat]
v2 <- let s2 :: Int
s2 = forall a. Integral a => a -> a -> a
div Int
16 forall a b. (a -> b) -> a -> b
$ forall a. Storable a => a -> Int
sizeOf (forall a. HasCallStack => a
undefined :: CFloat) in forall a. Storable a => Int -> Ptr a -> IO [a]
peekArray Int
s2 (forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Material
_p Int
12)
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ Shader -> Ptr MaterialMap -> [CFloat] -> Material
Material Shader
v0 Ptr MaterialMap
v1 [CFloat]
v2
  poke :: Ptr Material -> Material -> IO ()
poke Ptr Material
_p (Material Shader
v0 Ptr MaterialMap
v1 [CFloat]
v2) = do
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Material
_p Int
0 Shader
v0
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Material
_p Int
8 Ptr MaterialMap
v1
    let s2 :: Int
s2 = forall a. Integral a => a -> a -> a
div Int
16 forall a b. (a -> b) -> a -> b
$ forall a. Storable a => a -> Int
sizeOf (forall a. HasCallStack => a
undefined :: CFloat)
    forall a. Storable a => Ptr a -> [a] -> IO ()
pokeArray (forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Material
_p Int
12) (forall a. Int -> [a] -> [a]
take Int
s2 [CFloat]
v2)
    forall (m :: * -> *) a. Monad m => a -> m a
return ()

{- typedef struct Transform {
            Vector3 translation; Quaternion rotation; Vector3 scale;
        } Transform; -}
data Transform = Transform
  { Transform -> Vector3
transform'translation :: Vector3,
    Transform -> Vector4
transform'rotation :: Vector4,
    Transform -> Vector3
transform'scale :: Vector3
  }
  deriving (Transform -> Transform -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Transform -> Transform -> Bool
$c/= :: Transform -> Transform -> Bool
== :: Transform -> Transform -> Bool
$c== :: Transform -> Transform -> Bool
Eq, Int -> Transform -> ShowS
[Transform] -> ShowS
Transform -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Transform] -> ShowS
$cshowList :: [Transform] -> ShowS
show :: Transform -> String
$cshow :: Transform -> String
showsPrec :: Int -> Transform -> ShowS
$cshowsPrec :: Int -> Transform -> ShowS
Show)

p'Transform'translation :: Ptr Transform -> Ptr Vector3
p'Transform'translation Ptr Transform
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Transform
p Int
0

p'Transform'translation :: Ptr Transform -> Ptr Vector3

p'Transform'rotation :: Ptr Transform -> Ptr Vector4
p'Transform'rotation Ptr Transform
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Transform
p Int
12

p'Transform'rotation :: Ptr Transform -> Ptr Vector4

p'Transform'scale :: Ptr Transform -> Ptr Vector3
p'Transform'scale Ptr Transform
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Transform
p Int
28

p'Transform'scale :: Ptr Transform -> Ptr Vector3

instance Storable Transform where
  sizeOf :: Transform -> Int
sizeOf Transform
_ = Int
40
  alignment :: Transform -> Int
alignment Transform
_ = Int
4
  peek :: Ptr Transform -> IO Transform
peek Ptr Transform
_p = do
    Vector3
v0 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Transform
_p Int
0
    Vector4
v1 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Transform
_p Int
12
    Vector3
v2 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Transform
_p Int
28
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ Vector3 -> Vector4 -> Vector3 -> Transform
Transform Vector3
v0 Vector4
v1 Vector3
v2
  poke :: Ptr Transform -> Transform -> IO ()
poke Ptr Transform
_p (Transform Vector3
v0 Vector4
v1 Vector3
v2) = do
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Transform
_p Int
0 Vector3
v0
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Transform
_p Int
12 Vector4
v1
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Transform
_p Int
28 Vector3
v2
    forall (m :: * -> *) a. Monad m => a -> m a
return ()

{- typedef struct BoneInfo {
            char name[32]; int parent;
        } BoneInfo; -}
data BoneInfo = BoneInfo
  { BoneInfo -> [CChar]
boneInfo'name :: [CChar],
    BoneInfo -> CInt
boneinfo'parent :: CInt
  }
  deriving (BoneInfo -> BoneInfo -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: BoneInfo -> BoneInfo -> Bool
$c/= :: BoneInfo -> BoneInfo -> Bool
== :: BoneInfo -> BoneInfo -> Bool
$c== :: BoneInfo -> BoneInfo -> Bool
Eq, Int -> BoneInfo -> ShowS
[BoneInfo] -> ShowS
BoneInfo -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [BoneInfo] -> ShowS
$cshowList :: [BoneInfo] -> ShowS
show :: BoneInfo -> String
$cshow :: BoneInfo -> String
showsPrec :: Int -> BoneInfo -> ShowS
$cshowsPrec :: Int -> BoneInfo -> ShowS
Show)

p'BoneInfo'name :: Ptr BoneInfo -> Ptr CChar
p'BoneInfo'name Ptr BoneInfo
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr BoneInfo
p Int
0

p'BoneInfo'name :: Ptr BoneInfo -> Ptr CChar

p'BoneInfo'parent :: Ptr BoneInfo -> Ptr CInt
p'BoneInfo'parent Ptr BoneInfo
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr BoneInfo
p Int
32

p'BoneInfo'parent :: Ptr BoneInfo -> Ptr CInt

instance Storable BoneInfo where
  sizeOf :: BoneInfo -> Int
sizeOf BoneInfo
_ = Int
36
  alignment :: BoneInfo -> Int
alignment BoneInfo
_ = Int
4
  peek :: Ptr BoneInfo -> IO BoneInfo
peek Ptr BoneInfo
_p = do
    [CChar]
v0 <- let s0 :: Int
s0 = forall a. Integral a => a -> a -> a
div Int
32 forall a b. (a -> b) -> a -> b
$ forall a. Storable a => a -> Int
sizeOf (forall a. HasCallStack => a
undefined :: CChar) in forall a. Storable a => Int -> Ptr a -> IO [a]
peekArray Int
s0 (forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr BoneInfo
_p Int
0)
    CInt
v1 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr BoneInfo
_p Int
32
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ [CChar] -> CInt -> BoneInfo
BoneInfo [CChar]
v0 CInt
v1
  poke :: Ptr BoneInfo -> BoneInfo -> IO ()
poke Ptr BoneInfo
_p (BoneInfo [CChar]
v0 CInt
v1) = do
    let s0 :: Int
s0 = forall a. Integral a => a -> a -> a
div Int
32 forall a b. (a -> b) -> a -> b
$ forall a. Storable a => a -> Int
sizeOf (forall a. HasCallStack => a
undefined :: CChar)
    forall a. Storable a => Ptr a -> [a] -> IO ()
pokeArray (forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr BoneInfo
_p Int
0) (forall a. Int -> [a] -> [a]
take Int
s0 [CChar]
v0)
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr BoneInfo
_p Int
32 CInt
v1
    forall (m :: * -> *) a. Monad m => a -> m a
return ()

{- typedef struct Model {
            Matrix transform;
            int meshCount;
            int materialCount;
            Mesh * meshes;
            Material * materials;
            int * meshMaterial;
            int boneCount;
            BoneInfo * bones;
            Transform * bindPose;
        } Model; -}
data Model = Model
  { Model -> Matrix
model'transform :: Matrix,
    Model -> CInt
model'meshCount :: CInt,
    Model -> CInt
model'materialCount :: CInt,
    Model -> Ptr Mesh
model'meshes :: Ptr Mesh,
    Model -> Ptr Material
model'materials :: Ptr Material,
    Model -> Ptr CInt
model'meshMaterial :: Ptr CInt,
    Model -> CInt
model'boneCount :: CInt,
    Model -> Ptr BoneInfo
model'bones :: Ptr BoneInfo,
    Model -> Ptr Transform
model'bindPose :: Ptr Transform
  }
  deriving (Model -> Model -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Model -> Model -> Bool
$c/= :: Model -> Model -> Bool
== :: Model -> Model -> Bool
$c== :: Model -> Model -> Bool
Eq, Int -> Model -> ShowS
[Model] -> ShowS
Model -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Model] -> ShowS
$cshowList :: [Model] -> ShowS
show :: Model -> String
$cshow :: Model -> String
showsPrec :: Int -> Model -> ShowS
$cshowsPrec :: Int -> Model -> ShowS
Show)

p'Model'transform :: Ptr Model -> Ptr Matrix
p'Model'transform Ptr Model
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Model
p Int
0

p'Model'transform :: Ptr Model -> Ptr Matrix

p'Model'meshCount :: Ptr Model -> Ptr CInt
p'Model'meshCount Ptr Model
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Model
p Int
64

p'Model'meshCount :: Ptr Model -> Ptr CInt

p'Model'materialCount :: Ptr Model -> Ptr CInt
p'Model'materialCount Ptr Model
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Model
p Int
68

p'Model'materialCount :: Ptr Model -> Ptr CInt

p'Model'meshes :: Ptr Model -> Ptr (Ptr Mesh)
p'Model'meshes Ptr Model
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Model
p Int
72

p'Model'meshes :: Ptr Model -> Ptr (Ptr Mesh)

p'Model'materials :: Ptr Model -> Ptr (Ptr Material)
p'Model'materials Ptr Model
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Model
p Int
76

p'Model'materials :: Ptr Model -> Ptr (Ptr Material)

p'Model'meshMaterial :: Ptr Model -> Ptr (Ptr CInt)
p'Model'meshMaterial Ptr Model
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Model
p Int
80

p'Model'meshMaterial :: Ptr Model -> Ptr (Ptr CInt)

p'Model'boneCount :: Ptr Model -> Ptr CInt
p'Model'boneCount Ptr Model
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Model
p Int
84

p'Model'boneCount :: Ptr Model -> Ptr CInt

p'Model'bones :: Ptr Model -> Ptr (Ptr BoneInfo)
p'Model'bones Ptr Model
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Model
p Int
88

p'Model'bones :: Ptr Model -> Ptr (Ptr BoneInfo)

p'Model'bindPose :: Ptr Model -> Ptr (Ptr Transform)
p'Model'bindPose Ptr Model
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Model
p Int
92

p'Model'bindPose :: Ptr Model -> Ptr (Ptr Transform)

instance Storable Model where
  sizeOf :: Model -> Int
sizeOf Model
_ = Int
96
  alignment :: Model -> Int
alignment Model
_ = Int
4
  peek :: Ptr Model -> IO Model
peek Ptr Model
_p = do
    Matrix
v0 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Model
_p Int
0
    CInt
v1 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Model
_p Int
64
    CInt
v2 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Model
_p Int
68
    Ptr Mesh
v3 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Model
_p Int
72
    Ptr Material
v4 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Model
_p Int
76
    Ptr CInt
v5 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Model
_p Int
80
    CInt
v6 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Model
_p Int
84
    Ptr BoneInfo
v7 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Model
_p Int
88
    Ptr Transform
v8 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Model
_p Int
92
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ Matrix
-> CInt
-> CInt
-> Ptr Mesh
-> Ptr Material
-> Ptr CInt
-> CInt
-> Ptr BoneInfo
-> Ptr Transform
-> Model
Model Matrix
v0 CInt
v1 CInt
v2 Ptr Mesh
v3 Ptr Material
v4 Ptr CInt
v5 CInt
v6 Ptr BoneInfo
v7 Ptr Transform
v8
  poke :: Ptr Model -> Model -> IO ()
poke Ptr Model
_p (Model Matrix
v0 CInt
v1 CInt
v2 Ptr Mesh
v3 Ptr Material
v4 Ptr CInt
v5 CInt
v6 Ptr BoneInfo
v7 Ptr Transform
v8) = do
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Model
_p Int
0 Matrix
v0
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Model
_p Int
64 CInt
v1
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Model
_p Int
68 CInt
v2
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Model
_p Int
72 Ptr Mesh
v3
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Model
_p Int
76 Ptr Material
v4
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Model
_p Int
80 Ptr CInt
v5
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Model
_p Int
84 CInt
v6
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Model
_p Int
88 Ptr BoneInfo
v7
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Model
_p Int
92 Ptr Transform
v8
    forall (m :: * -> *) a. Monad m => a -> m a
return ()

{- typedef struct ModelAnimation {
            int boneCount;
            int frameCount;
            BoneInfo * bones;
            Transform * * framePoses;
        } ModelAnimation; -}
data ModelAnimation = ModelAnimation
  { ModelAnimation -> CInt
modelAnimation'boneCount :: CInt,
    ModelAnimation -> CInt
modelAnimation'frameCount :: CInt,
    ModelAnimation -> Ptr BoneInfo
modelAnimation'bones :: Ptr BoneInfo,
    ModelAnimation -> Ptr (Ptr Transform)
modelAnimation'framePoses :: Ptr (Ptr Transform)
  }
  deriving (ModelAnimation -> ModelAnimation -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ModelAnimation -> ModelAnimation -> Bool
$c/= :: ModelAnimation -> ModelAnimation -> Bool
== :: ModelAnimation -> ModelAnimation -> Bool
$c== :: ModelAnimation -> ModelAnimation -> Bool
Eq, Int -> ModelAnimation -> ShowS
[ModelAnimation] -> ShowS
ModelAnimation -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ModelAnimation] -> ShowS
$cshowList :: [ModelAnimation] -> ShowS
show :: ModelAnimation -> String
$cshow :: ModelAnimation -> String
showsPrec :: Int -> ModelAnimation -> ShowS
$cshowsPrec :: Int -> ModelAnimation -> ShowS
Show)

p'ModelAnimation'boneCount :: Ptr ModelAnimation -> Ptr CInt
p'ModelAnimation'boneCount Ptr ModelAnimation
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr ModelAnimation
p Int
0

p'ModelAnimation'boneCount :: Ptr ModelAnimation -> Ptr CInt

p'ModelAnimation'frameCount :: Ptr ModelAnimation -> Ptr CInt
p'ModelAnimation'frameCount Ptr ModelAnimation
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr ModelAnimation
p Int
4

p'ModelAnimation'frameCount :: Ptr ModelAnimation -> Ptr CInt

p'ModelAnimation'bones :: Ptr ModelAnimation -> Ptr (Ptr BoneInfo)
p'ModelAnimation'bones Ptr ModelAnimation
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr ModelAnimation
p Int
8

p'ModelAnimation'bones :: Ptr ModelAnimation -> Ptr (Ptr BoneInfo)

p'ModelAnimation'framePoses :: Ptr ModelAnimation -> Ptr (Ptr (Ptr Transform))
p'ModelAnimation'framePoses Ptr ModelAnimation
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr ModelAnimation
p Int
12

p'ModelAnimation'framePoses :: Ptr ModelAnimation -> Ptr (Ptr (Ptr Transform))

instance Storable ModelAnimation where
  sizeOf :: ModelAnimation -> Int
sizeOf ModelAnimation
_ = Int
16
  alignment :: ModelAnimation -> Int
alignment ModelAnimation
_ = Int
4
  peek :: Ptr ModelAnimation -> IO ModelAnimation
peek Ptr ModelAnimation
_p = do
    CInt
v0 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr ModelAnimation
_p Int
0
    CInt
v1 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr ModelAnimation
_p Int
4
    Ptr BoneInfo
v2 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr ModelAnimation
_p Int
8
    Ptr (Ptr Transform)
v3 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr ModelAnimation
_p Int
12
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ CInt
-> CInt -> Ptr BoneInfo -> Ptr (Ptr Transform) -> ModelAnimation
ModelAnimation CInt
v0 CInt
v1 Ptr BoneInfo
v2 Ptr (Ptr Transform)
v3
  poke :: Ptr ModelAnimation -> ModelAnimation -> IO ()
poke Ptr ModelAnimation
_p (ModelAnimation CInt
v0 CInt
v1 Ptr BoneInfo
v2 Ptr (Ptr Transform)
v3) = do
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr ModelAnimation
_p Int
0 CInt
v0
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr ModelAnimation
_p Int
4 CInt
v1
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr ModelAnimation
_p Int
8 Ptr BoneInfo
v2
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr ModelAnimation
_p Int
12 Ptr (Ptr Transform)
v3
    forall (m :: * -> *) a. Monad m => a -> m a
return ()

{- typedef struct Ray {
            Vector3 position; Vector3 direction;
        } Ray; -}
data Ray = Ray
  { Ray -> Vector3
ray'position :: Vector3,
    Ray -> Vector3
ray'direction :: Vector3
  }
  deriving (Ray -> Ray -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Ray -> Ray -> Bool
$c/= :: Ray -> Ray -> Bool
== :: Ray -> Ray -> Bool
$c== :: Ray -> Ray -> Bool
Eq, Int -> Ray -> ShowS
[Ray] -> ShowS
Ray -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Ray] -> ShowS
$cshowList :: [Ray] -> ShowS
show :: Ray -> String
$cshow :: Ray -> String
showsPrec :: Int -> Ray -> ShowS
$cshowsPrec :: Int -> Ray -> ShowS
Show)

p'Ray'position :: Ptr Ray -> Ptr Vector3
p'Ray'position Ptr Ray
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Ray
p Int
0

p'Ray'position :: Ptr Ray -> Ptr Vector3

p'Ray'direction :: Ptr Ray -> Ptr Vector3
p'Ray'direction Ptr Ray
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Ray
p Int
12

p'Ray'direction :: Ptr Ray -> Ptr Vector3

instance Storable Ray where
  sizeOf :: Ray -> Int
sizeOf Ray
_ = Int
24
  alignment :: Ray -> Int
alignment Ray
_ = Int
4
  peek :: Ptr Ray -> IO Ray
peek Ptr Ray
_p = do
    Vector3
v0 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Ray
_p Int
0
    Vector3
v1 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Ray
_p Int
12
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ Vector3 -> Vector3 -> Ray
Ray Vector3
v0 Vector3
v1
  poke :: Ptr Ray -> Ray -> IO ()
poke Ptr Ray
_p (Ray Vector3
v0 Vector3
v1) = do
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Ray
_p Int
0 Vector3
v0
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Ray
_p Int
12 Vector3
v1
    forall (m :: * -> *) a. Monad m => a -> m a
return ()

{- typedef struct RayCollision {
            _Bool hit; float distance; Vector3 point; Vector3 normal;
        } RayCollision; -}
data RayCollision = RayCollision
  { RayCollision -> CBool
rayCollision'hit :: CBool,
    RayCollision -> CFloat
rayCollision'distance :: CFloat,
    RayCollision -> Vector3
rayCollision'point :: Vector3,
    RayCollision -> Vector3
rayCollision'normal :: Vector3
  }
  deriving (RayCollision -> RayCollision -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RayCollision -> RayCollision -> Bool
$c/= :: RayCollision -> RayCollision -> Bool
== :: RayCollision -> RayCollision -> Bool
$c== :: RayCollision -> RayCollision -> Bool
Eq, Int -> RayCollision -> ShowS
[RayCollision] -> ShowS
RayCollision -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [RayCollision] -> ShowS
$cshowList :: [RayCollision] -> ShowS
show :: RayCollision -> String
$cshow :: RayCollision -> String
showsPrec :: Int -> RayCollision -> ShowS
$cshowsPrec :: Int -> RayCollision -> ShowS
Show)

p'RayCollision'hit :: Ptr RayCollision -> Ptr CBool
p'RayCollision'hit Ptr RayCollision
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr RayCollision
p Int
0

p'RayCollision'hit :: Ptr RayCollision -> Ptr CBool

p'RayCollision'distance :: Ptr RayCollision -> Ptr CFloat
p'RayCollision'distance Ptr RayCollision
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr RayCollision
p Int
4

p'RayCollision'distance :: Ptr RayCollision -> Ptr CFloat

p'RayCollision'point :: Ptr RayCollision -> Ptr Vector3
p'RayCollision'point Ptr RayCollision
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr RayCollision
p Int
8

p'RayCollision'point :: Ptr RayCollision -> Ptr Vector3

p'RayCollision'normal :: Ptr RayCollision -> Ptr Vector3
p'RayCollision'normal Ptr RayCollision
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr RayCollision
p Int
20

p'RayCollision'normal :: Ptr RayCollision -> Ptr Vector3

instance Storable RayCollision where
  sizeOf :: RayCollision -> Int
sizeOf RayCollision
_ = Int
32
  alignment :: RayCollision -> Int
alignment RayCollision
_ = Int
4
  peek :: Ptr RayCollision -> IO RayCollision
peek Ptr RayCollision
_p = do
    CBool
v0 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr RayCollision
_p Int
0
    CFloat
v1 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr RayCollision
_p Int
4
    Vector3
v2 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr RayCollision
_p Int
8
    Vector3
v3 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr RayCollision
_p Int
20
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ CBool -> CFloat -> Vector3 -> Vector3 -> RayCollision
RayCollision CBool
v0 CFloat
v1 Vector3
v2 Vector3
v3
  poke :: Ptr RayCollision -> RayCollision -> IO ()
poke Ptr RayCollision
_p (RayCollision CBool
v0 CFloat
v1 Vector3
v2 Vector3
v3) = do
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr RayCollision
_p Int
0 CBool
v0
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr RayCollision
_p Int
4 CFloat
v1
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr RayCollision
_p Int
8 Vector3
v2
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr RayCollision
_p Int
20 Vector3
v3
    forall (m :: * -> *) a. Monad m => a -> m a
return ()

{- typedef struct BoundingBox {
            Vector3 min; Vector3 max;
        } BoundingBox; -}
data BoundingBox = BoundingBox
  { BoundingBox -> Vector3
boundingBox'min :: Vector3,
    BoundingBox -> Vector3
boundingBox'max :: Vector3
  }
  deriving (BoundingBox -> BoundingBox -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: BoundingBox -> BoundingBox -> Bool
$c/= :: BoundingBox -> BoundingBox -> Bool
== :: BoundingBox -> BoundingBox -> Bool
$c== :: BoundingBox -> BoundingBox -> Bool
Eq, Int -> BoundingBox -> ShowS
[BoundingBox] -> ShowS
BoundingBox -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [BoundingBox] -> ShowS
$cshowList :: [BoundingBox] -> ShowS
show :: BoundingBox -> String
$cshow :: BoundingBox -> String
showsPrec :: Int -> BoundingBox -> ShowS
$cshowsPrec :: Int -> BoundingBox -> ShowS
Show)

p'BoundingBox'min :: Ptr BoundingBox -> Ptr Vector3
p'BoundingBox'min Ptr BoundingBox
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr BoundingBox
p Int
0

p'BoundingBox'min :: Ptr BoundingBox -> Ptr Vector3

p'BoundingBox'max :: Ptr BoundingBox -> Ptr Vector3
p'BoundingBox'max Ptr BoundingBox
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr BoundingBox
p Int
12

p'BoundingBox'max :: Ptr BoundingBox -> Ptr Vector3

instance Storable BoundingBox where
  sizeOf :: BoundingBox -> Int
sizeOf BoundingBox
_ = Int
24
  alignment :: BoundingBox -> Int
alignment BoundingBox
_ = Int
4
  peek :: Ptr BoundingBox -> IO BoundingBox
peek Ptr BoundingBox
_p = do
    Vector3
v0 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr BoundingBox
_p Int
0
    Vector3
v1 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr BoundingBox
_p Int
12
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ Vector3 -> Vector3 -> BoundingBox
BoundingBox Vector3
v0 Vector3
v1
  poke :: Ptr BoundingBox -> BoundingBox -> IO ()
poke Ptr BoundingBox
_p (BoundingBox Vector3
v0 Vector3
v1) = do
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr BoundingBox
_p Int
0 Vector3
v0
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr BoundingBox
_p Int
12 Vector3
v1
    forall (m :: * -> *) a. Monad m => a -> m a
return ()

{- typedef struct Wave {
            unsigned int frameCount;
            unsigned int sampleRate;
            unsigned int sampleSize;
            unsigned int channels;
            void * data;
        } Wave; -}
data Wave = Wave
  { Wave -> CUInt
wave'frameCount :: CUInt,
    Wave -> CUInt
wave'sampleRate :: CUInt,
    Wave -> CUInt
wave'sampleSize :: CUInt,
    Wave -> CUInt
wave'channels :: CUInt,
    Wave -> Ptr ()
wave'data :: Ptr ()
  }
  deriving (Wave -> Wave -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Wave -> Wave -> Bool
$c/= :: Wave -> Wave -> Bool
== :: Wave -> Wave -> Bool
$c== :: Wave -> Wave -> Bool
Eq, Int -> Wave -> ShowS
[Wave] -> ShowS
Wave -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Wave] -> ShowS
$cshowList :: [Wave] -> ShowS
show :: Wave -> String
$cshow :: Wave -> String
showsPrec :: Int -> Wave -> ShowS
$cshowsPrec :: Int -> Wave -> ShowS
Show)

p'Wave'frameCount :: Ptr Wave -> Ptr CUInt
p'Wave'frameCount Ptr Wave
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Wave
p Int
0

p'Wave'frameCount :: Ptr Wave -> Ptr CUInt

p'Wave'sampleRate :: Ptr Wave -> Ptr CUInt
p'Wave'sampleRate Ptr Wave
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Wave
p Int
4

p'Wave'sampleRate :: Ptr Wave -> Ptr CUInt

p'Wave'sampleSize :: Ptr Wave -> Ptr CUInt
p'Wave'sampleSize Ptr Wave
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Wave
p Int
8

p'Wave'sampleSize :: Ptr Wave -> Ptr CUInt

p'Wave'channels :: Ptr Wave -> Ptr CUInt
p'Wave'channels Ptr Wave
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Wave
p Int
12

p'Wave'channels :: Ptr Wave -> Ptr CUInt

p'Wave'data :: Ptr Wave -> Ptr (Ptr ())
p'Wave'data Ptr Wave
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Wave
p Int
16

p'Wave'data :: Ptr Wave -> Ptr (Ptr ())

instance Storable Wave where
  sizeOf :: Wave -> Int
sizeOf Wave
_ = Int
20
  alignment :: Wave -> Int
alignment Wave
_ = Int
4
  peek :: Ptr Wave -> IO Wave
peek Ptr Wave
_p = do
    CUInt
v0 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Wave
_p Int
0
    CUInt
v1 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Wave
_p Int
4
    CUInt
v2 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Wave
_p Int
8
    CUInt
v3 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Wave
_p Int
12
    Ptr ()
v4 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Wave
_p Int
16
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ CUInt -> CUInt -> CUInt -> CUInt -> Ptr () -> Wave
Wave CUInt
v0 CUInt
v1 CUInt
v2 CUInt
v3 Ptr ()
v4
  poke :: Ptr Wave -> Wave -> IO ()
poke Ptr Wave
_p (Wave CUInt
v0 CUInt
v1 CUInt
v2 CUInt
v3 Ptr ()
v4) = do
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Wave
_p Int
0 CUInt
v0
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Wave
_p Int
4 CUInt
v1
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Wave
_p Int
8 CUInt
v2
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Wave
_p Int
12 CUInt
v3
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Wave
_p Int
16 Ptr ()
v4
    forall (m :: * -> *) a. Monad m => a -> m a
return ()

{- typedef struct rAudioBuffer rAudioBuffer; -}
data RAudioBuffer = RAudioBuffer

{- typedef struct rAudioProcessor rAudioProcessor; -}
data RAudioProcessor = RAudioProcessor

{- typedef struct AudioStream {
            rAudioBuffer * buffer;
            rAudioProcessor * processor;
            unsigned int sampleRate;
            unsigned int sampleSize;
            unsigned int channels;
        } AudioStream; -}
data AudioStream = AudioStream
  { AudioStream -> Ptr RAudioBuffer
audioStream'buffer :: Ptr RAudioBuffer,
    AudioStream -> Ptr RAudioProcessor
audioStream'processor :: Ptr RAudioProcessor,
    AudioStream -> CUInt
audioStream'sampleRate :: CUInt,
    AudioStream -> CUInt
audioStream'sampleSize :: CUInt,
    AudioStream -> CUInt
audiostream'channels :: CUInt
  }
  deriving (AudioStream -> AudioStream -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AudioStream -> AudioStream -> Bool
$c/= :: AudioStream -> AudioStream -> Bool
== :: AudioStream -> AudioStream -> Bool
$c== :: AudioStream -> AudioStream -> Bool
Eq, Int -> AudioStream -> ShowS
[AudioStream] -> ShowS
AudioStream -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AudioStream] -> ShowS
$cshowList :: [AudioStream] -> ShowS
show :: AudioStream -> String
$cshow :: AudioStream -> String
showsPrec :: Int -> AudioStream -> ShowS
$cshowsPrec :: Int -> AudioStream -> ShowS
Show)

p'AudioStream'buffer :: Ptr AudioStream -> Ptr (Ptr RAudioBuffer)
p'AudioStream'buffer Ptr AudioStream
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr AudioStream
p Int
0

p'AudioStream'buffer :: Ptr AudioStream -> Ptr (Ptr RAudioBuffer)

p'AudioStream'processor :: forall rAudioProcessor.
Ptr AudioStream -> Ptr (Ptr rAudioProcessor)
p'AudioStream'processor Ptr AudioStream
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr AudioStream
p Int
4

p'AudioStream'processor :: Ptr AudioStream -> Ptr (Ptr rAudioProcessor)

p'AudioStream'sampleRate :: Ptr AudioStream -> Ptr CUInt
p'AudioStream'sampleRate Ptr AudioStream
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr AudioStream
p Int
8

p'AudioStream'sampleRate :: Ptr AudioStream -> Ptr CUInt

p'AudioStream'sampleSize :: Ptr AudioStream -> Ptr CUInt
p'AudioStream'sampleSize Ptr AudioStream
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr AudioStream
p Int
12

p'AudioStream'sampleSize :: Ptr AudioStream -> Ptr CUInt

p'AudioStream'channels :: Ptr AudioStream -> Ptr CUInt
p'AudioStream'channels Ptr AudioStream
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr AudioStream
p Int
16

p'AudioStream'channels :: Ptr AudioStream -> Ptr CUInt

instance Storable AudioStream where
  sizeOf :: AudioStream -> Int
sizeOf AudioStream
_ = Int
20
  alignment :: AudioStream -> Int
alignment AudioStream
_ = Int
4
  peek :: Ptr AudioStream -> IO AudioStream
peek Ptr AudioStream
_p = do
    Ptr RAudioBuffer
v0 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr AudioStream
_p Int
0
    Ptr RAudioProcessor
v1 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr AudioStream
_p Int
4
    CUInt
v2 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr AudioStream
_p Int
8
    CUInt
v3 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr AudioStream
_p Int
12
    CUInt
v4 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr AudioStream
_p Int
16
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ Ptr RAudioBuffer
-> Ptr RAudioProcessor -> CUInt -> CUInt -> CUInt -> AudioStream
AudioStream Ptr RAudioBuffer
v0 Ptr RAudioProcessor
v1 CUInt
v2 CUInt
v3 CUInt
v4
  poke :: Ptr AudioStream -> AudioStream -> IO ()
poke Ptr AudioStream
_p (AudioStream Ptr RAudioBuffer
v0 Ptr RAudioProcessor
v1 CUInt
v2 CUInt
v3 CUInt
v4) = do
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr AudioStream
_p Int
0 Ptr RAudioBuffer
v0
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr AudioStream
_p Int
4 Ptr RAudioProcessor
v1
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr AudioStream
_p Int
8 CUInt
v2
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr AudioStream
_p Int
12 CUInt
v3
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr AudioStream
_p Int
16 CUInt
v4
    forall (m :: * -> *) a. Monad m => a -> m a
return ()

{- typedef struct Sound {
            AudioStream stream; unsigned int frameCount;
        } Sound; -}
data Sound = Sound
  { Sound -> AudioStream
sound'stream :: AudioStream,
    Sound -> CUInt
sound'frameCount :: CUInt
  }
  deriving (Sound -> Sound -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Sound -> Sound -> Bool
$c/= :: Sound -> Sound -> Bool
== :: Sound -> Sound -> Bool
$c== :: Sound -> Sound -> Bool
Eq, Int -> Sound -> ShowS
[Sound] -> ShowS
Sound -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Sound] -> ShowS
$cshowList :: [Sound] -> ShowS
show :: Sound -> String
$cshow :: Sound -> String
showsPrec :: Int -> Sound -> ShowS
$cshowsPrec :: Int -> Sound -> ShowS
Show)

p'Sound'stream :: Ptr Sound -> Ptr AudioStream
p'Sound'stream Ptr Sound
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Sound
p Int
0

p'Sound'stream :: Ptr Sound -> Ptr AudioStream

p'Sound'frameCount :: Ptr Sound -> Ptr CUInt
p'Sound'frameCount Ptr Sound
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Sound
p Int
20

p'Sound'frameCount :: Ptr Sound -> Ptr CUInt

instance Storable Sound where
  sizeOf :: Sound -> Int
sizeOf Sound
_ = Int
24
  alignment :: Sound -> Int
alignment Sound
_ = Int
4
  peek :: Ptr Sound -> IO Sound
peek Ptr Sound
_p = do
    AudioStream
v0 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Sound
_p Int
0
    CUInt
v1 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Sound
_p Int
20
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ AudioStream -> CUInt -> Sound
Sound AudioStream
v0 CUInt
v1
  poke :: Ptr Sound -> Sound -> IO ()
poke Ptr Sound
_p (Sound AudioStream
v0 CUInt
v1) = do
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Sound
_p Int
0 AudioStream
v0
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Sound
_p Int
20 CUInt
v1
    forall (m :: * -> *) a. Monad m => a -> m a
return ()

{- typedef struct Music {
            AudioStream stream;
            unsigned int frameCount;
            _Bool looping;
            int ctxType;
            void * ctxData;
        } Music; -}
data Music = Music
  { Music -> AudioStream
musistream :: AudioStream,
    Music -> CUInt
musiframeCount :: CUInt,
    Music -> CInt
musilooping :: CInt,
    Music -> CInt
musictxType :: CInt,
    Music -> Ptr ()
musictxData :: Ptr ()
  }
  deriving (Music -> Music -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Music -> Music -> Bool
$c/= :: Music -> Music -> Bool
== :: Music -> Music -> Bool
$c== :: Music -> Music -> Bool
Eq, Int -> Music -> ShowS
[Music] -> ShowS
Music -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Music] -> ShowS
$cshowList :: [Music] -> ShowS
show :: Music -> String
$cshow :: Music -> String
showsPrec :: Int -> Music -> ShowS
$cshowsPrec :: Int -> Music -> ShowS
Show)

p'Musistream :: Ptr Music -> Ptr AudioStream
p'Musistream Ptr Music
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Music
p Int
0

p'Musistream :: Ptr Music -> Ptr AudioStream

p'MusiframeCount :: Ptr Music -> Ptr CUInt
p'MusiframeCount Ptr Music
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Music
p Int
20

p'MusiframeCount :: Ptr Music -> Ptr CUInt

p'Musilooping :: Ptr Music -> Ptr CInt
p'Musilooping Ptr Music
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Music
p Int
24

p'Musilooping :: Ptr Music -> Ptr CInt

p'MusictxType :: Ptr Music -> Ptr CInt
p'MusictxType Ptr Music
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Music
p Int
28

p'MusictxType :: Ptr Music -> Ptr CInt

p'MusictxData :: Ptr Music -> Ptr (Ptr ())
p'MusictxData Ptr Music
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr Music
p Int
32

p'MusictxData :: Ptr Music -> Ptr (Ptr ())

instance Storable Music where
  sizeOf :: Music -> Int
sizeOf Music
_ = Int
36
  alignment :: Music -> Int
alignment Music
_ = Int
4
  peek :: Ptr Music -> IO Music
peek Ptr Music
_p = do
    AudioStream
v0 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Music
_p Int
0
    CUInt
v1 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Music
_p Int
20
    CInt
v2 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Music
_p Int
24
    CInt
v3 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Music
_p Int
28
    Ptr ()
v4 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Music
_p Int
32
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ AudioStream -> CUInt -> CInt -> CInt -> Ptr () -> Music
Music AudioStream
v0 CUInt
v1 CInt
v2 CInt
v3 Ptr ()
v4
  poke :: Ptr Music -> Music -> IO ()
poke Ptr Music
_p (Music AudioStream
v0 CUInt
v1 CInt
v2 CInt
v3 Ptr ()
v4) = do
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Music
_p Int
0 AudioStream
v0
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Music
_p Int
20 CUInt
v1
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Music
_p Int
24 CInt
v2
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Music
_p Int
28 CInt
v3
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Music
_p Int
32 Ptr ()
v4
    forall (m :: * -> *) a. Monad m => a -> m a
return ()

{- typedef struct VrDeviceInfo {
            int hResolution;
            int vResolution;
            float hScreenSize;
            float vScreenSize;
            float vScreenCenter;
            float eyeToScreenDistance;
            float lensSeparationDistance;
            float interpupillaryDistance;
            float lensDistortionValues[4];
            float chromaAbCorrection[4];
        } VrDeviceInfo; -}
data VrDeviceInfo = VrDeviceInfo
  { VrDeviceInfo -> CInt
vrDeviceInfo'hResolution :: CInt,
    VrDeviceInfo -> CInt
vrDeviceInfo'vResolution :: CInt,
    VrDeviceInfo -> CFloat
vrDeviceInfo'hScreenSize :: CFloat,
    VrDeviceInfo -> CFloat
vrDeviceInfo'vScreenSize :: CFloat,
    VrDeviceInfo -> CFloat
vrDeviceInfo'vScreenCenter :: CFloat,
    VrDeviceInfo -> CFloat
vrDeviceInfo'eyeToScreenDistance :: CFloat,
    VrDeviceInfo -> CFloat
vrDeviceInfo'lensSeparationDistance :: CFloat,
    VrDeviceInfo -> CFloat
vrDeviceInfo'interpupillaryDistance :: CFloat,
    VrDeviceInfo -> [CFloat]
vrDeviceInfo'lensDistortionValues :: [CFloat],
    VrDeviceInfo -> [CFloat]
vrDeviceInfo'chromaAbCorrection :: [CFloat]
  }
  deriving (VrDeviceInfo -> VrDeviceInfo -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: VrDeviceInfo -> VrDeviceInfo -> Bool
$c/= :: VrDeviceInfo -> VrDeviceInfo -> Bool
== :: VrDeviceInfo -> VrDeviceInfo -> Bool
$c== :: VrDeviceInfo -> VrDeviceInfo -> Bool
Eq, Int -> VrDeviceInfo -> ShowS
[VrDeviceInfo] -> ShowS
VrDeviceInfo -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [VrDeviceInfo] -> ShowS
$cshowList :: [VrDeviceInfo] -> ShowS
show :: VrDeviceInfo -> String
$cshow :: VrDeviceInfo -> String
showsPrec :: Int -> VrDeviceInfo -> ShowS
$cshowsPrec :: Int -> VrDeviceInfo -> ShowS
Show)

p'VrDeviceInfo'hResolution :: Ptr VrDeviceInfo -> Ptr CInt
p'VrDeviceInfo'hResolution Ptr VrDeviceInfo
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrDeviceInfo
p Int
0

p'VrDeviceInfo'hResolution :: Ptr VrDeviceInfo -> Ptr CInt

p'VrDeviceInfo'vResolution :: Ptr VrDeviceInfo -> Ptr CInt
p'VrDeviceInfo'vResolution Ptr VrDeviceInfo
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrDeviceInfo
p Int
4

p'VrDeviceInfo'vResolution :: Ptr VrDeviceInfo -> Ptr CInt

p'VrDeviceInfo'hScreenSize :: Ptr VrDeviceInfo -> Ptr CFloat
p'VrDeviceInfo'hScreenSize Ptr VrDeviceInfo
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrDeviceInfo
p Int
8

p'VrDeviceInfo'hScreenSize :: Ptr VrDeviceInfo -> Ptr CFloat

p'VrDeviceInfo'vScreenSize :: Ptr VrDeviceInfo -> Ptr CFloat
p'VrDeviceInfo'vScreenSize Ptr VrDeviceInfo
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrDeviceInfo
p Int
12

p'VrDeviceInfo'vScreenSize :: Ptr VrDeviceInfo -> Ptr CFloat

p'VrDeviceInfo'vScreenCenter :: Ptr VrDeviceInfo -> Ptr CFloat
p'VrDeviceInfo'vScreenCenter Ptr VrDeviceInfo
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrDeviceInfo
p Int
16

p'VrDeviceInfo'vScreenCenter :: Ptr VrDeviceInfo -> Ptr CFloat

p'VrDeviceInfo'eyeToScreenDistance :: Ptr VrDeviceInfo -> Ptr CFloat
p'VrDeviceInfo'eyeToScreenDistance Ptr VrDeviceInfo
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrDeviceInfo
p Int
20

p'VrDeviceInfo'eyeToScreenDistance :: Ptr VrDeviceInfo -> Ptr CFloat

p'VrDeviceInfo'lensSeparationDistance :: Ptr VrDeviceInfo -> Ptr CFloat
p'VrDeviceInfo'lensSeparationDistance Ptr VrDeviceInfo
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrDeviceInfo
p Int
24

p'VrDeviceInfo'lensSeparationDistance :: Ptr VrDeviceInfo -> Ptr CFloat

p'VrDeviceInfo'interpupillaryDistance :: Ptr VrDeviceInfo -> Ptr CFloat
p'VrDeviceInfo'interpupillaryDistance Ptr VrDeviceInfo
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrDeviceInfo
p Int
28

p'VrDeviceInfo'interpupillaryDistance :: Ptr VrDeviceInfo -> Ptr CFloat

p'VrDeviceInfo'lensDistortionValues :: Ptr VrDeviceInfo -> Ptr CFloat
p'VrDeviceInfo'lensDistortionValues Ptr VrDeviceInfo
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrDeviceInfo
p Int
32

p'VrDeviceInfo'lensDistortionValues :: Ptr VrDeviceInfo -> Ptr CFloat

p'VrDeviceInfo'chromaAbCorrection :: Ptr VrDeviceInfo -> Ptr CFloat
p'VrDeviceInfo'chromaAbCorrection Ptr VrDeviceInfo
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrDeviceInfo
p Int
48

p'VrDeviceInfo'chromaAbCorrection :: Ptr VrDeviceInfo -> Ptr CFloat

instance Storable VrDeviceInfo where
  sizeOf :: VrDeviceInfo -> Int
sizeOf VrDeviceInfo
_ = Int
64
  alignment :: VrDeviceInfo -> Int
alignment VrDeviceInfo
_ = Int
4
  peek :: Ptr VrDeviceInfo -> IO VrDeviceInfo
peek Ptr VrDeviceInfo
_p = do
    CInt
v0 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr VrDeviceInfo
_p Int
0
    CInt
v1 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr VrDeviceInfo
_p Int
4
    CFloat
v2 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr VrDeviceInfo
_p Int
8
    CFloat
v3 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr VrDeviceInfo
_p Int
12
    CFloat
v4 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr VrDeviceInfo
_p Int
16
    CFloat
v5 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr VrDeviceInfo
_p Int
20
    CFloat
v6 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr VrDeviceInfo
_p Int
24
    CFloat
v7 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr VrDeviceInfo
_p Int
28
    [CFloat]
v8 <- let s8 :: Int
s8 = forall a. Integral a => a -> a -> a
div Int
16 forall a b. (a -> b) -> a -> b
$ forall a. Storable a => a -> Int
sizeOf (forall a. HasCallStack => a
undefined :: CFloat) in forall a. Storable a => Int -> Ptr a -> IO [a]
peekArray Int
s8 (forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrDeviceInfo
_p Int
32)
    [CFloat]
v9 <- let s9 :: Int
s9 = forall a. Integral a => a -> a -> a
div Int
16 forall a b. (a -> b) -> a -> b
$ forall a. Storable a => a -> Int
sizeOf (forall a. HasCallStack => a
undefined :: CFloat) in forall a. Storable a => Int -> Ptr a -> IO [a]
peekArray Int
s9 (forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrDeviceInfo
_p Int
48)
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ CInt
-> CInt
-> CFloat
-> CFloat
-> CFloat
-> CFloat
-> CFloat
-> CFloat
-> [CFloat]
-> [CFloat]
-> VrDeviceInfo
VrDeviceInfo CInt
v0 CInt
v1 CFloat
v2 CFloat
v3 CFloat
v4 CFloat
v5 CFloat
v6 CFloat
v7 [CFloat]
v8 [CFloat]
v9
  poke :: Ptr VrDeviceInfo -> VrDeviceInfo -> IO ()
poke Ptr VrDeviceInfo
_p (VrDeviceInfo CInt
v0 CInt
v1 CFloat
v2 CFloat
v3 CFloat
v4 CFloat
v5 CFloat
v6 CFloat
v7 [CFloat]
v8 [CFloat]
v9) = do
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr VrDeviceInfo
_p Int
0 CInt
v0
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr VrDeviceInfo
_p Int
4 CInt
v1
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr VrDeviceInfo
_p Int
8 CFloat
v2
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr VrDeviceInfo
_p Int
12 CFloat
v3
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr VrDeviceInfo
_p Int
16 CFloat
v4
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr VrDeviceInfo
_p Int
20 CFloat
v5
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr VrDeviceInfo
_p Int
24 CFloat
v6
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr VrDeviceInfo
_p Int
28 CFloat
v7
    let s8 :: Int
s8 = forall a. Integral a => a -> a -> a
div Int
16 forall a b. (a -> b) -> a -> b
$ forall a. Storable a => a -> Int
sizeOf (forall a. HasCallStack => a
undefined :: CFloat)
    forall a. Storable a => Ptr a -> [a] -> IO ()
pokeArray (forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrDeviceInfo
_p Int
32) (forall a. Int -> [a] -> [a]
take Int
s8 [CFloat]
v8)
    let s9 :: Int
s9 = forall a. Integral a => a -> a -> a
div Int
16 forall a b. (a -> b) -> a -> b
$ forall a. Storable a => a -> Int
sizeOf (forall a. HasCallStack => a
undefined :: CFloat)
    forall a. Storable a => Ptr a -> [a] -> IO ()
pokeArray (forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrDeviceInfo
_p Int
48) (forall a. Int -> [a] -> [a]
take Int
s9 [CFloat]
v9)
    forall (m :: * -> *) a. Monad m => a -> m a
return ()

{- typedef struct VrStereoConfig {
            Matrix projection[2];
            Matrix viewOffset[2];
            float leftLensCenter[2];
            float rightLensCenter[2];
            float leftScreenCenter[2];
            float rightScreenCenter[2];
            float scale[2];
            float scaleIn[2];
        } VrStereoConfig; -}
data VrStereoConfig = VrStereoConfig
  { VrStereoConfig -> [Matrix]
vrStereoConfig'projection :: [Matrix],
    VrStereoConfig -> [Matrix]
vrStereoConfig'viewOffset :: [Matrix],
    VrStereoConfig -> [CFloat]
vrStereoConfig'leftLensCenter :: [CFloat],
    VrStereoConfig -> [CFloat]
vrStereoConfig'rightLensCenter :: [CFloat],
    VrStereoConfig -> [CFloat]
vrStereoConfig'leftScreenCenter :: [CFloat],
    VrStereoConfig -> [CFloat]
vrStereoConfig'rightScreenCenter :: [CFloat],
    VrStereoConfig -> [CFloat]
vrStereoConfig'scale :: [CFloat],
    VrStereoConfig -> [CFloat]
vrStereoConfig'scaleIn :: [CFloat]
  }
  deriving (VrStereoConfig -> VrStereoConfig -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: VrStereoConfig -> VrStereoConfig -> Bool
$c/= :: VrStereoConfig -> VrStereoConfig -> Bool
== :: VrStereoConfig -> VrStereoConfig -> Bool
$c== :: VrStereoConfig -> VrStereoConfig -> Bool
Eq, Int -> VrStereoConfig -> ShowS
[VrStereoConfig] -> ShowS
VrStereoConfig -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [VrStereoConfig] -> ShowS
$cshowList :: [VrStereoConfig] -> ShowS
show :: VrStereoConfig -> String
$cshow :: VrStereoConfig -> String
showsPrec :: Int -> VrStereoConfig -> ShowS
$cshowsPrec :: Int -> VrStereoConfig -> ShowS
Show)

p'VrStereoConfig'projection :: Ptr VrStereoConfig -> Ptr Matrix
p'VrStereoConfig'projection Ptr VrStereoConfig
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrStereoConfig
p Int
0

p'VrStereoConfig'projection :: Ptr VrStereoConfig -> Ptr Matrix

p'VrStereoConfig'viewOffset :: Ptr VrStereoConfig -> Ptr Matrix
p'VrStereoConfig'viewOffset Ptr VrStereoConfig
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrStereoConfig
p Int
128

p'VrStereoConfig'viewOffset :: Ptr VrStereoConfig -> Ptr Matrix

p'VrStereoConfig'leftLensCenter :: Ptr VrStereoConfig -> Ptr CFloat
p'VrStereoConfig'leftLensCenter Ptr VrStereoConfig
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrStereoConfig
p Int
256

p'VrStereoConfig'leftLensCenter :: Ptr VrStereoConfig -> Ptr CFloat

p'VrStereoConfig'rightLensCenter :: Ptr VrStereoConfig -> Ptr CFloat
p'VrStereoConfig'rightLensCenter Ptr VrStereoConfig
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrStereoConfig
p Int
264

p'VrStereoConfig'rightLensCenter :: Ptr VrStereoConfig -> Ptr CFloat

p'VrStereoConfig'leftScreenCenter :: Ptr VrStereoConfig -> Ptr CFloat
p'VrStereoConfig'leftScreenCenter Ptr VrStereoConfig
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrStereoConfig
p Int
272

p'VrStereoConfig'leftScreenCenter :: Ptr VrStereoConfig -> Ptr CFloat

p'VrStereoConfig'rightScreenCenter :: Ptr VrStereoConfig -> Ptr CFloat
p'VrStereoConfig'rightScreenCenter Ptr VrStereoConfig
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrStereoConfig
p Int
280

p'VrStereoConfig'rightScreenCenter :: Ptr VrStereoConfig -> Ptr CFloat

p'VrStereoConfig'scale :: Ptr VrStereoConfig -> Ptr CFloat
p'VrStereoConfig'scale Ptr VrStereoConfig
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrStereoConfig
p Int
288

p'VrStereoConfig'scale :: Ptr VrStereoConfig -> Ptr CFloat

p'VrStereoConfig'scaleIn :: Ptr VrStereoConfig -> Ptr CFloat
p'VrStereoConfig'scaleIn Ptr VrStereoConfig
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrStereoConfig
p Int
296

p'VrStereoConfig'scaleIn :: Ptr VrStereoConfig -> Ptr CFloat

instance Storable VrStereoConfig where
  sizeOf :: VrStereoConfig -> Int
sizeOf VrStereoConfig
_ = Int
304
  alignment :: VrStereoConfig -> Int
alignment VrStereoConfig
_ = Int
4
  peek :: Ptr VrStereoConfig -> IO VrStereoConfig
peek Ptr VrStereoConfig
_p = do
    [Matrix]
v0 <- let s0 :: Int
s0 = forall a. Integral a => a -> a -> a
div Int
128 forall a b. (a -> b) -> a -> b
$ forall a. Storable a => a -> Int
sizeOf (forall a. HasCallStack => a
undefined :: Matrix) in forall a. Storable a => Int -> Ptr a -> IO [a]
peekArray Int
s0 (forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrStereoConfig
_p Int
0)
    [Matrix]
v1 <- let s1 :: Int
s1 = forall a. Integral a => a -> a -> a
div Int
128 forall a b. (a -> b) -> a -> b
$ forall a. Storable a => a -> Int
sizeOf (forall a. HasCallStack => a
undefined :: Matrix) in forall a. Storable a => Int -> Ptr a -> IO [a]
peekArray Int
s1 (forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrStereoConfig
_p Int
128)
    [CFloat]
v2 <- let s2 :: Int
s2 = forall a. Integral a => a -> a -> a
div Int
8 forall a b. (a -> b) -> a -> b
$ forall a. Storable a => a -> Int
sizeOf (forall a. HasCallStack => a
undefined :: CFloat) in forall a. Storable a => Int -> Ptr a -> IO [a]
peekArray Int
s2 (forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrStereoConfig
_p Int
256)
    [CFloat]
v3 <- let s3 :: Int
s3 = forall a. Integral a => a -> a -> a
div Int
8 forall a b. (a -> b) -> a -> b
$ forall a. Storable a => a -> Int
sizeOf (forall a. HasCallStack => a
undefined :: CFloat) in forall a. Storable a => Int -> Ptr a -> IO [a]
peekArray Int
s3 (forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrStereoConfig
_p Int
264)
    [CFloat]
v4 <- let s4 :: Int
s4 = forall a. Integral a => a -> a -> a
div Int
8 forall a b. (a -> b) -> a -> b
$ forall a. Storable a => a -> Int
sizeOf (forall a. HasCallStack => a
undefined :: CFloat) in forall a. Storable a => Int -> Ptr a -> IO [a]
peekArray Int
s4 (forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrStereoConfig
_p Int
272)
    [CFloat]
v5 <- let s5 :: Int
s5 = forall a. Integral a => a -> a -> a
div Int
8 forall a b. (a -> b) -> a -> b
$ forall a. Storable a => a -> Int
sizeOf (forall a. HasCallStack => a
undefined :: CFloat) in forall a. Storable a => Int -> Ptr a -> IO [a]
peekArray Int
s5 (forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrStereoConfig
_p Int
280)
    [CFloat]
v6 <- let s6 :: Int
s6 = forall a. Integral a => a -> a -> a
div Int
8 forall a b. (a -> b) -> a -> b
$ forall a. Storable a => a -> Int
sizeOf (forall a. HasCallStack => a
undefined :: CFloat) in forall a. Storable a => Int -> Ptr a -> IO [a]
peekArray Int
s6 (forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrStereoConfig
_p Int
288)
    [CFloat]
v7 <- let s7 :: Int
s7 = forall a. Integral a => a -> a -> a
div Int
8 forall a b. (a -> b) -> a -> b
$ forall a. Storable a => a -> Int
sizeOf (forall a. HasCallStack => a
undefined :: CFloat) in forall a. Storable a => Int -> Ptr a -> IO [a]
peekArray Int
s7 (forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrStereoConfig
_p Int
296)
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ [Matrix]
-> [Matrix]
-> [CFloat]
-> [CFloat]
-> [CFloat]
-> [CFloat]
-> [CFloat]
-> [CFloat]
-> VrStereoConfig
VrStereoConfig [Matrix]
v0 [Matrix]
v1 [CFloat]
v2 [CFloat]
v3 [CFloat]
v4 [CFloat]
v5 [CFloat]
v6 [CFloat]
v7
  poke :: Ptr VrStereoConfig -> VrStereoConfig -> IO ()
poke Ptr VrStereoConfig
_p (VrStereoConfig [Matrix]
v0 [Matrix]
v1 [CFloat]
v2 [CFloat]
v3 [CFloat]
v4 [CFloat]
v5 [CFloat]
v6 [CFloat]
v7) = do
    let s0 :: Int
s0 = forall a. Integral a => a -> a -> a
div Int
128 forall a b. (a -> b) -> a -> b
$ forall a. Storable a => a -> Int
sizeOf (forall a. HasCallStack => a
undefined :: Matrix)
    forall a. Storable a => Ptr a -> [a] -> IO ()
pokeArray (forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrStereoConfig
_p Int
0) (forall a. Int -> [a] -> [a]
take Int
s0 [Matrix]
v0)
    let s1 :: Int
s1 = forall a. Integral a => a -> a -> a
div Int
128 forall a b. (a -> b) -> a -> b
$ forall a. Storable a => a -> Int
sizeOf (forall a. HasCallStack => a
undefined :: Matrix)
    forall a. Storable a => Ptr a -> [a] -> IO ()
pokeArray (forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrStereoConfig
_p Int
128) (forall a. Int -> [a] -> [a]
take Int
s1 [Matrix]
v1)
    let s2 :: Int
s2 = forall a. Integral a => a -> a -> a
div Int
8 forall a b. (a -> b) -> a -> b
$ forall a. Storable a => a -> Int
sizeOf (forall a. HasCallStack => a
undefined :: CFloat)
    forall a. Storable a => Ptr a -> [a] -> IO ()
pokeArray (forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrStereoConfig
_p Int
256) (forall a. Int -> [a] -> [a]
take Int
s2 [CFloat]
v2)
    let s3 :: Int
s3 = forall a. Integral a => a -> a -> a
div Int
8 forall a b. (a -> b) -> a -> b
$ forall a. Storable a => a -> Int
sizeOf (forall a. HasCallStack => a
undefined :: CFloat)
    forall a. Storable a => Ptr a -> [a] -> IO ()
pokeArray (forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrStereoConfig
_p Int
264) (forall a. Int -> [a] -> [a]
take Int
s3 [CFloat]
v3)
    let s4 :: Int
s4 = forall a. Integral a => a -> a -> a
div Int
8 forall a b. (a -> b) -> a -> b
$ forall a. Storable a => a -> Int
sizeOf (forall a. HasCallStack => a
undefined :: CFloat)
    forall a. Storable a => Ptr a -> [a] -> IO ()
pokeArray (forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrStereoConfig
_p Int
272) (forall a. Int -> [a] -> [a]
take Int
s4 [CFloat]
v4)
    let s5 :: Int
s5 = forall a. Integral a => a -> a -> a
div Int
8 forall a b. (a -> b) -> a -> b
$ forall a. Storable a => a -> Int
sizeOf (forall a. HasCallStack => a
undefined :: CFloat)
    forall a. Storable a => Ptr a -> [a] -> IO ()
pokeArray (forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrStereoConfig
_p Int
280) (forall a. Int -> [a] -> [a]
take Int
s5 [CFloat]
v5)
    let s6 :: Int
s6 = forall a. Integral a => a -> a -> a
div Int
8 forall a b. (a -> b) -> a -> b
$ forall a. Storable a => a -> Int
sizeOf (forall a. HasCallStack => a
undefined :: CFloat)
    forall a. Storable a => Ptr a -> [a] -> IO ()
pokeArray (forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrStereoConfig
_p Int
288) (forall a. Int -> [a] -> [a]
take Int
s6 [CFloat]
v6)
    let s7 :: Int
s7 = forall a. Integral a => a -> a -> a
div Int
8 forall a b. (a -> b) -> a -> b
$ forall a. Storable a => a -> Int
sizeOf (forall a. HasCallStack => a
undefined :: CFloat)
    forall a. Storable a => Ptr a -> [a] -> IO ()
pokeArray (forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr VrStereoConfig
_p Int
296) (forall a. Int -> [a] -> [a]
take Int
s7 [CFloat]
v7)
    forall (m :: * -> *) a. Monad m => a -> m a
return ()

{- typedef struct FilePathList {
            unsigned int capacity; unsigned int count; char * * paths;
        } FilePathList; -}
data FilePathList = FilePathList
  { FilePathList -> CUInt
filePathlist'capacity :: CUInt,
    FilePathList -> CUInt
filePathlist'count :: CUInt,
    FilePathList -> Ptr (Ptr CChar)
filePathList'paths :: Ptr CString
  }
  deriving (FilePathList -> FilePathList -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: FilePathList -> FilePathList -> Bool
$c/= :: FilePathList -> FilePathList -> Bool
== :: FilePathList -> FilePathList -> Bool
$c== :: FilePathList -> FilePathList -> Bool
Eq, Int -> FilePathList -> ShowS
[FilePathList] -> ShowS
FilePathList -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [FilePathList] -> ShowS
$cshowList :: [FilePathList] -> ShowS
show :: FilePathList -> String
$cshow :: FilePathList -> String
showsPrec :: Int -> FilePathList -> ShowS
$cshowsPrec :: Int -> FilePathList -> ShowS
Show)

p'FilePathList'capacity :: Ptr FilePathList -> Ptr CUInt
p'FilePathList'capacity Ptr FilePathList
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr FilePathList
p Int
0

p'FilePathList'capacity :: Ptr FilePathList -> Ptr CUInt

p'FilePathList'count :: Ptr FilePathList -> Ptr CUInt
p'FilePathList'count Ptr FilePathList
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr FilePathList
p Int
4

p'FilePathList'count :: Ptr FilePathList -> Ptr CUInt

p'FilePathList'paths :: Ptr FilePathList -> Ptr (Ptr (Ptr CChar))
p'FilePathList'paths Ptr FilePathList
p = forall a b. Ptr a -> Int -> Ptr b
plusPtr Ptr FilePathList
p Int
8

p'FilePathList'paths :: Ptr FilePathList -> Ptr (Ptr CString)

instance Storable FilePathList where
  sizeOf :: FilePathList -> Int
sizeOf FilePathList
_ = Int
12
  alignment :: FilePathList -> Int
alignment FilePathList
_ = Int
4
  peek :: Ptr FilePathList -> IO FilePathList
peek Ptr FilePathList
_p = do
    CUInt
v0 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr FilePathList
_p Int
0
    CUInt
v1 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr FilePathList
_p Int
4
    Ptr (Ptr CChar)
v2 <- forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr FilePathList
_p Int
8
    forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ CUInt -> CUInt -> Ptr (Ptr CChar) -> FilePathList
FilePathList CUInt
v0 CUInt
v1 Ptr (Ptr CChar)
v2
  poke :: Ptr FilePathList -> FilePathList -> IO ()
poke Ptr FilePathList
_p (FilePathList CUInt
v0 CUInt
v1 Ptr (Ptr CChar)
v2) = do
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr FilePathList
_p Int
0 CUInt
v0
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr FilePathList
_p Int
4 CUInt
v1
    forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr FilePathList
_p Int
8 Ptr (Ptr CChar)
v2
    forall (m :: * -> *) a. Monad m => a -> m a
return ()