module Graphics.QML.Internal.Objects where
import Foreign.C.Types
import Foreign.Ptr
import Foreign.ForeignPtr.Safe
import Foreign.ForeignPtr.Unsafe
import Foreign.StablePtr
hsqmlGetNextClassId :: IO (CInt)
hsqmlGetNextClassId =
hsqmlGetNextClassId'_ >>= \res ->
let {res' = id res} in
return (res')
type UniformFunc = Ptr () -> Ptr (Ptr ()) -> IO ()
foreign import ccall "wrapper"
marshalFunc :: UniformFunc -> IO (FunPtr UniformFunc)
newtype HsQMLClassHandle = HsQMLClassHandle (ForeignPtr (HsQMLClassHandle))
withHsQMLClassHandle (HsQMLClassHandle fptr) = withForeignPtr fptr
foreign import ccall "hsqml.h &hsqml_finalise_class_handle"
hsqmlFinaliseClassHandlePtr :: FunPtr (Ptr (HsQMLClassHandle) -> IO ())
newClassHandle :: Ptr HsQMLClassHandle -> IO (Maybe HsQMLClassHandle)
newClassHandle p =
if nullPtr == p
then return Nothing
else do
fp <- newForeignPtr hsqmlFinaliseClassHandlePtr p
return $ Just $ HsQMLClassHandle fp
hsqmlCreateClass :: Ptr CUInt -> Ptr CChar -> Ptr (FunPtr UniformFunc) -> Ptr (FunPtr UniformFunc) -> IO (Maybe HsQMLClassHandle)
hsqmlCreateClass a1 a2 a3 a4 =
let {a1' = id a1} in
let {a2' = id a2} in
let {a3' = id a3} in
let {a4' = id a4} in
hsqmlCreateClass'_ a1' a2' a3' a4' >>= \res ->
newClassHandle res >>= \res' ->
return (res')
withMaybeHsQMLClassHandle ::
Maybe HsQMLClassHandle -> (Ptr HsQMLClassHandle -> IO b) -> IO b
withMaybeHsQMLClassHandle (Just (HsQMLClassHandle fp)) = withForeignPtr fp
withMaybeHsQMLClassHandle Nothing = \f -> f nullPtr
withMaybeHsQMLObjectHandle ::
Maybe HsQMLObjectHandle -> (Ptr HsQMLObjectHandle -> IO b) -> IO b
withMaybeHsQMLObjectHandle (Just (HsQMLObjectHandle fp)) = withForeignPtr fp
withMaybeHsQMLObjectHandle Nothing = \f -> f nullPtr
newtype HsQMLObjectHandle = HsQMLObjectHandle (ForeignPtr (HsQMLObjectHandle))
withHsQMLObjectHandle (HsQMLObjectHandle fptr) = withForeignPtr fptr
foreign import ccall "hsqml.h &hsqml_finalise_object_handle"
hsqmlFinaliseObjectHandlePtr :: FunPtr (Ptr (HsQMLObjectHandle) -> IO ())
newObjectHandle :: Ptr HsQMLObjectHandle -> IO HsQMLObjectHandle
newObjectHandle p = do
fp <- newForeignPtr hsqmlFinaliseObjectHandlePtr p
return $ HsQMLObjectHandle fp
isNullObjectHandle :: HsQMLObjectHandle -> Bool
isNullObjectHandle (HsQMLObjectHandle fp) =
nullPtr == unsafeForeignPtrToPtr fp
data ObjRef tt = ObjRef {
objHndl :: HsQMLObjectHandle
}
objToPtr :: a -> (Ptr () -> IO b) -> IO b
objToPtr obj f = do
sPtr <- newStablePtr obj
res <- f $ castStablePtrToPtr sPtr
return res
hsqmlCreateObject :: a -> HsQMLClassHandle -> IO (HsQMLObjectHandle)
hsqmlCreateObject a1 a2 =
objToPtr a1 $ \a1' ->
withHsQMLClassHandle a2 $ \a2' ->
hsqmlCreateObject'_ a1' a2' >>= \res ->
newObjectHandle res >>= \res' ->
return (res')
ptrToObj :: Ptr () -> IO a
ptrToObj =
deRefStablePtr . castPtrToStablePtr
hsqmlObjectGetHaskell :: HsQMLObjectHandle -> IO (a)
hsqmlObjectGetHaskell a1 =
withHsQMLObjectHandle a1 $ \a1' ->
hsqmlObjectGetHaskell'_ a1' >>= \res ->
ptrToObj res >>= \res' ->
return (res')
hsqmlObjectGetPointer :: HsQMLObjectHandle -> IO (Ptr ())
hsqmlObjectGetPointer a1 =
withHsQMLObjectHandle a1 $ \a1' ->
hsqmlObjectGetPointer'_ a1' >>= \res ->
let {res' = id res} in
return (res')
hsqmlGetObjectHandle :: Ptr () -> Maybe HsQMLClassHandle -> IO (HsQMLObjectHandle)
hsqmlGetObjectHandle a1 a2 =
let {a1' = id a1} in
withMaybeHsQMLClassHandle a2 $ \a2' ->
hsqmlGetObjectHandle'_ a1' a2' >>= \res ->
newObjectHandle res >>= \res' ->
return (res')
ofDynamicMetaObject :: CUInt
ofDynamicMetaObject = 0x01
mfAccessPrivate, mfAccessProtected, mfAccessPublic, mfAccessMask,
mfMethodMethod, mfMethodSignal, mfMethodSlot, mfMethodConstructor,
mfMethodTypeMask, mfMethodCompatibility, mfMethodCloned, mfMethodScriptable
:: CUInt
mfAccessPrivate = 0x00
mfAccessProtected = 0x01
mfAccessPublic = 0x02
mfAccessMask = 0x03
mfMethodMethod = 0x00
mfMethodSignal = 0x04
mfMethodSlot = 0x08
mfMethodConstructor = 0x0c
mfMethodTypeMask = 0x0c
mfMethodCompatibility = 0x10
mfMethodCloned = 0x20
mfMethodScriptable = 0x40
pfInvalid, pfReadable, pfWritable, pfResettable, pfEnumOrFlag, pfStdCppSet,
pfConstant, pfFinal, pfDesignable, pfResolveDesignable, pfScriptable,
pfResolveScriptable, pfStored, pfResolveStored, pfEditable,
pfResolveEditable, pfUser, pfResolveUser, pfNotify :: CUInt
pfInvalid = 0x00000000
pfReadable = 0x00000001
pfWritable = 0x00000002
pfResettable = 0x00000004
pfEnumOrFlag = 0x00000008
pfStdCppSet = 0x00000100
pfConstant = 0x00000400
pfFinal = 0x00000800
pfDesignable = 0x00001000
pfResolveDesignable = 0x00002000
pfScriptable = 0x00004000
pfResolveScriptable = 0x00008000
pfStored = 0x00010000
pfResolveStored = 0x00020000
pfEditable = 0x00040000
pfResolveEditable = 0x00080000
pfUser = 0x00100000
pfResolveUser = 0x00200000
pfNotify = 0x00400000
foreign import ccall unsafe "Graphics/QML/Internal/Objects.chs.h hsqml_get_next_class_id"
hsqmlGetNextClassId'_ :: (IO CInt)
foreign import ccall unsafe "Graphics/QML/Internal/Objects.chs.h hsqml_create_class"
hsqmlCreateClass'_ :: ((Ptr CUInt) -> ((Ptr CChar) -> ((Ptr (FunPtr ((Ptr ()) -> ((Ptr (Ptr ())) -> (IO ()))))) -> ((Ptr (FunPtr ((Ptr ()) -> ((Ptr (Ptr ())) -> (IO ()))))) -> (IO (Ptr (HsQMLClassHandle)))))))
foreign import ccall unsafe "Graphics/QML/Internal/Objects.chs.h hsqml_create_object"
hsqmlCreateObject'_ :: ((Ptr ()) -> ((Ptr (HsQMLClassHandle)) -> (IO (Ptr (HsQMLObjectHandle)))))
foreign import ccall unsafe "Graphics/QML/Internal/Objects.chs.h hsqml_object_get_haskell"
hsqmlObjectGetHaskell'_ :: ((Ptr (HsQMLObjectHandle)) -> (IO (Ptr ())))
foreign import ccall unsafe "Graphics/QML/Internal/Objects.chs.h hsqml_object_get_pointer"
hsqmlObjectGetPointer'_ :: ((Ptr (HsQMLObjectHandle)) -> (IO (Ptr ())))
foreign import ccall unsafe "Graphics/QML/Internal/Objects.chs.h hsqml_get_object_handle"
hsqmlGetObjectHandle'_ :: ((Ptr ()) -> ((Ptr (HsQMLClassHandle)) -> (IO (Ptr (HsQMLObjectHandle)))))