{-# 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