packages feed

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

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

module Graphics.UI.Qtah.Generated.Core.QLibrary (
  castQLibraryToQObject,
  castQObjectToQLibrary,
  QLibraryValue (..),
  QLibraryConstPtr (..),
  errorString,
  isLoaded,
  fileName,
  loadHints,
  QLibraryPtr (..),
  load,
  resolve,
  setFileNameAndMajorVersion,
  setFileNameAndVersion,
  unload,
  setFileName,
  setLoadHints,
  isLibrary,
  resolveStatic,
  resolveStaticWithMajorVersion,
  resolveStaticWithVersion,
  QLibraryConst (..),
  castQLibraryToConst,
  QLibrary (..),
  castQLibraryToNonconst,
  new,
  newWithParent,
  newWithFilename,
  newWithFilenameAndParent,
  newWithFilenameAndMajorVersion,
  newWithFilenameAndMajorVersionAndParent,
  newWithFilenameAndVersion,
  newWithFilenameAndVersionAndParent,
  QLibrarySuper (..),
  QLibrarySuperConst (..),
  QLibraryLoadHint (..),
  QLibraryLoadHints,
  IsQLibraryLoadHints (..),
  deepBindHint,
  exportExternalSymbolsHint,
  loadArchiveMemberHint,
  preventUnloadHint,
  resolveAllSymbolsHint,
  ) where

import Data.Bits ((.&.), (.|.))
import qualified Data.Bits as QtahDB
import qualified Foreign as HoppyF
import qualified Foreign.C as HoppyFC
import qualified Foreign.Hoppy.Runtime as HoppyFHR
import qualified Foreign.Hoppy.Runtime as QtahFHR
import qualified Graphics.UI.Qtah.Flags as QtahFlags
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
import qualified Prelude as QtahP

foreign import ccall "genpop__QLibrary_new" new' ::  HoppyP.IO (HoppyF.Ptr QLibrary)
foreign import ccall "genpop__QLibrary_newWithParent" newWithParent' ::  HoppyF.Ptr M94.QObject -> HoppyP.IO (HoppyF.Ptr QLibrary)
foreign import ccall "genpop__QLibrary_newWithFilename" newWithFilename' ::  HoppyF.Ptr M142.QStringConst -> HoppyP.IO (HoppyF.Ptr QLibrary)
foreign import ccall "genpop__QLibrary_newWithFilenameAndParent" newWithFilenameAndParent' ::  HoppyF.Ptr M142.QStringConst -> HoppyF.Ptr M94.QObject -> HoppyP.IO (HoppyF.Ptr QLibrary)
foreign import ccall "genpop__QLibrary_newWithFilenameAndMajorVersion" newWithFilenameAndMajorVersion' ::  HoppyF.Ptr M142.QStringConst -> HoppyFC.CInt -> HoppyP.IO (HoppyF.Ptr QLibrary)
foreign import ccall "genpop__QLibrary_newWithFilenameAndMajorVersionAndParent" newWithFilenameAndMajorVersionAndParent' ::  HoppyF.Ptr M142.QStringConst -> HoppyFC.CInt -> HoppyF.Ptr M94.QObject -> HoppyP.IO (HoppyF.Ptr QLibrary)
foreign import ccall "genpop__QLibrary_newWithFilenameAndVersion" newWithFilenameAndVersion' ::  HoppyF.Ptr M142.QStringConst -> HoppyF.Ptr M142.QStringConst -> HoppyP.IO (HoppyF.Ptr QLibrary)
foreign import ccall "genpop__QLibrary_newWithFilenameAndVersionAndParent" newWithFilenameAndVersionAndParent' ::  HoppyF.Ptr M142.QStringConst -> HoppyF.Ptr M142.QStringConst -> HoppyF.Ptr M94.QObject -> HoppyP.IO (HoppyF.Ptr QLibrary)
foreign import ccall "genpop__QLibrary_errorString" errorString' ::  HoppyF.Ptr QLibraryConst -> HoppyP.IO (HoppyF.Ptr M142.QStringConst)
foreign import ccall "genpop__QLibrary_isLibrary" isLibrary' ::  HoppyF.Ptr M142.QStringConst -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QLibrary_isLoaded" isLoaded' ::  HoppyF.Ptr QLibraryConst -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QLibrary_load" load' ::  HoppyF.Ptr QLibrary -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QLibrary_resolve" resolve' ::  HoppyF.Ptr QLibrary -> HoppyF.Ptr HoppyFC.CChar -> HoppyP.IO (HoppyF.FunPtr (HoppyP.IO ()))
foreign import ccall "genpop__QLibrary_resolveStatic" resolveStatic' ::  HoppyF.Ptr M142.QStringConst -> HoppyF.Ptr HoppyFC.CChar -> HoppyP.IO (HoppyF.FunPtr (HoppyP.IO ()))
foreign import ccall "genpop__QLibrary_resolveStaticWithMajorVersion" resolveStaticWithMajorVersion' ::  HoppyF.Ptr M142.QStringConst -> HoppyFC.CInt -> HoppyF.Ptr HoppyFC.CChar -> HoppyP.IO (HoppyF.FunPtr (HoppyP.IO ()))
foreign import ccall "genpop__QLibrary_resolveStaticWithVersion" resolveStaticWithVersion' ::  HoppyF.Ptr M142.QStringConst -> HoppyF.Ptr M142.QStringConst -> HoppyF.Ptr HoppyFC.CChar -> HoppyP.IO (HoppyF.FunPtr (HoppyP.IO ()))
foreign import ccall "genpop__QLibrary_setFileNameAndMajorVersion" setFileNameAndMajorVersion' ::  HoppyF.Ptr QLibrary -> HoppyF.Ptr M142.QStringConst -> HoppyFC.CInt -> HoppyP.IO ()
foreign import ccall "genpop__QLibrary_setFileNameAndVersion" setFileNameAndVersion' ::  HoppyF.Ptr QLibrary -> HoppyF.Ptr M142.QStringConst -> HoppyF.Ptr M142.QStringConst -> HoppyP.IO ()
foreign import ccall "genpop__QLibrary_unload" unload' ::  HoppyF.Ptr QLibrary -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QLibrary_fileName" fileName' ::  HoppyF.Ptr QLibraryConst -> HoppyP.IO (HoppyF.Ptr M142.QStringConst)
foreign import ccall "genpop__QLibrary_setFileName" setFileName' ::  HoppyF.Ptr QLibrary -> HoppyF.Ptr M142.QStringConst -> HoppyP.IO ()
foreign import ccall "genpop__QLibrary_loadHints" loadHints' ::  HoppyF.Ptr QLibraryConst -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QLibrary_setLoadHints" setLoadHints' ::  HoppyF.Ptr QLibrary -> HoppyFC.CInt -> HoppyP.IO ()
foreign import ccall "gencast__QLibrary__QObject" castQLibraryToQObject :: HoppyF.Ptr QLibraryConst -> HoppyF.Ptr M94.QObjectConst
foreign import ccall "gencast__QObject__QLibrary" castQObjectToQLibrary :: HoppyF.Ptr M94.QObjectConst -> HoppyF.Ptr QLibraryConst
foreign import ccall "gendel__QLibrary" delete'QLibrary :: HoppyF.Ptr QLibraryConst -> HoppyP.IO ()
foreign import ccall "&gendel__QLibrary" deletePtr'QLibrary :: HoppyF.FunPtr (HoppyF.Ptr QLibraryConst -> HoppyP.IO ())

class QLibraryValue a where
  withQLibraryPtr :: a -> (QLibraryConst -> HoppyP.IO b) -> HoppyP.IO b

instance {-# OVERLAPPABLE #-} QLibraryConstPtr a => QLibraryValue a where
  withQLibraryPtr = HoppyP.flip ($) . toQLibraryConst

class (M94.QObjectConstPtr this) => QLibraryConstPtr this where
  toQLibraryConst :: this -> QLibraryConst

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

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

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

loadHints :: (QLibraryValue this) => (this) {- ^ this -} -> (HoppyP.IO QLibraryLoadHints)
loadHints arg'1 =
  withQLibraryPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    QtahP.return . QtahFlags.numToFlags
  ) =<<
  (loadHints' arg'1')

class (QLibraryConstPtr this, M94.QObjectPtr this) => QLibraryPtr this where
  toQLibrary :: this -> QLibrary

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

resolve :: (QLibraryPtr this) => (this) {- ^ this -} -> (HoppyF.Ptr HoppyFC.CChar) -> (HoppyP.IO (HoppyF.FunPtr (HoppyP.IO ())))
resolve arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQLibrary arg'1) $ \arg'1' ->
  let arg'2' = arg'2 in
  (resolve' arg'1' arg'2')

setFileNameAndMajorVersion :: (QLibraryPtr this, M142.QStringValue arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.Int) -> (HoppyP.IO ())
setFileNameAndMajorVersion arg'1 arg'2 arg'3 =
  HoppyFHR.withCppPtr (toQLibrary arg'1) $ \arg'1' ->
  M142.withQStringPtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) arg'3 >>= \arg'3' ->
  (setFileNameAndMajorVersion' arg'1' arg'2' arg'3')

setFileNameAndVersion :: (QLibraryPtr this, M142.QStringValue arg'2, M142.QStringValue arg'3) => (this) {- ^ this -} -> (arg'2) -> (arg'3) -> (HoppyP.IO ())
setFileNameAndVersion arg'1 arg'2 arg'3 =
  HoppyFHR.withCppPtr (toQLibrary arg'1) $ \arg'1' ->
  M142.withQStringPtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  M142.withQStringPtr arg'3 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'3' ->
  (setFileNameAndVersion' arg'1' arg'2' arg'3')

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

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

setLoadHints :: (QLibraryPtr this, IsQLibraryLoadHints arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.IO ())
setLoadHints arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQLibrary arg'1) $ \arg'1' ->
  (
    QtahP.return . QtahFlags.flagsToNum . toQLibraryLoadHints
  ) arg'2 >>= \arg'2' ->
  (setLoadHints' arg'1' arg'2')

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

resolveStatic :: (M142.QStringValue arg'1) => (arg'1) -> (HoppyF.Ptr HoppyFC.CChar) -> (HoppyP.IO (HoppyF.FunPtr (HoppyP.IO ())))
resolveStatic arg'1 arg'2 =
  M142.withQStringPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  let arg'2' = arg'2 in
  (resolveStatic' arg'1' arg'2')

resolveStaticWithMajorVersion :: (M142.QStringValue arg'1) => (arg'1) -> (HoppyP.Int) -> (HoppyF.Ptr HoppyFC.CChar) -> (HoppyP.IO (HoppyF.FunPtr (HoppyP.IO ())))
resolveStaticWithMajorVersion arg'1 arg'2 arg'3 =
  M142.withQStringPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) arg'2 >>= \arg'2' ->
  let arg'3' = arg'3 in
  (resolveStaticWithMajorVersion' arg'1' arg'2' arg'3')

resolveStaticWithVersion :: (M142.QStringValue arg'1, M142.QStringValue arg'2) => (arg'1) -> (arg'2) -> (HoppyF.Ptr HoppyFC.CChar) -> (HoppyP.IO (HoppyF.FunPtr (HoppyP.IO ())))
resolveStaticWithVersion arg'1 arg'2 arg'3 =
  M142.withQStringPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  M142.withQStringPtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  let arg'3' = arg'3 in
  (resolveStaticWithVersion' arg'1' arg'2' arg'3')

data QLibraryConst =
    QLibraryConst (HoppyF.Ptr QLibraryConst)
  | QLibraryConstGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QLibraryConst)
  deriving (HoppyP.Show)

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

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

castQLibraryToConst :: QLibrary -> QLibraryConst
castQLibraryToConst (QLibrary ptr') = QLibraryConst $ HoppyF.castPtr ptr'
castQLibraryToConst (QLibraryGc fptr' ptr') = QLibraryConstGc fptr' $ HoppyF.castPtr ptr'

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

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

instance QLibraryConstPtr QLibraryConst where
  toQLibraryConst = HoppyP.id

instance M94.QObjectConstPtr QLibraryConst where
  toQObjectConst (QLibraryConst ptr') = M94.QObjectConst $ castQLibraryToQObject ptr'
  toQObjectConst (QLibraryConstGc fptr' ptr') = M94.QObjectConstGc fptr' $ castQLibraryToQObject ptr'

data QLibrary =
    QLibrary (HoppyF.Ptr QLibrary)
  | QLibraryGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QLibrary)
  deriving (HoppyP.Show)

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

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

castQLibraryToNonconst :: QLibraryConst -> QLibrary
castQLibraryToNonconst (QLibraryConst ptr') = QLibrary $ HoppyF.castPtr ptr'
castQLibraryToNonconst (QLibraryConstGc fptr' ptr') = QLibraryGc fptr' $ HoppyF.castPtr ptr'

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

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

instance QLibraryConstPtr QLibrary where
  toQLibraryConst (QLibrary ptr') = QLibraryConst $ (HoppyF.castPtr :: HoppyF.Ptr QLibrary -> HoppyF.Ptr QLibraryConst) ptr'
  toQLibraryConst (QLibraryGc fptr' ptr') = QLibraryConstGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr QLibrary -> HoppyF.Ptr QLibraryConst) ptr'

instance QLibraryPtr QLibrary where
  toQLibrary = HoppyP.id

instance M94.QObjectConstPtr QLibrary where
  toQObjectConst (QLibrary ptr') = M94.QObjectConst $ castQLibraryToQObject $ (HoppyF.castPtr :: HoppyF.Ptr QLibrary -> HoppyF.Ptr QLibraryConst) ptr'
  toQObjectConst (QLibraryGc fptr' ptr') = M94.QObjectConstGc fptr' $ castQLibraryToQObject $ (HoppyF.castPtr :: HoppyF.Ptr QLibrary -> HoppyF.Ptr QLibraryConst) ptr'

instance M94.QObjectPtr QLibrary where
  toQObject (QLibrary ptr') = M94.QObject $ (HoppyF.castPtr :: HoppyF.Ptr M94.QObjectConst -> HoppyF.Ptr M94.QObject) $ castQLibraryToQObject $ (HoppyF.castPtr :: HoppyF.Ptr QLibrary -> HoppyF.Ptr QLibraryConst) ptr'
  toQObject (QLibraryGc fptr' ptr') = M94.QObjectGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr M94.QObjectConst -> HoppyF.Ptr M94.QObject) $ castQLibraryToQObject $ (HoppyF.castPtr :: HoppyF.Ptr QLibrary -> HoppyF.Ptr QLibraryConst) ptr'

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

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

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

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

newWithFilenameAndMajorVersion :: (M142.QStringValue arg'1) => (arg'1) -> (HoppyP.Int) -> (HoppyP.IO QLibrary)
newWithFilenameAndMajorVersion arg'1 arg'2 =
  M142.withQStringPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) arg'2 >>= \arg'2' ->
  HoppyP.fmap QLibrary
  (newWithFilenameAndMajorVersion' arg'1' arg'2')

newWithFilenameAndMajorVersionAndParent :: (M142.QStringValue arg'1, M94.QObjectPtr arg'3) => (arg'1) -> (HoppyP.Int) -> (arg'3) -> (HoppyP.IO QLibrary)
newWithFilenameAndMajorVersionAndParent arg'1 arg'2 arg'3 =
  M142.withQStringPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) arg'2 >>= \arg'2' ->
  HoppyFHR.withCppPtr (M94.toQObject arg'3) $ \arg'3' ->
  HoppyP.fmap QLibrary
  (newWithFilenameAndMajorVersionAndParent' arg'1' arg'2' arg'3')

newWithFilenameAndVersion :: (M142.QStringValue arg'1, M142.QStringValue arg'2) => (arg'1) -> (arg'2) -> (HoppyP.IO QLibrary)
newWithFilenameAndVersion 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.fmap QLibrary
  (newWithFilenameAndVersion' arg'1' arg'2')

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

class QLibrarySuper a where
  downToQLibrary :: a -> QLibrary

instance QLibrarySuper M94.QObject where
  downToQLibrary = castQLibraryToNonconst . cast' . M94.castQObjectToConst
    where
      cast' (M94.QObjectConst ptr') = QLibraryConst $ castQObjectToQLibrary ptr'
      cast' (M94.QObjectConstGc fptr' ptr') = QLibraryConstGc fptr' $ castQObjectToQLibrary ptr'

class QLibrarySuperConst a where
  downToQLibraryConst :: a -> QLibraryConst

instance QLibrarySuperConst M94.QObjectConst where
  downToQLibraryConst = cast'
    where
      cast' (M94.QObjectConst ptr') = QLibraryConst $ castQObjectToQLibrary ptr'
      cast' (M94.QObjectConstGc fptr' ptr') = QLibraryConstGc fptr' $ castQObjectToQLibrary ptr'

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

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

data QLibraryLoadHint =
  ResolveAllSymbolsHint
  | ExportExternalSymbolsHint
  | LoadArchiveMemberHint
  | PreventUnloadHint
  | DeepBindHint
  | UnknownQLibraryLoadHint (HoppyFC.CInt)
  deriving (HoppyP.Show)

instance HoppyFHR.CppEnum (HoppyFC.CInt) QLibraryLoadHint where
  fromCppEnum ResolveAllSymbolsHint = 1
  fromCppEnum ExportExternalSymbolsHint = 2
  fromCppEnum LoadArchiveMemberHint = 4
  fromCppEnum PreventUnloadHint = 8
  fromCppEnum DeepBindHint = 16
  fromCppEnum (UnknownQLibraryLoadHint n) = n
  
  toCppEnum (1) = ResolveAllSymbolsHint
  toCppEnum (2) = ExportExternalSymbolsHint
  toCppEnum (4) = LoadArchiveMemberHint
  toCppEnum (8) = PreventUnloadHint
  toCppEnum (16) = DeepBindHint
  toCppEnum n = UnknownQLibraryLoadHint n

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

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

newtype QLibraryLoadHints = QLibraryLoadHints (HoppyFC.CInt) deriving (QtahP.Eq, QtahP.Ord, QtahP.Show)

instance QtahFlags.Flags (HoppyFC.CInt) QLibraryLoadHint QLibraryLoadHints where
  enumToFlags = QLibraryLoadHints . QtahFHR.fromCppEnum
  flagsToEnum (QLibraryLoadHints x') = QtahFHR.toCppEnum x'

class IsQLibraryLoadHints a where
  toQLibraryLoadHints :: a -> QLibraryLoadHints

instance IsQLibraryLoadHints QLibraryLoadHints where toQLibraryLoadHints = QtahP.id
instance IsQLibraryLoadHints QLibraryLoadHint where toQLibraryLoadHints = QtahFlags.enumToFlags
instance IsQLibraryLoadHints (HoppyFC.CInt) where toQLibraryLoadHints = QtahFlags.numToFlags

deepBindHint :: QLibraryLoadHints
deepBindHint = QLibraryLoadHints (16)

exportExternalSymbolsHint :: QLibraryLoadHints
exportExternalSymbolsHint = QLibraryLoadHints (2)

loadArchiveMemberHint :: QLibraryLoadHints
loadArchiveMemberHint = QLibraryLoadHints (4)

preventUnloadHint :: QLibraryLoadHints
preventUnloadHint = QLibraryLoadHints (8)

resolveAllSymbolsHint :: QLibraryLoadHints
resolveAllSymbolsHint = QLibraryLoadHints (1)

instance QtahDB.Bits QLibraryLoadHints where
  x .&. y = QtahFlags.numToFlags (QtahFlags.flagsToNum x .&. QtahFlags.flagsToNum y)
  x .|. y = QtahFlags.numToFlags (QtahFlags.flagsToNum x .|. QtahFlags.flagsToNum y)
  xor x y = QtahFlags.numToFlags $ QtahDB.xor (QtahFlags.flagsToNum x) (QtahFlags.flagsToNum y)
  complement x = QtahFlags.numToFlags $ QtahDB.complement $ QtahFlags.flagsToNum x
  shift x i = QtahFlags.numToFlags $ QtahDB.shift (QtahFlags.flagsToNum x) i
  rotate x i = QtahFlags.numToFlags $ QtahDB.rotate (QtahFlags.flagsToNum x) i
  bitSize x = case QtahDB.bitSizeMaybe x of
      QtahP.Just n -> n
      QtahP.Nothing -> QtahP.error "bitSize is undefined"
  bitSizeMaybe = QtahDB.bitSizeMaybe . QtahFlags.flagsToNum
  isSigned = QtahDB.isSigned . QtahFlags.flagsToNum
  testBit x i = QtahDB.testBit (QtahFlags.flagsToNum x) i
  bit = QtahFlags.numToFlags . QtahDB.bit
  popCount = QtahDB.popCount . QtahFlags.flagsToNum