packages feed

qtah-qt5-0.8.0: src/Graphics/UI/Qtah/Generated/Gui/QDragLeaveEvent.hs

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

module Graphics.UI.Qtah.Generated.Gui.QDragLeaveEvent (
  castQDragLeaveEventToQEvent,
  castQEventToQDragLeaveEvent,
  QDragLeaveEventValue (..),
  QDragLeaveEventConstPtr (..),
  QDragLeaveEventPtr (..),
  QDragLeaveEventConst (..),
  castQDragLeaveEventToConst,
  QDragLeaveEvent (..),
  castQDragLeaveEventToNonconst,
  new,
  QDragLeaveEventSuper (..),
  QDragLeaveEventSuperConst (..),
  ) where

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

foreign import ccall "genpop__QDragLeaveEvent_new" new' ::  HoppyP.IO (HoppyF.Ptr QDragLeaveEvent)
foreign import ccall "gencast__QDragLeaveEvent__QEvent" castQDragLeaveEventToQEvent :: HoppyF.Ptr QDragLeaveEventConst -> HoppyF.Ptr M34.QEventConst
foreign import ccall "gencast__QEvent__QDragLeaveEvent" castQEventToQDragLeaveEvent :: HoppyF.Ptr M34.QEventConst -> HoppyF.Ptr QDragLeaveEventConst
foreign import ccall "gendel__QDragLeaveEvent" delete'QDragLeaveEvent :: HoppyF.Ptr QDragLeaveEventConst -> HoppyP.IO ()
foreign import ccall "&gendel__QDragLeaveEvent" deletePtr'QDragLeaveEvent :: HoppyF.FunPtr (HoppyF.Ptr QDragLeaveEventConst -> HoppyP.IO ())

class QDragLeaveEventValue a where
  withQDragLeaveEventPtr :: a -> (QDragLeaveEventConst -> HoppyP.IO b) -> HoppyP.IO b

instance {-# OVERLAPPABLE #-} QDragLeaveEventConstPtr a => QDragLeaveEventValue a where
  withQDragLeaveEventPtr = HoppyP.flip ($) . toQDragLeaveEventConst

class (M34.QEventConstPtr this) => QDragLeaveEventConstPtr this where
  toQDragLeaveEventConst :: this -> QDragLeaveEventConst

class (QDragLeaveEventConstPtr this, M34.QEventPtr this) => QDragLeaveEventPtr this where
  toQDragLeaveEvent :: this -> QDragLeaveEvent

data QDragLeaveEventConst =
    QDragLeaveEventConst (HoppyF.Ptr QDragLeaveEventConst)
  | QDragLeaveEventConstGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QDragLeaveEventConst)
  deriving (HoppyP.Show)

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

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

castQDragLeaveEventToConst :: QDragLeaveEvent -> QDragLeaveEventConst
castQDragLeaveEventToConst (QDragLeaveEvent ptr') = QDragLeaveEventConst $ HoppyF.castPtr ptr'
castQDragLeaveEventToConst (QDragLeaveEventGc fptr' ptr') = QDragLeaveEventConstGc fptr' $ HoppyF.castPtr ptr'

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

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

instance QDragLeaveEventConstPtr QDragLeaveEventConst where
  toQDragLeaveEventConst = HoppyP.id

instance M34.QEventConstPtr QDragLeaveEventConst where
  toQEventConst (QDragLeaveEventConst ptr') = M34.QEventConst $ castQDragLeaveEventToQEvent ptr'
  toQEventConst (QDragLeaveEventConstGc fptr' ptr') = M34.QEventConstGc fptr' $ castQDragLeaveEventToQEvent ptr'

data QDragLeaveEvent =
    QDragLeaveEvent (HoppyF.Ptr QDragLeaveEvent)
  | QDragLeaveEventGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QDragLeaveEvent)
  deriving (HoppyP.Show)

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

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

castQDragLeaveEventToNonconst :: QDragLeaveEventConst -> QDragLeaveEvent
castQDragLeaveEventToNonconst (QDragLeaveEventConst ptr') = QDragLeaveEvent $ HoppyF.castPtr ptr'
castQDragLeaveEventToNonconst (QDragLeaveEventConstGc fptr' ptr') = QDragLeaveEventGc fptr' $ HoppyF.castPtr ptr'

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

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

instance QDragLeaveEventConstPtr QDragLeaveEvent where
  toQDragLeaveEventConst (QDragLeaveEvent ptr') = QDragLeaveEventConst $ (HoppyF.castPtr :: HoppyF.Ptr QDragLeaveEvent -> HoppyF.Ptr QDragLeaveEventConst) ptr'
  toQDragLeaveEventConst (QDragLeaveEventGc fptr' ptr') = QDragLeaveEventConstGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr QDragLeaveEvent -> HoppyF.Ptr QDragLeaveEventConst) ptr'

instance QDragLeaveEventPtr QDragLeaveEvent where
  toQDragLeaveEvent = HoppyP.id

instance M34.QEventConstPtr QDragLeaveEvent where
  toQEventConst (QDragLeaveEvent ptr') = M34.QEventConst $ castQDragLeaveEventToQEvent $ (HoppyF.castPtr :: HoppyF.Ptr QDragLeaveEvent -> HoppyF.Ptr QDragLeaveEventConst) ptr'
  toQEventConst (QDragLeaveEventGc fptr' ptr') = M34.QEventConstGc fptr' $ castQDragLeaveEventToQEvent $ (HoppyF.castPtr :: HoppyF.Ptr QDragLeaveEvent -> HoppyF.Ptr QDragLeaveEventConst) ptr'

instance M34.QEventPtr QDragLeaveEvent where
  toQEvent (QDragLeaveEvent ptr') = M34.QEvent $ (HoppyF.castPtr :: HoppyF.Ptr M34.QEventConst -> HoppyF.Ptr M34.QEvent) $ castQDragLeaveEventToQEvent $ (HoppyF.castPtr :: HoppyF.Ptr QDragLeaveEvent -> HoppyF.Ptr QDragLeaveEventConst) ptr'
  toQEvent (QDragLeaveEventGc fptr' ptr') = M34.QEventGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr M34.QEventConst -> HoppyF.Ptr M34.QEvent) $ castQDragLeaveEventToQEvent $ (HoppyF.castPtr :: HoppyF.Ptr QDragLeaveEvent -> HoppyF.Ptr QDragLeaveEventConst) ptr'

new :: (HoppyP.IO QDragLeaveEvent)
new =
  HoppyP.fmap QDragLeaveEvent
  (new')

class QDragLeaveEventSuper a where
  downToQDragLeaveEvent :: a -> QDragLeaveEvent

instance QDragLeaveEventSuper M34.QEvent where
  downToQDragLeaveEvent = castQDragLeaveEventToNonconst . cast' . M34.castQEventToConst
    where
      cast' (M34.QEventConst ptr') = QDragLeaveEventConst $ castQEventToQDragLeaveEvent ptr'
      cast' (M34.QEventConstGc fptr' ptr') = QDragLeaveEventConstGc fptr' $ castQEventToQDragLeaveEvent ptr'

class QDragLeaveEventSuperConst a where
  downToQDragLeaveEventConst :: a -> QDragLeaveEventConst

instance QDragLeaveEventSuperConst M34.QEventConst where
  downToQDragLeaveEventConst = cast'
    where
      cast' (M34.QEventConst ptr') = QDragLeaveEventConst $ castQEventToQDragLeaveEvent ptr'
      cast' (M34.QEventConstGc fptr' ptr') = QDragLeaveEventConstGc fptr' $ castQEventToQDragLeaveEvent ptr'

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

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