{- |
Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License    : LGPL-2.1
Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
-}

module GI.Atk.Objects.Object
    ( 

-- * Exported types
    Object(..)                              ,
    ObjectK                                 ,
    toObject                                ,
    noObject                                ,


 -- * Methods
-- ** objectAddRelationship
    objectAddRelationship                   ,


-- ** objectGetAttributes
    objectGetAttributes                     ,


-- ** objectGetDescription
    objectGetDescription                    ,


-- ** objectGetIndexInParent
    objectGetIndexInParent                  ,


-- ** objectGetLayer
    objectGetLayer                          ,


-- ** objectGetMdiZorder
    objectGetMdiZorder                      ,


-- ** objectGetNAccessibleChildren
    objectGetNAccessibleChildren            ,


-- ** objectGetName
    objectGetName                           ,


-- ** objectGetObjectLocale
    objectGetObjectLocale                   ,


-- ** objectGetParent
    objectGetParent                         ,


-- ** objectGetRole
    objectGetRole                           ,


-- ** objectInitialize
    objectInitialize                        ,


-- ** objectNotifyStateChange
    objectNotifyStateChange                 ,


-- ** objectPeekParent
    objectPeekParent                        ,


-- ** objectRefAccessibleChild
    objectRefAccessibleChild                ,


-- ** objectRefRelationSet
    objectRefRelationSet                    ,


-- ** objectRefStateSet
    objectRefStateSet                       ,


-- ** objectRemovePropertyChangeHandler
    objectRemovePropertyChangeHandler       ,


-- ** objectRemoveRelationship
    objectRemoveRelationship                ,


-- ** objectSetDescription
    objectSetDescription                    ,


-- ** objectSetName
    objectSetName                           ,


-- ** objectSetParent
    objectSetParent                         ,


-- ** objectSetRole
    objectSetRole                           ,




 -- * Properties
-- ** AccessibleComponentLayer
    ObjectAccessibleComponentLayerPropertyInfo,
    getObjectAccessibleComponentLayer       ,


-- ** AccessibleComponentMdiZorder
    ObjectAccessibleComponentMdiZorderPropertyInfo,
    getObjectAccessibleComponentMdiZorder   ,


-- ** AccessibleDescription
    ObjectAccessibleDescriptionPropertyInfo ,
    constructObjectAccessibleDescription    ,
    getObjectAccessibleDescription          ,
    setObjectAccessibleDescription          ,


-- ** AccessibleHypertextNlinks
    ObjectAccessibleHypertextNlinksPropertyInfo,
    getObjectAccessibleHypertextNlinks      ,


-- ** AccessibleName
    ObjectAccessibleNamePropertyInfo        ,
    constructObjectAccessibleName           ,
    getObjectAccessibleName                 ,
    setObjectAccessibleName                 ,


-- ** AccessibleParent
    ObjectAccessibleParentPropertyInfo      ,
    constructObjectAccessibleParent         ,
    getObjectAccessibleParent               ,
    setObjectAccessibleParent               ,


-- ** AccessibleRole
    ObjectAccessibleRolePropertyInfo        ,
    constructObjectAccessibleRole           ,
    getObjectAccessibleRole                 ,
    setObjectAccessibleRole                 ,


-- ** AccessibleTableCaption
    ObjectAccessibleTableCaptionPropertyInfo,
    constructObjectAccessibleTableCaption   ,
    getObjectAccessibleTableCaption         ,
    setObjectAccessibleTableCaption         ,


-- ** AccessibleTableCaptionObject
    ObjectAccessibleTableCaptionObjectPropertyInfo,
    constructObjectAccessibleTableCaptionObject,
    getObjectAccessibleTableCaptionObject   ,
    setObjectAccessibleTableCaptionObject   ,


-- ** AccessibleTableColumnDescription
    ObjectAccessibleTableColumnDescriptionPropertyInfo,
    constructObjectAccessibleTableColumnDescription,
    getObjectAccessibleTableColumnDescription,
    setObjectAccessibleTableColumnDescription,


-- ** AccessibleTableColumnHeader
    ObjectAccessibleTableColumnHeaderPropertyInfo,
    constructObjectAccessibleTableColumnHeader,
    getObjectAccessibleTableColumnHeader    ,
    setObjectAccessibleTableColumnHeader    ,


-- ** AccessibleTableRowDescription
    ObjectAccessibleTableRowDescriptionPropertyInfo,
    constructObjectAccessibleTableRowDescription,
    getObjectAccessibleTableRowDescription  ,
    setObjectAccessibleTableRowDescription  ,


-- ** AccessibleTableRowHeader
    ObjectAccessibleTableRowHeaderPropertyInfo,
    constructObjectAccessibleTableRowHeader ,
    getObjectAccessibleTableRowHeader       ,
    setObjectAccessibleTableRowHeader       ,


-- ** AccessibleTableSummary
    ObjectAccessibleTableSummaryPropertyInfo,
    constructObjectAccessibleTableSummary   ,
    getObjectAccessibleTableSummary         ,
    setObjectAccessibleTableSummary         ,


-- ** AccessibleValue
    ObjectAccessibleValuePropertyInfo       ,
    constructObjectAccessibleValue          ,
    getObjectAccessibleValue                ,
    setObjectAccessibleValue                ,




 -- * Signals
-- ** ActiveDescendantChanged
    ObjectActiveDescendantChangedCallback   ,
    ObjectActiveDescendantChangedCallbackC  ,
    ObjectActiveDescendantChangedSignalInfo ,
    afterObjectActiveDescendantChanged      ,
    mkObjectActiveDescendantChangedCallback ,
    noObjectActiveDescendantChangedCallback ,
    objectActiveDescendantChangedCallbackWrapper,
    objectActiveDescendantChangedClosure    ,
    onObjectActiveDescendantChanged         ,


-- ** ChildrenChanged
    ObjectChildrenChangedCallback           ,
    ObjectChildrenChangedCallbackC          ,
    ObjectChildrenChangedSignalInfo         ,
    afterObjectChildrenChanged              ,
    mkObjectChildrenChangedCallback         ,
    noObjectChildrenChangedCallback         ,
    objectChildrenChangedCallbackWrapper    ,
    objectChildrenChangedClosure            ,
    onObjectChildrenChanged                 ,


-- ** FocusEvent
    ObjectFocusEventCallback                ,
    ObjectFocusEventCallbackC               ,
    ObjectFocusEventSignalInfo              ,
    afterObjectFocusEvent                   ,
    mkObjectFocusEventCallback              ,
    noObjectFocusEventCallback              ,
    objectFocusEventCallbackWrapper         ,
    objectFocusEventClosure                 ,
    onObjectFocusEvent                      ,


-- ** PropertyChange
    ObjectPropertyChangeCallback            ,
    ObjectPropertyChangeCallbackC           ,
    ObjectPropertyChangeSignalInfo          ,
    afterObjectPropertyChange               ,
    mkObjectPropertyChangeCallback          ,
    noObjectPropertyChangeCallback          ,
    objectPropertyChangeCallbackWrapper     ,
    objectPropertyChangeClosure             ,
    onObjectPropertyChange                  ,


-- ** StateChange
    ObjectStateChangeCallback               ,
    ObjectStateChangeCallbackC              ,
    ObjectStateChangeSignalInfo             ,
    afterObjectStateChange                  ,
    mkObjectStateChangeCallback             ,
    noObjectStateChangeCallback             ,
    objectStateChangeCallbackWrapper        ,
    objectStateChangeClosure                ,
    onObjectStateChange                     ,


-- ** VisibleDataChanged
    ObjectVisibleDataChangedCallback        ,
    ObjectVisibleDataChangedCallbackC       ,
    ObjectVisibleDataChangedSignalInfo      ,
    afterObjectVisibleDataChanged           ,
    mkObjectVisibleDataChangedCallback      ,
    noObjectVisibleDataChangedCallback      ,
    objectVisibleDataChangedCallbackWrapper ,
    objectVisibleDataChangedClosure         ,
    onObjectVisibleDataChanged              ,




    ) where

import Prelude ()
import Data.GI.Base.ShortPrelude

import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.Atk.Types
import GI.Atk.Callbacks
import qualified GI.GObject as GObject

newtype Object = Object (ForeignPtr Object)
foreign import ccall "atk_object_get_type"
    c_atk_object_get_type :: IO GType

type instance ParentTypes Object = ObjectParentTypes
type ObjectParentTypes = '[GObject.Object]

instance GObject Object where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_atk_object_get_type
    

class GObject o => ObjectK o
instance (GObject o, IsDescendantOf Object o) => ObjectK o

toObject :: ObjectK o => o -> IO Object
toObject = unsafeCastTo Object

noObject :: Maybe Object
noObject = Nothing

-- signal Object::active-descendant-changed
type ObjectActiveDescendantChangedCallback =
    Ptr () ->
    IO ()

noObjectActiveDescendantChangedCallback :: Maybe ObjectActiveDescendantChangedCallback
noObjectActiveDescendantChangedCallback = Nothing

type ObjectActiveDescendantChangedCallbackC =
    Ptr () ->                               -- object
    Ptr () ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkObjectActiveDescendantChangedCallback :: ObjectActiveDescendantChangedCallbackC -> IO (FunPtr ObjectActiveDescendantChangedCallbackC)

objectActiveDescendantChangedClosure :: ObjectActiveDescendantChangedCallback -> IO Closure
objectActiveDescendantChangedClosure cb = newCClosure =<< mkObjectActiveDescendantChangedCallback wrapped
    where wrapped = objectActiveDescendantChangedCallbackWrapper cb

objectActiveDescendantChangedCallbackWrapper ::
    ObjectActiveDescendantChangedCallback ->
    Ptr () ->
    Ptr () ->
    Ptr () ->
    IO ()
objectActiveDescendantChangedCallbackWrapper _cb _ arg1 _ = do
    _cb  arg1

onObjectActiveDescendantChanged :: (GObject a, MonadIO m) => a -> ObjectActiveDescendantChangedCallback -> m SignalHandlerId
onObjectActiveDescendantChanged obj cb = liftIO $ connectObjectActiveDescendantChanged obj cb SignalConnectBefore
afterObjectActiveDescendantChanged :: (GObject a, MonadIO m) => a -> ObjectActiveDescendantChangedCallback -> m SignalHandlerId
afterObjectActiveDescendantChanged obj cb = connectObjectActiveDescendantChanged obj cb SignalConnectAfter

connectObjectActiveDescendantChanged :: (GObject a, MonadIO m) =>
                                        a -> ObjectActiveDescendantChangedCallback -> SignalConnectMode -> m SignalHandlerId
connectObjectActiveDescendantChanged obj cb after = liftIO $ do
    cb' <- mkObjectActiveDescendantChangedCallback (objectActiveDescendantChangedCallbackWrapper cb)
    connectSignalFunPtr obj "active-descendant-changed" cb' after

-- signal Object::children-changed
type ObjectChildrenChangedCallback =
    Word32 ->
    Ptr () ->
    IO ()

noObjectChildrenChangedCallback :: Maybe ObjectChildrenChangedCallback
noObjectChildrenChangedCallback = Nothing

type ObjectChildrenChangedCallbackC =
    Ptr () ->                               -- object
    Word32 ->
    Ptr () ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkObjectChildrenChangedCallback :: ObjectChildrenChangedCallbackC -> IO (FunPtr ObjectChildrenChangedCallbackC)

objectChildrenChangedClosure :: ObjectChildrenChangedCallback -> IO Closure
objectChildrenChangedClosure cb = newCClosure =<< mkObjectChildrenChangedCallback wrapped
    where wrapped = objectChildrenChangedCallbackWrapper cb

objectChildrenChangedCallbackWrapper ::
    ObjectChildrenChangedCallback ->
    Ptr () ->
    Word32 ->
    Ptr () ->
    Ptr () ->
    IO ()
objectChildrenChangedCallbackWrapper _cb _ arg1 arg2 _ = do
    _cb  arg1 arg2

onObjectChildrenChanged :: (GObject a, MonadIO m) => a -> ObjectChildrenChangedCallback -> m SignalHandlerId
onObjectChildrenChanged obj cb = liftIO $ connectObjectChildrenChanged obj cb SignalConnectBefore
afterObjectChildrenChanged :: (GObject a, MonadIO m) => a -> ObjectChildrenChangedCallback -> m SignalHandlerId
afterObjectChildrenChanged obj cb = connectObjectChildrenChanged obj cb SignalConnectAfter

connectObjectChildrenChanged :: (GObject a, MonadIO m) =>
                                a -> ObjectChildrenChangedCallback -> SignalConnectMode -> m SignalHandlerId
connectObjectChildrenChanged obj cb after = liftIO $ do
    cb' <- mkObjectChildrenChangedCallback (objectChildrenChangedCallbackWrapper cb)
    connectSignalFunPtr obj "children-changed" cb' after

-- signal Object::focus-event
type ObjectFocusEventCallback =
    Bool ->
    IO ()

noObjectFocusEventCallback :: Maybe ObjectFocusEventCallback
noObjectFocusEventCallback = Nothing

type ObjectFocusEventCallbackC =
    Ptr () ->                               -- object
    CInt ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkObjectFocusEventCallback :: ObjectFocusEventCallbackC -> IO (FunPtr ObjectFocusEventCallbackC)

objectFocusEventClosure :: ObjectFocusEventCallback -> IO Closure
objectFocusEventClosure cb = newCClosure =<< mkObjectFocusEventCallback wrapped
    where wrapped = objectFocusEventCallbackWrapper cb

objectFocusEventCallbackWrapper ::
    ObjectFocusEventCallback ->
    Ptr () ->
    CInt ->
    Ptr () ->
    IO ()
objectFocusEventCallbackWrapper _cb _ arg1 _ = do
    let arg1' = (/= 0) arg1
    _cb  arg1'

onObjectFocusEvent :: (GObject a, MonadIO m) => a -> ObjectFocusEventCallback -> m SignalHandlerId
onObjectFocusEvent obj cb = liftIO $ connectObjectFocusEvent obj cb SignalConnectBefore
afterObjectFocusEvent :: (GObject a, MonadIO m) => a -> ObjectFocusEventCallback -> m SignalHandlerId
afterObjectFocusEvent obj cb = connectObjectFocusEvent obj cb SignalConnectAfter

connectObjectFocusEvent :: (GObject a, MonadIO m) =>
                           a -> ObjectFocusEventCallback -> SignalConnectMode -> m SignalHandlerId
connectObjectFocusEvent obj cb after = liftIO $ do
    cb' <- mkObjectFocusEventCallback (objectFocusEventCallbackWrapper cb)
    connectSignalFunPtr obj "focus-event" cb' after

-- signal Object::property-change
type ObjectPropertyChangeCallback =
    Ptr () ->
    IO ()

noObjectPropertyChangeCallback :: Maybe ObjectPropertyChangeCallback
noObjectPropertyChangeCallback = Nothing

type ObjectPropertyChangeCallbackC =
    Ptr () ->                               -- object
    Ptr () ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkObjectPropertyChangeCallback :: ObjectPropertyChangeCallbackC -> IO (FunPtr ObjectPropertyChangeCallbackC)

objectPropertyChangeClosure :: ObjectPropertyChangeCallback -> IO Closure
objectPropertyChangeClosure cb = newCClosure =<< mkObjectPropertyChangeCallback wrapped
    where wrapped = objectPropertyChangeCallbackWrapper cb

objectPropertyChangeCallbackWrapper ::
    ObjectPropertyChangeCallback ->
    Ptr () ->
    Ptr () ->
    Ptr () ->
    IO ()
objectPropertyChangeCallbackWrapper _cb _ arg1 _ = do
    _cb  arg1

onObjectPropertyChange :: (GObject a, MonadIO m) => a -> ObjectPropertyChangeCallback -> m SignalHandlerId
onObjectPropertyChange obj cb = liftIO $ connectObjectPropertyChange obj cb SignalConnectBefore
afterObjectPropertyChange :: (GObject a, MonadIO m) => a -> ObjectPropertyChangeCallback -> m SignalHandlerId
afterObjectPropertyChange obj cb = connectObjectPropertyChange obj cb SignalConnectAfter

connectObjectPropertyChange :: (GObject a, MonadIO m) =>
                               a -> ObjectPropertyChangeCallback -> SignalConnectMode -> m SignalHandlerId
connectObjectPropertyChange obj cb after = liftIO $ do
    cb' <- mkObjectPropertyChangeCallback (objectPropertyChangeCallbackWrapper cb)
    connectSignalFunPtr obj "property-change" cb' after

-- signal Object::state-change
type ObjectStateChangeCallback =
    T.Text ->
    Bool ->
    IO ()

noObjectStateChangeCallback :: Maybe ObjectStateChangeCallback
noObjectStateChangeCallback = Nothing

type ObjectStateChangeCallbackC =
    Ptr () ->                               -- object
    CString ->
    CInt ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkObjectStateChangeCallback :: ObjectStateChangeCallbackC -> IO (FunPtr ObjectStateChangeCallbackC)

objectStateChangeClosure :: ObjectStateChangeCallback -> IO Closure
objectStateChangeClosure cb = newCClosure =<< mkObjectStateChangeCallback wrapped
    where wrapped = objectStateChangeCallbackWrapper cb

objectStateChangeCallbackWrapper ::
    ObjectStateChangeCallback ->
    Ptr () ->
    CString ->
    CInt ->
    Ptr () ->
    IO ()
objectStateChangeCallbackWrapper _cb _ arg1 arg2 _ = do
    arg1' <- cstringToText arg1
    let arg2' = (/= 0) arg2
    _cb  arg1' arg2'

onObjectStateChange :: (GObject a, MonadIO m) => a -> ObjectStateChangeCallback -> m SignalHandlerId
onObjectStateChange obj cb = liftIO $ connectObjectStateChange obj cb SignalConnectBefore
afterObjectStateChange :: (GObject a, MonadIO m) => a -> ObjectStateChangeCallback -> m SignalHandlerId
afterObjectStateChange obj cb = connectObjectStateChange obj cb SignalConnectAfter

connectObjectStateChange :: (GObject a, MonadIO m) =>
                            a -> ObjectStateChangeCallback -> SignalConnectMode -> m SignalHandlerId
connectObjectStateChange obj cb after = liftIO $ do
    cb' <- mkObjectStateChangeCallback (objectStateChangeCallbackWrapper cb)
    connectSignalFunPtr obj "state-change" cb' after

-- signal Object::visible-data-changed
type ObjectVisibleDataChangedCallback =
    IO ()

noObjectVisibleDataChangedCallback :: Maybe ObjectVisibleDataChangedCallback
noObjectVisibleDataChangedCallback = Nothing

type ObjectVisibleDataChangedCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkObjectVisibleDataChangedCallback :: ObjectVisibleDataChangedCallbackC -> IO (FunPtr ObjectVisibleDataChangedCallbackC)

objectVisibleDataChangedClosure :: ObjectVisibleDataChangedCallback -> IO Closure
objectVisibleDataChangedClosure cb = newCClosure =<< mkObjectVisibleDataChangedCallback wrapped
    where wrapped = objectVisibleDataChangedCallbackWrapper cb

objectVisibleDataChangedCallbackWrapper ::
    ObjectVisibleDataChangedCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
objectVisibleDataChangedCallbackWrapper _cb _ _ = do
    _cb 

onObjectVisibleDataChanged :: (GObject a, MonadIO m) => a -> ObjectVisibleDataChangedCallback -> m SignalHandlerId
onObjectVisibleDataChanged obj cb = liftIO $ connectObjectVisibleDataChanged obj cb SignalConnectBefore
afterObjectVisibleDataChanged :: (GObject a, MonadIO m) => a -> ObjectVisibleDataChangedCallback -> m SignalHandlerId
afterObjectVisibleDataChanged obj cb = connectObjectVisibleDataChanged obj cb SignalConnectAfter

connectObjectVisibleDataChanged :: (GObject a, MonadIO m) =>
                                   a -> ObjectVisibleDataChangedCallback -> SignalConnectMode -> m SignalHandlerId
connectObjectVisibleDataChanged obj cb after = liftIO $ do
    cb' <- mkObjectVisibleDataChangedCallback (objectVisibleDataChangedCallbackWrapper cb)
    connectSignalFunPtr obj "visible-data-changed" cb' after

-- VVV Prop "accessible-component-layer"
   -- Type: TBasicType TInt32
   -- Flags: [PropertyReadable]

getObjectAccessibleComponentLayer :: (MonadIO m, ObjectK o) => o -> m Int32
getObjectAccessibleComponentLayer obj = liftIO $ getObjectPropertyCInt obj "accessible-component-layer"

data ObjectAccessibleComponentLayerPropertyInfo
instance AttrInfo ObjectAccessibleComponentLayerPropertyInfo where
    type AttrAllowedOps ObjectAccessibleComponentLayerPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint ObjectAccessibleComponentLayerPropertyInfo = (~) ()
    type AttrBaseTypeConstraint ObjectAccessibleComponentLayerPropertyInfo = ObjectK
    type AttrGetType ObjectAccessibleComponentLayerPropertyInfo = Int32
    type AttrLabel ObjectAccessibleComponentLayerPropertyInfo = "Object::accessible-component-layer"
    attrGet _ = getObjectAccessibleComponentLayer
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "accessible-component-mdi-zorder"
   -- Type: TBasicType TInt32
   -- Flags: [PropertyReadable]

getObjectAccessibleComponentMdiZorder :: (MonadIO m, ObjectK o) => o -> m Int32
getObjectAccessibleComponentMdiZorder obj = liftIO $ getObjectPropertyCInt obj "accessible-component-mdi-zorder"

data ObjectAccessibleComponentMdiZorderPropertyInfo
instance AttrInfo ObjectAccessibleComponentMdiZorderPropertyInfo where
    type AttrAllowedOps ObjectAccessibleComponentMdiZorderPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint ObjectAccessibleComponentMdiZorderPropertyInfo = (~) ()
    type AttrBaseTypeConstraint ObjectAccessibleComponentMdiZorderPropertyInfo = ObjectK
    type AttrGetType ObjectAccessibleComponentMdiZorderPropertyInfo = Int32
    type AttrLabel ObjectAccessibleComponentMdiZorderPropertyInfo = "Object::accessible-component-mdi-zorder"
    attrGet _ = getObjectAccessibleComponentMdiZorder
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "accessible-description"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]

getObjectAccessibleDescription :: (MonadIO m, ObjectK o) => o -> m T.Text
getObjectAccessibleDescription obj = liftIO $ getObjectPropertyString obj "accessible-description"

setObjectAccessibleDescription :: (MonadIO m, ObjectK o) => o -> T.Text -> m ()
setObjectAccessibleDescription obj val = liftIO $ setObjectPropertyString obj "accessible-description" val

constructObjectAccessibleDescription :: T.Text -> IO ([Char], GValue)
constructObjectAccessibleDescription val = constructObjectPropertyString "accessible-description" val

data ObjectAccessibleDescriptionPropertyInfo
instance AttrInfo ObjectAccessibleDescriptionPropertyInfo where
    type AttrAllowedOps ObjectAccessibleDescriptionPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ObjectAccessibleDescriptionPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint ObjectAccessibleDescriptionPropertyInfo = ObjectK
    type AttrGetType ObjectAccessibleDescriptionPropertyInfo = T.Text
    type AttrLabel ObjectAccessibleDescriptionPropertyInfo = "Object::accessible-description"
    attrGet _ = getObjectAccessibleDescription
    attrSet _ = setObjectAccessibleDescription
    attrConstruct _ = constructObjectAccessibleDescription

-- VVV Prop "accessible-hypertext-nlinks"
   -- Type: TBasicType TInt32
   -- Flags: [PropertyReadable]

getObjectAccessibleHypertextNlinks :: (MonadIO m, ObjectK o) => o -> m Int32
getObjectAccessibleHypertextNlinks obj = liftIO $ getObjectPropertyCInt obj "accessible-hypertext-nlinks"

data ObjectAccessibleHypertextNlinksPropertyInfo
instance AttrInfo ObjectAccessibleHypertextNlinksPropertyInfo where
    type AttrAllowedOps ObjectAccessibleHypertextNlinksPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint ObjectAccessibleHypertextNlinksPropertyInfo = (~) ()
    type AttrBaseTypeConstraint ObjectAccessibleHypertextNlinksPropertyInfo = ObjectK
    type AttrGetType ObjectAccessibleHypertextNlinksPropertyInfo = Int32
    type AttrLabel ObjectAccessibleHypertextNlinksPropertyInfo = "Object::accessible-hypertext-nlinks"
    attrGet _ = getObjectAccessibleHypertextNlinks
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "accessible-name"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]

getObjectAccessibleName :: (MonadIO m, ObjectK o) => o -> m T.Text
getObjectAccessibleName obj = liftIO $ getObjectPropertyString obj "accessible-name"

setObjectAccessibleName :: (MonadIO m, ObjectK o) => o -> T.Text -> m ()
setObjectAccessibleName obj val = liftIO $ setObjectPropertyString obj "accessible-name" val

constructObjectAccessibleName :: T.Text -> IO ([Char], GValue)
constructObjectAccessibleName val = constructObjectPropertyString "accessible-name" val

data ObjectAccessibleNamePropertyInfo
instance AttrInfo ObjectAccessibleNamePropertyInfo where
    type AttrAllowedOps ObjectAccessibleNamePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ObjectAccessibleNamePropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint ObjectAccessibleNamePropertyInfo = ObjectK
    type AttrGetType ObjectAccessibleNamePropertyInfo = T.Text
    type AttrLabel ObjectAccessibleNamePropertyInfo = "Object::accessible-name"
    attrGet _ = getObjectAccessibleName
    attrSet _ = setObjectAccessibleName
    attrConstruct _ = constructObjectAccessibleName

-- VVV Prop "accessible-parent"
   -- Type: TInterface "Atk" "Object"
   -- Flags: [PropertyReadable,PropertyWritable]

getObjectAccessibleParent :: (MonadIO m, ObjectK o) => o -> m Object
getObjectAccessibleParent obj = liftIO $ getObjectPropertyObject obj "accessible-parent" Object

setObjectAccessibleParent :: (MonadIO m, ObjectK o, ObjectK a) => o -> a -> m ()
setObjectAccessibleParent obj val = liftIO $ setObjectPropertyObject obj "accessible-parent" val

constructObjectAccessibleParent :: (ObjectK a) => a -> IO ([Char], GValue)
constructObjectAccessibleParent val = constructObjectPropertyObject "accessible-parent" val

data ObjectAccessibleParentPropertyInfo
instance AttrInfo ObjectAccessibleParentPropertyInfo where
    type AttrAllowedOps ObjectAccessibleParentPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ObjectAccessibleParentPropertyInfo = ObjectK
    type AttrBaseTypeConstraint ObjectAccessibleParentPropertyInfo = ObjectK
    type AttrGetType ObjectAccessibleParentPropertyInfo = Object
    type AttrLabel ObjectAccessibleParentPropertyInfo = "Object::accessible-parent"
    attrGet _ = getObjectAccessibleParent
    attrSet _ = setObjectAccessibleParent
    attrConstruct _ = constructObjectAccessibleParent

-- VVV Prop "accessible-role"
   -- Type: TBasicType TInt32
   -- Flags: [PropertyReadable,PropertyWritable]

getObjectAccessibleRole :: (MonadIO m, ObjectK o) => o -> m Int32
getObjectAccessibleRole obj = liftIO $ getObjectPropertyCInt obj "accessible-role"

setObjectAccessibleRole :: (MonadIO m, ObjectK o) => o -> Int32 -> m ()
setObjectAccessibleRole obj val = liftIO $ setObjectPropertyCInt obj "accessible-role" val

constructObjectAccessibleRole :: Int32 -> IO ([Char], GValue)
constructObjectAccessibleRole val = constructObjectPropertyCInt "accessible-role" val

data ObjectAccessibleRolePropertyInfo
instance AttrInfo ObjectAccessibleRolePropertyInfo where
    type AttrAllowedOps ObjectAccessibleRolePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ObjectAccessibleRolePropertyInfo = (~) Int32
    type AttrBaseTypeConstraint ObjectAccessibleRolePropertyInfo = ObjectK
    type AttrGetType ObjectAccessibleRolePropertyInfo = Int32
    type AttrLabel ObjectAccessibleRolePropertyInfo = "Object::accessible-role"
    attrGet _ = getObjectAccessibleRole
    attrSet _ = setObjectAccessibleRole
    attrConstruct _ = constructObjectAccessibleRole

-- VVV Prop "accessible-table-caption"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]

getObjectAccessibleTableCaption :: (MonadIO m, ObjectK o) => o -> m T.Text
getObjectAccessibleTableCaption obj = liftIO $ getObjectPropertyString obj "accessible-table-caption"

setObjectAccessibleTableCaption :: (MonadIO m, ObjectK o) => o -> T.Text -> m ()
setObjectAccessibleTableCaption obj val = liftIO $ setObjectPropertyString obj "accessible-table-caption" val

constructObjectAccessibleTableCaption :: T.Text -> IO ([Char], GValue)
constructObjectAccessibleTableCaption val = constructObjectPropertyString "accessible-table-caption" val

data ObjectAccessibleTableCaptionPropertyInfo
instance AttrInfo ObjectAccessibleTableCaptionPropertyInfo where
    type AttrAllowedOps ObjectAccessibleTableCaptionPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ObjectAccessibleTableCaptionPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint ObjectAccessibleTableCaptionPropertyInfo = ObjectK
    type AttrGetType ObjectAccessibleTableCaptionPropertyInfo = T.Text
    type AttrLabel ObjectAccessibleTableCaptionPropertyInfo = "Object::accessible-table-caption"
    attrGet _ = getObjectAccessibleTableCaption
    attrSet _ = setObjectAccessibleTableCaption
    attrConstruct _ = constructObjectAccessibleTableCaption

-- VVV Prop "accessible-table-caption-object"
   -- Type: TInterface "Atk" "Object"
   -- Flags: [PropertyReadable,PropertyWritable]

getObjectAccessibleTableCaptionObject :: (MonadIO m, ObjectK o) => o -> m Object
getObjectAccessibleTableCaptionObject obj = liftIO $ getObjectPropertyObject obj "accessible-table-caption-object" Object

setObjectAccessibleTableCaptionObject :: (MonadIO m, ObjectK o, ObjectK a) => o -> a -> m ()
setObjectAccessibleTableCaptionObject obj val = liftIO $ setObjectPropertyObject obj "accessible-table-caption-object" val

constructObjectAccessibleTableCaptionObject :: (ObjectK a) => a -> IO ([Char], GValue)
constructObjectAccessibleTableCaptionObject val = constructObjectPropertyObject "accessible-table-caption-object" val

data ObjectAccessibleTableCaptionObjectPropertyInfo
instance AttrInfo ObjectAccessibleTableCaptionObjectPropertyInfo where
    type AttrAllowedOps ObjectAccessibleTableCaptionObjectPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ObjectAccessibleTableCaptionObjectPropertyInfo = ObjectK
    type AttrBaseTypeConstraint ObjectAccessibleTableCaptionObjectPropertyInfo = ObjectK
    type AttrGetType ObjectAccessibleTableCaptionObjectPropertyInfo = Object
    type AttrLabel ObjectAccessibleTableCaptionObjectPropertyInfo = "Object::accessible-table-caption-object"
    attrGet _ = getObjectAccessibleTableCaptionObject
    attrSet _ = setObjectAccessibleTableCaptionObject
    attrConstruct _ = constructObjectAccessibleTableCaptionObject

-- VVV Prop "accessible-table-column-description"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]

getObjectAccessibleTableColumnDescription :: (MonadIO m, ObjectK o) => o -> m T.Text
getObjectAccessibleTableColumnDescription obj = liftIO $ getObjectPropertyString obj "accessible-table-column-description"

setObjectAccessibleTableColumnDescription :: (MonadIO m, ObjectK o) => o -> T.Text -> m ()
setObjectAccessibleTableColumnDescription obj val = liftIO $ setObjectPropertyString obj "accessible-table-column-description" val

constructObjectAccessibleTableColumnDescription :: T.Text -> IO ([Char], GValue)
constructObjectAccessibleTableColumnDescription val = constructObjectPropertyString "accessible-table-column-description" val

data ObjectAccessibleTableColumnDescriptionPropertyInfo
instance AttrInfo ObjectAccessibleTableColumnDescriptionPropertyInfo where
    type AttrAllowedOps ObjectAccessibleTableColumnDescriptionPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ObjectAccessibleTableColumnDescriptionPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint ObjectAccessibleTableColumnDescriptionPropertyInfo = ObjectK
    type AttrGetType ObjectAccessibleTableColumnDescriptionPropertyInfo = T.Text
    type AttrLabel ObjectAccessibleTableColumnDescriptionPropertyInfo = "Object::accessible-table-column-description"
    attrGet _ = getObjectAccessibleTableColumnDescription
    attrSet _ = setObjectAccessibleTableColumnDescription
    attrConstruct _ = constructObjectAccessibleTableColumnDescription

-- VVV Prop "accessible-table-column-header"
   -- Type: TInterface "Atk" "Object"
   -- Flags: [PropertyReadable,PropertyWritable]

getObjectAccessibleTableColumnHeader :: (MonadIO m, ObjectK o) => o -> m Object
getObjectAccessibleTableColumnHeader obj = liftIO $ getObjectPropertyObject obj "accessible-table-column-header" Object

setObjectAccessibleTableColumnHeader :: (MonadIO m, ObjectK o, ObjectK a) => o -> a -> m ()
setObjectAccessibleTableColumnHeader obj val = liftIO $ setObjectPropertyObject obj "accessible-table-column-header" val

constructObjectAccessibleTableColumnHeader :: (ObjectK a) => a -> IO ([Char], GValue)
constructObjectAccessibleTableColumnHeader val = constructObjectPropertyObject "accessible-table-column-header" val

data ObjectAccessibleTableColumnHeaderPropertyInfo
instance AttrInfo ObjectAccessibleTableColumnHeaderPropertyInfo where
    type AttrAllowedOps ObjectAccessibleTableColumnHeaderPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ObjectAccessibleTableColumnHeaderPropertyInfo = ObjectK
    type AttrBaseTypeConstraint ObjectAccessibleTableColumnHeaderPropertyInfo = ObjectK
    type AttrGetType ObjectAccessibleTableColumnHeaderPropertyInfo = Object
    type AttrLabel ObjectAccessibleTableColumnHeaderPropertyInfo = "Object::accessible-table-column-header"
    attrGet _ = getObjectAccessibleTableColumnHeader
    attrSet _ = setObjectAccessibleTableColumnHeader
    attrConstruct _ = constructObjectAccessibleTableColumnHeader

-- VVV Prop "accessible-table-row-description"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]

getObjectAccessibleTableRowDescription :: (MonadIO m, ObjectK o) => o -> m T.Text
getObjectAccessibleTableRowDescription obj = liftIO $ getObjectPropertyString obj "accessible-table-row-description"

setObjectAccessibleTableRowDescription :: (MonadIO m, ObjectK o) => o -> T.Text -> m ()
setObjectAccessibleTableRowDescription obj val = liftIO $ setObjectPropertyString obj "accessible-table-row-description" val

constructObjectAccessibleTableRowDescription :: T.Text -> IO ([Char], GValue)
constructObjectAccessibleTableRowDescription val = constructObjectPropertyString "accessible-table-row-description" val

data ObjectAccessibleTableRowDescriptionPropertyInfo
instance AttrInfo ObjectAccessibleTableRowDescriptionPropertyInfo where
    type AttrAllowedOps ObjectAccessibleTableRowDescriptionPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ObjectAccessibleTableRowDescriptionPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint ObjectAccessibleTableRowDescriptionPropertyInfo = ObjectK
    type AttrGetType ObjectAccessibleTableRowDescriptionPropertyInfo = T.Text
    type AttrLabel ObjectAccessibleTableRowDescriptionPropertyInfo = "Object::accessible-table-row-description"
    attrGet _ = getObjectAccessibleTableRowDescription
    attrSet _ = setObjectAccessibleTableRowDescription
    attrConstruct _ = constructObjectAccessibleTableRowDescription

-- VVV Prop "accessible-table-row-header"
   -- Type: TInterface "Atk" "Object"
   -- Flags: [PropertyReadable,PropertyWritable]

getObjectAccessibleTableRowHeader :: (MonadIO m, ObjectK o) => o -> m Object
getObjectAccessibleTableRowHeader obj = liftIO $ getObjectPropertyObject obj "accessible-table-row-header" Object

setObjectAccessibleTableRowHeader :: (MonadIO m, ObjectK o, ObjectK a) => o -> a -> m ()
setObjectAccessibleTableRowHeader obj val = liftIO $ setObjectPropertyObject obj "accessible-table-row-header" val

constructObjectAccessibleTableRowHeader :: (ObjectK a) => a -> IO ([Char], GValue)
constructObjectAccessibleTableRowHeader val = constructObjectPropertyObject "accessible-table-row-header" val

data ObjectAccessibleTableRowHeaderPropertyInfo
instance AttrInfo ObjectAccessibleTableRowHeaderPropertyInfo where
    type AttrAllowedOps ObjectAccessibleTableRowHeaderPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ObjectAccessibleTableRowHeaderPropertyInfo = ObjectK
    type AttrBaseTypeConstraint ObjectAccessibleTableRowHeaderPropertyInfo = ObjectK
    type AttrGetType ObjectAccessibleTableRowHeaderPropertyInfo = Object
    type AttrLabel ObjectAccessibleTableRowHeaderPropertyInfo = "Object::accessible-table-row-header"
    attrGet _ = getObjectAccessibleTableRowHeader
    attrSet _ = setObjectAccessibleTableRowHeader
    attrConstruct _ = constructObjectAccessibleTableRowHeader

-- VVV Prop "accessible-table-summary"
   -- Type: TInterface "Atk" "Object"
   -- Flags: [PropertyReadable,PropertyWritable]

getObjectAccessibleTableSummary :: (MonadIO m, ObjectK o) => o -> m Object
getObjectAccessibleTableSummary obj = liftIO $ getObjectPropertyObject obj "accessible-table-summary" Object

setObjectAccessibleTableSummary :: (MonadIO m, ObjectK o, ObjectK a) => o -> a -> m ()
setObjectAccessibleTableSummary obj val = liftIO $ setObjectPropertyObject obj "accessible-table-summary" val

constructObjectAccessibleTableSummary :: (ObjectK a) => a -> IO ([Char], GValue)
constructObjectAccessibleTableSummary val = constructObjectPropertyObject "accessible-table-summary" val

data ObjectAccessibleTableSummaryPropertyInfo
instance AttrInfo ObjectAccessibleTableSummaryPropertyInfo where
    type AttrAllowedOps ObjectAccessibleTableSummaryPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ObjectAccessibleTableSummaryPropertyInfo = ObjectK
    type AttrBaseTypeConstraint ObjectAccessibleTableSummaryPropertyInfo = ObjectK
    type AttrGetType ObjectAccessibleTableSummaryPropertyInfo = Object
    type AttrLabel ObjectAccessibleTableSummaryPropertyInfo = "Object::accessible-table-summary"
    attrGet _ = getObjectAccessibleTableSummary
    attrSet _ = setObjectAccessibleTableSummary
    attrConstruct _ = constructObjectAccessibleTableSummary

-- VVV Prop "accessible-value"
   -- Type: TBasicType TDouble
   -- Flags: [PropertyReadable,PropertyWritable]

getObjectAccessibleValue :: (MonadIO m, ObjectK o) => o -> m Double
getObjectAccessibleValue obj = liftIO $ getObjectPropertyDouble obj "accessible-value"

setObjectAccessibleValue :: (MonadIO m, ObjectK o) => o -> Double -> m ()
setObjectAccessibleValue obj val = liftIO $ setObjectPropertyDouble obj "accessible-value" val

constructObjectAccessibleValue :: Double -> IO ([Char], GValue)
constructObjectAccessibleValue val = constructObjectPropertyDouble "accessible-value" val

data ObjectAccessibleValuePropertyInfo
instance AttrInfo ObjectAccessibleValuePropertyInfo where
    type AttrAllowedOps ObjectAccessibleValuePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ObjectAccessibleValuePropertyInfo = (~) Double
    type AttrBaseTypeConstraint ObjectAccessibleValuePropertyInfo = ObjectK
    type AttrGetType ObjectAccessibleValuePropertyInfo = Double
    type AttrLabel ObjectAccessibleValuePropertyInfo = "Object::accessible-value"
    attrGet _ = getObjectAccessibleValue
    attrSet _ = setObjectAccessibleValue
    attrConstruct _ = constructObjectAccessibleValue

type instance AttributeList Object = ObjectAttributeList
type ObjectAttributeList = ('[ '("accessible-component-layer", ObjectAccessibleComponentLayerPropertyInfo), '("accessible-component-mdi-zorder", ObjectAccessibleComponentMdiZorderPropertyInfo), '("accessible-description", ObjectAccessibleDescriptionPropertyInfo), '("accessible-hypertext-nlinks", ObjectAccessibleHypertextNlinksPropertyInfo), '("accessible-name", ObjectAccessibleNamePropertyInfo), '("accessible-parent", ObjectAccessibleParentPropertyInfo), '("accessible-role", ObjectAccessibleRolePropertyInfo), '("accessible-table-caption", ObjectAccessibleTableCaptionPropertyInfo), '("accessible-table-caption-object", ObjectAccessibleTableCaptionObjectPropertyInfo), '("accessible-table-column-description", ObjectAccessibleTableColumnDescriptionPropertyInfo), '("accessible-table-column-header", ObjectAccessibleTableColumnHeaderPropertyInfo), '("accessible-table-row-description", ObjectAccessibleTableRowDescriptionPropertyInfo), '("accessible-table-row-header", ObjectAccessibleTableRowHeaderPropertyInfo), '("accessible-table-summary", ObjectAccessibleTableSummaryPropertyInfo), '("accessible-value", ObjectAccessibleValuePropertyInfo)] :: [(Symbol, *)])

data ObjectActiveDescendantChangedSignalInfo
instance SignalInfo ObjectActiveDescendantChangedSignalInfo where
    type HaskellCallbackType ObjectActiveDescendantChangedSignalInfo = ObjectActiveDescendantChangedCallback
    connectSignal _ = connectObjectActiveDescendantChanged

data ObjectChildrenChangedSignalInfo
instance SignalInfo ObjectChildrenChangedSignalInfo where
    type HaskellCallbackType ObjectChildrenChangedSignalInfo = ObjectChildrenChangedCallback
    connectSignal _ = connectObjectChildrenChanged

data ObjectFocusEventSignalInfo
instance SignalInfo ObjectFocusEventSignalInfo where
    type HaskellCallbackType ObjectFocusEventSignalInfo = ObjectFocusEventCallback
    connectSignal _ = connectObjectFocusEvent

data ObjectPropertyChangeSignalInfo
instance SignalInfo ObjectPropertyChangeSignalInfo where
    type HaskellCallbackType ObjectPropertyChangeSignalInfo = ObjectPropertyChangeCallback
    connectSignal _ = connectObjectPropertyChange

data ObjectStateChangeSignalInfo
instance SignalInfo ObjectStateChangeSignalInfo where
    type HaskellCallbackType ObjectStateChangeSignalInfo = ObjectStateChangeCallback
    connectSignal _ = connectObjectStateChange

data ObjectVisibleDataChangedSignalInfo
instance SignalInfo ObjectVisibleDataChangedSignalInfo where
    type HaskellCallbackType ObjectVisibleDataChangedSignalInfo = ObjectVisibleDataChangedCallback
    connectSignal _ = connectObjectVisibleDataChanged

type instance SignalList Object = ObjectSignalList
type ObjectSignalList = ('[ '("active-descendant-changed", ObjectActiveDescendantChangedSignalInfo), '("children-changed", ObjectChildrenChangedSignalInfo), '("focus-event", ObjectFocusEventSignalInfo), '("notify", GObject.ObjectNotifySignalInfo), '("property-change", ObjectPropertyChangeSignalInfo), '("state-change", ObjectStateChangeSignalInfo), '("visible-data-changed", ObjectVisibleDataChangedSignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])

-- method Object::add_relationship
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "relationship", argType = TInterface "Atk" "RelationType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "target", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "relationship", argType = TInterface "Atk" "RelationType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "target", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "atk_object_add_relationship" atk_object_add_relationship :: 
    Ptr Object ->                           -- _obj : TInterface "Atk" "Object"
    CUInt ->                                -- relationship : TInterface "Atk" "RelationType"
    Ptr Object ->                           -- target : TInterface "Atk" "Object"
    IO CInt


objectAddRelationship ::
    (MonadIO m, ObjectK a, ObjectK b) =>
    a ->                                    -- _obj
    RelationType ->                         -- relationship
    b ->                                    -- target
    m Bool
objectAddRelationship _obj relationship target = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let relationship' = (fromIntegral . fromEnum) relationship
    let target' = unsafeManagedPtrCastPtr target
    result <- atk_object_add_relationship _obj' relationship' target'
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr target
    return result'

-- method Object::get_attributes
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TGSList (TBasicType TVoid)
-- throws : False
-- Skip return : False

foreign import ccall "atk_object_get_attributes" atk_object_get_attributes :: 
    Ptr Object ->                           -- _obj : TInterface "Atk" "Object"
    IO (Ptr (GSList (Ptr ())))


objectGetAttributes ::
    (MonadIO m, ObjectK a) =>
    a ->                                    -- _obj
    m [Ptr ()]
objectGetAttributes _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- atk_object_get_attributes _obj'
    checkUnexpectedReturnNULL "atk_object_get_attributes" result
    result' <- unpackGSList result
    g_slist_free result
    touchManagedPtr _obj
    return result'

-- method Object::get_description
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "atk_object_get_description" atk_object_get_description :: 
    Ptr Object ->                           -- _obj : TInterface "Atk" "Object"
    IO CString


objectGetDescription ::
    (MonadIO m, ObjectK a) =>
    a ->                                    -- _obj
    m T.Text
objectGetDescription _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- atk_object_get_description _obj'
    checkUnexpectedReturnNULL "atk_object_get_description" result
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

-- method Object::get_index_in_parent
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "atk_object_get_index_in_parent" atk_object_get_index_in_parent :: 
    Ptr Object ->                           -- _obj : TInterface "Atk" "Object"
    IO Int32


objectGetIndexInParent ::
    (MonadIO m, ObjectK a) =>
    a ->                                    -- _obj
    m Int32
objectGetIndexInParent _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- atk_object_get_index_in_parent _obj'
    touchManagedPtr _obj
    return result

-- method Object::get_layer
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Atk" "Layer"
-- throws : False
-- Skip return : False

foreign import ccall "atk_object_get_layer" atk_object_get_layer :: 
    Ptr Object ->                           -- _obj : TInterface "Atk" "Object"
    IO CUInt

{-# DEPRECATED objectGetLayer ["Use atk_component_get_layer instead."]#-}
objectGetLayer ::
    (MonadIO m, ObjectK a) =>
    a ->                                    -- _obj
    m Layer
objectGetLayer _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- atk_object_get_layer _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method Object::get_mdi_zorder
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "atk_object_get_mdi_zorder" atk_object_get_mdi_zorder :: 
    Ptr Object ->                           -- _obj : TInterface "Atk" "Object"
    IO Int32

{-# DEPRECATED objectGetMdiZorder ["Use atk_component_get_mdi_zorder instead."]#-}
objectGetMdiZorder ::
    (MonadIO m, ObjectK a) =>
    a ->                                    -- _obj
    m Int32
objectGetMdiZorder _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- atk_object_get_mdi_zorder _obj'
    touchManagedPtr _obj
    return result

-- method Object::get_n_accessible_children
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "atk_object_get_n_accessible_children" atk_object_get_n_accessible_children :: 
    Ptr Object ->                           -- _obj : TInterface "Atk" "Object"
    IO Int32


objectGetNAccessibleChildren ::
    (MonadIO m, ObjectK a) =>
    a ->                                    -- _obj
    m Int32
objectGetNAccessibleChildren _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- atk_object_get_n_accessible_children _obj'
    touchManagedPtr _obj
    return result

-- method Object::get_name
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "atk_object_get_name" atk_object_get_name :: 
    Ptr Object ->                           -- _obj : TInterface "Atk" "Object"
    IO CString


objectGetName ::
    (MonadIO m, ObjectK a) =>
    a ->                                    -- _obj
    m T.Text
objectGetName _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- atk_object_get_name _obj'
    checkUnexpectedReturnNULL "atk_object_get_name" result
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

-- method Object::get_object_locale
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "atk_object_get_object_locale" atk_object_get_object_locale :: 
    Ptr Object ->                           -- _obj : TInterface "Atk" "Object"
    IO CString


objectGetObjectLocale ::
    (MonadIO m, ObjectK a) =>
    a ->                                    -- _obj
    m T.Text
objectGetObjectLocale _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- atk_object_get_object_locale _obj'
    checkUnexpectedReturnNULL "atk_object_get_object_locale" result
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

-- method Object::get_parent
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Atk" "Object"
-- throws : False
-- Skip return : False

foreign import ccall "atk_object_get_parent" atk_object_get_parent :: 
    Ptr Object ->                           -- _obj : TInterface "Atk" "Object"
    IO (Ptr Object)


objectGetParent ::
    (MonadIO m, ObjectK a) =>
    a ->                                    -- _obj
    m Object
objectGetParent _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- atk_object_get_parent _obj'
    checkUnexpectedReturnNULL "atk_object_get_parent" result
    result' <- (newObject Object) result
    touchManagedPtr _obj
    return result'

-- method Object::get_role
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Atk" "Role"
-- throws : False
-- Skip return : False

foreign import ccall "atk_object_get_role" atk_object_get_role :: 
    Ptr Object ->                           -- _obj : TInterface "Atk" "Object"
    IO CUInt


objectGetRole ::
    (MonadIO m, ObjectK a) =>
    a ->                                    -- _obj
    m Role
objectGetRole _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- atk_object_get_role _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method Object::initialize
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "atk_object_initialize" atk_object_initialize :: 
    Ptr Object ->                           -- _obj : TInterface "Atk" "Object"
    Ptr () ->                               -- data : TBasicType TVoid
    IO ()


objectInitialize ::
    (MonadIO m, ObjectK a) =>
    a ->                                    -- _obj
    Ptr () ->                               -- data
    m ()
objectInitialize _obj data_ = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    atk_object_initialize _obj' data_
    touchManagedPtr _obj
    return ()

-- method Object::notify_state_change
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "state", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "state", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "atk_object_notify_state_change" atk_object_notify_state_change :: 
    Ptr Object ->                           -- _obj : TInterface "Atk" "Object"
    Word64 ->                               -- state : TBasicType TUInt64
    CInt ->                                 -- value : TBasicType TBoolean
    IO ()


objectNotifyStateChange ::
    (MonadIO m, ObjectK a) =>
    a ->                                    -- _obj
    Word64 ->                               -- state
    Bool ->                                 -- value
    m ()
objectNotifyStateChange _obj state value = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let value' = (fromIntegral . fromEnum) value
    atk_object_notify_state_change _obj' state value'
    touchManagedPtr _obj
    return ()

-- method Object::peek_parent
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Atk" "Object"
-- throws : False
-- Skip return : False

foreign import ccall "atk_object_peek_parent" atk_object_peek_parent :: 
    Ptr Object ->                           -- _obj : TInterface "Atk" "Object"
    IO (Ptr Object)


objectPeekParent ::
    (MonadIO m, ObjectK a) =>
    a ->                                    -- _obj
    m Object
objectPeekParent _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- atk_object_peek_parent _obj'
    checkUnexpectedReturnNULL "atk_object_peek_parent" result
    result' <- (newObject Object) result
    touchManagedPtr _obj
    return result'

-- method Object::ref_accessible_child
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "i", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "i", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Atk" "Object"
-- throws : False
-- Skip return : False

foreign import ccall "atk_object_ref_accessible_child" atk_object_ref_accessible_child :: 
    Ptr Object ->                           -- _obj : TInterface "Atk" "Object"
    Int32 ->                                -- i : TBasicType TInt32
    IO (Ptr Object)


objectRefAccessibleChild ::
    (MonadIO m, ObjectK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- i
    m Object
objectRefAccessibleChild _obj i = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- atk_object_ref_accessible_child _obj' i
    checkUnexpectedReturnNULL "atk_object_ref_accessible_child" result
    result' <- (wrapObject Object) result
    touchManagedPtr _obj
    return result'

-- method Object::ref_relation_set
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Atk" "RelationSet"
-- throws : False
-- Skip return : False

foreign import ccall "atk_object_ref_relation_set" atk_object_ref_relation_set :: 
    Ptr Object ->                           -- _obj : TInterface "Atk" "Object"
    IO (Ptr RelationSet)


objectRefRelationSet ::
    (MonadIO m, ObjectK a) =>
    a ->                                    -- _obj
    m RelationSet
objectRefRelationSet _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- atk_object_ref_relation_set _obj'
    checkUnexpectedReturnNULL "atk_object_ref_relation_set" result
    result' <- (wrapObject RelationSet) result
    touchManagedPtr _obj
    return result'

-- method Object::ref_state_set
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Atk" "StateSet"
-- throws : False
-- Skip return : False

foreign import ccall "atk_object_ref_state_set" atk_object_ref_state_set :: 
    Ptr Object ->                           -- _obj : TInterface "Atk" "Object"
    IO (Ptr StateSet)


objectRefStateSet ::
    (MonadIO m, ObjectK a) =>
    a ->                                    -- _obj
    m StateSet
objectRefStateSet _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- atk_object_ref_state_set _obj'
    checkUnexpectedReturnNULL "atk_object_ref_state_set" result
    result' <- (wrapObject StateSet) result
    touchManagedPtr _obj
    return result'

-- method Object::remove_property_change_handler
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "handler_id", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "handler_id", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "atk_object_remove_property_change_handler" atk_object_remove_property_change_handler :: 
    Ptr Object ->                           -- _obj : TInterface "Atk" "Object"
    Word32 ->                               -- handler_id : TBasicType TUInt32
    IO ()

{-# DEPRECATED objectRemovePropertyChangeHandler ["Since 2.12.","","Removes a property change handler."]#-}
objectRemovePropertyChangeHandler ::
    (MonadIO m, ObjectK a) =>
    a ->                                    -- _obj
    Word32 ->                               -- handler_id
    m ()
objectRemovePropertyChangeHandler _obj handler_id = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    atk_object_remove_property_change_handler _obj' handler_id
    touchManagedPtr _obj
    return ()

-- method Object::remove_relationship
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "relationship", argType = TInterface "Atk" "RelationType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "target", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "relationship", argType = TInterface "Atk" "RelationType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "target", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "atk_object_remove_relationship" atk_object_remove_relationship :: 
    Ptr Object ->                           -- _obj : TInterface "Atk" "Object"
    CUInt ->                                -- relationship : TInterface "Atk" "RelationType"
    Ptr Object ->                           -- target : TInterface "Atk" "Object"
    IO CInt


objectRemoveRelationship ::
    (MonadIO m, ObjectK a, ObjectK b) =>
    a ->                                    -- _obj
    RelationType ->                         -- relationship
    b ->                                    -- target
    m Bool
objectRemoveRelationship _obj relationship target = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let relationship' = (fromIntegral . fromEnum) relationship
    let target' = unsafeManagedPtrCastPtr target
    result <- atk_object_remove_relationship _obj' relationship' target'
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr target
    return result'

-- method Object::set_description
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "description", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "description", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "atk_object_set_description" atk_object_set_description :: 
    Ptr Object ->                           -- _obj : TInterface "Atk" "Object"
    CString ->                              -- description : TBasicType TUTF8
    IO ()


objectSetDescription ::
    (MonadIO m, ObjectK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- description
    m ()
objectSetDescription _obj description = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    description' <- textToCString description
    atk_object_set_description _obj' description'
    touchManagedPtr _obj
    freeMem description'
    return ()

-- method Object::set_name
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "atk_object_set_name" atk_object_set_name :: 
    Ptr Object ->                           -- _obj : TInterface "Atk" "Object"
    CString ->                              -- name : TBasicType TUTF8
    IO ()


objectSetName ::
    (MonadIO m, ObjectK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- name
    m ()
objectSetName _obj name = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    name' <- textToCString name
    atk_object_set_name _obj' name'
    touchManagedPtr _obj
    freeMem name'
    return ()

-- method Object::set_parent
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "parent", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "parent", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "atk_object_set_parent" atk_object_set_parent :: 
    Ptr Object ->                           -- _obj : TInterface "Atk" "Object"
    Ptr Object ->                           -- parent : TInterface "Atk" "Object"
    IO ()


objectSetParent ::
    (MonadIO m, ObjectK a, ObjectK b) =>
    a ->                                    -- _obj
    b ->                                    -- parent
    m ()
objectSetParent _obj parent = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let parent' = unsafeManagedPtrCastPtr parent
    atk_object_set_parent _obj' parent'
    touchManagedPtr _obj
    touchManagedPtr parent
    return ()

-- method Object::set_role
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "role", argType = TInterface "Atk" "Role", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "role", argType = TInterface "Atk" "Role", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "atk_object_set_role" atk_object_set_role :: 
    Ptr Object ->                           -- _obj : TInterface "Atk" "Object"
    CUInt ->                                -- role : TInterface "Atk" "Role"
    IO ()


objectSetRole ::
    (MonadIO m, ObjectK a) =>
    a ->                                    -- _obj
    Role ->                                 -- role
    m ()
objectSetRole _obj role = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let role' = (fromIntegral . fromEnum) role
    atk_object_set_role _obj' role'
    touchManagedPtr _obj
    return ()