packages feed

qtah-qt5-0.3.0: src/Graphics/UI/Qtah/Generated/Widgets/QMenu.hs

{-# LANGUAGE CPP, FlexibleContexts, FlexibleInstances, GeneralizedNewtypeDeriving, MultiParamTypeClasses, ScopedTypeVariables, TypeSynonymInstances, UndecidableInstances #-}
#if !MIN_VERSION_base(4,8,0)
{-# LANGUAGE OverlappingInstances #-}
#endif

---------- GENERATED FILE, EDITS WILL BE LOST ----------

module Graphics.UI.Qtah.Generated.Widgets.QMenu (
  castQMenuToQWidget,
  castQWidgetToQMenu,
  castQMenuToQObject,
  castQObjectToQMenu,
  QMenuValue (..),
  QMenuConstPtr (..),
  actionAt,
  actionGeometry,
  activeAction,
  defaultAction,
  isEmpty,
  isTearOffMenuVisible,
  menuAction,
  separatorsCollapsible,
  isTearOffEnabled,
  title,
  QMenuPtr (..),
  setActiveAction,
  addAction,
  addNewAction,
  addMenu,
  addNewMenu,
  addSeparator,
  clear,
  setDefaultAction,
  exec,
  execAt,
  hideTearOffMenu,
  insertMenu,
  insertSeparator,
  popup,
  popupAction,
  setSeparatorsCollapsible,
  setTearOffEnabled,
  setTitle,
  QMenuConst (..),
  castQMenuToConst,
  QMenu (..),
  castQMenuToNonconst,
  new,
  newWithParent,
  newWithTitle,
  newWithTitleAndParent,
  QMenuSuper (..),
  QMenuSuperConst (..),
  ) where

import qualified Foreign as HoppyF
import qualified Foreign.Hoppy.Runtime as HoppyFHR
import qualified Graphics.UI.Qtah.Core.HRect as HRect
import qualified Graphics.UI.Qtah.Generated.Core.QObject as M30
import qualified Graphics.UI.Qtah.Generated.Core.QPoint as M34
import qualified Graphics.UI.Qtah.Generated.Core.QRect as M38
import qualified Graphics.UI.Qtah.Generated.Core.QString as M46
import {-# SOURCE #-} qualified Graphics.UI.Qtah.Generated.Widgets.QAction as M174
import {-# SOURCE #-} qualified Graphics.UI.Qtah.Generated.Widgets.QWidget as M280
import Prelude (($), (.), (/=), (=<<), (==))
import qualified Prelude as HoppyP
import qualified Prelude as QtahP

foreign import ccall "genpop__QMenu_new" new' ::  HoppyP.IO (HoppyF.Ptr QMenu)
foreign import ccall "genpop__QMenu_newWithParent" newWithParent' ::  HoppyF.Ptr M280.QWidget -> HoppyP.IO (HoppyF.Ptr QMenu)
foreign import ccall "genpop__QMenu_newWithTitle" newWithTitle' ::  HoppyF.Ptr M46.QStringConst -> HoppyP.IO (HoppyF.Ptr QMenu)
foreign import ccall "genpop__QMenu_newWithTitleAndParent" newWithTitleAndParent' ::  HoppyF.Ptr M46.QStringConst -> HoppyF.Ptr M280.QWidget -> HoppyP.IO (HoppyF.Ptr QMenu)
foreign import ccall "genpop__QMenu_actionAt" actionAt' ::  HoppyF.Ptr QMenuConst -> HoppyF.Ptr M34.QPointConst -> HoppyP.IO (HoppyF.Ptr M174.QAction)
foreign import ccall "genpop__QMenu_actionGeometry" actionGeometry' ::  HoppyF.Ptr QMenuConst -> HoppyF.Ptr M174.QAction -> HoppyP.IO (HoppyF.Ptr M38.QRectConst)
foreign import ccall "genpop__QMenu_activeAction" activeAction' ::  HoppyF.Ptr QMenuConst -> HoppyP.IO (HoppyF.Ptr M174.QAction)
foreign import ccall "genpop__QMenu_setActiveAction" setActiveAction' ::  HoppyF.Ptr QMenu -> HoppyF.Ptr M174.QAction -> HoppyP.IO ()
foreign import ccall "genpop__QMenu_addAction" addAction' ::  HoppyF.Ptr QMenu -> HoppyF.Ptr M174.QAction -> HoppyP.IO ()
foreign import ccall "genpop__QMenu_addNewAction" addNewAction' ::  HoppyF.Ptr QMenu -> HoppyF.Ptr M46.QStringConst -> HoppyP.IO (HoppyF.Ptr M174.QAction)
foreign import ccall "genpop__QMenu_addMenu" addMenu' ::  HoppyF.Ptr QMenu -> HoppyF.Ptr QMenu -> HoppyP.IO (HoppyF.Ptr M174.QAction)
foreign import ccall "genpop__QMenu_addNewMenu" addNewMenu' ::  HoppyF.Ptr QMenu -> HoppyF.Ptr M46.QStringConst -> HoppyP.IO (HoppyF.Ptr QMenu)
foreign import ccall "genpop__QMenu_addSeparator" addSeparator' ::  HoppyF.Ptr QMenu -> HoppyP.IO (HoppyF.Ptr M174.QAction)
foreign import ccall "genpop__QMenu_clear" clear' ::  HoppyF.Ptr QMenu -> HoppyP.IO ()
foreign import ccall "genpop__QMenu_defaultAction" defaultAction' ::  HoppyF.Ptr QMenuConst -> HoppyP.IO (HoppyF.Ptr M174.QAction)
foreign import ccall "genpop__QMenu_setDefaultAction" setDefaultAction' ::  HoppyF.Ptr QMenu -> HoppyF.Ptr M174.QAction -> HoppyP.IO ()
foreign import ccall "genpop__QMenu_exec" exec' ::  HoppyF.Ptr QMenu -> HoppyP.IO (HoppyF.Ptr M174.QAction)
foreign import ccall "genpop__QMenu_execAt" execAt' ::  HoppyF.Ptr QMenu -> HoppyF.Ptr M34.QPointConst -> HoppyF.Ptr M174.QAction -> HoppyP.IO (HoppyF.Ptr M174.QAction)
foreign import ccall "genpop__QMenu_hideTearOffMenu" hideTearOffMenu' ::  HoppyF.Ptr QMenu -> HoppyP.IO ()
foreign import ccall "genpop__QMenu_insertMenu" insertMenu' ::  HoppyF.Ptr QMenu -> HoppyF.Ptr M174.QAction -> HoppyF.Ptr QMenu -> HoppyP.IO (HoppyF.Ptr M174.QAction)
foreign import ccall "genpop__QMenu_insertSeparator" insertSeparator' ::  HoppyF.Ptr QMenu -> HoppyF.Ptr M174.QAction -> HoppyP.IO (HoppyF.Ptr M174.QAction)
foreign import ccall "genpop__QMenu_isEmpty" isEmpty' ::  HoppyF.Ptr QMenuConst -> HoppyP.IO HoppyFHR.CBool
foreign import ccall "genpop__QMenu_isTearOffMenuVisible" isTearOffMenuVisible' ::  HoppyF.Ptr QMenuConst -> HoppyP.IO HoppyFHR.CBool
foreign import ccall "genpop__QMenu_menuAction" menuAction' ::  HoppyF.Ptr QMenuConst -> HoppyP.IO (HoppyF.Ptr M174.QAction)
foreign import ccall "genpop__QMenu_popup" popup' ::  HoppyF.Ptr QMenu -> HoppyF.Ptr M34.QPointConst -> HoppyP.IO ()
foreign import ccall "genpop__QMenu_popupAction" popupAction' ::  HoppyF.Ptr QMenu -> HoppyF.Ptr M34.QPointConst -> HoppyF.Ptr M174.QAction -> HoppyP.IO ()
foreign import ccall "genpop__QMenu_separatorsCollapsible" separatorsCollapsible' ::  HoppyF.Ptr QMenuConst -> HoppyP.IO HoppyFHR.CBool
foreign import ccall "genpop__QMenu_setSeparatorsCollapsible" setSeparatorsCollapsible' ::  HoppyF.Ptr QMenu -> HoppyFHR.CBool -> HoppyP.IO ()
foreign import ccall "genpop__QMenu_isTearOffEnabled" isTearOffEnabled' ::  HoppyF.Ptr QMenuConst -> HoppyP.IO HoppyFHR.CBool
foreign import ccall "genpop__QMenu_setTearOffEnabled" setTearOffEnabled' ::  HoppyF.Ptr QMenu -> HoppyFHR.CBool -> HoppyP.IO ()
foreign import ccall "genpop__QMenu_title" title' ::  HoppyF.Ptr QMenuConst -> HoppyP.IO (HoppyF.Ptr M46.QStringConst)
foreign import ccall "genpop__QMenu_setTitle" setTitle' ::  HoppyF.Ptr QMenu -> HoppyF.Ptr M46.QStringConst -> HoppyP.IO ()
foreign import ccall "gencast__QMenu__QWidget" castQMenuToQWidget :: HoppyF.Ptr QMenuConst -> HoppyF.Ptr M280.QWidgetConst
foreign import ccall "gencast__QWidget__QMenu" castQWidgetToQMenu :: HoppyF.Ptr M280.QWidgetConst -> HoppyF.Ptr QMenuConst
foreign import ccall "gencast__QMenu__QObject" castQMenuToQObject :: HoppyF.Ptr QMenuConst -> HoppyF.Ptr M30.QObjectConst
foreign import ccall "gencast__QObject__QMenu" castQObjectToQMenu :: HoppyF.Ptr M30.QObjectConst -> HoppyF.Ptr QMenuConst
foreign import ccall "gendel__QMenu" delete'QMenu :: HoppyF.Ptr QMenuConst -> HoppyP.IO ()
foreign import ccall "&gendel__QMenu" deletePtr'QMenu :: HoppyF.FunPtr (HoppyF.Ptr QMenuConst -> HoppyP.IO ())

class QMenuValue a where
  withQMenuPtr :: a -> (QMenuConst -> HoppyP.IO b) -> HoppyP.IO b

#if MIN_VERSION_base(4,8,0)
instance {-# OVERLAPPABLE #-} QMenuConstPtr a => QMenuValue a where
#else
instance QMenuConstPtr a => QMenuValue a where
#endif
  withQMenuPtr = HoppyP.flip ($) . toQMenuConst

class (M280.QWidgetConstPtr this) => QMenuConstPtr this where
  toQMenuConst :: this -> QMenuConst

actionAt :: (QMenuValue arg'1, M34.QPointValue arg'2) => arg'1 -> arg'2 -> HoppyP.IO M174.QAction
actionAt arg'1 arg'2 =
  withQMenuPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  M34.withQPointPtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  HoppyP.fmap M174.QAction
  (actionAt' arg'1' arg'2')

actionGeometry :: (QMenuValue arg'1, M174.QActionPtr arg'2) => arg'1 -> arg'2 -> HoppyP.IO HRect.HRect
actionGeometry arg'1 arg'2 =
  withQMenuPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  HoppyFHR.withCppPtr (M174.toQAction arg'2) $ \arg'2' ->
  (HoppyFHR.decodeAndDelete . M38.QRectConst) =<<
  (actionGeometry' arg'1' arg'2')

activeAction :: (QMenuValue arg'1) => arg'1 -> HoppyP.IO M174.QAction
activeAction arg'1 =
  withQMenuPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  HoppyP.fmap M174.QAction
  (activeAction' arg'1')

defaultAction :: (QMenuValue arg'1) => arg'1 -> HoppyP.IO M174.QAction
defaultAction arg'1 =
  withQMenuPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  HoppyP.fmap M174.QAction
  (defaultAction' arg'1')

isEmpty :: (QMenuValue arg'1) => arg'1 -> HoppyP.IO HoppyP.Bool
isEmpty arg'1 =
  withQMenuPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  HoppyP.fmap (/= 0)
  (isEmpty' arg'1')

isTearOffMenuVisible :: (QMenuValue arg'1) => arg'1 -> HoppyP.IO HoppyP.Bool
isTearOffMenuVisible arg'1 =
  withQMenuPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  HoppyP.fmap (/= 0)
  (isTearOffMenuVisible' arg'1')

menuAction :: (QMenuValue arg'1) => arg'1 -> HoppyP.IO M174.QAction
menuAction arg'1 =
  withQMenuPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  HoppyP.fmap M174.QAction
  (menuAction' arg'1')

separatorsCollapsible :: (QMenuValue arg'1) => arg'1 -> HoppyP.IO HoppyP.Bool
separatorsCollapsible arg'1 =
  withQMenuPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  HoppyP.fmap (/= 0)
  (separatorsCollapsible' arg'1')

isTearOffEnabled :: (QMenuValue arg'1) => arg'1 -> HoppyP.IO HoppyP.Bool
isTearOffEnabled arg'1 =
  withQMenuPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  HoppyP.fmap (/= 0)
  (isTearOffEnabled' arg'1')

title :: (QMenuValue arg'1) => arg'1 -> HoppyP.IO QtahP.String
title arg'1 =
  withQMenuPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (HoppyFHR.decodeAndDelete . M46.QStringConst) =<<
  (title' arg'1')

class (QMenuConstPtr this, M280.QWidgetPtr this) => QMenuPtr this where
  toQMenu :: this -> QMenu

setActiveAction :: (QMenuPtr arg'1, M174.QActionPtr arg'2) => arg'1 -> arg'2 -> HoppyP.IO ()
setActiveAction arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQMenu arg'1) $ \arg'1' ->
  HoppyFHR.withCppPtr (M174.toQAction arg'2) $ \arg'2' ->
  (setActiveAction' arg'1' arg'2')

addAction :: (QMenuPtr arg'1, M174.QActionPtr arg'2) => arg'1 -> arg'2 -> HoppyP.IO ()
addAction arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQMenu arg'1) $ \arg'1' ->
  HoppyFHR.withCppPtr (M174.toQAction arg'2) $ \arg'2' ->
  (addAction' arg'1' arg'2')

addNewAction :: (QMenuPtr arg'1, M46.QStringValue arg'2) => arg'1 -> arg'2 -> HoppyP.IO M174.QAction
addNewAction arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQMenu arg'1) $ \arg'1' ->
  M46.withQStringPtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  HoppyP.fmap M174.QAction
  (addNewAction' arg'1' arg'2')

addMenu :: (QMenuPtr arg'1, QMenuPtr arg'2) => arg'1 -> arg'2 -> HoppyP.IO M174.QAction
addMenu arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQMenu arg'1) $ \arg'1' ->
  HoppyFHR.withCppPtr (toQMenu arg'2) $ \arg'2' ->
  HoppyP.fmap M174.QAction
  (addMenu' arg'1' arg'2')

addNewMenu :: (QMenuPtr arg'1, M46.QStringValue arg'2) => arg'1 -> arg'2 -> HoppyP.IO QMenu
addNewMenu arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQMenu arg'1) $ \arg'1' ->
  M46.withQStringPtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  HoppyP.fmap QMenu
  (addNewMenu' arg'1' arg'2')

addSeparator :: (QMenuPtr arg'1) => arg'1 -> HoppyP.IO M174.QAction
addSeparator arg'1 =
  HoppyFHR.withCppPtr (toQMenu arg'1) $ \arg'1' ->
  HoppyP.fmap M174.QAction
  (addSeparator' arg'1')

clear :: (QMenuPtr arg'1) => arg'1 -> HoppyP.IO ()
clear arg'1 =
  HoppyFHR.withCppPtr (toQMenu arg'1) $ \arg'1' ->
  (clear' arg'1')

setDefaultAction :: (QMenuPtr arg'1, M174.QActionPtr arg'2) => arg'1 -> arg'2 -> HoppyP.IO ()
setDefaultAction arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQMenu arg'1) $ \arg'1' ->
  HoppyFHR.withCppPtr (M174.toQAction arg'2) $ \arg'2' ->
  (setDefaultAction' arg'1' arg'2')

exec :: (QMenuPtr arg'1) => arg'1 -> HoppyP.IO M174.QAction
exec arg'1 =
  HoppyFHR.withCppPtr (toQMenu arg'1) $ \arg'1' ->
  HoppyP.fmap M174.QAction
  (exec' arg'1')

execAt :: (QMenuPtr arg'1, M34.QPointValue arg'2, M174.QActionPtr arg'3) => arg'1 -> arg'2 -> arg'3 -> HoppyP.IO M174.QAction
execAt arg'1 arg'2 arg'3 =
  HoppyFHR.withCppPtr (toQMenu arg'1) $ \arg'1' ->
  M34.withQPointPtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  HoppyFHR.withCppPtr (M174.toQAction arg'3) $ \arg'3' ->
  HoppyP.fmap M174.QAction
  (execAt' arg'1' arg'2' arg'3')

hideTearOffMenu :: (QMenuPtr arg'1) => arg'1 -> HoppyP.IO ()
hideTearOffMenu arg'1 =
  HoppyFHR.withCppPtr (toQMenu arg'1) $ \arg'1' ->
  (hideTearOffMenu' arg'1')

insertMenu :: (QMenuPtr arg'1, M174.QActionPtr arg'2, QMenuPtr arg'3) => arg'1 -> arg'2 -> arg'3 -> HoppyP.IO M174.QAction
insertMenu arg'1 arg'2 arg'3 =
  HoppyFHR.withCppPtr (toQMenu arg'1) $ \arg'1' ->
  HoppyFHR.withCppPtr (M174.toQAction arg'2) $ \arg'2' ->
  HoppyFHR.withCppPtr (toQMenu arg'3) $ \arg'3' ->
  HoppyP.fmap M174.QAction
  (insertMenu' arg'1' arg'2' arg'3')

insertSeparator :: (QMenuPtr arg'1, M174.QActionPtr arg'2) => arg'1 -> arg'2 -> HoppyP.IO M174.QAction
insertSeparator arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQMenu arg'1) $ \arg'1' ->
  HoppyFHR.withCppPtr (M174.toQAction arg'2) $ \arg'2' ->
  HoppyP.fmap M174.QAction
  (insertSeparator' arg'1' arg'2')

popup :: (QMenuPtr arg'1, M34.QPointValue arg'2) => arg'1 -> arg'2 -> HoppyP.IO ()
popup arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQMenu arg'1) $ \arg'1' ->
  M34.withQPointPtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  (popup' arg'1' arg'2')

popupAction :: (QMenuPtr arg'1, M34.QPointValue arg'2, M174.QActionPtr arg'3) => arg'1 -> arg'2 -> arg'3 -> HoppyP.IO ()
popupAction arg'1 arg'2 arg'3 =
  HoppyFHR.withCppPtr (toQMenu arg'1) $ \arg'1' ->
  M34.withQPointPtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  HoppyFHR.withCppPtr (M174.toQAction arg'3) $ \arg'3' ->
  (popupAction' arg'1' arg'2' arg'3')

setSeparatorsCollapsible :: (QMenuPtr arg'1) => arg'1 -> HoppyP.Bool -> HoppyP.IO ()
setSeparatorsCollapsible arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQMenu arg'1) $ \arg'1' ->
  let arg'2' = if arg'2 then 1 else 0 in
  (setSeparatorsCollapsible' arg'1' arg'2')

setTearOffEnabled :: (QMenuPtr arg'1) => arg'1 -> HoppyP.Bool -> HoppyP.IO ()
setTearOffEnabled arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQMenu arg'1) $ \arg'1' ->
  let arg'2' = if arg'2 then 1 else 0 in
  (setTearOffEnabled' arg'1' arg'2')

setTitle :: (QMenuPtr arg'1, M46.QStringValue arg'2) => arg'1 -> arg'2 -> HoppyP.IO ()
setTitle arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQMenu arg'1) $ \arg'1' ->
  M46.withQStringPtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  (setTitle' arg'1' arg'2')

data QMenuConst =
    QMenuConst (HoppyF.Ptr QMenuConst)
  | QMenuConstGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QMenuConst)
  deriving (HoppyP.Show)

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

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

castQMenuToConst :: QMenu -> QMenuConst
castQMenuToConst (QMenu ptr') = QMenuConst $ HoppyF.castPtr ptr'
castQMenuToConst (QMenuGc fptr' ptr') = QMenuConstGc fptr' $ HoppyF.castPtr ptr'

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

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

instance QMenuConstPtr QMenuConst where
  toQMenuConst = HoppyP.id

instance M280.QWidgetConstPtr QMenuConst where
  toQWidgetConst (QMenuConst ptr') = M280.QWidgetConst $ castQMenuToQWidget ptr'
  toQWidgetConst (QMenuConstGc fptr' ptr') = M280.QWidgetConstGc fptr' $ castQMenuToQWidget ptr'

instance M30.QObjectConstPtr QMenuConst where
  toQObjectConst (QMenuConst ptr') = M30.QObjectConst $ castQMenuToQObject ptr'
  toQObjectConst (QMenuConstGc fptr' ptr') = M30.QObjectConstGc fptr' $ castQMenuToQObject ptr'

data QMenu =
    QMenu (HoppyF.Ptr QMenu)
  | QMenuGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QMenu)
  deriving (HoppyP.Show)

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

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

castQMenuToNonconst :: QMenuConst -> QMenu
castQMenuToNonconst (QMenuConst ptr') = QMenu $ HoppyF.castPtr ptr'
castQMenuToNonconst (QMenuConstGc fptr' ptr') = QMenuGc fptr' $ HoppyF.castPtr ptr'

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

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

instance QMenuConstPtr QMenu where
  toQMenuConst (QMenu ptr') = QMenuConst $ (HoppyF.castPtr :: HoppyF.Ptr QMenu -> HoppyF.Ptr QMenuConst) ptr'
  toQMenuConst (QMenuGc fptr' ptr') = QMenuConstGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr QMenu -> HoppyF.Ptr QMenuConst) ptr'

instance QMenuPtr QMenu where
  toQMenu = HoppyP.id

instance M280.QWidgetConstPtr QMenu where
  toQWidgetConst (QMenu ptr') = M280.QWidgetConst $ castQMenuToQWidget $ (HoppyF.castPtr :: HoppyF.Ptr QMenu -> HoppyF.Ptr QMenuConst) ptr'
  toQWidgetConst (QMenuGc fptr' ptr') = M280.QWidgetConstGc fptr' $ castQMenuToQWidget $ (HoppyF.castPtr :: HoppyF.Ptr QMenu -> HoppyF.Ptr QMenuConst) ptr'

instance M280.QWidgetPtr QMenu where
  toQWidget (QMenu ptr') = M280.QWidget $ (HoppyF.castPtr :: HoppyF.Ptr M280.QWidgetConst -> HoppyF.Ptr M280.QWidget) $ castQMenuToQWidget $ (HoppyF.castPtr :: HoppyF.Ptr QMenu -> HoppyF.Ptr QMenuConst) ptr'
  toQWidget (QMenuGc fptr' ptr') = M280.QWidgetGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr M280.QWidgetConst -> HoppyF.Ptr M280.QWidget) $ castQMenuToQWidget $ (HoppyF.castPtr :: HoppyF.Ptr QMenu -> HoppyF.Ptr QMenuConst) ptr'

instance M30.QObjectConstPtr QMenu where
  toQObjectConst (QMenu ptr') = M30.QObjectConst $ castQMenuToQObject $ (HoppyF.castPtr :: HoppyF.Ptr QMenu -> HoppyF.Ptr QMenuConst) ptr'
  toQObjectConst (QMenuGc fptr' ptr') = M30.QObjectConstGc fptr' $ castQMenuToQObject $ (HoppyF.castPtr :: HoppyF.Ptr QMenu -> HoppyF.Ptr QMenuConst) ptr'

instance M30.QObjectPtr QMenu where
  toQObject (QMenu ptr') = M30.QObject $ (HoppyF.castPtr :: HoppyF.Ptr M30.QObjectConst -> HoppyF.Ptr M30.QObject) $ castQMenuToQObject $ (HoppyF.castPtr :: HoppyF.Ptr QMenu -> HoppyF.Ptr QMenuConst) ptr'
  toQObject (QMenuGc fptr' ptr') = M30.QObjectGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr M30.QObjectConst -> HoppyF.Ptr M30.QObject) $ castQMenuToQObject $ (HoppyF.castPtr :: HoppyF.Ptr QMenu -> HoppyF.Ptr QMenuConst) ptr'

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

newWithParent :: (M280.QWidgetPtr arg'1) => arg'1 -> HoppyP.IO QMenu
newWithParent arg'1 =
  HoppyFHR.withCppPtr (M280.toQWidget arg'1) $ \arg'1' ->
  HoppyP.fmap QMenu
  (newWithParent' arg'1')

newWithTitle :: (M46.QStringValue arg'1) => arg'1 -> HoppyP.IO QMenu
newWithTitle arg'1 =
  M46.withQStringPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  HoppyP.fmap QMenu
  (newWithTitle' arg'1')

newWithTitleAndParent :: (M46.QStringValue arg'1, M280.QWidgetPtr arg'2) => arg'1 -> arg'2 -> HoppyP.IO QMenu
newWithTitleAndParent arg'1 arg'2 =
  M46.withQStringPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  HoppyFHR.withCppPtr (M280.toQWidget arg'2) $ \arg'2' ->
  HoppyP.fmap QMenu
  (newWithTitleAndParent' arg'1' arg'2')

class QMenuSuper a where
  downToQMenu :: a -> QMenu

instance QMenuSuper M280.QWidget where
  downToQMenu = castQMenuToNonconst . cast' . M280.castQWidgetToConst
    where
      cast' (M280.QWidgetConst ptr') = QMenuConst $ castQWidgetToQMenu ptr'
      cast' (M280.QWidgetConstGc fptr' ptr') = QMenuConstGc fptr' $ castQWidgetToQMenu ptr'
instance QMenuSuper M30.QObject where
  downToQMenu = castQMenuToNonconst . cast' . M30.castQObjectToConst
    where
      cast' (M30.QObjectConst ptr') = QMenuConst $ castQObjectToQMenu ptr'
      cast' (M30.QObjectConstGc fptr' ptr') = QMenuConstGc fptr' $ castQObjectToQMenu ptr'

class QMenuSuperConst a where
  downToQMenuConst :: a -> QMenuConst

instance QMenuSuperConst M280.QWidgetConst where
  downToQMenuConst = cast'
    where
      cast' (M280.QWidgetConst ptr') = QMenuConst $ castQWidgetToQMenu ptr'
      cast' (M280.QWidgetConstGc fptr' ptr') = QMenuConstGc fptr' $ castQWidgetToQMenu ptr'
instance QMenuSuperConst M30.QObjectConst where
  downToQMenuConst = cast'
    where
      cast' (M30.QObjectConst ptr') = QMenuConst $ castQObjectToQMenu ptr'
      cast' (M30.QObjectConstGc fptr' ptr') = QMenuConstGc fptr' $ castQObjectToQMenu ptr'

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

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