{-# LANGUAGE TypeApplications #-}


-- | Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
-- 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.Gtk.Objects.CompositeAccessible
    ( 

-- * Exported types
    CompositeAccessible(..)                 ,
    IsCompositeAccessible                   ,
    toCompositeAccessible                   ,


 -- * Methods
-- ** Overloaded methods #method:Overloaded methods#

#if defined(ENABLE_OVERLOADING)
    ResolveCompositeAccessibleMethod        ,
#endif




    ) 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.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.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 GI.Atk.Interfaces.Component as Atk.Component
import qualified GI.Atk.Objects.Object as Atk.Object
import qualified GI.GObject.Objects.Object as GObject.Object
import {-# SOURCE #-} qualified GI.Gtk.Objects.Accessible as Gtk.Accessible
import {-# SOURCE #-} qualified GI.Gtk.Objects.WidgetAccessible as Gtk.WidgetAccessible

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

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

foreign import ccall "gtk_composite_accessible_get_type"
    c_gtk_composite_accessible_get_type :: IO B.Types.GType

instance B.Types.TypedObject CompositeAccessible where
    glibType :: IO GType
glibType = IO GType
c_gtk_composite_accessible_get_type

instance B.Types.GObject CompositeAccessible

-- | Convert 'CompositeAccessible' to and from 'Data.GI.Base.GValue.GValue' with 'Data.GI.Base.GValue.toGValue' and 'Data.GI.Base.GValue.fromGValue'.
instance B.GValue.IsGValue CompositeAccessible where
    toGValue :: CompositeAccessible -> IO GValue
toGValue CompositeAccessible
o = do
        GType
gtype <- IO GType
c_gtk_composite_accessible_get_type
        CompositeAccessible
-> (Ptr CompositeAccessible -> IO GValue) -> IO GValue
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr CompositeAccessible
o (GType
-> (GValue -> Ptr CompositeAccessible -> IO ())
-> Ptr CompositeAccessible
-> IO GValue
forall a. GType -> (GValue -> a -> IO ()) -> a -> IO GValue
B.GValue.buildGValue GType
gtype GValue -> Ptr CompositeAccessible -> IO ()
forall a. GObject a => GValue -> Ptr a -> IO ()
B.GValue.set_object)
        
    fromGValue :: GValue -> IO CompositeAccessible
fromGValue GValue
gv = do
        Ptr CompositeAccessible
ptr <- GValue -> IO (Ptr CompositeAccessible)
forall b. GObject b => GValue -> IO (Ptr b)
B.GValue.get_object GValue
gv :: IO (Ptr CompositeAccessible)
        (ManagedPtr CompositeAccessible -> CompositeAccessible)
-> Ptr CompositeAccessible -> IO CompositeAccessible
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
B.ManagedPtr.newObject ManagedPtr CompositeAccessible -> CompositeAccessible
CompositeAccessible Ptr CompositeAccessible
ptr
        
    

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

instance O.HasParentTypes CompositeAccessible
type instance O.ParentTypes CompositeAccessible = '[Gtk.WidgetAccessible.WidgetAccessible, Gtk.Accessible.Accessible, Atk.Object.Object, GObject.Object.Object, Atk.Component.Component]

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

#if defined(ENABLE_OVERLOADING)
type family ResolveCompositeAccessibleMethod (t :: Symbol) (o :: *) :: * where
    ResolveCompositeAccessibleMethod "addRelationship" o = Atk.Object.ObjectAddRelationshipMethodInfo
    ResolveCompositeAccessibleMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveCompositeAccessibleMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveCompositeAccessibleMethod "contains" o = Atk.Component.ComponentContainsMethodInfo
    ResolveCompositeAccessibleMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveCompositeAccessibleMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveCompositeAccessibleMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveCompositeAccessibleMethod "grabFocus" o = Atk.Component.ComponentGrabFocusMethodInfo
    ResolveCompositeAccessibleMethod "initialize" o = Atk.Object.ObjectInitializeMethodInfo
    ResolveCompositeAccessibleMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveCompositeAccessibleMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveCompositeAccessibleMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveCompositeAccessibleMethod "notifyStateChange" o = Atk.Object.ObjectNotifyStateChangeMethodInfo
    ResolveCompositeAccessibleMethod "peekParent" o = Atk.Object.ObjectPeekParentMethodInfo
    ResolveCompositeAccessibleMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveCompositeAccessibleMethod "refAccessibleAtPoint" o = Atk.Component.ComponentRefAccessibleAtPointMethodInfo
    ResolveCompositeAccessibleMethod "refAccessibleChild" o = Atk.Object.ObjectRefAccessibleChildMethodInfo
    ResolveCompositeAccessibleMethod "refRelationSet" o = Atk.Object.ObjectRefRelationSetMethodInfo
    ResolveCompositeAccessibleMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveCompositeAccessibleMethod "refStateSet" o = Atk.Object.ObjectRefStateSetMethodInfo
    ResolveCompositeAccessibleMethod "removeFocusHandler" o = Atk.Component.ComponentRemoveFocusHandlerMethodInfo
    ResolveCompositeAccessibleMethod "removePropertyChangeHandler" o = Atk.Object.ObjectRemovePropertyChangeHandlerMethodInfo
    ResolveCompositeAccessibleMethod "removeRelationship" o = Atk.Object.ObjectRemoveRelationshipMethodInfo
    ResolveCompositeAccessibleMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveCompositeAccessibleMethod "scrollTo" o = Atk.Component.ComponentScrollToMethodInfo
    ResolveCompositeAccessibleMethod "scrollToPoint" o = Atk.Component.ComponentScrollToPointMethodInfo
    ResolveCompositeAccessibleMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveCompositeAccessibleMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveCompositeAccessibleMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveCompositeAccessibleMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveCompositeAccessibleMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveCompositeAccessibleMethod "getAccessibleId" o = Atk.Object.ObjectGetAccessibleIdMethodInfo
    ResolveCompositeAccessibleMethod "getAlpha" o = Atk.Component.ComponentGetAlphaMethodInfo
    ResolveCompositeAccessibleMethod "getAttributes" o = Atk.Object.ObjectGetAttributesMethodInfo
    ResolveCompositeAccessibleMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveCompositeAccessibleMethod "getDescription" o = Atk.Object.ObjectGetDescriptionMethodInfo
    ResolveCompositeAccessibleMethod "getExtents" o = Atk.Component.ComponentGetExtentsMethodInfo
    ResolveCompositeAccessibleMethod "getIndexInParent" o = Atk.Object.ObjectGetIndexInParentMethodInfo
    ResolveCompositeAccessibleMethod "getLayer" o = Atk.Object.ObjectGetLayerMethodInfo
    ResolveCompositeAccessibleMethod "getMdiZorder" o = Atk.Object.ObjectGetMdiZorderMethodInfo
    ResolveCompositeAccessibleMethod "getNAccessibleChildren" o = Atk.Object.ObjectGetNAccessibleChildrenMethodInfo
    ResolveCompositeAccessibleMethod "getName" o = Atk.Object.ObjectGetNameMethodInfo
    ResolveCompositeAccessibleMethod "getObjectLocale" o = Atk.Object.ObjectGetObjectLocaleMethodInfo
    ResolveCompositeAccessibleMethod "getParent" o = Atk.Object.ObjectGetParentMethodInfo
    ResolveCompositeAccessibleMethod "getPosition" o = Atk.Component.ComponentGetPositionMethodInfo
    ResolveCompositeAccessibleMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveCompositeAccessibleMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveCompositeAccessibleMethod "getRole" o = Atk.Object.ObjectGetRoleMethodInfo
    ResolveCompositeAccessibleMethod "getSize" o = Atk.Component.ComponentGetSizeMethodInfo
    ResolveCompositeAccessibleMethod "getWidget" o = Gtk.Accessible.AccessibleGetWidgetMethodInfo
    ResolveCompositeAccessibleMethod "setAccessibleId" o = Atk.Object.ObjectSetAccessibleIdMethodInfo
    ResolveCompositeAccessibleMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveCompositeAccessibleMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
    ResolveCompositeAccessibleMethod "setDescription" o = Atk.Object.ObjectSetDescriptionMethodInfo
    ResolveCompositeAccessibleMethod "setExtents" o = Atk.Component.ComponentSetExtentsMethodInfo
    ResolveCompositeAccessibleMethod "setName" o = Atk.Object.ObjectSetNameMethodInfo
    ResolveCompositeAccessibleMethod "setParent" o = Atk.Object.ObjectSetParentMethodInfo
    ResolveCompositeAccessibleMethod "setPosition" o = Atk.Component.ComponentSetPositionMethodInfo
    ResolveCompositeAccessibleMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveCompositeAccessibleMethod "setRole" o = Atk.Object.ObjectSetRoleMethodInfo
    ResolveCompositeAccessibleMethod "setSize" o = Atk.Component.ComponentSetSizeMethodInfo
    ResolveCompositeAccessibleMethod "setWidget" o = Gtk.Accessible.AccessibleSetWidgetMethodInfo
    ResolveCompositeAccessibleMethod l o = O.MethodResolutionFailed l o

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

#endif

#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList CompositeAccessible
type instance O.AttributeList CompositeAccessible = CompositeAccessibleAttributeList
type CompositeAccessibleAttributeList = ('[ '("accessibleComponentLayer", Atk.Object.ObjectAccessibleComponentLayerPropertyInfo), '("accessibleComponentMdiZorder", Atk.Object.ObjectAccessibleComponentMdiZorderPropertyInfo), '("accessibleDescription", Atk.Object.ObjectAccessibleDescriptionPropertyInfo), '("accessibleHypertextNlinks", Atk.Object.ObjectAccessibleHypertextNlinksPropertyInfo), '("accessibleName", Atk.Object.ObjectAccessibleNamePropertyInfo), '("accessibleParent", Atk.Object.ObjectAccessibleParentPropertyInfo), '("accessibleRole", Atk.Object.ObjectAccessibleRolePropertyInfo), '("accessibleTableCaption", Atk.Object.ObjectAccessibleTableCaptionPropertyInfo), '("accessibleTableCaptionObject", Atk.Object.ObjectAccessibleTableCaptionObjectPropertyInfo), '("accessibleTableColumnDescription", Atk.Object.ObjectAccessibleTableColumnDescriptionPropertyInfo), '("accessibleTableColumnHeader", Atk.Object.ObjectAccessibleTableColumnHeaderPropertyInfo), '("accessibleTableRowDescription", Atk.Object.ObjectAccessibleTableRowDescriptionPropertyInfo), '("accessibleTableRowHeader", Atk.Object.ObjectAccessibleTableRowHeaderPropertyInfo), '("accessibleTableSummary", Atk.Object.ObjectAccessibleTableSummaryPropertyInfo), '("accessibleValue", Atk.Object.ObjectAccessibleValuePropertyInfo), '("widget", Gtk.Accessible.AccessibleWidgetPropertyInfo)] :: [(Symbol, *)])
#endif

#if defined(ENABLE_OVERLOADING)
#endif

#if defined(ENABLE_OVERLOADING)
type instance O.SignalList CompositeAccessible = CompositeAccessibleSignalList
type CompositeAccessibleSignalList = ('[ '("activeDescendantChanged", Atk.Object.ObjectActiveDescendantChangedSignalInfo), '("boundsChanged", Atk.Component.ComponentBoundsChangedSignalInfo), '("childrenChanged", Atk.Object.ObjectChildrenChangedSignalInfo), '("focusEvent", Atk.Object.ObjectFocusEventSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("propertyChange", Atk.Object.ObjectPropertyChangeSignalInfo), '("stateChange", Atk.Object.ObjectStateChangeSignalInfo), '("visibleDataChanged", Atk.Object.ObjectVisibleDataChangedSignalInfo)] :: [(Symbol, *)])

#endif