packages feed

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

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

module Graphics.UI.Qtah.Generated.Core.QModelIndex (
  QModelIndexValue (..),
  QModelIndexConstPtr (..),
  child,
  column,
  getData,
  getDataWithRole,
  flags,
  isValid,
  model,
  parent,
  row,
  sibling,
  eQ,
  nE,
  QModelIndexPtr (..),
  aSSIGN,
  QModelIndexConst (..),
  castQModelIndexToConst,
  QModelIndex (..),
  castQModelIndexToNonconst,
  new,
  newCopy,
  QModelIndexSuper (..),
  QModelIndexSuperConst (..),
  ) where

import Control.Monad ((>=>))
import qualified Foreign as HoppyF
import qualified Foreign.C as HoppyFC
import qualified Foreign.Hoppy.Runtime as HoppyFHR
import qualified Graphics.UI.Qtah.Flags as QtahFlags
import {-# SOURCE #-} qualified Graphics.UI.Qtah.Generated.Core.QAbstractItemModel as M4
import qualified Graphics.UI.Qtah.Generated.Core.QVariant as M168
import qualified Graphics.UI.Qtah.Generated.Core.Types as M190
import Prelude (($), (.), (/=), (=<<), (==), (>>), (>>=))
import qualified Prelude as HoppyP
import qualified Prelude as QtahP

foreign import ccall "genpop__QModelIndex_new" new' ::  HoppyP.IO (HoppyF.Ptr QModelIndex)
foreign import ccall "genpop__QModelIndex_newCopy" newCopy' ::  HoppyF.Ptr QModelIndexConst -> HoppyP.IO (HoppyF.Ptr QModelIndex)
foreign import ccall "genpop__QModelIndex_child" child' ::  HoppyF.Ptr QModelIndexConst -> HoppyFC.CInt -> HoppyFC.CInt -> HoppyP.IO (HoppyF.Ptr QModelIndexConst)
foreign import ccall "genpop__QModelIndex_column" column' ::  HoppyF.Ptr QModelIndexConst -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QModelIndex_getData" getData' ::  HoppyF.Ptr QModelIndexConst -> HoppyP.IO (HoppyF.Ptr M168.QVariantConst)
foreign import ccall "genpop__QModelIndex_getDataWithRole" getDataWithRole' ::  HoppyF.Ptr QModelIndexConst -> HoppyFC.CInt -> HoppyP.IO (HoppyF.Ptr M168.QVariantConst)
foreign import ccall "genpop__QModelIndex_flags" flags' ::  HoppyF.Ptr QModelIndexConst -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QModelIndex_isValid" isValid' ::  HoppyF.Ptr QModelIndexConst -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QModelIndex_model" model' ::  HoppyF.Ptr QModelIndexConst -> HoppyP.IO (HoppyF.Ptr M4.QAbstractItemModelConst)
foreign import ccall "genpop__QModelIndex_parent" parent' ::  HoppyF.Ptr QModelIndexConst -> HoppyP.IO (HoppyF.Ptr QModelIndexConst)
foreign import ccall "genpop__QModelIndex_row" row' ::  HoppyF.Ptr QModelIndexConst -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QModelIndex_sibling" sibling' ::  HoppyF.Ptr QModelIndexConst -> HoppyFC.CInt -> HoppyFC.CInt -> HoppyP.IO (HoppyF.Ptr QModelIndexConst)
foreign import ccall "genpop__QModelIndex_EQ" eQ' ::  HoppyF.Ptr QModelIndexConst -> HoppyF.Ptr QModelIndexConst -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QModelIndex_NE" nE' ::  HoppyF.Ptr QModelIndexConst -> HoppyF.Ptr QModelIndexConst -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QModelIndex_ASSIGN" aSSIGN' ::  HoppyF.Ptr QModelIndex -> HoppyF.Ptr QModelIndexConst -> HoppyP.IO (HoppyF.Ptr QModelIndex)
foreign import ccall "gendel__QModelIndex" delete'QModelIndex :: HoppyF.Ptr QModelIndexConst -> HoppyP.IO ()
foreign import ccall "&gendel__QModelIndex" deletePtr'QModelIndex :: HoppyF.FunPtr (HoppyF.Ptr QModelIndexConst -> HoppyP.IO ())

class QModelIndexValue a where
  withQModelIndexPtr :: a -> (QModelIndexConst -> HoppyP.IO b) -> HoppyP.IO b

instance {-# OVERLAPPABLE #-} QModelIndexConstPtr a => QModelIndexValue a where
  withQModelIndexPtr = HoppyP.flip ($) . toQModelIndexConst

class (HoppyFHR.CppPtr this) => QModelIndexConstPtr this where
  toQModelIndexConst :: this -> QModelIndexConst

child :: (QModelIndexValue this) => (this) {- ^ this -} -> (HoppyP.Int) -> (HoppyP.Int) -> (HoppyP.IO QModelIndex)
child arg'1 arg'2 arg'3 =
  withQModelIndexPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) arg'2 >>= \arg'2' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) arg'3 >>= \arg'3' ->
  (HoppyFHR.decodeAndDelete . QModelIndexConst) =<<
  (child' arg'1' arg'2' arg'3')

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

getData :: (QModelIndexValue this) => (this) {- ^ this -} -> (HoppyP.IO M168.QVariant)
getData arg'1 =
  withQModelIndexPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (HoppyFHR.decodeAndDelete . M168.QVariantConst) =<<
  (getData' arg'1')

getDataWithRole :: (QModelIndexValue this) => (this) {- ^ this -} -> (M190.QtItemDataRole) -> (HoppyP.IO M168.QVariant)
getDataWithRole arg'1 arg'2 =
  withQModelIndexPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.fromCppEnum
  ) arg'2 >>= \arg'2' ->
  (HoppyFHR.decodeAndDelete . M168.QVariantConst) =<<
  (getDataWithRole' arg'1' arg'2')

flags :: (QModelIndexValue this) => (this) {- ^ this -} -> (HoppyP.IO M190.QtItemFlags)
flags arg'1 =
  withQModelIndexPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    QtahP.return . QtahFlags.numToFlags
  ) =<<
  (flags' arg'1')

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

model :: (QModelIndexValue this) => (this) {- ^ this -} -> (HoppyP.IO M4.QAbstractItemModelConst)
model arg'1 =
  withQModelIndexPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  HoppyP.fmap M4.QAbstractItemModelConst
  (model' arg'1')

parent :: (QModelIndexValue this) => (this) {- ^ this -} -> (HoppyP.IO QModelIndex)
parent arg'1 =
  withQModelIndexPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (HoppyFHR.decodeAndDelete . QModelIndexConst) =<<
  (parent' arg'1')

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

sibling :: (QModelIndexValue this) => (this) {- ^ this -} -> (HoppyP.Int) -> (HoppyP.Int) -> (HoppyP.IO QModelIndex)
sibling arg'1 arg'2 arg'3 =
  withQModelIndexPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) arg'2 >>= \arg'2' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) arg'3 >>= \arg'3' ->
  (HoppyFHR.decodeAndDelete . QModelIndexConst) =<<
  (sibling' arg'1' arg'2' arg'3')

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

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

class (QModelIndexConstPtr this) => QModelIndexPtr this where
  toQModelIndex :: this -> QModelIndex

aSSIGN :: (QModelIndexPtr this, QModelIndexValue arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.IO QModelIndex)
aSSIGN arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQModelIndex arg'1) $ \arg'1' ->
  withQModelIndexPtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  HoppyP.fmap QModelIndex
  (aSSIGN' arg'1' arg'2')

data QModelIndexConst =
    QModelIndexConst (HoppyF.Ptr QModelIndexConst)
  | QModelIndexConstGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QModelIndexConst)
  deriving (HoppyP.Show)

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

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

castQModelIndexToConst :: QModelIndex -> QModelIndexConst
castQModelIndexToConst (QModelIndex ptr') = QModelIndexConst $ HoppyF.castPtr ptr'
castQModelIndexToConst (QModelIndexGc fptr' ptr') = QModelIndexConstGc fptr' $ HoppyF.castPtr ptr'

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

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

instance HoppyFHR.Copyable QModelIndexConst QModelIndex where copy = newCopy

instance QModelIndexConstPtr QModelIndexConst where
  toQModelIndexConst = HoppyP.id

data QModelIndex =
    QModelIndex (HoppyF.Ptr QModelIndex)
  | QModelIndexGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QModelIndex)
  deriving (HoppyP.Show)

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

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

castQModelIndexToNonconst :: QModelIndexConst -> QModelIndex
castQModelIndexToNonconst (QModelIndexConst ptr') = QModelIndex $ HoppyF.castPtr ptr'
castQModelIndexToNonconst (QModelIndexConstGc fptr' ptr') = QModelIndexGc fptr' $ HoppyF.castPtr ptr'

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

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

instance HoppyFHR.Copyable QModelIndex QModelIndex where copy = newCopy

instance QModelIndexConstPtr QModelIndex where
  toQModelIndexConst (QModelIndex ptr') = QModelIndexConst $ (HoppyF.castPtr :: HoppyF.Ptr QModelIndex -> HoppyF.Ptr QModelIndexConst) ptr'
  toQModelIndexConst (QModelIndexGc fptr' ptr') = QModelIndexConstGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr QModelIndex -> HoppyF.Ptr QModelIndexConst) ptr'

instance QModelIndexPtr QModelIndex where
  toQModelIndex = HoppyP.id

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

newCopy :: (QModelIndexValue arg'1) => (arg'1) -> (HoppyP.IO QModelIndex)
newCopy arg'1 =
  withQModelIndexPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  HoppyP.fmap QModelIndex
  (newCopy' arg'1')

class QModelIndexSuper a where
  downToQModelIndex :: a -> QModelIndex


class QModelIndexSuperConst a where
  downToQModelIndexConst :: a -> QModelIndexConst


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

instance QModelIndexValue a => HoppyFHR.Assignable QModelIndex a where
  assign x' y' = aSSIGN x' y' >> HoppyP.return ()

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

instance HoppyFHR.Decodable QModelIndex (QModelIndex) where
  decode = HoppyFHR.decode . toQModelIndexConst

instance HoppyFHR.Decodable QModelIndexConst (QModelIndex) where
  decode =
    HoppyFHR.copy >=> HoppyFHR.toGc