packages feed

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

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

module Graphics.UI.Qtah.Generated.Core.QMessageLogContext (
  QMessageLogContextValue (..),
  QMessageLogContextConstPtr (..),
  QMessageLogContextPtr (..),
  QMessageLogContextConst (..),
  castQMessageLogContextToConst,
  QMessageLogContext (..),
  castQMessageLogContextToNonconst,
  QMessageLogContextSuper (..),
  QMessageLogContextSuperConst (..),
  ) where

import qualified Foreign as HoppyF
import qualified Foreign.Hoppy.Runtime as HoppyFHR
import Prelude (($), (.), (==))
import qualified Prelude as HoppyP

foreign import ccall "gendel__QMessageLogContext" delete'QMessageLogContext :: HoppyF.Ptr QMessageLogContextConst -> HoppyP.IO ()
foreign import ccall "&gendel__QMessageLogContext" deletePtr'QMessageLogContext :: HoppyF.FunPtr (HoppyF.Ptr QMessageLogContextConst -> HoppyP.IO ())

class QMessageLogContextValue a where
  withQMessageLogContextPtr :: a -> (QMessageLogContextConst -> HoppyP.IO b) -> HoppyP.IO b

instance {-# OVERLAPPABLE #-} QMessageLogContextConstPtr a => QMessageLogContextValue a where
  withQMessageLogContextPtr = HoppyP.flip ($) . toQMessageLogContextConst

class (HoppyFHR.CppPtr this) => QMessageLogContextConstPtr this where
  toQMessageLogContextConst :: this -> QMessageLogContextConst

class (QMessageLogContextConstPtr this) => QMessageLogContextPtr this where
  toQMessageLogContext :: this -> QMessageLogContext

data QMessageLogContextConst =
    QMessageLogContextConst (HoppyF.Ptr QMessageLogContextConst)
  | QMessageLogContextConstGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QMessageLogContextConst)
  deriving (HoppyP.Show)

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

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

castQMessageLogContextToConst :: QMessageLogContext -> QMessageLogContextConst
castQMessageLogContextToConst (QMessageLogContext ptr') = QMessageLogContextConst $ HoppyF.castPtr ptr'
castQMessageLogContextToConst (QMessageLogContextGc fptr' ptr') = QMessageLogContextConstGc fptr' $ HoppyF.castPtr ptr'

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

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

instance QMessageLogContextConstPtr QMessageLogContextConst where
  toQMessageLogContextConst = HoppyP.id

data QMessageLogContext =
    QMessageLogContext (HoppyF.Ptr QMessageLogContext)
  | QMessageLogContextGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QMessageLogContext)
  deriving (HoppyP.Show)

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

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

castQMessageLogContextToNonconst :: QMessageLogContextConst -> QMessageLogContext
castQMessageLogContextToNonconst (QMessageLogContextConst ptr') = QMessageLogContext $ HoppyF.castPtr ptr'
castQMessageLogContextToNonconst (QMessageLogContextConstGc fptr' ptr') = QMessageLogContextGc fptr' $ HoppyF.castPtr ptr'

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

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

instance QMessageLogContextConstPtr QMessageLogContext where
  toQMessageLogContextConst (QMessageLogContext ptr') = QMessageLogContextConst $ (HoppyF.castPtr :: HoppyF.Ptr QMessageLogContext -> HoppyF.Ptr QMessageLogContextConst) ptr'
  toQMessageLogContextConst (QMessageLogContextGc fptr' ptr') = QMessageLogContextConstGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr QMessageLogContext -> HoppyF.Ptr QMessageLogContextConst) ptr'

instance QMessageLogContextPtr QMessageLogContext where
  toQMessageLogContext = HoppyP.id

class QMessageLogContextSuper a where
  downToQMessageLogContext :: a -> QMessageLogContext


class QMessageLogContextSuperConst a where
  downToQMessageLogContextConst :: a -> QMessageLogContextConst


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

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