packages feed

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

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

module Graphics.UI.Qtah.Generated.Core.QMetaEnum (
  QMetaEnumValue (..),
  QMetaEnumConstPtr (..),
  enumName,
  isFlag,
  isScoped,
  isValid,
  key,
  keyCount,
  keyToValue,
  keyToValueWithPtrBool,
  keysToValue,
  keysToValueWithPtrBool,
  name,
  scope,
  value,
  valueToKey,
  valueToKeys,
  QMetaEnumPtr (..),
  QMetaEnumConst (..),
  castQMetaEnumToConst,
  QMetaEnum (..),
  castQMetaEnumToNonconst,
  newCopy,
  QMetaEnumSuper (..),
  QMetaEnumSuperConst (..),
  ) 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 Prelude (($), (.), (/=), (=<<), (==), (>>=))
import qualified Prelude as HoppyP

foreign import ccall "genpop__QMetaEnum_newCopy" newCopy' ::  HoppyF.Ptr QMetaEnumConst -> HoppyP.IO (HoppyF.Ptr QMetaEnum)
foreign import ccall "genpop__QMetaEnum_enumName" enumName' ::  HoppyF.Ptr QMetaEnumConst -> HoppyP.IO (HoppyF.Ptr HoppyFC.CChar)
foreign import ccall "genpop__QMetaEnum_isFlag" isFlag' ::  HoppyF.Ptr QMetaEnumConst -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QMetaEnum_isScoped" isScoped' ::  HoppyF.Ptr QMetaEnumConst -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QMetaEnum_isValid" isValid' ::  HoppyF.Ptr QMetaEnumConst -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QMetaEnum_key" key' ::  HoppyF.Ptr QMetaEnumConst -> HoppyFC.CInt -> HoppyP.IO (HoppyF.Ptr HoppyFC.CChar)
foreign import ccall "genpop__QMetaEnum_keyCount" keyCount' ::  HoppyF.Ptr QMetaEnumConst -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QMetaEnum_keyToValue" keyToValue' ::  HoppyF.Ptr QMetaEnumConst -> HoppyF.Ptr HoppyFC.CChar -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QMetaEnum_keyToValueWithPtrBool" keyToValueWithPtrBool' ::  HoppyF.Ptr QMetaEnumConst -> HoppyF.Ptr HoppyFC.CChar -> HoppyF.Ptr HoppyFC.CBool -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QMetaEnum_keysToValue" keysToValue' ::  HoppyF.Ptr QMetaEnumConst -> HoppyF.Ptr HoppyFC.CChar -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QMetaEnum_keysToValueWithPtrBool" keysToValueWithPtrBool' ::  HoppyF.Ptr QMetaEnumConst -> HoppyF.Ptr HoppyFC.CChar -> HoppyF.Ptr HoppyFC.CBool -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QMetaEnum_name" name' ::  HoppyF.Ptr QMetaEnumConst -> HoppyP.IO (HoppyF.Ptr HoppyFC.CChar)
foreign import ccall "genpop__QMetaEnum_scope" scope' ::  HoppyF.Ptr QMetaEnumConst -> HoppyP.IO (HoppyF.Ptr HoppyFC.CChar)
foreign import ccall "genpop__QMetaEnum_value" value' ::  HoppyF.Ptr QMetaEnumConst -> HoppyFC.CInt -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QMetaEnum_valueToKey" valueToKey' ::  HoppyF.Ptr QMetaEnumConst -> HoppyFC.CInt -> HoppyP.IO (HoppyF.Ptr HoppyFC.CChar)
foreign import ccall "genpop__QMetaEnum_valueToKeys" valueToKeys' ::  HoppyF.Ptr QMetaEnumConst -> HoppyFC.CInt -> HoppyP.IO (HoppyF.Ptr M12.QByteArrayConst)
foreign import ccall "gendel__QMetaEnum" delete'QMetaEnum :: HoppyF.Ptr QMetaEnumConst -> HoppyP.IO ()
foreign import ccall "&gendel__QMetaEnum" deletePtr'QMetaEnum :: HoppyF.FunPtr (HoppyF.Ptr QMetaEnumConst -> HoppyP.IO ())

class QMetaEnumValue a where
  withQMetaEnumPtr :: a -> (QMetaEnumConst -> HoppyP.IO b) -> HoppyP.IO b

instance {-# OVERLAPPABLE #-} QMetaEnumConstPtr a => QMetaEnumValue a where
  withQMetaEnumPtr = HoppyP.flip ($) . toQMetaEnumConst

class (HoppyFHR.CppPtr this) => QMetaEnumConstPtr this where
  toQMetaEnumConst :: this -> QMetaEnumConst

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

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

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

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

key :: (QMetaEnumValue this) => (this) {- ^ this -} -> (HoppyP.Int) -> (HoppyP.IO (HoppyF.Ptr HoppyFC.CChar))
key arg'1 arg'2 =
  withQMetaEnumPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) arg'2 >>= \arg'2' ->
  (key' arg'1' arg'2')

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

keyToValue :: (QMetaEnumValue this) => (this) {- ^ this -} -> (HoppyF.Ptr HoppyFC.CChar) -> (HoppyP.IO HoppyP.Int)
keyToValue arg'1 arg'2 =
  withQMetaEnumPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  let arg'2' = arg'2 in
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) =<<
  (keyToValue' arg'1' arg'2')

keyToValueWithPtrBool :: (QMetaEnumValue this) => (this) {- ^ this -} -> (HoppyF.Ptr HoppyFC.CChar) -> (HoppyF.Ptr HoppyFC.CBool) -> (HoppyP.IO HoppyP.Int)
keyToValueWithPtrBool arg'1 arg'2 arg'3 =
  withQMetaEnumPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  let arg'2' = arg'2 in
  let arg'3' = arg'3 in
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) =<<
  (keyToValueWithPtrBool' arg'1' arg'2' arg'3')

keysToValue :: (QMetaEnumValue this) => (this) {- ^ this -} -> (HoppyF.Ptr HoppyFC.CChar) -> (HoppyP.IO HoppyP.Int)
keysToValue arg'1 arg'2 =
  withQMetaEnumPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  let arg'2' = arg'2 in
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) =<<
  (keysToValue' arg'1' arg'2')

keysToValueWithPtrBool :: (QMetaEnumValue this) => (this) {- ^ this -} -> (HoppyF.Ptr HoppyFC.CChar) -> (HoppyF.Ptr HoppyFC.CBool) -> (HoppyP.IO HoppyP.Int)
keysToValueWithPtrBool arg'1 arg'2 arg'3 =
  withQMetaEnumPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  let arg'2' = arg'2 in
  let arg'3' = arg'3 in
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) =<<
  (keysToValueWithPtrBool' arg'1' arg'2' arg'3')

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

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

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

valueToKey :: (QMetaEnumValue this) => (this) {- ^ this -} -> (HoppyP.Int) -> (HoppyP.IO (HoppyF.Ptr HoppyFC.CChar))
valueToKey arg'1 arg'2 =
  withQMetaEnumPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) arg'2 >>= \arg'2' ->
  (valueToKey' arg'1' arg'2')

valueToKeys :: (QMetaEnumValue this) => (this) {- ^ this -} -> (HoppyP.Int) -> (HoppyP.IO QtahDBS.ByteString)
valueToKeys arg'1 arg'2 =
  withQMetaEnumPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) arg'2 >>= \arg'2' ->
  (HoppyFHR.decodeAndDelete . M12.QByteArrayConst) =<<
  (valueToKeys' arg'1' arg'2')

class (QMetaEnumConstPtr this) => QMetaEnumPtr this where
  toQMetaEnum :: this -> QMetaEnum

data QMetaEnumConst =
    QMetaEnumConst (HoppyF.Ptr QMetaEnumConst)
  | QMetaEnumConstGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QMetaEnumConst)
  deriving (HoppyP.Show)

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

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

castQMetaEnumToConst :: QMetaEnum -> QMetaEnumConst
castQMetaEnumToConst (QMetaEnum ptr') = QMetaEnumConst $ HoppyF.castPtr ptr'
castQMetaEnumToConst (QMetaEnumGc fptr' ptr') = QMetaEnumConstGc fptr' $ HoppyF.castPtr ptr'

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

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

instance HoppyFHR.Copyable QMetaEnumConst QMetaEnum where copy = newCopy

instance QMetaEnumConstPtr QMetaEnumConst where
  toQMetaEnumConst = HoppyP.id

data QMetaEnum =
    QMetaEnum (HoppyF.Ptr QMetaEnum)
  | QMetaEnumGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QMetaEnum)
  deriving (HoppyP.Show)

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

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

castQMetaEnumToNonconst :: QMetaEnumConst -> QMetaEnum
castQMetaEnumToNonconst (QMetaEnumConst ptr') = QMetaEnum $ HoppyF.castPtr ptr'
castQMetaEnumToNonconst (QMetaEnumConstGc fptr' ptr') = QMetaEnumGc fptr' $ HoppyF.castPtr ptr'

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

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

instance HoppyFHR.Copyable QMetaEnum QMetaEnum where copy = newCopy

instance QMetaEnumConstPtr QMetaEnum where
  toQMetaEnumConst (QMetaEnum ptr') = QMetaEnumConst $ (HoppyF.castPtr :: HoppyF.Ptr QMetaEnum -> HoppyF.Ptr QMetaEnumConst) ptr'
  toQMetaEnumConst (QMetaEnumGc fptr' ptr') = QMetaEnumConstGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr QMetaEnum -> HoppyF.Ptr QMetaEnumConst) ptr'

instance QMetaEnumPtr QMetaEnum where
  toQMetaEnum = HoppyP.id

newCopy :: (QMetaEnumValue arg'1) => (arg'1) -> (HoppyP.IO QMetaEnum)
newCopy arg'1 =
  withQMetaEnumPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  HoppyP.fmap QMetaEnum
  (newCopy' arg'1')

class QMetaEnumSuper a where
  downToQMetaEnum :: a -> QMetaEnum


class QMetaEnumSuperConst a where
  downToQMetaEnumConst :: a -> QMetaEnumConst


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

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

instance HoppyFHR.Decodable QMetaEnum (QMetaEnum) where
  decode = HoppyFHR.decode . toQMetaEnumConst

instance HoppyFHR.Decodable QMetaEnumConst (QMetaEnum) where
  decode =
    HoppyFHR.copy >=> HoppyFHR.toGc