packages feed

qtah-qt5-0.8.0: src/Graphics/UI/Qtah/Generated/Widgets/QLayout.hs

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

module Graphics.UI.Qtah.Generated.Widgets.QLayout (
  castQLayoutToQObject,
  castQObjectToQLayout,
  castQLayoutToQLayoutItem,
  castQLayoutItemToQLayout,
  QLayoutValue (..),
  QLayoutConstPtr (..),
  contentsMargins,
  contentsRect,
  count,
  isEnabled,
  indexOf,
  itemAt,
  menuBar,
  parentWidget,
  sizeConstraint,
  spacing,
  QLayoutPtr (..),
  activate,
  addItem,
  addWidget,
  setEnabled,
  setMenuBar,
  removeItem,
  removeWidget,
  setAlignment,
  setLayoutAlignment,
  setWidgetAlignment,
  setContentsMargins,
  setContentsMarginsRaw,
  setSizeConstraint,
  setSpacing,
  takeAt,
  update,
  closestAcceptableSize,
  QLayoutConst (..),
  castQLayoutToConst,
  QLayout (..),
  castQLayoutToNonconst,
  QLayoutSuper (..),
  QLayoutSuperConst (..),
  QLayoutSizeConstraint (..),
  ) where

import qualified Foreign as HoppyF
import qualified Foreign.C as HoppyFC
import qualified Foreign.Hoppy.Runtime as HoppyFHR
import qualified Graphics.UI.Qtah.Core.HMargins as HMargins
import qualified Graphics.UI.Qtah.Core.HRect as HRect
import qualified Graphics.UI.Qtah.Core.HSize as HSize
import qualified Graphics.UI.Qtah.Flags as QtahFlags
import qualified Graphics.UI.Qtah.Generated.Core.QMargins as M68
import qualified Graphics.UI.Qtah.Generated.Core.QObject as M94
import qualified Graphics.UI.Qtah.Generated.Core.QRect as M122
import qualified Graphics.UI.Qtah.Generated.Core.QSize as M134
import qualified Graphics.UI.Qtah.Generated.Core.Types as M190
import {-# SOURCE #-} qualified Graphics.UI.Qtah.Generated.Widgets.QLayoutItem as M434
import {-# SOURCE #-} qualified Graphics.UI.Qtah.Generated.Widgets.QWidget as M506
import Prelude (($), (.), (/=), (=<<), (==), (>>=))
import qualified Prelude as HoppyP
import qualified Prelude as QtahP

foreign import ccall "genpop__QLayout_activate" activate' ::  HoppyF.Ptr QLayout -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QLayout_addItem" addItem' ::  HoppyF.Ptr QLayout -> HoppyF.Ptr M434.QLayoutItem -> HoppyP.IO ()
foreign import ccall "genpop__QLayout_addWidget" addWidget' ::  HoppyF.Ptr QLayout -> HoppyF.Ptr M506.QWidget -> HoppyP.IO ()
foreign import ccall "genpop__QLayout_closestAcceptableSize" closestAcceptableSize' ::  HoppyF.Ptr M506.QWidget -> HoppyF.Ptr M134.QSizeConst -> HoppyP.IO (HoppyF.Ptr M134.QSizeConst)
foreign import ccall "genpop__QLayout_contentsMargins" contentsMargins' ::  HoppyF.Ptr QLayoutConst -> HoppyP.IO (HoppyF.Ptr M68.QMarginsConst)
foreign import ccall "genpop__QLayout_contentsRect" contentsRect' ::  HoppyF.Ptr QLayoutConst -> HoppyP.IO (HoppyF.Ptr M122.QRectConst)
foreign import ccall "genpop__QLayout_count" count' ::  HoppyF.Ptr QLayoutConst -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QLayout_isEnabled" isEnabled' ::  HoppyF.Ptr QLayoutConst -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QLayout_setEnabled" setEnabled' ::  HoppyF.Ptr QLayout -> HoppyFC.CBool -> HoppyP.IO ()
foreign import ccall "genpop__QLayout_indexOf" indexOf' ::  HoppyF.Ptr QLayoutConst -> HoppyF.Ptr M506.QWidget -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QLayout_itemAt" itemAt' ::  HoppyF.Ptr QLayoutConst -> HoppyFC.CInt -> HoppyP.IO (HoppyF.Ptr M434.QLayoutItem)
foreign import ccall "genpop__QLayout_menuBar" menuBar' ::  HoppyF.Ptr QLayoutConst -> HoppyP.IO (HoppyF.Ptr M506.QWidget)
foreign import ccall "genpop__QLayout_setMenuBar" setMenuBar' ::  HoppyF.Ptr QLayout -> HoppyF.Ptr M506.QWidget -> HoppyP.IO ()
foreign import ccall "genpop__QLayout_parentWidget" parentWidget' ::  HoppyF.Ptr QLayoutConst -> HoppyP.IO (HoppyF.Ptr M506.QWidget)
foreign import ccall "genpop__QLayout_removeItem" removeItem' ::  HoppyF.Ptr QLayout -> HoppyF.Ptr M434.QLayoutItem -> HoppyP.IO ()
foreign import ccall "genpop__QLayout_removeWidget" removeWidget' ::  HoppyF.Ptr QLayout -> HoppyF.Ptr M506.QWidget -> HoppyP.IO ()
foreign import ccall "genpop__QLayout_setAlignment" setAlignment' ::  HoppyF.Ptr QLayout -> HoppyFC.CInt -> HoppyP.IO ()
foreign import ccall "genpop__QLayout_setLayoutAlignment" setLayoutAlignment' ::  HoppyF.Ptr QLayout -> HoppyF.Ptr QLayout -> HoppyFC.CInt -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QLayout_setWidgetAlignment" setWidgetAlignment' ::  HoppyF.Ptr QLayout -> HoppyF.Ptr M506.QWidget -> HoppyFC.CInt -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QLayout_setContentsMargins" setContentsMargins' ::  HoppyF.Ptr QLayout -> HoppyF.Ptr M68.QMarginsConst -> HoppyP.IO ()
foreign import ccall "genpop__QLayout_setContentsMarginsRaw" setContentsMarginsRaw' ::  HoppyF.Ptr QLayout -> HoppyFC.CInt -> HoppyFC.CInt -> HoppyFC.CInt -> HoppyFC.CInt -> HoppyP.IO ()
foreign import ccall "genpop__QLayout_sizeConstraint" sizeConstraint' ::  HoppyF.Ptr QLayoutConst -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QLayout_setSizeConstraint" setSizeConstraint' ::  HoppyF.Ptr QLayout -> HoppyFC.CInt -> HoppyP.IO ()
foreign import ccall "genpop__QLayout_spacing" spacing' ::  HoppyF.Ptr QLayoutConst -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QLayout_setSpacing" setSpacing' ::  HoppyF.Ptr QLayout -> HoppyFC.CInt -> HoppyP.IO ()
foreign import ccall "genpop__QLayout_takeAt" takeAt' ::  HoppyF.Ptr QLayout -> HoppyFC.CInt -> HoppyP.IO (HoppyF.Ptr M434.QLayoutItem)
foreign import ccall "genpop__QLayout_update" update' ::  HoppyF.Ptr QLayout -> HoppyP.IO ()
foreign import ccall "gencast__QLayout__QObject" castQLayoutToQObject :: HoppyF.Ptr QLayoutConst -> HoppyF.Ptr M94.QObjectConst
foreign import ccall "gencast__QObject__QLayout" castQObjectToQLayout :: HoppyF.Ptr M94.QObjectConst -> HoppyF.Ptr QLayoutConst
foreign import ccall "gencast__QLayout__QLayoutItem" castQLayoutToQLayoutItem :: HoppyF.Ptr QLayoutConst -> HoppyF.Ptr M434.QLayoutItemConst
foreign import ccall "gencast__QLayoutItem__QLayout" castQLayoutItemToQLayout :: HoppyF.Ptr M434.QLayoutItemConst -> HoppyF.Ptr QLayoutConst
foreign import ccall "gendel__QLayout" delete'QLayout :: HoppyF.Ptr QLayoutConst -> HoppyP.IO ()
foreign import ccall "&gendel__QLayout" deletePtr'QLayout :: HoppyF.FunPtr (HoppyF.Ptr QLayoutConst -> HoppyP.IO ())

class QLayoutValue a where
  withQLayoutPtr :: a -> (QLayoutConst -> HoppyP.IO b) -> HoppyP.IO b

instance {-# OVERLAPPABLE #-} QLayoutConstPtr a => QLayoutValue a where
  withQLayoutPtr = HoppyP.flip ($) . toQLayoutConst

class (M94.QObjectConstPtr this, M434.QLayoutItemConstPtr this) => QLayoutConstPtr this where
  toQLayoutConst :: this -> QLayoutConst

contentsMargins :: (QLayoutValue this) => (this) {- ^ this -} -> (HoppyP.IO HMargins.HMargins)
contentsMargins arg'1 =
  withQLayoutPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (HoppyFHR.decodeAndDelete . M68.QMarginsConst) =<<
  (contentsMargins' arg'1')

contentsRect :: (QLayoutValue this) => (this) {- ^ this -} -> (HoppyP.IO HRect.HRect)
contentsRect arg'1 =
  withQLayoutPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (HoppyFHR.decodeAndDelete . M122.QRectConst) =<<
  (contentsRect' arg'1')

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

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

indexOf :: (QLayoutValue this, M506.QWidgetPtr arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.IO HoppyP.Int)
indexOf arg'1 arg'2 =
  withQLayoutPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  HoppyFHR.withCppPtr (M506.toQWidget arg'2) $ \arg'2' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) =<<
  (indexOf' arg'1' arg'2')

itemAt :: (QLayoutValue this) => (this) {- ^ this -} -> (HoppyP.Int) -> (HoppyP.IO M434.QLayoutItem)
itemAt arg'1 arg'2 =
  withQLayoutPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) arg'2 >>= \arg'2' ->
  HoppyP.fmap M434.QLayoutItem
  (itemAt' arg'1' arg'2')

menuBar :: (QLayoutValue this) => (this) {- ^ this -} -> (HoppyP.IO M506.QWidget)
menuBar arg'1 =
  withQLayoutPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  HoppyP.fmap M506.QWidget
  (menuBar' arg'1')

parentWidget :: (QLayoutValue this) => (this) {- ^ this -} -> (HoppyP.IO M506.QWidget)
parentWidget arg'1 =
  withQLayoutPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  HoppyP.fmap M506.QWidget
  (parentWidget' arg'1')

sizeConstraint :: (QLayoutValue this) => (this) {- ^ this -} -> (HoppyP.IO QLayoutSizeConstraint)
sizeConstraint arg'1 =
  withQLayoutPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.toCppEnum
  ) =<<
  (sizeConstraint' arg'1')

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

class (QLayoutConstPtr this, M94.QObjectPtr this, M434.QLayoutItemPtr this) => QLayoutPtr this where
  toQLayout :: this -> QLayout

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

addItem :: (QLayoutPtr this, M434.QLayoutItemPtr arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.IO ())
addItem arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQLayout arg'1) $ \arg'1' ->
  HoppyFHR.withCppPtr (M434.toQLayoutItem arg'2) $ \arg'2' ->
  (addItem' arg'1' arg'2')

addWidget :: (QLayoutPtr this, M506.QWidgetPtr arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.IO ())
addWidget arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQLayout arg'1) $ \arg'1' ->
  HoppyFHR.withCppPtr (M506.toQWidget arg'2) $ \arg'2' ->
  (addWidget' arg'1' arg'2')

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

setMenuBar :: (QLayoutPtr this, M506.QWidgetPtr arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.IO ())
setMenuBar arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQLayout arg'1) $ \arg'1' ->
  HoppyFHR.withCppPtr (M506.toQWidget arg'2) $ \arg'2' ->
  (setMenuBar' arg'1' arg'2')

removeItem :: (QLayoutPtr this, M434.QLayoutItemPtr arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.IO ())
removeItem arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQLayout arg'1) $ \arg'1' ->
  HoppyFHR.withCppPtr (M434.toQLayoutItem arg'2) $ \arg'2' ->
  (removeItem' arg'1' arg'2')

removeWidget :: (QLayoutPtr this, M506.QWidgetPtr arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.IO ())
removeWidget arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQLayout arg'1) $ \arg'1' ->
  HoppyFHR.withCppPtr (M506.toQWidget arg'2) $ \arg'2' ->
  (removeWidget' arg'1' arg'2')

setAlignment :: (QLayoutPtr this, M190.IsQtAlignment arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.IO ())
setAlignment arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQLayout arg'1) $ \arg'1' ->
  (
    QtahP.return . QtahFlags.flagsToNum . M190.toQtAlignment
  ) arg'2 >>= \arg'2' ->
  (setAlignment' arg'1' arg'2')

setLayoutAlignment :: (QLayoutPtr this, QLayoutPtr arg'2, M190.IsQtAlignment arg'3) => (this) {- ^ this -} -> (arg'2) -> (arg'3) -> (HoppyP.IO HoppyP.Bool)
setLayoutAlignment arg'1 arg'2 arg'3 =
  HoppyFHR.withCppPtr (toQLayout arg'1) $ \arg'1' ->
  HoppyFHR.withCppPtr (toQLayout arg'2) $ \arg'2' ->
  (
    QtahP.return . QtahFlags.flagsToNum . M190.toQtAlignment
  ) arg'3 >>= \arg'3' ->
  (
    (HoppyP.return . (/= 0))
  ) =<<
  (setLayoutAlignment' arg'1' arg'2' arg'3')

setWidgetAlignment :: (QLayoutPtr this, M506.QWidgetPtr arg'2, M190.IsQtAlignment arg'3) => (this) {- ^ this -} -> (arg'2) -> (arg'3) -> (HoppyP.IO HoppyP.Bool)
setWidgetAlignment arg'1 arg'2 arg'3 =
  HoppyFHR.withCppPtr (toQLayout arg'1) $ \arg'1' ->
  HoppyFHR.withCppPtr (M506.toQWidget arg'2) $ \arg'2' ->
  (
    QtahP.return . QtahFlags.flagsToNum . M190.toQtAlignment
  ) arg'3 >>= \arg'3' ->
  (
    (HoppyP.return . (/= 0))
  ) =<<
  (setWidgetAlignment' arg'1' arg'2' arg'3')

setContentsMargins :: (QLayoutPtr this, M68.QMarginsValue arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.IO ())
setContentsMargins arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQLayout arg'1) $ \arg'1' ->
  M68.withQMarginsPtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  (setContentsMargins' arg'1' arg'2')

setContentsMarginsRaw :: (QLayoutPtr this) => (this) {- ^ this -} -> (HoppyP.Int) -> (HoppyP.Int) -> (HoppyP.Int) -> (HoppyP.Int) -> (HoppyP.IO ())
setContentsMarginsRaw arg'1 arg'2 arg'3 arg'4 arg'5 =
  HoppyFHR.withCppPtr (toQLayout arg'1) $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) arg'2 >>= \arg'2' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) arg'3 >>= \arg'3' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) arg'4 >>= \arg'4' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) arg'5 >>= \arg'5' ->
  (setContentsMarginsRaw' arg'1' arg'2' arg'3' arg'4' arg'5')

setSizeConstraint :: (QLayoutPtr this) => (this) {- ^ this -} -> (QLayoutSizeConstraint) -> (HoppyP.IO ())
setSizeConstraint arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQLayout arg'1) $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.fromCppEnum
  ) arg'2 >>= \arg'2' ->
  (setSizeConstraint' arg'1' arg'2')

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

takeAt :: (QLayoutPtr this) => (this) {- ^ this -} -> (HoppyP.Int) -> (HoppyP.IO M434.QLayoutItem)
takeAt arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQLayout arg'1) $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) arg'2 >>= \arg'2' ->
  HoppyP.fmap M434.QLayoutItem
  (takeAt' arg'1' arg'2')

update :: (QLayoutPtr this) => (this) {- ^ this -} -> (HoppyP.IO ())
update arg'1 =
  HoppyFHR.withCppPtr (toQLayout arg'1) $ \arg'1' ->
  (update' arg'1')

closestAcceptableSize :: (M506.QWidgetPtr arg'1, M134.QSizeValue arg'2) => (arg'1) -> (arg'2) -> (HoppyP.IO HSize.HSize)
closestAcceptableSize arg'1 arg'2 =
  HoppyFHR.withCppPtr (M506.toQWidget arg'1) $ \arg'1' ->
  M134.withQSizePtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  (HoppyFHR.decodeAndDelete . M134.QSizeConst) =<<
  (closestAcceptableSize' arg'1' arg'2')

data QLayoutConst =
    QLayoutConst (HoppyF.Ptr QLayoutConst)
  | QLayoutConstGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QLayoutConst)
  deriving (HoppyP.Show)

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

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

castQLayoutToConst :: QLayout -> QLayoutConst
castQLayoutToConst (QLayout ptr') = QLayoutConst $ HoppyF.castPtr ptr'
castQLayoutToConst (QLayoutGc fptr' ptr') = QLayoutConstGc fptr' $ HoppyF.castPtr ptr'

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

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

instance QLayoutConstPtr QLayoutConst where
  toQLayoutConst = HoppyP.id

instance M94.QObjectConstPtr QLayoutConst where
  toQObjectConst (QLayoutConst ptr') = M94.QObjectConst $ castQLayoutToQObject ptr'
  toQObjectConst (QLayoutConstGc fptr' ptr') = M94.QObjectConstGc fptr' $ castQLayoutToQObject ptr'

instance M434.QLayoutItemConstPtr QLayoutConst where
  toQLayoutItemConst (QLayoutConst ptr') = M434.QLayoutItemConst $ castQLayoutToQLayoutItem ptr'
  toQLayoutItemConst (QLayoutConstGc fptr' ptr') = M434.QLayoutItemConstGc fptr' $ castQLayoutToQLayoutItem ptr'

data QLayout =
    QLayout (HoppyF.Ptr QLayout)
  | QLayoutGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QLayout)
  deriving (HoppyP.Show)

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

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

castQLayoutToNonconst :: QLayoutConst -> QLayout
castQLayoutToNonconst (QLayoutConst ptr') = QLayout $ HoppyF.castPtr ptr'
castQLayoutToNonconst (QLayoutConstGc fptr' ptr') = QLayoutGc fptr' $ HoppyF.castPtr ptr'

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

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

instance QLayoutConstPtr QLayout where
  toQLayoutConst (QLayout ptr') = QLayoutConst $ (HoppyF.castPtr :: HoppyF.Ptr QLayout -> HoppyF.Ptr QLayoutConst) ptr'
  toQLayoutConst (QLayoutGc fptr' ptr') = QLayoutConstGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr QLayout -> HoppyF.Ptr QLayoutConst) ptr'

instance QLayoutPtr QLayout where
  toQLayout = HoppyP.id

instance M94.QObjectConstPtr QLayout where
  toQObjectConst (QLayout ptr') = M94.QObjectConst $ castQLayoutToQObject $ (HoppyF.castPtr :: HoppyF.Ptr QLayout -> HoppyF.Ptr QLayoutConst) ptr'
  toQObjectConst (QLayoutGc fptr' ptr') = M94.QObjectConstGc fptr' $ castQLayoutToQObject $ (HoppyF.castPtr :: HoppyF.Ptr QLayout -> HoppyF.Ptr QLayoutConst) ptr'

instance M94.QObjectPtr QLayout where
  toQObject (QLayout ptr') = M94.QObject $ (HoppyF.castPtr :: HoppyF.Ptr M94.QObjectConst -> HoppyF.Ptr M94.QObject) $ castQLayoutToQObject $ (HoppyF.castPtr :: HoppyF.Ptr QLayout -> HoppyF.Ptr QLayoutConst) ptr'
  toQObject (QLayoutGc fptr' ptr') = M94.QObjectGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr M94.QObjectConst -> HoppyF.Ptr M94.QObject) $ castQLayoutToQObject $ (HoppyF.castPtr :: HoppyF.Ptr QLayout -> HoppyF.Ptr QLayoutConst) ptr'

instance M434.QLayoutItemConstPtr QLayout where
  toQLayoutItemConst (QLayout ptr') = M434.QLayoutItemConst $ castQLayoutToQLayoutItem $ (HoppyF.castPtr :: HoppyF.Ptr QLayout -> HoppyF.Ptr QLayoutConst) ptr'
  toQLayoutItemConst (QLayoutGc fptr' ptr') = M434.QLayoutItemConstGc fptr' $ castQLayoutToQLayoutItem $ (HoppyF.castPtr :: HoppyF.Ptr QLayout -> HoppyF.Ptr QLayoutConst) ptr'

instance M434.QLayoutItemPtr QLayout where
  toQLayoutItem (QLayout ptr') = M434.QLayoutItem $ (HoppyF.castPtr :: HoppyF.Ptr M434.QLayoutItemConst -> HoppyF.Ptr M434.QLayoutItem) $ castQLayoutToQLayoutItem $ (HoppyF.castPtr :: HoppyF.Ptr QLayout -> HoppyF.Ptr QLayoutConst) ptr'
  toQLayoutItem (QLayoutGc fptr' ptr') = M434.QLayoutItemGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr M434.QLayoutItemConst -> HoppyF.Ptr M434.QLayoutItem) $ castQLayoutToQLayoutItem $ (HoppyF.castPtr :: HoppyF.Ptr QLayout -> HoppyF.Ptr QLayoutConst) ptr'

class QLayoutSuper a where
  downToQLayout :: a -> QLayout

instance QLayoutSuper M94.QObject where
  downToQLayout = castQLayoutToNonconst . cast' . M94.castQObjectToConst
    where
      cast' (M94.QObjectConst ptr') = QLayoutConst $ castQObjectToQLayout ptr'
      cast' (M94.QObjectConstGc fptr' ptr') = QLayoutConstGc fptr' $ castQObjectToQLayout ptr'
instance QLayoutSuper M434.QLayoutItem where
  downToQLayout = castQLayoutToNonconst . cast' . M434.castQLayoutItemToConst
    where
      cast' (M434.QLayoutItemConst ptr') = QLayoutConst $ castQLayoutItemToQLayout ptr'
      cast' (M434.QLayoutItemConstGc fptr' ptr') = QLayoutConstGc fptr' $ castQLayoutItemToQLayout ptr'

class QLayoutSuperConst a where
  downToQLayoutConst :: a -> QLayoutConst

instance QLayoutSuperConst M94.QObjectConst where
  downToQLayoutConst = cast'
    where
      cast' (M94.QObjectConst ptr') = QLayoutConst $ castQObjectToQLayout ptr'
      cast' (M94.QObjectConstGc fptr' ptr') = QLayoutConstGc fptr' $ castQObjectToQLayout ptr'
instance QLayoutSuperConst M434.QLayoutItemConst where
  downToQLayoutConst = cast'
    where
      cast' (M434.QLayoutItemConst ptr') = QLayoutConst $ castQLayoutItemToQLayout ptr'
      cast' (M434.QLayoutItemConstGc fptr' ptr') = QLayoutConstGc fptr' $ castQLayoutItemToQLayout ptr'

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

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

data QLayoutSizeConstraint =
  SetDefaultConstraint
  | SetNoConstraint
  | SetMinimumSize
  | SetFixedSize
  | SetMaximumSize
  | SetMinAndMaxSize
  | UnknownQLayoutSizeConstraint (HoppyFC.CInt)
  deriving (HoppyP.Show)

instance HoppyFHR.CppEnum (HoppyFC.CInt) QLayoutSizeConstraint where
  fromCppEnum SetDefaultConstraint = 0
  fromCppEnum SetNoConstraint = 1
  fromCppEnum SetMinimumSize = 2
  fromCppEnum SetFixedSize = 3
  fromCppEnum SetMaximumSize = 4
  fromCppEnum SetMinAndMaxSize = 5
  fromCppEnum (UnknownQLayoutSizeConstraint n) = n
  
  toCppEnum (0) = SetDefaultConstraint
  toCppEnum (1) = SetNoConstraint
  toCppEnum (2) = SetMinimumSize
  toCppEnum (3) = SetFixedSize
  toCppEnum (4) = SetMaximumSize
  toCppEnum (5) = SetMinAndMaxSize
  toCppEnum n = UnknownQLayoutSizeConstraint n

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

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