{-# LANGUAGE TypeApplications #-}


-- | Copyright  : Will Thompson and Iñaki García Etxebarria
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- /No description available in the introspection data./

#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif

module GI.Dazzle.Objects.JoinedMenu
    ( 

-- * Exported types
    JoinedMenu(..)                          ,
    IsJoinedMenu                            ,
    toJoinedMenu                            ,


 -- * Methods
-- | 
-- 
--  === __Click to display all available methods, including inherited ones__
-- ==== Methods
-- [appendMenu]("GI.Dazzle.Objects.JoinedMenu#g:method:appendMenu"), [bindProperty]("GI.GObject.Objects.Object#g:method:bindProperty"), [bindPropertyFull]("GI.GObject.Objects.Object#g:method:bindPropertyFull"), [forceFloating]("GI.GObject.Objects.Object#g:method:forceFloating"), [freezeNotify]("GI.GObject.Objects.Object#g:method:freezeNotify"), [getv]("GI.GObject.Objects.Object#g:method:getv"), [isFloating]("GI.GObject.Objects.Object#g:method:isFloating"), [isMutable]("GI.Gio.Objects.MenuModel#g:method:isMutable"), [itemsChanged]("GI.Gio.Objects.MenuModel#g:method:itemsChanged"), [iterateItemAttributes]("GI.Gio.Objects.MenuModel#g:method:iterateItemAttributes"), [iterateItemLinks]("GI.Gio.Objects.MenuModel#g:method:iterateItemLinks"), [notify]("GI.GObject.Objects.Object#g:method:notify"), [notifyByPspec]("GI.GObject.Objects.Object#g:method:notifyByPspec"), [prependMenu]("GI.Dazzle.Objects.JoinedMenu#g:method:prependMenu"), [ref]("GI.GObject.Objects.Object#g:method:ref"), [refSink]("GI.GObject.Objects.Object#g:method:refSink"), [removeIndex]("GI.Dazzle.Objects.JoinedMenu#g:method:removeIndex"), [removeMenu]("GI.Dazzle.Objects.JoinedMenu#g:method:removeMenu"), [runDispose]("GI.GObject.Objects.Object#g:method:runDispose"), [stealData]("GI.GObject.Objects.Object#g:method:stealData"), [stealQdata]("GI.GObject.Objects.Object#g:method:stealQdata"), [thawNotify]("GI.GObject.Objects.Object#g:method:thawNotify"), [unref]("GI.GObject.Objects.Object#g:method:unref"), [watchClosure]("GI.GObject.Objects.Object#g:method:watchClosure").
-- 
-- ==== Getters
-- [getData]("GI.GObject.Objects.Object#g:method:getData"), [getItemAttributeValue]("GI.Gio.Objects.MenuModel#g:method:getItemAttributeValue"), [getItemLink]("GI.Gio.Objects.MenuModel#g:method:getItemLink"), [getNItems]("GI.Gio.Objects.MenuModel#g:method:getNItems"), [getNJoined]("GI.Dazzle.Objects.JoinedMenu#g:method:getNJoined"), [getProperty]("GI.GObject.Objects.Object#g:method:getProperty"), [getQdata]("GI.GObject.Objects.Object#g:method:getQdata").
-- 
-- ==== Setters
-- [setData]("GI.GObject.Objects.Object#g:method:setData"), [setDataFull]("GI.GObject.Objects.Object#g:method:setDataFull"), [setProperty]("GI.GObject.Objects.Object#g:method:setProperty").

#if defined(ENABLE_OVERLOADING)
    ResolveJoinedMenuMethod                 ,
#endif

-- ** appendMenu #method:appendMenu#

#if defined(ENABLE_OVERLOADING)
    JoinedMenuAppendMenuMethodInfo          ,
#endif
    joinedMenuAppendMenu                    ,


-- ** getNJoined #method:getNJoined#

#if defined(ENABLE_OVERLOADING)
    JoinedMenuGetNJoinedMethodInfo          ,
#endif
    joinedMenuGetNJoined                    ,


-- ** new #method:new#

    joinedMenuNew                           ,


-- ** prependMenu #method:prependMenu#

#if defined(ENABLE_OVERLOADING)
    JoinedMenuPrependMenuMethodInfo         ,
#endif
    joinedMenuPrependMenu                   ,


-- ** removeIndex #method:removeIndex#

#if defined(ENABLE_OVERLOADING)
    JoinedMenuRemoveIndexMethodInfo         ,
#endif
    joinedMenuRemoveIndex                   ,


-- ** removeMenu #method:removeMenu#

#if defined(ENABLE_OVERLOADING)
    JoinedMenuRemoveMenuMethodInfo          ,
#endif
    joinedMenuRemoveMenu                    ,




    ) where

import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.ShortPrelude as SP
import qualified Data.GI.Base.Overloading as O
import qualified Prelude as P

import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.BasicTypes as B.Types
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GArray as B.GArray
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GHashTable as B.GHT
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GValue as B.GValue
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.GI.Base.Properties as B.Properties
import qualified Data.GI.Base.Signals as B.Signals
import qualified Control.Monad.IO.Class as MIO
import qualified Data.Coerce as Coerce
import qualified Data.Text as T
import qualified Data.Kind as DK
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP
import qualified GHC.OverloadedLabels as OL
import qualified GHC.Records as R
import qualified Data.Word as DW
import qualified Data.Int as DI
import qualified System.Posix.Types as SPT
import qualified Foreign.C.Types as FCT

-- Workaround for https://gitlab.haskell.org/ghc/ghc/-/issues/23392
#if MIN_VERSION_base(4,18,0)
import qualified GI.GObject.Objects.Object as GObject.Object
import qualified GI.Gio.Objects.MenuModel as Gio.MenuModel

#else
import qualified GI.GObject.Objects.Object as GObject.Object
import qualified GI.Gio.Objects.MenuModel as Gio.MenuModel

#endif

-- | Memory-managed wrapper type.
newtype JoinedMenu = JoinedMenu (SP.ManagedPtr JoinedMenu)
    deriving (JoinedMenu -> JoinedMenu -> Bool
(JoinedMenu -> JoinedMenu -> Bool)
-> (JoinedMenu -> JoinedMenu -> Bool) -> Eq JoinedMenu
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: JoinedMenu -> JoinedMenu -> Bool
== :: JoinedMenu -> JoinedMenu -> Bool
$c/= :: JoinedMenu -> JoinedMenu -> Bool
/= :: JoinedMenu -> JoinedMenu -> Bool
Eq)

instance SP.ManagedPtrNewtype JoinedMenu where
    toManagedPtr :: JoinedMenu -> ManagedPtr JoinedMenu
toManagedPtr (JoinedMenu ManagedPtr JoinedMenu
p) = ManagedPtr JoinedMenu
p

foreign import ccall "dzl_joined_menu_get_type"
    c_dzl_joined_menu_get_type :: IO B.Types.GType

instance B.Types.TypedObject JoinedMenu where
    glibType :: IO GType
glibType = IO GType
c_dzl_joined_menu_get_type

instance B.Types.GObject JoinedMenu

-- | Type class for types which can be safely cast to `JoinedMenu`, for instance with `toJoinedMenu`.
class (SP.GObject o, O.IsDescendantOf JoinedMenu o) => IsJoinedMenu o
instance (SP.GObject o, O.IsDescendantOf JoinedMenu o) => IsJoinedMenu o

instance O.HasParentTypes JoinedMenu
type instance O.ParentTypes JoinedMenu = '[Gio.MenuModel.MenuModel, GObject.Object.Object]

-- | Cast to `JoinedMenu`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
toJoinedMenu :: (MIO.MonadIO m, IsJoinedMenu o) => o -> m JoinedMenu
toJoinedMenu :: forall (m :: * -> *) o.
(MonadIO m, IsJoinedMenu o) =>
o -> m JoinedMenu
toJoinedMenu = IO JoinedMenu -> m JoinedMenu
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO JoinedMenu -> m JoinedMenu)
-> (o -> IO JoinedMenu) -> o -> m JoinedMenu
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ManagedPtr JoinedMenu -> JoinedMenu) -> o -> IO JoinedMenu
forall o o'.
(HasCallStack, ManagedPtrNewtype o, TypedObject o,
 ManagedPtrNewtype o', TypedObject o') =>
(ManagedPtr o' -> o') -> o -> IO o'
B.ManagedPtr.unsafeCastTo ManagedPtr JoinedMenu -> JoinedMenu
JoinedMenu

-- | Convert 'JoinedMenu' to and from 'Data.GI.Base.GValue.GValue'. See 'Data.GI.Base.GValue.toGValue' and 'Data.GI.Base.GValue.fromGValue'.
instance B.GValue.IsGValue (Maybe JoinedMenu) where
    gvalueGType_ :: IO GType
gvalueGType_ = IO GType
c_dzl_joined_menu_get_type
    gvalueSet_ :: Ptr GValue -> Maybe JoinedMenu -> IO ()
gvalueSet_ Ptr GValue
gv Maybe JoinedMenu
P.Nothing = Ptr GValue -> Ptr JoinedMenu -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv (Ptr JoinedMenu
forall a. Ptr a
FP.nullPtr :: FP.Ptr JoinedMenu)
    gvalueSet_ Ptr GValue
gv (P.Just JoinedMenu
obj) = JoinedMenu -> (Ptr JoinedMenu -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr JoinedMenu
obj (Ptr GValue -> Ptr JoinedMenu -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv)
    gvalueGet_ :: Ptr GValue -> IO (Maybe JoinedMenu)
gvalueGet_ Ptr GValue
gv = do
        Ptr JoinedMenu
ptr <- Ptr GValue -> IO (Ptr JoinedMenu)
forall a. GObject a => Ptr GValue -> IO (Ptr a)
B.GValue.get_object Ptr GValue
gv :: IO (FP.Ptr JoinedMenu)
        if Ptr JoinedMenu
ptr Ptr JoinedMenu -> Ptr JoinedMenu -> Bool
forall a. Eq a => a -> a -> Bool
/= Ptr JoinedMenu
forall a. Ptr a
FP.nullPtr
        then JoinedMenu -> Maybe JoinedMenu
forall a. a -> Maybe a
P.Just (JoinedMenu -> Maybe JoinedMenu)
-> IO JoinedMenu -> IO (Maybe JoinedMenu)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (ManagedPtr JoinedMenu -> JoinedMenu)
-> Ptr JoinedMenu -> IO JoinedMenu
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
B.ManagedPtr.newObject ManagedPtr JoinedMenu -> JoinedMenu
JoinedMenu Ptr JoinedMenu
ptr
        else Maybe JoinedMenu -> IO (Maybe JoinedMenu)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe JoinedMenu
forall a. Maybe a
P.Nothing
        
    

#if defined(ENABLE_OVERLOADING)
type family ResolveJoinedMenuMethod (t :: Symbol) (o :: DK.Type) :: DK.Type where
    ResolveJoinedMenuMethod "appendMenu" o = JoinedMenuAppendMenuMethodInfo
    ResolveJoinedMenuMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveJoinedMenuMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveJoinedMenuMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveJoinedMenuMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveJoinedMenuMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveJoinedMenuMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveJoinedMenuMethod "isMutable" o = Gio.MenuModel.MenuModelIsMutableMethodInfo
    ResolveJoinedMenuMethod "itemsChanged" o = Gio.MenuModel.MenuModelItemsChangedMethodInfo
    ResolveJoinedMenuMethod "iterateItemAttributes" o = Gio.MenuModel.MenuModelIterateItemAttributesMethodInfo
    ResolveJoinedMenuMethod "iterateItemLinks" o = Gio.MenuModel.MenuModelIterateItemLinksMethodInfo
    ResolveJoinedMenuMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveJoinedMenuMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveJoinedMenuMethod "prependMenu" o = JoinedMenuPrependMenuMethodInfo
    ResolveJoinedMenuMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveJoinedMenuMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveJoinedMenuMethod "removeIndex" o = JoinedMenuRemoveIndexMethodInfo
    ResolveJoinedMenuMethod "removeMenu" o = JoinedMenuRemoveMenuMethodInfo
    ResolveJoinedMenuMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveJoinedMenuMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveJoinedMenuMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveJoinedMenuMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveJoinedMenuMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveJoinedMenuMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveJoinedMenuMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveJoinedMenuMethod "getItemAttributeValue" o = Gio.MenuModel.MenuModelGetItemAttributeValueMethodInfo
    ResolveJoinedMenuMethod "getItemLink" o = Gio.MenuModel.MenuModelGetItemLinkMethodInfo
    ResolveJoinedMenuMethod "getNItems" o = Gio.MenuModel.MenuModelGetNItemsMethodInfo
    ResolveJoinedMenuMethod "getNJoined" o = JoinedMenuGetNJoinedMethodInfo
    ResolveJoinedMenuMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveJoinedMenuMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveJoinedMenuMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveJoinedMenuMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
    ResolveJoinedMenuMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveJoinedMenuMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveJoinedMenuMethod t JoinedMenu, O.OverloadedMethod info JoinedMenu p) => OL.IsLabel t (JoinedMenu -> p) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.overloadedMethod @info
#else
    fromLabel _ = O.overloadedMethod @info
#endif

#if MIN_VERSION_base(4,13,0)
instance (info ~ ResolveJoinedMenuMethod t JoinedMenu, O.OverloadedMethod info JoinedMenu p, R.HasField t JoinedMenu p) => R.HasField t JoinedMenu p where
    getField = O.overloadedMethod @info

#endif

instance (info ~ ResolveJoinedMenuMethod t JoinedMenu, O.OverloadedMethodInfo info JoinedMenu) => OL.IsLabel t (O.MethodProxy info JoinedMenu) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.MethodProxy
#else
    fromLabel _ = O.MethodProxy
#endif

#endif

#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList JoinedMenu
type instance O.AttributeList JoinedMenu = JoinedMenuAttributeList
type JoinedMenuAttributeList = ('[ ] :: [(Symbol, DK.Type)])
#endif

#if defined(ENABLE_OVERLOADING)
#endif

#if defined(ENABLE_OVERLOADING)
type instance O.SignalList JoinedMenu = JoinedMenuSignalList
type JoinedMenuSignalList = ('[ '("itemsChanged", Gio.MenuModel.MenuModelItemsChangedSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, DK.Type)])

#endif

-- method JoinedMenu::new
-- method type : Constructor
-- Args: []
-- Lengths: []
-- returnType: Just
--               (TInterface Name { namespace = "Dazzle" , name = "JoinedMenu" })
-- throws : False
-- Skip return : False

foreign import ccall "dzl_joined_menu_new" dzl_joined_menu_new :: 
    IO (Ptr JoinedMenu)

-- | /No description available in the introspection data./
joinedMenuNew ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    m JoinedMenu
joinedMenuNew :: forall (m :: * -> *). (HasCallStack, MonadIO m) => m JoinedMenu
joinedMenuNew  = IO JoinedMenu -> m JoinedMenu
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO JoinedMenu -> m JoinedMenu) -> IO JoinedMenu -> m JoinedMenu
forall a b. (a -> b) -> a -> b
$ do
    Ptr JoinedMenu
result <- IO (Ptr JoinedMenu)
dzl_joined_menu_new
    Text -> Ptr JoinedMenu -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"joinedMenuNew" Ptr JoinedMenu
result
    JoinedMenu
result' <- ((ManagedPtr JoinedMenu -> JoinedMenu)
-> Ptr JoinedMenu -> IO JoinedMenu
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
wrapObject ManagedPtr JoinedMenu -> JoinedMenu
JoinedMenu) Ptr JoinedMenu
result
    JoinedMenu -> IO JoinedMenu
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return JoinedMenu
result'

#if defined(ENABLE_OVERLOADING)
#endif

-- method JoinedMenu::append_menu
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Dazzle" , name = "JoinedMenu" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "model"
--           , argType =
--               TInterface Name { namespace = "Gio" , name = "MenuModel" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dzl_joined_menu_append_menu" dzl_joined_menu_append_menu :: 
    Ptr JoinedMenu ->                       -- self : TInterface (Name {namespace = "Dazzle", name = "JoinedMenu"})
    Ptr Gio.MenuModel.MenuModel ->          -- model : TInterface (Name {namespace = "Gio", name = "MenuModel"})
    IO ()

-- | /No description available in the introspection data./
joinedMenuAppendMenu ::
    (B.CallStack.HasCallStack, MonadIO m, IsJoinedMenu a, Gio.MenuModel.IsMenuModel b) =>
    a
    -> b
    -> m ()
joinedMenuAppendMenu :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsJoinedMenu a, IsMenuModel b) =>
a -> b -> m ()
joinedMenuAppendMenu a
self b
model = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr JoinedMenu
self' <- a -> IO (Ptr JoinedMenu)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    Ptr MenuModel
model' <- b -> IO (Ptr MenuModel)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr b
model
    Ptr JoinedMenu -> Ptr MenuModel -> IO ()
dzl_joined_menu_append_menu Ptr JoinedMenu
self' Ptr MenuModel
model'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    b -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr b
model
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data JoinedMenuAppendMenuMethodInfo
instance (signature ~ (b -> m ()), MonadIO m, IsJoinedMenu a, Gio.MenuModel.IsMenuModel b) => O.OverloadedMethod JoinedMenuAppendMenuMethodInfo a signature where
    overloadedMethod = joinedMenuAppendMenu

instance O.OverloadedMethodInfo JoinedMenuAppendMenuMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Dazzle.Objects.JoinedMenu.joinedMenuAppendMenu",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-dazzle-1.0.2/docs/GI-Dazzle-Objects-JoinedMenu.html#v:joinedMenuAppendMenu"
        })


#endif

-- method JoinedMenu::get_n_joined
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Dazzle" , name = "JoinedMenu" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #DzlJoinedMenu" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TBasicType TUInt)
-- throws : False
-- Skip return : False

foreign import ccall "dzl_joined_menu_get_n_joined" dzl_joined_menu_get_n_joined :: 
    Ptr JoinedMenu ->                       -- self : TInterface (Name {namespace = "Dazzle", name = "JoinedMenu"})
    IO Word32

-- | Gets the number of joined menus.
joinedMenuGetNJoined ::
    (B.CallStack.HasCallStack, MonadIO m, IsJoinedMenu a) =>
    a
    -- ^ /@self@/: a t'GI.Dazzle.Objects.JoinedMenu.JoinedMenu'
    -> m Word32
joinedMenuGetNJoined :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsJoinedMenu a) =>
a -> m Word32
joinedMenuGetNJoined a
self = IO Word32 -> m Word32
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Word32 -> m Word32) -> IO Word32 -> m Word32
forall a b. (a -> b) -> a -> b
$ do
    Ptr JoinedMenu
self' <- a -> IO (Ptr JoinedMenu)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    Word32
result <- Ptr JoinedMenu -> IO Word32
dzl_joined_menu_get_n_joined Ptr JoinedMenu
self'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    Word32 -> IO Word32
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Word32
result

#if defined(ENABLE_OVERLOADING)
data JoinedMenuGetNJoinedMethodInfo
instance (signature ~ (m Word32), MonadIO m, IsJoinedMenu a) => O.OverloadedMethod JoinedMenuGetNJoinedMethodInfo a signature where
    overloadedMethod = joinedMenuGetNJoined

instance O.OverloadedMethodInfo JoinedMenuGetNJoinedMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Dazzle.Objects.JoinedMenu.joinedMenuGetNJoined",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-dazzle-1.0.2/docs/GI-Dazzle-Objects-JoinedMenu.html#v:joinedMenuGetNJoined"
        })


#endif

-- method JoinedMenu::prepend_menu
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Dazzle" , name = "JoinedMenu" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "model"
--           , argType =
--               TInterface Name { namespace = "Gio" , name = "MenuModel" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dzl_joined_menu_prepend_menu" dzl_joined_menu_prepend_menu :: 
    Ptr JoinedMenu ->                       -- self : TInterface (Name {namespace = "Dazzle", name = "JoinedMenu"})
    Ptr Gio.MenuModel.MenuModel ->          -- model : TInterface (Name {namespace = "Gio", name = "MenuModel"})
    IO ()

-- | /No description available in the introspection data./
joinedMenuPrependMenu ::
    (B.CallStack.HasCallStack, MonadIO m, IsJoinedMenu a, Gio.MenuModel.IsMenuModel b) =>
    a
    -> b
    -> m ()
joinedMenuPrependMenu :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsJoinedMenu a, IsMenuModel b) =>
a -> b -> m ()
joinedMenuPrependMenu a
self b
model = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr JoinedMenu
self' <- a -> IO (Ptr JoinedMenu)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    Ptr MenuModel
model' <- b -> IO (Ptr MenuModel)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr b
model
    Ptr JoinedMenu -> Ptr MenuModel -> IO ()
dzl_joined_menu_prepend_menu Ptr JoinedMenu
self' Ptr MenuModel
model'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    b -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr b
model
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data JoinedMenuPrependMenuMethodInfo
instance (signature ~ (b -> m ()), MonadIO m, IsJoinedMenu a, Gio.MenuModel.IsMenuModel b) => O.OverloadedMethod JoinedMenuPrependMenuMethodInfo a signature where
    overloadedMethod = joinedMenuPrependMenu

instance O.OverloadedMethodInfo JoinedMenuPrependMenuMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Dazzle.Objects.JoinedMenu.joinedMenuPrependMenu",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-dazzle-1.0.2/docs/GI-Dazzle-Objects-JoinedMenu.html#v:joinedMenuPrependMenu"
        })


#endif

-- method JoinedMenu::remove_index
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Dazzle" , name = "JoinedMenu" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "index"
--           , argType = TBasicType TUInt
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dzl_joined_menu_remove_index" dzl_joined_menu_remove_index :: 
    Ptr JoinedMenu ->                       -- self : TInterface (Name {namespace = "Dazzle", name = "JoinedMenu"})
    Word32 ->                               -- index : TBasicType TUInt
    IO ()

-- | /No description available in the introspection data./
joinedMenuRemoveIndex ::
    (B.CallStack.HasCallStack, MonadIO m, IsJoinedMenu a) =>
    a
    -> Word32
    -> m ()
joinedMenuRemoveIndex :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsJoinedMenu a) =>
a -> Word32 -> m ()
joinedMenuRemoveIndex a
self Word32
index = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr JoinedMenu
self' <- a -> IO (Ptr JoinedMenu)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    Ptr JoinedMenu -> Word32 -> IO ()
dzl_joined_menu_remove_index Ptr JoinedMenu
self' Word32
index
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data JoinedMenuRemoveIndexMethodInfo
instance (signature ~ (Word32 -> m ()), MonadIO m, IsJoinedMenu a) => O.OverloadedMethod JoinedMenuRemoveIndexMethodInfo a signature where
    overloadedMethod = joinedMenuRemoveIndex

instance O.OverloadedMethodInfo JoinedMenuRemoveIndexMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Dazzle.Objects.JoinedMenu.joinedMenuRemoveIndex",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-dazzle-1.0.2/docs/GI-Dazzle-Objects-JoinedMenu.html#v:joinedMenuRemoveIndex"
        })


#endif

-- method JoinedMenu::remove_menu
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Dazzle" , name = "JoinedMenu" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "model"
--           , argType =
--               TInterface Name { namespace = "Gio" , name = "MenuModel" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dzl_joined_menu_remove_menu" dzl_joined_menu_remove_menu :: 
    Ptr JoinedMenu ->                       -- self : TInterface (Name {namespace = "Dazzle", name = "JoinedMenu"})
    Ptr Gio.MenuModel.MenuModel ->          -- model : TInterface (Name {namespace = "Gio", name = "MenuModel"})
    IO ()

-- | /No description available in the introspection data./
joinedMenuRemoveMenu ::
    (B.CallStack.HasCallStack, MonadIO m, IsJoinedMenu a, Gio.MenuModel.IsMenuModel b) =>
    a
    -> b
    -> m ()
joinedMenuRemoveMenu :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsJoinedMenu a, IsMenuModel b) =>
a -> b -> m ()
joinedMenuRemoveMenu a
self b
model = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr JoinedMenu
self' <- a -> IO (Ptr JoinedMenu)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    Ptr MenuModel
model' <- b -> IO (Ptr MenuModel)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr b
model
    Ptr JoinedMenu -> Ptr MenuModel -> IO ()
dzl_joined_menu_remove_menu Ptr JoinedMenu
self' Ptr MenuModel
model'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    b -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr b
model
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data JoinedMenuRemoveMenuMethodInfo
instance (signature ~ (b -> m ()), MonadIO m, IsJoinedMenu a, Gio.MenuModel.IsMenuModel b) => O.OverloadedMethod JoinedMenuRemoveMenuMethodInfo a signature where
    overloadedMethod = joinedMenuRemoveMenu

instance O.OverloadedMethodInfo JoinedMenuRemoveMenuMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Dazzle.Objects.JoinedMenu.joinedMenuRemoveMenu",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-dazzle-1.0.2/docs/GI-Dazzle-Objects-JoinedMenu.html#v:joinedMenuRemoveMenu"
        })


#endif