packages feed

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

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

module Graphics.UI.Qtah.Generated.Core.QLockFile (
  QLockFileValue (..),
  QLockFileConstPtr (..),
  error,
  getLockInfo,
  isLocked,
  staleLockTime,
  QLockFilePtr (..),
  lock,
  removeStaleLockFile,
  setStaleLockTime,
  tryLock,
  tryLockWithTimeout,
  unlock,
  QLockFileConst (..),
  castQLockFileToConst,
  QLockFile (..),
  castQLockFileToNonconst,
  new,
  QLockFileSuper (..),
  QLockFileSuperConst (..),
  QLockFileLockError (..),
  ) 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.QString as M142
import Prelude (($), (.), (/=), (=<<), (==), (>>=))
import qualified Prelude as HoppyP

foreign import ccall "genpop__QLockFile_new" new' ::  HoppyF.Ptr M142.QStringConst -> HoppyP.IO (HoppyF.Ptr QLockFile)
foreign import ccall "genpop__QLockFile_error" error' ::  HoppyF.Ptr QLockFileConst -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QLockFile_getLockInfo" getLockInfo' ::  HoppyF.Ptr QLockFileConst -> HoppyF.Ptr HoppyFC.CLLong -> HoppyF.Ptr M142.QString -> HoppyF.Ptr M142.QString -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QLockFile_isLocked" isLocked' ::  HoppyF.Ptr QLockFileConst -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QLockFile_lock" lock' ::  HoppyF.Ptr QLockFile -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QLockFile_removeStaleLockFile" removeStaleLockFile' ::  HoppyF.Ptr QLockFile -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QLockFile_setStaleLockTime" setStaleLockTime' ::  HoppyF.Ptr QLockFile -> HoppyFC.CInt -> HoppyP.IO ()
foreign import ccall "genpop__QLockFile_staleLockTime" staleLockTime' ::  HoppyF.Ptr QLockFileConst -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QLockFile_tryLock" tryLock' ::  HoppyF.Ptr QLockFile -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QLockFile_tryLockWithTimeout" tryLockWithTimeout' ::  HoppyF.Ptr QLockFile -> HoppyFC.CInt -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QLockFile_unlock" unlock' ::  HoppyF.Ptr QLockFile -> HoppyP.IO ()
foreign import ccall "gendel__QLockFile" delete'QLockFile :: HoppyF.Ptr QLockFileConst -> HoppyP.IO ()
foreign import ccall "&gendel__QLockFile" deletePtr'QLockFile :: HoppyF.FunPtr (HoppyF.Ptr QLockFileConst -> HoppyP.IO ())

class QLockFileValue a where
  withQLockFilePtr :: a -> (QLockFileConst -> HoppyP.IO b) -> HoppyP.IO b

instance {-# OVERLAPPABLE #-} QLockFileConstPtr a => QLockFileValue a where
  withQLockFilePtr = HoppyP.flip ($) . toQLockFileConst

class (HoppyFHR.CppPtr this) => QLockFileConstPtr this where
  toQLockFileConst :: this -> QLockFileConst

error :: (QLockFileValue this) => (this) {- ^ this -} -> (HoppyP.IO QLockFileLockError)
error arg'1 =
  withQLockFilePtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.toCppEnum
  ) =<<
  (error' arg'1')

getLockInfo :: (QLockFileValue this, M142.QStringPtr arg'3, M142.QStringPtr arg'4) => (this) {- ^ this -} -> (HoppyF.Ptr HoppyFC.CLLong) -> (arg'3) -> (arg'4) -> (HoppyP.IO HoppyP.Bool)
getLockInfo arg'1 arg'2 arg'3 arg'4 =
  withQLockFilePtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  let arg'2' = arg'2 in
  HoppyFHR.withCppPtr (M142.toQString arg'3) $ \arg'3' ->
  HoppyFHR.withCppPtr (M142.toQString arg'4) $ \arg'4' ->
  (
    (HoppyP.return . (/= 0))
  ) =<<
  (getLockInfo' arg'1' arg'2' arg'3' arg'4')

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

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

class (QLockFileConstPtr this) => QLockFilePtr this where
  toQLockFile :: this -> QLockFile

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

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

setStaleLockTime :: (QLockFilePtr this) => (this) {- ^ this -} -> (HoppyP.Int) -> (HoppyP.IO ())
setStaleLockTime arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQLockFile arg'1) $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) arg'2 >>= \arg'2' ->
  (setStaleLockTime' arg'1' arg'2')

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

tryLockWithTimeout :: (QLockFilePtr this) => (this) {- ^ this -} -> (HoppyP.Int) -> (HoppyP.IO HoppyP.Bool)
tryLockWithTimeout arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQLockFile arg'1) $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) arg'2 >>= \arg'2' ->
  (
    (HoppyP.return . (/= 0))
  ) =<<
  (tryLockWithTimeout' arg'1' arg'2')

unlock :: (QLockFilePtr this) => (this) {- ^ this -} -> (HoppyP.IO ())
unlock arg'1 =
  HoppyFHR.withCppPtr (toQLockFile arg'1) $ \arg'1' ->
  (unlock' arg'1')

data QLockFileConst =
    QLockFileConst (HoppyF.Ptr QLockFileConst)
  | QLockFileConstGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QLockFileConst)
  deriving (HoppyP.Show)

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

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

castQLockFileToConst :: QLockFile -> QLockFileConst
castQLockFileToConst (QLockFile ptr') = QLockFileConst $ HoppyF.castPtr ptr'
castQLockFileToConst (QLockFileGc fptr' ptr') = QLockFileConstGc fptr' $ HoppyF.castPtr ptr'

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

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

instance QLockFileConstPtr QLockFileConst where
  toQLockFileConst = HoppyP.id

data QLockFile =
    QLockFile (HoppyF.Ptr QLockFile)
  | QLockFileGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QLockFile)
  deriving (HoppyP.Show)

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

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

castQLockFileToNonconst :: QLockFileConst -> QLockFile
castQLockFileToNonconst (QLockFileConst ptr') = QLockFile $ HoppyF.castPtr ptr'
castQLockFileToNonconst (QLockFileConstGc fptr' ptr') = QLockFileGc fptr' $ HoppyF.castPtr ptr'

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

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

instance QLockFileConstPtr QLockFile where
  toQLockFileConst (QLockFile ptr') = QLockFileConst $ (HoppyF.castPtr :: HoppyF.Ptr QLockFile -> HoppyF.Ptr QLockFileConst) ptr'
  toQLockFileConst (QLockFileGc fptr' ptr') = QLockFileConstGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr QLockFile -> HoppyF.Ptr QLockFileConst) ptr'

instance QLockFilePtr QLockFile where
  toQLockFile = HoppyP.id

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

class QLockFileSuper a where
  downToQLockFile :: a -> QLockFile


class QLockFileSuperConst a where
  downToQLockFileConst :: a -> QLockFileConst


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

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

data QLockFileLockError =
  NoError
  | LockFailedError
  | PermissionError
  | UnknownError
  | UnknownQLockFileLockError (HoppyFC.CInt)
  deriving (HoppyP.Show)

instance HoppyFHR.CppEnum (HoppyFC.CInt) QLockFileLockError where
  fromCppEnum NoError = 0
  fromCppEnum LockFailedError = 1
  fromCppEnum PermissionError = 2
  fromCppEnum UnknownError = 3
  fromCppEnum (UnknownQLockFileLockError n) = n
  
  toCppEnum (0) = NoError
  toCppEnum (1) = LockFailedError
  toCppEnum (2) = PermissionError
  toCppEnum (3) = UnknownError
  toCppEnum n = UnknownQLockFileLockError n

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

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