{-# LINE 1 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE AllowAmbiguousTypes, ScopedTypeVariables, GADTs #-}
{-# LANGUAGE UnboxedTuples, MagicHash #-}
{-# LANGUAGE PatternSynonyms, RecordWildCards #-}
{-# OPTIONS_GHC -Wno-name-shadowing #-}
module Godot.Gdnative.Internal.Gdnative where
import qualified Foreign.C.Types as C2HSImp
import qualified Foreign.ForeignPtr as C2HSImp
import qualified Foreign.Marshal.Utils as C2HSImp
import qualified Foreign.Ptr as C2HSImp
import qualified Foreign.Storable as C2HSImp
import Control.Exception
import Control.Monad
import Data.Bits
import Data.Coerce
import Data.IORef
import Foreign
import Foreign.C
import System.IO.Unsafe
data GodotError = GodotOk
| GodotFailed
| GodotErrUnavailable
| GodotErrUnconfigured
| GodotErrUnauthorized
| GodotErrParameterRangeError
| GodotErrOutOfMemory
| GodotErrFileNotFound
| GodotErrFileBadDrive
| GodotErrFileBadPath
| GodotErrFileNoPermission
| GodotErrFileAlreadyInUse
| GodotErrFileCantOpen
| GodotErrFileCantWrite
| GodotErrFileCantRead
| GodotErrFileUnrecognized
| GodotErrFileCorrupt
| GodotErrFileMissingDependencies
| GodotErrFileEof
| GodotErrCantOpen
| GodotErrCantCreate
| GodotErrQueryFailed
| GodotErrAlreadyInUse
| GodotErrLocked
| GodotErrTimeout
| GodotErrCantConnect
| GodotErrCantResolve
| GodotErrConnectionError
| GodotErrCantAcquireResource
| GodotErrCantFork
| GodotErrInvalidData
| GodotErrInvalidParameter
| GodotErrAlreadyExists
| GodotErrDoesNotExist
| GodotErrDatabaseCantRead
| GodotErrDatabaseCantWrite
| GodotErrCompilationFailed
| GodotErrMethodNotFound
| GodotErrLinkFailed
| GodotErrScriptFailed
| GodotErrCyclicLink
| GodotErrInvalidDeclaration
| GodotErrDuplicateSymbol
| GodotErrParseError
| GodotErrBusy
| GodotErrSkip
| GodotErrHelp
| GodotErrBug
| GodotErrPrinterOnFire
deriving (Enum,Show,Eq,Ord,Bounded)
{-# LINE 21 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
data GodotVariantType = GodotVariantTypeNil
| GodotVariantTypeBool
| GodotVariantTypeInt
| GodotVariantTypeReal
| GodotVariantTypeString
| GodotVariantTypeVector2
| GodotVariantTypeRect2
| GodotVariantTypeVector3
| GodotVariantTypeTransform2d
| GodotVariantTypePlane
| GodotVariantTypeQuat
| GodotVariantTypeAabb
| GodotVariantTypeBasis
| GodotVariantTypeTransform
| GodotVariantTypeColor
| GodotVariantTypeNodePath
| GodotVariantTypeRid
| GodotVariantTypeObject
| GodotVariantTypeDictionary
| GodotVariantTypeArray
| GodotVariantTypePoolByteArray
| GodotVariantTypePoolIntArray
| GodotVariantTypePoolRealArray
| GodotVariantTypePoolStringArray
| GodotVariantTypePoolVector2Array
| GodotVariantTypePoolVector3Array
| GodotVariantTypePoolColorArray
deriving (Enum,Show,Eq,Ord,Bounded)
{-# LINE 24 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
data GodotVariantCallErrorError = GodotCallErrorCallOk
| GodotCallErrorCallErrorInvalidMethod
| GodotCallErrorCallErrorInvalidArgument
| GodotCallErrorCallErrorTooManyArguments
| GodotCallErrorCallErrorTooFewArguments
| GodotCallErrorCallErrorInstanceIsNull
deriving (Enum,Show,Eq,Ord,Bounded)
{-# LINE 27 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
data GodotVector3Axis = GodotVector3AxisX
| GodotVector3AxisY
| GodotVector3AxisZ
deriving (Enum,Show,Eq,Ord,Bounded)
{-# LINE 30 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
data GodotVariantOperator = GodotVariantOpEqual
| GodotVariantOpNotEqual
| GodotVariantOpLess
| GodotVariantOpLessEqual
| GodotVariantOpGreater
| GodotVariantOpGreaterEqual
| GodotVariantOpAdd
| GodotVariantOpSubtract
| GodotVariantOpMultiply
| GodotVariantOpDivide
| GodotVariantOpNegate
| GodotVariantOpPositive
| GodotVariantOpModule
| GodotVariantOpStringConcat
| GodotVariantOpShiftLeft
| GodotVariantOpShiftRight
| GodotVariantOpBitAnd
| GodotVariantOpBitOr
| GodotVariantOpBitXor
| GodotVariantOpBitNegate
| GodotVariantOpAnd
| GodotVariantOpOr
| GodotVariantOpXor
| GodotVariantOpNot
| GodotVariantOpIn
| GodotVariantOpMax
deriving (Enum,Show,Eq,Ord,Bounded)
{-# LINE 33 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
{-# LINE 35 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
type GodotBool = (C2HSImp.CInt)
{-# LINE 36 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
{-# LINE 37 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
type GodotInt = (C2HSImp.CInt)
{-# LINE 38 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
{-# LINE 39 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
type GodotReal = (C2HSImp.CFloat)
{-# LINE 40 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
{-# LINE 41 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
type GodotCharType = (C2HSImp.CInt)
{-# LINE 42 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
newtype GodotAabb = GodotAabb (C2HSImp.ForeignPtr (GodotAabb))
withGodotAabb :: GodotAabb -> (C2HSImp.Ptr GodotAabb -> IO b) -> IO b
withGodotAabb (GodotAabb fptr) = C2HSImp.withForeignPtr fptr
{-# LINE 44 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotAabb
newtype GodotArray = GodotArray (C2HSImp.ForeignPtr (GodotArray))
withGodotArray :: GodotArray -> (C2HSImp.Ptr GodotArray -> IO b) -> IO b
withGodotArray (GodotArray fptr) = C2HSImp.withForeignPtr fptr
{-# LINE 47 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotArray
newtype GodotBasis = GodotBasis (C2HSImp.ForeignPtr (GodotBasis))
withGodotBasis :: GodotBasis -> (C2HSImp.Ptr GodotBasis -> IO b) -> IO b
withGodotBasis (GodotBasis fptr) = C2HSImp.withForeignPtr fptr
{-# LINE 50 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotBasis
newtype GodotCharString = GodotCharString (C2HSImp.ForeignPtr (GodotCharString))
withGodotCharString :: GodotCharString -> (C2HSImp.Ptr GodotCharString -> IO b) -> IO b
withGodotCharString (GodotCharString fptr) = C2HSImp.withForeignPtr fptr
{-# LINE 53 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotCharString
newtype GodotColor = GodotColor (C2HSImp.ForeignPtr (GodotColor))
withGodotColor :: GodotColor -> (C2HSImp.Ptr GodotColor -> IO b) -> IO b
withGodotColor (GodotColor fptr) = C2HSImp.withForeignPtr fptr
{-# LINE 56 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotColor
newtype GodotDictionary = GodotDictionary (C2HSImp.ForeignPtr (GodotDictionary))
withGodotDictionary :: GodotDictionary -> (C2HSImp.Ptr GodotDictionary -> IO b) -> IO b
withGodotDictionary (GodotDictionary fptr) = C2HSImp.withForeignPtr fptr
{-# LINE 59 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotDictionary
newtype GodotMethodBind = GodotMethodBind (C2HSImp.ForeignPtr (GodotMethodBind))
withGodotMethodBind :: GodotMethodBind -> (C2HSImp.Ptr GodotMethodBind -> IO b) -> IO b
withGodotMethodBind (GodotMethodBind fptr) = C2HSImp.withForeignPtr fptr
{-# LINE 62 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotMethodBind
newtype GodotNodePath = GodotNodePath (C2HSImp.ForeignPtr (GodotNodePath))
withGodotNodePath :: GodotNodePath -> (C2HSImp.Ptr GodotNodePath -> IO b) -> IO b
withGodotNodePath (GodotNodePath fptr) = C2HSImp.withForeignPtr fptr
{-# LINE 65 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotNodePath
newtype GodotPlane = GodotPlane (C2HSImp.ForeignPtr (GodotPlane))
withGodotPlane :: GodotPlane -> (C2HSImp.Ptr GodotPlane -> IO b) -> IO b
withGodotPlane (GodotPlane fptr) = C2HSImp.withForeignPtr fptr
{-# LINE 68 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotPlane
newtype GodotPoolArrayReadAccess = GodotPoolArrayReadAccess (C2HSImp.ForeignPtr (GodotPoolArrayReadAccess))
withGodotPoolArrayReadAccess :: GodotPoolArrayReadAccess -> (C2HSImp.Ptr GodotPoolArrayReadAccess -> IO b) -> IO b
withGodotPoolArrayReadAccess (GodotPoolArrayReadAccess fptr) = C2HSImp.withForeignPtr fptr
{-# LINE 71 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotPoolArrayReadAccess
newtype GodotPoolArrayWriteAccess = GodotPoolArrayWriteAccess (C2HSImp.ForeignPtr (GodotPoolArrayWriteAccess))
withGodotPoolArrayWriteAccess :: GodotPoolArrayWriteAccess -> (C2HSImp.Ptr GodotPoolArrayWriteAccess -> IO b) -> IO b
withGodotPoolArrayWriteAccess (GodotPoolArrayWriteAccess fptr) = C2HSImp.withForeignPtr fptr
{-# LINE 74 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotPoolArrayWriteAccess
newtype GodotPoolByteArray = GodotPoolByteArray (C2HSImp.ForeignPtr (GodotPoolByteArray))
withGodotPoolByteArray :: GodotPoolByteArray -> (C2HSImp.Ptr GodotPoolByteArray -> IO b) -> IO b
withGodotPoolByteArray (GodotPoolByteArray fptr) = C2HSImp.withForeignPtr fptr
{-# LINE 77 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotPoolByteArray
newtype GodotPoolColorArray = GodotPoolColorArray (C2HSImp.ForeignPtr (GodotPoolColorArray))
withGodotPoolColorArray :: GodotPoolColorArray -> (C2HSImp.Ptr GodotPoolColorArray -> IO b) -> IO b
withGodotPoolColorArray (GodotPoolColorArray fptr) = C2HSImp.withForeignPtr fptr
{-# LINE 80 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotPoolColorArray
newtype GodotPoolIntArray = GodotPoolIntArray (C2HSImp.ForeignPtr (GodotPoolIntArray))
withGodotPoolIntArray :: GodotPoolIntArray -> (C2HSImp.Ptr GodotPoolIntArray -> IO b) -> IO b
withGodotPoolIntArray (GodotPoolIntArray fptr) = C2HSImp.withForeignPtr fptr
{-# LINE 83 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotPoolIntArray
newtype GodotPoolRealArray = GodotPoolRealArray (C2HSImp.ForeignPtr (GodotPoolRealArray))
withGodotPoolRealArray :: GodotPoolRealArray -> (C2HSImp.Ptr GodotPoolRealArray -> IO b) -> IO b
withGodotPoolRealArray (GodotPoolRealArray fptr) = C2HSImp.withForeignPtr fptr
{-# LINE 86 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotPoolRealArray
newtype GodotPoolStringArray = GodotPoolStringArray (C2HSImp.ForeignPtr (GodotPoolStringArray))
withGodotPoolStringArray :: GodotPoolStringArray -> (C2HSImp.Ptr GodotPoolStringArray -> IO b) -> IO b
withGodotPoolStringArray (GodotPoolStringArray fptr) = C2HSImp.withForeignPtr fptr
{-# LINE 89 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotPoolStringArray
newtype GodotPoolVector2Array = GodotPoolVector2Array (C2HSImp.ForeignPtr (GodotPoolVector2Array))
withGodotPoolVector2Array :: GodotPoolVector2Array -> (C2HSImp.Ptr GodotPoolVector2Array -> IO b) -> IO b
withGodotPoolVector2Array (GodotPoolVector2Array fptr) = C2HSImp.withForeignPtr fptr
{-# LINE 92 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotPoolVector2Array
newtype GodotPoolVector3Array = GodotPoolVector3Array (C2HSImp.ForeignPtr (GodotPoolVector3Array))
withGodotPoolVector3Array :: GodotPoolVector3Array -> (C2HSImp.Ptr GodotPoolVector3Array -> IO b) -> IO b
withGodotPoolVector3Array (GodotPoolVector3Array fptr) = C2HSImp.withForeignPtr fptr
{-# LINE 95 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotPoolVector3Array
newtype GodotQuat = GodotQuat (C2HSImp.ForeignPtr (GodotQuat))
withGodotQuat :: GodotQuat -> (C2HSImp.Ptr GodotQuat -> IO b) -> IO b
withGodotQuat (GodotQuat fptr) = C2HSImp.withForeignPtr fptr
{-# LINE 98 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotQuat
newtype GodotRect2 = GodotRect2 (C2HSImp.ForeignPtr (GodotRect2))
withGodotRect2 :: GodotRect2 -> (C2HSImp.Ptr GodotRect2 -> IO b) -> IO b
withGodotRect2 (GodotRect2 fptr) = C2HSImp.withForeignPtr fptr
{-# LINE 101 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotRect2
newtype GodotRid = GodotRid (C2HSImp.ForeignPtr (GodotRid))
withGodotRid :: GodotRid -> (C2HSImp.Ptr GodotRid -> IO b) -> IO b
withGodotRid (GodotRid fptr) = C2HSImp.withForeignPtr fptr
{-# LINE 104 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotRid
newtype GodotString = GodotString (C2HSImp.ForeignPtr (GodotString))
withGodotString :: GodotString -> (C2HSImp.Ptr GodotString -> IO b) -> IO b
withGodotString (GodotString fptr) = C2HSImp.withForeignPtr fptr
{-# LINE 107 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotString
newtype GodotStringName = GodotStringName (C2HSImp.ForeignPtr (GodotStringName))
withGodotStringName :: GodotStringName -> (C2HSImp.Ptr GodotStringName -> IO b) -> IO b
withGodotStringName (GodotStringName fptr) = C2HSImp.withForeignPtr fptr
{-# LINE 110 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotStringName
newtype GodotTransform = GodotTransform (C2HSImp.ForeignPtr (GodotTransform))
withGodotTransform :: GodotTransform -> (C2HSImp.Ptr GodotTransform -> IO b) -> IO b
withGodotTransform (GodotTransform fptr) = C2HSImp.withForeignPtr fptr
{-# LINE 113 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotTransform
newtype GodotTransform2d = GodotTransform2d (C2HSImp.ForeignPtr (GodotTransform2d))
withGodotTransform2d :: GodotTransform2d -> (C2HSImp.Ptr GodotTransform2d -> IO b) -> IO b
withGodotTransform2d (GodotTransform2d fptr) = C2HSImp.withForeignPtr fptr
{-# LINE 116 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotTransform2d
newtype GodotVariant = GodotVariant (C2HSImp.ForeignPtr (GodotVariant))
withGodotVariant :: GodotVariant -> (C2HSImp.Ptr GodotVariant -> IO b) -> IO b
withGodotVariant (GodotVariant fptr) = C2HSImp.withForeignPtr fptr
{-# LINE 119 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotVariant
newtype GodotVector2 = GodotVector2 (C2HSImp.ForeignPtr (GodotVector2))
withGodotVector2 :: GodotVector2 -> (C2HSImp.Ptr GodotVector2 -> IO b) -> IO b
withGodotVector2 (GodotVector2 fptr) = C2HSImp.withForeignPtr fptr
{-# LINE 122 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotVector2
newtype GodotVector3 = GodotVector3 (C2HSImp.ForeignPtr (GodotVector3))
withGodotVector3 :: GodotVector3 -> (C2HSImp.Ptr GodotVector3 -> IO b) -> IO b
withGodotVector3 (GodotVector3 fptr) = C2HSImp.withForeignPtr fptr
{-# LINE 125 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotVector3
type GodotPoolByteArrayReadAccess = GodotPoolArrayReadAccess
type GodotPoolByteArrayWriteAccess = GodotPoolArrayWriteAccess
type GodotPoolColorArrayReadAccess = GodotPoolArrayReadAccess
type GodotPoolColorArrayWriteAccess = GodotPoolArrayWriteAccess
type GodotPoolIntArrayReadAccess = GodotPoolArrayReadAccess
type GodotPoolIntArrayWriteAccess = GodotPoolArrayWriteAccess
type GodotPoolRealArrayReadAccess = GodotPoolArrayReadAccess
type GodotPoolRealArrayWriteAccess = GodotPoolArrayWriteAccess
type GodotPoolStringArrayReadAccess = GodotPoolArrayReadAccess
type GodotPoolStringArrayWriteAccess = GodotPoolArrayWriteAccess
type GodotPoolVector2ArrayReadAccess = GodotPoolArrayReadAccess
type GodotPoolVector2ArrayWriteAccess = GodotPoolArrayWriteAccess
type GodotPoolVector3ArrayReadAccess = GodotPoolArrayReadAccess
type GodotPoolVector3ArrayWriteAccess = GodotPoolArrayWriteAccess
class OpaqueStorable a where
opaqueSizeOf :: Int
instance OpaqueStorable GodotAabb where
opaqueSizeOf = 24
{-# LINE 147 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
instance OpaqueStorable GodotArray where
opaqueSizeOf = 8
{-# LINE 151 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
instance OpaqueStorable GodotBasis where
opaqueSizeOf = 36
{-# LINE 155 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
instance OpaqueStorable GodotCharString where
opaqueSizeOf = 8
{-# LINE 159 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
instance OpaqueStorable GodotColor where
opaqueSizeOf = 16
{-# LINE 163 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
instance OpaqueStorable GodotDictionary where
opaqueSizeOf = 8
{-# LINE 167 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
instance OpaqueStorable GodotMethodBind where
opaqueSizeOf = 4
{-# LINE 171 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
instance OpaqueStorable GodotNodePath where
opaqueSizeOf = 8
{-# LINE 175 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
instance OpaqueStorable GodotPlane where
opaqueSizeOf = 16
{-# LINE 179 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
instance OpaqueStorable GodotPoolArrayReadAccess where
opaqueSizeOf = 4
{-# LINE 183 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
instance OpaqueStorable GodotPoolArrayWriteAccess where
opaqueSizeOf = 4
{-# LINE 187 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
instance OpaqueStorable GodotPoolByteArray where
opaqueSizeOf = 8
{-# LINE 191 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
instance OpaqueStorable GodotPoolColorArray where
opaqueSizeOf = 8
{-# LINE 195 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
instance OpaqueStorable GodotPoolIntArray where
opaqueSizeOf = 8
{-# LINE 199 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
instance OpaqueStorable GodotPoolRealArray where
opaqueSizeOf = 8
{-# LINE 203 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
instance OpaqueStorable GodotPoolStringArray where
opaqueSizeOf = 8
{-# LINE 207 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
instance OpaqueStorable GodotPoolVector2Array where
opaqueSizeOf = 8
{-# LINE 211 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
instance OpaqueStorable GodotPoolVector3Array where
opaqueSizeOf = 8
{-# LINE 215 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
instance OpaqueStorable GodotQuat where
opaqueSizeOf = 16
{-# LINE 219 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
instance OpaqueStorable GodotRect2 where
opaqueSizeOf = 16
{-# LINE 223 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
instance OpaqueStorable GodotRid where
opaqueSizeOf = 8
{-# LINE 227 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
instance OpaqueStorable GodotString where
opaqueSizeOf = 8
{-# LINE 231 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
instance OpaqueStorable GodotStringName where
opaqueSizeOf = 8
{-# LINE 235 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
instance OpaqueStorable GodotTransform where
opaqueSizeOf = 48
{-# LINE 239 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
instance OpaqueStorable GodotTransform2d where
opaqueSizeOf = 24
{-# LINE 243 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
instance OpaqueStorable GodotVariant where
opaqueSizeOf = 24
{-# LINE 247 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
instance OpaqueStorable GodotVector2 where
opaqueSizeOf = 8
{-# LINE 251 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
instance OpaqueStorable GodotVector3 where
opaqueSizeOf = 12
{-# LINE 255 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
data GodotVariantCallError = GodotVariantCallError
{ variantCallErrorError :: !GodotVariantCallErrorError
, variantCallErrorArgument :: !(Maybe CInt)
, variantCallErrorExpected :: !(Maybe GodotVariantType)
} deriving (Show, Eq, Ord)
instance Exception GodotVariantCallError
type GodotVariantCallErrorPtr = C2HSImp.Ptr (GodotVariantCallError)
{-# LINE 266 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
instance Storable GodotVariantCallError where
sizeOf _ = 12
{-# LINE 269 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
alignment _ = 4
{-# LINE 270 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
peek ptr = do
err <- (toEnum . fromIntegral) <$> (\ptr -> do {C2HSImp.peekByteOff ptr 0 :: IO C2HSImp.CInt}) ptr
case err of
GodotCallErrorCallErrorInvalidArgument ->
GodotVariantCallError err
<$> (Just <$> (\ptr -> do {C2HSImp.peekByteOff ptr 4 :: IO C2HSImp.CInt}) ptr)
<*> ((Just . toEnum . fromIntegral) <$> (\ptr -> do {C2HSImp.peekByteOff ptr 8 :: IO C2HSImp.CInt}) ptr)
_ -> return $ GodotVariantCallError err Nothing Nothing
poke ptr a = error "can't poke GodotVariantCallError"
newtype GodotGdnativeApiStruct = GodotGdnativeApiStruct (C2HSImp.Ptr (GodotGdnativeApiStruct))
{-# LINE 281 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotGdnativeApiStruct
deriving newtype instance Storable GodotGdnativeApiStruct
newtype GodotGdnativeCoreApiStruct = GodotGdnativeCoreApiStruct (C2HSImp.Ptr (GodotGdnativeCoreApiStruct))
{-# LINE 285 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotGdnativeCoreApiStruct
deriving newtype instance Storable GodotGdnativeCoreApiStruct
newtype GodotGdnativeCore11ApiStruct = GodotGdnativeCore11ApiStruct (C2HSImp.Ptr (GodotGdnativeCore11ApiStruct))
{-# LINE 289 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotGdnativeCore11ApiStruct
deriving newtype instance Storable GodotGdnativeCore11ApiStruct
newtype GodotGdnativeExtNativescriptApiStruct = GodotGdnativeExtNativescriptApiStruct (C2HSImp.Ptr (GodotGdnativeExtNativescriptApiStruct))
{-# LINE 293 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotGdnativeExtNativescriptApiStruct
deriving newtype instance Storable GodotGdnativeExtNativescriptApiStruct
newtype GodotGdnativeExtNativescript11ApiStruct = GodotGdnativeExtNativescript11ApiStruct (C2HSImp.Ptr (GodotGdnativeExtNativescript11ApiStruct))
{-# LINE 297 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotGdnativeExtNativescript11ApiStruct
deriving newtype instance Storable GodotGdnativeExtNativescript11ApiStruct
newtype GodotGdnativeExtPluginscriptApiStruct = GodotGdnativeExtPluginscriptApiStruct (C2HSImp.Ptr (GodotGdnativeExtPluginscriptApiStruct))
{-# LINE 301 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotGdnativeExtPluginscriptApiStruct
deriving newtype instance Storable GodotGdnativeExtPluginscriptApiStruct
newtype GodotGdnativeExtArvrApiStruct = GodotGdnativeExtArvrApiStruct (C2HSImp.Ptr (GodotGdnativeExtArvrApiStruct))
{-# LINE 305 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Eq GodotGdnativeExtArvrApiStruct
deriving newtype instance Storable GodotGdnativeExtArvrApiStruct
type ReportVersionMismatchFunc = GodotObject -> CString -> Word64 -> Word64 -> IO ()
type ReportLoadingErrorFunc = GodotObject -> CString -> IO ()
newtype GodotObject = GodotObject (C2HSImp.Ptr (GodotObject))
{-# LINE 313 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
deriving newtype instance Show GodotObject
deriving newtype instance Eq GodotObject
deriving newtype instance Storable GodotObject
data GodotGdnativeInitOptions = GodotGdnativeInitOptions
{ gdnativeInitOptionsInEditor :: !Bool
, gdnativeInitOptionsCoreApiHash :: !Word64
, gdnativeInitOptionsEditorApiHash :: !Word64
, gdnativeInitOptionsNoApiHash :: !Word64
, gdnativeInitOptionsReportVersionMismatch :: !ReportVersionMismatchFunc
, gdnativeInitOptionsReportLoadingError :: !ReportLoadingErrorFunc
, gdnativeInitOptionsGdNativeLibrary :: !GodotObject
, gdnativeInitOptionsApiStruct :: !GodotGdnativeCoreApiStruct
, gdnativeInitOptionsActiveLibraryPath :: !GodotString
}
foreign import ccall "dynamic" mkReportVersionMismatchFunc :: FunPtr ReportVersionMismatchFunc -> ReportVersionMismatchFunc
foreign import ccall "dynamic" mkReportLoadingErrorFunc :: FunPtr ReportLoadingErrorFunc -> ReportLoadingErrorFunc
instance Storable GodotGdnativeInitOptions where
sizeOf _ = 72
{-# LINE 336 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
alignment _ = 8
{-# LINE 337 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
peek ptr = GodotGdnativeInitOptions
<$> (\ptr -> do {C2HSImp.toBool `fmap` (C2HSImp.peekByteOff ptr 0 :: IO C2HSImp.CInt)}) ptr
<*> (fromIntegral <$> (\ptr -> do {C2HSImp.peekByteOff ptr 8 :: IO C2HSImp.CULong}) ptr)
<*> (fromIntegral <$> (\ptr -> do {C2HSImp.peekByteOff ptr 16 :: IO C2HSImp.CULong}) ptr)
<*> (fromIntegral <$> (\ptr -> do {C2HSImp.peekByteOff ptr 24 :: IO C2HSImp.CULong}) ptr)
<*> ((mkReportVersionMismatchFunc . castFunPtrVersion) <$> (\ptr -> do {C2HSImp.peekByteOff ptr 32 :: IO (C2HSImp.FunPtr ((GodotObject) -> ((C2HSImp.Ptr C2HSImp.CChar) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO ()))))))}) ptr)
<*> (mkReportLoadingErrorFunc <$> (\ptr -> do {C2HSImp.peekByteOff ptr 40 :: IO (C2HSImp.FunPtr ((GodotObject) -> ((C2HSImp.Ptr C2HSImp.CChar) -> (IO ()))))}) ptr)
<*> (\ptr -> do {C2HSImp.peekByteOff ptr 48 :: IO (GodotObject)}) ptr
<*> (\ptr -> do {C2HSImp.peekByteOff ptr 56 :: IO (GodotGdnativeCoreApiStruct)}) ptr
<*> (GodotString <$> ((\ptr -> do {C2HSImp.peekByteOff ptr 64 :: IO (C2HSImp.Ptr (GodotString))}) ptr >>= newForeignPtr_))
where
castFunPtrVersion :: FunPtr (GodotObject -> Ptr CChar -> Ptr () -> Ptr () -> IO ()) -> FunPtr ReportVersionMismatchFunc
castFunPtrVersion = castFunPtr
poke _ _ = error "Poking GodotGdNativeInitOptions is unsupported"
type GodotGdnativeInitOptionsPtr = C2HSImp.Ptr (GodotGdnativeInitOptions)
{-# LINE 353 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
data GodotGdnativeTerminateOptions = GodotGdnativeTerminateOptions
{ gdnativeTerminateOptionsInEditor :: Bool
} deriving (Show, Eq, Ord)
instance Storable GodotGdnativeTerminateOptions where
sizeOf _ = 4
{-# LINE 360 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
alignment _ = 1
{-# LINE 361 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
peek ptr = GodotGdnativeTerminateOptions
<$> (\ptr -> do {C2HSImp.toBool `fmap` (C2HSImp.peekByteOff ptr 0 :: IO C2HSImp.CInt)}) ptr
poke ptr a = (\ptr val -> do {C2HSImp.pokeByteOff ptr 0 (C2HSImp.fromBool val :: C2HSImp.CInt)}) ptr (gdnativeTerminateOptionsInEditor a)
type GodotGdnativeTerminateOptionsPtr = C2HSImp.Ptr (GodotGdnativeTerminateOptions)
{-# LINE 366 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
type NativeCallCb = FunPtr (Ptr GodotVariant -> Ptr () -> GodotArray -> IO (Ptr GodotVariant))
type GodotClassConstructor = FunPtr (IO GodotObject)
data GodotPluginscriptLanguageDesc
instance Storable GodotPluginscriptLanguageDesc where
sizeOf _ = 360
{-# LINE 395 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
alignment _ = 8
{-# LINE 396 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
peek = error "GodotPluginscriptLanguageDesc peek not implemented"
poke = error "GodotPluginscriptLanguageDesc poke not implemented"
type GodotPluginscriptLanguageDescPtr = C2HSImp.Ptr (GodotPluginscriptLanguageDesc)
{-# LINE 400 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
data GodotPropertyHint = GodotPropertyHintNone
| GodotPropertyHintRange
| GodotPropertyHintExpRange
| GodotPropertyHintEnum
| GodotPropertyHintExpEasing
| GodotPropertyHintLength
| GodotPropertyHintSpriteFrame
| GodotPropertyHintKeyAccel
| GodotPropertyHintFlags
| GodotPropertyHintLayers2dRender
| GodotPropertyHintLayers2dPhysics
| GodotPropertyHintLayers3dRender
| GodotPropertyHintLayers3dPhysics
| GodotPropertyHintFile
| GodotPropertyHintDir
| GodotPropertyHintGlobalFile
| GodotPropertyHintGlobalDir
| GodotPropertyHintResourceType
| GodotPropertyHintMultilineText
| GodotPropertyHintPlaceholderText
| GodotPropertyHintColorNoAlpha
| GodotPropertyHintImageCompressLossy
| GodotPropertyHintImageCompressLossless
| GodotPropertyHintObjectId
| GodotPropertyHintTypeString
| GodotPropertyHintNodePathToEditedNode
| GodotPropertyHintMethodOfVariantType
| GodotPropertyHintMethodOfBaseType
| GodotPropertyHintMethodOfInstance
| GodotPropertyHintMethodOfScript
| GodotPropertyHintPropertyOfVariantType
| GodotPropertyHintPropertyOfBaseType
| GodotPropertyHintPropertyOfInstance
| GodotPropertyHintPropertyOfScript
| GodotPropertyHintMax
deriving (Enum,Show,Eq,Ord,Bounded)
{-# LINE 404 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
data GodotMethodRpcMode = GodotMethodRpcModeDisabled
| GodotMethodRpcModeRemote
| GodotMethodRpcModeSync
| GodotMethodRpcModeMaster
| GodotMethodRpcModeSlave
| GodotMethodRpcModeRemotesync
| GodotMethodRpcModeMastersync
| GodotMethodRpcModeSlavesync
deriving (Enum,Show,Eq,Ord,Bounded)
{-# LINE 407 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
newtype GodotPropertyUsageFlags = GodotPropertyUsageFlags { unGodotPropertyUsageFlags :: CInt }
deriving newtype (Show, Eq, Ord, Bits, Storable)
pattern GodotPropertyUsageStorage :: GodotPropertyUsageFlags
pattern GodotPropertyUsageStorage = GodotPropertyUsageFlags 1
pattern GodotPropertyUsageEditor :: GodotPropertyUsageFlags
pattern GodotPropertyUsageEditor = GodotPropertyUsageFlags 2
pattern GodotPropertyUsageNetwork :: GodotPropertyUsageFlags
pattern GodotPropertyUsageNetwork = GodotPropertyUsageFlags 4
pattern GodotPropertyUsageEditorHelper :: GodotPropertyUsageFlags
pattern GodotPropertyUsageEditorHelper = GodotPropertyUsageFlags 8
pattern GodotPropertyUsageCheckable :: GodotPropertyUsageFlags
pattern GodotPropertyUsageCheckable = GodotPropertyUsageFlags 16
pattern GodotPropertyUsageChecked :: GodotPropertyUsageFlags
pattern GodotPropertyUsageChecked = GodotPropertyUsageFlags 32
pattern GodotPropertyUsageInternationalized :: GodotPropertyUsageFlags
pattern GodotPropertyUsageInternationalized = GodotPropertyUsageFlags 64
pattern GodotPropertyUsageGroup :: GodotPropertyUsageFlags
pattern GodotPropertyUsageGroup = GodotPropertyUsageFlags 128
pattern GodotPropertyUsageCategory :: GodotPropertyUsageFlags
pattern GodotPropertyUsageCategory = GodotPropertyUsageFlags 256
pattern GodotPropertyUsageStoreIfNonzero :: GodotPropertyUsageFlags
pattern GodotPropertyUsageStoreIfNonzero = GodotPropertyUsageFlags 512
pattern GodotPropertyUsageStoreIfNonone :: GodotPropertyUsageFlags
pattern GodotPropertyUsageStoreIfNonone = GodotPropertyUsageFlags 1024
pattern GodotPropertyUsageNoInstanceState :: GodotPropertyUsageFlags
pattern GodotPropertyUsageNoInstanceState = GodotPropertyUsageFlags 2048
pattern GodotPropertyUsageRestartIfChanged :: GodotPropertyUsageFlags
pattern GodotPropertyUsageRestartIfChanged = GodotPropertyUsageFlags 4096
pattern GodotPropertyUsageScriptVariable :: GodotPropertyUsageFlags
pattern GodotPropertyUsageScriptVariable = GodotPropertyUsageFlags 8192
pattern GodotPropertyUsageStoreIfNull :: GodotPropertyUsageFlags
pattern GodotPropertyUsageStoreIfNull = GodotPropertyUsageFlags 16384
pattern GodotPropertyUsageAnimateAsTrigger :: GodotPropertyUsageFlags
pattern GodotPropertyUsageAnimateAsTrigger = GodotPropertyUsageFlags 32768
pattern GodotPropertyUsageUpdateAllIfModified :: GodotPropertyUsageFlags
pattern GodotPropertyUsageUpdateAllIfModified = GodotPropertyUsageFlags 65536
godotPropertyUsageDefault :: GodotPropertyUsageFlags
godotPropertyUsageDefault = GodotPropertyUsageStorage .|. GodotPropertyUsageEditor .|. GodotPropertyUsageNetwork
godotPropertyUsageDefaultIntl :: GodotPropertyUsageFlags
godotPropertyUsageDefaultIntl = godotPropertyUsageDefault .|. GodotPropertyUsageInternationalized
godotPropertyUsageNoeditor :: GodotPropertyUsageFlags
godotPropertyUsageNoeditor = GodotPropertyUsageStorage .|. GodotPropertyUsageNetwork
type InstanceCreateFun = GodotObject -> Ptr () -> IO (Ptr ())
type InstanceDestroyFun = GodotObject -> Ptr () -> Ptr () -> IO ()
type InstanceFreeFun = Ptr () -> IO ()
foreign import ccall "wrapper" mkInstanceCreateFunPtr :: InstanceCreateFun -> IO (FunPtr InstanceCreateFun)
foreign import ccall "wrapper" mkInstanceDestroyFunPtr :: InstanceDestroyFun -> IO (FunPtr InstanceDestroyFun)
foreign import ccall "wrapper" mkInstanceFreeFunPtr :: InstanceFreeFun -> IO (FunPtr InstanceFreeFun)
data GodotInstanceCreateFunc = GodotInstanceCreateFunc
{ godotInstanceCreateFunc :: !(FunPtr InstanceCreateFun)
, godotInstanceCreateMethodData :: !(Ptr ())
, godotInstanceCreateFreeFunc :: !(FunPtr InstanceFreeFun)
} deriving (Show, Eq)
instance Storable GodotInstanceCreateFunc where
sizeOf _ = 24
{-# LINE 486 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
alignment _ = 8
{-# LINE 487 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
peek ptr = GodotInstanceCreateFunc
<$> (\ptr -> do {C2HSImp.peekByteOff ptr 0 :: IO (C2HSImp.FunPtr ((GodotObject) -> ((C2HSImp.Ptr ()) -> (IO (C2HSImp.Ptr ())))))}) ptr
<*> (\ptr -> do {C2HSImp.peekByteOff ptr 8 :: IO (C2HSImp.Ptr ())}) ptr
<*> (\ptr -> do {C2HSImp.peekByteOff ptr 16 :: IO (C2HSImp.FunPtr ((C2HSImp.Ptr ()) -> (IO ())))}) ptr
poke ptr GodotInstanceCreateFunc{..} = do
(\ptr val -> do {C2HSImp.pokeByteOff ptr 0 (val :: (C2HSImp.FunPtr ((GodotObject) -> ((C2HSImp.Ptr ()) -> (IO (C2HSImp.Ptr ()))))))}) ptr godotInstanceCreateFunc
(\ptr val -> do {C2HSImp.pokeByteOff ptr 8 (val :: (C2HSImp.Ptr ()))}) ptr godotInstanceCreateMethodData
(\ptr val -> do {C2HSImp.pokeByteOff ptr 16 (val :: (C2HSImp.FunPtr ((C2HSImp.Ptr ()) -> (IO ()))))}) ptr godotInstanceCreateFreeFunc
type GodotInstanceCreateFuncPtr = C2HSImp.Ptr (GodotInstanceCreateFunc)
{-# LINE 497 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
data GodotInstanceDestroyFunc = GodotInstanceDestroyFunc
{ godotInstanceDestroyFunc :: !(FunPtr InstanceDestroyFun)
, godotInstanceDestroyMethodData :: !(Ptr ())
, godotInstanceDestroyFreeFunc :: !(FunPtr InstanceFreeFun)
} deriving (Show, Eq)
instance Storable GodotInstanceDestroyFunc where
sizeOf _ = 24
{-# LINE 505 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
alignment _ = 8
{-# LINE 506 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
peek ptr = GodotInstanceDestroyFunc
<$> (\ptr -> do {C2HSImp.peekByteOff ptr 0 :: IO (C2HSImp.FunPtr ((GodotObject) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO ())))))}) ptr
<*> (\ptr -> do {C2HSImp.peekByteOff ptr 8 :: IO (C2HSImp.Ptr ())}) ptr
<*> (\ptr -> do {C2HSImp.peekByteOff ptr 16 :: IO (C2HSImp.FunPtr ((C2HSImp.Ptr ()) -> (IO ())))}) ptr
poke ptr GodotInstanceDestroyFunc{..} = do
(\ptr val -> do {C2HSImp.pokeByteOff ptr 0 (val :: (C2HSImp.FunPtr ((GodotObject) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO ()))))))}) ptr godotInstanceDestroyFunc
(\ptr val -> do {C2HSImp.pokeByteOff ptr 8 (val :: (C2HSImp.Ptr ()))}) ptr godotInstanceDestroyMethodData
(\ptr val -> do {C2HSImp.pokeByteOff ptr 16 (val :: (C2HSImp.FunPtr ((C2HSImp.Ptr ()) -> (IO ()))))}) ptr godotInstanceDestroyFreeFunc
type GodotInstanceDestroyFuncPtr = C2HSImp.Ptr (GodotInstanceDestroyFunc)
{-# LINE 516 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
type InstanceMethodFun = Ptr GodotVariant -> GodotObject -> Ptr () -> Ptr () -> CInt
-> Ptr (Ptr GodotVariant) -> IO (Ptr GodotVariant)
foreign import ccall "wrapper" mkInstanceMethodFunPtr :: InstanceMethodFun -> IO (FunPtr InstanceMethodFun)
data GodotInstanceMethod = GodotInstanceMethod
{ godotInstanceMethod :: !(FunPtr InstanceMethodFun)
, godotInstanceMethodData :: !(Ptr ())
, godotInstanceMethodFreeFunc :: !(FunPtr InstanceFreeFun)
} deriving (Show, Eq)
instance Storable GodotInstanceMethod where
sizeOf _ = 24
{-# LINE 529 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
alignment _ = 8
{-# LINE 530 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
peek ptr = GodotInstanceMethod
<$> (castFunPtr <$> (\ptr -> do {C2HSImp.peekByteOff ptr 0 :: IO (C2HSImp.FunPtr ((GodotObject) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr (GodotVariant))) -> (IO (C2HSImp.Ptr ()))))))))}) ptr)
<*> (\ptr -> do {C2HSImp.peekByteOff ptr 8 :: IO (C2HSImp.Ptr ())}) ptr
<*> (\ptr -> do {C2HSImp.peekByteOff ptr 16 :: IO (C2HSImp.FunPtr ((C2HSImp.Ptr ()) -> (IO ())))}) ptr
poke ptr GodotInstanceMethod{..} = do
(\ptr val -> do {C2HSImp.pokeByteOff ptr 0 (val :: (C2HSImp.FunPtr ((GodotObject) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr (GodotVariant))) -> (IO (C2HSImp.Ptr ())))))))))}) ptr (castFunPtr godotInstanceMethod)
(\ptr val -> do {C2HSImp.pokeByteOff ptr 8 (val :: (C2HSImp.Ptr ()))}) ptr godotInstanceMethodData
(\ptr val -> do {C2HSImp.pokeByteOff ptr 16 (val :: (C2HSImp.FunPtr ((C2HSImp.Ptr ()) -> (IO ()))))}) ptr godotInstanceMethodFreeFunc
type GodotInstanceMethodPtr = C2HSImp.Ptr (GodotInstanceMethod)
{-# LINE 540 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
newtype GodotMethodAttributes = GodotMethodAttributes GodotMethodRpcMode
deriving newtype (Show, Eq)
instance Storable GodotMethodAttributes where
sizeOf _ = 4
{-# LINE 546 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
alignment _ = 4
{-# LINE 547 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
peek ptr = (GodotMethodAttributes . toEnum . fromIntegral) <$> (\ptr -> do {C2HSImp.peekByteOff ptr 0 :: IO C2HSImp.CInt}) ptr
poke ptr (GodotMethodAttributes rpcType) = (\ptr val -> do {C2HSImp.pokeByteOff ptr 0 (val :: C2HSImp.CInt)}) ptr (fromIntegral $ fromEnum rpcType)
type GodotMethodAttributesPtr = C2HSImp.Ptr (GodotMethodAttributes)
{-# LINE 551 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
type PropertyGetFun = Ptr GodotVariant -> GodotObject -> Ptr () -> Ptr () -> IO (Ptr GodotVariant)
foreign import ccall "wrapper" mkPropertyGetFunPtr :: PropertyGetFun -> IO (FunPtr PropertyGetFun)
data GodotPropertyGetFunc = GodotPropertyGetFunc
{ godotPropertyGetFunc :: !(FunPtr PropertyGetFun)
, godotPropertyGetMethodData :: !(Ptr ())
, godotPropertyGetFreeFunc :: !(FunPtr InstanceFreeFun)
} deriving (Show, Eq)
instance Storable GodotPropertyGetFunc where
sizeOf _ = 24
{-# LINE 564 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
alignment _ = 8
{-# LINE 565 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
peek ptr = GodotPropertyGetFunc
<$> (castFunPtr <$> (\ptr -> do {C2HSImp.peekByteOff ptr 0 :: IO (C2HSImp.FunPtr ((GodotObject) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO (C2HSImp.Ptr ()))))))}) ptr)
<*> (\ptr -> do {C2HSImp.peekByteOff ptr 8 :: IO (C2HSImp.Ptr ())}) ptr
<*> (\ptr -> do {C2HSImp.peekByteOff ptr 16 :: IO (C2HSImp.FunPtr ((C2HSImp.Ptr ()) -> (IO ())))}) ptr
poke ptr GodotPropertyGetFunc{..} = do
(\ptr val -> do {C2HSImp.pokeByteOff ptr 0 (val :: (C2HSImp.FunPtr ((GodotObject) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO (C2HSImp.Ptr ())))))))}) ptr (castFunPtr godotPropertyGetFunc)
(\ptr val -> do {C2HSImp.pokeByteOff ptr 8 (val :: (C2HSImp.Ptr ()))}) ptr godotPropertyGetMethodData
(\ptr val -> do {C2HSImp.pokeByteOff ptr 16 (val :: (C2HSImp.FunPtr ((C2HSImp.Ptr ()) -> (IO ()))))}) ptr godotPropertyGetFreeFunc
type GodotPropertyGetFuncPtr = C2HSImp.Ptr (GodotPropertyGetFunc)
{-# LINE 575 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
type PropertySetFun = GodotObject -> Ptr () -> Ptr () -> Ptr GodotVariant -> IO ()
foreign import ccall "wrapper" mkPropertySetFunPtr :: PropertySetFun -> IO (FunPtr PropertySetFun)
data GodotPropertySetFunc = GodotPropertySetFunc
{ godotPropertySetFunc :: !(FunPtr PropertySetFun)
, godotPropertySetMethodData :: !(Ptr ())
, godotPropertySetFreeFunc :: !(FunPtr InstanceFreeFun)
} deriving (Show, Eq)
instance Storable GodotPropertySetFunc where
sizeOf _ = 24
{-# LINE 588 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
alignment _ = 8
{-# LINE 589 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
peek ptr = GodotPropertySetFunc
<$> (\ptr -> do {C2HSImp.peekByteOff ptr 0 :: IO (C2HSImp.FunPtr ((GodotObject) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr (GodotVariant)) -> (IO ()))))))}) ptr
<*> (\ptr -> do {C2HSImp.peekByteOff ptr 8 :: IO (C2HSImp.Ptr ())}) ptr
<*> (\ptr -> do {C2HSImp.peekByteOff ptr 16 :: IO (C2HSImp.FunPtr ((C2HSImp.Ptr ()) -> (IO ())))}) ptr
poke ptr GodotPropertySetFunc{..} = do
(\ptr val -> do {C2HSImp.pokeByteOff ptr 0 (val :: (C2HSImp.FunPtr ((GodotObject) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr (GodotVariant)) -> (IO ())))))))}) ptr godotPropertySetFunc
(\ptr val -> do {C2HSImp.pokeByteOff ptr 8 (val :: (C2HSImp.Ptr ()))}) ptr godotPropertySetMethodData
(\ptr val -> do {C2HSImp.pokeByteOff ptr 16 (val :: (C2HSImp.FunPtr ((C2HSImp.Ptr ()) -> (IO ()))))}) ptr godotPropertySetFreeFunc
type GodotPropertySetFuncPtr = C2HSImp.Ptr (GodotPropertySetFunc)
{-# LINE 599 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
getOpaqueFromStruct :: forall a b. OpaqueStorable a => (ForeignPtr a -> a) -> Ptr b -> Int -> IO a
getOpaqueFromStruct con structPtr offset = do
let start = structPtr `plusPtr` offset
let size = opaqueSizeOf @a
(fptr :: ForeignPtr a) <- mallocForeignPtrBytes size
withForeignPtr fptr $ \ptr -> copyBytes ptr start size
return $ con fptr
setOpaqueFromStruct :: forall a b. (Coercible a (ForeignPtr a), OpaqueStorable a) => Ptr b -> a -> Int -> IO ()
setOpaqueFromStruct structPtr fptr offset = do
let start = structPtr `plusPtr` offset
let size = opaqueSizeOf @a
withForeignPtr (coerce fptr :: ForeignPtr a) $ \ptr -> copyBytes start ptr size
data GodotPropertyAttributes = GodotPropertyAttributes
{ godotPropertyAttributesRsetType :: !GodotMethodRpcMode
, godotPropertyAttributesType :: !GodotInt
, godotPropertyAttributesHint :: !GodotPropertyHint
, godotPropertyAttributesHintString :: !GodotString
, godotPropertyAttributesUsage :: !GodotPropertyUsageFlags
, godotPropertyAttributesDefaultValue :: !GodotVariant
}
instance Storable GodotPropertyAttributes where
sizeOf _ = 48
{-# LINE 624 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
alignment _ = 4
{-# LINE 625 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
peek ptr = do
godotPropertyAttributesRsetType <- (toEnum . fromIntegral) <$> (\ptr -> do {C2HSImp.peekByteOff ptr 0 :: IO C2HSImp.CInt}) ptr
godotPropertyAttributesType <- (\ptr -> do {C2HSImp.peekByteOff ptr 4 :: IO C2HSImp.CInt}) ptr
godotPropertyAttributesHint <- (toEnum . fromIntegral) <$> (\ptr -> do {C2HSImp.peekByteOff ptr 8 :: IO C2HSImp.CInt}) ptr
godotPropertyAttributesHintString <- getOpaqueFromStruct GodotString ptr (12)
{-# LINE 630 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
godotPropertyAttributesUsage <- GodotPropertyUsageFlags <$> (\ptr -> do {C2HSImp.peekByteOff ptr 20 :: IO C2HSImp.CInt}) ptr
godotPropertyAttributesDefaultValue <- getOpaqueFromStruct GodotVariant ptr (24)
{-# LINE 632 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
return GodotPropertyAttributes{..}
poke ptr GodotPropertyAttributes{..} = do
(\ptr val -> do {C2HSImp.pokeByteOff ptr 0 (val :: C2HSImp.CInt)}) ptr (fromIntegral . fromEnum $ godotPropertyAttributesRsetType)
(\ptr val -> do {C2HSImp.pokeByteOff ptr 4 (val :: C2HSImp.CInt)}) ptr godotPropertyAttributesType
(\ptr val -> do {C2HSImp.pokeByteOff ptr 8 (val :: C2HSImp.CInt)}) ptr (fromIntegral . fromEnum $ godotPropertyAttributesHint)
setOpaqueFromStruct ptr godotPropertyAttributesHintString (12)
{-# LINE 638 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
(\ptr val -> do {C2HSImp.pokeByteOff ptr 20 (val :: C2HSImp.CInt)}) ptr (unGodotPropertyUsageFlags godotPropertyAttributesUsage)
setOpaqueFromStruct ptr godotPropertyAttributesDefaultValue (24)
{-# LINE 640 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
type GodotPropertyAttributesPtr = C2HSImp.Ptr (GodotPropertyAttributes)
{-# LINE 642 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
data GodotSignalArgument = GodotSignalArgument
{ godotSignalArgumentName :: !GodotString
, godotSignalArgumentType :: !GodotInt
, godotSignalArgumentHint :: !GodotPropertyHint
, godotSignalArgumentHintString :: !GodotString
, godotSignalArgumentUsage :: !GodotPropertyUsageFlags
, godotSignalArgumentDefaultValue :: !GodotVariant
}
instance Storable GodotSignalArgument where
sizeOf _ = 52
{-# LINE 654 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
alignment _ = 4
{-# LINE 655 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
peek ptr = do
godotSignalArgumentName <- getOpaqueFromStruct GodotString ptr (0)
godotSignalArgumentType <- (\ptr -> do {C2HSImp.peekByteOff ptr 8 :: IO C2HSImp.CInt}) ptr
godotSignalArgumentHint <- (toEnum . fromIntegral) <$> (\ptr -> do {C2HSImp.peekByteOff ptr 12 :: IO C2HSImp.CInt}) ptr
godotSignalArgumentHintString <- getOpaqueFromStruct GodotString ptr (16)
{-# LINE 660 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
godotSignalArgumentUsage <- GodotPropertyUsageFlags <$> (\ptr -> do {C2HSImp.peekByteOff ptr 24 :: IO C2HSImp.CInt}) ptr
godotSignalArgumentDefaultValue <- getOpaqueFromStruct GodotVariant ptr (28)
{-# LINE 662 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
return GodotSignalArgument{..}
poke ptr GodotSignalArgument{..} = do
setOpaqueFromStruct ptr godotSignalArgumentName (0)
{-# LINE 665 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
(\ptr val -> do {C2HSImp.pokeByteOff ptr 8 (val :: C2HSImp.CInt)}) ptr godotSignalArgumentType
(\ptr val -> do {C2HSImp.pokeByteOff ptr 12 (val :: C2HSImp.CInt)}) ptr (fromIntegral . fromEnum $ godotSignalArgumentHint)
setOpaqueFromStruct ptr godotSignalArgumentHintString (16)
{-# LINE 668 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
(\ptr val -> do {C2HSImp.pokeByteOff ptr 24 (val :: C2HSImp.CInt)}) ptr (unGodotPropertyUsageFlags godotSignalArgumentUsage)
setOpaqueFromStruct ptr godotSignalArgumentDefaultValue (28)
{-# LINE 670 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
type GodotSignalArgumentPtr = C2HSImp.Ptr (GodotSignalArgument)
{-# LINE 671 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
data GodotSignal = GodotSignal
{ godotSignalName :: !GodotString
, godotSignalNumArgs :: !CInt
, godotSignalArgs :: !(Ptr GodotSignalArgument)
, godotSignalNumDefaultArgs :: !CInt
, godotSignalDefaultArgs :: !(Ptr GodotVariant)
}
instance Storable GodotSignal where
sizeOf _ = 40
{-# LINE 681 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
alignment _ = 8
{-# LINE 682 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
peek ptr = do
godotSignalName <- getOpaqueFromStruct GodotString ptr (0)
godotSignalNumArgs <- (\ptr -> do {C2HSImp.peekByteOff ptr 8 :: IO C2HSImp.CInt}) ptr
godotSignalArgs <- (\ptr -> do {C2HSImp.peekByteOff ptr 16 :: IO (GodotSignalArgumentPtr)}) ptr
godotSignalNumDefaultArgs <- (\ptr -> do {C2HSImp.peekByteOff ptr 24 :: IO C2HSImp.CInt}) ptr
godotSignalDefaultArgs <- (\ptr -> do {C2HSImp.peekByteOff ptr 32 :: IO (C2HSImp.Ptr (GodotVariant))}) ptr
return GodotSignal{..}
poke ptr GodotSignal{..} = do
setOpaqueFromStruct ptr godotSignalName (0)
{-# LINE 691 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
(\ptr val -> do {C2HSImp.pokeByteOff ptr 8 (val :: C2HSImp.CInt)}) ptr godotSignalNumArgs
(\ptr val -> do {C2HSImp.pokeByteOff ptr 16 (val :: (GodotSignalArgumentPtr))}) ptr godotSignalArgs
(\ptr val -> do {C2HSImp.pokeByteOff ptr 24 (val :: C2HSImp.CInt)}) ptr godotSignalNumDefaultArgs
(\ptr val -> do {C2HSImp.pokeByteOff ptr 32 (val :: (C2HSImp.Ptr (GodotVariant)))}) ptr godotSignalDefaultArgs
type GodotSignalPtr = C2HSImp.Ptr (GodotSignal)
{-# LINE 697 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
data GodotInstanceBindingFunctions
instance Storable GodotInstanceBindingFunctions where
sizeOf _ = 48
{-# LINE 703 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
alignment _ = 48
{-# LINE 704 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
peek = error "GodotInstanceBindingFunctions peek not implemented"
poke = error "GodotInstanceBindingFunctions poke not implemented"
type GodotInstanceBindingFunctionsPtr = C2HSImp.Ptr (GodotInstanceBindingFunctions)
{-# LINE 707 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
data GodotMethodArg
instance Storable GodotMethodArg where
sizeOf _ = 24
{-# LINE 712 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
alignment _ = 24
{-# LINE 713 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
peek = error "GodotMethodArg peek not implemented"
poke = error "GodotMethodArg poke not implemented"
type GodotMethodArgPtr = C2HSImp.Ptr (GodotMethodArg)
{-# LINE 716 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
data GodotArvrInterfaceGdnative
instance Storable GodotArvrInterfaceGdnative where
sizeOf _ = 128
{-# LINE 723 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
alignment _ = 128
{-# LINE 724 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
peek = error "GodotArvrInterfaceGdnative peek not implemented"
poke = error "GodotArvrInterfaceGdnative poke not implemented"
type GodotArvrInterfaceGdnativePtr = C2HSImp.Ptr (GodotArvrInterfaceGdnative)
{-# LINE 727 "src/Godot/Gdnative/Internal/Gdnative.chs" #-}
godotGdnativeCoreApiStructRef :: IORef GodotGdnativeCoreApiStruct
godotGdnativeCoreApiStructRef = unsafePerformIO $ newIORef $
error "attempted to get godotGdnativeCoreApiStructRef too early"
{-# NOINLINE godotGdnativeCoreApiStructRef #-}
godotGdnativeCore11ApiStructRef :: IORef GodotGdnativeCore11ApiStruct
godotGdnativeCore11ApiStructRef = unsafePerformIO $ newIORef $
error "attempted to get godotGdnativeCore11ApiStructRef too early"
{-# NOINLINE godotGdnativeCore11ApiStructRef #-}
godotGdnativeExtNativescriptApiStructRef :: IORef GodotGdnativeExtNativescriptApiStruct
godotGdnativeExtNativescriptApiStructRef = unsafePerformIO $ newIORef $
error "attempted to get godotGdnativeExtNativescriptApiStructRef too early"
{-# NOINLINE godotGdnativeExtNativescriptApiStructRef #-}
godotGdnativeExtNativescript11ApiStructRef :: IORef GodotGdnativeExtNativescript11ApiStruct
godotGdnativeExtNativescript11ApiStructRef = unsafePerformIO $ newIORef $
error "attempted to get godotGdnativeExtNativescript11ApiStructRef too early"
{-# NOINLINE godotGdnativeExtNativescript11ApiStructRef #-}
godotGdnativeExtPluginscriptApiStructRef :: IORef GodotGdnativeExtPluginscriptApiStruct
godotGdnativeExtPluginscriptApiStructRef = unsafePerformIO $ newIORef $
error "attempted to get godotGdnativeExtPluginscriptApiStructRef too early"
{-# NOINLINE godotGdnativeExtPluginscriptApiStructRef #-}
godotGdnativeExtArvrApiStructRef :: IORef GodotGdnativeExtArvrApiStruct
godotGdnativeExtArvrApiStructRef = unsafePerformIO $ newIORef $
error "attempted to get godotGdnativeExtArvrApiStructRef too early"
{-# NOINLINE godotGdnativeExtArvrApiStructRef #-}
initApiStructs :: GodotGdnativeInitOptions -> IO ()
initApiStructs opts = do
let coreApi = gdnativeInitOptionsApiStruct opts
writeIORef godotGdnativeCoreApiStructRef coreApi
findCoreExt (coerce coreApi)
numExt <- (\(GodotGdnativeCoreApiStruct ptr) -> do {C2HSImp.peekByteOff ptr 24 :: IO C2HSImp.CUInt}) coreApi
extsPtr <- (\(GodotGdnativeCoreApiStruct ptr) -> do {C2HSImp.peekByteOff ptr 32 :: IO (C2HSImp.Ptr (GodotGdnativeApiStruct))}) coreApi
exts <- peekArray (fromIntegral numExt) (castPtr extsPtr :: Ptr GodotGdnativeApiStruct)
forM_ exts $ \ext -> do
ty <- (\(GodotGdnativeApiStruct ptr) -> do {C2HSImp.peekByteOff ptr 0 :: IO C2HSImp.CUInt}) ext
case ty of
1 -> do
writeIORef godotGdnativeExtNativescriptApiStructRef (coerce ext)
findNativescriptExt ext
2 -> do
writeIORef godotGdnativeExtPluginscriptApiStructRef (coerce ext)
3 -> return ()
4 -> do
writeIORef godotGdnativeExtArvrApiStructRef (coerce ext)
_ -> error $ "Unknown API struct type " ++ show ty
where
findCoreExt = findExt GodotGdnativeCore11ApiStruct godotGdnativeCore11ApiStructRef
findNativescriptExt = findExt GodotGdnativeExtNativescript11ApiStruct godotGdnativeExtNativescript11ApiStructRef
findExt con ref ext = do
next <- (\(GodotGdnativeApiStruct ptr) -> do {C2HSImp.peekByteOff ptr 16 :: IO (GodotGdnativeApiStruct)}) ext
when (next /= coerce nullPtr) $ do
major <- (\(GodotGdnativeApiStruct ptr) -> do {C2HSImp.peekByteOff ptr 4 :: IO C2HSImp.CUInt}) next
minor <- (\(GodotGdnativeApiStruct ptr) -> do {C2HSImp.peekByteOff ptr 8 :: IO C2HSImp.CUInt}) next
if major == 1 && minor == 1 then writeIORef ref (con $ coerce next)
else findExt con ref next