packages feed

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

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

module Graphics.UI.Qtah.Generated.Core.QMetaMethod (
  QMetaMethodValue (..),
  QMetaMethodConstPtr (..),
  access,
  isValid,
  methodIndex,
  methodSignature,
  methodType,
  name,
  parameterCount,
  parameterNames,
  parameterType,
  parameterTypes,
  returnType,
  revision,
  tag,
  typeName,
  QMetaMethodPtr (..),
  nE,
  eQ,
  QMetaMethodConst (..),
  castQMetaMethodToConst,
  QMetaMethod (..),
  castQMetaMethodToNonconst,
  newCopy,
  QMetaMethodSuper (..),
  QMetaMethodSuperConst (..),
  QMetaMethodAccess (..),
  QMetaMethodMethodType (..),
  ) where

import Control.Monad ((>=>))
import qualified Data.ByteString as QtahDBS
import qualified Foreign as HoppyF
import qualified Foreign.C as HoppyFC
import qualified Foreign.Hoppy.Runtime as HoppyFHR
import qualified Graphics.UI.Qtah.Generated.Core.QByteArray as M12
import qualified Graphics.UI.Qtah.Generated.Core.QList.QByteArray as M196
import Prelude (($), (.), (/=), (=<<), (==), (>>=))
import qualified Prelude as HoppyP

foreign import ccall "genpop__QMetaMethod_newCopy" newCopy' ::  HoppyF.Ptr QMetaMethodConst -> HoppyP.IO (HoppyF.Ptr QMetaMethod)
foreign import ccall "genpop__QMetaMethod_access" access' ::  HoppyF.Ptr QMetaMethodConst -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QMetaMethod_isValid" isValid' ::  HoppyF.Ptr QMetaMethodConst -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QMetaMethod_methodIndex" methodIndex' ::  HoppyF.Ptr QMetaMethodConst -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QMetaMethod_methodSignature" methodSignature' ::  HoppyF.Ptr QMetaMethodConst -> HoppyP.IO (HoppyF.Ptr M12.QByteArrayConst)
foreign import ccall "genpop__QMetaMethod_methodType" methodType' ::  HoppyF.Ptr QMetaMethodConst -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QMetaMethod_name" name' ::  HoppyF.Ptr QMetaMethodConst -> HoppyP.IO (HoppyF.Ptr M12.QByteArrayConst)
foreign import ccall "genpop__QMetaMethod_parameterCount" parameterCount' ::  HoppyF.Ptr QMetaMethodConst -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QMetaMethod_parameterNames" parameterNames' ::  HoppyF.Ptr QMetaMethodConst -> HoppyP.IO (HoppyF.Ptr M196.QListQByteArrayConst)
foreign import ccall "genpop__QMetaMethod_parameterType" parameterType' ::  HoppyF.Ptr QMetaMethodConst -> HoppyFC.CInt -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QMetaMethod_parameterTypes" parameterTypes' ::  HoppyF.Ptr QMetaMethodConst -> HoppyP.IO (HoppyF.Ptr M196.QListQByteArrayConst)
foreign import ccall "genpop__QMetaMethod_returnType" returnType' ::  HoppyF.Ptr QMetaMethodConst -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QMetaMethod_revision" revision' ::  HoppyF.Ptr QMetaMethodConst -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QMetaMethod_tag" tag' ::  HoppyF.Ptr QMetaMethodConst -> HoppyP.IO (HoppyF.Ptr HoppyFC.CChar)
foreign import ccall "genpop__QMetaMethod_typeName" typeName' ::  HoppyF.Ptr QMetaMethodConst -> HoppyP.IO (HoppyF.Ptr HoppyFC.CChar)
foreign import ccall "genpop__QMetaMethod_NE" nE' ::  HoppyF.Ptr QMetaMethod -> HoppyF.Ptr QMetaMethodConst -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QMetaMethod_EQ" eQ' ::  HoppyF.Ptr QMetaMethod -> HoppyF.Ptr QMetaMethodConst -> HoppyP.IO HoppyFC.CBool
foreign import ccall "gendel__QMetaMethod" delete'QMetaMethod :: HoppyF.Ptr QMetaMethodConst -> HoppyP.IO ()
foreign import ccall "&gendel__QMetaMethod" deletePtr'QMetaMethod :: HoppyF.FunPtr (HoppyF.Ptr QMetaMethodConst -> HoppyP.IO ())

class QMetaMethodValue a where
  withQMetaMethodPtr :: a -> (QMetaMethodConst -> HoppyP.IO b) -> HoppyP.IO b

instance {-# OVERLAPPABLE #-} QMetaMethodConstPtr a => QMetaMethodValue a where
  withQMetaMethodPtr = HoppyP.flip ($) . toQMetaMethodConst

class (HoppyFHR.CppPtr this) => QMetaMethodConstPtr this where
  toQMetaMethodConst :: this -> QMetaMethodConst

access :: (QMetaMethodValue this) => (this) {- ^ this -} -> (HoppyP.IO QMetaMethodAccess)
access arg'1 =
  withQMetaMethodPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.toCppEnum
  ) =<<
  (access' arg'1')

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

methodIndex :: (QMetaMethodValue this) => (this) {- ^ this -} -> (HoppyP.IO HoppyP.Int)
methodIndex arg'1 =
  withQMetaMethodPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) =<<
  (methodIndex' arg'1')

methodSignature :: (QMetaMethodValue this) => (this) {- ^ this -} -> (HoppyP.IO QtahDBS.ByteString)
methodSignature arg'1 =
  withQMetaMethodPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (HoppyFHR.decodeAndDelete . M12.QByteArrayConst) =<<
  (methodSignature' arg'1')

methodType :: (QMetaMethodValue this) => (this) {- ^ this -} -> (HoppyP.IO QMetaMethodMethodType)
methodType arg'1 =
  withQMetaMethodPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.toCppEnum
  ) =<<
  (methodType' arg'1')

name :: (QMetaMethodValue this) => (this) {- ^ this -} -> (HoppyP.IO QtahDBS.ByteString)
name arg'1 =
  withQMetaMethodPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (HoppyFHR.decodeAndDelete . M12.QByteArrayConst) =<<
  (name' arg'1')

parameterCount :: (QMetaMethodValue this) => (this) {- ^ this -} -> (HoppyP.IO HoppyP.Int)
parameterCount arg'1 =
  withQMetaMethodPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) =<<
  (parameterCount' arg'1')

parameterNames :: (QMetaMethodValue this) => (this) {- ^ this -} -> (HoppyP.IO [QtahDBS.ByteString])
parameterNames arg'1 =
  withQMetaMethodPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (HoppyFHR.decodeAndDelete . M196.QListQByteArrayConst) =<<
  (parameterNames' arg'1')

parameterType :: (QMetaMethodValue this) => (this) {- ^ this -} -> (HoppyP.Int) -> (HoppyP.IO HoppyP.Int)
parameterType arg'1 arg'2 =
  withQMetaMethodPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) arg'2 >>= \arg'2' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) =<<
  (parameterType' arg'1' arg'2')

parameterTypes :: (QMetaMethodValue this) => (this) {- ^ this -} -> (HoppyP.IO [QtahDBS.ByteString])
parameterTypes arg'1 =
  withQMetaMethodPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (HoppyFHR.decodeAndDelete . M196.QListQByteArrayConst) =<<
  (parameterTypes' arg'1')

returnType :: (QMetaMethodValue this) => (this) {- ^ this -} -> (HoppyP.IO HoppyP.Int)
returnType arg'1 =
  withQMetaMethodPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) =<<
  (returnType' arg'1')

revision :: (QMetaMethodValue this) => (this) {- ^ this -} -> (HoppyP.IO HoppyP.Int)
revision arg'1 =
  withQMetaMethodPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) =<<
  (revision' arg'1')

tag :: (QMetaMethodValue this) => (this) {- ^ this -} -> (HoppyP.IO (HoppyF.Ptr HoppyFC.CChar))
tag arg'1 =
  withQMetaMethodPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (tag' arg'1')

typeName :: (QMetaMethodValue this) => (this) {- ^ this -} -> (HoppyP.IO (HoppyF.Ptr HoppyFC.CChar))
typeName arg'1 =
  withQMetaMethodPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (typeName' arg'1')

class (QMetaMethodConstPtr this) => QMetaMethodPtr this where
  toQMetaMethod :: this -> QMetaMethod

nE :: (QMetaMethodPtr this, QMetaMethodValue arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.IO HoppyP.Bool)
nE arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQMetaMethod arg'1) $ \arg'1' ->
  withQMetaMethodPtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  (
    (HoppyP.return . (/= 0))
  ) =<<
  (nE' arg'1' arg'2')

eQ :: (QMetaMethodPtr this, QMetaMethodValue arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.IO HoppyP.Bool)
eQ arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQMetaMethod arg'1) $ \arg'1' ->
  withQMetaMethodPtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  (
    (HoppyP.return . (/= 0))
  ) =<<
  (eQ' arg'1' arg'2')

data QMetaMethodConst =
    QMetaMethodConst (HoppyF.Ptr QMetaMethodConst)
  | QMetaMethodConstGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QMetaMethodConst)
  deriving (HoppyP.Show)

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

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

castQMetaMethodToConst :: QMetaMethod -> QMetaMethodConst
castQMetaMethodToConst (QMetaMethod ptr') = QMetaMethodConst $ HoppyF.castPtr ptr'
castQMetaMethodToConst (QMetaMethodGc fptr' ptr') = QMetaMethodConstGc fptr' $ HoppyF.castPtr ptr'

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

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

instance HoppyFHR.Copyable QMetaMethodConst QMetaMethod where copy = newCopy

instance QMetaMethodConstPtr QMetaMethodConst where
  toQMetaMethodConst = HoppyP.id

data QMetaMethod =
    QMetaMethod (HoppyF.Ptr QMetaMethod)
  | QMetaMethodGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QMetaMethod)
  deriving (HoppyP.Show)

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

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

castQMetaMethodToNonconst :: QMetaMethodConst -> QMetaMethod
castQMetaMethodToNonconst (QMetaMethodConst ptr') = QMetaMethod $ HoppyF.castPtr ptr'
castQMetaMethodToNonconst (QMetaMethodConstGc fptr' ptr') = QMetaMethodGc fptr' $ HoppyF.castPtr ptr'

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

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

instance HoppyFHR.Copyable QMetaMethod QMetaMethod where copy = newCopy

instance QMetaMethodConstPtr QMetaMethod where
  toQMetaMethodConst (QMetaMethod ptr') = QMetaMethodConst $ (HoppyF.castPtr :: HoppyF.Ptr QMetaMethod -> HoppyF.Ptr QMetaMethodConst) ptr'
  toQMetaMethodConst (QMetaMethodGc fptr' ptr') = QMetaMethodConstGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr QMetaMethod -> HoppyF.Ptr QMetaMethodConst) ptr'

instance QMetaMethodPtr QMetaMethod where
  toQMetaMethod = HoppyP.id

newCopy :: (QMetaMethodValue arg'1) => (arg'1) -> (HoppyP.IO QMetaMethod)
newCopy arg'1 =
  withQMetaMethodPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  HoppyP.fmap QMetaMethod
  (newCopy' arg'1')

class QMetaMethodSuper a where
  downToQMetaMethod :: a -> QMetaMethod


class QMetaMethodSuperConst a where
  downToQMetaMethodConst :: a -> QMetaMethodConst


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

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

instance HoppyFHR.Decodable QMetaMethod (QMetaMethod) where
  decode = HoppyFHR.decode . toQMetaMethodConst

instance HoppyFHR.Decodable QMetaMethodConst (QMetaMethod) where
  decode =
    HoppyFHR.copy >=> HoppyFHR.toGc

data QMetaMethodAccess =
  Private
  | Protected
  | Public
  | UnknownQMetaMethodAccess (HoppyFC.CInt)
  deriving (HoppyP.Show)

instance HoppyFHR.CppEnum (HoppyFC.CInt) QMetaMethodAccess where
  fromCppEnum Private = 0
  fromCppEnum Protected = 1
  fromCppEnum Public = 2
  fromCppEnum (UnknownQMetaMethodAccess n) = n
  
  toCppEnum (0) = Private
  toCppEnum (1) = Protected
  toCppEnum (2) = Public
  toCppEnum n = UnknownQMetaMethodAccess n

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

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

data QMetaMethodMethodType =
  Method
  | Signal
  | Slot
  | Constructor
  | UnknownQMetaMethodMethodType (HoppyFC.CInt)
  deriving (HoppyP.Show)

instance HoppyFHR.CppEnum (HoppyFC.CInt) QMetaMethodMethodType where
  fromCppEnum Method = 0
  fromCppEnum Signal = 1
  fromCppEnum Slot = 2
  fromCppEnum Constructor = 3
  fromCppEnum (UnknownQMetaMethodMethodType n) = n
  
  toCppEnum (0) = Method
  toCppEnum (1) = Signal
  toCppEnum (2) = Slot
  toCppEnum (3) = Constructor
  toCppEnum n = UnknownQMetaMethodMethodType n

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

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