packages feed

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

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

module Graphics.UI.Qtah.Generated.Gui.QSurface (
  QSurfaceValue (..),
  QSurfaceConstPtr (..),
  size,
  supportsOpenGL,
  surfaceClass,
  surfaceType,
  QSurfacePtr (..),
  QSurfaceConst (..),
  castQSurfaceToConst,
  QSurface (..),
  castQSurfaceToNonconst,
  QSurfaceSuper (..),
  QSurfaceSuperConst (..),
  QSurfaceSurfaceClass (..),
  QSurfaceSurfaceType (..),
  ) 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.QSize as M134
import Prelude (($), (.), (/=), (=<<), (==))
import qualified Prelude as HoppyP

foreign import ccall "genpop__QSurface_size" size' ::  HoppyF.Ptr QSurfaceConst -> HoppyP.IO (HoppyF.Ptr M134.QSizeConst)
foreign import ccall "genpop__QSurface_supportsOpenGL" supportsOpenGL' ::  HoppyF.Ptr QSurfaceConst -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QSurface_surfaceClass" surfaceClass' ::  HoppyF.Ptr QSurfaceConst -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QSurface_surfaceType" surfaceType' ::  HoppyF.Ptr QSurfaceConst -> HoppyP.IO HoppyFC.CInt
foreign import ccall "gendel__QSurface" delete'QSurface :: HoppyF.Ptr QSurfaceConst -> HoppyP.IO ()
foreign import ccall "&gendel__QSurface" deletePtr'QSurface :: HoppyF.FunPtr (HoppyF.Ptr QSurfaceConst -> HoppyP.IO ())

class QSurfaceValue a where
  withQSurfacePtr :: a -> (QSurfaceConst -> HoppyP.IO b) -> HoppyP.IO b

instance {-# OVERLAPPABLE #-} QSurfaceConstPtr a => QSurfaceValue a where
  withQSurfacePtr = HoppyP.flip ($) . toQSurfaceConst

class (HoppyFHR.CppPtr this) => QSurfaceConstPtr this where
  toQSurfaceConst :: this -> QSurfaceConst

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

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

surfaceClass :: (QSurfaceValue this) => (this) {- ^ this -} -> (HoppyP.IO QSurfaceSurfaceClass)
surfaceClass arg'1 =
  withQSurfacePtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.toCppEnum
  ) =<<
  (surfaceClass' arg'1')

surfaceType :: (QSurfaceValue this) => (this) {- ^ this -} -> (HoppyP.IO QSurfaceSurfaceType)
surfaceType arg'1 =
  withQSurfacePtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.toCppEnum
  ) =<<
  (surfaceType' arg'1')

class (QSurfaceConstPtr this) => QSurfacePtr this where
  toQSurface :: this -> QSurface

data QSurfaceConst =
    QSurfaceConst (HoppyF.Ptr QSurfaceConst)
  | QSurfaceConstGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QSurfaceConst)
  deriving (HoppyP.Show)

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

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

castQSurfaceToConst :: QSurface -> QSurfaceConst
castQSurfaceToConst (QSurface ptr') = QSurfaceConst $ HoppyF.castPtr ptr'
castQSurfaceToConst (QSurfaceGc fptr' ptr') = QSurfaceConstGc fptr' $ HoppyF.castPtr ptr'

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

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

instance QSurfaceConstPtr QSurfaceConst where
  toQSurfaceConst = HoppyP.id

data QSurface =
    QSurface (HoppyF.Ptr QSurface)
  | QSurfaceGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QSurface)
  deriving (HoppyP.Show)

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

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

castQSurfaceToNonconst :: QSurfaceConst -> QSurface
castQSurfaceToNonconst (QSurfaceConst ptr') = QSurface $ HoppyF.castPtr ptr'
castQSurfaceToNonconst (QSurfaceConstGc fptr' ptr') = QSurfaceGc fptr' $ HoppyF.castPtr ptr'

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

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

instance QSurfaceConstPtr QSurface where
  toQSurfaceConst (QSurface ptr') = QSurfaceConst $ (HoppyF.castPtr :: HoppyF.Ptr QSurface -> HoppyF.Ptr QSurfaceConst) ptr'
  toQSurfaceConst (QSurfaceGc fptr' ptr') = QSurfaceConstGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr QSurface -> HoppyF.Ptr QSurfaceConst) ptr'

instance QSurfacePtr QSurface where
  toQSurface = HoppyP.id

class QSurfaceSuper a where
  downToQSurface :: a -> QSurface


class QSurfaceSuperConst a where
  downToQSurfaceConst :: a -> QSurfaceConst


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

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

data QSurfaceSurfaceClass =
  Window
  | Offscreen
  | UnknownQSurfaceSurfaceClass (HoppyFC.CInt)
  deriving (HoppyP.Show)

instance HoppyFHR.CppEnum (HoppyFC.CInt) QSurfaceSurfaceClass where
  fromCppEnum Window = 0
  fromCppEnum Offscreen = 1
  fromCppEnum (UnknownQSurfaceSurfaceClass n) = n
  
  toCppEnum (0) = Window
  toCppEnum (1) = Offscreen
  toCppEnum n = UnknownQSurfaceSurfaceClass n

instance HoppyP.Eq QSurfaceSurfaceClass where
  x == y = HoppyFHR.fromCppEnum x == HoppyFHR.fromCppEnum y

instance HoppyP.Ord QSurfaceSurfaceClass where
  compare x y = HoppyP.compare (HoppyFHR.fromCppEnum x) (HoppyFHR.fromCppEnum y)

data QSurfaceSurfaceType =
  RasterSurface
  | OpenGlSurface
  | RasterGlSurface
  | UnknownQSurfaceSurfaceType (HoppyFC.CInt)
  deriving (HoppyP.Show)

instance HoppyFHR.CppEnum (HoppyFC.CInt) QSurfaceSurfaceType where
  fromCppEnum RasterSurface = 0
  fromCppEnum OpenGlSurface = 1
  fromCppEnum RasterGlSurface = 2
  fromCppEnum (UnknownQSurfaceSurfaceType n) = n
  
  toCppEnum (0) = RasterSurface
  toCppEnum (1) = OpenGlSurface
  toCppEnum (2) = RasterGlSurface
  toCppEnum n = UnknownQSurfaceSurfaceType n

instance HoppyP.Eq QSurfaceSurfaceType where
  x == y = HoppyFHR.fromCppEnum x == HoppyFHR.fromCppEnum y

instance HoppyP.Ord QSurfaceSurfaceType where
  compare x y = HoppyP.compare (HoppyFHR.fromCppEnum x) (HoppyFHR.fromCppEnum y)