{-# 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.Handy.Objects.HeaderGroupChild
    ( 

-- * Exported types
    HeaderGroupChild(..)                    ,
    IsHeaderGroupChild                      ,
    toHeaderGroupChild                      ,


 -- * Methods
-- | 
-- 
--  === __Click to display all available methods, including inherited ones__
-- ==== Methods
-- [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"), [notify]("GI.GObject.Objects.Object#g:method:notify"), [notifyByPspec]("GI.GObject.Objects.Object#g:method:notifyByPspec"), [ref]("GI.GObject.Objects.Object#g:method:ref"), [refSink]("GI.GObject.Objects.Object#g:method:refSink"), [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
-- [getChildType]("GI.Handy.Objects.HeaderGroupChild#g:method:getChildType"), [getData]("GI.GObject.Objects.Object#g:method:getData"), [getGtkHeaderBar]("GI.Handy.Objects.HeaderGroupChild#g:method:getGtkHeaderBar"), [getHeaderBar]("GI.Handy.Objects.HeaderGroupChild#g:method:getHeaderBar"), [getHeaderGroup]("GI.Handy.Objects.HeaderGroupChild#g:method:getHeaderGroup"), [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)
    ResolveHeaderGroupChildMethod           ,
#endif

-- ** getChildType #method:getChildType#

#if defined(ENABLE_OVERLOADING)
    HeaderGroupChildGetChildTypeMethodInfo  ,
#endif
    headerGroupChildGetChildType            ,


-- ** getGtkHeaderBar #method:getGtkHeaderBar#

#if defined(ENABLE_OVERLOADING)
    HeaderGroupChildGetGtkHeaderBarMethodInfo,
#endif
    headerGroupChildGetGtkHeaderBar         ,


-- ** getHeaderBar #method:getHeaderBar#

#if defined(ENABLE_OVERLOADING)
    HeaderGroupChildGetHeaderBarMethodInfo  ,
#endif
    headerGroupChildGetHeaderBar            ,


-- ** getHeaderGroup #method:getHeaderGroup#

#if defined(ENABLE_OVERLOADING)
    HeaderGroupChildGetHeaderGroupMethodInfo,
#endif
    headerGroupChildGetHeaderGroup          ,




    ) 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.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.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 GI.GObject.Objects.Object as GObject.Object
import qualified GI.Gtk.Objects.HeaderBar as Gtk.HeaderBar
import {-# SOURCE #-} qualified GI.Handy.Enums as Handy.Enums
import {-# SOURCE #-} qualified GI.Handy.Objects.HeaderBar as Handy.HeaderBar
import {-# SOURCE #-} qualified GI.Handy.Objects.HeaderGroup as Handy.HeaderGroup

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

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

foreign import ccall "hdy_header_group_child_get_type"
    c_hdy_header_group_child_get_type :: IO B.Types.GType

instance B.Types.TypedObject HeaderGroupChild where
    glibType :: IO GType
glibType = IO GType
c_hdy_header_group_child_get_type

instance B.Types.GObject HeaderGroupChild

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

instance O.HasParentTypes HeaderGroupChild
type instance O.ParentTypes HeaderGroupChild = '[GObject.Object.Object]

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

-- | Convert 'HeaderGroupChild' 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 HeaderGroupChild) where
    gvalueGType_ :: IO GType
gvalueGType_ = IO GType
c_hdy_header_group_child_get_type
    gvalueSet_ :: Ptr GValue -> Maybe HeaderGroupChild -> IO ()
gvalueSet_ Ptr GValue
gv Maybe HeaderGroupChild
P.Nothing = Ptr GValue -> Ptr HeaderGroupChild -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv (Ptr HeaderGroupChild
forall a. Ptr a
FP.nullPtr :: FP.Ptr HeaderGroupChild)
    gvalueSet_ Ptr GValue
gv (P.Just HeaderGroupChild
obj) = HeaderGroupChild -> (Ptr HeaderGroupChild -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr HeaderGroupChild
obj (Ptr GValue -> Ptr HeaderGroupChild -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv)
    gvalueGet_ :: Ptr GValue -> IO (Maybe HeaderGroupChild)
gvalueGet_ Ptr GValue
gv = do
        Ptr HeaderGroupChild
ptr <- Ptr GValue -> IO (Ptr HeaderGroupChild)
forall a. GObject a => Ptr GValue -> IO (Ptr a)
B.GValue.get_object Ptr GValue
gv :: IO (FP.Ptr HeaderGroupChild)
        if Ptr HeaderGroupChild
ptr Ptr HeaderGroupChild -> Ptr HeaderGroupChild -> Bool
forall a. Eq a => a -> a -> Bool
/= Ptr HeaderGroupChild
forall a. Ptr a
FP.nullPtr
        then HeaderGroupChild -> Maybe HeaderGroupChild
forall a. a -> Maybe a
P.Just (HeaderGroupChild -> Maybe HeaderGroupChild)
-> IO HeaderGroupChild -> IO (Maybe HeaderGroupChild)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (ManagedPtr HeaderGroupChild -> HeaderGroupChild)
-> Ptr HeaderGroupChild -> IO HeaderGroupChild
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
B.ManagedPtr.newObject ManagedPtr HeaderGroupChild -> HeaderGroupChild
HeaderGroupChild Ptr HeaderGroupChild
ptr
        else Maybe HeaderGroupChild -> IO (Maybe HeaderGroupChild)
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe HeaderGroupChild
forall a. Maybe a
P.Nothing
        
    

#if defined(ENABLE_OVERLOADING)
type family ResolveHeaderGroupChildMethod (t :: Symbol) (o :: *) :: * where
    ResolveHeaderGroupChildMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveHeaderGroupChildMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveHeaderGroupChildMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveHeaderGroupChildMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveHeaderGroupChildMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveHeaderGroupChildMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveHeaderGroupChildMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveHeaderGroupChildMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveHeaderGroupChildMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveHeaderGroupChildMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveHeaderGroupChildMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveHeaderGroupChildMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveHeaderGroupChildMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveHeaderGroupChildMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveHeaderGroupChildMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveHeaderGroupChildMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveHeaderGroupChildMethod "getChildType" o = HeaderGroupChildGetChildTypeMethodInfo
    ResolveHeaderGroupChildMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveHeaderGroupChildMethod "getGtkHeaderBar" o = HeaderGroupChildGetGtkHeaderBarMethodInfo
    ResolveHeaderGroupChildMethod "getHeaderBar" o = HeaderGroupChildGetHeaderBarMethodInfo
    ResolveHeaderGroupChildMethod "getHeaderGroup" o = HeaderGroupChildGetHeaderGroupMethodInfo
    ResolveHeaderGroupChildMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveHeaderGroupChildMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveHeaderGroupChildMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveHeaderGroupChildMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
    ResolveHeaderGroupChildMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveHeaderGroupChildMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveHeaderGroupChildMethod t HeaderGroupChild, O.OverloadedMethod info HeaderGroupChild p) => OL.IsLabel t (HeaderGroupChild -> 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 ~ ResolveHeaderGroupChildMethod t HeaderGroupChild, O.OverloadedMethod info HeaderGroupChild p, R.HasField t HeaderGroupChild p) => R.HasField t HeaderGroupChild p where
    getField = O.overloadedMethod @info

#endif

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

#endif

#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList HeaderGroupChild
type instance O.AttributeList HeaderGroupChild = HeaderGroupChildAttributeList
type HeaderGroupChildAttributeList = ('[ ] :: [(Symbol, *)])
#endif

#if defined(ENABLE_OVERLOADING)
#endif

#if defined(ENABLE_OVERLOADING)
type instance O.SignalList HeaderGroupChild = HeaderGroupChildSignalList
type HeaderGroupChildSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])

#endif

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

foreign import ccall "hdy_header_group_child_get_child_type" hdy_header_group_child_get_child_type :: 
    Ptr HeaderGroupChild ->                 -- self : TInterface (Name {namespace = "Handy", name = "HeaderGroupChild"})
    IO CUInt

-- | Gets the child type.
-- 
-- /Since: 1.0/
headerGroupChildGetChildType ::
    (B.CallStack.HasCallStack, MonadIO m, IsHeaderGroupChild a) =>
    a
    -- ^ /@self@/: a t'GI.Handy.Objects.HeaderGroupChild.HeaderGroupChild'
    -> m Handy.Enums.HeaderGroupChildType
    -- ^ __Returns:__ the child type.
headerGroupChildGetChildType :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsHeaderGroupChild a) =>
a -> m HeaderGroupChildType
headerGroupChildGetChildType a
self = IO HeaderGroupChildType -> m HeaderGroupChildType
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO HeaderGroupChildType -> m HeaderGroupChildType)
-> IO HeaderGroupChildType -> m HeaderGroupChildType
forall a b. (a -> b) -> a -> b
$ do
    Ptr HeaderGroupChild
self' <- a -> IO (Ptr HeaderGroupChild)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    CUInt
result <- Ptr HeaderGroupChild -> IO CUInt
hdy_header_group_child_get_child_type Ptr HeaderGroupChild
self'
    let result' :: HeaderGroupChildType
result' = (Int -> HeaderGroupChildType
forall a. Enum a => Int -> a
toEnum (Int -> HeaderGroupChildType)
-> (CUInt -> Int) -> CUInt -> HeaderGroupChildType
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CUInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral) CUInt
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    HeaderGroupChildType -> IO HeaderGroupChildType
forall (m :: * -> *) a. Monad m => a -> m a
return HeaderGroupChildType
result'

#if defined(ENABLE_OVERLOADING)
data HeaderGroupChildGetChildTypeMethodInfo
instance (signature ~ (m Handy.Enums.HeaderGroupChildType), MonadIO m, IsHeaderGroupChild a) => O.OverloadedMethod HeaderGroupChildGetChildTypeMethodInfo a signature where
    overloadedMethod = headerGroupChildGetChildType

instance O.OverloadedMethodInfo HeaderGroupChildGetChildTypeMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Handy.Objects.HeaderGroupChild.headerGroupChildGetChildType",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-handy-1.0.1/docs/GI-Handy-Objects-HeaderGroupChild.html#v:headerGroupChildGetChildType"
        })


#endif

-- method HeaderGroupChild::get_gtk_header_bar
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Handy" , name = "HeaderGroupChild" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #HdyHeaderGroupChild"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TInterface Name { namespace = "Gtk" , name = "HeaderBar" })
-- throws : False
-- Skip return : False

foreign import ccall "hdy_header_group_child_get_gtk_header_bar" hdy_header_group_child_get_gtk_header_bar :: 
    Ptr HeaderGroupChild ->                 -- self : TInterface (Name {namespace = "Handy", name = "HeaderGroupChild"})
    IO (Ptr Gtk.HeaderBar.HeaderBar)

-- | Gets the child t'GI.Gtk.Objects.HeaderBar.HeaderBar'.
-- Use 'GI.Handy.Objects.HeaderGroupChild.headerGroupChildGetChildType' to check the child type.
-- 
-- /Since: 1.0/
headerGroupChildGetGtkHeaderBar ::
    (B.CallStack.HasCallStack, MonadIO m, IsHeaderGroupChild a) =>
    a
    -- ^ /@self@/: a t'GI.Handy.Objects.HeaderGroupChild.HeaderGroupChild'
    -> m Gtk.HeaderBar.HeaderBar
    -- ^ __Returns:__ the child t'GI.Gtk.Objects.HeaderBar.HeaderBar', or 'P.Nothing' in case of error.
headerGroupChildGetGtkHeaderBar :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsHeaderGroupChild a) =>
a -> m HeaderBar
headerGroupChildGetGtkHeaderBar a
self = IO HeaderBar -> m HeaderBar
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO HeaderBar -> m HeaderBar) -> IO HeaderBar -> m HeaderBar
forall a b. (a -> b) -> a -> b
$ do
    Ptr HeaderGroupChild
self' <- a -> IO (Ptr HeaderGroupChild)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    Ptr HeaderBar
result <- Ptr HeaderGroupChild -> IO (Ptr HeaderBar)
hdy_header_group_child_get_gtk_header_bar Ptr HeaderGroupChild
self'
    Text -> Ptr HeaderBar -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"headerGroupChildGetGtkHeaderBar" Ptr HeaderBar
result
    HeaderBar
result' <- ((ManagedPtr HeaderBar -> HeaderBar)
-> Ptr HeaderBar -> IO HeaderBar
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
newObject ManagedPtr HeaderBar -> HeaderBar
Gtk.HeaderBar.HeaderBar) Ptr HeaderBar
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    HeaderBar -> IO HeaderBar
forall (m :: * -> *) a. Monad m => a -> m a
return HeaderBar
result'

#if defined(ENABLE_OVERLOADING)
data HeaderGroupChildGetGtkHeaderBarMethodInfo
instance (signature ~ (m Gtk.HeaderBar.HeaderBar), MonadIO m, IsHeaderGroupChild a) => O.OverloadedMethod HeaderGroupChildGetGtkHeaderBarMethodInfo a signature where
    overloadedMethod = headerGroupChildGetGtkHeaderBar

instance O.OverloadedMethodInfo HeaderGroupChildGetGtkHeaderBarMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Handy.Objects.HeaderGroupChild.headerGroupChildGetGtkHeaderBar",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-handy-1.0.1/docs/GI-Handy-Objects-HeaderGroupChild.html#v:headerGroupChildGetGtkHeaderBar"
        })


#endif

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

foreign import ccall "hdy_header_group_child_get_header_bar" hdy_header_group_child_get_header_bar :: 
    Ptr HeaderGroupChild ->                 -- self : TInterface (Name {namespace = "Handy", name = "HeaderGroupChild"})
    IO (Ptr Handy.HeaderBar.HeaderBar)

-- | Gets the child t'GI.Handy.Objects.HeaderBar.HeaderBar'.
-- Use 'GI.Handy.Objects.HeaderGroupChild.headerGroupChildGetChildType' to check the child type.
-- 
-- /Since: 1.0/
headerGroupChildGetHeaderBar ::
    (B.CallStack.HasCallStack, MonadIO m, IsHeaderGroupChild a) =>
    a
    -- ^ /@self@/: a t'GI.Handy.Objects.HeaderGroupChild.HeaderGroupChild'
    -> m Handy.HeaderBar.HeaderBar
    -- ^ __Returns:__ the child t'GI.Handy.Objects.HeaderBar.HeaderBar', or 'P.Nothing' in case of error.
headerGroupChildGetHeaderBar :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsHeaderGroupChild a) =>
a -> m HeaderBar
headerGroupChildGetHeaderBar a
self = IO HeaderBar -> m HeaderBar
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO HeaderBar -> m HeaderBar) -> IO HeaderBar -> m HeaderBar
forall a b. (a -> b) -> a -> b
$ do
    Ptr HeaderGroupChild
self' <- a -> IO (Ptr HeaderGroupChild)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    Ptr HeaderBar
result <- Ptr HeaderGroupChild -> IO (Ptr HeaderBar)
hdy_header_group_child_get_header_bar Ptr HeaderGroupChild
self'
    Text -> Ptr HeaderBar -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"headerGroupChildGetHeaderBar" Ptr HeaderBar
result
    HeaderBar
result' <- ((ManagedPtr HeaderBar -> HeaderBar)
-> Ptr HeaderBar -> IO HeaderBar
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
newObject ManagedPtr HeaderBar -> HeaderBar
Handy.HeaderBar.HeaderBar) Ptr HeaderBar
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    HeaderBar -> IO HeaderBar
forall (m :: * -> *) a. Monad m => a -> m a
return HeaderBar
result'

#if defined(ENABLE_OVERLOADING)
data HeaderGroupChildGetHeaderBarMethodInfo
instance (signature ~ (m Handy.HeaderBar.HeaderBar), MonadIO m, IsHeaderGroupChild a) => O.OverloadedMethod HeaderGroupChildGetHeaderBarMethodInfo a signature where
    overloadedMethod = headerGroupChildGetHeaderBar

instance O.OverloadedMethodInfo HeaderGroupChildGetHeaderBarMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Handy.Objects.HeaderGroupChild.headerGroupChildGetHeaderBar",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-handy-1.0.1/docs/GI-Handy-Objects-HeaderGroupChild.html#v:headerGroupChildGetHeaderBar"
        })


#endif

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

foreign import ccall "hdy_header_group_child_get_header_group" hdy_header_group_child_get_header_group :: 
    Ptr HeaderGroupChild ->                 -- self : TInterface (Name {namespace = "Handy", name = "HeaderGroupChild"})
    IO (Ptr Handy.HeaderGroup.HeaderGroup)

-- | Gets the child t'GI.Handy.Objects.HeaderGroup.HeaderGroup'.
-- Use 'GI.Handy.Objects.HeaderGroupChild.headerGroupChildGetChildType' to check the child type.
-- 
-- /Since: 1.0/
headerGroupChildGetHeaderGroup ::
    (B.CallStack.HasCallStack, MonadIO m, IsHeaderGroupChild a) =>
    a
    -- ^ /@self@/: a t'GI.Handy.Objects.HeaderGroupChild.HeaderGroupChild'
    -> m Handy.HeaderGroup.HeaderGroup
    -- ^ __Returns:__ the child t'GI.Handy.Objects.HeaderGroup.HeaderGroup', or 'P.Nothing' in case of error.
headerGroupChildGetHeaderGroup :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsHeaderGroupChild a) =>
a -> m HeaderGroup
headerGroupChildGetHeaderGroup a
self = IO HeaderGroup -> m HeaderGroup
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO HeaderGroup -> m HeaderGroup)
-> IO HeaderGroup -> m HeaderGroup
forall a b. (a -> b) -> a -> b
$ do
    Ptr HeaderGroupChild
self' <- a -> IO (Ptr HeaderGroupChild)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    Ptr HeaderGroup
result <- Ptr HeaderGroupChild -> IO (Ptr HeaderGroup)
hdy_header_group_child_get_header_group Ptr HeaderGroupChild
self'
    Text -> Ptr HeaderGroup -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"headerGroupChildGetHeaderGroup" Ptr HeaderGroup
result
    HeaderGroup
result' <- ((ManagedPtr HeaderGroup -> HeaderGroup)
-> Ptr HeaderGroup -> IO HeaderGroup
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
newObject ManagedPtr HeaderGroup -> HeaderGroup
Handy.HeaderGroup.HeaderGroup) Ptr HeaderGroup
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    HeaderGroup -> IO HeaderGroup
forall (m :: * -> *) a. Monad m => a -> m a
return HeaderGroup
result'

#if defined(ENABLE_OVERLOADING)
data HeaderGroupChildGetHeaderGroupMethodInfo
instance (signature ~ (m Handy.HeaderGroup.HeaderGroup), MonadIO m, IsHeaderGroupChild a) => O.OverloadedMethod HeaderGroupChildGetHeaderGroupMethodInfo a signature where
    overloadedMethod = headerGroupChildGetHeaderGroup

instance O.OverloadedMethodInfo HeaderGroupChildGetHeaderGroupMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Handy.Objects.HeaderGroupChild.headerGroupChildGetHeaderGroup",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-handy-1.0.1/docs/GI-Handy-Objects-HeaderGroupChild.html#v:headerGroupChildGetHeaderGroup"
        })


#endif