packages feed

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

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

module Graphics.UI.Qtah.Generated.Core.QResource (
  QResourceValue (..),
  QResourceConstPtr (..),
  absoluteFilePath,
  compressionAlgorithm,
  getData,
  fileName,
  isCompressed,
  isValid,
  lastModified,
  size,
  QResourcePtr (..),
  setFileName,
  registerResourcePath,
  registerResourcePathAndTree,
  registerResourceData,
  registerResourceDataAndTree,
  unregisterResourcePath,
  unregisterResourcePathAndTree,
  unregisterResourceData,
  unregisterResourceDataAndTree,
  QResourceConst (..),
  castQResourceToConst,
  QResource (..),
  castQResourceToNonconst,
  new,
  newWithFile,
  QResourceSuper (..),
  QResourceSuperConst (..),
  QResourceCompression (..),
  ) where

import qualified Data.Int as HoppyDI
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.QDateTime as M24
import qualified Graphics.UI.Qtah.Generated.Core.QString as M142
import Prelude (($), (.), (/=), (=<<), (==))
import qualified Prelude as HoppyP
import qualified Prelude as QtahP

foreign import ccall "genpop__QResource_new" new' ::  HoppyP.IO (HoppyF.Ptr QResource)
foreign import ccall "genpop__QResource_newWithFile" newWithFile' ::  HoppyF.Ptr M142.QStringConst -> HoppyP.IO (HoppyF.Ptr QResource)
foreign import ccall "genpop__QResource_absoluteFilePath" absoluteFilePath' ::  HoppyF.Ptr QResourceConst -> HoppyP.IO (HoppyF.Ptr M142.QStringConst)
foreign import ccall "genpop__QResource_compressionAlgorithm" compressionAlgorithm' ::  HoppyF.Ptr QResourceConst -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QResource_getData" getData' ::  HoppyF.Ptr QResourceConst -> HoppyP.IO (HoppyF.Ptr HoppyFC.CUChar)
foreign import ccall "genpop__QResource_fileName" fileName' ::  HoppyF.Ptr QResourceConst -> HoppyP.IO (HoppyF.Ptr M142.QStringConst)
foreign import ccall "genpop__QResource_isCompressed" isCompressed' ::  HoppyF.Ptr QResourceConst -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QResource_isValid" isValid' ::  HoppyF.Ptr QResourceConst -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QResource_lastModified" lastModified' ::  HoppyF.Ptr QResourceConst -> HoppyP.IO (HoppyF.Ptr M24.QDateTimeConst)
foreign import ccall "genpop__QResource_registerResourcePath" registerResourcePath' ::  HoppyF.Ptr M142.QStringConst -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QResource_registerResourcePathAndTree" registerResourcePathAndTree' ::  HoppyF.Ptr M142.QStringConst -> HoppyF.Ptr M142.QStringConst -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QResource_registerResourceData" registerResourceData' ::  HoppyF.Ptr HoppyFC.CUChar -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QResource_registerResourceDataAndTree" registerResourceDataAndTree' ::  HoppyF.Ptr HoppyFC.CUChar -> HoppyF.Ptr M142.QStringConst -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QResource_setFileName" setFileName' ::  HoppyF.Ptr QResource -> HoppyF.Ptr M142.QStringConst -> HoppyP.IO ()
foreign import ccall "genpop__QResource_size" size' ::  HoppyF.Ptr QResourceConst -> HoppyP.IO HoppyDI.Int64
foreign import ccall "genpop__QResource_unregisterResourcePath" unregisterResourcePath' ::  HoppyF.Ptr M142.QStringConst -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QResource_unregisterResourcePathAndTree" unregisterResourcePathAndTree' ::  HoppyF.Ptr M142.QStringConst -> HoppyF.Ptr M142.QStringConst -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QResource_unregisterResourceData" unregisterResourceData' ::  HoppyF.Ptr HoppyFC.CUChar -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QResource_unregisterResourceDataAndTree" unregisterResourceDataAndTree' ::  HoppyF.Ptr HoppyFC.CUChar -> HoppyF.Ptr M142.QStringConst -> HoppyP.IO HoppyFC.CBool
foreign import ccall "gendel__QResource" delete'QResource :: HoppyF.Ptr QResourceConst -> HoppyP.IO ()
foreign import ccall "&gendel__QResource" deletePtr'QResource :: HoppyF.FunPtr (HoppyF.Ptr QResourceConst -> HoppyP.IO ())

class QResourceValue a where
  withQResourcePtr :: a -> (QResourceConst -> HoppyP.IO b) -> HoppyP.IO b

instance {-# OVERLAPPABLE #-} QResourceConstPtr a => QResourceValue a where
  withQResourcePtr = HoppyP.flip ($) . toQResourceConst

class (HoppyFHR.CppPtr this) => QResourceConstPtr this where
  toQResourceConst :: this -> QResourceConst

absoluteFilePath :: (QResourceValue this) => (this) {- ^ this -} -> (HoppyP.IO QtahP.String)
absoluteFilePath arg'1 =
  withQResourcePtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (HoppyFHR.decodeAndDelete . M142.QStringConst) =<<
  (absoluteFilePath' arg'1')

compressionAlgorithm :: (QResourceValue this) => (this) {- ^ this -} -> (HoppyP.IO QResourceCompression)
compressionAlgorithm arg'1 =
  withQResourcePtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.toCppEnum
  ) =<<
  (compressionAlgorithm' arg'1')

getData :: (QResourceValue this) => (this) {- ^ this -} -> (HoppyP.IO (HoppyF.Ptr HoppyFC.CUChar))
getData arg'1 =
  withQResourcePtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (getData' arg'1')

fileName :: (QResourceValue this) => (this) {- ^ this -} -> (HoppyP.IO QtahP.String)
fileName arg'1 =
  withQResourcePtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (HoppyFHR.decodeAndDelete . M142.QStringConst) =<<
  (fileName' arg'1')

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

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

lastModified :: (QResourceValue this) => (this) {- ^ this -} -> (HoppyP.IO M24.QDateTime)
lastModified arg'1 =
  withQResourcePtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (HoppyFHR.decodeAndDelete . M24.QDateTimeConst) =<<
  (lastModified' arg'1')

size :: (QResourceValue this) => (this) {- ^ this -} -> (HoppyP.IO HoppyDI.Int64)
size arg'1 =
  withQResourcePtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (size' arg'1')

class (QResourceConstPtr this) => QResourcePtr this where
  toQResource :: this -> QResource

setFileName :: (QResourcePtr this, M142.QStringValue arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.IO ())
setFileName arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQResource arg'1) $ \arg'1' ->
  M142.withQStringPtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  (setFileName' arg'1' arg'2')

registerResourcePath :: (M142.QStringValue arg'1) => (arg'1) -> (HoppyP.IO HoppyP.Bool)
registerResourcePath arg'1 =
  M142.withQStringPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    (HoppyP.return . (/= 0))
  ) =<<
  (registerResourcePath' arg'1')

registerResourcePathAndTree :: (M142.QStringValue arg'1, M142.QStringValue arg'2) => (arg'1) -> (arg'2) -> (HoppyP.IO HoppyP.Bool)
registerResourcePathAndTree arg'1 arg'2 =
  M142.withQStringPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  M142.withQStringPtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  (
    (HoppyP.return . (/= 0))
  ) =<<
  (registerResourcePathAndTree' arg'1' arg'2')

registerResourceData :: (HoppyF.Ptr HoppyFC.CUChar) -> (HoppyP.IO HoppyP.Bool)
registerResourceData arg'1 =
  let arg'1' = arg'1 in
  (
    (HoppyP.return . (/= 0))
  ) =<<
  (registerResourceData' arg'1')

registerResourceDataAndTree :: (M142.QStringValue arg'2) => (HoppyF.Ptr HoppyFC.CUChar) -> (arg'2) -> (HoppyP.IO HoppyP.Bool)
registerResourceDataAndTree arg'1 arg'2 =
  let arg'1' = arg'1 in
  M142.withQStringPtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  (
    (HoppyP.return . (/= 0))
  ) =<<
  (registerResourceDataAndTree' arg'1' arg'2')

unregisterResourcePath :: (M142.QStringValue arg'1) => (arg'1) -> (HoppyP.IO HoppyP.Bool)
unregisterResourcePath arg'1 =
  M142.withQStringPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    (HoppyP.return . (/= 0))
  ) =<<
  (unregisterResourcePath' arg'1')

unregisterResourcePathAndTree :: (M142.QStringValue arg'1, M142.QStringValue arg'2) => (arg'1) -> (arg'2) -> (HoppyP.IO HoppyP.Bool)
unregisterResourcePathAndTree arg'1 arg'2 =
  M142.withQStringPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  M142.withQStringPtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  (
    (HoppyP.return . (/= 0))
  ) =<<
  (unregisterResourcePathAndTree' arg'1' arg'2')

unregisterResourceData :: (HoppyF.Ptr HoppyFC.CUChar) -> (HoppyP.IO HoppyP.Bool)
unregisterResourceData arg'1 =
  let arg'1' = arg'1 in
  (
    (HoppyP.return . (/= 0))
  ) =<<
  (unregisterResourceData' arg'1')

unregisterResourceDataAndTree :: (M142.QStringValue arg'2) => (HoppyF.Ptr HoppyFC.CUChar) -> (arg'2) -> (HoppyP.IO HoppyP.Bool)
unregisterResourceDataAndTree arg'1 arg'2 =
  let arg'1' = arg'1 in
  M142.withQStringPtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  (
    (HoppyP.return . (/= 0))
  ) =<<
  (unregisterResourceDataAndTree' arg'1' arg'2')

data QResourceConst =
    QResourceConst (HoppyF.Ptr QResourceConst)
  | QResourceConstGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QResourceConst)
  deriving (HoppyP.Show)

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

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

castQResourceToConst :: QResource -> QResourceConst
castQResourceToConst (QResource ptr') = QResourceConst $ HoppyF.castPtr ptr'
castQResourceToConst (QResourceGc fptr' ptr') = QResourceConstGc fptr' $ HoppyF.castPtr ptr'

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

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

instance QResourceConstPtr QResourceConst where
  toQResourceConst = HoppyP.id

data QResource =
    QResource (HoppyF.Ptr QResource)
  | QResourceGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QResource)
  deriving (HoppyP.Show)

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

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

castQResourceToNonconst :: QResourceConst -> QResource
castQResourceToNonconst (QResourceConst ptr') = QResource $ HoppyF.castPtr ptr'
castQResourceToNonconst (QResourceConstGc fptr' ptr') = QResourceGc fptr' $ HoppyF.castPtr ptr'

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

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

instance QResourceConstPtr QResource where
  toQResourceConst (QResource ptr') = QResourceConst $ (HoppyF.castPtr :: HoppyF.Ptr QResource -> HoppyF.Ptr QResourceConst) ptr'
  toQResourceConst (QResourceGc fptr' ptr') = QResourceConstGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr QResource -> HoppyF.Ptr QResourceConst) ptr'

instance QResourcePtr QResource where
  toQResource = HoppyP.id

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

newWithFile :: (M142.QStringValue arg'1) => (arg'1) -> (HoppyP.IO QResource)
newWithFile arg'1 =
  M142.withQStringPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  HoppyP.fmap QResource
  (newWithFile' arg'1')

class QResourceSuper a where
  downToQResource :: a -> QResource


class QResourceSuperConst a where
  downToQResourceConst :: a -> QResourceConst


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

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

data QResourceCompression =
  NoCompression
  | ZlibCompression
  | ZstdCompression
  | UnknownQResourceCompression (HoppyFC.CInt)
  deriving (HoppyP.Show)

instance HoppyFHR.CppEnum (HoppyFC.CInt) QResourceCompression where
  fromCppEnum NoCompression = 0
  fromCppEnum ZlibCompression = 1
  fromCppEnum ZstdCompression = 2
  fromCppEnum (UnknownQResourceCompression n) = n
  
  toCppEnum (0) = NoCompression
  toCppEnum (1) = ZlibCompression
  toCppEnum (2) = ZstdCompression
  toCppEnum n = UnknownQResourceCompression n

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

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