packages feed

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

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

module Graphics.UI.Qtah.Generated.Core.QSaveFile (
  castQSaveFileToQFileDevice,
  castQFileDeviceToQSaveFile,
  castQSaveFileToQIODevice,
  castQIODeviceToQSaveFile,
  castQSaveFileToQObject,
  castQObjectToQSaveFile,
  QSaveFileValue (..),
  QSaveFileConstPtr (..),
  directWriteFallback,
  QSaveFilePtr (..),
  cancelWriting,
  commit,
  setDirectWriteFallback,
  setFileName,
  QSaveFileConst (..),
  castQSaveFileToConst,
  QSaveFile (..),
  castQSaveFileToNonconst,
  newWithNameAndParent,
  new,
  newWithParent,
  newWithName,
  QSaveFileSuper (..),
  QSaveFileSuperConst (..),
  ) where

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.QFileDevice as M38
import qualified Graphics.UI.Qtah.Generated.Core.QIODevice as M48
import qualified Graphics.UI.Qtah.Generated.Core.QObject as M94
import qualified Graphics.UI.Qtah.Generated.Core.QString as M142
import Prelude (($), (.), (/=), (=<<), (==), (>>=))
import qualified Prelude as HoppyP

foreign import ccall "genpop__QSaveFile_newWithNameAndParent" newWithNameAndParent' ::  HoppyF.Ptr M142.QStringConst -> HoppyF.Ptr M94.QObject -> HoppyP.IO (HoppyF.Ptr QSaveFile)
foreign import ccall "genpop__QSaveFile_new" new' ::  HoppyP.IO (HoppyF.Ptr QSaveFile)
foreign import ccall "genpop__QSaveFile_newWithParent" newWithParent' ::  HoppyF.Ptr M94.QObject -> HoppyP.IO (HoppyF.Ptr QSaveFile)
foreign import ccall "genpop__QSaveFile_newWithName" newWithName' ::  HoppyF.Ptr M142.QStringConst -> HoppyP.IO (HoppyF.Ptr QSaveFile)
foreign import ccall "genpop__QSaveFile_cancelWriting" cancelWriting' ::  HoppyF.Ptr QSaveFile -> HoppyP.IO ()
foreign import ccall "genpop__QSaveFile_commit" commit' ::  HoppyF.Ptr QSaveFile -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QSaveFile_directWriteFallback" directWriteFallback' ::  HoppyF.Ptr QSaveFileConst -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QSaveFile_setDirectWriteFallback" setDirectWriteFallback' ::  HoppyF.Ptr QSaveFile -> HoppyFC.CBool -> HoppyP.IO ()
foreign import ccall "genpop__QSaveFile_setFileName" setFileName' ::  HoppyF.Ptr QSaveFile -> HoppyF.Ptr M142.QStringConst -> HoppyP.IO ()
foreign import ccall "gencast__QSaveFile__QFileDevice" castQSaveFileToQFileDevice :: HoppyF.Ptr QSaveFileConst -> HoppyF.Ptr M38.QFileDeviceConst
foreign import ccall "gencast__QFileDevice__QSaveFile" castQFileDeviceToQSaveFile :: HoppyF.Ptr M38.QFileDeviceConst -> HoppyF.Ptr QSaveFileConst
foreign import ccall "gencast__QSaveFile__QIODevice" castQSaveFileToQIODevice :: HoppyF.Ptr QSaveFileConst -> HoppyF.Ptr M48.QIODeviceConst
foreign import ccall "gencast__QIODevice__QSaveFile" castQIODeviceToQSaveFile :: HoppyF.Ptr M48.QIODeviceConst -> HoppyF.Ptr QSaveFileConst
foreign import ccall "gencast__QSaveFile__QObject" castQSaveFileToQObject :: HoppyF.Ptr QSaveFileConst -> HoppyF.Ptr M94.QObjectConst
foreign import ccall "gencast__QObject__QSaveFile" castQObjectToQSaveFile :: HoppyF.Ptr M94.QObjectConst -> HoppyF.Ptr QSaveFileConst
foreign import ccall "gendel__QSaveFile" delete'QSaveFile :: HoppyF.Ptr QSaveFileConst -> HoppyP.IO ()
foreign import ccall "&gendel__QSaveFile" deletePtr'QSaveFile :: HoppyF.FunPtr (HoppyF.Ptr QSaveFileConst -> HoppyP.IO ())

class QSaveFileValue a where
  withQSaveFilePtr :: a -> (QSaveFileConst -> HoppyP.IO b) -> HoppyP.IO b

instance {-# OVERLAPPABLE #-} QSaveFileConstPtr a => QSaveFileValue a where
  withQSaveFilePtr = HoppyP.flip ($) . toQSaveFileConst

class (M38.QFileDeviceConstPtr this) => QSaveFileConstPtr this where
  toQSaveFileConst :: this -> QSaveFileConst

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

class (QSaveFileConstPtr this, M38.QFileDevicePtr this) => QSaveFilePtr this where
  toQSaveFile :: this -> QSaveFile

cancelWriting :: (QSaveFilePtr this) => (this) {- ^ this -} -> (HoppyP.IO ())
cancelWriting arg'1 =
  HoppyFHR.withCppPtr (toQSaveFile arg'1) $ \arg'1' ->
  (cancelWriting' arg'1')

commit :: (QSaveFilePtr this) => (this) {- ^ this -} -> (HoppyP.IO HoppyP.Bool)
commit arg'1 =
  HoppyFHR.withCppPtr (toQSaveFile arg'1) $ \arg'1' ->
  (
    (HoppyP.return . (/= 0))
  ) =<<
  (commit' arg'1')

setDirectWriteFallback :: (QSaveFilePtr this) => (this) {- ^ this -} -> (HoppyP.Bool) -> (HoppyP.IO ())
setDirectWriteFallback arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQSaveFile arg'1) $ \arg'1' ->
  (
    \x -> HoppyP.return $ if x then 1 else 0
  ) arg'2 >>= \arg'2' ->
  (setDirectWriteFallback' arg'1' arg'2')

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

data QSaveFileConst =
    QSaveFileConst (HoppyF.Ptr QSaveFileConst)
  | QSaveFileConstGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QSaveFileConst)
  deriving (HoppyP.Show)

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

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

castQSaveFileToConst :: QSaveFile -> QSaveFileConst
castQSaveFileToConst (QSaveFile ptr') = QSaveFileConst $ HoppyF.castPtr ptr'
castQSaveFileToConst (QSaveFileGc fptr' ptr') = QSaveFileConstGc fptr' $ HoppyF.castPtr ptr'

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

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

instance QSaveFileConstPtr QSaveFileConst where
  toQSaveFileConst = HoppyP.id

instance M38.QFileDeviceConstPtr QSaveFileConst where
  toQFileDeviceConst (QSaveFileConst ptr') = M38.QFileDeviceConst $ castQSaveFileToQFileDevice ptr'
  toQFileDeviceConst (QSaveFileConstGc fptr' ptr') = M38.QFileDeviceConstGc fptr' $ castQSaveFileToQFileDevice ptr'

instance M48.QIODeviceConstPtr QSaveFileConst where
  toQIODeviceConst (QSaveFileConst ptr') = M48.QIODeviceConst $ castQSaveFileToQIODevice ptr'
  toQIODeviceConst (QSaveFileConstGc fptr' ptr') = M48.QIODeviceConstGc fptr' $ castQSaveFileToQIODevice ptr'

instance M94.QObjectConstPtr QSaveFileConst where
  toQObjectConst (QSaveFileConst ptr') = M94.QObjectConst $ castQSaveFileToQObject ptr'
  toQObjectConst (QSaveFileConstGc fptr' ptr') = M94.QObjectConstGc fptr' $ castQSaveFileToQObject ptr'

data QSaveFile =
    QSaveFile (HoppyF.Ptr QSaveFile)
  | QSaveFileGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QSaveFile)
  deriving (HoppyP.Show)

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

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

castQSaveFileToNonconst :: QSaveFileConst -> QSaveFile
castQSaveFileToNonconst (QSaveFileConst ptr') = QSaveFile $ HoppyF.castPtr ptr'
castQSaveFileToNonconst (QSaveFileConstGc fptr' ptr') = QSaveFileGc fptr' $ HoppyF.castPtr ptr'

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

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

instance QSaveFileConstPtr QSaveFile where
  toQSaveFileConst (QSaveFile ptr') = QSaveFileConst $ (HoppyF.castPtr :: HoppyF.Ptr QSaveFile -> HoppyF.Ptr QSaveFileConst) ptr'
  toQSaveFileConst (QSaveFileGc fptr' ptr') = QSaveFileConstGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr QSaveFile -> HoppyF.Ptr QSaveFileConst) ptr'

instance QSaveFilePtr QSaveFile where
  toQSaveFile = HoppyP.id

instance M38.QFileDeviceConstPtr QSaveFile where
  toQFileDeviceConst (QSaveFile ptr') = M38.QFileDeviceConst $ castQSaveFileToQFileDevice $ (HoppyF.castPtr :: HoppyF.Ptr QSaveFile -> HoppyF.Ptr QSaveFileConst) ptr'
  toQFileDeviceConst (QSaveFileGc fptr' ptr') = M38.QFileDeviceConstGc fptr' $ castQSaveFileToQFileDevice $ (HoppyF.castPtr :: HoppyF.Ptr QSaveFile -> HoppyF.Ptr QSaveFileConst) ptr'

instance M38.QFileDevicePtr QSaveFile where
  toQFileDevice (QSaveFile ptr') = M38.QFileDevice $ (HoppyF.castPtr :: HoppyF.Ptr M38.QFileDeviceConst -> HoppyF.Ptr M38.QFileDevice) $ castQSaveFileToQFileDevice $ (HoppyF.castPtr :: HoppyF.Ptr QSaveFile -> HoppyF.Ptr QSaveFileConst) ptr'
  toQFileDevice (QSaveFileGc fptr' ptr') = M38.QFileDeviceGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr M38.QFileDeviceConst -> HoppyF.Ptr M38.QFileDevice) $ castQSaveFileToQFileDevice $ (HoppyF.castPtr :: HoppyF.Ptr QSaveFile -> HoppyF.Ptr QSaveFileConst) ptr'

instance M48.QIODeviceConstPtr QSaveFile where
  toQIODeviceConst (QSaveFile ptr') = M48.QIODeviceConst $ castQSaveFileToQIODevice $ (HoppyF.castPtr :: HoppyF.Ptr QSaveFile -> HoppyF.Ptr QSaveFileConst) ptr'
  toQIODeviceConst (QSaveFileGc fptr' ptr') = M48.QIODeviceConstGc fptr' $ castQSaveFileToQIODevice $ (HoppyF.castPtr :: HoppyF.Ptr QSaveFile -> HoppyF.Ptr QSaveFileConst) ptr'

instance M48.QIODevicePtr QSaveFile where
  toQIODevice (QSaveFile ptr') = M48.QIODevice $ (HoppyF.castPtr :: HoppyF.Ptr M48.QIODeviceConst -> HoppyF.Ptr M48.QIODevice) $ castQSaveFileToQIODevice $ (HoppyF.castPtr :: HoppyF.Ptr QSaveFile -> HoppyF.Ptr QSaveFileConst) ptr'
  toQIODevice (QSaveFileGc fptr' ptr') = M48.QIODeviceGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr M48.QIODeviceConst -> HoppyF.Ptr M48.QIODevice) $ castQSaveFileToQIODevice $ (HoppyF.castPtr :: HoppyF.Ptr QSaveFile -> HoppyF.Ptr QSaveFileConst) ptr'

instance M94.QObjectConstPtr QSaveFile where
  toQObjectConst (QSaveFile ptr') = M94.QObjectConst $ castQSaveFileToQObject $ (HoppyF.castPtr :: HoppyF.Ptr QSaveFile -> HoppyF.Ptr QSaveFileConst) ptr'
  toQObjectConst (QSaveFileGc fptr' ptr') = M94.QObjectConstGc fptr' $ castQSaveFileToQObject $ (HoppyF.castPtr :: HoppyF.Ptr QSaveFile -> HoppyF.Ptr QSaveFileConst) ptr'

instance M94.QObjectPtr QSaveFile where
  toQObject (QSaveFile ptr') = M94.QObject $ (HoppyF.castPtr :: HoppyF.Ptr M94.QObjectConst -> HoppyF.Ptr M94.QObject) $ castQSaveFileToQObject $ (HoppyF.castPtr :: HoppyF.Ptr QSaveFile -> HoppyF.Ptr QSaveFileConst) ptr'
  toQObject (QSaveFileGc fptr' ptr') = M94.QObjectGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr M94.QObjectConst -> HoppyF.Ptr M94.QObject) $ castQSaveFileToQObject $ (HoppyF.castPtr :: HoppyF.Ptr QSaveFile -> HoppyF.Ptr QSaveFileConst) ptr'

newWithNameAndParent :: (M142.QStringValue arg'1, M94.QObjectPtr arg'2) => (arg'1) -> (arg'2) -> (HoppyP.IO QSaveFile)
newWithNameAndParent arg'1 arg'2 =
  M142.withQStringPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  HoppyFHR.withCppPtr (M94.toQObject arg'2) $ \arg'2' ->
  HoppyP.fmap QSaveFile
  (newWithNameAndParent' arg'1' arg'2')

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

newWithParent :: (M94.QObjectPtr arg'1) => (arg'1) -> (HoppyP.IO QSaveFile)
newWithParent arg'1 =
  HoppyFHR.withCppPtr (M94.toQObject arg'1) $ \arg'1' ->
  HoppyP.fmap QSaveFile
  (newWithParent' arg'1')

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

class QSaveFileSuper a where
  downToQSaveFile :: a -> QSaveFile

instance QSaveFileSuper M38.QFileDevice where
  downToQSaveFile = castQSaveFileToNonconst . cast' . M38.castQFileDeviceToConst
    where
      cast' (M38.QFileDeviceConst ptr') = QSaveFileConst $ castQFileDeviceToQSaveFile ptr'
      cast' (M38.QFileDeviceConstGc fptr' ptr') = QSaveFileConstGc fptr' $ castQFileDeviceToQSaveFile ptr'
instance QSaveFileSuper M48.QIODevice where
  downToQSaveFile = castQSaveFileToNonconst . cast' . M48.castQIODeviceToConst
    where
      cast' (M48.QIODeviceConst ptr') = QSaveFileConst $ castQIODeviceToQSaveFile ptr'
      cast' (M48.QIODeviceConstGc fptr' ptr') = QSaveFileConstGc fptr' $ castQIODeviceToQSaveFile ptr'
instance QSaveFileSuper M94.QObject where
  downToQSaveFile = castQSaveFileToNonconst . cast' . M94.castQObjectToConst
    where
      cast' (M94.QObjectConst ptr') = QSaveFileConst $ castQObjectToQSaveFile ptr'
      cast' (M94.QObjectConstGc fptr' ptr') = QSaveFileConstGc fptr' $ castQObjectToQSaveFile ptr'

class QSaveFileSuperConst a where
  downToQSaveFileConst :: a -> QSaveFileConst

instance QSaveFileSuperConst M38.QFileDeviceConst where
  downToQSaveFileConst = cast'
    where
      cast' (M38.QFileDeviceConst ptr') = QSaveFileConst $ castQFileDeviceToQSaveFile ptr'
      cast' (M38.QFileDeviceConstGc fptr' ptr') = QSaveFileConstGc fptr' $ castQFileDeviceToQSaveFile ptr'
instance QSaveFileSuperConst M48.QIODeviceConst where
  downToQSaveFileConst = cast'
    where
      cast' (M48.QIODeviceConst ptr') = QSaveFileConst $ castQIODeviceToQSaveFile ptr'
      cast' (M48.QIODeviceConstGc fptr' ptr') = QSaveFileConstGc fptr' $ castQIODeviceToQSaveFile ptr'
instance QSaveFileSuperConst M94.QObjectConst where
  downToQSaveFileConst = cast'
    where
      cast' (M94.QObjectConst ptr') = QSaveFileConst $ castQObjectToQSaveFile ptr'
      cast' (M94.QObjectConstGc fptr' ptr') = QSaveFileConstGc fptr' $ castQObjectToQSaveFile ptr'

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

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