// This file was generated by gir (0d8699e) from gir-files (11e0e6d)
// DO NOT EDIT

#![allow(non_camel_case_types, non_upper_case_globals)]

extern crate libc;
#[macro_use] extern crate bitflags;
extern crate glib_sys as glib;
extern crate gobject_sys as gobject;

#[allow(unused_imports)]
use libc::{c_int, c_char, c_uchar, c_float, c_uint, c_double,
    c_short, c_ushort, c_long, c_ulong,
    c_void, size_t, ssize_t, time_t, FILE};

#[allow(unused_imports)]
use glib::{gboolean, gconstpointer, gpointer, GType, Volatile};

pub type AtkAttributeSet = glib::GSList;
pub type AtkState = u64;

#[derive(Clone, Copy, Debug, Eq, PartialEq)]
#[repr(C)]
pub enum AtkCoordType {
    Screen = 0,
    Window = 1,
}
pub const ATK_XY_SCREEN: AtkCoordType = AtkCoordType::Screen;
pub const ATK_XY_WINDOW: AtkCoordType = AtkCoordType::Window;

#[derive(Clone, Copy, Debug, Eq, PartialEq)]
#[repr(C)]
pub enum AtkKeyEventType {
    Press = 0,
    Release = 1,
    LastDefined = 2,
}
pub const ATK_KEY_EVENT_PRESS: AtkKeyEventType = AtkKeyEventType::Press;
pub const ATK_KEY_EVENT_RELEASE: AtkKeyEventType = AtkKeyEventType::Release;
pub const ATK_KEY_EVENT_LAST_DEFINED: AtkKeyEventType = AtkKeyEventType::LastDefined;

#[derive(Clone, Copy, Debug, Eq, PartialEq)]
#[repr(C)]
pub enum AtkLayer {
    Invalid = 0,
    Background = 1,
    Canvas = 2,
    Widget = 3,
    Mdi = 4,
    Popup = 5,
    Overlay = 6,
    Window = 7,
}
pub const ATK_LAYER_INVALID: AtkLayer = AtkLayer::Invalid;
pub const ATK_LAYER_BACKGROUND: AtkLayer = AtkLayer::Background;
pub const ATK_LAYER_CANVAS: AtkLayer = AtkLayer::Canvas;
pub const ATK_LAYER_WIDGET: AtkLayer = AtkLayer::Widget;
pub const ATK_LAYER_MDI: AtkLayer = AtkLayer::Mdi;
pub const ATK_LAYER_POPUP: AtkLayer = AtkLayer::Popup;
pub const ATK_LAYER_OVERLAY: AtkLayer = AtkLayer::Overlay;
pub const ATK_LAYER_WINDOW: AtkLayer = AtkLayer::Window;

#[derive(Clone, Copy, Debug, Eq, PartialEq)]
#[repr(C)]
pub enum AtkRelationType {
    Null = 0,
    ControlledBy = 1,
    ControllerFor = 2,
    LabelFor = 3,
    LabelledBy = 4,
    MemberOf = 5,
    NodeChildOf = 6,
    FlowsTo = 7,
    FlowsFrom = 8,
    SubwindowOf = 9,
    Embeds = 10,
    EmbeddedBy = 11,
    PopupFor = 12,
    ParentWindowOf = 13,
    DescribedBy = 14,
    DescriptionFor = 15,
    NodeParentOf = 16,
    LastDefined = 17,
}
pub const ATK_RELATION_NULL: AtkRelationType = AtkRelationType::Null;
pub const ATK_RELATION_CONTROLLED_BY: AtkRelationType = AtkRelationType::ControlledBy;
pub const ATK_RELATION_CONTROLLER_FOR: AtkRelationType = AtkRelationType::ControllerFor;
pub const ATK_RELATION_LABEL_FOR: AtkRelationType = AtkRelationType::LabelFor;
pub const ATK_RELATION_LABELLED_BY: AtkRelationType = AtkRelationType::LabelledBy;
pub const ATK_RELATION_MEMBER_OF: AtkRelationType = AtkRelationType::MemberOf;
pub const ATK_RELATION_NODE_CHILD_OF: AtkRelationType = AtkRelationType::NodeChildOf;
pub const ATK_RELATION_FLOWS_TO: AtkRelationType = AtkRelationType::FlowsTo;
pub const ATK_RELATION_FLOWS_FROM: AtkRelationType = AtkRelationType::FlowsFrom;
pub const ATK_RELATION_SUBWINDOW_OF: AtkRelationType = AtkRelationType::SubwindowOf;
pub const ATK_RELATION_EMBEDS: AtkRelationType = AtkRelationType::Embeds;
pub const ATK_RELATION_EMBEDDED_BY: AtkRelationType = AtkRelationType::EmbeddedBy;
pub const ATK_RELATION_POPUP_FOR: AtkRelationType = AtkRelationType::PopupFor;
pub const ATK_RELATION_PARENT_WINDOW_OF: AtkRelationType = AtkRelationType::ParentWindowOf;
pub const ATK_RELATION_DESCRIBED_BY: AtkRelationType = AtkRelationType::DescribedBy;
pub const ATK_RELATION_DESCRIPTION_FOR: AtkRelationType = AtkRelationType::DescriptionFor;
pub const ATK_RELATION_NODE_PARENT_OF: AtkRelationType = AtkRelationType::NodeParentOf;
pub const ATK_RELATION_LAST_DEFINED: AtkRelationType = AtkRelationType::LastDefined;

#[derive(Clone, Copy, Debug, Eq, PartialEq)]
#[repr(C)]
pub enum AtkRole {
    Invalid = 0,
    AcceleratorLabel = 1,
    Alert = 2,
    Animation = 3,
    Arrow = 4,
    Calendar = 5,
    Canvas = 6,
    CheckBox = 7,
    CheckMenuItem = 8,
    ColorChooser = 9,
    ColumnHeader = 10,
    ComboBox = 11,
    DateEditor = 12,
    DesktopIcon = 13,
    DesktopFrame = 14,
    Dial = 15,
    Dialog = 16,
    DirectoryPane = 17,
    DrawingArea = 18,
    FileChooser = 19,
    Filler = 20,
    FontChooser = 21,
    Frame = 22,
    GlassPane = 23,
    HtmlContainer = 24,
    Icon = 25,
    Image = 26,
    InternalFrame = 27,
    Label = 28,
    LayeredPane = 29,
    List = 30,
    ListItem = 31,
    Menu = 32,
    MenuBar = 33,
    MenuItem = 34,
    OptionPane = 35,
    PageTab = 36,
    PageTabList = 37,
    Panel = 38,
    PasswordText = 39,
    PopupMenu = 40,
    ProgressBar = 41,
    PushButton = 42,
    RadioButton = 43,
    RadioMenuItem = 44,
    RootPane = 45,
    RowHeader = 46,
    ScrollBar = 47,
    ScrollPane = 48,
    Separator = 49,
    Slider = 50,
    SplitPane = 51,
    SpinButton = 52,
    Statusbar = 53,
    Table = 54,
    TableCell = 55,
    TableColumnHeader = 56,
    TableRowHeader = 57,
    TearOffMenuItem = 58,
    Terminal = 59,
    Text = 60,
    ToggleButton = 61,
    ToolBar = 62,
    ToolTip = 63,
    Tree = 64,
    TreeTable = 65,
    Unknown = 66,
    Viewport = 67,
    Window = 68,
    Header = 69,
    Footer = 70,
    Paragraph = 71,
    Ruler = 72,
    Application = 73,
    Autocomplete = 74,
    EditBar = 75,
    Embedded = 76,
    Entry = 77,
    Chart = 78,
    Caption = 79,
    DocumentFrame = 80,
    Heading = 81,
    Page = 82,
    Section = 83,
    RedundantObject = 84,
    Form = 85,
    Link = 86,
    InputMethodWindow = 87,
    TableRow = 88,
    TreeItem = 89,
    DocumentSpreadsheet = 90,
    DocumentPresentation = 91,
    DocumentText = 92,
    DocumentWeb = 93,
    DocumentEmail = 94,
    Comment = 95,
    ListBox = 96,
    Grouping = 97,
    ImageMap = 98,
    Notification = 99,
    InfoBar = 100,
    LevelBar = 101,
    TitleBar = 102,
    BlockQuote = 103,
    Audio = 104,
    Video = 105,
    Definition = 106,
    Article = 107,
    Landmark = 108,
    Log = 109,
    Marquee = 110,
    Math = 111,
    Rating = 112,
    Timer = 113,
    DescriptionList = 114,
    DescriptionTerm = 115,
    DescriptionValue = 116,
    Static = 117,
    MathFraction = 118,
    MathRoot = 119,
    Subscript = 120,
    Superscript = 121,
    LastDefined = 122,
}
pub const ATK_ROLE_INVALID: AtkRole = AtkRole::Invalid;
pub const ATK_ROLE_ACCEL_LABEL: AtkRole = AtkRole::AcceleratorLabel;
pub const ATK_ROLE_ALERT: AtkRole = AtkRole::Alert;
pub const ATK_ROLE_ANIMATION: AtkRole = AtkRole::Animation;
pub const ATK_ROLE_ARROW: AtkRole = AtkRole::Arrow;
pub const ATK_ROLE_CALENDAR: AtkRole = AtkRole::Calendar;
pub const ATK_ROLE_CANVAS: AtkRole = AtkRole::Canvas;
pub const ATK_ROLE_CHECK_BOX: AtkRole = AtkRole::CheckBox;
pub const ATK_ROLE_CHECK_MENU_ITEM: AtkRole = AtkRole::CheckMenuItem;
pub const ATK_ROLE_COLOR_CHOOSER: AtkRole = AtkRole::ColorChooser;
pub const ATK_ROLE_COLUMN_HEADER: AtkRole = AtkRole::ColumnHeader;
pub const ATK_ROLE_COMBO_BOX: AtkRole = AtkRole::ComboBox;
pub const ATK_ROLE_DATE_EDITOR: AtkRole = AtkRole::DateEditor;
pub const ATK_ROLE_DESKTOP_ICON: AtkRole = AtkRole::DesktopIcon;
pub const ATK_ROLE_DESKTOP_FRAME: AtkRole = AtkRole::DesktopFrame;
pub const ATK_ROLE_DIAL: AtkRole = AtkRole::Dial;
pub const ATK_ROLE_DIALOG: AtkRole = AtkRole::Dialog;
pub const ATK_ROLE_DIRECTORY_PANE: AtkRole = AtkRole::DirectoryPane;
pub const ATK_ROLE_DRAWING_AREA: AtkRole = AtkRole::DrawingArea;
pub const ATK_ROLE_FILE_CHOOSER: AtkRole = AtkRole::FileChooser;
pub const ATK_ROLE_FILLER: AtkRole = AtkRole::Filler;
pub const ATK_ROLE_FONT_CHOOSER: AtkRole = AtkRole::FontChooser;
pub const ATK_ROLE_FRAME: AtkRole = AtkRole::Frame;
pub const ATK_ROLE_GLASS_PANE: AtkRole = AtkRole::GlassPane;
pub const ATK_ROLE_HTML_CONTAINER: AtkRole = AtkRole::HtmlContainer;
pub const ATK_ROLE_ICON: AtkRole = AtkRole::Icon;
pub const ATK_ROLE_IMAGE: AtkRole = AtkRole::Image;
pub const ATK_ROLE_INTERNAL_FRAME: AtkRole = AtkRole::InternalFrame;
pub const ATK_ROLE_LABEL: AtkRole = AtkRole::Label;
pub const ATK_ROLE_LAYERED_PANE: AtkRole = AtkRole::LayeredPane;
pub const ATK_ROLE_LIST: AtkRole = AtkRole::List;
pub const ATK_ROLE_LIST_ITEM: AtkRole = AtkRole::ListItem;
pub const ATK_ROLE_MENU: AtkRole = AtkRole::Menu;
pub const ATK_ROLE_MENU_BAR: AtkRole = AtkRole::MenuBar;
pub const ATK_ROLE_MENU_ITEM: AtkRole = AtkRole::MenuItem;
pub const ATK_ROLE_OPTION_PANE: AtkRole = AtkRole::OptionPane;
pub const ATK_ROLE_PAGE_TAB: AtkRole = AtkRole::PageTab;
pub const ATK_ROLE_PAGE_TAB_LIST: AtkRole = AtkRole::PageTabList;
pub const ATK_ROLE_PANEL: AtkRole = AtkRole::Panel;
pub const ATK_ROLE_PASSWORD_TEXT: AtkRole = AtkRole::PasswordText;
pub const ATK_ROLE_POPUP_MENU: AtkRole = AtkRole::PopupMenu;
pub const ATK_ROLE_PROGRESS_BAR: AtkRole = AtkRole::ProgressBar;
pub const ATK_ROLE_PUSH_BUTTON: AtkRole = AtkRole::PushButton;
pub const ATK_ROLE_RADIO_BUTTON: AtkRole = AtkRole::RadioButton;
pub const ATK_ROLE_RADIO_MENU_ITEM: AtkRole = AtkRole::RadioMenuItem;
pub const ATK_ROLE_ROOT_PANE: AtkRole = AtkRole::RootPane;
pub const ATK_ROLE_ROW_HEADER: AtkRole = AtkRole::RowHeader;
pub const ATK_ROLE_SCROLL_BAR: AtkRole = AtkRole::ScrollBar;
pub const ATK_ROLE_SCROLL_PANE: AtkRole = AtkRole::ScrollPane;
pub const ATK_ROLE_SEPARATOR: AtkRole = AtkRole::Separator;
pub const ATK_ROLE_SLIDER: AtkRole = AtkRole::Slider;
pub const ATK_ROLE_SPLIT_PANE: AtkRole = AtkRole::SplitPane;
pub const ATK_ROLE_SPIN_BUTTON: AtkRole = AtkRole::SpinButton;
pub const ATK_ROLE_STATUSBAR: AtkRole = AtkRole::Statusbar;
pub const ATK_ROLE_TABLE: AtkRole = AtkRole::Table;
pub const ATK_ROLE_TABLE_CELL: AtkRole = AtkRole::TableCell;
pub const ATK_ROLE_TABLE_COLUMN_HEADER: AtkRole = AtkRole::TableColumnHeader;
pub const ATK_ROLE_TABLE_ROW_HEADER: AtkRole = AtkRole::TableRowHeader;
pub const ATK_ROLE_TEAR_OFF_MENU_ITEM: AtkRole = AtkRole::TearOffMenuItem;
pub const ATK_ROLE_TERMINAL: AtkRole = AtkRole::Terminal;
pub const ATK_ROLE_TEXT: AtkRole = AtkRole::Text;
pub const ATK_ROLE_TOGGLE_BUTTON: AtkRole = AtkRole::ToggleButton;
pub const ATK_ROLE_TOOL_BAR: AtkRole = AtkRole::ToolBar;
pub const ATK_ROLE_TOOL_TIP: AtkRole = AtkRole::ToolTip;
pub const ATK_ROLE_TREE: AtkRole = AtkRole::Tree;
pub const ATK_ROLE_TREE_TABLE: AtkRole = AtkRole::TreeTable;
pub const ATK_ROLE_UNKNOWN: AtkRole = AtkRole::Unknown;
pub const ATK_ROLE_VIEWPORT: AtkRole = AtkRole::Viewport;
pub const ATK_ROLE_WINDOW: AtkRole = AtkRole::Window;
pub const ATK_ROLE_HEADER: AtkRole = AtkRole::Header;
pub const ATK_ROLE_FOOTER: AtkRole = AtkRole::Footer;
pub const ATK_ROLE_PARAGRAPH: AtkRole = AtkRole::Paragraph;
pub const ATK_ROLE_RULER: AtkRole = AtkRole::Ruler;
pub const ATK_ROLE_APPLICATION: AtkRole = AtkRole::Application;
pub const ATK_ROLE_AUTOCOMPLETE: AtkRole = AtkRole::Autocomplete;
pub const ATK_ROLE_EDITBAR: AtkRole = AtkRole::EditBar;
pub const ATK_ROLE_EMBEDDED: AtkRole = AtkRole::Embedded;
pub const ATK_ROLE_ENTRY: AtkRole = AtkRole::Entry;
pub const ATK_ROLE_CHART: AtkRole = AtkRole::Chart;
pub const ATK_ROLE_CAPTION: AtkRole = AtkRole::Caption;
pub const ATK_ROLE_DOCUMENT_FRAME: AtkRole = AtkRole::DocumentFrame;
pub const ATK_ROLE_HEADING: AtkRole = AtkRole::Heading;
pub const ATK_ROLE_PAGE: AtkRole = AtkRole::Page;
pub const ATK_ROLE_SECTION: AtkRole = AtkRole::Section;
pub const ATK_ROLE_REDUNDANT_OBJECT: AtkRole = AtkRole::RedundantObject;
pub const ATK_ROLE_FORM: AtkRole = AtkRole::Form;
pub const ATK_ROLE_LINK: AtkRole = AtkRole::Link;
pub const ATK_ROLE_INPUT_METHOD_WINDOW: AtkRole = AtkRole::InputMethodWindow;
pub const ATK_ROLE_TABLE_ROW: AtkRole = AtkRole::TableRow;
pub const ATK_ROLE_TREE_ITEM: AtkRole = AtkRole::TreeItem;
pub const ATK_ROLE_DOCUMENT_SPREADSHEET: AtkRole = AtkRole::DocumentSpreadsheet;
pub const ATK_ROLE_DOCUMENT_PRESENTATION: AtkRole = AtkRole::DocumentPresentation;
pub const ATK_ROLE_DOCUMENT_TEXT: AtkRole = AtkRole::DocumentText;
pub const ATK_ROLE_DOCUMENT_WEB: AtkRole = AtkRole::DocumentWeb;
pub const ATK_ROLE_DOCUMENT_EMAIL: AtkRole = AtkRole::DocumentEmail;
pub const ATK_ROLE_COMMENT: AtkRole = AtkRole::Comment;
pub const ATK_ROLE_LIST_BOX: AtkRole = AtkRole::ListBox;
pub const ATK_ROLE_GROUPING: AtkRole = AtkRole::Grouping;
pub const ATK_ROLE_IMAGE_MAP: AtkRole = AtkRole::ImageMap;
pub const ATK_ROLE_NOTIFICATION: AtkRole = AtkRole::Notification;
pub const ATK_ROLE_INFO_BAR: AtkRole = AtkRole::InfoBar;
pub const ATK_ROLE_LEVEL_BAR: AtkRole = AtkRole::LevelBar;
pub const ATK_ROLE_TITLE_BAR: AtkRole = AtkRole::TitleBar;
pub const ATK_ROLE_BLOCK_QUOTE: AtkRole = AtkRole::BlockQuote;
pub const ATK_ROLE_AUDIO: AtkRole = AtkRole::Audio;
pub const ATK_ROLE_VIDEO: AtkRole = AtkRole::Video;
pub const ATK_ROLE_DEFINITION: AtkRole = AtkRole::Definition;
pub const ATK_ROLE_ARTICLE: AtkRole = AtkRole::Article;
pub const ATK_ROLE_LANDMARK: AtkRole = AtkRole::Landmark;
pub const ATK_ROLE_LOG: AtkRole = AtkRole::Log;
pub const ATK_ROLE_MARQUEE: AtkRole = AtkRole::Marquee;
pub const ATK_ROLE_MATH: AtkRole = AtkRole::Math;
pub const ATK_ROLE_RATING: AtkRole = AtkRole::Rating;
pub const ATK_ROLE_TIMER: AtkRole = AtkRole::Timer;
pub const ATK_ROLE_DESCRIPTION_LIST: AtkRole = AtkRole::DescriptionList;
pub const ATK_ROLE_DESCRIPTION_TERM: AtkRole = AtkRole::DescriptionTerm;
pub const ATK_ROLE_DESCRIPTION_VALUE: AtkRole = AtkRole::DescriptionValue;
pub const ATK_ROLE_STATIC: AtkRole = AtkRole::Static;
pub const ATK_ROLE_MATH_FRACTION: AtkRole = AtkRole::MathFraction;
pub const ATK_ROLE_MATH_ROOT: AtkRole = AtkRole::MathRoot;
pub const ATK_ROLE_SUBSCRIPT: AtkRole = AtkRole::Subscript;
pub const ATK_ROLE_SUPERSCRIPT: AtkRole = AtkRole::Superscript;
pub const ATK_ROLE_LAST_DEFINED: AtkRole = AtkRole::LastDefined;

#[derive(Clone, Copy, Debug, Eq, PartialEq)]
#[repr(C)]
pub enum AtkStateType {
    Invalid = 0,
    Active = 1,
    Armed = 2,
    Busy = 3,
    Checked = 4,
    Defunct = 5,
    Editable = 6,
    Enabled = 7,
    Expandable = 8,
    Expanded = 9,
    Focusable = 10,
    Focused = 11,
    Horizontal = 12,
    Iconified = 13,
    Modal = 14,
    MultiLine = 15,
    Multiselectable = 16,
    Opaque = 17,
    Pressed = 18,
    Resizable = 19,
    Selectable = 20,
    Selected = 21,
    Sensitive = 22,
    Showing = 23,
    SingleLine = 24,
    Stale = 25,
    Transient = 26,
    Vertical = 27,
    Visible = 28,
    ManagesDescendants = 29,
    Indeterminate = 30,
    Truncated = 31,
    Required = 32,
    InvalidEntry = 33,
    SupportsAutocompletion = 34,
    SelectableText = 35,
    Default = 36,
    Animated = 37,
    Visited = 38,
    Checkable = 39,
    HasPopup = 40,
    HasTooltip = 41,
    ReadOnly = 42,
    LastDefined = 43,
}
pub const ATK_STATE_INVALID: AtkStateType = AtkStateType::Invalid;
pub const ATK_STATE_ACTIVE: AtkStateType = AtkStateType::Active;
pub const ATK_STATE_ARMED: AtkStateType = AtkStateType::Armed;
pub const ATK_STATE_BUSY: AtkStateType = AtkStateType::Busy;
pub const ATK_STATE_CHECKED: AtkStateType = AtkStateType::Checked;
pub const ATK_STATE_DEFUNCT: AtkStateType = AtkStateType::Defunct;
pub const ATK_STATE_EDITABLE: AtkStateType = AtkStateType::Editable;
pub const ATK_STATE_ENABLED: AtkStateType = AtkStateType::Enabled;
pub const ATK_STATE_EXPANDABLE: AtkStateType = AtkStateType::Expandable;
pub const ATK_STATE_EXPANDED: AtkStateType = AtkStateType::Expanded;
pub const ATK_STATE_FOCUSABLE: AtkStateType = AtkStateType::Focusable;
pub const ATK_STATE_FOCUSED: AtkStateType = AtkStateType::Focused;
pub const ATK_STATE_HORIZONTAL: AtkStateType = AtkStateType::Horizontal;
pub const ATK_STATE_ICONIFIED: AtkStateType = AtkStateType::Iconified;
pub const ATK_STATE_MODAL: AtkStateType = AtkStateType::Modal;
pub const ATK_STATE_MULTI_LINE: AtkStateType = AtkStateType::MultiLine;
pub const ATK_STATE_MULTISELECTABLE: AtkStateType = AtkStateType::Multiselectable;
pub const ATK_STATE_OPAQUE: AtkStateType = AtkStateType::Opaque;
pub const ATK_STATE_PRESSED: AtkStateType = AtkStateType::Pressed;
pub const ATK_STATE_RESIZABLE: AtkStateType = AtkStateType::Resizable;
pub const ATK_STATE_SELECTABLE: AtkStateType = AtkStateType::Selectable;
pub const ATK_STATE_SELECTED: AtkStateType = AtkStateType::Selected;
pub const ATK_STATE_SENSITIVE: AtkStateType = AtkStateType::Sensitive;
pub const ATK_STATE_SHOWING: AtkStateType = AtkStateType::Showing;
pub const ATK_STATE_SINGLE_LINE: AtkStateType = AtkStateType::SingleLine;
pub const ATK_STATE_STALE: AtkStateType = AtkStateType::Stale;
pub const ATK_STATE_TRANSIENT: AtkStateType = AtkStateType::Transient;
pub const ATK_STATE_VERTICAL: AtkStateType = AtkStateType::Vertical;
pub const ATK_STATE_VISIBLE: AtkStateType = AtkStateType::Visible;
pub const ATK_STATE_MANAGES_DESCENDANTS: AtkStateType = AtkStateType::ManagesDescendants;
pub const ATK_STATE_INDETERMINATE: AtkStateType = AtkStateType::Indeterminate;
pub const ATK_STATE_TRUNCATED: AtkStateType = AtkStateType::Truncated;
pub const ATK_STATE_REQUIRED: AtkStateType = AtkStateType::Required;
pub const ATK_STATE_INVALID_ENTRY: AtkStateType = AtkStateType::InvalidEntry;
pub const ATK_STATE_SUPPORTS_AUTOCOMPLETION: AtkStateType = AtkStateType::SupportsAutocompletion;
pub const ATK_STATE_SELECTABLE_TEXT: AtkStateType = AtkStateType::SelectableText;
pub const ATK_STATE_DEFAULT: AtkStateType = AtkStateType::Default;
pub const ATK_STATE_ANIMATED: AtkStateType = AtkStateType::Animated;
pub const ATK_STATE_VISITED: AtkStateType = AtkStateType::Visited;
pub const ATK_STATE_CHECKABLE: AtkStateType = AtkStateType::Checkable;
pub const ATK_STATE_HAS_POPUP: AtkStateType = AtkStateType::HasPopup;
pub const ATK_STATE_HAS_TOOLTIP: AtkStateType = AtkStateType::HasTooltip;
pub const ATK_STATE_READ_ONLY: AtkStateType = AtkStateType::ReadOnly;
pub const ATK_STATE_LAST_DEFINED: AtkStateType = AtkStateType::LastDefined;

#[derive(Clone, Copy, Debug, Eq, PartialEq)]
#[repr(C)]
pub enum AtkTextAttribute {
    Invalid = 0,
    LeftMargin = 1,
    RightMargin = 2,
    Indent = 3,
    Invisible = 4,
    Editable = 5,
    PixelsAboveLines = 6,
    PixelsBelowLines = 7,
    PixelsInsideWrap = 8,
    BgFullHeight = 9,
    Rise = 10,
    Underline = 11,
    Strikethrough = 12,
    Size = 13,
    Scale = 14,
    Weight = 15,
    Language = 16,
    FamilyName = 17,
    BgColor = 18,
    FgColor = 19,
    BgStipple = 20,
    FgStipple = 21,
    WrapMode = 22,
    Direction = 23,
    Justification = 24,
    Stretch = 25,
    Variant = 26,
    Style = 27,
    LastDefined = 28,
}
pub const ATK_TEXT_ATTR_INVALID: AtkTextAttribute = AtkTextAttribute::Invalid;
pub const ATK_TEXT_ATTR_LEFT_MARGIN: AtkTextAttribute = AtkTextAttribute::LeftMargin;
pub const ATK_TEXT_ATTR_RIGHT_MARGIN: AtkTextAttribute = AtkTextAttribute::RightMargin;
pub const ATK_TEXT_ATTR_INDENT: AtkTextAttribute = AtkTextAttribute::Indent;
pub const ATK_TEXT_ATTR_INVISIBLE: AtkTextAttribute = AtkTextAttribute::Invisible;
pub const ATK_TEXT_ATTR_EDITABLE: AtkTextAttribute = AtkTextAttribute::Editable;
pub const ATK_TEXT_ATTR_PIXELS_ABOVE_LINES: AtkTextAttribute = AtkTextAttribute::PixelsAboveLines;
pub const ATK_TEXT_ATTR_PIXELS_BELOW_LINES: AtkTextAttribute = AtkTextAttribute::PixelsBelowLines;
pub const ATK_TEXT_ATTR_PIXELS_INSIDE_WRAP: AtkTextAttribute = AtkTextAttribute::PixelsInsideWrap;
pub const ATK_TEXT_ATTR_BG_FULL_HEIGHT: AtkTextAttribute = AtkTextAttribute::BgFullHeight;
pub const ATK_TEXT_ATTR_RISE: AtkTextAttribute = AtkTextAttribute::Rise;
pub const ATK_TEXT_ATTR_UNDERLINE: AtkTextAttribute = AtkTextAttribute::Underline;
pub const ATK_TEXT_ATTR_STRIKETHROUGH: AtkTextAttribute = AtkTextAttribute::Strikethrough;
pub const ATK_TEXT_ATTR_SIZE: AtkTextAttribute = AtkTextAttribute::Size;
pub const ATK_TEXT_ATTR_SCALE: AtkTextAttribute = AtkTextAttribute::Scale;
pub const ATK_TEXT_ATTR_WEIGHT: AtkTextAttribute = AtkTextAttribute::Weight;
pub const ATK_TEXT_ATTR_LANGUAGE: AtkTextAttribute = AtkTextAttribute::Language;
pub const ATK_TEXT_ATTR_FAMILY_NAME: AtkTextAttribute = AtkTextAttribute::FamilyName;
pub const ATK_TEXT_ATTR_BG_COLOR: AtkTextAttribute = AtkTextAttribute::BgColor;
pub const ATK_TEXT_ATTR_FG_COLOR: AtkTextAttribute = AtkTextAttribute::FgColor;
pub const ATK_TEXT_ATTR_BG_STIPPLE: AtkTextAttribute = AtkTextAttribute::BgStipple;
pub const ATK_TEXT_ATTR_FG_STIPPLE: AtkTextAttribute = AtkTextAttribute::FgStipple;
pub const ATK_TEXT_ATTR_WRAP_MODE: AtkTextAttribute = AtkTextAttribute::WrapMode;
pub const ATK_TEXT_ATTR_DIRECTION: AtkTextAttribute = AtkTextAttribute::Direction;
pub const ATK_TEXT_ATTR_JUSTIFICATION: AtkTextAttribute = AtkTextAttribute::Justification;
pub const ATK_TEXT_ATTR_STRETCH: AtkTextAttribute = AtkTextAttribute::Stretch;
pub const ATK_TEXT_ATTR_VARIANT: AtkTextAttribute = AtkTextAttribute::Variant;
pub const ATK_TEXT_ATTR_STYLE: AtkTextAttribute = AtkTextAttribute::Style;
pub const ATK_TEXT_ATTR_LAST_DEFINED: AtkTextAttribute = AtkTextAttribute::LastDefined;

#[derive(Clone, Copy, Debug, Eq, PartialEq)]
#[repr(C)]
pub enum AtkTextBoundary {
    Char = 0,
    WordStart = 1,
    WordEnd = 2,
    SentenceStart = 3,
    SentenceEnd = 4,
    LineStart = 5,
    LineEnd = 6,
}
pub const ATK_TEXT_BOUNDARY_CHAR: AtkTextBoundary = AtkTextBoundary::Char;
pub const ATK_TEXT_BOUNDARY_WORD_START: AtkTextBoundary = AtkTextBoundary::WordStart;
pub const ATK_TEXT_BOUNDARY_WORD_END: AtkTextBoundary = AtkTextBoundary::WordEnd;
pub const ATK_TEXT_BOUNDARY_SENTENCE_START: AtkTextBoundary = AtkTextBoundary::SentenceStart;
pub const ATK_TEXT_BOUNDARY_SENTENCE_END: AtkTextBoundary = AtkTextBoundary::SentenceEnd;
pub const ATK_TEXT_BOUNDARY_LINE_START: AtkTextBoundary = AtkTextBoundary::LineStart;
pub const ATK_TEXT_BOUNDARY_LINE_END: AtkTextBoundary = AtkTextBoundary::LineEnd;

#[derive(Clone, Copy, Debug, Eq, PartialEq)]
#[repr(C)]
pub enum AtkTextClipType {
    None = 0,
    Min = 1,
    Max = 2,
    Both = 3,
}
pub const ATK_TEXT_CLIP_NONE: AtkTextClipType = AtkTextClipType::None;
pub const ATK_TEXT_CLIP_MIN: AtkTextClipType = AtkTextClipType::Min;
pub const ATK_TEXT_CLIP_MAX: AtkTextClipType = AtkTextClipType::Max;
pub const ATK_TEXT_CLIP_BOTH: AtkTextClipType = AtkTextClipType::Both;

#[derive(Clone, Copy, Debug, Eq, PartialEq)]
#[repr(C)]
pub enum AtkTextGranularity {
    Char = 0,
    Word = 1,
    Sentence = 2,
    Line = 3,
    Paragraph = 4,
}
pub const ATK_TEXT_GRANULARITY_CHAR: AtkTextGranularity = AtkTextGranularity::Char;
pub const ATK_TEXT_GRANULARITY_WORD: AtkTextGranularity = AtkTextGranularity::Word;
pub const ATK_TEXT_GRANULARITY_SENTENCE: AtkTextGranularity = AtkTextGranularity::Sentence;
pub const ATK_TEXT_GRANULARITY_LINE: AtkTextGranularity = AtkTextGranularity::Line;
pub const ATK_TEXT_GRANULARITY_PARAGRAPH: AtkTextGranularity = AtkTextGranularity::Paragraph;

#[derive(Clone, Copy, Debug, Eq, PartialEq)]
#[repr(C)]
pub enum AtkValueType {
    VeryWeak = 0,
    Weak = 1,
    Acceptable = 2,
    Strong = 3,
    VeryStrong = 4,
    VeryLow = 5,
    Low = 6,
    Medium = 7,
    High = 8,
    VeryHigh = 9,
    VeryBad = 10,
    Bad = 11,
    Good = 12,
    VeryGood = 13,
    Best = 14,
    LastDefined = 15,
}
pub const ATK_VALUE_VERY_WEAK: AtkValueType = AtkValueType::VeryWeak;
pub const ATK_VALUE_WEAK: AtkValueType = AtkValueType::Weak;
pub const ATK_VALUE_ACCEPTABLE: AtkValueType = AtkValueType::Acceptable;
pub const ATK_VALUE_STRONG: AtkValueType = AtkValueType::Strong;
pub const ATK_VALUE_VERY_STRONG: AtkValueType = AtkValueType::VeryStrong;
pub const ATK_VALUE_VERY_LOW: AtkValueType = AtkValueType::VeryLow;
pub const ATK_VALUE_LOW: AtkValueType = AtkValueType::Low;
pub const ATK_VALUE_MEDIUM: AtkValueType = AtkValueType::Medium;
pub const ATK_VALUE_HIGH: AtkValueType = AtkValueType::High;
pub const ATK_VALUE_VERY_HIGH: AtkValueType = AtkValueType::VeryHigh;
pub const ATK_VALUE_VERY_BAD: AtkValueType = AtkValueType::VeryBad;
pub const ATK_VALUE_BAD: AtkValueType = AtkValueType::Bad;
pub const ATK_VALUE_GOOD: AtkValueType = AtkValueType::Good;
pub const ATK_VALUE_VERY_GOOD: AtkValueType = AtkValueType::VeryGood;
pub const ATK_VALUE_BEST: AtkValueType = AtkValueType::Best;
pub const ATK_VALUE_LAST_DEFINED: AtkValueType = AtkValueType::LastDefined;


pub const ATK_BINARY_AGE: i32 = 21610;
pub const ATK_INTERFACE_AGE: i32 = 1;
pub const ATK_MAJOR_VERSION: i32 = 2;
pub const ATK_MICRO_VERSION: i32 = 0;
pub const ATK_MINOR_VERSION: i32 = 16;
pub const ATK_VERSION_MIN_REQUIRED: i32 = 2;

bitflags! {
    #[repr(C)]
    flags AtkHyperlinkStateFlags: c_uint {
        const ATK_HYPERLINK_IS_INLINE = 1,
    }
}



pub type AtkEventListener = Option<unsafe extern "C" fn(*mut AtkObject)>;
pub type AtkEventListenerInit = Option<unsafe extern "C" fn()>;
pub type AtkFocusHandler = Option<unsafe extern "C" fn(*mut AtkObject, gboolean)>;
pub type AtkFunction = Option<unsafe extern "C" fn(gpointer) -> gboolean>;
pub type AtkKeySnoopFunc = Option<unsafe extern "C" fn(*mut AtkKeyEventStruct, gpointer) -> c_int>;
pub type AtkPropertyChangeHandler = Option<unsafe extern "C" fn(*mut AtkObject, *mut AtkPropertyValues)>;

#[repr(C)]
pub struct AtkActionIface {
    pub parent: gobject::GTypeInterface,
    pub do_action: Option<unsafe extern "C" fn(*mut AtkAction, c_int) -> gboolean>,
    pub get_n_actions: Option<unsafe extern "C" fn(*mut AtkAction) -> c_int>,
    pub get_description: Option<unsafe extern "C" fn(*mut AtkAction, c_int) -> *const c_char>,
    pub get_name: Option<unsafe extern "C" fn(*mut AtkAction, c_int) -> *const c_char>,
    pub get_keybinding: Option<unsafe extern "C" fn(*mut AtkAction, c_int) -> *const c_char>,
    pub set_description: Option<unsafe extern "C" fn(*mut AtkAction, c_int, *const c_char) -> gboolean>,
    pub get_localized_name: Option<unsafe extern "C" fn(*mut AtkAction, c_int) -> *const c_char>,
}

#[repr(C)]
pub struct AtkAttribute {
    pub name: *mut c_char,
    pub value: *mut c_char,
}

#[repr(C)]
pub struct AtkComponentIface {
    pub parent: gobject::GTypeInterface,
    pub add_focus_handler: Option<unsafe extern "C" fn(*mut AtkComponent, AtkFocusHandler) -> c_uint>,
    pub contains: Option<unsafe extern "C" fn(*mut AtkComponent, c_int, c_int, AtkCoordType) -> gboolean>,
    pub ref_accessible_at_point: Option<unsafe extern "C" fn(*mut AtkComponent, c_int, c_int, AtkCoordType) -> *mut AtkObject>,
    pub get_extents: Option<unsafe extern "C" fn(*mut AtkComponent, *mut c_int, *mut c_int, *mut c_int, *mut c_int, AtkCoordType)>,
    pub get_position: Option<unsafe extern "C" fn(*mut AtkComponent, *mut c_int, *mut c_int, AtkCoordType)>,
    pub get_size: Option<unsafe extern "C" fn(*mut AtkComponent, *mut c_int, *mut c_int)>,
    pub grab_focus: Option<unsafe extern "C" fn(*mut AtkComponent) -> gboolean>,
    pub remove_focus_handler: Option<unsafe extern "C" fn(*mut AtkComponent, c_uint)>,
    pub set_extents: Option<unsafe extern "C" fn(*mut AtkComponent, c_int, c_int, c_int, c_int, AtkCoordType) -> gboolean>,
    pub set_position: Option<unsafe extern "C" fn(*mut AtkComponent, c_int, c_int, AtkCoordType) -> gboolean>,
    pub set_size: Option<unsafe extern "C" fn(*mut AtkComponent, c_int, c_int) -> gboolean>,
    pub get_layer: Option<unsafe extern "C" fn(*mut AtkComponent) -> AtkLayer>,
    pub get_mdi_zorder: Option<unsafe extern "C" fn(*mut AtkComponent) -> c_int>,
    pub bounds_changed: Option<unsafe extern "C" fn(*mut AtkComponent, *mut AtkRectangle)>,
    pub get_alpha: Option<unsafe extern "C" fn(*mut AtkComponent) -> c_double>,
}

#[repr(C)]
pub struct AtkDocumentIface {
    pub parent: gobject::GTypeInterface,
    pub get_document_type: Option<unsafe extern "C" fn(*mut AtkDocument) -> *const c_char>,
    pub get_document: Option<unsafe extern "C" fn(*mut AtkDocument) -> gpointer>,
    pub get_document_locale: Option<unsafe extern "C" fn(*mut AtkDocument) -> *const c_char>,
    pub get_document_attributes: Option<unsafe extern "C" fn(*mut AtkDocument) -> *mut AtkAttributeSet>,
    pub get_document_attribute_value: Option<unsafe extern "C" fn(*mut AtkDocument, *const c_char) -> *const c_char>,
    pub set_document_attribute: Option<unsafe extern "C" fn(*mut AtkDocument, *const c_char, *const c_char) -> gboolean>,
    pub get_current_page_number: Option<unsafe extern "C" fn(*mut AtkDocument) -> c_int>,
    pub get_page_count: Option<unsafe extern "C" fn(*mut AtkDocument) -> c_int>,
}

#[repr(C)]
pub struct AtkEditableTextIface {
    pub parent_interface: gobject::GTypeInterface,
    pub set_run_attributes: Option<unsafe extern "C" fn(*mut AtkEditableText, *mut AtkAttributeSet, c_int, c_int) -> gboolean>,
    pub set_text_contents: Option<unsafe extern "C" fn(*mut AtkEditableText, *const c_char)>,
    pub insert_text: Option<unsafe extern "C" fn(*mut AtkEditableText, *const c_char, c_int, *mut c_int)>,
    pub copy_text: Option<unsafe extern "C" fn(*mut AtkEditableText, c_int, c_int)>,
    pub cut_text: Option<unsafe extern "C" fn(*mut AtkEditableText, c_int, c_int)>,
    pub delete_text: Option<unsafe extern "C" fn(*mut AtkEditableText, c_int, c_int)>,
    pub paste_text: Option<unsafe extern "C" fn(*mut AtkEditableText, c_int)>,
}

#[repr(C)]
pub struct AtkGObjectAccessibleClass {
    pub parent_class: AtkObjectClass,
    pub pad1: AtkFunction,
    pub pad2: AtkFunction,
}

#[repr(C)]
pub struct AtkHyperlinkClass {
    pub parent: gobject::GObjectClass,
    pub get_uri: Option<unsafe extern "C" fn(*mut AtkHyperlink, c_int) -> *mut c_char>,
    pub get_object: Option<unsafe extern "C" fn(*mut AtkHyperlink, c_int) -> *mut AtkObject>,
    pub get_end_index: Option<unsafe extern "C" fn(*mut AtkHyperlink) -> c_int>,
    pub get_start_index: Option<unsafe extern "C" fn(*mut AtkHyperlink) -> c_int>,
    pub is_valid: Option<unsafe extern "C" fn(*mut AtkHyperlink) -> gboolean>,
    pub get_n_anchors: Option<unsafe extern "C" fn(*mut AtkHyperlink) -> c_int>,
    pub link_state: Option<unsafe extern "C" fn(*mut AtkHyperlink) -> c_uint>,
    pub is_selected_link: Option<unsafe extern "C" fn(*mut AtkHyperlink) -> gboolean>,
    pub link_activated: Option<unsafe extern "C" fn(*mut AtkHyperlink)>,
    pub pad1: AtkFunction,
}

#[repr(C)]
pub struct AtkHyperlinkImplIface {
    pub parent: gobject::GTypeInterface,
    pub get_hyperlink: Option<unsafe extern "C" fn(*mut AtkHyperlinkImpl) -> *mut AtkHyperlink>,
}

#[repr(C)]
pub struct AtkHypertextIface {
    pub parent: gobject::GTypeInterface,
    pub get_link: Option<unsafe extern "C" fn(*mut AtkHypertext, c_int) -> *mut AtkHyperlink>,
    pub get_n_links: Option<unsafe extern "C" fn(*mut AtkHypertext) -> c_int>,
    pub get_link_index: Option<unsafe extern "C" fn(*mut AtkHypertext, c_int) -> c_int>,
    pub link_selected: Option<unsafe extern "C" fn(*mut AtkHypertext, c_int)>,
}

#[repr(C)]
pub struct AtkImageIface {
    pub parent: gobject::GTypeInterface,
    pub get_image_position: Option<unsafe extern "C" fn(*mut AtkImage, *mut c_int, *mut c_int, AtkCoordType)>,
    pub get_image_description: Option<unsafe extern "C" fn(*mut AtkImage) -> *const c_char>,
    pub get_image_size: Option<unsafe extern "C" fn(*mut AtkImage, *mut c_int, *mut c_int)>,
    pub set_image_description: Option<unsafe extern "C" fn(*mut AtkImage, *const c_char) -> gboolean>,
    pub get_image_locale: Option<unsafe extern "C" fn(*mut AtkImage) -> *const c_char>,
}

#[repr(C)]
pub struct AtkImplementor(c_void);

#[repr(C)]
pub struct AtkKeyEventStruct {
    pub type_: c_int,
    pub state: c_uint,
    pub keyval: c_uint,
    pub length: c_int,
    pub string: *mut c_char,
    pub keycode: u16,
    pub timestamp: u32,
}

#[repr(C)]
pub struct AtkMiscClass {
    pub parent: gobject::GObjectClass,
    pub threads_enter: Option<unsafe extern "C" fn(*mut AtkMisc)>,
    pub threads_leave: Option<unsafe extern "C" fn(*mut AtkMisc)>,
    pub vfuncs: [gpointer; 32],
}

#[repr(C)]
pub struct AtkNoOpObjectClass {
    pub parent_class: AtkObjectClass,
}

#[repr(C)]
pub struct AtkNoOpObjectFactoryClass {
    pub parent_class: AtkObjectFactoryClass,
}

#[repr(C)]
pub struct AtkObjectClass {
    pub parent: gobject::GObjectClass,
    pub get_name: Option<unsafe extern "C" fn(*mut AtkObject) -> *const c_char>,
    pub get_description: Option<unsafe extern "C" fn(*mut AtkObject) -> *const c_char>,
    pub get_parent: Option<unsafe extern "C" fn(*mut AtkObject) -> *mut AtkObject>,
    pub get_n_children: Option<unsafe extern "C" fn(*mut AtkObject) -> c_int>,
    pub ref_child: Option<unsafe extern "C" fn(*mut AtkObject, c_int) -> *mut AtkObject>,
    pub get_index_in_parent: Option<unsafe extern "C" fn(*mut AtkObject) -> c_int>,
    pub ref_relation_set: Option<unsafe extern "C" fn(*mut AtkObject) -> *mut AtkRelationSet>,
    pub get_role: Option<unsafe extern "C" fn(*mut AtkObject) -> AtkRole>,
    pub get_layer: Option<unsafe extern "C" fn(*mut AtkObject) -> AtkLayer>,
    pub get_mdi_zorder: Option<unsafe extern "C" fn(*mut AtkObject) -> c_int>,
    pub ref_state_set: Option<unsafe extern "C" fn(*mut AtkObject) -> *mut AtkStateSet>,
    pub set_name: Option<unsafe extern "C" fn(*mut AtkObject, *const c_char)>,
    pub set_description: Option<unsafe extern "C" fn(*mut AtkObject, *const c_char)>,
    pub set_parent: Option<unsafe extern "C" fn(*mut AtkObject, *mut AtkObject)>,
    pub set_role: Option<unsafe extern "C" fn(*mut AtkObject, AtkRole)>,
    pub connect_property_change_handler: Option<unsafe extern "C" fn(*mut AtkObject, *mut AtkPropertyChangeHandler) -> c_uint>,
    pub remove_property_change_handler: Option<unsafe extern "C" fn(*mut AtkObject, c_uint)>,
    pub initialize: Option<unsafe extern "C" fn(*mut AtkObject, *mut gpointer)>,
    pub children_changed: Option<unsafe extern "C" fn(*mut AtkObject, c_uint, gpointer)>,
    pub focus_event: Option<unsafe extern "C" fn(*mut AtkObject, gboolean)>,
    pub property_change: Option<unsafe extern "C" fn(*mut AtkObject, *mut AtkPropertyValues)>,
    pub state_change: Option<unsafe extern "C" fn(*mut AtkObject, *const c_char, gboolean)>,
    pub visible_data_changed: Option<unsafe extern "C" fn(*mut AtkObject)>,
    pub active_descendant_changed: Option<unsafe extern "C" fn(*mut AtkObject, *mut gpointer)>,
    pub get_attributes: Option<unsafe extern "C" fn(*mut AtkObject) -> *mut AtkAttributeSet>,
    pub get_object_locale: Option<unsafe extern "C" fn(*mut AtkObject) -> *const c_char>,
    pub pad1: AtkFunction,
}

#[repr(C)]
pub struct AtkObjectFactoryClass {
    pub parent_class: gobject::GObjectClass,
    pub create_accessible: Option<unsafe extern "C" fn(*mut gobject::GObject) -> *mut AtkObject>,
    pub invalidate: Option<unsafe extern "C" fn(*mut AtkObjectFactory)>,
    pub get_accessible_type: Option<unsafe extern "C" fn() -> GType>,
    pub pad1: AtkFunction,
    pub pad2: AtkFunction,
}

#[repr(C)]
pub struct AtkPlugClass {
    pub parent_class: AtkObjectClass,
    pub get_object_id: Option<unsafe extern "C" fn(*mut AtkPlug) -> *mut c_char>,
}

#[repr(C)]
pub struct AtkPropertyValues {
    pub property_name: *const c_char,
    pub old_value: gobject::GValue,
    pub new_value: gobject::GValue,
}

#[repr(C)]
pub struct AtkRange(c_void);

#[repr(C)]
pub struct AtkRectangle {
    pub x: c_int,
    pub y: c_int,
    pub width: c_int,
    pub height: c_int,
}

#[repr(C)]
pub struct AtkRegistryClass {
    pub parent_class: gobject::GObjectClass,
}

#[repr(C)]
pub struct AtkRelationClass {
    pub parent: gobject::GObjectClass,
}

#[repr(C)]
pub struct AtkRelationSetClass {
    pub parent: gobject::GObjectClass,
    pub pad1: AtkFunction,
    pub pad2: AtkFunction,
}

#[repr(C)]
pub struct AtkSelectionIface {
    pub parent: gobject::GTypeInterface,
    pub add_selection: Option<unsafe extern "C" fn(*mut AtkSelection, c_int) -> gboolean>,
    pub clear_selection: Option<unsafe extern "C" fn(*mut AtkSelection) -> gboolean>,
    pub ref_selection: Option<unsafe extern "C" fn(*mut AtkSelection, c_int) -> *mut AtkObject>,
    pub get_selection_count: Option<unsafe extern "C" fn(*mut AtkSelection) -> c_int>,
    pub is_child_selected: Option<unsafe extern "C" fn(*mut AtkSelection, c_int) -> gboolean>,
    pub remove_selection: Option<unsafe extern "C" fn(*mut AtkSelection, c_int) -> gboolean>,
    pub select_all_selection: Option<unsafe extern "C" fn(*mut AtkSelection) -> gboolean>,
    pub selection_changed: Option<unsafe extern "C" fn(*mut AtkSelection)>,
}

#[repr(C)]
pub struct AtkSocketClass {
    pub parent_class: AtkObjectClass,
    pub embed: Option<unsafe extern "C" fn(*mut AtkSocket, *mut c_char)>,
}

#[repr(C)]
pub struct AtkStateSetClass {
    pub parent: gobject::GObjectClass,
}

#[repr(C)]
pub struct AtkStreamableContentIface {
    pub parent: gobject::GTypeInterface,
    pub get_n_mime_types: Option<unsafe extern "C" fn(*mut AtkStreamableContent) -> c_int>,
    pub get_mime_type: Option<unsafe extern "C" fn(*mut AtkStreamableContent, c_int) -> *const c_char>,
    pub get_stream: Option<unsafe extern "C" fn(*mut AtkStreamableContent, *const c_char) -> *mut glib::GIOChannel>,
    pub get_uri: Option<unsafe extern "C" fn(*mut AtkStreamableContent, *const c_char) -> *const c_char>,
    pub pad1: AtkFunction,
    pub pad2: AtkFunction,
    pub pad3: AtkFunction,
}

#[repr(C)]
pub struct AtkTableCellIface {
    pub parent: gobject::GTypeInterface,
    pub get_column_span: Option<unsafe extern "C" fn(*mut AtkTableCell) -> c_int>,
    pub get_column_header_cells: Option<unsafe extern "C" fn(*mut AtkTableCell) -> *mut glib::GPtrArray>,
    pub get_position: Option<unsafe extern "C" fn(*mut AtkTableCell, *mut c_int, *mut c_int) -> gboolean>,
    pub get_row_span: Option<unsafe extern "C" fn(*mut AtkTableCell) -> c_int>,
    pub get_row_header_cells: Option<unsafe extern "C" fn(*mut AtkTableCell) -> *mut glib::GPtrArray>,
    pub get_row_column_span: Option<unsafe extern "C" fn(*mut AtkTableCell, *mut c_int, *mut c_int, *mut c_int, *mut c_int) -> gboolean>,
    pub get_table: Option<unsafe extern "C" fn(*mut AtkTableCell) -> *mut AtkObject>,
}

#[repr(C)]
pub struct AtkTableIface {
    pub parent: gobject::GTypeInterface,
    pub ref_at: Option<unsafe extern "C" fn(*mut AtkTable, c_int, c_int) -> *mut AtkObject>,
    pub get_index_at: Option<unsafe extern "C" fn(*mut AtkTable, c_int, c_int) -> c_int>,
    pub get_column_at_index: Option<unsafe extern "C" fn(*mut AtkTable, *mut *mut c_int) -> c_int>,
    pub get_row_at_index: Option<unsafe extern "C" fn(*mut AtkTable, *mut *mut c_int) -> c_int>,
    pub get_n_columns: Option<unsafe extern "C" fn(*mut AtkTable) -> c_int>,
    pub get_n_rows: Option<unsafe extern "C" fn(*mut AtkTable) -> c_int>,
    pub get_column_extent_at: Option<unsafe extern "C" fn(*mut AtkTable, c_int, c_int) -> c_int>,
    pub get_row_extent_at: Option<unsafe extern "C" fn(*mut AtkTable, c_int, c_int) -> c_int>,
    pub get_caption: Option<unsafe extern "C" fn(*mut AtkTable) -> *mut AtkObject>,
    pub get_column_description: Option<unsafe extern "C" fn(*mut AtkTable, c_int) -> *const c_char>,
    pub get_column_header: Option<unsafe extern "C" fn(*mut AtkTable, c_int) -> *mut AtkObject>,
    pub get_row_description: Option<unsafe extern "C" fn(*mut AtkTable, c_int) -> *const c_char>,
    pub get_row_header: Option<unsafe extern "C" fn(*mut AtkTable, c_int) -> *mut AtkObject>,
    pub get_summary: Option<unsafe extern "C" fn(*mut AtkTable) -> *mut AtkObject>,
    pub set_caption: Option<unsafe extern "C" fn(*mut AtkTable, *mut AtkObject)>,
    pub set_column_description: Option<unsafe extern "C" fn(*mut AtkTable, c_int, *const c_char)>,
    pub set_column_header: Option<unsafe extern "C" fn(*mut AtkTable, c_int, *mut AtkObject)>,
    pub set_row_description: Option<unsafe extern "C" fn(*mut AtkTable, c_int, *const c_char)>,
    pub set_row_header: Option<unsafe extern "C" fn(*mut AtkTable, c_int, *mut AtkObject)>,
    pub set_summary: Option<unsafe extern "C" fn(*mut AtkTable, *mut AtkObject)>,
    pub get_selected_columns: Option<unsafe extern "C" fn(*mut AtkTable, *mut *mut c_int) -> c_int>,
    pub get_selected_rows: Option<unsafe extern "C" fn(*mut AtkTable, *mut *mut c_int) -> c_int>,
    pub is_column_selected: Option<unsafe extern "C" fn(*mut AtkTable, c_int) -> gboolean>,
    pub is_row_selected: Option<unsafe extern "C" fn(*mut AtkTable, c_int) -> gboolean>,
    pub is_selected: Option<unsafe extern "C" fn(*mut AtkTable, c_int, c_int) -> gboolean>,
    pub add_row_selection: Option<unsafe extern "C" fn(*mut AtkTable, c_int) -> gboolean>,
    pub remove_row_selection: Option<unsafe extern "C" fn(*mut AtkTable, c_int) -> gboolean>,
    pub add_column_selection: Option<unsafe extern "C" fn(*mut AtkTable, c_int) -> gboolean>,
    pub remove_column_selection: Option<unsafe extern "C" fn(*mut AtkTable, c_int) -> gboolean>,
    pub row_inserted: Option<unsafe extern "C" fn(*mut AtkTable, c_int, c_int)>,
    pub column_inserted: Option<unsafe extern "C" fn(*mut AtkTable, c_int, c_int)>,
    pub row_deleted: Option<unsafe extern "C" fn(*mut AtkTable, c_int, c_int)>,
    pub column_deleted: Option<unsafe extern "C" fn(*mut AtkTable, c_int, c_int)>,
    pub row_reordered: Option<unsafe extern "C" fn(*mut AtkTable)>,
    pub column_reordered: Option<unsafe extern "C" fn(*mut AtkTable)>,
    pub model_changed: Option<unsafe extern "C" fn(*mut AtkTable)>,
}

#[repr(C)]
pub struct AtkTextIface {
    pub parent: gobject::GTypeInterface,
    pub get_text: Option<unsafe extern "C" fn(*mut AtkText, c_int, c_int) -> *mut c_char>,
    pub get_text_after_offset: Option<unsafe extern "C" fn(*mut AtkText, c_int, AtkTextBoundary, *mut c_int, *mut c_int) -> *mut c_char>,
    pub get_text_at_offset: Option<unsafe extern "C" fn(*mut AtkText, c_int, AtkTextBoundary, *mut c_int, *mut c_int) -> *mut c_char>,
    pub get_character_at_offset: Option<unsafe extern "C" fn(*mut AtkText, c_int) -> u32>,
    pub get_text_before_offset: Option<unsafe extern "C" fn(*mut AtkText, c_int, AtkTextBoundary, *mut c_int, *mut c_int) -> *mut c_char>,
    pub get_caret_offset: Option<unsafe extern "C" fn(*mut AtkText) -> c_int>,
    pub get_run_attributes: Option<unsafe extern "C" fn(*mut AtkText, c_int, *mut c_int, *mut c_int) -> *mut AtkAttributeSet>,
    pub get_default_attributes: Option<unsafe extern "C" fn(*mut AtkText) -> *mut AtkAttributeSet>,
    pub get_character_extents: Option<unsafe extern "C" fn(*mut AtkText, c_int, *mut c_int, *mut c_int, *mut c_int, *mut c_int, AtkCoordType)>,
    pub get_character_count: Option<unsafe extern "C" fn(*mut AtkText) -> c_int>,
    pub get_offset_at_point: Option<unsafe extern "C" fn(*mut AtkText, c_int, c_int, AtkCoordType) -> c_int>,
    pub get_n_selections: Option<unsafe extern "C" fn(*mut AtkText) -> c_int>,
    pub get_selection: Option<unsafe extern "C" fn(*mut AtkText, c_int, *mut c_int, *mut c_int) -> *mut c_char>,
    pub add_selection: Option<unsafe extern "C" fn(*mut AtkText, c_int, c_int) -> gboolean>,
    pub remove_selection: Option<unsafe extern "C" fn(*mut AtkText, c_int) -> gboolean>,
    pub set_selection: Option<unsafe extern "C" fn(*mut AtkText, c_int, c_int, c_int) -> gboolean>,
    pub set_caret_offset: Option<unsafe extern "C" fn(*mut AtkText, c_int) -> gboolean>,
    pub text_changed: Option<unsafe extern "C" fn(*mut AtkText, c_int, c_int)>,
    pub text_caret_moved: Option<unsafe extern "C" fn(*mut AtkText, c_int)>,
    pub text_selection_changed: Option<unsafe extern "C" fn(*mut AtkText)>,
    pub text_attributes_changed: Option<unsafe extern "C" fn(*mut AtkText)>,
    pub get_range_extents: Option<unsafe extern "C" fn(*mut AtkText, c_int, c_int, AtkCoordType, *mut AtkTextRectangle)>,
    pub get_bounded_ranges: Option<unsafe extern "C" fn(*mut AtkText, *mut AtkTextRectangle, AtkCoordType, AtkTextClipType, AtkTextClipType) -> *mut *mut AtkTextRange>,
    pub get_string_at_offset: Option<unsafe extern "C" fn(*mut AtkText, c_int, AtkTextGranularity, *mut c_int, *mut c_int) -> *mut c_char>,
}

#[repr(C)]
pub struct AtkTextRange {
    pub bounds: AtkTextRectangle,
    pub start_offset: c_int,
    pub end_offset: c_int,
    pub content: *mut c_char,
}

#[repr(C)]
pub struct AtkTextRectangle {
    pub x: c_int,
    pub y: c_int,
    pub width: c_int,
    pub height: c_int,
}

#[repr(C)]
pub struct AtkUtilClass {
    pub parent: gobject::GObjectClass,
    pub add_global_event_listener: Option<unsafe extern "C" fn(gobject::GSignalEmissionHook, *const c_char) -> c_uint>,
    pub remove_global_event_listener: Option<unsafe extern "C" fn(c_uint)>,
    pub add_key_event_listener: Option<unsafe extern "C" fn(AtkKeySnoopFunc, gpointer) -> c_uint>,
    pub remove_key_event_listener: Option<unsafe extern "C" fn(c_uint)>,
    pub get_root: Option<unsafe extern "C" fn() -> *mut AtkObject>,
    pub get_toolkit_name: Option<unsafe extern "C" fn() -> *const c_char>,
    pub get_toolkit_version: Option<unsafe extern "C" fn() -> *const c_char>,
}

#[repr(C)]
pub struct AtkValueIface {
    pub parent: gobject::GTypeInterface,
    pub get_current_value: Option<unsafe extern "C" fn(*mut AtkValue, *mut gobject::GValue)>,
    pub get_maximum_value: Option<unsafe extern "C" fn(*mut AtkValue, *mut gobject::GValue)>,
    pub get_minimum_value: Option<unsafe extern "C" fn(*mut AtkValue, *mut gobject::GValue)>,
    pub set_current_value: Option<unsafe extern "C" fn(*mut AtkValue, *const gobject::GValue) -> gboolean>,
    pub get_minimum_increment: Option<unsafe extern "C" fn(*mut AtkValue, *mut gobject::GValue)>,
    pub get_value_and_text: Option<unsafe extern "C" fn(*mut AtkValue, *mut c_double, *mut *mut c_char)>,
    pub get_range: Option<unsafe extern "C" fn(*mut AtkValue) -> *mut AtkRange>,
    pub get_increment: Option<unsafe extern "C" fn(*mut AtkValue) -> c_double>,
    pub get_sub_ranges: Option<unsafe extern "C" fn(*mut AtkValue) -> *mut glib::GSList>,
    pub set_value: Option<unsafe extern "C" fn(*mut AtkValue, c_double)>,
}

#[repr(C)]
pub struct AtkWindowIface {
    pub parent: gobject::GTypeInterface,
}


#[repr(C)]
pub struct AtkGObjectAccessible(c_void);
#[repr(C)]
pub struct AtkHyperlink(c_void);
#[repr(C)]
pub struct AtkMisc(c_void);
#[repr(C)]
pub struct AtkNoOpObject(c_void);
#[repr(C)]
pub struct AtkNoOpObjectFactory(c_void);
#[repr(C)]
pub struct AtkObject(c_void);
#[repr(C)]
pub struct AtkObjectFactory(c_void);
#[repr(C)]
pub struct AtkPlug(c_void);
#[repr(C)]
pub struct AtkRegistry(c_void);
#[repr(C)]
pub struct AtkRelation(c_void);
#[repr(C)]
pub struct AtkRelationSet(c_void);
#[repr(C)]
pub struct AtkSocket(c_void);
#[repr(C)]
pub struct AtkStateSet(c_void);
#[repr(C)]
pub struct AtkUtil(c_void);

#[repr(C)]
pub struct AtkAction(c_void);
#[repr(C)]
pub struct AtkComponent(c_void);
#[repr(C)]
pub struct AtkDocument(c_void);
#[repr(C)]
pub struct AtkEditableText(c_void);
#[repr(C)]
pub struct AtkHyperlinkImpl(c_void);
#[repr(C)]
pub struct AtkHypertext(c_void);
#[repr(C)]
pub struct AtkImage(c_void);
#[repr(C)]
pub struct AtkImplementorIface(c_void);
#[repr(C)]
pub struct AtkSelection(c_void);
#[repr(C)]
pub struct AtkStreamableContent(c_void);
#[repr(C)]
pub struct AtkTable(c_void);
#[repr(C)]
pub struct AtkTableCell(c_void);
#[repr(C)]
pub struct AtkText(c_void);
#[repr(C)]
pub struct AtkValue(c_void);
#[repr(C)]
pub struct AtkWindow(c_void);

extern "C" {

    //=========================================================================
    // AtkRelationType
    //=========================================================================
    pub fn atk_relation_type_for_name(name: *const c_char) -> AtkRelationType;
    pub fn atk_relation_type_get_name(type_: AtkRelationType) -> *const c_char;
    pub fn atk_relation_type_register(name: *const c_char) -> AtkRelationType;

    //=========================================================================
    // AtkRole
    //=========================================================================
    pub fn atk_role_for_name(name: *const c_char) -> AtkRole;
    pub fn atk_role_get_localized_name(role: AtkRole) -> *const c_char;
    pub fn atk_role_get_name(role: AtkRole) -> *const c_char;
    pub fn atk_role_register(name: *const c_char) -> AtkRole;

    //=========================================================================
    // AtkStateType
    //=========================================================================
    pub fn atk_state_type_for_name(name: *const c_char) -> AtkStateType;
    pub fn atk_state_type_get_name(type_: AtkStateType) -> *const c_char;
    pub fn atk_state_type_register(name: *const c_char) -> AtkStateType;

    //=========================================================================
    // AtkTextAttribute
    //=========================================================================
    pub fn atk_text_attribute_for_name(name: *const c_char) -> AtkTextAttribute;
    pub fn atk_text_attribute_get_name(attr: AtkTextAttribute) -> *const c_char;
    pub fn atk_text_attribute_get_value(attr: AtkTextAttribute, index_: c_int) -> *const c_char;
    pub fn atk_text_attribute_register(name: *const c_char) -> AtkTextAttribute;

    //=========================================================================
    // AtkValueType
    //=========================================================================
    pub fn atk_value_type_get_localized_name(value_type: AtkValueType) -> *const c_char;
    pub fn atk_value_type_get_name(value_type: AtkValueType) -> *const c_char;

    //=========================================================================
    // AtkAttribute
    //=========================================================================
    pub fn atk_attribute_set_free(attrib_set: *mut AtkAttributeSet);

    //=========================================================================
    // AtkImplementor
    //=========================================================================
    pub fn atk_implementor_ref_accessible(implementor: *mut AtkImplementor) -> *mut AtkObject;

    //=========================================================================
    // AtkRange
    //=========================================================================
    pub fn atk_range_get_type() -> GType;
    #[cfg(feature = "v2_12")]
    pub fn atk_range_new(lower_limit: c_double, upper_limit: c_double, description: *const c_char) -> *mut AtkRange;
    #[cfg(feature = "v2_12")]
    pub fn atk_range_copy(src: *mut AtkRange) -> *mut AtkRange;
    #[cfg(feature = "v2_12")]
    pub fn atk_range_free(range: *mut AtkRange);
    #[cfg(feature = "v2_12")]
    pub fn atk_range_get_description(range: *mut AtkRange) -> *const c_char;
    #[cfg(feature = "v2_12")]
    pub fn atk_range_get_lower_limit(range: *mut AtkRange) -> c_double;
    #[cfg(feature = "v2_12")]
    pub fn atk_range_get_upper_limit(range: *mut AtkRange) -> c_double;

    //=========================================================================
    // AtkRectangle
    //=========================================================================
    pub fn atk_rectangle_get_type() -> GType;

    //=========================================================================
    // AtkTextRange
    //=========================================================================
    pub fn atk_text_range_get_type() -> GType;

    //=========================================================================
    // AtkGObjectAccessible
    //=========================================================================
    pub fn atk_gobject_accessible_get_type() -> GType;
    pub fn atk_gobject_accessible_for_object(obj: *mut gobject::GObject) -> *mut AtkObject;
    pub fn atk_gobject_accessible_get_object(obj: *mut AtkGObjectAccessible) -> *mut gobject::GObject;

    //=========================================================================
    // AtkHyperlink
    //=========================================================================
    pub fn atk_hyperlink_get_type() -> GType;
    pub fn atk_hyperlink_get_end_index(link_: *mut AtkHyperlink) -> c_int;
    pub fn atk_hyperlink_get_n_anchors(link_: *mut AtkHyperlink) -> c_int;
    pub fn atk_hyperlink_get_object(link_: *mut AtkHyperlink, i: c_int) -> *mut AtkObject;
    pub fn atk_hyperlink_get_start_index(link_: *mut AtkHyperlink) -> c_int;
    pub fn atk_hyperlink_get_uri(link_: *mut AtkHyperlink, i: c_int) -> *mut c_char;
    pub fn atk_hyperlink_is_inline(link_: *mut AtkHyperlink) -> gboolean;
    pub fn atk_hyperlink_is_selected_link(link_: *mut AtkHyperlink) -> gboolean;
    pub fn atk_hyperlink_is_valid(link_: *mut AtkHyperlink) -> gboolean;

    //=========================================================================
    // AtkMisc
    //=========================================================================
    pub fn atk_misc_get_type() -> GType;
    pub fn atk_misc_get_instance() -> *const AtkMisc;
    pub fn atk_misc_threads_enter(misc: *mut AtkMisc);
    pub fn atk_misc_threads_leave(misc: *mut AtkMisc);

    //=========================================================================
    // AtkNoOpObject
    //=========================================================================
    pub fn atk_no_op_object_get_type() -> GType;
    pub fn atk_no_op_object_new(obj: *mut gobject::GObject) -> *mut AtkObject;

    //=========================================================================
    // AtkNoOpObjectFactory
    //=========================================================================
    pub fn atk_no_op_object_factory_get_type() -> GType;
    pub fn atk_no_op_object_factory_new() -> *mut AtkObjectFactory;

    //=========================================================================
    // AtkObject
    //=========================================================================
    pub fn atk_object_get_type() -> GType;
    pub fn atk_object_add_relationship(object: *mut AtkObject, relationship: AtkRelationType, target: *mut AtkObject) -> gboolean;
    pub fn atk_object_connect_property_change_handler(accessible: *mut AtkObject, handler: *mut AtkPropertyChangeHandler) -> c_uint;
    pub fn atk_object_get_attributes(accessible: *mut AtkObject) -> *mut AtkAttributeSet;
    pub fn atk_object_get_description(accessible: *mut AtkObject) -> *const c_char;
    pub fn atk_object_get_index_in_parent(accessible: *mut AtkObject) -> c_int;
    pub fn atk_object_get_layer(accessible: *mut AtkObject) -> AtkLayer;
    pub fn atk_object_get_mdi_zorder(accessible: *mut AtkObject) -> c_int;
    pub fn atk_object_get_n_accessible_children(accessible: *mut AtkObject) -> c_int;
    pub fn atk_object_get_name(accessible: *mut AtkObject) -> *const c_char;
    #[cfg(feature = "v2_8")]
    pub fn atk_object_get_object_locale(accessible: *mut AtkObject) -> *const c_char;
    pub fn atk_object_get_parent(accessible: *mut AtkObject) -> *mut AtkObject;
    pub fn atk_object_get_role(accessible: *mut AtkObject) -> AtkRole;
    pub fn atk_object_initialize(accessible: *mut AtkObject, data: gpointer);
    pub fn atk_object_notify_state_change(accessible: *mut AtkObject, state: AtkState, value: gboolean);
    pub fn atk_object_peek_parent(accessible: *mut AtkObject) -> *mut AtkObject;
    pub fn atk_object_ref_accessible_child(accessible: *mut AtkObject, i: c_int) -> *mut AtkObject;
    pub fn atk_object_ref_relation_set(accessible: *mut AtkObject) -> *mut AtkRelationSet;
    pub fn atk_object_ref_state_set(accessible: *mut AtkObject) -> *mut AtkStateSet;
    pub fn atk_object_remove_property_change_handler(accessible: *mut AtkObject, handler_id: c_uint);
    pub fn atk_object_remove_relationship(object: *mut AtkObject, relationship: AtkRelationType, target: *mut AtkObject) -> gboolean;
    pub fn atk_object_set_description(accessible: *mut AtkObject, description: *const c_char);
    pub fn atk_object_set_name(accessible: *mut AtkObject, name: *const c_char);
    pub fn atk_object_set_parent(accessible: *mut AtkObject, parent: *mut AtkObject);
    pub fn atk_object_set_role(accessible: *mut AtkObject, role: AtkRole);

    //=========================================================================
    // AtkObjectFactory
    //=========================================================================
    pub fn atk_object_factory_get_type() -> GType;
    pub fn atk_object_factory_create_accessible(factory: *mut AtkObjectFactory, obj: *mut gobject::GObject) -> *mut AtkObject;
    pub fn atk_object_factory_get_accessible_type(factory: *mut AtkObjectFactory) -> GType;
    pub fn atk_object_factory_invalidate(factory: *mut AtkObjectFactory);

    //=========================================================================
    // AtkPlug
    //=========================================================================
    pub fn atk_plug_get_type() -> GType;
    pub fn atk_plug_new() -> *mut AtkObject;
    pub fn atk_plug_get_id(plug: *mut AtkPlug) -> *mut c_char;

    //=========================================================================
    // AtkRegistry
    //=========================================================================
    pub fn atk_registry_get_type() -> GType;
    pub fn atk_registry_get_factory(registry: *mut AtkRegistry, type_: GType) -> *mut AtkObjectFactory;
    pub fn atk_registry_get_factory_type(registry: *mut AtkRegistry, type_: GType) -> GType;
    pub fn atk_registry_set_factory_type(registry: *mut AtkRegistry, type_: GType, factory_type: GType);

    //=========================================================================
    // AtkRelation
    //=========================================================================
    pub fn atk_relation_get_type() -> GType;
    pub fn atk_relation_new(targets: *mut *mut AtkObject, n_targets: c_int, relationship: AtkRelationType) -> *mut AtkRelation;
    pub fn atk_relation_add_target(relation: *mut AtkRelation, target: *mut AtkObject);
    pub fn atk_relation_get_relation_type(relation: *mut AtkRelation) -> AtkRelationType;
    pub fn atk_relation_get_target(relation: *mut AtkRelation) -> *mut glib::GPtrArray;
    pub fn atk_relation_remove_target(relation: *mut AtkRelation, target: *mut AtkObject) -> gboolean;

    //=========================================================================
    // AtkRelationSet
    //=========================================================================
    pub fn atk_relation_set_get_type() -> GType;
    pub fn atk_relation_set_new() -> *mut AtkRelationSet;
    pub fn atk_relation_set_add(set: *mut AtkRelationSet, relation: *mut AtkRelation);
    pub fn atk_relation_set_add_relation_by_type(set: *mut AtkRelationSet, relationship: AtkRelationType, target: *mut AtkObject);
    pub fn atk_relation_set_contains(set: *mut AtkRelationSet, relationship: AtkRelationType) -> gboolean;
    pub fn atk_relation_set_contains_target(set: *mut AtkRelationSet, relationship: AtkRelationType, target: *mut AtkObject) -> gboolean;
    pub fn atk_relation_set_get_n_relations(set: *mut AtkRelationSet) -> c_int;
    pub fn atk_relation_set_get_relation(set: *mut AtkRelationSet, i: c_int) -> *mut AtkRelation;
    pub fn atk_relation_set_get_relation_by_type(set: *mut AtkRelationSet, relationship: AtkRelationType) -> *mut AtkRelation;
    pub fn atk_relation_set_remove(set: *mut AtkRelationSet, relation: *mut AtkRelation);

    //=========================================================================
    // AtkSocket
    //=========================================================================
    pub fn atk_socket_get_type() -> GType;
    pub fn atk_socket_new() -> *mut AtkObject;
    pub fn atk_socket_embed(obj: *mut AtkSocket, plug_id: *mut c_char);
    pub fn atk_socket_is_occupied(obj: *mut AtkSocket) -> gboolean;

    //=========================================================================
    // AtkStateSet
    //=========================================================================
    pub fn atk_state_set_get_type() -> GType;
    pub fn atk_state_set_new() -> *mut AtkStateSet;
    pub fn atk_state_set_add_state(set: *mut AtkStateSet, type_: AtkStateType) -> gboolean;
    pub fn atk_state_set_add_states(set: *mut AtkStateSet, types: *mut AtkStateType, n_types: c_int);
    pub fn atk_state_set_and_sets(set: *mut AtkStateSet, compare_set: *mut AtkStateSet) -> *mut AtkStateSet;
    pub fn atk_state_set_clear_states(set: *mut AtkStateSet);
    pub fn atk_state_set_contains_state(set: *mut AtkStateSet, type_: AtkStateType) -> gboolean;
    pub fn atk_state_set_contains_states(set: *mut AtkStateSet, types: *mut AtkStateType, n_types: c_int) -> gboolean;
    pub fn atk_state_set_is_empty(set: *mut AtkStateSet) -> gboolean;
    pub fn atk_state_set_or_sets(set: *mut AtkStateSet, compare_set: *mut AtkStateSet) -> *mut AtkStateSet;
    pub fn atk_state_set_remove_state(set: *mut AtkStateSet, type_: AtkStateType) -> gboolean;
    pub fn atk_state_set_xor_sets(set: *mut AtkStateSet, compare_set: *mut AtkStateSet) -> *mut AtkStateSet;

    //=========================================================================
    // AtkUtil
    //=========================================================================
    pub fn atk_util_get_type() -> GType;

    //=========================================================================
    // AtkAction
    //=========================================================================
    pub fn atk_action_get_type() -> GType;
    pub fn atk_action_do_action(action: *mut AtkAction, i: c_int) -> gboolean;
    pub fn atk_action_get_description(action: *mut AtkAction, i: c_int) -> *const c_char;
    pub fn atk_action_get_keybinding(action: *mut AtkAction, i: c_int) -> *const c_char;
    pub fn atk_action_get_localized_name(action: *mut AtkAction, i: c_int) -> *const c_char;
    pub fn atk_action_get_n_actions(action: *mut AtkAction) -> c_int;
    pub fn atk_action_get_name(action: *mut AtkAction, i: c_int) -> *const c_char;
    pub fn atk_action_set_description(action: *mut AtkAction, i: c_int, desc: *const c_char) -> gboolean;

    //=========================================================================
    // AtkComponent
    //=========================================================================
    pub fn atk_component_get_type() -> GType;
    pub fn atk_component_add_focus_handler(component: *mut AtkComponent, handler: AtkFocusHandler) -> c_uint;
    pub fn atk_component_contains(component: *mut AtkComponent, x: c_int, y: c_int, coord_type: AtkCoordType) -> gboolean;
    pub fn atk_component_get_alpha(component: *mut AtkComponent) -> c_double;
    pub fn atk_component_get_extents(component: *mut AtkComponent, x: *mut c_int, y: *mut c_int, width: *mut c_int, height: *mut c_int, coord_type: AtkCoordType);
    pub fn atk_component_get_layer(component: *mut AtkComponent) -> AtkLayer;
    pub fn atk_component_get_mdi_zorder(component: *mut AtkComponent) -> c_int;
    pub fn atk_component_get_position(component: *mut AtkComponent, x: *mut c_int, y: *mut c_int, coord_type: AtkCoordType);
    pub fn atk_component_get_size(component: *mut AtkComponent, width: *mut c_int, height: *mut c_int);
    pub fn atk_component_grab_focus(component: *mut AtkComponent) -> gboolean;
    pub fn atk_component_ref_accessible_at_point(component: *mut AtkComponent, x: c_int, y: c_int, coord_type: AtkCoordType) -> *mut AtkObject;
    pub fn atk_component_remove_focus_handler(component: *mut AtkComponent, handler_id: c_uint);
    pub fn atk_component_set_extents(component: *mut AtkComponent, x: c_int, y: c_int, width: c_int, height: c_int, coord_type: AtkCoordType) -> gboolean;
    pub fn atk_component_set_position(component: *mut AtkComponent, x: c_int, y: c_int, coord_type: AtkCoordType) -> gboolean;
    pub fn atk_component_set_size(component: *mut AtkComponent, width: c_int, height: c_int) -> gboolean;

    //=========================================================================
    // AtkDocument
    //=========================================================================
    pub fn atk_document_get_type() -> GType;
    pub fn atk_document_get_attribute_value(document: *mut AtkDocument, attribute_name: *const c_char) -> *const c_char;
    pub fn atk_document_get_attributes(document: *mut AtkDocument) -> *mut AtkAttributeSet;
    #[cfg(feature = "v2_12")]
    pub fn atk_document_get_current_page_number(document: *mut AtkDocument) -> c_int;
    pub fn atk_document_get_document(document: *mut AtkDocument) -> gpointer;
    pub fn atk_document_get_document_type(document: *mut AtkDocument) -> *const c_char;
    pub fn atk_document_get_locale(document: *mut AtkDocument) -> *const c_char;
    #[cfg(feature = "v2_12")]
    pub fn atk_document_get_page_count(document: *mut AtkDocument) -> c_int;
    pub fn atk_document_set_attribute_value(document: *mut AtkDocument, attribute_name: *const c_char, attribute_value: *const c_char) -> gboolean;

    //=========================================================================
    // AtkEditableText
    //=========================================================================
    pub fn atk_editable_text_get_type() -> GType;
    pub fn atk_editable_text_copy_text(text: *mut AtkEditableText, start_pos: c_int, end_pos: c_int);
    pub fn atk_editable_text_cut_text(text: *mut AtkEditableText, start_pos: c_int, end_pos: c_int);
    pub fn atk_editable_text_delete_text(text: *mut AtkEditableText, start_pos: c_int, end_pos: c_int);
    pub fn atk_editable_text_insert_text(text: *mut AtkEditableText, string: *const c_char, length: c_int, position: *mut c_int);
    pub fn atk_editable_text_paste_text(text: *mut AtkEditableText, position: c_int);
    pub fn atk_editable_text_set_run_attributes(text: *mut AtkEditableText, attrib_set: *mut AtkAttributeSet, start_offset: c_int, end_offset: c_int) -> gboolean;
    pub fn atk_editable_text_set_text_contents(text: *mut AtkEditableText, string: *const c_char);

    //=========================================================================
    // AtkHyperlinkImpl
    //=========================================================================
    pub fn atk_hyperlink_impl_get_type() -> GType;
    pub fn atk_hyperlink_impl_get_hyperlink(impl_: *mut AtkHyperlinkImpl) -> *mut AtkHyperlink;

    //=========================================================================
    // AtkHypertext
    //=========================================================================
    pub fn atk_hypertext_get_type() -> GType;
    pub fn atk_hypertext_get_link(hypertext: *mut AtkHypertext, link_index: c_int) -> *mut AtkHyperlink;
    pub fn atk_hypertext_get_link_index(hypertext: *mut AtkHypertext, char_index: c_int) -> c_int;
    pub fn atk_hypertext_get_n_links(hypertext: *mut AtkHypertext) -> c_int;

    //=========================================================================
    // AtkImage
    //=========================================================================
    pub fn atk_image_get_type() -> GType;
    pub fn atk_image_get_image_description(image: *mut AtkImage) -> *const c_char;
    pub fn atk_image_get_image_locale(image: *mut AtkImage) -> *const c_char;
    pub fn atk_image_get_image_position(image: *mut AtkImage, x: *mut c_int, y: *mut c_int, coord_type: AtkCoordType);
    pub fn atk_image_get_image_size(image: *mut AtkImage, width: *mut c_int, height: *mut c_int);
    pub fn atk_image_set_image_description(image: *mut AtkImage, description: *const c_char) -> gboolean;

    //=========================================================================
    // AtkImplementorIface
    //=========================================================================
    pub fn atk_implementor_get_type() -> GType;

    //=========================================================================
    // AtkSelection
    //=========================================================================
    pub fn atk_selection_get_type() -> GType;
    pub fn atk_selection_add_selection(selection: *mut AtkSelection, i: c_int) -> gboolean;
    pub fn atk_selection_clear_selection(selection: *mut AtkSelection) -> gboolean;
    pub fn atk_selection_get_selection_count(selection: *mut AtkSelection) -> c_int;
    pub fn atk_selection_is_child_selected(selection: *mut AtkSelection, i: c_int) -> gboolean;
    pub fn atk_selection_ref_selection(selection: *mut AtkSelection, i: c_int) -> *mut AtkObject;
    pub fn atk_selection_remove_selection(selection: *mut AtkSelection, i: c_int) -> gboolean;
    pub fn atk_selection_select_all_selection(selection: *mut AtkSelection) -> gboolean;

    //=========================================================================
    // AtkStreamableContent
    //=========================================================================
    pub fn atk_streamable_content_get_type() -> GType;
    pub fn atk_streamable_content_get_mime_type(streamable: *mut AtkStreamableContent, i: c_int) -> *const c_char;
    pub fn atk_streamable_content_get_n_mime_types(streamable: *mut AtkStreamableContent) -> c_int;
    pub fn atk_streamable_content_get_stream(streamable: *mut AtkStreamableContent, mime_type: *const c_char) -> *mut glib::GIOChannel;
    pub fn atk_streamable_content_get_uri(streamable: *mut AtkStreamableContent, mime_type: *const c_char) -> *const c_char;

    //=========================================================================
    // AtkTable
    //=========================================================================
    pub fn atk_table_get_type() -> GType;
    pub fn atk_table_add_column_selection(table: *mut AtkTable, column: c_int) -> gboolean;
    pub fn atk_table_add_row_selection(table: *mut AtkTable, row: c_int) -> gboolean;
    pub fn atk_table_get_caption(table: *mut AtkTable) -> *mut AtkObject;
    pub fn atk_table_get_column_at_index(table: *mut AtkTable, index_: c_int) -> c_int;
    pub fn atk_table_get_column_description(table: *mut AtkTable, column: c_int) -> *const c_char;
    pub fn atk_table_get_column_extent_at(table: *mut AtkTable, row: c_int, column: c_int) -> c_int;
    pub fn atk_table_get_column_header(table: *mut AtkTable, column: c_int) -> *mut AtkObject;
    pub fn atk_table_get_index_at(table: *mut AtkTable, row: c_int, column: c_int) -> c_int;
    pub fn atk_table_get_n_columns(table: *mut AtkTable) -> c_int;
    pub fn atk_table_get_n_rows(table: *mut AtkTable) -> c_int;
    pub fn atk_table_get_row_at_index(table: *mut AtkTable, index_: c_int) -> c_int;
    pub fn atk_table_get_row_description(table: *mut AtkTable, row: c_int) -> *const c_char;
    pub fn atk_table_get_row_extent_at(table: *mut AtkTable, row: c_int, column: c_int) -> c_int;
    pub fn atk_table_get_row_header(table: *mut AtkTable, row: c_int) -> *mut AtkObject;
    pub fn atk_table_get_selected_columns(table: *mut AtkTable, selected: *mut *mut c_int) -> c_int;
    pub fn atk_table_get_selected_rows(table: *mut AtkTable, selected: *mut *mut c_int) -> c_int;
    pub fn atk_table_get_summary(table: *mut AtkTable) -> *mut AtkObject;
    pub fn atk_table_is_column_selected(table: *mut AtkTable, column: c_int) -> gboolean;
    pub fn atk_table_is_row_selected(table: *mut AtkTable, row: c_int) -> gboolean;
    pub fn atk_table_is_selected(table: *mut AtkTable, row: c_int, column: c_int) -> gboolean;
    pub fn atk_table_ref_at(table: *mut AtkTable, row: c_int, column: c_int) -> *mut AtkObject;
    pub fn atk_table_remove_column_selection(table: *mut AtkTable, column: c_int) -> gboolean;
    pub fn atk_table_remove_row_selection(table: *mut AtkTable, row: c_int) -> gboolean;
    pub fn atk_table_set_caption(table: *mut AtkTable, caption: *mut AtkObject);
    pub fn atk_table_set_column_description(table: *mut AtkTable, column: c_int, description: *const c_char);
    pub fn atk_table_set_column_header(table: *mut AtkTable, column: c_int, header: *mut AtkObject);
    pub fn atk_table_set_row_description(table: *mut AtkTable, row: c_int, description: *const c_char);
    pub fn atk_table_set_row_header(table: *mut AtkTable, row: c_int, header: *mut AtkObject);
    pub fn atk_table_set_summary(table: *mut AtkTable, accessible: *mut AtkObject);

    //=========================================================================
    // AtkTableCell
    //=========================================================================
    pub fn atk_table_cell_get_type() -> GType;
    #[cfg(feature = "v2_12")]
    pub fn atk_table_cell_get_column_header_cells(cell: *mut AtkTableCell) -> *mut glib::GPtrArray;
    #[cfg(feature = "v2_12")]
    pub fn atk_table_cell_get_column_span(cell: *mut AtkTableCell) -> c_int;
    #[cfg(feature = "v2_12")]
    pub fn atk_table_cell_get_position(cell: *mut AtkTableCell, row: *mut c_int, column: *mut c_int) -> gboolean;
    #[cfg(feature = "v2_12")]
    pub fn atk_table_cell_get_row_column_span(cell: *mut AtkTableCell, row: *mut c_int, column: *mut c_int, row_span: *mut c_int, column_span: *mut c_int) -> gboolean;
    #[cfg(feature = "v2_12")]
    pub fn atk_table_cell_get_row_header_cells(cell: *mut AtkTableCell) -> *mut glib::GPtrArray;
    #[cfg(feature = "v2_12")]
    pub fn atk_table_cell_get_row_span(cell: *mut AtkTableCell) -> c_int;
    #[cfg(feature = "v2_12")]
    pub fn atk_table_cell_get_table(cell: *mut AtkTableCell) -> *mut AtkObject;

    //=========================================================================
    // AtkText
    //=========================================================================
    pub fn atk_text_get_type() -> GType;
    pub fn atk_text_free_ranges(ranges: *mut *mut AtkTextRange);
    pub fn atk_text_add_selection(text: *mut AtkText, start_offset: c_int, end_offset: c_int) -> gboolean;
    pub fn atk_text_get_bounded_ranges(text: *mut AtkText, rect: *mut AtkTextRectangle, coord_type: AtkCoordType, x_clip_type: AtkTextClipType, y_clip_type: AtkTextClipType) -> *mut *mut AtkTextRange;
    pub fn atk_text_get_caret_offset(text: *mut AtkText) -> c_int;
    pub fn atk_text_get_character_at_offset(text: *mut AtkText, offset: c_int) -> u32;
    pub fn atk_text_get_character_count(text: *mut AtkText) -> c_int;
    pub fn atk_text_get_character_extents(text: *mut AtkText, offset: c_int, x: *mut c_int, y: *mut c_int, width: *mut c_int, height: *mut c_int, coords: AtkCoordType);
    pub fn atk_text_get_default_attributes(text: *mut AtkText) -> *mut AtkAttributeSet;
    pub fn atk_text_get_n_selections(text: *mut AtkText) -> c_int;
    pub fn atk_text_get_offset_at_point(text: *mut AtkText, x: c_int, y: c_int, coords: AtkCoordType) -> c_int;
    pub fn atk_text_get_range_extents(text: *mut AtkText, start_offset: c_int, end_offset: c_int, coord_type: AtkCoordType, rect: *mut AtkTextRectangle);
    pub fn atk_text_get_run_attributes(text: *mut AtkText, offset: c_int, start_offset: *mut c_int, end_offset: *mut c_int) -> *mut AtkAttributeSet;
    pub fn atk_text_get_selection(text: *mut AtkText, selection_num: c_int, start_offset: *mut c_int, end_offset: *mut c_int) -> *mut c_char;
    #[cfg(feature = "v2_10")]
    pub fn atk_text_get_string_at_offset(text: *mut AtkText, offset: c_int, granularity: AtkTextGranularity, start_offset: *mut c_int, end_offset: *mut c_int) -> *mut c_char;
    pub fn atk_text_get_text(text: *mut AtkText, start_offset: c_int, end_offset: c_int) -> *mut c_char;
    pub fn atk_text_get_text_after_offset(text: *mut AtkText, offset: c_int, boundary_type: AtkTextBoundary, start_offset: *mut c_int, end_offset: *mut c_int) -> *mut c_char;
    pub fn atk_text_get_text_at_offset(text: *mut AtkText, offset: c_int, boundary_type: AtkTextBoundary, start_offset: *mut c_int, end_offset: *mut c_int) -> *mut c_char;
    pub fn atk_text_get_text_before_offset(text: *mut AtkText, offset: c_int, boundary_type: AtkTextBoundary, start_offset: *mut c_int, end_offset: *mut c_int) -> *mut c_char;
    pub fn atk_text_remove_selection(text: *mut AtkText, selection_num: c_int) -> gboolean;
    pub fn atk_text_set_caret_offset(text: *mut AtkText, offset: c_int) -> gboolean;
    pub fn atk_text_set_selection(text: *mut AtkText, selection_num: c_int, start_offset: c_int, end_offset: c_int) -> gboolean;

    //=========================================================================
    // AtkValue
    //=========================================================================
    pub fn atk_value_get_type() -> GType;
    pub fn atk_value_get_current_value(obj: *mut AtkValue, value: *mut gobject::GValue);
    #[cfg(feature = "v2_12")]
    pub fn atk_value_get_increment(obj: *mut AtkValue) -> c_double;
    pub fn atk_value_get_maximum_value(obj: *mut AtkValue, value: *mut gobject::GValue);
    pub fn atk_value_get_minimum_increment(obj: *mut AtkValue, value: *mut gobject::GValue);
    pub fn atk_value_get_minimum_value(obj: *mut AtkValue, value: *mut gobject::GValue);
    #[cfg(feature = "v2_12")]
    pub fn atk_value_get_range(obj: *mut AtkValue) -> *mut AtkRange;
    #[cfg(feature = "v2_12")]
    pub fn atk_value_get_sub_ranges(obj: *mut AtkValue) -> *mut glib::GSList;
    #[cfg(feature = "v2_12")]
    pub fn atk_value_get_value_and_text(obj: *mut AtkValue, value: *mut c_double, text: *mut *mut c_char);
    pub fn atk_value_set_current_value(obj: *mut AtkValue, value: *const gobject::GValue) -> gboolean;
    #[cfg(feature = "v2_12")]
    pub fn atk_value_set_value(obj: *mut AtkValue, new_value: c_double);

    //=========================================================================
    // AtkWindow
    //=========================================================================
    pub fn atk_window_get_type() -> GType;

    //=========================================================================
    // Other functions
    //=========================================================================
    pub fn atk_add_focus_tracker(focus_tracker: AtkEventListener) -> c_uint;
    pub fn atk_add_global_event_listener(listener: gobject::GSignalEmissionHook, event_type: *const c_char) -> c_uint;
    pub fn atk_add_key_event_listener(listener: AtkKeySnoopFunc, data: gpointer) -> c_uint;
    pub fn atk_focus_tracker_init(init: AtkEventListenerInit);
    pub fn atk_focus_tracker_notify(object: *mut AtkObject);
    #[cfg(feature = "v2_8")]
    pub fn atk_get_binary_age() -> c_uint;
    pub fn atk_get_default_registry() -> *mut AtkRegistry;
    pub fn atk_get_focus_object() -> *mut AtkObject;
    #[cfg(feature = "v2_8")]
    pub fn atk_get_interface_age() -> c_uint;
    #[cfg(feature = "v2_8")]
    pub fn atk_get_major_version() -> c_uint;
    #[cfg(feature = "v2_8")]
    pub fn atk_get_micro_version() -> c_uint;
    #[cfg(feature = "v2_8")]
    pub fn atk_get_minor_version() -> c_uint;
    pub fn atk_get_root() -> *mut AtkObject;
    pub fn atk_get_toolkit_name() -> *const c_char;
    pub fn atk_get_toolkit_version() -> *const c_char;
    pub fn atk_get_version() -> *const c_char;
    pub fn atk_remove_focus_tracker(tracker_id: c_uint);
    pub fn atk_remove_global_event_listener(listener_id: c_uint);
    pub fn atk_remove_key_event_listener(listener_id: c_uint);

}
