-- GENERATED by C->Haskell Compiler, version 0.28.8 Switcheroo, 25 November 2017 (Haskell)
-- Edit the ORIGNAL .chs file instead!


{-# LINE 1 "src/Graphics/QML/Internal/BindObj.chs" #-}
{-# LANGUAGE
    ForeignFunctionInterface
  #-}

module Graphics.QML.Internal.BindObj where
import qualified Foreign.C.Types as C2HSImp
import qualified Foreign.ForeignPtr as C2HSImp
import qualified Foreign.Ptr as C2HSImp



import Graphics.QML.Internal.Types
import Graphics.QML.Internal.BindPrim
{-# LINE 8 "src/Graphics/QML/Internal/BindObj.chs" #-}


import Control.Exception (bracket)
import Control.Monad (void)
import Foreign.C.Types
import Foreign.Marshal.Utils (fromBool, toBool)
import Foreign.Ptr
import Foreign.ForeignPtr
import qualified Foreign.ForeignPtr.Unsafe as UnsafeFPtr 
import Foreign.StablePtr



marshalStable :: a -> (Ptr () -> IO b) -> IO b
marshalStable :: forall a b. a -> (Ptr () -> IO b) -> IO b
marshalStable a
obj Ptr () -> IO b
f = do
  StablePtr a
sPtr <- a -> IO (StablePtr a)
forall a. a -> IO (StablePtr a)
newStablePtr a
obj
  b
res <- Ptr () -> IO b
f (Ptr () -> IO b) -> Ptr () -> IO b
forall a b. (a -> b) -> a -> b
$ StablePtr a -> Ptr ()
forall a. StablePtr a -> Ptr ()
castStablePtrToPtr StablePtr a
sPtr
  b -> IO b
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return b
res

fromStable :: Ptr () -> IO a
fromStable :: forall a. Ptr () -> IO a
fromStable =
  StablePtr a -> IO a
forall a. StablePtr a -> IO a
deRefStablePtr (StablePtr a -> IO a) -> (Ptr () -> StablePtr a) -> Ptr () -> IO a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ptr () -> StablePtr a
forall a. Ptr () -> StablePtr a
castPtrToStablePtr

hsqmlGetNextClassId :: IO ((CInt))
hsqmlGetNextClassId :: IO CInt
hsqmlGetNextClassId =
  IO CInt
hsqmlGetNextClassId'_ IO CInt -> (CInt -> IO CInt) -> IO CInt
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \CInt
res ->
  let {res' :: CInt
res' = CInt -> CInt
forall a. a -> a
id CInt
res} in
  CInt -> IO CInt
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (CInt
res')

{-# LINE 33 "src/Graphics/QML/Internal/BindObj.chs" #-}


foreign import ccall "wrapper"  
  marshalFunc :: UniformFunc -> IO (FunPtr UniformFunc)

newtype HsQMLClassHandle = HsQMLClassHandle (C2HSImp.ForeignPtr (HsQMLClassHandle))
withHsQMLClassHandle :: HsQMLClassHandle -> (C2HSImp.Ptr HsQMLClassHandle -> IO b) -> IO b
withHsQMLClassHandle :: forall b.
HsQMLClassHandle -> (Ptr HsQMLClassHandle -> IO b) -> IO b
withHsQMLClassHandle (HsQMLClassHandle ForeignPtr HsQMLClassHandle
fptr) = C2HSImp.withForeignPtr fptr
{-# LINE 38 "src/Graphics/QML/Internal/BindObj.chs" #-}


foreign import ccall "hsqml.h &hsqml_finalise_class_handle"
  hsqmlFinaliseClassHandlePtr :: FunPtr (Ptr (HsQMLClassHandle) -> IO ())

newClassHandle :: Ptr HsQMLClassHandle -> IO (Maybe HsQMLClassHandle)
newClassHandle :: Ptr HsQMLClassHandle -> IO (Maybe HsQMLClassHandle)
newClassHandle Ptr HsQMLClassHandle
p =
  if Ptr HsQMLClassHandle
forall a. Ptr a
nullPtr Ptr HsQMLClassHandle -> Ptr HsQMLClassHandle -> Bool
forall a. Eq a => a -> a -> Bool
== Ptr HsQMLClassHandle
p
    then Maybe HsQMLClassHandle -> IO (Maybe HsQMLClassHandle)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe HsQMLClassHandle
forall a. Maybe a
Nothing
    else do
      ForeignPtr HsQMLClassHandle
fp <- FinalizerPtr HsQMLClassHandle
-> Ptr HsQMLClassHandle -> IO (ForeignPtr HsQMLClassHandle)
forall a. FinalizerPtr a -> Ptr a -> IO (ForeignPtr a)
newForeignPtr FinalizerPtr HsQMLClassHandle
hsqmlFinaliseClassHandlePtr Ptr HsQMLClassHandle
p
      Maybe HsQMLClassHandle -> IO (Maybe HsQMLClassHandle)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Maybe HsQMLClassHandle -> IO (Maybe HsQMLClassHandle))
-> Maybe HsQMLClassHandle -> IO (Maybe HsQMLClassHandle)
forall a b. (a -> b) -> a -> b
$ HsQMLClassHandle -> Maybe HsQMLClassHandle
forall a. a -> Maybe a
Just (HsQMLClassHandle -> Maybe HsQMLClassHandle)
-> HsQMLClassHandle -> Maybe HsQMLClassHandle
forall a b. (a -> b) -> a -> b
$ ForeignPtr HsQMLClassHandle -> HsQMLClassHandle
HsQMLClassHandle ForeignPtr HsQMLClassHandle
fp

hsqmlCreateClass :: (Ptr CUInt) -> (Ptr CUInt) -> (Ptr CChar) -> (ClassInfo) -> (Ptr (FunPtr UniformFunc)) -> (Ptr (FunPtr UniformFunc)) -> IO ((Maybe HsQMLClassHandle))
hsqmlCreateClass :: Ptr CUInt
-> Ptr CUInt
-> Ptr CChar
-> ClassInfo
-> Ptr (FunPtr UniformFunc)
-> Ptr (FunPtr UniformFunc)
-> IO (Maybe HsQMLClassHandle)
hsqmlCreateClass Ptr CUInt
a1 Ptr CUInt
a2 Ptr CChar
a3 ClassInfo
a4 Ptr (FunPtr UniformFunc)
a5 Ptr (FunPtr UniformFunc)
a6 =
  let {a1' :: Ptr CUInt
a1' = Ptr CUInt -> Ptr CUInt
forall a. a -> a
id Ptr CUInt
a1} in 
  let {a2' :: Ptr CUInt
a2' = Ptr CUInt -> Ptr CUInt
forall a. a -> a
id Ptr CUInt
a2} in 
  let {a3' :: Ptr CChar
a3' = Ptr CChar -> Ptr CChar
forall a. a -> a
id Ptr CChar
a3} in 
  ClassInfo
-> (Ptr () -> IO (Maybe HsQMLClassHandle))
-> IO (Maybe HsQMLClassHandle)
forall a b. a -> (Ptr () -> IO b) -> IO b
marshalStable ClassInfo
a4 ((Ptr () -> IO (Maybe HsQMLClassHandle))
 -> IO (Maybe HsQMLClassHandle))
-> (Ptr () -> IO (Maybe HsQMLClassHandle))
-> IO (Maybe HsQMLClassHandle)
forall a b. (a -> b) -> a -> b
$ \Ptr ()
a4' -> 
  let {a5' :: Ptr (FunPtr UniformFunc)
a5' = Ptr (FunPtr UniformFunc) -> Ptr (FunPtr UniformFunc)
forall a. a -> a
id Ptr (FunPtr UniformFunc)
a5} in 
  let {a6' :: Ptr (FunPtr UniformFunc)
a6' = Ptr (FunPtr UniformFunc) -> Ptr (FunPtr UniformFunc)
forall a. a -> a
id Ptr (FunPtr UniformFunc)
a6} in 
  Ptr CUInt
-> Ptr CUInt
-> Ptr CChar
-> Ptr ()
-> Ptr (FunPtr UniformFunc)
-> Ptr (FunPtr UniformFunc)
-> IO (Ptr HsQMLClassHandle)
hsqmlCreateClass'_ Ptr CUInt
a1' Ptr CUInt
a2' Ptr CChar
a3' Ptr ()
a4' Ptr (FunPtr UniformFunc)
a5' Ptr (FunPtr UniformFunc)
a6' IO (Ptr HsQMLClassHandle)
-> (Ptr HsQMLClassHandle -> IO (Maybe HsQMLClassHandle))
-> IO (Maybe HsQMLClassHandle)
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \Ptr HsQMLClassHandle
res ->
  Ptr HsQMLClassHandle -> IO (Maybe HsQMLClassHandle)
newClassHandle Ptr HsQMLClassHandle
res IO (Maybe HsQMLClassHandle)
-> (Maybe HsQMLClassHandle -> IO (Maybe HsQMLClassHandle))
-> IO (Maybe HsQMLClassHandle)
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \Maybe HsQMLClassHandle
res' ->
  Maybe HsQMLClassHandle -> IO (Maybe HsQMLClassHandle)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Maybe HsQMLClassHandle
res')

{-# LINE 58 "src/Graphics/QML/Internal/BindObj.chs" #-}


withMaybeHsQMLObjectHandle ::
    Maybe HsQMLObjectHandle -> (Ptr HsQMLObjectHandle -> IO b) -> IO b
withMaybeHsQMLObjectHandle (Just (HsQMLObjectHandle fp)) = withForeignPtr fp
withMaybeHsQMLObjectHandle Nothing = \f -> f nullPtr

newtype HsQMLObjectHandle = HsQMLObjectHandle (C2HSImp.ForeignPtr (HsQMLObjectHandle))
withHsQMLObjectHandle :: HsQMLObjectHandle -> (C2HSImp.Ptr HsQMLObjectHandle -> IO b) -> IO b
withHsQMLObjectHandle :: forall b.
HsQMLObjectHandle -> (Ptr HsQMLObjectHandle -> IO b) -> IO b
withHsQMLObjectHandle (HsQMLObjectHandle ForeignPtr HsQMLObjectHandle
fptr) = C2HSImp.withForeignPtr fptr
{-# LINE 65 "src/Graphics/QML/Internal/BindObj.chs" #-}


foreign import ccall "hsqml.h &hsqml_finalise_object_handle"
  hsqmlFinaliseObjectHandlePtr :: FunPtr (Ptr (HsQMLObjectHandle) -> IO ())

foreign import ccall "hsqml.h &hsqml_finalise_object_weak_handle"
  hsqmlFinaliseObjectWeakHandlePtr :: FunPtr (Ptr (HsQMLObjectHandle) -> IO ())

newObjectHandle :: Ptr HsQMLObjectHandle -> IO HsQMLObjectHandle
newObjectHandle :: Ptr HsQMLObjectHandle -> IO HsQMLObjectHandle
newObjectHandle Ptr HsQMLObjectHandle
p = do
  ForeignPtr HsQMLObjectHandle
fp <- FinalizerPtr HsQMLObjectHandle
-> Ptr HsQMLObjectHandle -> IO (ForeignPtr HsQMLObjectHandle)
forall a. FinalizerPtr a -> Ptr a -> IO (ForeignPtr a)
newForeignPtr FinalizerPtr HsQMLObjectHandle
hsqmlFinaliseObjectHandlePtr Ptr HsQMLObjectHandle
p
  HsQMLObjectHandle -> IO HsQMLObjectHandle
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (HsQMLObjectHandle -> IO HsQMLObjectHandle)
-> HsQMLObjectHandle -> IO HsQMLObjectHandle
forall a b. (a -> b) -> a -> b
$ ForeignPtr HsQMLObjectHandle -> HsQMLObjectHandle
HsQMLObjectHandle ForeignPtr HsQMLObjectHandle
fp

isNullObjectHandle :: HsQMLObjectHandle -> Bool
isNullObjectHandle :: HsQMLObjectHandle -> Bool
isNullObjectHandle (HsQMLObjectHandle ForeignPtr HsQMLObjectHandle
fp) =
  Ptr HsQMLObjectHandle
forall a. Ptr a
nullPtr Ptr HsQMLObjectHandle -> Ptr HsQMLObjectHandle -> Bool
forall a. Eq a => a -> a -> Bool
== ForeignPtr HsQMLObjectHandle -> Ptr HsQMLObjectHandle
forall a. ForeignPtr a -> Ptr a
UnsafeFPtr.unsafeForeignPtrToPtr ForeignPtr HsQMLObjectHandle
fp

hsqmlCreateObject :: (a) -> (HsQMLClassHandle) -> IO ((HsQMLObjectHandle))
hsqmlCreateObject :: forall a. a -> HsQMLClassHandle -> IO HsQMLObjectHandle
hsqmlCreateObject a
a1 HsQMLClassHandle
a2 =
  a -> (Ptr () -> IO HsQMLObjectHandle) -> IO HsQMLObjectHandle
forall a b. a -> (Ptr () -> IO b) -> IO b
marshalStable a
a1 ((Ptr () -> IO HsQMLObjectHandle) -> IO HsQMLObjectHandle)
-> (Ptr () -> IO HsQMLObjectHandle) -> IO HsQMLObjectHandle
forall a b. (a -> b) -> a -> b
$ \Ptr ()
a1' -> 
  HsQMLClassHandle
-> (Ptr HsQMLClassHandle -> IO HsQMLObjectHandle)
-> IO HsQMLObjectHandle
forall b.
HsQMLClassHandle -> (Ptr HsQMLClassHandle -> IO b) -> IO b
withHsQMLClassHandle HsQMLClassHandle
a2 ((Ptr HsQMLClassHandle -> IO HsQMLObjectHandle)
 -> IO HsQMLObjectHandle)
-> (Ptr HsQMLClassHandle -> IO HsQMLObjectHandle)
-> IO HsQMLObjectHandle
forall a b. (a -> b) -> a -> b
$ \Ptr HsQMLClassHandle
a2' -> 
  Ptr () -> Ptr HsQMLClassHandle -> IO (Ptr HsQMLObjectHandle)
hsqmlCreateObject'_ Ptr ()
a1' Ptr HsQMLClassHandle
a2' IO (Ptr HsQMLObjectHandle)
-> (Ptr HsQMLObjectHandle -> IO HsQMLObjectHandle)
-> IO HsQMLObjectHandle
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \Ptr HsQMLObjectHandle
res ->
  Ptr HsQMLObjectHandle -> IO HsQMLObjectHandle
newObjectHandle Ptr HsQMLObjectHandle
res IO HsQMLObjectHandle
-> (HsQMLObjectHandle -> IO HsQMLObjectHandle)
-> IO HsQMLObjectHandle
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \HsQMLObjectHandle
res' ->
  HsQMLObjectHandle -> IO HsQMLObjectHandle
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (HsQMLObjectHandle
res')

{-# LINE 85 "src/Graphics/QML/Internal/BindObj.chs" #-}


hsqmlObjectSetActive :: (Maybe HsQMLObjectHandle) -> IO ((Bool))
hsqmlObjectSetActive a1 =
  withMaybeHsQMLObjectHandle a1 $ \a1' -> 
  hsqmlObjectSetActive'_ a1' >>= \res ->
  let {res' = toBool res} in
  return (res')

{-# LINE 89 "src/Graphics/QML/Internal/BindObj.chs" #-}


withActiveObject :: HsQMLObjectHandle -> IO () -> IO ()
withActiveObject hndl action =
    bracket
        (hsqmlObjectSetActive $ Just hndl)
        (\ok -> if ok then void $ hsqmlObjectSetActive Nothing else return ())
        (\ok -> if ok then action else return ())

hsqmlObjectGetHsTyperep :: (HsQMLObjectHandle) -> IO ((ClassInfo))
hsqmlObjectGetHsTyperep :: HsQMLObjectHandle -> IO ClassInfo
hsqmlObjectGetHsTyperep HsQMLObjectHandle
a1 =
  HsQMLObjectHandle
-> (Ptr HsQMLObjectHandle -> IO ClassInfo) -> IO ClassInfo
forall b.
HsQMLObjectHandle -> (Ptr HsQMLObjectHandle -> IO b) -> IO b
withHsQMLObjectHandle HsQMLObjectHandle
a1 ((Ptr HsQMLObjectHandle -> IO ClassInfo) -> IO ClassInfo)
-> (Ptr HsQMLObjectHandle -> IO ClassInfo) -> IO ClassInfo
forall a b. (a -> b) -> a -> b
$ \Ptr HsQMLObjectHandle
a1' -> 
  Ptr HsQMLObjectHandle -> IO (Ptr ())
hsqmlObjectGetHsTyperep'_ Ptr HsQMLObjectHandle
a1' IO (Ptr ()) -> (Ptr () -> IO ClassInfo) -> IO ClassInfo
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \Ptr ()
res ->
  Ptr () -> IO ClassInfo
forall a. Ptr () -> IO a
fromStable Ptr ()
res IO ClassInfo -> (ClassInfo -> IO ClassInfo) -> IO ClassInfo
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \ClassInfo
res' ->
  ClassInfo -> IO ClassInfo
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (res')

{-# LINE 100 "src/Graphics/QML/Internal/BindObj.chs" #-}


hsqmlObjectGetHsValue :: (HsQMLObjectHandle) -> IO ((a))
hsqmlObjectGetHsValue a1 =
  withHsQMLObjectHandle a1 $ \a1' -> 
  hsqmlObjectGetHsValue'_ a1' >>= \res ->
  fromStable res >>= \res' ->
  return (res')

{-# LINE 104 "src/Graphics/QML/Internal/BindObj.chs" #-}


hsqmlObjectGetPointer :: (HsQMLObjectHandle) -> IO ((Ptr ()))
hsqmlObjectGetPointer a1 =
  withHsQMLObjectHandle a1 $ \a1' -> 
  hsqmlObjectGetPointer'_ a1' >>= \res ->
  let {res' = id res} in
  return (res')

{-# LINE 108 "src/Graphics/QML/Internal/BindObj.chs" #-}


hsqmlObjectGetJval :: (HsQMLObjectHandle) -> IO ((HsQMLJValHandle))
hsqmlObjectGetJval a1 =
  withHsQMLObjectHandle a1 $ \a1' -> 
  hsqmlObjectGetJval'_ a1' >>= \res ->
  let {res' = id res} in
  return (res')

{-# LINE 112 "src/Graphics/QML/Internal/BindObj.chs" #-}


hsqmlGetObjectFromPointer :: (Ptr ()) -> IO ((HsQMLObjectHandle))
hsqmlGetObjectFromPointer a1 =
  let {a1' = id a1} in 
  hsqmlGetObjectFromPointer'_ a1' >>= \res ->
  newObjectHandle res >>= \res' ->
  return (res')

{-# LINE 116 "src/Graphics/QML/Internal/BindObj.chs" #-}


hsqmlGetObjectFromJval :: (HsQMLJValHandle) -> IO ((HsQMLObjectHandle))
hsqmlGetObjectFromJval a1 =
  let {a1' = id a1} in 
  hsqmlGetObjectFromJval'_ a1' >>= \res ->
  newObjectHandle res >>= \res' ->
  return (res')

{-# LINE 120 "src/Graphics/QML/Internal/BindObj.chs" #-}


hsqmlObjectReferenceHandle :: (Ptr HsQMLObjectHandle) -> (Bool) -> IO ()
hsqmlObjectReferenceHandle a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromBool a2} in 
  hsqmlObjectReferenceHandle'_ a1' a2' >>
  return ()

{-# LINE 125 "src/Graphics/QML/Internal/BindObj.chs" #-}


copyObjectHandle :: HsQMLObjectHandle -> Bool -> IO HsQMLObjectHandle
copyObjectHandle (HsQMLObjectHandle fp) weak = do
    withForeignPtr fp $ \p -> do
        hsqmlObjectReferenceHandle p weak
        fp' <- newForeignPtr final p
        return $ HsQMLObjectHandle fp'
    where final = if weak
                  then hsqmlFinaliseObjectWeakHandlePtr
                  else hsqmlFinaliseObjectHandlePtr

hsqmlFireSignal :: (HsQMLObjectHandle) -> (Int) -> (Ptr (Ptr ())) -> IO ()
hsqmlFireSignal :: HsQMLObjectHandle -> Int -> Ptr (Ptr ()) -> IO ()
hsqmlFireSignal HsQMLObjectHandle
a1 Int
a2 Ptr (Ptr ())
a3 =
  HsQMLObjectHandle -> (Ptr HsQMLObjectHandle -> IO ()) -> IO ()
forall b.
HsQMLObjectHandle -> (Ptr HsQMLObjectHandle -> IO b) -> IO b
withHsQMLObjectHandle HsQMLObjectHandle
a1 ((Ptr HsQMLObjectHandle -> IO ()) -> IO ())
-> (Ptr HsQMLObjectHandle -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr HsQMLObjectHandle
a1' -> 
  let {a2' :: CInt
a2' = Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
a2} in 
  let {a3' :: Ptr (Ptr ())
a3' = Ptr (Ptr ()) -> Ptr (Ptr ())
forall a. a -> a
id Ptr (Ptr ())
a3} in 
  Ptr HsQMLObjectHandle -> CInt -> Ptr (Ptr ()) -> IO ()
hsqmlFireSignal'_ Ptr HsQMLObjectHandle
a1' CInt
a2' Ptr (Ptr ())
a3' IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
  () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

{-# LINE 141 "src/Graphics/QML/Internal/BindObj.chs" #-}


newtype HsQMLObjFinaliserHandle = HsQMLObjFinaliserHandle (C2HSImp.ForeignPtr (HsQMLObjFinaliserHandle))
withHsQMLObjFinaliserHandle :: HsQMLObjFinaliserHandle -> (C2HSImp.Ptr HsQMLObjFinaliserHandle -> IO b) -> IO b
withHsQMLObjFinaliserHandle (HsQMLObjFinaliserHandle fptr) = C2HSImp.withForeignPtr fptr
{-# LINE 143 "src/Graphics/QML/Internal/BindObj.chs" #-}


foreign import ccall "hsqml.h &hsqml_finalise_obj_finaliser"
  hsqmlFinaliseObjFinaliserPtr :: FunPtr (Ptr HsQMLObjFinaliserHandle -> IO ())

type ObjFinaliserFunc = Ptr HsQMLObjectHandle -> IO ()

foreign import ccall "wrapper"  
  marshalObjFinaliser :: ObjFinaliserFunc -> IO (FunPtr ObjFinaliserFunc)

newObjFinaliserHandle ::
    Ptr HsQMLObjFinaliserHandle -> IO HsQMLObjFinaliserHandle
newObjFinaliserHandle :: Ptr HsQMLObjFinaliserHandle -> IO HsQMLObjFinaliserHandle
newObjFinaliserHandle Ptr HsQMLObjFinaliserHandle
p = do
    ForeignPtr HsQMLObjFinaliserHandle
fp <- FinalizerPtr HsQMLObjFinaliserHandle
-> Ptr HsQMLObjFinaliserHandle
-> IO (ForeignPtr HsQMLObjFinaliserHandle)
forall a. FinalizerPtr a -> Ptr a -> IO (ForeignPtr a)
newForeignPtr FinalizerPtr HsQMLObjFinaliserHandle
hsqmlFinaliseObjFinaliserPtr Ptr HsQMLObjFinaliserHandle
p
    HsQMLObjFinaliserHandle -> IO HsQMLObjFinaliserHandle
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (HsQMLObjFinaliserHandle -> IO HsQMLObjFinaliserHandle)
-> HsQMLObjFinaliserHandle -> IO HsQMLObjFinaliserHandle
forall a b. (a -> b) -> a -> b
$ ForeignPtr HsQMLObjFinaliserHandle -> HsQMLObjFinaliserHandle
HsQMLObjFinaliserHandle ForeignPtr HsQMLObjFinaliserHandle
fp

hsqmlCreateObjFinaliser :: (FunPtr ObjFinaliserFunc) -> IO ((HsQMLObjFinaliserHandle))
hsqmlCreateObjFinaliser :: FinalizerPtr HsQMLObjectHandle -> IO HsQMLObjFinaliserHandle
hsqmlCreateObjFinaliser FinalizerPtr HsQMLObjectHandle
a1 =
  let {a1' :: FinalizerPtr HsQMLObjectHandle
a1' = FinalizerPtr HsQMLObjectHandle -> FinalizerPtr HsQMLObjectHandle
forall a. a -> a
id FinalizerPtr HsQMLObjectHandle
a1} in 
  FinalizerPtr HsQMLObjectHandle -> IO (Ptr HsQMLObjFinaliserHandle)
hsqmlCreateObjFinaliser'_ FinalizerPtr HsQMLObjectHandle
a1' IO (Ptr HsQMLObjFinaliserHandle)
-> (Ptr HsQMLObjFinaliserHandle -> IO HsQMLObjFinaliserHandle)
-> IO HsQMLObjFinaliserHandle
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \Ptr HsQMLObjFinaliserHandle
res ->
  Ptr HsQMLObjFinaliserHandle -> IO HsQMLObjFinaliserHandle
newObjFinaliserHandle Ptr HsQMLObjFinaliserHandle
res IO HsQMLObjFinaliserHandle
-> (HsQMLObjFinaliserHandle -> IO HsQMLObjFinaliserHandle)
-> IO HsQMLObjFinaliserHandle
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \HsQMLObjFinaliserHandle
res' ->
  HsQMLObjFinaliserHandle -> IO HsQMLObjFinaliserHandle
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (HsQMLObjFinaliserHandle
res')

{-# LINE 161 "src/Graphics/QML/Internal/BindObj.chs" #-}


hsqmlObjectAddFinaliser :: (HsQMLObjectHandle) -> (HsQMLObjFinaliserHandle) -> IO ()
hsqmlObjectAddFinaliser a1 a2 =
  withHsQMLObjectHandle a1 $ \a1' -> 
  withHsQMLObjFinaliserHandle a2 $ \a2' -> 
  hsqmlObjectAddFinaliser'_ a1' a2' >>
  return ()

{-# LINE 166 "src/Graphics/QML/Internal/BindObj.chs" #-}



foreign import ccall unsafe "Graphics/QML/Internal/BindObj.chs.h hsqml_get_next_class_id"
  hsqmlGetNextClassId'_ :: (IO C2HSImp.CInt)

foreign import ccall unsafe "Graphics/QML/Internal/BindObj.chs.h hsqml_create_class"
  hsqmlCreateClass'_ :: ((C2HSImp.Ptr C2HSImp.CUInt) -> ((C2HSImp.Ptr C2HSImp.CUInt) -> ((C2HSImp.Ptr C2HSImp.CChar) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr (C2HSImp.FunPtr ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (IO ()))))) -> ((C2HSImp.Ptr (C2HSImp.FunPtr ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (IO ()))))) -> (IO (C2HSImp.Ptr (HsQMLClassHandle)))))))))

foreign import ccall unsafe "Graphics/QML/Internal/BindObj.chs.h hsqml_create_object"
  hsqmlCreateObject'_ :: ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr (HsQMLClassHandle)) -> (IO (C2HSImp.Ptr (HsQMLObjectHandle)))))

foreign import ccall unsafe "Graphics/QML/Internal/BindObj.chs.h hsqml_object_set_active"
  hsqmlObjectSetActive'_ :: ((C2HSImp.Ptr (HsQMLObjectHandle)) -> (IO C2HSImp.CInt))

foreign import ccall unsafe "Graphics/QML/Internal/BindObj.chs.h hsqml_object_get_hs_typerep"
  hsqmlObjectGetHsTyperep'_ :: ((C2HSImp.Ptr (HsQMLObjectHandle)) -> (IO (C2HSImp.Ptr ())))

foreign import ccall unsafe "Graphics/QML/Internal/BindObj.chs.h hsqml_object_get_hs_value"
  hsqmlObjectGetHsValue'_ :: ((C2HSImp.Ptr (HsQMLObjectHandle)) -> (IO (C2HSImp.Ptr ())))

foreign import ccall unsafe "Graphics/QML/Internal/BindObj.chs.h hsqml_object_get_pointer"
  hsqmlObjectGetPointer'_ :: ((C2HSImp.Ptr (HsQMLObjectHandle)) -> (IO (C2HSImp.Ptr ())))

foreign import ccall unsafe "Graphics/QML/Internal/BindObj.chs.h hsqml_object_get_jval"
  hsqmlObjectGetJval'_ :: ((C2HSImp.Ptr (HsQMLObjectHandle)) -> (IO (HsQMLJValHandle)))

foreign import ccall unsafe "Graphics/QML/Internal/BindObj.chs.h hsqml_get_object_from_pointer"
  hsqmlGetObjectFromPointer'_ :: ((C2HSImp.Ptr ()) -> (IO (C2HSImp.Ptr (HsQMLObjectHandle))))

foreign import ccall unsafe "Graphics/QML/Internal/BindObj.chs.h hsqml_get_object_from_jval"
  hsqmlGetObjectFromJval'_ :: ((HsQMLJValHandle) -> (IO (C2HSImp.Ptr (HsQMLObjectHandle))))

foreign import ccall unsafe "Graphics/QML/Internal/BindObj.chs.h hsqml_object_reference_handle"
  hsqmlObjectReferenceHandle'_ :: ((C2HSImp.Ptr (HsQMLObjectHandle)) -> (C2HSImp.CInt -> (IO ())))

foreign import ccall safe "Graphics/QML/Internal/BindObj.chs.h hsqml_fire_signal"
  hsqmlFireSignal'_ :: ((C2HSImp.Ptr (HsQMLObjectHandle)) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (IO ()))))

foreign import ccall unsafe "Graphics/QML/Internal/BindObj.chs.h hsqml_create_obj_finaliser"
  hsqmlCreateObjFinaliser'_ :: ((C2HSImp.FunPtr ((C2HSImp.Ptr (HsQMLObjectHandle)) -> (IO ()))) -> (IO (C2HSImp.Ptr (HsQMLObjFinaliserHandle))))

foreign import ccall unsafe "Graphics/QML/Internal/BindObj.chs.h hsqml_object_add_finaliser"
  hsqmlObjectAddFinaliser'_ :: ((C2HSImp.Ptr (HsQMLObjectHandle)) -> ((C2HSImp.Ptr (HsQMLObjFinaliserHandle)) -> (IO ())))