packages feed

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

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

module Graphics.UI.Qtah.Generated.Core.QRandomGenerator64 (
  castQRandomGenerator64ToQRandomGenerator,
  QRandomGenerator64Value (..),
  QRandomGenerator64ConstPtr (..),
  eQ,
  nE,
  QRandomGenerator64Ptr (..),
  generate,
  cALL,
  aSSIGN,
  max,
  min,
  QRandomGenerator64Const (..),
  castQRandomGenerator64ToConst,
  QRandomGenerator64 (..),
  castQRandomGenerator64ToNonconst,
  newWithQuints,
  newWithQuintQsizetype,
  new,
  newWithQuint,
  newCopy,
  QRandomGenerator64Super (..),
  QRandomGenerator64SuperConst (..),
  ) where

import Control.Monad ((>=>))
import qualified Data.Word as HoppyDW
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.QRandomGenerator as M118
import Prelude (($), (.), (/=), (=<<), (==), (>>))
import qualified Prelude as HoppyP
import qualified System.Posix.Types as HoppySPT

foreign import ccall "genpop__QRandomGenerator64_newWithQuints" newWithQuints' ::  HoppyF.Ptr HoppyDW.Word32 -> HoppyF.Ptr HoppyDW.Word32 -> HoppyP.IO (HoppyF.Ptr QRandomGenerator64)
foreign import ccall "genpop__QRandomGenerator64_newWithQuintQsizetype" newWithQuintQsizetype' ::  HoppyF.Ptr HoppyDW.Word32 -> HoppySPT.CSsize -> HoppyP.IO (HoppyF.Ptr QRandomGenerator64)
foreign import ccall "genpop__QRandomGenerator64_new" new' ::  HoppyP.IO (HoppyF.Ptr QRandomGenerator64)
foreign import ccall "genpop__QRandomGenerator64_newWithQuint" newWithQuint' ::  HoppyDW.Word32 -> HoppyP.IO (HoppyF.Ptr QRandomGenerator64)
foreign import ccall "genpop__QRandomGenerator64_newCopy" newCopy' ::  HoppyF.Ptr QRandomGenerator64Const -> HoppyP.IO (HoppyF.Ptr QRandomGenerator64)
foreign import ccall "genpop__QRandomGenerator64_generate" generate' ::  HoppyF.Ptr QRandomGenerator64 -> HoppyP.IO HoppyDW.Word64
foreign import ccall "genpop__QRandomGenerator64_max" max' ::  HoppyP.IO HoppyDW.Word64
foreign import ccall "genpop__QRandomGenerator64_min" min' ::  HoppyP.IO HoppyDW.Word64
foreign import ccall "genpop__QRandomGenerator64_CALL" cALL' ::  HoppyF.Ptr QRandomGenerator64 -> HoppyP.IO HoppyDW.Word64
foreign import ccall "genpop__QRandomGenerator64_EQ" eQ' ::  HoppyF.Ptr QRandomGenerator64Const -> HoppyF.Ptr QRandomGenerator64Const -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QRandomGenerator64_NE" nE' ::  HoppyF.Ptr QRandomGenerator64Const -> HoppyF.Ptr QRandomGenerator64Const -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QRandomGenerator64_ASSIGN" aSSIGN' ::  HoppyF.Ptr QRandomGenerator64 -> HoppyF.Ptr QRandomGenerator64Const -> HoppyP.IO (HoppyF.Ptr QRandomGenerator64)
foreign import ccall "gencast__QRandomGenerator64__QRandomGenerator" castQRandomGenerator64ToQRandomGenerator :: HoppyF.Ptr QRandomGenerator64Const -> HoppyF.Ptr M118.QRandomGeneratorConst
foreign import ccall "gendel__QRandomGenerator64" delete'QRandomGenerator64 :: HoppyF.Ptr QRandomGenerator64Const -> HoppyP.IO ()
foreign import ccall "&gendel__QRandomGenerator64" deletePtr'QRandomGenerator64 :: HoppyF.FunPtr (HoppyF.Ptr QRandomGenerator64Const -> HoppyP.IO ())

class QRandomGenerator64Value a where
  withQRandomGenerator64Ptr :: a -> (QRandomGenerator64Const -> HoppyP.IO b) -> HoppyP.IO b

instance {-# OVERLAPPABLE #-} QRandomGenerator64ConstPtr a => QRandomGenerator64Value a where
  withQRandomGenerator64Ptr = HoppyP.flip ($) . toQRandomGenerator64Const

class (M118.QRandomGeneratorConstPtr this) => QRandomGenerator64ConstPtr this where
  toQRandomGenerator64Const :: this -> QRandomGenerator64Const

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

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

class (QRandomGenerator64ConstPtr this, M118.QRandomGeneratorPtr this) => QRandomGenerator64Ptr this where
  toQRandomGenerator64 :: this -> QRandomGenerator64

generate :: (QRandomGenerator64Ptr this) => (this) {- ^ this -} -> (HoppyP.IO HoppyDW.Word64)
generate arg'1 =
  HoppyFHR.withCppPtr (toQRandomGenerator64 arg'1) $ \arg'1' ->
  (generate' arg'1')

cALL :: (QRandomGenerator64Ptr this) => (this) {- ^ this -} -> (HoppyP.IO HoppyDW.Word64)
cALL arg'1 =
  HoppyFHR.withCppPtr (toQRandomGenerator64 arg'1) $ \arg'1' ->
  (cALL' arg'1')

aSSIGN :: (QRandomGenerator64Ptr this, QRandomGenerator64Value arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.IO QRandomGenerator64)
aSSIGN arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQRandomGenerator64 arg'1) $ \arg'1' ->
  withQRandomGenerator64Ptr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  HoppyP.fmap QRandomGenerator64
  (aSSIGN' arg'1' arg'2')

max :: (HoppyP.IO HoppyDW.Word64)
max =
  (max')

min :: (HoppyP.IO HoppyDW.Word64)
min =
  (min')

data QRandomGenerator64Const =
    QRandomGenerator64Const (HoppyF.Ptr QRandomGenerator64Const)
  | QRandomGenerator64ConstGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QRandomGenerator64Const)
  deriving (HoppyP.Show)

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

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

castQRandomGenerator64ToConst :: QRandomGenerator64 -> QRandomGenerator64Const
castQRandomGenerator64ToConst (QRandomGenerator64 ptr') = QRandomGenerator64Const $ HoppyF.castPtr ptr'
castQRandomGenerator64ToConst (QRandomGenerator64Gc fptr' ptr') = QRandomGenerator64ConstGc fptr' $ HoppyF.castPtr ptr'

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

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

instance HoppyFHR.Copyable QRandomGenerator64Const QRandomGenerator64 where copy = newCopy

instance QRandomGenerator64ConstPtr QRandomGenerator64Const where
  toQRandomGenerator64Const = HoppyP.id

instance M118.QRandomGeneratorConstPtr QRandomGenerator64Const where
  toQRandomGeneratorConst (QRandomGenerator64Const ptr') = M118.QRandomGeneratorConst $ castQRandomGenerator64ToQRandomGenerator ptr'
  toQRandomGeneratorConst (QRandomGenerator64ConstGc fptr' ptr') = M118.QRandomGeneratorConstGc fptr' $ castQRandomGenerator64ToQRandomGenerator ptr'

data QRandomGenerator64 =
    QRandomGenerator64 (HoppyF.Ptr QRandomGenerator64)
  | QRandomGenerator64Gc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QRandomGenerator64)
  deriving (HoppyP.Show)

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

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

castQRandomGenerator64ToNonconst :: QRandomGenerator64Const -> QRandomGenerator64
castQRandomGenerator64ToNonconst (QRandomGenerator64Const ptr') = QRandomGenerator64 $ HoppyF.castPtr ptr'
castQRandomGenerator64ToNonconst (QRandomGenerator64ConstGc fptr' ptr') = QRandomGenerator64Gc fptr' $ HoppyF.castPtr ptr'

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

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

instance HoppyFHR.Copyable QRandomGenerator64 QRandomGenerator64 where copy = newCopy

instance QRandomGenerator64ConstPtr QRandomGenerator64 where
  toQRandomGenerator64Const (QRandomGenerator64 ptr') = QRandomGenerator64Const $ (HoppyF.castPtr :: HoppyF.Ptr QRandomGenerator64 -> HoppyF.Ptr QRandomGenerator64Const) ptr'
  toQRandomGenerator64Const (QRandomGenerator64Gc fptr' ptr') = QRandomGenerator64ConstGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr QRandomGenerator64 -> HoppyF.Ptr QRandomGenerator64Const) ptr'

instance QRandomGenerator64Ptr QRandomGenerator64 where
  toQRandomGenerator64 = HoppyP.id

instance M118.QRandomGeneratorConstPtr QRandomGenerator64 where
  toQRandomGeneratorConst (QRandomGenerator64 ptr') = M118.QRandomGeneratorConst $ castQRandomGenerator64ToQRandomGenerator $ (HoppyF.castPtr :: HoppyF.Ptr QRandomGenerator64 -> HoppyF.Ptr QRandomGenerator64Const) ptr'
  toQRandomGeneratorConst (QRandomGenerator64Gc fptr' ptr') = M118.QRandomGeneratorConstGc fptr' $ castQRandomGenerator64ToQRandomGenerator $ (HoppyF.castPtr :: HoppyF.Ptr QRandomGenerator64 -> HoppyF.Ptr QRandomGenerator64Const) ptr'

instance M118.QRandomGeneratorPtr QRandomGenerator64 where
  toQRandomGenerator (QRandomGenerator64 ptr') = M118.QRandomGenerator $ (HoppyF.castPtr :: HoppyF.Ptr M118.QRandomGeneratorConst -> HoppyF.Ptr M118.QRandomGenerator) $ castQRandomGenerator64ToQRandomGenerator $ (HoppyF.castPtr :: HoppyF.Ptr QRandomGenerator64 -> HoppyF.Ptr QRandomGenerator64Const) ptr'
  toQRandomGenerator (QRandomGenerator64Gc fptr' ptr') = M118.QRandomGeneratorGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr M118.QRandomGeneratorConst -> HoppyF.Ptr M118.QRandomGenerator) $ castQRandomGenerator64ToQRandomGenerator $ (HoppyF.castPtr :: HoppyF.Ptr QRandomGenerator64 -> HoppyF.Ptr QRandomGenerator64Const) ptr'

newWithQuints :: (HoppyF.Ptr HoppyDW.Word32) -> (HoppyF.Ptr HoppyDW.Word32) -> (HoppyP.IO QRandomGenerator64)
newWithQuints arg'1 arg'2 =
  let arg'1' = arg'1 in
  let arg'2' = arg'2 in
  HoppyP.fmap QRandomGenerator64
  (newWithQuints' arg'1' arg'2')

newWithQuintQsizetype :: (HoppyF.Ptr HoppyDW.Word32) -> (HoppySPT.CSsize) -> (HoppyP.IO QRandomGenerator64)
newWithQuintQsizetype arg'1 arg'2 =
  let arg'1' = arg'1 in
  let arg'2' = arg'2 in
  HoppyP.fmap QRandomGenerator64
  (newWithQuintQsizetype' arg'1' arg'2')

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

newWithQuint :: (HoppyDW.Word32) -> (HoppyP.IO QRandomGenerator64)
newWithQuint arg'1 =
  let arg'1' = arg'1 in
  HoppyP.fmap QRandomGenerator64
  (newWithQuint' arg'1')

newCopy :: (QRandomGenerator64Value arg'1) => (arg'1) -> (HoppyP.IO QRandomGenerator64)
newCopy arg'1 =
  withQRandomGenerator64Ptr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  HoppyP.fmap QRandomGenerator64
  (newCopy' arg'1')

class QRandomGenerator64Super a where
  downToQRandomGenerator64 :: a -> QRandomGenerator64


class QRandomGenerator64SuperConst a where
  downToQRandomGenerator64Const :: a -> QRandomGenerator64Const


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

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

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

instance HoppyFHR.Decodable QRandomGenerator64 (QRandomGenerator64) where
  decode = HoppyFHR.decode . toQRandomGenerator64Const

instance HoppyFHR.Decodable QRandomGenerator64Const (QRandomGenerator64) where
  decode =
    HoppyFHR.copy >=> HoppyFHR.toGc