packages feed

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

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

module Graphics.UI.Qtah.Generated.Core.QMessageLogger (
  QMessageLoggerValue (..),
  QMessageLoggerConstPtr (..),
  critical,
  debug,
  info,
  warning,
  QMessageLoggerPtr (..),
  QMessageLoggerConst (..),
  castQMessageLoggerToConst,
  QMessageLogger (..),
  castQMessageLoggerToNonconst,
  new,
  newWithContext,
  newWithContextAndCategory,
  QMessageLoggerSuper (..),
  QMessageLoggerSuperConst (..),
  ) 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.QDebug as M26
import Prelude (($), (.), (=<<), (==), (>>=))
import qualified Prelude as HoppyP

foreign import ccall "genpop__QMessageLogger_new" new' ::  HoppyP.IO (HoppyF.Ptr QMessageLogger)
foreign import ccall "genpop__QMessageLogger_newWithContext" newWithContext' ::  HoppyF.Ptr HoppyFC.CChar -> HoppyFC.CInt -> HoppyF.Ptr HoppyFC.CChar -> HoppyP.IO (HoppyF.Ptr QMessageLogger)
foreign import ccall "genpop__QMessageLogger_newWithContextAndCategory" newWithContextAndCategory' ::  HoppyF.Ptr HoppyFC.CChar -> HoppyFC.CInt -> HoppyF.Ptr HoppyFC.CChar -> HoppyF.Ptr HoppyFC.CChar -> HoppyP.IO (HoppyF.Ptr QMessageLogger)
foreign import ccall "genpop__QMessageLogger_critical" critical' ::  HoppyF.Ptr QMessageLoggerConst -> HoppyP.IO (HoppyF.Ptr M26.QDebugConst)
foreign import ccall "genpop__QMessageLogger_debug" debug' ::  HoppyF.Ptr QMessageLoggerConst -> HoppyP.IO (HoppyF.Ptr M26.QDebugConst)
foreign import ccall "genpop__QMessageLogger_info" info' ::  HoppyF.Ptr QMessageLoggerConst -> HoppyP.IO (HoppyF.Ptr M26.QDebugConst)
foreign import ccall "genpop__QMessageLogger_warning" warning' ::  HoppyF.Ptr QMessageLoggerConst -> HoppyP.IO (HoppyF.Ptr M26.QDebugConst)
foreign import ccall "gendel__QMessageLogger" delete'QMessageLogger :: HoppyF.Ptr QMessageLoggerConst -> HoppyP.IO ()
foreign import ccall "&gendel__QMessageLogger" deletePtr'QMessageLogger :: HoppyF.FunPtr (HoppyF.Ptr QMessageLoggerConst -> HoppyP.IO ())

class QMessageLoggerValue a where
  withQMessageLoggerPtr :: a -> (QMessageLoggerConst -> HoppyP.IO b) -> HoppyP.IO b

instance {-# OVERLAPPABLE #-} QMessageLoggerConstPtr a => QMessageLoggerValue a where
  withQMessageLoggerPtr = HoppyP.flip ($) . toQMessageLoggerConst

class (HoppyFHR.CppPtr this) => QMessageLoggerConstPtr this where
  toQMessageLoggerConst :: this -> QMessageLoggerConst

critical :: (QMessageLoggerValue this) => (this) {- ^ this -} -> (HoppyP.IO M26.QDebug)
critical arg'1 =
  withQMessageLoggerPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (HoppyFHR.decodeAndDelete . M26.QDebugConst) =<<
  (critical' arg'1')

debug :: (QMessageLoggerValue this) => (this) {- ^ this -} -> (HoppyP.IO M26.QDebug)
debug arg'1 =
  withQMessageLoggerPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (HoppyFHR.decodeAndDelete . M26.QDebugConst) =<<
  (debug' arg'1')

info :: (QMessageLoggerValue this) => (this) {- ^ this -} -> (HoppyP.IO M26.QDebug)
info arg'1 =
  withQMessageLoggerPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (HoppyFHR.decodeAndDelete . M26.QDebugConst) =<<
  (info' arg'1')

warning :: (QMessageLoggerValue this) => (this) {- ^ this -} -> (HoppyP.IO M26.QDebug)
warning arg'1 =
  withQMessageLoggerPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (HoppyFHR.decodeAndDelete . M26.QDebugConst) =<<
  (warning' arg'1')

class (QMessageLoggerConstPtr this) => QMessageLoggerPtr this where
  toQMessageLogger :: this -> QMessageLogger

data QMessageLoggerConst =
    QMessageLoggerConst (HoppyF.Ptr QMessageLoggerConst)
  | QMessageLoggerConstGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QMessageLoggerConst)
  deriving (HoppyP.Show)

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

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

castQMessageLoggerToConst :: QMessageLogger -> QMessageLoggerConst
castQMessageLoggerToConst (QMessageLogger ptr') = QMessageLoggerConst $ HoppyF.castPtr ptr'
castQMessageLoggerToConst (QMessageLoggerGc fptr' ptr') = QMessageLoggerConstGc fptr' $ HoppyF.castPtr ptr'

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

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

instance QMessageLoggerConstPtr QMessageLoggerConst where
  toQMessageLoggerConst = HoppyP.id

data QMessageLogger =
    QMessageLogger (HoppyF.Ptr QMessageLogger)
  | QMessageLoggerGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QMessageLogger)
  deriving (HoppyP.Show)

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

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

castQMessageLoggerToNonconst :: QMessageLoggerConst -> QMessageLogger
castQMessageLoggerToNonconst (QMessageLoggerConst ptr') = QMessageLogger $ HoppyF.castPtr ptr'
castQMessageLoggerToNonconst (QMessageLoggerConstGc fptr' ptr') = QMessageLoggerGc fptr' $ HoppyF.castPtr ptr'

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

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

instance QMessageLoggerConstPtr QMessageLogger where
  toQMessageLoggerConst (QMessageLogger ptr') = QMessageLoggerConst $ (HoppyF.castPtr :: HoppyF.Ptr QMessageLogger -> HoppyF.Ptr QMessageLoggerConst) ptr'
  toQMessageLoggerConst (QMessageLoggerGc fptr' ptr') = QMessageLoggerConstGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr QMessageLogger -> HoppyF.Ptr QMessageLoggerConst) ptr'

instance QMessageLoggerPtr QMessageLogger where
  toQMessageLogger = HoppyP.id

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

newWithContext :: (HoppyF.Ptr HoppyFC.CChar) -> (HoppyP.Int) -> (HoppyF.Ptr HoppyFC.CChar) -> (HoppyP.IO QMessageLogger)
newWithContext arg'1 arg'2 arg'3 =
  let arg'1' = arg'1 in
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) arg'2 >>= \arg'2' ->
  let arg'3' = arg'3 in
  HoppyP.fmap QMessageLogger
  (newWithContext' arg'1' arg'2' arg'3')

newWithContextAndCategory :: (HoppyF.Ptr HoppyFC.CChar) -> (HoppyP.Int) -> (HoppyF.Ptr HoppyFC.CChar) -> (HoppyF.Ptr HoppyFC.CChar) -> (HoppyP.IO QMessageLogger)
newWithContextAndCategory arg'1 arg'2 arg'3 arg'4 =
  let arg'1' = arg'1 in
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) arg'2 >>= \arg'2' ->
  let arg'3' = arg'3 in
  let arg'4' = arg'4 in
  HoppyP.fmap QMessageLogger
  (newWithContextAndCategory' arg'1' arg'2' arg'3' arg'4')

class QMessageLoggerSuper a where
  downToQMessageLogger :: a -> QMessageLogger


class QMessageLoggerSuperConst a where
  downToQMessageLoggerConst :: a -> QMessageLoggerConst


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

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