packages feed

qtah-qt5-0.8.0: src/Graphics/UI/Qtah/Generated/Core/QAnimationGroup.hs

{-# LANGUAGE FlexibleContexts, FlexibleInstances, ForeignFunctionInterface, MonoLocalBinds, MultiParamTypeClasses, ScopedTypeVariables, TypeSynonymInstances, UndecidableInstances #-}
---------- GENERATED FILE, EDITS WILL BE LOST ----------

module Graphics.UI.Qtah.Generated.Core.QAnimationGroup (
  castQAnimationGroupToQAbstractAnimation,
  castQAbstractAnimationToQAnimationGroup,
  castQAnimationGroupToQObject,
  castQObjectToQAnimationGroup,
  QAnimationGroupValue (..),
  QAnimationGroupConstPtr (..),
  animationAt,
  animationCount,
  duration,
  indexOfAnimation,
  QAnimationGroupPtr (..),
  addAnimation,
  clear,
  insertAnimation,
  removeAnimation,
  takeAnimation,
  QAnimationGroupConst (..),
  castQAnimationGroupToConst,
  QAnimationGroup (..),
  castQAnimationGroupToNonconst,
  QAnimationGroupSuper (..),
  QAnimationGroupSuperConst (..),
  ) where

import qualified Foreign as HoppyF
import qualified Foreign.C as HoppyFC
import qualified Foreign.Hoppy.Runtime as HoppyFHR
import qualified Graphics.UI.Qtah.Generated.Core.QAbstractAnimation as M2
import qualified Graphics.UI.Qtah.Generated.Core.QObject as M94
import Prelude (($), (.), (=<<), (==), (>>=))
import qualified Prelude as HoppyP

foreign import ccall "genpop__QAnimationGroup_addAnimation" addAnimation' ::  HoppyF.Ptr QAnimationGroup -> HoppyF.Ptr M2.QAbstractAnimation -> HoppyP.IO ()
foreign import ccall "genpop__QAnimationGroup_animationAt" animationAt' ::  HoppyF.Ptr QAnimationGroupConst -> HoppyFC.CInt -> HoppyP.IO (HoppyF.Ptr M2.QAbstractAnimation)
foreign import ccall "genpop__QAnimationGroup_animationCount" animationCount' ::  HoppyF.Ptr QAnimationGroupConst -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QAnimationGroup_clear" clear' ::  HoppyF.Ptr QAnimationGroup -> HoppyP.IO ()
foreign import ccall "genpop__QAnimationGroup_duration" duration' ::  HoppyF.Ptr QAnimationGroupConst -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QAnimationGroup_indexOfAnimation" indexOfAnimation' ::  HoppyF.Ptr QAnimationGroupConst -> HoppyF.Ptr M2.QAbstractAnimation -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QAnimationGroup_insertAnimation" insertAnimation' ::  HoppyF.Ptr QAnimationGroup -> HoppyFC.CInt -> HoppyF.Ptr M2.QAbstractAnimation -> HoppyP.IO ()
foreign import ccall "genpop__QAnimationGroup_removeAnimation" removeAnimation' ::  HoppyF.Ptr QAnimationGroup -> HoppyF.Ptr M2.QAbstractAnimation -> HoppyP.IO ()
foreign import ccall "genpop__QAnimationGroup_takeAnimation" takeAnimation' ::  HoppyF.Ptr QAnimationGroup -> HoppyFC.CInt -> HoppyP.IO (HoppyF.Ptr M2.QAbstractAnimation)
foreign import ccall "gencast__QAnimationGroup__QAbstractAnimation" castQAnimationGroupToQAbstractAnimation :: HoppyF.Ptr QAnimationGroupConst -> HoppyF.Ptr M2.QAbstractAnimationConst
foreign import ccall "gencast__QAbstractAnimation__QAnimationGroup" castQAbstractAnimationToQAnimationGroup :: HoppyF.Ptr M2.QAbstractAnimationConst -> HoppyF.Ptr QAnimationGroupConst
foreign import ccall "gencast__QAnimationGroup__QObject" castQAnimationGroupToQObject :: HoppyF.Ptr QAnimationGroupConst -> HoppyF.Ptr M94.QObjectConst
foreign import ccall "gencast__QObject__QAnimationGroup" castQObjectToQAnimationGroup :: HoppyF.Ptr M94.QObjectConst -> HoppyF.Ptr QAnimationGroupConst
foreign import ccall "gendel__QAnimationGroup" delete'QAnimationGroup :: HoppyF.Ptr QAnimationGroupConst -> HoppyP.IO ()
foreign import ccall "&gendel__QAnimationGroup" deletePtr'QAnimationGroup :: HoppyF.FunPtr (HoppyF.Ptr QAnimationGroupConst -> HoppyP.IO ())

class QAnimationGroupValue a where
  withQAnimationGroupPtr :: a -> (QAnimationGroupConst -> HoppyP.IO b) -> HoppyP.IO b

instance {-# OVERLAPPABLE #-} QAnimationGroupConstPtr a => QAnimationGroupValue a where
  withQAnimationGroupPtr = HoppyP.flip ($) . toQAnimationGroupConst

class (M2.QAbstractAnimationConstPtr this) => QAnimationGroupConstPtr this where
  toQAnimationGroupConst :: this -> QAnimationGroupConst

animationAt :: (QAnimationGroupValue this) => (this) {- ^ this -} -> (HoppyP.Int) -> (HoppyP.IO M2.QAbstractAnimation)
animationAt arg'1 arg'2 =
  withQAnimationGroupPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) arg'2 >>= \arg'2' ->
  HoppyP.fmap M2.QAbstractAnimation
  (animationAt' arg'1' arg'2')

animationCount :: (QAnimationGroupValue this) => (this) {- ^ this -} -> (HoppyP.IO HoppyP.Int)
animationCount arg'1 =
  withQAnimationGroupPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) =<<
  (animationCount' arg'1')

duration :: (QAnimationGroupValue this) => (this) {- ^ this -} -> (HoppyP.IO HoppyP.Int)
duration arg'1 =
  withQAnimationGroupPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) =<<
  (duration' arg'1')

indexOfAnimation :: (QAnimationGroupValue this, M2.QAbstractAnimationPtr arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.IO HoppyP.Int)
indexOfAnimation arg'1 arg'2 =
  withQAnimationGroupPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  HoppyFHR.withCppPtr (M2.toQAbstractAnimation arg'2) $ \arg'2' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) =<<
  (indexOfAnimation' arg'1' arg'2')

class (QAnimationGroupConstPtr this, M2.QAbstractAnimationPtr this) => QAnimationGroupPtr this where
  toQAnimationGroup :: this -> QAnimationGroup

addAnimation :: (QAnimationGroupPtr this, M2.QAbstractAnimationPtr arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.IO ())
addAnimation arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQAnimationGroup arg'1) $ \arg'1' ->
  HoppyFHR.withCppPtr (M2.toQAbstractAnimation arg'2) $ \arg'2' ->
  (addAnimation' arg'1' arg'2')

clear :: (QAnimationGroupPtr this) => (this) {- ^ this -} -> (HoppyP.IO ())
clear arg'1 =
  HoppyFHR.withCppPtr (toQAnimationGroup arg'1) $ \arg'1' ->
  (clear' arg'1')

insertAnimation :: (QAnimationGroupPtr this, M2.QAbstractAnimationPtr arg'3) => (this) {- ^ this -} -> (HoppyP.Int) -> (arg'3) -> (HoppyP.IO ())
insertAnimation arg'1 arg'2 arg'3 =
  HoppyFHR.withCppPtr (toQAnimationGroup arg'1) $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) arg'2 >>= \arg'2' ->
  HoppyFHR.withCppPtr (M2.toQAbstractAnimation arg'3) $ \arg'3' ->
  (insertAnimation' arg'1' arg'2' arg'3')

removeAnimation :: (QAnimationGroupPtr this, M2.QAbstractAnimationPtr arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.IO ())
removeAnimation arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQAnimationGroup arg'1) $ \arg'1' ->
  HoppyFHR.withCppPtr (M2.toQAbstractAnimation arg'2) $ \arg'2' ->
  (removeAnimation' arg'1' arg'2')

takeAnimation :: (QAnimationGroupPtr this) => (this) {- ^ this -} -> (HoppyP.Int) -> (HoppyP.IO M2.QAbstractAnimation)
takeAnimation arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQAnimationGroup arg'1) $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) arg'2 >>= \arg'2' ->
  HoppyP.fmap M2.QAbstractAnimation
  (takeAnimation' arg'1' arg'2')

data QAnimationGroupConst =
    QAnimationGroupConst (HoppyF.Ptr QAnimationGroupConst)
  | QAnimationGroupConstGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QAnimationGroupConst)
  deriving (HoppyP.Show)

instance HoppyP.Eq QAnimationGroupConst where
  x == y = HoppyFHR.toPtr x == HoppyFHR.toPtr y

instance HoppyP.Ord QAnimationGroupConst where
  compare x y = HoppyP.compare (HoppyFHR.toPtr x) (HoppyFHR.toPtr y)

castQAnimationGroupToConst :: QAnimationGroup -> QAnimationGroupConst
castQAnimationGroupToConst (QAnimationGroup ptr') = QAnimationGroupConst $ HoppyF.castPtr ptr'
castQAnimationGroupToConst (QAnimationGroupGc fptr' ptr') = QAnimationGroupConstGc fptr' $ HoppyF.castPtr ptr'

instance HoppyFHR.CppPtr QAnimationGroupConst where
  nullptr = QAnimationGroupConst HoppyF.nullPtr
  
  withCppPtr (QAnimationGroupConst ptr') f' = f' ptr'
  withCppPtr (QAnimationGroupConstGc fptr' ptr') f' = HoppyF.withForeignPtr fptr' $ \_ -> f' ptr'
  
  toPtr (QAnimationGroupConst ptr') = ptr'
  toPtr (QAnimationGroupConstGc _ ptr') = ptr'
  
  touchCppPtr (QAnimationGroupConst _) = HoppyP.return ()
  touchCppPtr (QAnimationGroupConstGc fptr' _) = HoppyF.touchForeignPtr fptr'

instance HoppyFHR.Deletable QAnimationGroupConst where
  delete (QAnimationGroupConst ptr') = delete'QAnimationGroup ptr'
  delete (QAnimationGroupConstGc _ _) = HoppyP.fail $ HoppyP.concat ["Deletable.delete: Asked to delete a GC-managed ", "QAnimationGroupConst", " object."]
  
  toGc this'@(QAnimationGroupConst ptr') = if ptr' == HoppyF.nullPtr then HoppyP.return this' else HoppyP.fmap (HoppyP.flip QAnimationGroupConstGc ptr') $ HoppyF.newForeignPtr (HoppyF.castFunPtr deletePtr'QAnimationGroup :: HoppyF.FunPtr (HoppyF.Ptr () -> HoppyP.IO ())) (HoppyF.castPtr ptr' :: HoppyF.Ptr ())
  toGc this'@(QAnimationGroupConstGc {}) = HoppyP.return this'

instance QAnimationGroupConstPtr QAnimationGroupConst where
  toQAnimationGroupConst = HoppyP.id

instance M2.QAbstractAnimationConstPtr QAnimationGroupConst where
  toQAbstractAnimationConst (QAnimationGroupConst ptr') = M2.QAbstractAnimationConst $ castQAnimationGroupToQAbstractAnimation ptr'
  toQAbstractAnimationConst (QAnimationGroupConstGc fptr' ptr') = M2.QAbstractAnimationConstGc fptr' $ castQAnimationGroupToQAbstractAnimation ptr'

instance M94.QObjectConstPtr QAnimationGroupConst where
  toQObjectConst (QAnimationGroupConst ptr') = M94.QObjectConst $ castQAnimationGroupToQObject ptr'
  toQObjectConst (QAnimationGroupConstGc fptr' ptr') = M94.QObjectConstGc fptr' $ castQAnimationGroupToQObject ptr'

data QAnimationGroup =
    QAnimationGroup (HoppyF.Ptr QAnimationGroup)
  | QAnimationGroupGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QAnimationGroup)
  deriving (HoppyP.Show)

instance HoppyP.Eq QAnimationGroup where
  x == y = HoppyFHR.toPtr x == HoppyFHR.toPtr y

instance HoppyP.Ord QAnimationGroup where
  compare x y = HoppyP.compare (HoppyFHR.toPtr x) (HoppyFHR.toPtr y)

castQAnimationGroupToNonconst :: QAnimationGroupConst -> QAnimationGroup
castQAnimationGroupToNonconst (QAnimationGroupConst ptr') = QAnimationGroup $ HoppyF.castPtr ptr'
castQAnimationGroupToNonconst (QAnimationGroupConstGc fptr' ptr') = QAnimationGroupGc fptr' $ HoppyF.castPtr ptr'

instance HoppyFHR.CppPtr QAnimationGroup where
  nullptr = QAnimationGroup HoppyF.nullPtr
  
  withCppPtr (QAnimationGroup ptr') f' = f' ptr'
  withCppPtr (QAnimationGroupGc fptr' ptr') f' = HoppyF.withForeignPtr fptr' $ \_ -> f' ptr'
  
  toPtr (QAnimationGroup ptr') = ptr'
  toPtr (QAnimationGroupGc _ ptr') = ptr'
  
  touchCppPtr (QAnimationGroup _) = HoppyP.return ()
  touchCppPtr (QAnimationGroupGc fptr' _) = HoppyF.touchForeignPtr fptr'

instance HoppyFHR.Deletable QAnimationGroup where
  delete (QAnimationGroup ptr') = delete'QAnimationGroup $ (HoppyF.castPtr ptr' :: HoppyF.Ptr QAnimationGroupConst)
  delete (QAnimationGroupGc _ _) = HoppyP.fail $ HoppyP.concat ["Deletable.delete: Asked to delete a GC-managed ", "QAnimationGroup", " object."]
  
  toGc this'@(QAnimationGroup ptr') = if ptr' == HoppyF.nullPtr then HoppyP.return this' else HoppyP.fmap (HoppyP.flip QAnimationGroupGc ptr') $ HoppyF.newForeignPtr (HoppyF.castFunPtr deletePtr'QAnimationGroup :: HoppyF.FunPtr (HoppyF.Ptr () -> HoppyP.IO ())) (HoppyF.castPtr ptr' :: HoppyF.Ptr ())
  toGc this'@(QAnimationGroupGc {}) = HoppyP.return this'

instance QAnimationGroupConstPtr QAnimationGroup where
  toQAnimationGroupConst (QAnimationGroup ptr') = QAnimationGroupConst $ (HoppyF.castPtr :: HoppyF.Ptr QAnimationGroup -> HoppyF.Ptr QAnimationGroupConst) ptr'
  toQAnimationGroupConst (QAnimationGroupGc fptr' ptr') = QAnimationGroupConstGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr QAnimationGroup -> HoppyF.Ptr QAnimationGroupConst) ptr'

instance QAnimationGroupPtr QAnimationGroup where
  toQAnimationGroup = HoppyP.id

instance M2.QAbstractAnimationConstPtr QAnimationGroup where
  toQAbstractAnimationConst (QAnimationGroup ptr') = M2.QAbstractAnimationConst $ castQAnimationGroupToQAbstractAnimation $ (HoppyF.castPtr :: HoppyF.Ptr QAnimationGroup -> HoppyF.Ptr QAnimationGroupConst) ptr'
  toQAbstractAnimationConst (QAnimationGroupGc fptr' ptr') = M2.QAbstractAnimationConstGc fptr' $ castQAnimationGroupToQAbstractAnimation $ (HoppyF.castPtr :: HoppyF.Ptr QAnimationGroup -> HoppyF.Ptr QAnimationGroupConst) ptr'

instance M2.QAbstractAnimationPtr QAnimationGroup where
  toQAbstractAnimation (QAnimationGroup ptr') = M2.QAbstractAnimation $ (HoppyF.castPtr :: HoppyF.Ptr M2.QAbstractAnimationConst -> HoppyF.Ptr M2.QAbstractAnimation) $ castQAnimationGroupToQAbstractAnimation $ (HoppyF.castPtr :: HoppyF.Ptr QAnimationGroup -> HoppyF.Ptr QAnimationGroupConst) ptr'
  toQAbstractAnimation (QAnimationGroupGc fptr' ptr') = M2.QAbstractAnimationGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr M2.QAbstractAnimationConst -> HoppyF.Ptr M2.QAbstractAnimation) $ castQAnimationGroupToQAbstractAnimation $ (HoppyF.castPtr :: HoppyF.Ptr QAnimationGroup -> HoppyF.Ptr QAnimationGroupConst) ptr'

instance M94.QObjectConstPtr QAnimationGroup where
  toQObjectConst (QAnimationGroup ptr') = M94.QObjectConst $ castQAnimationGroupToQObject $ (HoppyF.castPtr :: HoppyF.Ptr QAnimationGroup -> HoppyF.Ptr QAnimationGroupConst) ptr'
  toQObjectConst (QAnimationGroupGc fptr' ptr') = M94.QObjectConstGc fptr' $ castQAnimationGroupToQObject $ (HoppyF.castPtr :: HoppyF.Ptr QAnimationGroup -> HoppyF.Ptr QAnimationGroupConst) ptr'

instance M94.QObjectPtr QAnimationGroup where
  toQObject (QAnimationGroup ptr') = M94.QObject $ (HoppyF.castPtr :: HoppyF.Ptr M94.QObjectConst -> HoppyF.Ptr M94.QObject) $ castQAnimationGroupToQObject $ (HoppyF.castPtr :: HoppyF.Ptr QAnimationGroup -> HoppyF.Ptr QAnimationGroupConst) ptr'
  toQObject (QAnimationGroupGc fptr' ptr') = M94.QObjectGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr M94.QObjectConst -> HoppyF.Ptr M94.QObject) $ castQAnimationGroupToQObject $ (HoppyF.castPtr :: HoppyF.Ptr QAnimationGroup -> HoppyF.Ptr QAnimationGroupConst) ptr'

class QAnimationGroupSuper a where
  downToQAnimationGroup :: a -> QAnimationGroup

instance QAnimationGroupSuper M2.QAbstractAnimation where
  downToQAnimationGroup = castQAnimationGroupToNonconst . cast' . M2.castQAbstractAnimationToConst
    where
      cast' (M2.QAbstractAnimationConst ptr') = QAnimationGroupConst $ castQAbstractAnimationToQAnimationGroup ptr'
      cast' (M2.QAbstractAnimationConstGc fptr' ptr') = QAnimationGroupConstGc fptr' $ castQAbstractAnimationToQAnimationGroup ptr'
instance QAnimationGroupSuper M94.QObject where
  downToQAnimationGroup = castQAnimationGroupToNonconst . cast' . M94.castQObjectToConst
    where
      cast' (M94.QObjectConst ptr') = QAnimationGroupConst $ castQObjectToQAnimationGroup ptr'
      cast' (M94.QObjectConstGc fptr' ptr') = QAnimationGroupConstGc fptr' $ castQObjectToQAnimationGroup ptr'

class QAnimationGroupSuperConst a where
  downToQAnimationGroupConst :: a -> QAnimationGroupConst

instance QAnimationGroupSuperConst M2.QAbstractAnimationConst where
  downToQAnimationGroupConst = cast'
    where
      cast' (M2.QAbstractAnimationConst ptr') = QAnimationGroupConst $ castQAbstractAnimationToQAnimationGroup ptr'
      cast' (M2.QAbstractAnimationConstGc fptr' ptr') = QAnimationGroupConstGc fptr' $ castQAbstractAnimationToQAnimationGroup ptr'
instance QAnimationGroupSuperConst M94.QObjectConst where
  downToQAnimationGroupConst = cast'
    where
      cast' (M94.QObjectConst ptr') = QAnimationGroupConst $ castQObjectToQAnimationGroup ptr'
      cast' (M94.QObjectConstGc fptr' ptr') = QAnimationGroupConstGc fptr' $ castQObjectToQAnimationGroup ptr'

instance HoppyFHR.Assignable (HoppyF.Ptr (HoppyF.Ptr QAnimationGroup)) QAnimationGroup where
  assign ptr' value' = HoppyF.poke ptr' $ HoppyFHR.toPtr value'

instance HoppyFHR.Decodable (HoppyF.Ptr (HoppyF.Ptr QAnimationGroup)) QAnimationGroup where
  decode = HoppyP.fmap QAnimationGroup . HoppyF.peek