packages feed

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

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

module Graphics.UI.Qtah.Generated.Core.QDebugStateSaver (
  QDebugStateSaverValue (..),
  QDebugStateSaverConstPtr (..),
  QDebugStateSaverPtr (..),
  QDebugStateSaverConst (..),
  castQDebugStateSaverToConst,
  QDebugStateSaver (..),
  castQDebugStateSaverToNonconst,
  newWithDebug,
  QDebugStateSaverSuper (..),
  QDebugStateSaverSuperConst (..),
  ) where

import qualified Foreign as HoppyF
import qualified Foreign.Hoppy.Runtime as HoppyFHR
import qualified Graphics.UI.Qtah.Generated.Core.QDebug as M26
import Prelude (($), (.), (==))
import qualified Prelude as HoppyP

foreign import ccall "genpop__QDebugStateSaver_newWithDebug" newWithDebug' ::  HoppyF.Ptr M26.QDebug -> HoppyP.IO (HoppyF.Ptr QDebugStateSaver)
foreign import ccall "gendel__QDebugStateSaver" delete'QDebugStateSaver :: HoppyF.Ptr QDebugStateSaverConst -> HoppyP.IO ()
foreign import ccall "&gendel__QDebugStateSaver" deletePtr'QDebugStateSaver :: HoppyF.FunPtr (HoppyF.Ptr QDebugStateSaverConst -> HoppyP.IO ())

class QDebugStateSaverValue a where
  withQDebugStateSaverPtr :: a -> (QDebugStateSaverConst -> HoppyP.IO b) -> HoppyP.IO b

instance {-# OVERLAPPABLE #-} QDebugStateSaverConstPtr a => QDebugStateSaverValue a where
  withQDebugStateSaverPtr = HoppyP.flip ($) . toQDebugStateSaverConst

class (HoppyFHR.CppPtr this) => QDebugStateSaverConstPtr this where
  toQDebugStateSaverConst :: this -> QDebugStateSaverConst

class (QDebugStateSaverConstPtr this) => QDebugStateSaverPtr this where
  toQDebugStateSaver :: this -> QDebugStateSaver

data QDebugStateSaverConst =
    QDebugStateSaverConst (HoppyF.Ptr QDebugStateSaverConst)
  | QDebugStateSaverConstGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QDebugStateSaverConst)
  deriving (HoppyP.Show)

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

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

castQDebugStateSaverToConst :: QDebugStateSaver -> QDebugStateSaverConst
castQDebugStateSaverToConst (QDebugStateSaver ptr') = QDebugStateSaverConst $ HoppyF.castPtr ptr'
castQDebugStateSaverToConst (QDebugStateSaverGc fptr' ptr') = QDebugStateSaverConstGc fptr' $ HoppyF.castPtr ptr'

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

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

instance QDebugStateSaverConstPtr QDebugStateSaverConst where
  toQDebugStateSaverConst = HoppyP.id

data QDebugStateSaver =
    QDebugStateSaver (HoppyF.Ptr QDebugStateSaver)
  | QDebugStateSaverGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QDebugStateSaver)
  deriving (HoppyP.Show)

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

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

castQDebugStateSaverToNonconst :: QDebugStateSaverConst -> QDebugStateSaver
castQDebugStateSaverToNonconst (QDebugStateSaverConst ptr') = QDebugStateSaver $ HoppyF.castPtr ptr'
castQDebugStateSaverToNonconst (QDebugStateSaverConstGc fptr' ptr') = QDebugStateSaverGc fptr' $ HoppyF.castPtr ptr'

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

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

instance QDebugStateSaverConstPtr QDebugStateSaver where
  toQDebugStateSaverConst (QDebugStateSaver ptr') = QDebugStateSaverConst $ (HoppyF.castPtr :: HoppyF.Ptr QDebugStateSaver -> HoppyF.Ptr QDebugStateSaverConst) ptr'
  toQDebugStateSaverConst (QDebugStateSaverGc fptr' ptr') = QDebugStateSaverConstGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr QDebugStateSaver -> HoppyF.Ptr QDebugStateSaverConst) ptr'

instance QDebugStateSaverPtr QDebugStateSaver where
  toQDebugStateSaver = HoppyP.id

newWithDebug :: (M26.QDebugPtr arg'1) => (arg'1) -> (HoppyP.IO QDebugStateSaver)
newWithDebug arg'1 =
  HoppyFHR.withCppPtr (M26.toQDebug arg'1) $ \arg'1' ->
  HoppyP.fmap QDebugStateSaver
  (newWithDebug' arg'1')

class QDebugStateSaverSuper a where
  downToQDebugStateSaver :: a -> QDebugStateSaver


class QDebugStateSaverSuperConst a where
  downToQDebugStateSaverConst :: a -> QDebugStateSaverConst


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

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