packages feed

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

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

module Graphics.UI.Qtah.Generated.Gui.QBackingStore (
  QBackingStoreValue (..),
  QBackingStoreConstPtr (..),
  hasStaticContents,
  size,
  staticContents,
  window,
  QBackingStorePtr (..),
  beginPaint,
  endPaint,
  flush,
  flushWithWindow,
  flushAll,
  paintDevice,
  resize,
  scroll,
  setStaticContents,
  QBackingStoreConst (..),
  castQBackingStoreToConst,
  QBackingStore (..),
  castQBackingStoreToNonconst,
  new,
  QBackingStoreSuper (..),
  QBackingStoreSuperConst (..),
  ) where

import qualified Foreign as HoppyF
import qualified Foreign.C as HoppyFC
import qualified Foreign.Hoppy.Runtime as HoppyFHR
import qualified Graphics.UI.Qtah.Core.HSize as HSize
import qualified Graphics.UI.Qtah.Generated.Core.QPoint as M114
import qualified Graphics.UI.Qtah.Generated.Core.QSize as M134
import qualified Graphics.UI.Qtah.Generated.Gui.QPaintDevice as M304
import qualified Graphics.UI.Qtah.Generated.Gui.QRegion as M324
import qualified Graphics.UI.Qtah.Generated.Gui.QWindow as M342
import Prelude (($), (.), (/=), (=<<), (==), (>>=))
import qualified Prelude as HoppyP

foreign import ccall "genpop__QBackingStore_new" new' ::  HoppyF.Ptr M342.QWindow -> HoppyP.IO (HoppyF.Ptr QBackingStore)
foreign import ccall "genpop__QBackingStore_beginPaint" beginPaint' ::  HoppyF.Ptr QBackingStore -> HoppyF.Ptr M324.QRegionConst -> HoppyP.IO ()
foreign import ccall "genpop__QBackingStore_endPaint" endPaint' ::  HoppyF.Ptr QBackingStore -> HoppyP.IO ()
foreign import ccall "genpop__QBackingStore_flush" flush' ::  HoppyF.Ptr QBackingStore -> HoppyF.Ptr M324.QRegionConst -> HoppyP.IO ()
foreign import ccall "genpop__QBackingStore_flushWithWindow" flushWithWindow' ::  HoppyF.Ptr QBackingStore -> HoppyF.Ptr M324.QRegionConst -> HoppyF.Ptr M342.QWindow -> HoppyP.IO ()
foreign import ccall "genpop__QBackingStore_flushAll" flushAll' ::  HoppyF.Ptr QBackingStore -> HoppyF.Ptr M324.QRegionConst -> HoppyF.Ptr M342.QWindow -> HoppyF.Ptr M114.QPointConst -> HoppyP.IO ()
foreign import ccall "genpop__QBackingStore_hasStaticContents" hasStaticContents' ::  HoppyF.Ptr QBackingStoreConst -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QBackingStore_paintDevice" paintDevice' ::  HoppyF.Ptr QBackingStore -> HoppyP.IO (HoppyF.Ptr M304.QPaintDevice)
foreign import ccall "genpop__QBackingStore_resize" resize' ::  HoppyF.Ptr QBackingStore -> HoppyF.Ptr M134.QSizeConst -> HoppyP.IO ()
foreign import ccall "genpop__QBackingStore_scroll" scroll' ::  HoppyF.Ptr QBackingStore -> HoppyF.Ptr M324.QRegionConst -> HoppyFC.CInt -> HoppyFC.CInt -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QBackingStore_setStaticContents" setStaticContents' ::  HoppyF.Ptr QBackingStore -> HoppyF.Ptr M324.QRegionConst -> HoppyP.IO ()
foreign import ccall "genpop__QBackingStore_size" size' ::  HoppyF.Ptr QBackingStoreConst -> HoppyP.IO (HoppyF.Ptr M134.QSizeConst)
foreign import ccall "genpop__QBackingStore_staticContents" staticContents' ::  HoppyF.Ptr QBackingStoreConst -> HoppyP.IO (HoppyF.Ptr M324.QRegionConst)
foreign import ccall "genpop__QBackingStore_window" window' ::  HoppyF.Ptr QBackingStoreConst -> HoppyP.IO (HoppyF.Ptr M342.QWindow)
foreign import ccall "gendel__QBackingStore" delete'QBackingStore :: HoppyF.Ptr QBackingStoreConst -> HoppyP.IO ()
foreign import ccall "&gendel__QBackingStore" deletePtr'QBackingStore :: HoppyF.FunPtr (HoppyF.Ptr QBackingStoreConst -> HoppyP.IO ())

class QBackingStoreValue a where
  withQBackingStorePtr :: a -> (QBackingStoreConst -> HoppyP.IO b) -> HoppyP.IO b

instance {-# OVERLAPPABLE #-} QBackingStoreConstPtr a => QBackingStoreValue a where
  withQBackingStorePtr = HoppyP.flip ($) . toQBackingStoreConst

class (HoppyFHR.CppPtr this) => QBackingStoreConstPtr this where
  toQBackingStoreConst :: this -> QBackingStoreConst

hasStaticContents :: (QBackingStoreValue this) => (this) {- ^ this -} -> (HoppyP.IO HoppyP.Bool)
hasStaticContents arg'1 =
  withQBackingStorePtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    (HoppyP.return . (/= 0))
  ) =<<
  (hasStaticContents' arg'1')

size :: (QBackingStoreValue this) => (this) {- ^ this -} -> (HoppyP.IO HSize.HSize)
size arg'1 =
  withQBackingStorePtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (HoppyFHR.decodeAndDelete . M134.QSizeConst) =<<
  (size' arg'1')

staticContents :: (QBackingStoreValue this) => (this) {- ^ this -} -> (HoppyP.IO M324.QRegion)
staticContents arg'1 =
  withQBackingStorePtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (HoppyFHR.decodeAndDelete . M324.QRegionConst) =<<
  (staticContents' arg'1')

window :: (QBackingStoreValue this) => (this) {- ^ this -} -> (HoppyP.IO M342.QWindow)
window arg'1 =
  withQBackingStorePtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  HoppyP.fmap M342.QWindow
  (window' arg'1')

class (QBackingStoreConstPtr this) => QBackingStorePtr this where
  toQBackingStore :: this -> QBackingStore

beginPaint :: (QBackingStorePtr this, M324.QRegionValue arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.IO ())
beginPaint arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQBackingStore arg'1) $ \arg'1' ->
  M324.withQRegionPtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  (beginPaint' arg'1' arg'2')

endPaint :: (QBackingStorePtr this) => (this) {- ^ this -} -> (HoppyP.IO ())
endPaint arg'1 =
  HoppyFHR.withCppPtr (toQBackingStore arg'1) $ \arg'1' ->
  (endPaint' arg'1')

flush :: (QBackingStorePtr this, M324.QRegionValue arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.IO ())
flush arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQBackingStore arg'1) $ \arg'1' ->
  M324.withQRegionPtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  (flush' arg'1' arg'2')

flushWithWindow :: (QBackingStorePtr this, M324.QRegionValue arg'2, M342.QWindowPtr arg'3) => (this) {- ^ this -} -> (arg'2) -> (arg'3) -> (HoppyP.IO ())
flushWithWindow arg'1 arg'2 arg'3 =
  HoppyFHR.withCppPtr (toQBackingStore arg'1) $ \arg'1' ->
  M324.withQRegionPtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  HoppyFHR.withCppPtr (M342.toQWindow arg'3) $ \arg'3' ->
  (flushWithWindow' arg'1' arg'2' arg'3')

flushAll :: (QBackingStorePtr this, M324.QRegionValue arg'2, M342.QWindowPtr arg'3, M114.QPointValue arg'4) => (this) {- ^ this -} -> (arg'2) -> (arg'3) -> (arg'4) -> (HoppyP.IO ())
flushAll arg'1 arg'2 arg'3 arg'4 =
  HoppyFHR.withCppPtr (toQBackingStore arg'1) $ \arg'1' ->
  M324.withQRegionPtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  HoppyFHR.withCppPtr (M342.toQWindow arg'3) $ \arg'3' ->
  M114.withQPointPtr arg'4 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'4' ->
  (flushAll' arg'1' arg'2' arg'3' arg'4')

paintDevice :: (QBackingStorePtr this) => (this) {- ^ this -} -> (HoppyP.IO M304.QPaintDevice)
paintDevice arg'1 =
  HoppyFHR.withCppPtr (toQBackingStore arg'1) $ \arg'1' ->
  HoppyP.fmap M304.QPaintDevice
  (paintDevice' arg'1')

resize :: (QBackingStorePtr this, M134.QSizeValue arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.IO ())
resize arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQBackingStore arg'1) $ \arg'1' ->
  M134.withQSizePtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  (resize' arg'1' arg'2')

scroll :: (QBackingStorePtr this, M324.QRegionValue arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.Int) -> (HoppyP.Int) -> (HoppyP.IO HoppyP.Bool)
scroll arg'1 arg'2 arg'3 arg'4 =
  HoppyFHR.withCppPtr (toQBackingStore arg'1) $ \arg'1' ->
  M324.withQRegionPtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) arg'3 >>= \arg'3' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) arg'4 >>= \arg'4' ->
  (
    (HoppyP.return . (/= 0))
  ) =<<
  (scroll' arg'1' arg'2' arg'3' arg'4')

setStaticContents :: (QBackingStorePtr this, M324.QRegionValue arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.IO ())
setStaticContents arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQBackingStore arg'1) $ \arg'1' ->
  M324.withQRegionPtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  (setStaticContents' arg'1' arg'2')

data QBackingStoreConst =
    QBackingStoreConst (HoppyF.Ptr QBackingStoreConst)
  | QBackingStoreConstGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QBackingStoreConst)
  deriving (HoppyP.Show)

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

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

castQBackingStoreToConst :: QBackingStore -> QBackingStoreConst
castQBackingStoreToConst (QBackingStore ptr') = QBackingStoreConst $ HoppyF.castPtr ptr'
castQBackingStoreToConst (QBackingStoreGc fptr' ptr') = QBackingStoreConstGc fptr' $ HoppyF.castPtr ptr'

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

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

instance QBackingStoreConstPtr QBackingStoreConst where
  toQBackingStoreConst = HoppyP.id

data QBackingStore =
    QBackingStore (HoppyF.Ptr QBackingStore)
  | QBackingStoreGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QBackingStore)
  deriving (HoppyP.Show)

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

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

castQBackingStoreToNonconst :: QBackingStoreConst -> QBackingStore
castQBackingStoreToNonconst (QBackingStoreConst ptr') = QBackingStore $ HoppyF.castPtr ptr'
castQBackingStoreToNonconst (QBackingStoreConstGc fptr' ptr') = QBackingStoreGc fptr' $ HoppyF.castPtr ptr'

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

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

instance QBackingStoreConstPtr QBackingStore where
  toQBackingStoreConst (QBackingStore ptr') = QBackingStoreConst $ (HoppyF.castPtr :: HoppyF.Ptr QBackingStore -> HoppyF.Ptr QBackingStoreConst) ptr'
  toQBackingStoreConst (QBackingStoreGc fptr' ptr') = QBackingStoreConstGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr QBackingStore -> HoppyF.Ptr QBackingStoreConst) ptr'

instance QBackingStorePtr QBackingStore where
  toQBackingStore = HoppyP.id

new :: (M342.QWindowPtr arg'1) => (arg'1) -> (HoppyP.IO QBackingStore)
new arg'1 =
  HoppyFHR.withCppPtr (M342.toQWindow arg'1) $ \arg'1' ->
  HoppyP.fmap QBackingStore
  (new' arg'1')

class QBackingStoreSuper a where
  downToQBackingStore :: a -> QBackingStore


class QBackingStoreSuperConst a where
  downToQBackingStoreConst :: a -> QBackingStoreConst


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

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