{- |
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.Functions
    ( 

 -- * Methods
-- ** attributeSetFree
    attributeSetFree                        ,


-- ** focusTrackerNotify
    focusTrackerNotify                      ,


-- ** getBinaryAge
    getBinaryAge                            ,


-- ** getDefaultRegistry
    getDefaultRegistry                      ,


-- ** getFocusObject
    getFocusObject                          ,


-- ** getInterfaceAge
    getInterfaceAge                         ,


-- ** getMajorVersion
    getMajorVersion                         ,


-- ** getMicroVersion
    getMicroVersion                         ,


-- ** getMinorVersion
    getMinorVersion                         ,


-- ** getRoot
    getRoot                                 ,


-- ** getToolkitName
    getToolkitName                          ,


-- ** getToolkitVersion
    getToolkitVersion                       ,


-- ** getVersion
    getVersion                              ,


-- ** relationTypeForName
    relationTypeForName                     ,


-- ** relationTypeGetName
    relationTypeGetName                     ,


-- ** relationTypeRegister
    relationTypeRegister                    ,


-- ** removeFocusTracker
    removeFocusTracker                      ,


-- ** removeGlobalEventListener
    removeGlobalEventListener               ,


-- ** removeKeyEventListener
    removeKeyEventListener                  ,


-- ** roleForName
    roleForName                             ,


-- ** roleGetLocalizedName
    roleGetLocalizedName                    ,


-- ** roleGetName
    roleGetName                             ,


-- ** roleRegister
    roleRegister                            ,


-- ** stateTypeForName
    stateTypeForName                        ,


-- ** stateTypeGetName
    stateTypeGetName                        ,


-- ** stateTypeRegister
    stateTypeRegister                       ,


-- ** textAttributeForName
    textAttributeForName                    ,


-- ** textAttributeGetName
    textAttributeGetName                    ,


-- ** textAttributeGetValue
    textAttributeGetValue                   ,


-- ** textAttributeRegister
    textAttributeRegister                   ,


-- ** textFreeRanges
    textFreeRanges                          ,


-- ** valueTypeGetLocalizedName
    valueTypeGetLocalizedName               ,


-- ** valueTypeGetName
    valueTypeGetName                        ,




    ) 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

-- function atk_value_type_get_name
-- Args : [Arg {argName = "value_type", argType = TInterface "Atk" "ValueType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "value_type", argType = TInterface "Atk" "ValueType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "atk_value_type_get_name" atk_value_type_get_name :: 
    CUInt ->                                -- value_type : TInterface "Atk" "ValueType"
    IO CString


valueTypeGetName ::
    (MonadIO m) =>
    ValueType ->                            -- value_type
    m T.Text
valueTypeGetName value_type = liftIO $ do
    let value_type' = (fromIntegral . fromEnum) value_type
    result <- atk_value_type_get_name value_type'
    checkUnexpectedReturnNULL "atk_value_type_get_name" result
    result' <- cstringToText result
    return result'


-- function atk_value_type_get_localized_name
-- Args : [Arg {argName = "value_type", argType = TInterface "Atk" "ValueType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "value_type", argType = TInterface "Atk" "ValueType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "atk_value_type_get_localized_name" atk_value_type_get_localized_name :: 
    CUInt ->                                -- value_type : TInterface "Atk" "ValueType"
    IO CString


valueTypeGetLocalizedName ::
    (MonadIO m) =>
    ValueType ->                            -- value_type
    m T.Text
valueTypeGetLocalizedName value_type = liftIO $ do
    let value_type' = (fromIntegral . fromEnum) value_type
    result <- atk_value_type_get_localized_name value_type'
    checkUnexpectedReturnNULL "atk_value_type_get_localized_name" result
    result' <- cstringToText result
    return result'


-- function atk_text_free_ranges
-- Args : [Arg {argName = "ranges", argType = TCArray False (-1) (-1) (TInterface "Atk" "TextRange"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "ranges", argType = TCArray False (-1) (-1) (TInterface "Atk" "TextRange"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "atk_text_free_ranges" atk_text_free_ranges :: 
    Ptr (Ptr TextRange) ->                  -- ranges : TCArray False (-1) (-1) (TInterface "Atk" "TextRange")
    IO ()


textFreeRanges ::
    (MonadIO m) =>
    Ptr (Ptr TextRange) ->                  -- ranges
    m ()
textFreeRanges ranges = liftIO $ do
    atk_text_free_ranges ranges
    return ()


-- function atk_text_attribute_register
-- Args : [Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Atk" "TextAttribute"
-- throws : False
-- Skip return : False

foreign import ccall "atk_text_attribute_register" atk_text_attribute_register :: 
    CString ->                              -- name : TBasicType TUTF8
    IO CUInt


textAttributeRegister ::
    (MonadIO m) =>
    T.Text ->                               -- name
    m TextAttribute
textAttributeRegister name = liftIO $ do
    name' <- textToCString name
    result <- atk_text_attribute_register name'
    let result' = (toEnum . fromIntegral) result
    freeMem name'
    return result'


-- function atk_text_attribute_get_value
-- Args : [Arg {argName = "attr", argType = TInterface "Atk" "TextAttribute", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "index_", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "attr", argType = TInterface "Atk" "TextAttribute", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "index_", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "atk_text_attribute_get_value" atk_text_attribute_get_value :: 
    CUInt ->                                -- attr : TInterface "Atk" "TextAttribute"
    Int32 ->                                -- index_ : TBasicType TInt32
    IO CString


textAttributeGetValue ::
    (MonadIO m) =>
    TextAttribute ->                        -- attr
    Int32 ->                                -- index_
    m T.Text
textAttributeGetValue attr index_ = liftIO $ do
    let attr' = (fromIntegral . fromEnum) attr
    result <- atk_text_attribute_get_value attr' index_
    checkUnexpectedReturnNULL "atk_text_attribute_get_value" result
    result' <- cstringToText result
    return result'


-- function atk_text_attribute_get_name
-- Args : [Arg {argName = "attr", argType = TInterface "Atk" "TextAttribute", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "attr", argType = TInterface "Atk" "TextAttribute", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "atk_text_attribute_get_name" atk_text_attribute_get_name :: 
    CUInt ->                                -- attr : TInterface "Atk" "TextAttribute"
    IO CString


textAttributeGetName ::
    (MonadIO m) =>
    TextAttribute ->                        -- attr
    m T.Text
textAttributeGetName attr = liftIO $ do
    let attr' = (fromIntegral . fromEnum) attr
    result <- atk_text_attribute_get_name attr'
    checkUnexpectedReturnNULL "atk_text_attribute_get_name" result
    result' <- cstringToText result
    return result'


-- function atk_text_attribute_for_name
-- Args : [Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Atk" "TextAttribute"
-- throws : False
-- Skip return : False

foreign import ccall "atk_text_attribute_for_name" atk_text_attribute_for_name :: 
    CString ->                              -- name : TBasicType TUTF8
    IO CUInt


textAttributeForName ::
    (MonadIO m) =>
    T.Text ->                               -- name
    m TextAttribute
textAttributeForName name = liftIO $ do
    name' <- textToCString name
    result <- atk_text_attribute_for_name name'
    let result' = (toEnum . fromIntegral) result
    freeMem name'
    return result'


-- function atk_state_type_register
-- Args : [Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Atk" "StateType"
-- throws : False
-- Skip return : False

foreign import ccall "atk_state_type_register" atk_state_type_register :: 
    CString ->                              -- name : TBasicType TUTF8
    IO CUInt


stateTypeRegister ::
    (MonadIO m) =>
    T.Text ->                               -- name
    m StateType
stateTypeRegister name = liftIO $ do
    name' <- textToCString name
    result <- atk_state_type_register name'
    let result' = (toEnum . fromIntegral) result
    freeMem name'
    return result'


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

foreign import ccall "atk_state_type_get_name" atk_state_type_get_name :: 
    CUInt ->                                -- type : TInterface "Atk" "StateType"
    IO CString


stateTypeGetName ::
    (MonadIO m) =>
    StateType ->                            -- type
    m T.Text
stateTypeGetName type_ = liftIO $ do
    let type_' = (fromIntegral . fromEnum) type_
    result <- atk_state_type_get_name type_'
    checkUnexpectedReturnNULL "atk_state_type_get_name" result
    result' <- cstringToText result
    return result'


-- function atk_state_type_for_name
-- Args : [Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Atk" "StateType"
-- throws : False
-- Skip return : False

foreign import ccall "atk_state_type_for_name" atk_state_type_for_name :: 
    CString ->                              -- name : TBasicType TUTF8
    IO CUInt


stateTypeForName ::
    (MonadIO m) =>
    T.Text ->                               -- name
    m StateType
stateTypeForName name = liftIO $ do
    name' <- textToCString name
    result <- atk_state_type_for_name name'
    let result' = (toEnum . fromIntegral) result
    freeMem name'
    return result'


-- function atk_role_register
-- Args : [Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "name", argType = TBasicType TUTF8, 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_role_register" atk_role_register :: 
    CString ->                              -- name : TBasicType TUTF8
    IO CUInt

{-# DEPRECATED roleRegister ["Since 2.12. If your application/toolkit doesn't find a","suitable role for a specific object defined at #AtkRole, please","submit a bug in order to add a new role to the specification."]#-}
roleRegister ::
    (MonadIO m) =>
    T.Text ->                               -- name
    m Role
roleRegister name = liftIO $ do
    name' <- textToCString name
    result <- atk_role_register name'
    let result' = (toEnum . fromIntegral) result
    freeMem name'
    return result'


-- function atk_role_get_name
-- Args : [Arg {argName = "role", argType = TInterface "Atk" "Role", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "role", argType = TInterface "Atk" "Role", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "atk_role_get_name" atk_role_get_name :: 
    CUInt ->                                -- role : TInterface "Atk" "Role"
    IO CString


roleGetName ::
    (MonadIO m) =>
    Role ->                                 -- role
    m T.Text
roleGetName role = liftIO $ do
    let role' = (fromIntegral . fromEnum) role
    result <- atk_role_get_name role'
    checkUnexpectedReturnNULL "atk_role_get_name" result
    result' <- cstringToText result
    return result'


-- function atk_role_get_localized_name
-- Args : [Arg {argName = "role", argType = TInterface "Atk" "Role", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "role", argType = TInterface "Atk" "Role", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "atk_role_get_localized_name" atk_role_get_localized_name :: 
    CUInt ->                                -- role : TInterface "Atk" "Role"
    IO CString


roleGetLocalizedName ::
    (MonadIO m) =>
    Role ->                                 -- role
    m T.Text
roleGetLocalizedName role = liftIO $ do
    let role' = (fromIntegral . fromEnum) role
    result <- atk_role_get_localized_name role'
    checkUnexpectedReturnNULL "atk_role_get_localized_name" result
    result' <- cstringToText result
    return result'


-- function atk_role_for_name
-- Args : [Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "name", argType = TBasicType TUTF8, 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_role_for_name" atk_role_for_name :: 
    CString ->                              -- name : TBasicType TUTF8
    IO CUInt


roleForName ::
    (MonadIO m) =>
    T.Text ->                               -- name
    m Role
roleForName name = liftIO $ do
    name' <- textToCString name
    result <- atk_role_for_name name'
    let result' = (toEnum . fromIntegral) result
    freeMem name'
    return result'


-- function atk_remove_key_event_listener
-- Args : [Arg {argName = "listener_id", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "listener_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_remove_key_event_listener" atk_remove_key_event_listener :: 
    Word32 ->                               -- listener_id : TBasicType TUInt32
    IO ()


removeKeyEventListener ::
    (MonadIO m) =>
    Word32 ->                               -- listener_id
    m ()
removeKeyEventListener listener_id = liftIO $ do
    atk_remove_key_event_listener listener_id
    return ()


-- function atk_remove_global_event_listener
-- Args : [Arg {argName = "listener_id", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "listener_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_remove_global_event_listener" atk_remove_global_event_listener :: 
    Word32 ->                               -- listener_id : TBasicType TUInt32
    IO ()


removeGlobalEventListener ::
    (MonadIO m) =>
    Word32 ->                               -- listener_id
    m ()
removeGlobalEventListener listener_id = liftIO $ do
    atk_remove_global_event_listener listener_id
    return ()


-- function atk_remove_focus_tracker
-- Args : [Arg {argName = "tracker_id", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "tracker_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_remove_focus_tracker" atk_remove_focus_tracker :: 
    Word32 ->                               -- tracker_id : TBasicType TUInt32
    IO ()

{-# DEPRECATED removeFocusTracker ["(Since version 2.9.4)","Focus tracking has been dropped as a feature","to be implemented by ATK itself. If you need focus tracking on your","implementation, subscribe to the state-changed:focused signal.","","Removes the specified focus tracker from the list of functions","to be called when any object receives focus."]#-}
removeFocusTracker ::
    (MonadIO m) =>
    Word32 ->                               -- tracker_id
    m ()
removeFocusTracker tracker_id = liftIO $ do
    atk_remove_focus_tracker tracker_id
    return ()


-- function atk_relation_type_register
-- Args : [Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Atk" "RelationType"
-- throws : False
-- Skip return : False

foreign import ccall "atk_relation_type_register" atk_relation_type_register :: 
    CString ->                              -- name : TBasicType TUTF8
    IO CUInt


relationTypeRegister ::
    (MonadIO m) =>
    T.Text ->                               -- name
    m RelationType
relationTypeRegister name = liftIO $ do
    name' <- textToCString name
    result <- atk_relation_type_register name'
    let result' = (toEnum . fromIntegral) result
    freeMem name'
    return result'


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

foreign import ccall "atk_relation_type_get_name" atk_relation_type_get_name :: 
    CUInt ->                                -- type : TInterface "Atk" "RelationType"
    IO CString


relationTypeGetName ::
    (MonadIO m) =>
    RelationType ->                         -- type
    m T.Text
relationTypeGetName type_ = liftIO $ do
    let type_' = (fromIntegral . fromEnum) type_
    result <- atk_relation_type_get_name type_'
    checkUnexpectedReturnNULL "atk_relation_type_get_name" result
    result' <- cstringToText result
    return result'


-- function atk_relation_type_for_name
-- Args : [Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Atk" "RelationType"
-- throws : False
-- Skip return : False

foreign import ccall "atk_relation_type_for_name" atk_relation_type_for_name :: 
    CString ->                              -- name : TBasicType TUTF8
    IO CUInt


relationTypeForName ::
    (MonadIO m) =>
    T.Text ->                               -- name
    m RelationType
relationTypeForName name = liftIO $ do
    name' <- textToCString name
    result <- atk_relation_type_for_name name'
    let result' = (toEnum . fromIntegral) result
    freeMem name'
    return result'


-- function atk_get_version
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "atk_get_version" atk_get_version :: 
    IO CString


getVersion ::
    (MonadIO m) =>
    m T.Text
getVersion  = liftIO $ do
    result <- atk_get_version
    checkUnexpectedReturnNULL "atk_get_version" result
    result' <- cstringToText result
    return result'


-- function atk_get_toolkit_version
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "atk_get_toolkit_version" atk_get_toolkit_version :: 
    IO CString


getToolkitVersion ::
    (MonadIO m) =>
    m T.Text
getToolkitVersion  = liftIO $ do
    result <- atk_get_toolkit_version
    checkUnexpectedReturnNULL "atk_get_toolkit_version" result
    result' <- cstringToText result
    return result'


-- function atk_get_toolkit_name
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "atk_get_toolkit_name" atk_get_toolkit_name :: 
    IO CString


getToolkitName ::
    (MonadIO m) =>
    m T.Text
getToolkitName  = liftIO $ do
    result <- atk_get_toolkit_name
    checkUnexpectedReturnNULL "atk_get_toolkit_name" result
    result' <- cstringToText result
    return result'


-- function atk_get_root
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TInterface "Atk" "Object"
-- throws : False
-- Skip return : False

foreign import ccall "atk_get_root" atk_get_root :: 
    IO (Ptr Object)


getRoot ::
    (MonadIO m) =>
    m Object
getRoot  = liftIO $ do
    result <- atk_get_root
    checkUnexpectedReturnNULL "atk_get_root" result
    result' <- (newObject Object) result
    return result'


-- function atk_get_minor_version
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TUInt32
-- throws : False
-- Skip return : False

foreign import ccall "atk_get_minor_version" atk_get_minor_version :: 
    IO Word32


getMinorVersion ::
    (MonadIO m) =>
    m Word32
getMinorVersion  = liftIO $ do
    result <- atk_get_minor_version
    return result


-- function atk_get_micro_version
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TUInt32
-- throws : False
-- Skip return : False

foreign import ccall "atk_get_micro_version" atk_get_micro_version :: 
    IO Word32


getMicroVersion ::
    (MonadIO m) =>
    m Word32
getMicroVersion  = liftIO $ do
    result <- atk_get_micro_version
    return result


-- function atk_get_major_version
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TUInt32
-- throws : False
-- Skip return : False

foreign import ccall "atk_get_major_version" atk_get_major_version :: 
    IO Word32


getMajorVersion ::
    (MonadIO m) =>
    m Word32
getMajorVersion  = liftIO $ do
    result <- atk_get_major_version
    return result


-- function atk_get_interface_age
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TUInt32
-- throws : False
-- Skip return : False

foreign import ccall "atk_get_interface_age" atk_get_interface_age :: 
    IO Word32


getInterfaceAge ::
    (MonadIO m) =>
    m Word32
getInterfaceAge  = liftIO $ do
    result <- atk_get_interface_age
    return result


-- function atk_get_focus_object
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TInterface "Atk" "Object"
-- throws : False
-- Skip return : False

foreign import ccall "atk_get_focus_object" atk_get_focus_object :: 
    IO (Ptr Object)


getFocusObject ::
    (MonadIO m) =>
    m Object
getFocusObject  = liftIO $ do
    result <- atk_get_focus_object
    checkUnexpectedReturnNULL "atk_get_focus_object" result
    result' <- (newObject Object) result
    return result'


-- function atk_get_default_registry
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TInterface "Atk" "Registry"
-- throws : False
-- Skip return : False

foreign import ccall "atk_get_default_registry" atk_get_default_registry :: 
    IO (Ptr Registry)


getDefaultRegistry ::
    (MonadIO m) =>
    m Registry
getDefaultRegistry  = liftIO $ do
    result <- atk_get_default_registry
    checkUnexpectedReturnNULL "atk_get_default_registry" result
    result' <- (wrapObject Registry) result
    return result'


-- function atk_get_binary_age
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TUInt32
-- throws : False
-- Skip return : False

foreign import ccall "atk_get_binary_age" atk_get_binary_age :: 
    IO Word32


getBinaryAge ::
    (MonadIO m) =>
    m Word32
getBinaryAge  = liftIO $ do
    result <- atk_get_binary_age
    return result


-- function atk_focus_tracker_notify
-- Args : [Arg {argName = "object", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "object", 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_focus_tracker_notify" atk_focus_tracker_notify :: 
    Ptr Object ->                           -- object : TInterface "Atk" "Object"
    IO ()

{-# DEPRECATED focusTrackerNotify ["(Since version 2.9.4)","Focus tracking has been dropped as a feature","to be implemented by ATK itself. As #AtkObject::focus-event was","deprecated in favor of a #AtkObject::state-change signal, in order","to notify a focus change on your implementation, you can use","atk_object_notify_state_change() instead."]#-}
focusTrackerNotify ::
    (MonadIO m, ObjectK a) =>
    a ->                                    -- object
    m ()
focusTrackerNotify object = liftIO $ do
    let object' = unsafeManagedPtrCastPtr object
    atk_focus_tracker_notify object'
    touchManagedPtr object
    return ()


-- function atk_attribute_set_free
-- Args : [Arg {argName = "attrib_set", argType = TGSList (TBasicType TVoid), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "attrib_set", argType = TGSList (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_attribute_set_free" atk_attribute_set_free :: 
    Ptr (GSList (Ptr ())) ->                -- attrib_set : TGSList (TBasicType TVoid)
    IO ()


attributeSetFree ::
    (MonadIO m) =>
    [Ptr ()] ->                             -- attrib_set
    m ()
attributeSetFree attrib_set = liftIO $ do
    attrib_set' <- packGSList attrib_set
    atk_attribute_set_free attrib_set'
    g_slist_free attrib_set'
    return ()