1 /*
2  * This file is part of gtkD.
3  *
4  * gtkD is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License
6  * as published by the Free Software Foundation; either version 3
7  * of the License, or (at your option) any later version, with
8  * some exceptions, please read the COPYING file.
9  *
10  * gtkD is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with gtkD; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
18  */
19 
20 // generated automatically - do not change
21 // find conversion definition on APILookup.txt
22 // implement new conversion functionalities on the wrap.utils pakage
23 
24 
25 module atk.c.types;
26 
27 public import glib.c.types;
28 public import gobject.c.types;
29 
30 
31 /**
32  * This is a singly-linked list (a #GSList) of #AtkAttribute. It is
33  * used by atk_text_get_run_attributes(),
34  * atk_text_get_default_attributes(),
35  * atk_editable_text_set_run_attributes(),
36  * atk_document_get_attributes() and atk_object_get_attributes()
37  */
38 public alias GSList AtkAttributeSet;
39 
40 public alias ulong AtkState;
41 
42 /**
43  * Specifies how xy coordinates are to be interpreted. Used by functions such
44  * as atk_component_get_position() and atk_text_get_character_extents()
45  */
46 public enum AtkCoordType
47 {
48 	/**
49 	 * specifies xy coordinates relative to the screen
50 	 */
51 	SCREEN = 0,
52 	/**
53 	 * specifies xy coordinates relative to the widget's
54 	 * top-level window
55 	 */
56 	WINDOW = 1,
57 	/**
58 	 * specifies xy coordinates relative to the widget's
59 	 * immediate parent. Since: 2.30
60 	 */
61 	PARENT = 2,
62 }
63 alias AtkCoordType CoordType;
64 
65 /**
66  * Describes the type of link
67  */
68 public enum AtkHyperlinkStateFlags
69 {
70 	/**
71 	 * Link is inline
72 	 */
73 	INLINE = 1,
74 }
75 alias AtkHyperlinkStateFlags HyperlinkStateFlags;
76 
77 /**
78  * Specifies the type of a keyboard evemt.
79  */
80 public enum AtkKeyEventType
81 {
82 	/**
83 	 * specifies a key press event
84 	 */
85 	PRESS = 0,
86 	/**
87 	 * specifies a key release event
88 	 */
89 	RELEASE = 1,
90 	/**
91 	 * Not a valid value; specifies end of enumeration
92 	 */
93 	LAST_DEFINED = 2,
94 }
95 alias AtkKeyEventType KeyEventType;
96 
97 /**
98  * Describes the layer of a component
99  *
100  * These enumerated "layer values" are used when determining which UI
101  * rendering layer a component is drawn into, which can help in making
102  * determinations of when components occlude one another.
103  */
104 public enum AtkLayer
105 {
106 	/**
107 	 * The object does not have a layer
108 	 */
109 	INVALID = 0,
110 	/**
111 	 * This layer is reserved for the desktop background
112 	 */
113 	BACKGROUND = 1,
114 	/**
115 	 * This layer is used for Canvas components
116 	 */
117 	CANVAS = 2,
118 	/**
119 	 * This layer is normally used for components
120 	 */
121 	WIDGET = 3,
122 	/**
123 	 * This layer is used for layered components
124 	 */
125 	MDI = 4,
126 	/**
127 	 * This layer is used for popup components, such as menus
128 	 */
129 	POPUP = 5,
130 	/**
131 	 * This layer is reserved for future use.
132 	 */
133 	OVERLAY = 6,
134 	/**
135 	 * This layer is used for toplevel windows.
136 	 */
137 	WINDOW = 7,
138 }
139 alias AtkLayer Layer;
140 
141 /**
142  * Describes the type of the relation
143  */
144 public enum AtkRelationType
145 {
146 	/**
147 	 * Not used, represens "no relationship" or an error condition.
148 	 */
149 	NULL = 0,
150 	/**
151 	 * Indicates an object controlled by one or more target objects.
152 	 */
153 	CONTROLLED_BY = 1,
154 	/**
155 	 * Indicates an object is an controller for one or more target objects.
156 	 */
157 	CONTROLLER_FOR = 2,
158 	/**
159 	 * Indicates an object is a label for one or more target objects.
160 	 */
161 	LABEL_FOR = 3,
162 	/**
163 	 * Indicates an object is labelled by one or more target objects.
164 	 */
165 	LABELLED_BY = 4,
166 	/**
167 	 * Indicates an object is a member of a group of one or more target objects.
168 	 */
169 	MEMBER_OF = 5,
170 	/**
171 	 * Indicates an object is a cell in a treetable which is displayed because a cell in the same column is expanded and identifies that cell.
172 	 */
173 	NODE_CHILD_OF = 6,
174 	/**
175 	 * Indicates that the object has content that flows logically to another
176 	 * AtkObject in a sequential way, (for instance text-flow).
177 	 */
178 	FLOWS_TO = 7,
179 	/**
180 	 * Indicates that the object has content that flows logically from
181 	 * another AtkObject in a sequential way, (for instance text-flow).
182 	 */
183 	FLOWS_FROM = 8,
184 	/**
185 	 * Indicates a subwindow attached to a component but otherwise has no connection in  the UI heirarchy to that component.
186 	 */
187 	SUBWINDOW_OF = 9,
188 	/**
189 	 * Indicates that the object visually embeds
190 	 * another object's content, i.e. this object's content flows around
191 	 * another's content.
192 	 */
193 	EMBEDS = 10,
194 	/**
195 	 * Reciprocal of %ATK_RELATION_EMBEDS, indicates that
196 	 * this object's content is visualy embedded in another object.
197 	 */
198 	EMBEDDED_BY = 11,
199 	/**
200 	 * Indicates that an object is a popup for another object.
201 	 */
202 	POPUP_FOR = 12,
203 	/**
204 	 * Indicates that an object is a parent window of another object.
205 	 */
206 	PARENT_WINDOW_OF = 13,
207 	/**
208 	 * Reciprocal of %ATK_RELATION_DESCRIPTION_FOR. Indicates that one
209 	 * or more target objects provide descriptive information about this object. This relation
210 	 * type is most appropriate for information that is not essential as its presentation may
211 	 * be user-configurable and/or limited to an on-demand mechanism such as an assistive
212 	 * technology command. For brief, essential information such as can be found in a widget's
213 	 * on-screen label, use %ATK_RELATION_LABELLED_BY. For an on-screen error message, use
214 	 * %ATK_RELATION_ERROR_MESSAGE. For lengthy extended descriptive information contained in
215 	 * an on-screen object, consider using %ATK_RELATION_DETAILS as assistive technologies may
216 	 * provide a means for the user to navigate to objects containing detailed descriptions so
217 	 * that their content can be more closely reviewed.
218 	 */
219 	DESCRIBED_BY = 14,
220 	/**
221 	 * Reciprocal of %ATK_RELATION_DESCRIBED_BY. Indicates that this
222 	 * object provides descriptive information about the target object(s). See also
223 	 * %ATK_RELATION_DETAILS_FOR and %ATK_RELATION_ERROR_FOR.
224 	 */
225 	DESCRIPTION_FOR = 15,
226 	/**
227 	 * Indicates an object is a cell in a treetable and is expanded to display other cells in the same column.
228 	 */
229 	NODE_PARENT_OF = 16,
230 	/**
231 	 * Reciprocal of %ATK_RELATION_DETAILS_FOR. Indicates that this object
232 	 * has a detailed or extended description, the contents of which can be found in the target
233 	 * object(s). This relation type is most appropriate for information that is sufficiently
234 	 * lengthy as to make navigation to the container of that information desirable. For less
235 	 * verbose information suitable for announcement only, see %ATK_RELATION_DESCRIBED_BY. If
236 	 * the detailed information describes an error condition, %ATK_RELATION_ERROR_FOR should be
237 	 * used instead. @Since: ATK-2.26.
238 	 */
239 	DETAILS = 17,
240 	/**
241 	 * Reciprocal of %ATK_RELATION_DETAILS. Indicates that this object
242 	 * provides a detailed or extended description about the target object(s). See also
243 	 * %ATK_RELATION_DESCRIPTION_FOR and %ATK_RELATION_ERROR_FOR. @Since: ATK-2.26.
244 	 */
245 	DETAILS_FOR = 18,
246 	/**
247 	 * Reciprocal of %ATK_RELATION_ERROR_FOR. Indicates that this object
248 	 * has one or more errors, the nature of which is described in the contents of the target
249 	 * object(s). Objects that have this relation type should also contain %ATK_STATE_INVALID_ENTRY
250 	 * in their #AtkStateSet. @Since: ATK-2.26.
251 	 */
252 	ERROR_MESSAGE = 19,
253 	/**
254 	 * Reciprocal of %ATK_RELATION_ERROR_MESSAGE. Indicates that this object
255 	 * contains an error message describing an invalid condition in the target object(s). @Since:
256 	 * ATK_2.26.
257 	 */
258 	ERROR_FOR = 20,
259 	/**
260 	 * Not used, this value indicates the end of the enumeration.
261 	 */
262 	LAST_DEFINED = 21,
263 }
264 alias AtkRelationType RelationType;
265 
266 /**
267  * Describes the role of an object
268  *
269  * These are the built-in enumerated roles that UI components can have
270  * in ATK.  Other roles may be added at runtime, so an AtkRole >=
271  * %ATK_ROLE_LAST_DEFINED is not necessarily an error.
272  */
273 public enum AtkRole
274 {
275 	/**
276 	 * Invalid role
277 	 */
278 	INVALID = 0,
279 	/**
280 	 * A label which represents an accelerator
281 	 */
282 	ACCELERATOR_LABEL = 1,
283 	/**
284 	 * An object which is an alert to the user. Assistive Technologies typically respond to ATK_ROLE_ALERT by reading the entire onscreen contents of containers advertising this role.  Should be used for warning dialogs, etc.
285 	 */
286 	ALERT = 2,
287 	/**
288 	 * An object which is an animated image
289 	 */
290 	ANIMATION = 3,
291 	/**
292 	 * An arrow in one of the four cardinal directions
293 	 */
294 	ARROW = 4,
295 	/**
296 	 * An object that displays a calendar and allows the user to select a date
297 	 */
298 	CALENDAR = 5,
299 	/**
300 	 * An object that can be drawn into and is used to trap events
301 	 */
302 	CANVAS = 6,
303 	/**
304 	 * A choice that can be checked or unchecked and provides a separate indicator for the current state
305 	 */
306 	CHECK_BOX = 7,
307 	/**
308 	 * A menu item with a check box
309 	 */
310 	CHECK_MENU_ITEM = 8,
311 	/**
312 	 * A specialized dialog that lets the user choose a color
313 	 */
314 	COLOR_CHOOSER = 9,
315 	/**
316 	 * The header for a column of data
317 	 */
318 	COLUMN_HEADER = 10,
319 	/**
320 	 * A collapsible list of choices the user can select from
321 	 */
322 	COMBO_BOX = 11,
323 	/**
324 	 * An object whose purpose is to allow a user to edit a date
325 	 */
326 	DATE_EDITOR = 12,
327 	/**
328 	 * An inconifed internal frame within a DESKTOP_PANE
329 	 */
330 	DESKTOP_ICON = 13,
331 	/**
332 	 * A pane that supports internal frames and iconified versions of those internal frames
333 	 */
334 	DESKTOP_FRAME = 14,
335 	/**
336 	 * An object whose purpose is to allow a user to set a value
337 	 */
338 	DIAL = 15,
339 	/**
340 	 * A top level window with title bar and a border
341 	 */
342 	DIALOG = 16,
343 	/**
344 	 * A pane that allows the user to navigate through and select the contents of a directory
345 	 */
346 	DIRECTORY_PANE = 17,
347 	/**
348 	 * An object used for drawing custom user interface elements
349 	 */
350 	DRAWING_AREA = 18,
351 	/**
352 	 * A specialized dialog that lets the user choose a file
353 	 */
354 	FILE_CHOOSER = 19,
355 	/**
356 	 * A object that fills up space in a user interface
357 	 */
358 	FILLER = 20,
359 	/**
360 	 * A specialized dialog that lets the user choose a font
361 	 */
362 	FONT_CHOOSER = 21,
363 	/**
364 	 * A top level window with a title bar, border, menubar, etc.
365 	 */
366 	FRAME = 22,
367 	/**
368 	 * A pane that is guaranteed to be painted on top of all panes beneath it
369 	 */
370 	GLASS_PANE = 23,
371 	/**
372 	 * A document container for HTML, whose children represent the document content
373 	 */
374 	HTML_CONTAINER = 24,
375 	/**
376 	 * A small fixed size picture, typically used to decorate components
377 	 */
378 	ICON = 25,
379 	/**
380 	 * An object whose primary purpose is to display an image
381 	 */
382 	IMAGE = 26,
383 	/**
384 	 * A frame-like object that is clipped by a desktop pane
385 	 */
386 	INTERNAL_FRAME = 27,
387 	/**
388 	 * An object used to present an icon or short string in an interface
389 	 */
390 	LABEL = 28,
391 	/**
392 	 * A specialized pane that allows its children to be drawn in layers, providing a form of stacking order
393 	 */
394 	LAYERED_PANE = 29,
395 	/**
396 	 * An object that presents a list of objects to the user and allows the user to select one or more of them
397 	 */
398 	LIST = 30,
399 	/**
400 	 * An object that represents an element of a list
401 	 */
402 	LIST_ITEM = 31,
403 	/**
404 	 * An object usually found inside a menu bar that contains a list of actions the user can choose from
405 	 */
406 	MENU = 32,
407 	/**
408 	 * An object usually drawn at the top of the primary dialog box of an application that contains a list of menus the user can choose from
409 	 */
410 	MENU_BAR = 33,
411 	/**
412 	 * An object usually contained in a menu that presents an action the user can choose
413 	 */
414 	MENU_ITEM = 34,
415 	/**
416 	 * A specialized pane whose primary use is inside a DIALOG
417 	 */
418 	OPTION_PANE = 35,
419 	/**
420 	 * An object that is a child of a page tab list
421 	 */
422 	PAGE_TAB = 36,
423 	/**
424 	 * An object that presents a series of panels (or page tabs), one at a time, through some mechanism provided by the object
425 	 */
426 	PAGE_TAB_LIST = 37,
427 	/**
428 	 * A generic container that is often used to group objects
429 	 */
430 	PANEL = 38,
431 	/**
432 	 * A text object uses for passwords, or other places where the text content is not shown visibly to the user
433 	 */
434 	PASSWORD_TEXT = 39,
435 	/**
436 	 * A temporary window that is usually used to offer the user a list of choices, and then hides when the user selects one of those choices
437 	 */
438 	POPUP_MENU = 40,
439 	/**
440 	 * An object used to indicate how much of a task has been completed
441 	 */
442 	PROGRESS_BAR = 41,
443 	/**
444 	 * An object the user can manipulate to tell the application to do something
445 	 */
446 	PUSH_BUTTON = 42,
447 	/**
448 	 * A specialized check box that will cause other radio buttons in the same group to become unchecked when this one is checked
449 	 */
450 	RADIO_BUTTON = 43,
451 	/**
452 	 * A check menu item which belongs to a group. At each instant exactly one of the radio menu items from a group is selected
453 	 */
454 	RADIO_MENU_ITEM = 44,
455 	/**
456 	 * A specialized pane that has a glass pane and a layered pane as its children
457 	 */
458 	ROOT_PANE = 45,
459 	/**
460 	 * The header for a row of data
461 	 */
462 	ROW_HEADER = 46,
463 	/**
464 	 * An object usually used to allow a user to incrementally view a large amount of data.
465 	 */
466 	SCROLL_BAR = 47,
467 	/**
468 	 * An object that allows a user to incrementally view a large amount of information
469 	 */
470 	SCROLL_PANE = 48,
471 	/**
472 	 * An object usually contained in a menu to provide a visible and logical separation of the contents in a menu
473 	 */
474 	SEPARATOR = 49,
475 	/**
476 	 * An object that allows the user to select from a bounded range
477 	 */
478 	SLIDER = 50,
479 	/**
480 	 * A specialized panel that presents two other panels at the same time
481 	 */
482 	SPLIT_PANE = 51,
483 	/**
484 	 * An object used to get an integer or floating point number from the user
485 	 */
486 	SPIN_BUTTON = 52,
487 	/**
488 	 * An object which reports messages of minor importance to the user
489 	 */
490 	STATUSBAR = 53,
491 	/**
492 	 * An object used to represent information in terms of rows and columns
493 	 */
494 	TABLE = 54,
495 	/**
496 	 * A cell in a table
497 	 */
498 	TABLE_CELL = 55,
499 	/**
500 	 * The header for a column of a table
501 	 */
502 	TABLE_COLUMN_HEADER = 56,
503 	/**
504 	 * The header for a row of a table
505 	 */
506 	TABLE_ROW_HEADER = 57,
507 	/**
508 	 * A menu item used to tear off and reattach its menu
509 	 */
510 	TEAR_OFF_MENU_ITEM = 58,
511 	/**
512 	 * An object that represents an accessible terminal.  (Since: 0.6)
513 	 */
514 	TERMINAL = 59,
515 	/**
516 	 * An interactive widget that supports multiple lines of text and
517 	 * optionally accepts user input, but whose purpose is not to solicit user input.
518 	 * Thus ATK_ROLE_TEXT is appropriate for the text view in a plain text editor
519 	 * but inappropriate for an input field in a dialog box or web form. For widgets
520 	 * whose purpose is to solicit input from the user, see ATK_ROLE_ENTRY and
521 	 * ATK_ROLE_PASSWORD_TEXT. For generic objects which display a brief amount of
522 	 * textual information, see ATK_ROLE_STATIC.
523 	 */
524 	TEXT = 60,
525 	/**
526 	 * A specialized push button that can be checked or unchecked, but does not provide a separate indicator for the current state
527 	 */
528 	TOGGLE_BUTTON = 61,
529 	/**
530 	 * A bar or palette usually composed of push buttons or toggle buttons
531 	 */
532 	TOOL_BAR = 62,
533 	/**
534 	 * An object that provides information about another object
535 	 */
536 	TOOL_TIP = 63,
537 	/**
538 	 * An object used to represent hierarchical information to the user
539 	 */
540 	TREE = 64,
541 	/**
542 	 * An object capable of expanding and collapsing rows as well as showing multiple columns of data.   (Since: 0.7)
543 	 */
544 	TREE_TABLE = 65,
545 	/**
546 	 * The object contains some Accessible information, but its role is not known
547 	 */
548 	UNKNOWN = 66,
549 	/**
550 	 * An object usually used in a scroll pane
551 	 */
552 	VIEWPORT = 67,
553 	/**
554 	 * A top level window with no title or border.
555 	 */
556 	WINDOW = 68,
557 	/**
558 	 * An object that serves as a document header. (Since: 1.1.1)
559 	 */
560 	HEADER = 69,
561 	/**
562 	 * An object that serves as a document footer.  (Since: 1.1.1)
563 	 */
564 	FOOTER = 70,
565 	/**
566 	 * An object which is contains a paragraph of text content.   (Since: 1.1.1)
567 	 */
568 	PARAGRAPH = 71,
569 	/**
570 	 * An object which describes margins and tab stops, etc. for text objects which it controls (should have CONTROLLER_FOR relation to such).   (Since: 1.1.1)
571 	 */
572 	RULER = 72,
573 	/**
574 	 * The object is an application object, which may contain @ATK_ROLE_FRAME objects or other types of accessibles.  The root accessible of any application's ATK hierarchy should have ATK_ROLE_APPLICATION.   (Since: 1.1.4)
575 	 */
576 	APPLICATION = 73,
577 	/**
578 	 * The object is a dialog or list containing items for insertion into an entry widget, for instance a list of words for completion of a text entry.   (Since: 1.3)
579 	 */
580 	AUTOCOMPLETE = 74,
581 	/**
582 	 * The object is an editable text object in a toolbar.  (Since: 1.5)
583 	 */
584 	EDIT_BAR = 75,
585 	/**
586 	 * The object is an embedded container within a document or panel.  This role is a grouping "hint" indicating that the contained objects share a context.  (Since: 1.7.2)
587 	 */
588 	EMBEDDED = 76,
589 	/**
590 	 * The object is a component whose textual content may be entered or modified by the user, provided @ATK_STATE_EDITABLE is present.   (Since: 1.11)
591 	 */
592 	ENTRY = 77,
593 	/**
594 	 * The object is a graphical depiction of quantitative data. It may contain multiple subelements whose attributes and/or description may be queried to obtain both the quantitative data and information about how the data is being presented. The LABELLED_BY relation is particularly important in interpreting objects of this type, as is the accessible-description property.  (Since: 1.11)
595 	 */
596 	CHART = 78,
597 	/**
598 	 * The object contains descriptive information, usually textual, about another user interface element such as a table, chart, or image.  (Since: 1.11)
599 	 */
600 	CAPTION = 79,
601 	/**
602 	 * The object is a visual frame or container which contains a view of document content. Document frames may occur within another Document instance, in which case the second document may be said to be embedded in the containing instance. HTML frames are often ROLE_DOCUMENT_FRAME. Either this object, or a singleton descendant, should implement the Document interface.  (Since: 1.11)
603 	 */
604 	DOCUMENT_FRAME = 80,
605 	/**
606 	 * The object serves as a heading for content which follows it in a document. The 'heading level' of the heading, if availabe, may be obtained by querying the object's attributes.
607 	 */
608 	HEADING = 81,
609 	/**
610 	 * The object is a containing instance which encapsulates a page of information. @ATK_ROLE_PAGE is used in documents and content which support a paginated navigation model.  (Since: 1.11)
611 	 */
612 	PAGE = 82,
613 	/**
614 	 * The object is a containing instance of document content which constitutes a particular 'logical' section of the document. The type of content within a section, and the nature of the section division itself, may be obtained by querying the object's attributes. Sections may be nested. (Since: 1.11)
615 	 */
616 	SECTION = 83,
617 	/**
618 	 * The object is redundant with another object in the hierarchy, and is exposed for purely technical reasons.  Objects of this role should normally be ignored by clients. (Since: 1.11)
619 	 */
620 	REDUNDANT_OBJECT = 84,
621 	/**
622 	 * The object is a container for form controls, for instance as part of a
623 	 * web form or user-input form within a document.  This role is primarily a tag/convenience for
624 	 * clients when navigating complex documents, it is not expected that ordinary GUI containers will
625 	 * always have ATK_ROLE_FORM. (Since: 1.12.0)
626 	 */
627 	FORM = 85,
628 	/**
629 	 * The object is a hypertext anchor, i.e. a "link" in a
630 	 * hypertext document.  Such objects are distinct from 'inline'
631 	 * content which may also use the Hypertext/Hyperlink interfaces
632 	 * to indicate the range/location within a text object where
633 	 * an inline or embedded object lies.  (Since: 1.12.1)
634 	 */
635 	LINK = 86,
636 	/**
637 	 * The object is a window or similar viewport
638 	 * which is used to allow composition or input of a 'complex character',
639 	 * in other words it is an "input method window." (Since: 1.12.1)
640 	 */
641 	INPUT_METHOD_WINDOW = 87,
642 	/**
643 	 * A row in a table.  (Since: 2.1.0)
644 	 */
645 	TABLE_ROW = 88,
646 	/**
647 	 * An object that represents an element of a tree.  (Since: 2.1.0)
648 	 */
649 	TREE_ITEM = 89,
650 	/**
651 	 * A document frame which contains a spreadsheet.  (Since: 2.1.0)
652 	 */
653 	DOCUMENT_SPREADSHEET = 90,
654 	/**
655 	 * A document frame which contains a presentation or slide content.  (Since: 2.1.0)
656 	 */
657 	DOCUMENT_PRESENTATION = 91,
658 	/**
659 	 * A document frame which contains textual content, such as found in a word processing application.  (Since: 2.1.0)
660 	 */
661 	DOCUMENT_TEXT = 92,
662 	/**
663 	 * A document frame which contains HTML or other markup suitable for display in a web browser.  (Since: 2.1.0)
664 	 */
665 	DOCUMENT_WEB = 93,
666 	/**
667 	 * A document frame which contains email content to be displayed or composed either in plain text or HTML.  (Since: 2.1.0)
668 	 */
669 	DOCUMENT_EMAIL = 94,
670 	/**
671 	 * An object found within a document and designed to present a comment, note, or other annotation. In some cases, this object might not be visible until activated.  (Since: 2.1.0)
672 	 */
673 	COMMENT = 95,
674 	/**
675 	 * A non-collapsible list of choices the user can select from. (Since: 2.1.0)
676 	 */
677 	LIST_BOX = 96,
678 	/**
679 	 * A group of related widgets. This group typically has a label. (Since: 2.1.0)
680 	 */
681 	GROUPING = 97,
682 	/**
683 	 * An image map object. Usually a graphic with multiple hotspots, where each hotspot can be activated resulting in the loading of another document or section of a document. (Since: 2.1.0)
684 	 */
685 	IMAGE_MAP = 98,
686 	/**
687 	 * A transitory object designed to present a message to the user, typically at the desktop level rather than inside a particular application.  (Since: 2.1.0)
688 	 */
689 	NOTIFICATION = 99,
690 	/**
691 	 * An object designed to present a message to the user within an existing window. (Since: 2.1.0)
692 	 */
693 	INFO_BAR = 100,
694 	/**
695 	 * A bar that serves as a level indicator to, for instance, show the strength of a password or the state of a battery.  (Since: 2.7.3)
696 	 */
697 	LEVEL_BAR = 101,
698 	/**
699 	 * A bar that serves as the title of a window or a
700 	 * dialog. (Since: 2.12)
701 	 */
702 	TITLE_BAR = 102,
703 	/**
704 	 * An object which contains a text section
705 	 * that is quoted from another source. (Since: 2.12)
706 	 */
707 	BLOCK_QUOTE = 103,
708 	/**
709 	 * An object which represents an audio element. (Since: 2.12)
710 	 */
711 	AUDIO = 104,
712 	/**
713 	 * An object which represents a video element. (Since: 2.12)
714 	 */
715 	VIDEO = 105,
716 	/**
717 	 * A definition of a term or concept. (Since: 2.12)
718 	 */
719 	DEFINITION = 106,
720 	/**
721 	 * A section of a page that consists of a
722 	 * composition that forms an independent part of a document, page, or
723 	 * site. Examples: A blog entry, a news story, a forum post. (Since: 2.12)
724 	 */
725 	ARTICLE = 107,
726 	/**
727 	 * A region of a web page intended as a
728 	 * navigational landmark. This is designed to allow Assistive
729 	 * Technologies to provide quick navigation among key regions within a
730 	 * document. (Since: 2.12)
731 	 */
732 	LANDMARK = 108,
733 	/**
734 	 * A text widget or container holding log content, such
735 	 * as chat history and error logs. In this role there is a
736 	 * relationship between the arrival of new items in the log and the
737 	 * reading order. The log contains a meaningful sequence and new
738 	 * information is added only to the end of the log, not at arbitrary
739 	 * points. (Since: 2.12)
740 	 */
741 	LOG = 109,
742 	/**
743 	 * A container where non-essential information
744 	 * changes frequently. Common usages of marquee include stock tickers
745 	 * and ad banners. The primary difference between a marquee and a log
746 	 * is that logs usually have a meaningful order or sequence of
747 	 * important content changes. (Since: 2.12)
748 	 */
749 	MARQUEE = 110,
750 	/**
751 	 * A text widget or container that holds a mathematical
752 	 * expression. (Since: 2.12)
753 	 */
754 	MATH = 111,
755 	/**
756 	 * A widget whose purpose is to display a rating,
757 	 * such as the number of stars associated with a song in a media
758 	 * player. Objects of this role should also implement
759 	 * AtkValue. (Since: 2.12)
760 	 */
761 	RATING = 112,
762 	/**
763 	 * An object containing a numerical counter which
764 	 * indicates an amount of elapsed time from a start point, or the time
765 	 * remaining until an end point. (Since: 2.12)
766 	 */
767 	TIMER = 113,
768 	/**
769 	 * An object that represents a list of
770 	 * term-value groups. A term-value group represents a individual
771 	 * description and consist of one or more names
772 	 * (ATK_ROLE_DESCRIPTION_TERM) followed by one or more values
773 	 * (ATK_ROLE_DESCRIPTION_VALUE). For each list, there should not be
774 	 * more than one group with the same term name. (Since: 2.12)
775 	 */
776 	DESCRIPTION_LIST = 114,
777 	/**
778 	 * An object that represents a term or phrase
779 	 * with a corresponding definition. (Since: 2.12)
780 	 */
781 	DESCRIPTION_TERM = 115,
782 	/**
783 	 * An object that represents the
784 	 * description, definition or value of a term. (Since: 2.12)
785 	 */
786 	DESCRIPTION_VALUE = 116,
787 	/**
788 	 * A generic non-container object whose purpose is to display a
789 	 * brief amount of information to the user and whose role is known by the
790 	 * implementor but lacks semantic value for the user. Examples in which
791 	 * %ATK_ROLE_STATIC is appropriate include the message displayed in a message box
792 	 * and an image used as an alternative means to display text. %ATK_ROLE_STATIC
793 	 * should not be applied to widgets which are traditionally interactive, objects
794 	 * which display a significant amount of content, or any object which has an
795 	 * accessible relation pointing to another object. Implementors should expose the
796 	 * displayed information through the accessible name of the object. If doing so seems
797 	 * inappropriate, it may indicate that a different role should be used. For
798 	 * labels which describe another widget, see %ATK_ROLE_LABEL. For text views, see
799 	 * %ATK_ROLE_TEXT. For generic containers, see %ATK_ROLE_PANEL. For objects whose
800 	 * role is not known by the implementor, see %ATK_ROLE_UNKNOWN. (Since: 2.16)
801 	 */
802 	STATIC = 117,
803 	/**
804 	 * An object that represents a mathematical fraction.
805 	 * (Since: 2.16)
806 	 */
807 	MATH_FRACTION = 118,
808 	/**
809 	 * An object that represents a mathematical expression
810 	 * displayed with a radical. (Since: 2.16)
811 	 */
812 	MATH_ROOT = 119,
813 	/**
814 	 * An object that contains text that is displayed as a
815 	 * subscript. (Since: 2.16)
816 	 */
817 	SUBSCRIPT = 120,
818 	/**
819 	 * An object that contains text that is displayed as a
820 	 * superscript. (Since: 2.16)
821 	 */
822 	SUPERSCRIPT = 121,
823 	/**
824 	 * An object that contains the text of a footnote. (Since: 2.26)
825 	 */
826 	FOOTNOTE = 122,
827 	/**
828 	 * Content previously deleted or proposed to be
829 	 * deleted, e.g. in revision history or a content view providing suggestions
830 	 * from reviewers. (Since: 2.34)
831 	 */
832 	CONTENT_DELETION = 123,
833 	/**
834 	 * Content previously inserted or proposed to be
835 	 * inserted, e.g. in revision history or a content view providing suggestions
836 	 * from reviewers. (Since: 2.34)
837 	 */
838 	CONTENT_INSERTION = 124,
839 	/**
840 	 * not a valid role, used for finding end of the enumeration
841 	 */
842 	LAST_DEFINED = 125,
843 }
844 alias AtkRole Role;
845 
846 /**
847  * Specifies where an object should be placed on the screen when using scroll_to.
848  *
849  * Since: 2.30
850  */
851 public enum AtkScrollType
852 {
853 	/**
854 	 * Scroll the object vertically and horizontally to the top
855 	 * left corner of the window.
856 	 */
857 	TOP_LEFT = 0,
858 	/**
859 	 * Scroll the object vertically and horizontally to the
860 	 * bottom right corner of the window.
861 	 */
862 	BOTTOM_RIGHT = 1,
863 	/**
864 	 * Scroll the object vertically to the top edge of the
865 	 * window.
866 	 */
867 	TOP_EDGE = 2,
868 	/**
869 	 * Scroll the object vertically to the bottom edge of
870 	 * the window.
871 	 */
872 	BOTTOM_EDGE = 3,
873 	/**
874 	 * Scroll the object vertically and horizontally to the
875 	 * left edge of the window.
876 	 */
877 	LEFT_EDGE = 4,
878 	/**
879 	 * Scroll the object vertically and horizontally to the
880 	 * right edge of the window.
881 	 */
882 	RIGHT_EDGE = 5,
883 	/**
884 	 * Scroll the object vertically and horizontally so that
885 	 * as much as possible of the object becomes visible. The exact placement is
886 	 * determined by the application.
887 	 */
888 	ANYWHERE = 6,
889 }
890 alias AtkScrollType ScrollType;
891 
892 /**
893  * The possible types of states of an object
894  */
895 public enum AtkStateType
896 {
897 	/**
898 	 * Indicates an invalid state - probably an error condition.
899 	 */
900 	INVALID = 0,
901 	/**
902 	 * Indicates a window is currently the active window, or an object is the active subelement within a container or table. ATK_STATE_ACTIVE should not be used for objects which have ATK_STATE_FOCUSABLE or ATK_STATE_SELECTABLE: Those objects should use ATK_STATE_FOCUSED and ATK_STATE_SELECTED respectively. ATK_STATE_ACTIVE is a means to indicate that an object which is not focusable and not selectable is the currently-active item within its parent container.
903 	 */
904 	ACTIVE = 1,
905 	/**
906 	 * Indicates that the object is 'armed', i.e. will be activated by if a pointer button-release event occurs within its bounds.  Buttons often enter this state when a pointer click occurs within their bounds, as a precursor to activation. ATK_STATE_ARMED has been deprecated since ATK-2.16 and should not be used in newly-written code.
907 	 */
908 	ARMED = 2,
909 	/**
910 	 * Indicates the current object is busy, i.e. onscreen representation is in the process of changing, or the object is temporarily unavailable for interaction due to activity already in progress.  This state may be used by implementors of Document to indicate that content loading is underway.  It also may indicate other 'pending' conditions; clients may wish to interrogate this object when the ATK_STATE_BUSY flag is removed.
911 	 */
912 	BUSY = 3,
913 	/**
914 	 * Indicates this object is currently checked, for instance a checkbox is 'non-empty'.
915 	 */
916 	CHECKED = 4,
917 	/**
918 	 * Indicates that this object no longer has a valid backing widget (for instance, if its peer object has been destroyed)
919 	 */
920 	DEFUNCT = 5,
921 	/**
922 	 * Indicates that this object can contain text, and that the
923 	 * user can change the textual contents of this object by editing those contents
924 	 * directly. For an object which is expected to be editable due to its type, but
925 	 * which cannot be edited due to the application or platform preventing the user
926 	 * from doing so, that object's #AtkStateSet should lack ATK_STATE_EDITABLE and
927 	 * should contain ATK_STATE_READ_ONLY.
928 	 */
929 	EDITABLE = 6,
930 	/**
931 	 * Indicates that this object is enabled, i.e. that it currently reflects some application state. Objects that are "greyed out" may lack this state, and may lack the STATE_SENSITIVE if direct user interaction cannot cause them to acquire STATE_ENABLED. See also: ATK_STATE_SENSITIVE
932 	 */
933 	ENABLED = 7,
934 	/**
935 	 * Indicates this object allows progressive disclosure of its children
936 	 */
937 	EXPANDABLE = 8,
938 	/**
939 	 * Indicates this object its expanded - see ATK_STATE_EXPANDABLE above
940 	 */
941 	EXPANDED = 9,
942 	/**
943 	 * Indicates this object can accept keyboard focus, which means all events resulting from typing on the keyboard will normally be passed to it when it has focus
944 	 */
945 	FOCUSABLE = 10,
946 	/**
947 	 * Indicates this object currently has the keyboard focus
948 	 */
949 	FOCUSED = 11,
950 	/**
951 	 * Indicates the orientation of this object is horizontal; used, for instance, by objects of ATK_ROLE_SCROLL_BAR.  For objects where vertical/horizontal orientation is especially meaningful.
952 	 */
953 	HORIZONTAL = 12,
954 	/**
955 	 * Indicates this object is minimized and is represented only by an icon
956 	 */
957 	ICONIFIED = 13,
958 	/**
959 	 * Indicates something must be done with this object before the user can interact with an object in a different window
960 	 */
961 	MODAL = 14,
962 	/**
963 	 * Indicates this (text) object can contain multiple lines of text
964 	 */
965 	MULTI_LINE = 15,
966 	/**
967 	 * Indicates this object allows more than one of its children to be selected at the same time, or in the case of text objects, that the object supports non-contiguous text selections.
968 	 */
969 	MULTISELECTABLE = 16,
970 	/**
971 	 * Indicates this object paints every pixel within its rectangular region.
972 	 */
973 	OPAQUE = 17,
974 	/**
975 	 * Indicates this object is currently pressed.
976 	 */
977 	PRESSED = 18,
978 	/**
979 	 * Indicates the size of this object is not fixed
980 	 */
981 	RESIZABLE = 19,
982 	/**
983 	 * Indicates this object is the child of an object that allows its children to be selected and that this child is one of those children that can be selected
984 	 */
985 	SELECTABLE = 20,
986 	/**
987 	 * Indicates this object is the child of an object that allows its children to be selected and that this child is one of those children that has been selected
988 	 */
989 	SELECTED = 21,
990 	/**
991 	 * Indicates this object is sensitive, e.g. to user interaction.
992 	 * STATE_SENSITIVE usually accompanies STATE_ENABLED for user-actionable controls,
993 	 * but may be found in the absence of STATE_ENABLED if the current visible state of the
994 	 * control is "disconnected" from the application state.  In such cases, direct user interaction
995 	 * can often result in the object gaining STATE_SENSITIVE, for instance if a user makes
996 	 * an explicit selection using an object whose current state is ambiguous or undefined.
997 	 * @see STATE_ENABLED, STATE_INDETERMINATE.
998 	 */
999 	SENSITIVE = 22,
1000 	/**
1001 	 * Indicates this object, the object's parent, the object's parent's parent, and so on,
1002 	 * are all 'shown' to the end-user, i.e. subject to "exposure" if blocking or obscuring objects do not interpose
1003 	 * between this object and the top of the window stack.
1004 	 */
1005 	SHOWING = 23,
1006 	/**
1007 	 * Indicates this (text) object can contain only a single line of text
1008 	 */
1009 	SINGLE_LINE = 24,
1010 	/**
1011 	 * Indicates that the information returned for this object may no longer be
1012 	 * synchronized with the application state.  This is implied if the object has STATE_TRANSIENT,
1013 	 * and can also occur towards the end of the object peer's lifecycle. It can also be used to indicate that
1014 	 * the index associated with this object has changed since the user accessed the object (in lieu of
1015 	 * "index-in-parent-changed" events).
1016 	 */
1017 	STALE = 25,
1018 	/**
1019 	 * Indicates this object is transient, i.e. a snapshot which may not emit events when its
1020 	 * state changes.  Data from objects with ATK_STATE_TRANSIENT should not be cached, since there may be no
1021 	 * notification given when the cached data becomes obsolete.
1022 	 */
1023 	TRANSIENT = 26,
1024 	/**
1025 	 * Indicates the orientation of this object is vertical
1026 	 */
1027 	VERTICAL = 27,
1028 	/**
1029 	 * Indicates this object is visible, e.g. has been explicitly marked for exposure to the user.
1030 	 * **note**: %ATK_STATE_VISIBLE is no guarantee that the object is actually unobscured on the screen, only
1031 	 * that it is 'potentially' visible, barring obstruction, being scrolled or clipped out of the
1032 	 * field of view, or having an ancestor container that has not yet made visible.
1033 	 * A widget is potentially onscreen if it has both %ATK_STATE_VISIBLE and %ATK_STATE_SHOWING.
1034 	 * The absence of %ATK_STATE_VISIBLE and %ATK_STATE_SHOWING is semantically equivalent to saying
1035 	 * that an object is 'hidden'.  See also %ATK_STATE_TRUNCATED, which applies if an object with
1036 	 * %ATK_STATE_VISIBLE and %ATK_STATE_SHOWING set lies within a viewport which means that its
1037 	 * contents are clipped, e.g. a truncated spreadsheet cell or
1038 	 * an image within a scrolling viewport.  Mostly useful for screen-review and magnification
1039 	 * algorithms.
1040 	 */
1041 	VISIBLE = 28,
1042 	/**
1043 	 * Indicates that "active-descendant-changed" event
1044 	 * is sent when children become 'active' (i.e. are selected or navigated to onscreen).
1045 	 * Used to prevent need to enumerate all children in very large containers, like tables.
1046 	 * The presence of STATE_MANAGES_DESCENDANTS is an indication to the client.
1047 	 * that the children should not, and need not, be enumerated by the client.
1048 	 * Objects implementing this state are expected to provide relevant state
1049 	 * notifications to listening clients, for instance notifications of visibility
1050 	 * changes and activation of their contained child objects, without the client
1051 	 * having previously requested references to those children.
1052 	 */
1053 	MANAGES_DESCENDANTS = 29,
1054 	/**
1055 	 * Indicates that the value, or some other quantifiable
1056 	 * property, of this AtkObject cannot be fully determined. In the case of a large
1057 	 * data set in which the total number of items in that set is unknown (e.g. 1 of
1058 	 * 999+), implementors should expose the currently-known set size (999) along
1059 	 * with this state. In the case of a check box, this state should be used to
1060 	 * indicate that the check box is a tri-state check box which is currently
1061 	 * neither checked nor unchecked.
1062 	 */
1063 	INDETERMINATE = 30,
1064 	/**
1065 	 * Indicates that an object is truncated, e.g. a text value in a speradsheet cell.
1066 	 */
1067 	TRUNCATED = 31,
1068 	/**
1069 	 * Indicates that explicit user interaction with an object is required by the user interface, e.g. a required field in a "web-form" interface.
1070 	 */
1071 	REQUIRED = 32,
1072 	/**
1073 	 * Indicates that the object has encountered an error condition due to failure of input validation. For instance, a form control may acquire this state in response to invalid or malformed user input.
1074 	 */
1075 	INVALID_ENTRY = 33,
1076 	/**
1077 	 * Indicates that the object in question implements some form of ¨typeahead¨ or
1078 	 * pre-selection behavior whereby entering the first character of one or more sub-elements
1079 	 * causes those elements to scroll into view or become selected.  Subsequent character input
1080 	 * may narrow the selection further as long as one or more sub-elements match the string.
1081 	 * This state is normally only useful and encountered on objects that implement Selection.
1082 	 * In some cases the typeahead behavior may result in full or partial ¨completion¨ of
1083 	 * the data in the input field, in which case these input events may trigger text-changed
1084 	 * events from the AtkText interface.  This state supplants @ATK_ROLE_AUTOCOMPLETE.
1085 	 */
1086 	SUPPORTS_AUTOCOMPLETION = 34,
1087 	/**
1088 	 * Indicates that the object in question supports text selection. It should only be exposed on objects which implement the Text interface, in order to distinguish this state from @ATK_STATE_SELECTABLE, which infers that the object in question is a selectable child of an object which implements Selection. While similar, text selection and subelement selection are distinct operations.
1089 	 */
1090 	SELECTABLE_TEXT = 35,
1091 	/**
1092 	 * Indicates that the object is the "default" active component, i.e. the object which is activated by an end-user press of the "Enter" or "Return" key.  Typically a "close" or "submit" button.
1093 	 */
1094 	DEFAULT = 36,
1095 	/**
1096 	 * Indicates that the object changes its appearance dynamically as an inherent part of its presentation.  This state may come and go if an object is only temporarily animated on the way to a 'final' onscreen presentation.
1097 	 * **note**: some applications, notably content viewers, may not be able to detect
1098 	 * all kinds of animated content.  Therefore the absence of this state should not
1099 	 * be taken as definitive evidence that the object's visual representation is
1100 	 * static; this state is advisory.
1101 	 */
1102 	ANIMATED = 37,
1103 	/**
1104 	 * Indicates that the object (typically a hyperlink) has already been 'activated', and/or its backing data has already been downloaded, rendered, or otherwise "visited".
1105 	 */
1106 	VISITED = 38,
1107 	/**
1108 	 * Indicates this object has the potential to be
1109 	 * checked, such as a checkbox or toggle-able table cell. @Since:
1110 	 * ATK-2.12
1111 	 */
1112 	CHECKABLE = 39,
1113 	/**
1114 	 * Indicates that the object has a popup context
1115 	 * menu or sub-level menu which may or may not be showing. This means
1116 	 * that activation renders conditional content.  Note that ordinary
1117 	 * tooltips are not considered popups in this context. @Since: ATK-2.12
1118 	 */
1119 	HAS_POPUP = 40,
1120 	/**
1121 	 * Indicates this object has a tooltip. @Since: ATK-2.16
1122 	 */
1123 	HAS_TOOLTIP = 41,
1124 	/**
1125 	 * Indicates that a widget which is ENABLED and SENSITIVE
1126 	 * has a value which can be read, but not modified, by the user. Note that this
1127 	 * state should only be applied to widget types whose value is normally directly
1128 	 * user modifiable, such as check boxes, radio buttons, spin buttons, text input
1129 	 * fields, and combo boxes, as a means to convey that the expected interaction
1130 	 * with that widget is not possible. When the expected interaction with a
1131 	 * widget does not include modification by the user, as is the case with
1132 	 * labels and containers, ATK_STATE_READ_ONLY should not be applied. See also
1133 	 * ATK_STATE_EDITABLE. @Since: ATK-2-16
1134 	 */
1135 	READ_ONLY = 42,
1136 	/**
1137 	 * Not a valid state, used for finding end of enumeration
1138 	 */
1139 	LAST_DEFINED = 43,
1140 }
1141 alias AtkStateType StateType;
1142 
1143 /**
1144  * Describes the text attributes supported
1145  */
1146 public enum AtkTextAttribute
1147 {
1148 	/**
1149 	 * Invalid attribute, like bad spelling or grammar.
1150 	 */
1151 	INVALID = 0,
1152 	/**
1153 	 * The pixel width of the left margin
1154 	 */
1155 	LEFT_MARGIN = 1,
1156 	/**
1157 	 * The pixel width of the right margin
1158 	 */
1159 	RIGHT_MARGIN = 2,
1160 	/**
1161 	 * The number of pixels that the text is indented
1162 	 */
1163 	INDENT = 3,
1164 	/**
1165 	 * Either "true" or "false" indicating whether text is visible or not
1166 	 */
1167 	INVISIBLE = 4,
1168 	/**
1169 	 * Either "true" or "false" indicating whether text is editable or not
1170 	 */
1171 	EDITABLE = 5,
1172 	/**
1173 	 * Pixels of blank space to leave above each newline-terminated line.
1174 	 */
1175 	PIXELS_ABOVE_LINES = 6,
1176 	/**
1177 	 * Pixels of blank space to leave below each newline-terminated line.
1178 	 */
1179 	PIXELS_BELOW_LINES = 7,
1180 	/**
1181 	 * Pixels of blank space to leave between wrapped lines inside the same newline-terminated line (paragraph).
1182 	 */
1183 	PIXELS_INSIDE_WRAP = 8,
1184 	/**
1185 	 * "true" or "false" whether to make the background color for each character the height of the highest font used on the current line, or the height of the font used for the current character.
1186 	 */
1187 	BG_FULL_HEIGHT = 9,
1188 	/**
1189 	 * Number of pixels that the characters are risen above the baseline
1190 	 */
1191 	RISE = 10,
1192 	/**
1193 	 * "none", "single", "double", "low", or "error"
1194 	 */
1195 	UNDERLINE = 11,
1196 	/**
1197 	 * "true" or "false" whether the text is strikethrough
1198 	 */
1199 	STRIKETHROUGH = 12,
1200 	/**
1201 	 * The size of the characters in points. eg: 10
1202 	 */
1203 	SIZE = 13,
1204 	/**
1205 	 * The scale of the characters. The value is a string representation of a double
1206 	 */
1207 	SCALE = 14,
1208 	/**
1209 	 * The weight of the characters.
1210 	 */
1211 	WEIGHT = 15,
1212 	/**
1213 	 * The language used
1214 	 */
1215 	LANGUAGE = 16,
1216 	/**
1217 	 * The font family name
1218 	 */
1219 	FAMILY_NAME = 17,
1220 	/**
1221 	 * The background color. The value is an RGB value of the format "%u,%u,%u"
1222 	 */
1223 	BG_COLOR = 18,
1224 	/**
1225 	 * The foreground color. The value is an RGB value of the format "%u,%u,%u"
1226 	 */
1227 	FG_COLOR = 19,
1228 	/**
1229 	 * "true" if a #GdkBitmap is set for stippling the background color.
1230 	 */
1231 	BG_STIPPLE = 20,
1232 	/**
1233 	 * "true" if a #GdkBitmap is set for stippling the foreground color.
1234 	 */
1235 	FG_STIPPLE = 21,
1236 	/**
1237 	 * The wrap mode of the text, if any. Values are "none", "char", "word", or "word_char".
1238 	 */
1239 	WRAP_MODE = 22,
1240 	/**
1241 	 * The direction of the text, if set. Values are "none", "ltr" or "rtl"
1242 	 */
1243 	DIRECTION = 23,
1244 	/**
1245 	 * The justification of the text, if set. Values are "left", "right", "center" or "fill"
1246 	 */
1247 	JUSTIFICATION = 24,
1248 	/**
1249 	 * The stretch of the text, if set. Values are "ultra_condensed", "extra_condensed", "condensed", "semi_condensed", "normal", "semi_expanded", "expanded", "extra_expanded" or "ultra_expanded"
1250 	 */
1251 	STRETCH = 25,
1252 	/**
1253 	 * The capitalization variant of the text, if set. Values are "normal" or "small_caps"
1254 	 */
1255 	VARIANT = 26,
1256 	/**
1257 	 * The slant style of the text, if set. Values are "normal", "oblique" or "italic"
1258 	 */
1259 	STYLE = 27,
1260 	/**
1261 	 * not a valid text attribute, used for finding end of enumeration
1262 	 */
1263 	LAST_DEFINED = 28,
1264 }
1265 alias AtkTextAttribute TextAttribute;
1266 
1267 /**
1268  * Text boundary types used for specifying boundaries for regions of text.
1269  * This enumeration is deprecated since 2.9.4 and should not be used. Use
1270  * AtkTextGranularity with #atk_text_get_string_at_offset instead.
1271  */
1272 public enum AtkTextBoundary
1273 {
1274 	/**
1275 	 * Boundary is the boundary between characters
1276 	 * (including non-printing characters)
1277 	 */
1278 	CHAR = 0,
1279 	/**
1280 	 * Boundary is the start (i.e. first character) of a word.
1281 	 */
1282 	WORD_START = 1,
1283 	/**
1284 	 * Boundary is the end (i.e. last
1285 	 * character) of a word.
1286 	 */
1287 	WORD_END = 2,
1288 	/**
1289 	 * Boundary is the first character in a sentence.
1290 	 */
1291 	SENTENCE_START = 3,
1292 	/**
1293 	 * Boundary is the last (terminal)
1294 	 * character in a sentence; in languages which use "sentence stop"
1295 	 * punctuation such as English, the boundary is thus the '.', '?', or
1296 	 * similar terminal punctuation character.
1297 	 */
1298 	SENTENCE_END = 4,
1299 	/**
1300 	 * Boundary is the initial character of the content or a
1301 	 * character immediately following a newline, linefeed, or return character.
1302 	 */
1303 	LINE_START = 5,
1304 	/**
1305 	 * Boundary is the linefeed, or return
1306 	 * character.
1307 	 */
1308 	LINE_END = 6,
1309 }
1310 alias AtkTextBoundary TextBoundary;
1311 
1312 /**
1313  * Describes the type of clipping required.
1314  */
1315 public enum AtkTextClipType
1316 {
1317 	/**
1318 	 * No clipping to be done
1319 	 */
1320 	NONE = 0,
1321 	/**
1322 	 * Text clipped by min coordinate is omitted
1323 	 */
1324 	MIN = 1,
1325 	/**
1326 	 * Text clipped by max coordinate is omitted
1327 	 */
1328 	MAX = 2,
1329 	/**
1330 	 * Only text fully within mix/max bound is retained
1331 	 */
1332 	BOTH = 3,
1333 }
1334 alias AtkTextClipType TextClipType;
1335 
1336 /**
1337  * Text granularity types used for specifying the granularity of the region of
1338  * text we are interested in.
1339  */
1340 public enum AtkTextGranularity
1341 {
1342 	/**
1343 	 * Granularity is defined by the boundaries between characters
1344 	 * (including non-printing characters)
1345 	 */
1346 	CHAR = 0,
1347 	/**
1348 	 * Granularity is defined by the boundaries of a word,
1349 	 * starting at the beginning of the current word and finishing at the beginning of
1350 	 * the following one, if present.
1351 	 */
1352 	WORD = 1,
1353 	/**
1354 	 * Granularity is defined by the boundaries of a sentence,
1355 	 * starting at the beginning of the current sentence and finishing at the beginning of
1356 	 * the following one, if present.
1357 	 */
1358 	SENTENCE = 2,
1359 	/**
1360 	 * Granularity is defined by the boundaries of a line,
1361 	 * starting at the beginning of the current line and finishing at the beginning of
1362 	 * the following one, if present.
1363 	 */
1364 	LINE = 3,
1365 	/**
1366 	 * Granularity is defined by the boundaries of a paragraph,
1367 	 * starting at the beginning of the current paragraph and finishing at the beginning of
1368 	 * the following one, if present.
1369 	 */
1370 	PARAGRAPH = 4,
1371 }
1372 alias AtkTextGranularity TextGranularity;
1373 
1374 /**
1375  * Default types for a given value. Those are defined in order to
1376  * easily get localized strings to describe a given value or a given
1377  * subrange, using atk_value_type_get_localized_name().
1378  */
1379 public enum AtkValueType
1380 {
1381 	VERY_WEAK = 0,
1382 	WEAK = 1,
1383 	ACCEPTABLE = 2,
1384 	STRONG = 3,
1385 	VERY_STRONG = 4,
1386 	VERY_LOW = 5,
1387 	LOW = 6,
1388 	MEDIUM = 7,
1389 	HIGH = 8,
1390 	VERY_HIGH = 9,
1391 	VERY_BAD = 10,
1392 	BAD = 11,
1393 	GOOD = 12,
1394 	VERY_GOOD = 13,
1395 	BEST = 14,
1396 	LAST_DEFINED = 15,
1397 }
1398 alias AtkValueType ValueType;
1399 
1400 struct AtkAction;
1401 
1402 /**
1403  * The #AtkAction interface should be supported by any object that can
1404  * perform one or more actions. The interface provides the standard
1405  * mechanism for an assistive technology to determine what those actions
1406  * are as well as tell the object to perform them. Any object that can
1407  * be manipulated should support this interface.
1408  */
1409 struct AtkActionIface
1410 {
1411 	GTypeInterface parent;
1412 	/**
1413 	 *
1414 	 * Params:
1415 	 *     action = a #GObject instance that implements AtkActionIface
1416 	 *     i = the action index corresponding to the action to be performed
1417 	 * Returns: %TRUE if success, %FALSE otherwise
1418 	 */
1419 	extern(C) int function(AtkAction* action, int i) doAction;
1420 	/**
1421 	 *
1422 	 * Params:
1423 	 *     action = a #GObject instance that implements AtkActionIface
1424 	 * Returns: a the number of actions, or 0 if @action does not
1425 	 *     implement this interface.
1426 	 */
1427 	extern(C) int function(AtkAction* action) getNActions;
1428 	/**
1429 	 *
1430 	 * Params:
1431 	 *     action = a #GObject instance that implements AtkActionIface
1432 	 *     i = the action index corresponding to the action to be performed
1433 	 * Returns: a description string, or %NULL if @action does
1434 	 *     not implement this interface.
1435 	 */
1436 	extern(C) const(char)* function(AtkAction* action, int i) getDescription;
1437 	/**
1438 	 *
1439 	 * Params:
1440 	 *     action = a #GObject instance that implements AtkActionIface
1441 	 *     i = the action index corresponding to the action to be performed
1442 	 * Returns: a name string, or %NULL if @action does not
1443 	 *     implement this interface.
1444 	 */
1445 	extern(C) const(char)* function(AtkAction* action, int i) getName;
1446 	/**
1447 	 *
1448 	 * Params:
1449 	 *     action = a #GObject instance that implements AtkActionIface
1450 	 *     i = the action index corresponding to the action to be performed
1451 	 * Returns: the keybinding which can be used to activate
1452 	 *     this action, or %NULL if there is no keybinding for this action.
1453 	 */
1454 	extern(C) const(char)* function(AtkAction* action, int i) getKeybinding;
1455 	/**
1456 	 *
1457 	 * Params:
1458 	 *     action = a #GObject instance that implements AtkActionIface
1459 	 *     i = the action index corresponding to the action to be performed
1460 	 *     desc = the description to be assigned to this action
1461 	 * Returns: a gboolean representing if the description was successfully set;
1462 	 */
1463 	extern(C) int function(AtkAction* action, int i, const(char)* desc) setDescription;
1464 	/**
1465 	 *
1466 	 * Params:
1467 	 *     action = a #GObject instance that implements AtkActionIface
1468 	 *     i = the action index corresponding to the action to be performed
1469 	 * Returns: a name string, or %NULL if @action does not
1470 	 *     implement this interface.
1471 	 */
1472 	extern(C) const(char)* function(AtkAction* action, int i) getLocalizedName;
1473 }
1474 
1475 struct AtkComponent;
1476 
1477 /**
1478  * The AtkComponent interface should be supported by any object that is
1479  * rendered on the screen. The interface provides the standard mechanism
1480  * for an assistive technology to determine and set the graphical
1481  * representation of an object.
1482  */
1483 struct AtkComponentIface
1484 {
1485 	GTypeInterface parent;
1486 	/**
1487 	 *
1488 	 * Params:
1489 	 *     component = The #AtkComponent to attach the @handler to
1490 	 *     handler = The #AtkFocusHandler to be attached to @component
1491 	 * Returns: a handler id which can be used in atk_component_remove_focus_handler()
1492 	 *     or zero if the handler was already added.
1493 	 */
1494 	extern(C) uint function(AtkComponent* component, AtkFocusHandler handler) addFocusHandler;
1495 	/**
1496 	 *
1497 	 * Params:
1498 	 *     component = the #AtkComponent
1499 	 *     x = x coordinate
1500 	 *     y = y coordinate
1501 	 *     coordType = specifies whether the coordinates are relative to the screen
1502 	 *         or to the components top level window
1503 	 * Returns: %TRUE or %FALSE indicating whether the specified point is within
1504 	 *     the extent of the @component or not
1505 	 */
1506 	extern(C) int function(AtkComponent* component, int x, int y, AtkCoordType coordType) contains;
1507 	/**
1508 	 *
1509 	 * Params:
1510 	 *     component = the #AtkComponent
1511 	 *     x = x coordinate
1512 	 *     y = y coordinate
1513 	 *     coordType = specifies whether the coordinates are relative to the screen
1514 	 *         or to the components top level window
1515 	 * Returns: a reference to the accessible
1516 	 *     child, if one exists
1517 	 */
1518 	extern(C) AtkObject* function(AtkComponent* component, int x, int y, AtkCoordType coordType) refAccessibleAtPoint;
1519 	/** */
1520 	extern(C) void function(AtkComponent* component, int* x, int* y, int* width, int* height, AtkCoordType coordType) getExtents;
1521 	/** */
1522 	extern(C) void function(AtkComponent* component, int* x, int* y, AtkCoordType coordType) getPosition;
1523 	/** */
1524 	extern(C) void function(AtkComponent* component, int* width, int* height) getSize;
1525 	/**
1526 	 *
1527 	 * Params:
1528 	 *     component = an #AtkComponent
1529 	 * Returns: %TRUE if successful, %FALSE otherwise.
1530 	 */
1531 	extern(C) int function(AtkComponent* component) grabFocus;
1532 	/** */
1533 	extern(C) void function(AtkComponent* component, uint handlerId) removeFocusHandler;
1534 	/**
1535 	 *
1536 	 * Params:
1537 	 *     component = an #AtkComponent
1538 	 *     x = x coordinate
1539 	 *     y = y coordinate
1540 	 *     width = width to set for @component
1541 	 *     height = height to set for @component
1542 	 *     coordType = specifies whether the coordinates are relative to the screen
1543 	 *         or to the components top level window
1544 	 * Returns: %TRUE or %FALSE whether the extents were set or not
1545 	 */
1546 	extern(C) int function(AtkComponent* component, int x, int y, int width, int height, AtkCoordType coordType) setExtents;
1547 	/**
1548 	 *
1549 	 * Params:
1550 	 *     component = an #AtkComponent
1551 	 *     x = x coordinate
1552 	 *     y = y coordinate
1553 	 *     coordType = specifies whether the coordinates are relative to the screen
1554 	 *         or to the component's top level window
1555 	 * Returns: %TRUE or %FALSE whether or not the position was set or not
1556 	 */
1557 	extern(C) int function(AtkComponent* component, int x, int y, AtkCoordType coordType) setPosition;
1558 	/**
1559 	 *
1560 	 * Params:
1561 	 *     component = an #AtkComponent
1562 	 *     width = width to set for @component
1563 	 *     height = height to set for @component
1564 	 * Returns: %TRUE or %FALSE whether the size was set or not
1565 	 */
1566 	extern(C) int function(AtkComponent* component, int width, int height) setSize;
1567 	/**
1568 	 *
1569 	 * Params:
1570 	 *     component = an #AtkComponent
1571 	 * Returns: an #AtkLayer which is the layer of the component
1572 	 */
1573 	extern(C) AtkLayer function(AtkComponent* component) getLayer;
1574 	/**
1575 	 *
1576 	 * Params:
1577 	 *     component = an #AtkComponent
1578 	 * Returns: a gint which is the zorder of the component, i.e. the depth at
1579 	 *     which the component is shown in relation to other components in the same
1580 	 *     container.
1581 	 */
1582 	extern(C) int function(AtkComponent* component) getMdiZorder;
1583 	/** */
1584 	extern(C) void function(AtkComponent* component, AtkRectangle* bounds) boundsChanged;
1585 	/**
1586 	 *
1587 	 * Params:
1588 	 *     component = an #AtkComponent
1589 	 * Returns: An alpha value from 0 to 1.0, inclusive.
1590 	 */
1591 	extern(C) double function(AtkComponent* component) getAlpha;
1592 	/**
1593 	 *
1594 	 * Params:
1595 	 *     component = an #AtkComponent
1596 	 *     type = specify where the object should be made visible.
1597 	 * Returns: whether scrolling was successful.
1598 	 */
1599 	extern(C) int function(AtkComponent* component, AtkScrollType type) scrollTo;
1600 	/**
1601 	 *
1602 	 * Params:
1603 	 *     component = an #AtkComponent
1604 	 *     coords = specify whether coordinates are relative to the screen or to the
1605 	 *         parent object.
1606 	 *     x = x-position where to scroll to
1607 	 *     y = y-position where to scroll to
1608 	 * Returns: whether scrolling was successful.
1609 	 */
1610 	extern(C) int function(AtkComponent* component, AtkCoordType coords, int x, int y) scrollToPoint;
1611 }
1612 
1613 struct AtkDocument;
1614 
1615 struct AtkDocumentIface
1616 {
1617 	GTypeInterface parent;
1618 	/**
1619 	 *
1620 	 * Params:
1621 	 *     document = a #GObject instance that implements AtkDocumentIface
1622 	 * Returns: a string indicating the document type
1623 	 */
1624 	extern(C) const(char)* function(AtkDocument* document) getDocumentType;
1625 	/**
1626 	 *
1627 	 * Params:
1628 	 *     document = a #GObject instance that implements AtkDocumentIface
1629 	 * Returns: a %gpointer that points to an instance of the DOM.
1630 	 */
1631 	extern(C) void* function(AtkDocument* document) getDocument;
1632 	/**
1633 	 *
1634 	 * Params:
1635 	 *     document = a #GObject instance that implements AtkDocumentIface
1636 	 * Returns: a UTF-8 string indicating the POSIX-style LC_MESSAGES
1637 	 *     locale of the document content as a whole, or NULL if
1638 	 *     the document content does not specify a locale.
1639 	 */
1640 	extern(C) const(char)* function(AtkDocument* document) getDocumentLocale;
1641 	/**
1642 	 *
1643 	 * Params:
1644 	 *     document = a #GObject instance that implements AtkDocumentIface
1645 	 * Returns: An AtkAttributeSet containing the explicitly
1646 	 *     set name-value-pair attributes associated with this document
1647 	 *     as a whole.
1648 	 */
1649 	extern(C) AtkAttributeSet* function(AtkDocument* document) getDocumentAttributes;
1650 	/**
1651 	 *
1652 	 * Params:
1653 	 *     document = a #GObject instance that implements AtkDocumentIface
1654 	 *     attributeName = a character string representing the name of the attribute
1655 	 *         whose value is being queried.
1656 	 * Returns: a string value associated with the named
1657 	 *     attribute for this document, or %NULL if a value for
1658 	 *     @attribute_name has not been specified for this document.
1659 	 */
1660 	extern(C) const(char)* function(AtkDocument* document, const(char)* attributeName) getDocumentAttributeValue;
1661 	/**
1662 	 *
1663 	 * Params:
1664 	 *     document = a #GObject instance that implements #AtkDocumentIface
1665 	 *     attributeName = a character string representing the name of the attribute
1666 	 *         whose value is being set.
1667 	 *     attributeValue = a string value to be associated with @attribute_name.
1668 	 * Returns: %TRUE if @attribute_value is successfully associated
1669 	 *     with @attribute_name for this @document, and %FALSE if if the
1670 	 *     document does not allow the attribute to be modified
1671 	 */
1672 	extern(C) int function(AtkDocument* document, const(char)* attributeName, const(char)* attributeValue) setDocumentAttribute;
1673 	/**
1674 	 *
1675 	 * Params:
1676 	 *     document = the #AtkDocument
1677 	 * Returns: the current page number inside @document, or -1 if
1678 	 *     not implemented, not know by the implementor, or irrelevant.
1679 	 */
1680 	extern(C) int function(AtkDocument* document) getCurrentPageNumber;
1681 	/**
1682 	 *
1683 	 * Params:
1684 	 *     document = the #AtkDocument
1685 	 * Returns: total page count of @document, or -1 if not implemented,
1686 	 *     not know by the implementor or irrelevant.
1687 	 */
1688 	extern(C) int function(AtkDocument* document) getPageCount;
1689 }
1690 
1691 struct AtkEditableText;
1692 
1693 struct AtkEditableTextIface
1694 {
1695 	GTypeInterface parentInterface;
1696 	/**
1697 	 *
1698 	 * Params:
1699 	 *     text = an #AtkEditableText
1700 	 *     attribSet = an #AtkAttributeSet
1701 	 *     startOffset = start of range in which to set attributes
1702 	 *     endOffset = end of range in which to set attributes
1703 	 * Returns: %TRUE if attributes successfully set for the specified
1704 	 *     range, otherwise %FALSE
1705 	 */
1706 	extern(C) int function(AtkEditableText* text, AtkAttributeSet* attribSet, int startOffset, int endOffset) setRunAttributes;
1707 	/** */
1708 	extern(C) void function(AtkEditableText* text, const(char)* string_) setTextContents;
1709 	/** */
1710 	extern(C) void function(AtkEditableText* text, const(char)* string_, int length, int* position) insertText;
1711 	/** */
1712 	extern(C) void function(AtkEditableText* text, int startPos, int endPos) copyText;
1713 	/** */
1714 	extern(C) void function(AtkEditableText* text, int startPos, int endPos) cutText;
1715 	/** */
1716 	extern(C) void function(AtkEditableText* text, int startPos, int endPos) deleteText;
1717 	/** */
1718 	extern(C) void function(AtkEditableText* text, int position) pasteText;
1719 }
1720 
1721 struct AtkGObjectAccessible
1722 {
1723 	AtkObject parent;
1724 }
1725 
1726 struct AtkGObjectAccessibleClass
1727 {
1728 	AtkObjectClass parentClass;
1729 	AtkFunction pad1;
1730 	AtkFunction pad2;
1731 }
1732 
1733 struct AtkHyperlink
1734 {
1735 	GObject parent;
1736 }
1737 
1738 struct AtkHyperlinkClass
1739 {
1740 	GObjectClass parent;
1741 	/**
1742 	 *
1743 	 * Params:
1744 	 *     link = an #AtkHyperlink
1745 	 *     i = a (zero-index) integer specifying the desired anchor
1746 	 * Returns: a string specifying the URI
1747 	 */
1748 	extern(C) char* function(AtkHyperlink* link, int i) getUri;
1749 	/**
1750 	 *
1751 	 * Params:
1752 	 *     link = an #AtkHyperlink
1753 	 *     i = a (zero-index) integer specifying the desired anchor
1754 	 * Returns: an #AtkObject associated with this hyperlinks
1755 	 *     i-th anchor
1756 	 */
1757 	extern(C) AtkObject* function(AtkHyperlink* link, int i) getObject;
1758 	/**
1759 	 *
1760 	 * Params:
1761 	 *     link = an #AtkHyperlink
1762 	 * Returns: the index with the hypertext document at which this link ends
1763 	 */
1764 	extern(C) int function(AtkHyperlink* link) getEndIndex;
1765 	/**
1766 	 *
1767 	 * Params:
1768 	 *     link = an #AtkHyperlink
1769 	 * Returns: the index with the hypertext document at which this link begins
1770 	 */
1771 	extern(C) int function(AtkHyperlink* link) getStartIndex;
1772 	/**
1773 	 *
1774 	 * Params:
1775 	 *     link = an #AtkHyperlink
1776 	 * Returns: whether or not this link is still valid
1777 	 */
1778 	extern(C) int function(AtkHyperlink* link) isValid;
1779 	/**
1780 	 *
1781 	 * Params:
1782 	 *     link = an #AtkHyperlink
1783 	 * Returns: the number of anchors associated with this hyperlink
1784 	 */
1785 	extern(C) int function(AtkHyperlink* link) getNAnchors;
1786 	/** */
1787 	extern(C) uint function(AtkHyperlink* link) linkState;
1788 	/**
1789 	 *
1790 	 * Params:
1791 	 *     link = an #AtkHyperlink
1792 	 * Returns: True if the AtkHyperlink is selected, False otherwise
1793 	 */
1794 	extern(C) int function(AtkHyperlink* link) isSelectedLink;
1795 	/** */
1796 	extern(C) void function(AtkHyperlink* link) linkActivated;
1797 	AtkFunction pad1;
1798 }
1799 
1800 struct AtkHyperlinkImpl;
1801 
1802 struct AtkHyperlinkImplIface
1803 {
1804 	GTypeInterface parent;
1805 	/**
1806 	 *
1807 	 * Params:
1808 	 *     impl = a #GObject instance that implements AtkHyperlinkImplIface
1809 	 * Returns: an AtkHyperlink object which points to this
1810 	 *     implementing AtkObject.
1811 	 */
1812 	extern(C) AtkHyperlink* function(AtkHyperlinkImpl* impl) getHyperlink;
1813 }
1814 
1815 struct AtkHypertext;
1816 
1817 struct AtkHypertextIface
1818 {
1819 	GTypeInterface parent;
1820 	/**
1821 	 *
1822 	 * Params:
1823 	 *     hypertext = an #AtkHypertext
1824 	 *     linkIndex = an integer specifying the desired link
1825 	 * Returns: the link in this hypertext document at
1826 	 *     index @link_index
1827 	 */
1828 	extern(C) AtkHyperlink* function(AtkHypertext* hypertext, int linkIndex) getLink;
1829 	/**
1830 	 *
1831 	 * Params:
1832 	 *     hypertext = an #AtkHypertext
1833 	 * Returns: the number of links within this hypertext document
1834 	 */
1835 	extern(C) int function(AtkHypertext* hypertext) getNLinks;
1836 	/**
1837 	 *
1838 	 * Params:
1839 	 *     hypertext = an #AtkHypertext
1840 	 *     charIndex = a character index
1841 	 * Returns: an index into the array of hyperlinks in @hypertext,
1842 	 *     or -1 if there is no hyperlink associated with this character.
1843 	 */
1844 	extern(C) int function(AtkHypertext* hypertext, int charIndex) getLinkIndex;
1845 	/** */
1846 	extern(C) void function(AtkHypertext* hypertext, int linkIndex) linkSelected;
1847 }
1848 
1849 struct AtkImage;
1850 
1851 struct AtkImageIface
1852 {
1853 	GTypeInterface parent;
1854 	/** */
1855 	extern(C) void function(AtkImage* image, int* x, int* y, AtkCoordType coordType) getImagePosition;
1856 	/**
1857 	 *
1858 	 * Params:
1859 	 *     image = a #GObject instance that implements AtkImageIface
1860 	 * Returns: a string representing the image description
1861 	 */
1862 	extern(C) const(char)* function(AtkImage* image) getImageDescription;
1863 	/** */
1864 	extern(C) void function(AtkImage* image, int* width, int* height) getImageSize;
1865 	/**
1866 	 *
1867 	 * Params:
1868 	 *     image = a #GObject instance that implements AtkImageIface
1869 	 *     description = a string description to set for @image
1870 	 * Returns: boolean TRUE, or FALSE if operation could
1871 	 *     not be completed.
1872 	 */
1873 	extern(C) int function(AtkImage* image, const(char)* description) setImageDescription;
1874 	/**
1875 	 *
1876 	 * Params:
1877 	 *     image = An #AtkImage
1878 	 * Returns: a string corresponding to the POSIX
1879 	 *     `LC_MESSAGES` locale used by the image description, or
1880 	 *     %NULL if the image does not specify a locale.
1881 	 */
1882 	extern(C) const(char)* function(AtkImage* image) getImageLocale;
1883 }
1884 
1885 struct AtkImplementor;
1886 
1887 /**
1888  * Encapsulates information about a key event.
1889  */
1890 struct AtkKeyEventStruct
1891 {
1892 	/**
1893 	 * An AtkKeyEventType, generally one of ATK_KEY_EVENT_PRESS or ATK_KEY_EVENT_RELEASE
1894 	 */
1895 	int type;
1896 	/**
1897 	 * A bitmask representing the state of the modifier keys immediately after the event takes place.
1898 	 * The meaning of the bits is currently defined to match the bitmask used by GDK in
1899 	 * GdkEventType.state, see
1900 	 * http://developer.gnome.org/doc/API/2.0/gdk/gdk-Event-Structures.html#GdkEventKey
1901 	 */
1902 	uint state;
1903 	/**
1904 	 * A guint representing a keysym value corresponding to those used by GDK and X11: see
1905 	 * /usr/X11/include/keysymdef.h.
1906 	 */
1907 	uint keyval;
1908 	/**
1909 	 * The length of member #string.
1910 	 */
1911 	int length;
1912 	/**
1913 	 * A string containing one of the following: either a string approximating the text that would
1914 	 * result from this keypress, if the key is a control or graphic character, or a symbolic name for this keypress.
1915 	 * Alphanumeric and printable keys will have the symbolic key name in this string member, for instance "A". "0",
1916 	 * "semicolon", "aacute".  Keypad keys have the prefix "KP".
1917 	 */
1918 	char* string_;
1919 	/**
1920 	 * The raw hardware code that generated the key event.  This field is raraly useful.
1921 	 */
1922 	ushort keycode;
1923 	/**
1924 	 * A timestamp in milliseconds indicating when the event occurred.
1925 	 * These timestamps are relative to a starting point which should be considered arbitrary,
1926 	 * and only used to compare the dispatch times of events to one another.
1927 	 */
1928 	uint timestamp;
1929 }
1930 
1931 struct AtkMisc
1932 {
1933 	GObject parent;
1934 }
1935 
1936 /**
1937  * Usage of AtkMisc is deprecated since 2.12 and heavily discouraged.
1938  */
1939 struct AtkMiscClass
1940 {
1941 	GObjectClass parent;
1942 	/** */
1943 	extern(C) void function(AtkMisc* misc) threadsEnter;
1944 	/** */
1945 	extern(C) void function(AtkMisc* misc) threadsLeave;
1946 	void*[32] vfuncs;
1947 }
1948 
1949 struct AtkNoOpObject
1950 {
1951 	AtkObject parent;
1952 }
1953 
1954 struct AtkNoOpObjectClass
1955 {
1956 	AtkObjectClass parentClass;
1957 }
1958 
1959 struct AtkNoOpObjectFactory
1960 {
1961 	AtkObjectFactory parent;
1962 }
1963 
1964 struct AtkNoOpObjectFactoryClass
1965 {
1966 	AtkObjectFactoryClass parentClass;
1967 }
1968 
1969 struct AtkObject
1970 {
1971 	GObject parent;
1972 	char* description;
1973 	char* name;
1974 	AtkObject* accessibleParent;
1975 	AtkRole role;
1976 	AtkRelationSet* relationSet;
1977 	AtkLayer layer;
1978 }
1979 
1980 struct AtkObjectClass
1981 {
1982 	GObjectClass parent;
1983 	/**
1984 	 *
1985 	 * Params:
1986 	 *     accessible = an #AtkObject
1987 	 * Returns: a character string representing the accessible name of the object.
1988 	 */
1989 	extern(C) const(char)* function(AtkObject* accessible) getName;
1990 	/**
1991 	 *
1992 	 * Params:
1993 	 *     accessible = an #AtkObject
1994 	 * Returns: a character string representing the accessible description
1995 	 *     of the accessible.
1996 	 */
1997 	extern(C) const(char)* function(AtkObject* accessible) getDescription;
1998 	/**
1999 	 *
2000 	 * Params:
2001 	 *     accessible = an #AtkObject
2002 	 * Returns: an #AtkObject representing the accessible
2003 	 *     parent of the accessible
2004 	 */
2005 	extern(C) AtkObject* function(AtkObject* accessible) getParent;
2006 	/** */
2007 	extern(C) int function(AtkObject* accessible) getNChildren;
2008 	/** */
2009 	extern(C) AtkObject* function(AtkObject* accessible, int i) refChild;
2010 	/**
2011 	 *
2012 	 * Params:
2013 	 *     accessible = an #AtkObject
2014 	 * Returns: an integer which is the index of the accessible in its parent
2015 	 */
2016 	extern(C) int function(AtkObject* accessible) getIndexInParent;
2017 	/**
2018 	 *
2019 	 * Params:
2020 	 *     accessible = an #AtkObject
2021 	 * Returns: an #AtkRelationSet representing the relation set
2022 	 *     of the object.
2023 	 */
2024 	extern(C) AtkRelationSet* function(AtkObject* accessible) refRelationSet;
2025 	/**
2026 	 *
2027 	 * Params:
2028 	 *     accessible = an #AtkObject
2029 	 * Returns: an #AtkRole which is the role of the accessible
2030 	 */
2031 	extern(C) AtkRole function(AtkObject* accessible) getRole;
2032 	/**
2033 	 *
2034 	 * Params:
2035 	 *     accessible = an #AtkObject
2036 	 * Returns: an #AtkLayer which is the layer of the accessible
2037 	 */
2038 	extern(C) AtkLayer function(AtkObject* accessible) getLayer;
2039 	/**
2040 	 *
2041 	 * Params:
2042 	 *     accessible = an #AtkObject
2043 	 * Returns: a gint which is the zorder of the accessible, i.e. the depth at
2044 	 *     which the component is shown in relation to other components in the same
2045 	 *     container.
2046 	 */
2047 	extern(C) int function(AtkObject* accessible) getMdiZorder;
2048 	/**
2049 	 *
2050 	 * Params:
2051 	 *     accessible = an #AtkObject
2052 	 * Returns: a reference to an #AtkStateSet which is the state
2053 	 *     set of the accessible
2054 	 */
2055 	extern(C) AtkStateSet* function(AtkObject* accessible) refStateSet;
2056 	/** */
2057 	extern(C) void function(AtkObject* accessible, const(char)* name) setName;
2058 	/** */
2059 	extern(C) void function(AtkObject* accessible, const(char)* description) setDescription;
2060 	/** */
2061 	extern(C) void function(AtkObject* accessible, AtkObject* parent) setParent;
2062 	/** */
2063 	extern(C) void function(AtkObject* accessible, AtkRole role) setRole;
2064 	/**
2065 	 *
2066 	 * Params:
2067 	 *     accessible = an #AtkObject
2068 	 *     handler = a function to be called when a property changes its value
2069 	 * Returns: a #guint which is the handler id used in
2070 	 *     atk_object_remove_property_change_handler()
2071 	 */
2072 	extern(C) uint function(AtkObject* accessible, AtkPropertyChangeHandler* handler) connectPropertyChangeHandler;
2073 	/** */
2074 	extern(C) void function(AtkObject* accessible, uint handlerId) removePropertyChangeHandler;
2075 	/** */
2076 	extern(C) void function(AtkObject* accessible, void* data) initialize;
2077 	/** */
2078 	extern(C) void function(AtkObject* accessible, uint changeIndex, void* changedChild) childrenChanged;
2079 	/** */
2080 	extern(C) void function(AtkObject* accessible, int focusIn) focusEvent;
2081 	/** */
2082 	extern(C) void function(AtkObject* accessible, AtkPropertyValues* values) propertyChange;
2083 	/** */
2084 	extern(C) void function(AtkObject* accessible, const(char)* name, int stateSet) stateChange;
2085 	/** */
2086 	extern(C) void function(AtkObject* accessible) visibleDataChanged;
2087 	/** */
2088 	extern(C) void function(AtkObject* accessible, void** child) activeDescendantChanged;
2089 	/**
2090 	 *
2091 	 * Params:
2092 	 *     accessible = An #AtkObject.
2093 	 * Returns: an #AtkAttributeSet consisting of all
2094 	 *     explicit properties/annotations applied to the object, or an empty
2095 	 *     set if the object has no name-value pair attributes assigned to
2096 	 *     it. This #atkattributeset should be freed by a call to
2097 	 *     atk_attribute_set_free().
2098 	 */
2099 	extern(C) AtkAttributeSet* function(AtkObject* accessible) getAttributes;
2100 	/**
2101 	 *
2102 	 * Params:
2103 	 *     accessible = an #AtkObject
2104 	 * Returns: a UTF-8 string indicating the POSIX-style LC_MESSAGES
2105 	 *     locale of @accessible.
2106 	 */
2107 	extern(C) const(char)* function(AtkObject* accessible) getObjectLocale;
2108 	AtkFunction pad1;
2109 }
2110 
2111 struct AtkObjectFactory
2112 {
2113 	GObject parent;
2114 }
2115 
2116 struct AtkObjectFactoryClass
2117 {
2118 	GObjectClass parentClass;
2119 	/** */
2120 	extern(C) AtkObject* function(GObject* obj) createAccessible;
2121 	/** */
2122 	extern(C) void function(AtkObjectFactory* factory) invalidate;
2123 	/** */
2124 	extern(C) GType function() getAccessibleType;
2125 	AtkFunction pad1;
2126 	AtkFunction pad2;
2127 }
2128 
2129 struct AtkPlug
2130 {
2131 	AtkObject parent;
2132 }
2133 
2134 struct AtkPlugClass
2135 {
2136 	AtkObjectClass parentClass;
2137 	/** */
2138 	extern(C) char* function(AtkPlug* obj) getObjectId;
2139 }
2140 
2141 /**
2142  * Note: @old_value field of #AtkPropertyValues will not contain a
2143  * valid value. This is a field defined with the purpose of contain
2144  * the previous value of the property, but is not used anymore.
2145  */
2146 struct AtkPropertyValues
2147 {
2148 	/**
2149 	 * The name of the ATK property which has changed.
2150 	 */
2151 	const(char)* propertyName;
2152 	/**
2153 	 * NULL. This field is not used anymore.
2154 	 */
2155 	GValue oldValue;
2156 	/**
2157 	 * The new value of the named property.
2158 	 */
2159 	GValue newValue;
2160 }
2161 
2162 struct AtkRange;
2163 
2164 /**
2165  * A data structure for holding a rectangle. Those coordinates are
2166  * relative to the component top-level parent.
2167  */
2168 struct AtkRectangle
2169 {
2170 	/**
2171 	 * X coordinate of the left side of the rectangle.
2172 	 */
2173 	int x;
2174 	/**
2175 	 * Y coordinate of the top side of the rectangle.
2176 	 */
2177 	int y;
2178 	/**
2179 	 * width of the rectangle.
2180 	 */
2181 	int width;
2182 	/**
2183 	 * height of the rectangle.
2184 	 */
2185 	int height;
2186 }
2187 
2188 struct AtkRegistry
2189 {
2190 	GObject parent;
2191 	GHashTable* factoryTypeRegistry;
2192 	GHashTable* factorySingletonCache;
2193 }
2194 
2195 struct AtkRegistryClass
2196 {
2197 	GObjectClass parentClass;
2198 }
2199 
2200 struct AtkRelation
2201 {
2202 	GObject parent;
2203 	GPtrArray* target;
2204 	AtkRelationType relationship;
2205 }
2206 
2207 struct AtkRelationClass
2208 {
2209 	GObjectClass parent;
2210 }
2211 
2212 struct AtkRelationSet
2213 {
2214 	GObject parent;
2215 	GPtrArray* relations;
2216 }
2217 
2218 struct AtkRelationSetClass
2219 {
2220 	GObjectClass parent;
2221 	AtkFunction pad1;
2222 	AtkFunction pad2;
2223 }
2224 
2225 struct AtkSelection;
2226 
2227 struct AtkSelectionIface
2228 {
2229 	GTypeInterface parent;
2230 	/**
2231 	 *
2232 	 * Params:
2233 	 *     selection = a #GObject instance that implements AtkSelectionIface
2234 	 *     i = a #gint specifying the child index.
2235 	 * Returns: TRUE if success, FALSE otherwise.
2236 	 */
2237 	extern(C) int function(AtkSelection* selection, int i) addSelection;
2238 	/**
2239 	 *
2240 	 * Params:
2241 	 *     selection = a #GObject instance that implements AtkSelectionIface
2242 	 * Returns: TRUE if success, FALSE otherwise.
2243 	 */
2244 	extern(C) int function(AtkSelection* selection) clearSelection;
2245 	/**
2246 	 *
2247 	 * Params:
2248 	 *     selection = a #GObject instance that implements AtkSelectionIface
2249 	 *     i = a #gint specifying the index in the selection set.  (e.g. the
2250 	 *         ith selection as opposed to the ith child).
2251 	 * Returns: an #AtkObject representing the
2252 	 *     selected accessible, or %NULL if @selection does not implement this
2253 	 *     interface.
2254 	 */
2255 	extern(C) AtkObject* function(AtkSelection* selection, int i) refSelection;
2256 	/**
2257 	 *
2258 	 * Params:
2259 	 *     selection = a #GObject instance that implements AtkSelectionIface
2260 	 * Returns: a gint representing the number of items selected, or 0
2261 	 *     if @selection does not implement this interface.
2262 	 */
2263 	extern(C) int function(AtkSelection* selection) getSelectionCount;
2264 	/**
2265 	 *
2266 	 * Params:
2267 	 *     selection = a #GObject instance that implements AtkSelectionIface
2268 	 *     i = a #gint specifying the child index.
2269 	 * Returns: a gboolean representing the specified child is selected, or 0
2270 	 *     if @selection does not implement this interface.
2271 	 */
2272 	extern(C) int function(AtkSelection* selection, int i) isChildSelected;
2273 	/**
2274 	 *
2275 	 * Params:
2276 	 *     selection = a #GObject instance that implements AtkSelectionIface
2277 	 *     i = a #gint specifying the index in the selection set.  (e.g. the
2278 	 *         ith selection as opposed to the ith child).
2279 	 * Returns: TRUE if success, FALSE otherwise.
2280 	 */
2281 	extern(C) int function(AtkSelection* selection, int i) removeSelection;
2282 	/**
2283 	 *
2284 	 * Params:
2285 	 *     selection = a #GObject instance that implements AtkSelectionIface
2286 	 * Returns: TRUE if success, FALSE otherwise.
2287 	 */
2288 	extern(C) int function(AtkSelection* selection) selectAllSelection;
2289 	/** */
2290 	extern(C) void function(AtkSelection* selection) selectionChanged;
2291 }
2292 
2293 struct AtkSocket
2294 {
2295 	AtkObject parent;
2296 	char* embeddedPlugId;
2297 }
2298 
2299 struct AtkSocketClass
2300 {
2301 	AtkObjectClass parentClass;
2302 	/** */
2303 	extern(C) void function(AtkSocket* obj, char* plugId) embed;
2304 }
2305 
2306 struct AtkStateSet
2307 {
2308 	GObject parent;
2309 }
2310 
2311 struct AtkStateSetClass
2312 {
2313 	GObjectClass parent;
2314 }
2315 
2316 struct AtkStreamableContent;
2317 
2318 struct AtkStreamableContentIface
2319 {
2320 	GTypeInterface parent;
2321 	/**
2322 	 *
2323 	 * Params:
2324 	 *     streamable = a GObject instance that implements AtkStreamableContentIface
2325 	 * Returns: a gint which is the number of mime types supported by the object.
2326 	 */
2327 	extern(C) int function(AtkStreamableContent* streamable) getNMimeTypes;
2328 	/**
2329 	 *
2330 	 * Params:
2331 	 *     streamable = a GObject instance that implements AtkStreamableContent
2332 	 *     i = a gint representing the position of the mime type starting from 0
2333 	 * Returns: a gchar* representing the specified mime type; the caller
2334 	 *     should not free the character string.
2335 	 */
2336 	extern(C) const(char)* function(AtkStreamableContent* streamable, int i) getMimeType;
2337 	/**
2338 	 *
2339 	 * Params:
2340 	 *     streamable = a GObject instance that implements AtkStreamableContentIface
2341 	 *     mimeType = a gchar* representing the mime type
2342 	 * Returns: A #GIOChannel which contains the content in the
2343 	 *     specified mime type.
2344 	 */
2345 	extern(C) GIOChannel* function(AtkStreamableContent* streamable, const(char)* mimeType) getStream;
2346 	/**
2347 	 *
2348 	 * Params:
2349 	 *     streamable = a GObject instance that implements AtkStreamableContentIface
2350 	 *     mimeType = a gchar* representing the mime type, or NULL to request a URI
2351 	 *         for the default mime type.
2352 	 * Returns: Returns a string representing a URI, or %NULL
2353 	 *     if no corresponding URI can be constructed.
2354 	 */
2355 	extern(C) const(char)* function(AtkStreamableContent* streamable, const(char)* mimeType) getUri;
2356 	AtkFunction pad1;
2357 	AtkFunction pad2;
2358 	AtkFunction pad3;
2359 }
2360 
2361 struct AtkTable;
2362 
2363 struct AtkTableCell;
2364 
2365 /**
2366  * AtkTableCell is an interface for cells inside an #AtkTable.
2367  *
2368  * Since: 2.12
2369  */
2370 struct AtkTableCellIface
2371 {
2372 	GTypeInterface parent;
2373 	/**
2374 	 *
2375 	 * Params:
2376 	 *     cell = a GObject instance that implements AtkTableCellIface
2377 	 * Returns: a gint representing the number of columns occupied by this cell,
2378 	 *     or 0 if the cell does not implement this method.
2379 	 */
2380 	extern(C) int function(AtkTableCell* cell) getColumnSpan;
2381 	/**
2382 	 *
2383 	 * Params:
2384 	 *     cell = a GObject instance that implements AtkTableCellIface
2385 	 * Returns: a GPtrArray of AtkObjects
2386 	 *     representing the column header cells.
2387 	 */
2388 	extern(C) GPtrArray* function(AtkTableCell* cell) getColumnHeaderCells;
2389 	/**
2390 	 *
2391 	 * Params:
2392 	 *     cell = a GObject instance that implements AtkTableCellIface
2393 	 *     row = the row of the given cell.
2394 	 *     column = the column of the given cell.
2395 	 * Returns: TRUE if successful; FALSE otherwise.
2396 	 */
2397 	extern(C) int function(AtkTableCell* cell, int* row, int* column) getPosition;
2398 	/**
2399 	 *
2400 	 * Params:
2401 	 *     cell = a GObject instance that implements AtkTableCellIface
2402 	 * Returns: a gint representing the number of rows occupied by this cell,
2403 	 *     or 0 if the cell does not implement this method.
2404 	 */
2405 	extern(C) int function(AtkTableCell* cell) getRowSpan;
2406 	/**
2407 	 *
2408 	 * Params:
2409 	 *     cell = a GObject instance that implements AtkTableCellIface
2410 	 * Returns: a GPtrArray of AtkObjects
2411 	 *     representing the row header cells.
2412 	 */
2413 	extern(C) GPtrArray* function(AtkTableCell* cell) getRowHeaderCells;
2414 	/**
2415 	 *
2416 	 * Params:
2417 	 *     cell = a GObject instance that implements AtkTableCellIface
2418 	 *     row = the row index of the given cell.
2419 	 *     column = the column index of the given cell.
2420 	 *     rowSpan = the number of rows occupied by this cell.
2421 	 *     columnSpan = the number of columns occupied by this cell.
2422 	 * Returns: TRUE if successful; FALSE otherwise.
2423 	 */
2424 	extern(C) int function(AtkTableCell* cell, int* row, int* column, int* rowSpan, int* columnSpan) getRowColumnSpan;
2425 	/**
2426 	 *
2427 	 * Params:
2428 	 *     cell = a GObject instance that implements AtkTableCellIface
2429 	 * Returns: the atk object for the containing table.
2430 	 */
2431 	extern(C) AtkObject* function(AtkTableCell* cell) getTable;
2432 }
2433 
2434 struct AtkTableIface
2435 {
2436 	GTypeInterface parent;
2437 	/**
2438 	 *
2439 	 * Params:
2440 	 *     table = a GObject instance that implements AtkTableIface
2441 	 *     row = a #gint representing a row in @table
2442 	 *     column = a #gint representing a column in @table
2443 	 * Returns: an #AtkObject representing the referred
2444 	 *     to accessible
2445 	 */
2446 	extern(C) AtkObject* function(AtkTable* table, int row, int column) refAt;
2447 	/**
2448 	 *
2449 	 * Params:
2450 	 *     table = a GObject instance that implements AtkTableIface
2451 	 *     row = a #gint representing a row in @table
2452 	 *     column = a #gint representing a column in @table
2453 	 * Returns: a #gint representing the index at specified position.
2454 	 *     The value -1 is returned if the object at row,column is not a child
2455 	 *     of table or table does not implement this interface.
2456 	 */
2457 	extern(C) int function(AtkTable* table, int row, int column) getIndexAt;
2458 	/**
2459 	 *
2460 	 * Params:
2461 	 *     table = a GObject instance that implements AtkTableInterface
2462 	 *     index = a #gint representing an index in @table
2463 	 * Returns: a gint representing the column at the specified index,
2464 	 *     or -1 if the table does not implement this method.
2465 	 */
2466 	extern(C) int function(AtkTable* table, int index) getColumnAtIndex;
2467 	/**
2468 	 *
2469 	 * Params:
2470 	 *     table = a GObject instance that implements AtkTableInterface
2471 	 *     index = a #gint representing an index in @table
2472 	 * Returns: a gint representing the row at the specified index,
2473 	 *     or -1 if the table does not implement this method.
2474 	 */
2475 	extern(C) int function(AtkTable* table, int index) getRowAtIndex;
2476 	/**
2477 	 *
2478 	 * Params:
2479 	 *     table = a GObject instance that implements AtkTableIface
2480 	 * Returns: a gint representing the number of columns, or 0
2481 	 *     if value does not implement this interface.
2482 	 */
2483 	extern(C) int function(AtkTable* table) getNColumns;
2484 	/**
2485 	 *
2486 	 * Params:
2487 	 *     table = a GObject instance that implements AtkTableIface
2488 	 * Returns: a gint representing the number of rows, or 0
2489 	 *     if value does not implement this interface.
2490 	 */
2491 	extern(C) int function(AtkTable* table) getNRows;
2492 	/**
2493 	 *
2494 	 * Params:
2495 	 *     table = a GObject instance that implements AtkTableIface
2496 	 *     row = a #gint representing a row in @table
2497 	 *     column = a #gint representing a column in @table
2498 	 * Returns: a gint representing the column extent at specified position, or 0
2499 	 *     if value does not implement this interface.
2500 	 */
2501 	extern(C) int function(AtkTable* table, int row, int column) getColumnExtentAt;
2502 	/**
2503 	 *
2504 	 * Params:
2505 	 *     table = a GObject instance that implements AtkTableIface
2506 	 *     row = a #gint representing a row in @table
2507 	 *     column = a #gint representing a column in @table
2508 	 * Returns: a gint representing the row extent at specified position, or 0
2509 	 *     if value does not implement this interface.
2510 	 */
2511 	extern(C) int function(AtkTable* table, int row, int column) getRowExtentAt;
2512 	/**
2513 	 *
2514 	 * Params:
2515 	 *     table = a GObject instance that implements AtkTableInterface
2516 	 * Returns: a AtkObject* representing the
2517 	 *     table caption, or %NULL if value does not implement this interface.
2518 	 */
2519 	extern(C) AtkObject* function(AtkTable* table) getCaption;
2520 	/**
2521 	 *
2522 	 * Params:
2523 	 *     table = a GObject instance that implements AtkTableIface
2524 	 *     column = a #gint representing a column in @table
2525 	 * Returns: a gchar* representing the column description, or %NULL
2526 	 *     if value does not implement this interface.
2527 	 */
2528 	extern(C) const(char)* function(AtkTable* table, int column) getColumnDescription;
2529 	/**
2530 	 *
2531 	 * Params:
2532 	 *     table = a GObject instance that implements AtkTableIface
2533 	 *     column = a #gint representing a column in the table
2534 	 * Returns: a AtkObject* representing the
2535 	 *     specified column header, or %NULL if value does not implement this
2536 	 *     interface.
2537 	 */
2538 	extern(C) AtkObject* function(AtkTable* table, int column) getColumnHeader;
2539 	/**
2540 	 *
2541 	 * Params:
2542 	 *     table = a GObject instance that implements AtkTableIface
2543 	 *     row = a #gint representing a row in @table
2544 	 * Returns: a gchar* representing the row description, or
2545 	 *     %NULL if value does not implement this interface.
2546 	 */
2547 	extern(C) const(char)* function(AtkTable* table, int row) getRowDescription;
2548 	/**
2549 	 *
2550 	 * Params:
2551 	 *     table = a GObject instance that implements AtkTableIface
2552 	 *     row = a #gint representing a row in the table
2553 	 * Returns: a AtkObject* representing the
2554 	 *     specified row header, or %NULL if value does not implement this
2555 	 *     interface.
2556 	 */
2557 	extern(C) AtkObject* function(AtkTable* table, int row) getRowHeader;
2558 	/**
2559 	 *
2560 	 * Params:
2561 	 *     table = a GObject instance that implements AtkTableIface
2562 	 * Returns: a AtkObject* representing a summary description
2563 	 *     of the table, or zero if value does not implement this interface.
2564 	 */
2565 	extern(C) AtkObject* function(AtkTable* table) getSummary;
2566 	/** */
2567 	extern(C) void function(AtkTable* table, AtkObject* caption) setCaption;
2568 	/** */
2569 	extern(C) void function(AtkTable* table, int column, const(char)* description) setColumnDescription;
2570 	/** */
2571 	extern(C) void function(AtkTable* table, int column, AtkObject* header) setColumnHeader;
2572 	/** */
2573 	extern(C) void function(AtkTable* table, int row, const(char)* description) setRowDescription;
2574 	/** */
2575 	extern(C) void function(AtkTable* table, int row, AtkObject* header) setRowHeader;
2576 	/** */
2577 	extern(C) void function(AtkTable* table, AtkObject* accessible) setSummary;
2578 	/**
2579 	 *
2580 	 * Params:
2581 	 *     table = a GObject instance that implements AtkTableIface
2582 	 *     selected = a #gint** that is to contain the selected columns numbers
2583 	 * Returns: a gint representing the number of selected columns,
2584 	 *     or %0 if value does not implement this interface.
2585 	 */
2586 	extern(C) int function(AtkTable* table, int** selected) getSelectedColumns;
2587 	/**
2588 	 *
2589 	 * Params:
2590 	 *     table = a GObject instance that implements AtkTableIface
2591 	 *     selected = a #gint** that is to contain the selected row numbers
2592 	 * Returns: a gint representing the number of selected rows,
2593 	 *     or zero if value does not implement this interface.
2594 	 */
2595 	extern(C) int function(AtkTable* table, int** selected) getSelectedRows;
2596 	/**
2597 	 *
2598 	 * Params:
2599 	 *     table = a GObject instance that implements AtkTableIface
2600 	 *     column = a #gint representing a column in @table
2601 	 * Returns: a gboolean representing if the column is selected, or 0
2602 	 *     if value does not implement this interface.
2603 	 */
2604 	extern(C) int function(AtkTable* table, int column) isColumnSelected;
2605 	/**
2606 	 *
2607 	 * Params:
2608 	 *     table = a GObject instance that implements AtkTableIface
2609 	 *     row = a #gint representing a row in @table
2610 	 * Returns: a gboolean representing if the row is selected, or 0
2611 	 *     if value does not implement this interface.
2612 	 */
2613 	extern(C) int function(AtkTable* table, int row) isRowSelected;
2614 	/**
2615 	 *
2616 	 * Params:
2617 	 *     table = a GObject instance that implements AtkTableIface
2618 	 *     row = a #gint representing a row in @table
2619 	 *     column = a #gint representing a column in @table
2620 	 * Returns: a gboolean representing if the cell is selected, or 0
2621 	 *     if value does not implement this interface.
2622 	 */
2623 	extern(C) int function(AtkTable* table, int row, int column) isSelected;
2624 	/**
2625 	 *
2626 	 * Params:
2627 	 *     table = a GObject instance that implements AtkTableIface
2628 	 *     row = a #gint representing a row in @table
2629 	 * Returns: a gboolean representing if row was successfully added to selection,
2630 	 *     or 0 if value does not implement this interface.
2631 	 */
2632 	extern(C) int function(AtkTable* table, int row) addRowSelection;
2633 	/**
2634 	 *
2635 	 * Params:
2636 	 *     table = a GObject instance that implements AtkTableIface
2637 	 *     row = a #gint representing a row in @table
2638 	 * Returns: a gboolean representing if the row was successfully removed from
2639 	 *     the selection, or 0 if value does not implement this interface.
2640 	 */
2641 	extern(C) int function(AtkTable* table, int row) removeRowSelection;
2642 	/**
2643 	 *
2644 	 * Params:
2645 	 *     table = a GObject instance that implements AtkTableIface
2646 	 *     column = a #gint representing a column in @table
2647 	 * Returns: a gboolean representing if the column was successfully added to
2648 	 *     the selection, or 0 if value does not implement this interface.
2649 	 */
2650 	extern(C) int function(AtkTable* table, int column) addColumnSelection;
2651 	/**
2652 	 *
2653 	 * Params:
2654 	 *     table = a GObject instance that implements AtkTableIface
2655 	 *     column = a #gint representing a column in @table
2656 	 * Returns: a gboolean representing if the column was successfully removed from
2657 	 *     the selection, or 0 if value does not implement this interface.
2658 	 */
2659 	extern(C) int function(AtkTable* table, int column) removeColumnSelection;
2660 	/** */
2661 	extern(C) void function(AtkTable* table, int row, int numInserted) rowInserted;
2662 	/** */
2663 	extern(C) void function(AtkTable* table, int column, int numInserted) columnInserted;
2664 	/** */
2665 	extern(C) void function(AtkTable* table, int row, int numDeleted) rowDeleted;
2666 	/** */
2667 	extern(C) void function(AtkTable* table, int column, int numDeleted) columnDeleted;
2668 	/** */
2669 	extern(C) void function(AtkTable* table) rowReordered;
2670 	/** */
2671 	extern(C) void function(AtkTable* table) columnReordered;
2672 	/** */
2673 	extern(C) void function(AtkTable* table) modelChanged;
2674 }
2675 
2676 struct AtkText;
2677 
2678 struct AtkTextIface
2679 {
2680 	GTypeInterface parent;
2681 	/**
2682 	 *
2683 	 * Params:
2684 	 *     text = an #AtkText
2685 	 *     startOffset = a starting character offset within @text
2686 	 *     endOffset = an ending character offset within @text, or -1 for the end of the string.
2687 	 * Returns: a newly allocated string containing the text from @start_offset up
2688 	 *     to, but not including @end_offset. Use g_free() to free the returned
2689 	 *     string.
2690 	 */
2691 	extern(C) char* function(AtkText* text, int startOffset, int endOffset) getText;
2692 	/**
2693 	 *
2694 	 * Params:
2695 	 *     text = an #AtkText
2696 	 *     offset = position
2697 	 *     boundaryType = An #AtkTextBoundary
2698 	 *     startOffset = the starting character offset of the returned string
2699 	 *     endOffset = the offset of the first character after the
2700 	 *         returned substring
2701 	 * Returns: a newly allocated string containing the text after @offset bounded
2702 	 *     by the specified @boundary_type. Use g_free() to free the returned
2703 	 *     string.
2704 	 */
2705 	extern(C) char* function(AtkText* text, int offset, AtkTextBoundary boundaryType, int* startOffset, int* endOffset) getTextAfterOffset;
2706 	/**
2707 	 *
2708 	 * Params:
2709 	 *     text = an #AtkText
2710 	 *     offset = position
2711 	 *     boundaryType = An #AtkTextBoundary
2712 	 *     startOffset = the starting character offset of the returned string
2713 	 *     endOffset = the offset of the first character after the
2714 	 *         returned substring
2715 	 * Returns: a newly allocated string containing the text at @offset bounded
2716 	 *     by the specified @boundary_type. Use g_free() to free the returned
2717 	 *     string.
2718 	 */
2719 	extern(C) char* function(AtkText* text, int offset, AtkTextBoundary boundaryType, int* startOffset, int* endOffset) getTextAtOffset;
2720 	/**
2721 	 *
2722 	 * Params:
2723 	 *     text = an #AtkText
2724 	 *     offset = a character offset within @text
2725 	 * Returns: the character at @offset or 0 in the case of failure.
2726 	 */
2727 	extern(C) dchar function(AtkText* text, int offset) getCharacterAtOffset;
2728 	/**
2729 	 *
2730 	 * Params:
2731 	 *     text = an #AtkText
2732 	 *     offset = position
2733 	 *     boundaryType = An #AtkTextBoundary
2734 	 *     startOffset = the starting character offset of the returned string
2735 	 *     endOffset = the offset of the first character after the
2736 	 *         returned substring
2737 	 * Returns: a newly allocated string containing the text before @offset bounded
2738 	 *     by the specified @boundary_type. Use g_free() to free the returned
2739 	 *     string.
2740 	 */
2741 	extern(C) char* function(AtkText* text, int offset, AtkTextBoundary boundaryType, int* startOffset, int* endOffset) getTextBeforeOffset;
2742 	/**
2743 	 *
2744 	 * Params:
2745 	 *     text = an #AtkText
2746 	 * Returns: the character offset of the position of the caret or -1 if
2747 	 *     the caret is not located inside the element or in the case of
2748 	 *     any other failure.
2749 	 */
2750 	extern(C) int function(AtkText* text) getCaretOffset;
2751 	/**
2752 	 *
2753 	 * Params:
2754 	 *     text = an #AtkText
2755 	 *     offset = the character offset at which to get the attributes, -1 means the offset of
2756 	 *         the character to be inserted at the caret location.
2757 	 *     startOffset = the address to put the start offset of the range
2758 	 *     endOffset = the address to put the end offset of the range
2759 	 * Returns: an #AtkAttributeSet which contains the attributes
2760 	 *     explicitly set at @offset. This #AtkAttributeSet should be freed by
2761 	 *     a call to atk_attribute_set_free().
2762 	 */
2763 	extern(C) AtkAttributeSet* function(AtkText* text, int offset, int* startOffset, int* endOffset) getRunAttributes;
2764 	/**
2765 	 *
2766 	 * Params:
2767 	 *     text = an #AtkText
2768 	 * Returns: an #AtkAttributeSet which contains the default text
2769 	 *     attributes for this #AtkText. This #AtkAttributeSet should be freed by
2770 	 *     a call to atk_attribute_set_free().
2771 	 */
2772 	extern(C) AtkAttributeSet* function(AtkText* text) getDefaultAttributes;
2773 	/** */
2774 	extern(C) void function(AtkText* text, int offset, int* x, int* y, int* width, int* height, AtkCoordType coords) getCharacterExtents;
2775 	/**
2776 	 *
2777 	 * Params:
2778 	 *     text = an #AtkText
2779 	 * Returns: the number of characters or -1 in case of failure.
2780 	 */
2781 	extern(C) int function(AtkText* text) getCharacterCount;
2782 	/**
2783 	 *
2784 	 * Params:
2785 	 *     text = an #AtkText
2786 	 *     x = screen x-position of character
2787 	 *     y = screen y-position of character
2788 	 *     coords = specify whether coordinates are relative to the screen or
2789 	 *         widget window
2790 	 * Returns: the offset to the character which is located at  the specified
2791 	 *     @x and @y coordinates of -1 in case of failure.
2792 	 */
2793 	extern(C) int function(AtkText* text, int x, int y, AtkCoordType coords) getOffsetAtPoint;
2794 	/**
2795 	 *
2796 	 * Params:
2797 	 *     text = an #AtkText
2798 	 * Returns: The number of selected regions, or -1 in the case of failure.
2799 	 */
2800 	extern(C) int function(AtkText* text) getNSelections;
2801 	/**
2802 	 *
2803 	 * Params:
2804 	 *     text = an #AtkText
2805 	 *     selectionNum = The selection number.  The selected regions are
2806 	 *         assigned numbers that correspond to how far the region is from the
2807 	 *         start of the text.  The selected region closest to the beginning
2808 	 *         of the text region is assigned the number 0, etc.  Note that adding,
2809 	 *         moving or deleting a selected region can change the numbering.
2810 	 *     startOffset = passes back the starting character offset of the selected region
2811 	 *     endOffset = passes back the ending character offset (offset immediately past)
2812 	 *         of the selected region
2813 	 * Returns: a newly allocated string containing the selected text. Use g_free()
2814 	 *     to free the returned string.
2815 	 */
2816 	extern(C) char* function(AtkText* text, int selectionNum, int* startOffset, int* endOffset) getSelection;
2817 	/**
2818 	 *
2819 	 * Params:
2820 	 *     text = an #AtkText
2821 	 *     startOffset = the starting character offset of the selected region
2822 	 *     endOffset = the offset of the first character after the selected region.
2823 	 * Returns: %TRUE if successful, %FALSE otherwise
2824 	 */
2825 	extern(C) int function(AtkText* text, int startOffset, int endOffset) addSelection;
2826 	/**
2827 	 *
2828 	 * Params:
2829 	 *     text = an #AtkText
2830 	 *     selectionNum = The selection number.  The selected regions are
2831 	 *         assigned numbers that correspond to how far the region is from the
2832 	 *         start of the text.  The selected region closest to the beginning
2833 	 *         of the text region is assigned the number 0, etc.  Note that adding,
2834 	 *         moving or deleting a selected region can change the numbering.
2835 	 * Returns: %TRUE if successful, %FALSE otherwise
2836 	 */
2837 	extern(C) int function(AtkText* text, int selectionNum) removeSelection;
2838 	/**
2839 	 *
2840 	 * Params:
2841 	 *     text = an #AtkText
2842 	 *     selectionNum = The selection number.  The selected regions are
2843 	 *         assigned numbers that correspond to how far the region is from the
2844 	 *         start of the text.  The selected region closest to the beginning
2845 	 *         of the text region is assigned the number 0, etc.  Note that adding,
2846 	 *         moving or deleting a selected region can change the numbering.
2847 	 *     startOffset = the new starting character offset of the selection
2848 	 *     endOffset = the new end position of (e.g. offset immediately past)
2849 	 *         the selection
2850 	 * Returns: %TRUE if successful, %FALSE otherwise
2851 	 */
2852 	extern(C) int function(AtkText* text, int selectionNum, int startOffset, int endOffset) setSelection;
2853 	/**
2854 	 *
2855 	 * Params:
2856 	 *     text = an #AtkText
2857 	 *     offset = the character offset of the new caret position
2858 	 * Returns: %TRUE if successful, %FALSE otherwise.
2859 	 */
2860 	extern(C) int function(AtkText* text, int offset) setCaretOffset;
2861 	/** */
2862 	extern(C) void function(AtkText* text, int position, int length) textChanged;
2863 	/** */
2864 	extern(C) void function(AtkText* text, int location) textCaretMoved;
2865 	/** */
2866 	extern(C) void function(AtkText* text) textSelectionChanged;
2867 	/** */
2868 	extern(C) void function(AtkText* text) textAttributesChanged;
2869 	/** */
2870 	extern(C) void function(AtkText* text, int startOffset, int endOffset, AtkCoordType coordType, AtkTextRectangle* rect) getRangeExtents;
2871 	/**
2872 	 *
2873 	 * Params:
2874 	 *     text = an #AtkText
2875 	 *     rect = An AtkTextRectangle giving the dimensions of the bounding box.
2876 	 *     coordType = Specify whether coordinates are relative to the screen or widget window.
2877 	 *     xClipType = Specify the horizontal clip type.
2878 	 *     yClipType = Specify the vertical clip type.
2879 	 * Returns: Array of AtkTextRange. The last
2880 	 *     element of the array returned by this function will be NULL.
2881 	 */
2882 	extern(C) AtkTextRange** function(AtkText* text, AtkTextRectangle* rect, AtkCoordType coordType, AtkTextClipType xClipType, AtkTextClipType yClipType) getBoundedRanges;
2883 	/**
2884 	 *
2885 	 * Params:
2886 	 *     text = an #AtkText
2887 	 *     offset = position
2888 	 *     granularity = An #AtkTextGranularity
2889 	 *     startOffset = the starting character offset of the returned string, or -1
2890 	 *         in the case of error (e.g. invalid offset, not implemented)
2891 	 *     endOffset = the offset of the first character after the returned string,
2892 	 *         or -1 in the case of error (e.g. invalid offset, not implemented)
2893 	 * Returns: a newly allocated string containing the text at
2894 	 *     the @offset bounded by the specified @granularity. Use g_free()
2895 	 *     to free the returned string.  Returns %NULL if the offset is invalid
2896 	 *     or no implementation is available.
2897 	 */
2898 	extern(C) char* function(AtkText* text, int offset, AtkTextGranularity granularity, int* startOffset, int* endOffset) getStringAtOffset;
2899 	/**
2900 	 *
2901 	 * Params:
2902 	 *     text = an #AtkText
2903 	 *     startOffset = start position
2904 	 *     endOffset = end position, or -1 for the end of the string.
2905 	 *     type = specify where the object should be made visible.
2906 	 * Returns: whether scrolling was successful.
2907 	 */
2908 	extern(C) int function(AtkText* text, int startOffset, int endOffset, AtkScrollType type) scrollSubstringTo;
2909 	/**
2910 	 *
2911 	 * Params:
2912 	 *     text = an #AtkText
2913 	 *     startOffset = start position
2914 	 *     endOffset = end position, or -1 for the end of the string.
2915 	 *     coords = specify whether coordinates are relative to the screen or to the
2916 	 *         parent object.
2917 	 *     x = x-position where to scroll to
2918 	 *     y = y-position where to scroll to
2919 	 * Returns: whether scrolling was successful.
2920 	 */
2921 	extern(C) int function(AtkText* text, int startOffset, int endOffset, AtkCoordType coords, int x, int y) scrollSubstringToPoint;
2922 }
2923 
2924 /**
2925  * A structure used to describe a text range.
2926  */
2927 struct AtkTextRange
2928 {
2929 	/**
2930 	 * A rectangle giving the bounds of the text range
2931 	 */
2932 	AtkTextRectangle bounds;
2933 	/**
2934 	 * The start offset of a AtkTextRange
2935 	 */
2936 	int startOffset;
2937 	/**
2938 	 * The end offset of a AtkTextRange
2939 	 */
2940 	int endOffset;
2941 	/**
2942 	 * The text in the text range
2943 	 */
2944 	char* content;
2945 }
2946 
2947 /**
2948  * A structure used to store a rectangle used by AtkText.
2949  */
2950 struct AtkTextRectangle
2951 {
2952 	/**
2953 	 * The horizontal coordinate of a rectangle
2954 	 */
2955 	int x;
2956 	/**
2957 	 * The vertical coordinate of a rectangle
2958 	 */
2959 	int y;
2960 	/**
2961 	 * The width of a rectangle
2962 	 */
2963 	int width;
2964 	/**
2965 	 * The height of a rectangle
2966 	 */
2967 	int height;
2968 }
2969 
2970 /**
2971  * A set of ATK utility functions which are used to support event
2972  * registration of various types, and obtaining the 'root' accessible
2973  * of a process and information about the current ATK implementation
2974  * and toolkit version.
2975  */
2976 struct AtkUtil
2977 {
2978 	GObject parent;
2979 }
2980 
2981 struct AtkUtilClass
2982 {
2983 	GObjectClass parent;
2984 	/** */
2985 	extern(C) uint function(GSignalEmissionHook listener, const(char)* eventType) addGlobalEventListener;
2986 	/** */
2987 	extern(C) void function(uint listenerId) removeGlobalEventListener;
2988 	/** */
2989 	extern(C) uint function(AtkKeySnoopFunc listener, void* data) addKeyEventListener;
2990 	/** */
2991 	extern(C) void function(uint listenerId) removeKeyEventListener;
2992 	/** */
2993 	extern(C) AtkObject* function() getRoot;
2994 	/** */
2995 	extern(C) const(char)* function() getToolkitName;
2996 	/** */
2997 	extern(C) const(char)* function() getToolkitVersion;
2998 }
2999 
3000 struct AtkValue;
3001 
3002 struct AtkValueIface
3003 {
3004 	GTypeInterface parent;
3005 	/** */
3006 	extern(C) void function(AtkValue* obj, GValue* value) getCurrentValue;
3007 	/** */
3008 	extern(C) void function(AtkValue* obj, GValue* value) getMaximumValue;
3009 	/** */
3010 	extern(C) void function(AtkValue* obj, GValue* value) getMinimumValue;
3011 	/**
3012 	 *
3013 	 * Params:
3014 	 *     obj = a GObject instance that implements AtkValueIface
3015 	 *     value = a #GValue which is the desired new accessible value.
3016 	 * Returns: %TRUE if new value is successfully set, %FALSE otherwise.
3017 	 */
3018 	extern(C) int function(AtkValue* obj, GValue* value) setCurrentValue;
3019 	/** */
3020 	extern(C) void function(AtkValue* obj, GValue* value) getMinimumIncrement;
3021 	/** */
3022 	extern(C) void function(AtkValue* obj, double* value, char** text) getValueAndText;
3023 	/**
3024 	 *
3025 	 * Params:
3026 	 *     obj = a GObject instance that implements AtkValueIface
3027 	 * Returns: a newly allocated #AtkRange
3028 	 *     that represents the minimum, maximum and descriptor (if available)
3029 	 *     of @obj. NULL if that range is not defined.
3030 	 */
3031 	extern(C) AtkRange* function(AtkValue* obj) getRange;
3032 	/**
3033 	 *
3034 	 * Params:
3035 	 *     obj = a GObject instance that implements AtkValueIface
3036 	 * Returns: the minimum increment by which the value of this
3037 	 *     object may be changed. zero if undefined.
3038 	 */
3039 	extern(C) double function(AtkValue* obj) getIncrement;
3040 	/**
3041 	 *
3042 	 * Params:
3043 	 *     obj = a GObject instance that implements AtkValueIface
3044 	 * Returns: an #GSList of
3045 	 *     #AtkRange which each of the subranges defined for this object. Free
3046 	 *     the returns list with g_slist_free().
3047 	 */
3048 	extern(C) GSList* function(AtkValue* obj) getSubRanges;
3049 	/** */
3050 	extern(C) void function(AtkValue* obj, double newValue) setValue;
3051 }
3052 
3053 struct AtkWindow;
3054 
3055 struct AtkWindowIface
3056 {
3057 	GTypeInterface parent;
3058 }
3059 
3060 /**
3061  * A function which is called when an object emits a matching event,
3062  * as used in #atk_add_focus_tracker.
3063  * Currently the only events for which object-specific handlers are
3064  * supported are events of type "focus:".  Most clients of ATK will prefer to
3065  * attach signal handlers for the various ATK signals instead.
3066  *
3067  * see atk_add_focus_tracker.
3068  *
3069  * Params:
3070  *     obj = An #AtkObject instance for whom the callback will be called when
3071  *         the specified event (e.g. 'focus:') takes place.
3072  */
3073 public alias extern(C) void function(AtkObject* obj) AtkEventListener;
3074 
3075 /**
3076  * An #AtkEventListenerInit function is a special function that is
3077  * called in order to initialize the per-object event registration system
3078  * used by #AtkEventListener, if any preparation is required.
3079  *
3080  * see atk_focus_tracker_init.
3081  */
3082 public alias extern(C) void function() AtkEventListenerInit;
3083 
3084 /**
3085  * The type of callback function used for
3086  * atk_component_add_focus_handler() and
3087  * atk_component_remove_focus_handler()
3088  *
3089  * Deprecated: Deprecated with atk_component_add_focus_handler()
3090  * and atk_component_remove_focus_handler(). See those
3091  * methods for more information.
3092  *
3093  * Params:
3094  *     object = the #AtkObject that receives/lose the focus
3095  *     focusIn = TRUE if the object receives the focus
3096  */
3097 public alias extern(C) void function(AtkObject* object, int focusIn) AtkFocusHandler;
3098 
3099 /**
3100  * An AtkFunction is a function definition used for padding which has
3101  * been added to class and interface structures to allow for expansion
3102  * in the future.
3103  *
3104  * Params:
3105  *     userData = custom data defined by the user
3106  *
3107  * Returns: not used
3108  */
3109 public alias extern(C) int function(void* userData) AtkFunction;
3110 
3111 /**
3112  * An #AtkKeySnoopFunc is a type of callback which is called whenever a key event occurs,
3113  * if registered via atk_add_key_event_listener.  It allows for pre-emptive
3114  * interception of key events via the return code as described below.
3115  *
3116  * Params:
3117  *     event = an AtkKeyEventStruct containing information about the key event for which
3118  *         notification is being given.
3119  *     userData = a block of data which will be passed to the event listener, on notification.
3120  *
3121  * Returns: TRUE (nonzero) if the event emission should be stopped and the event
3122  *     discarded without being passed to the normal GUI recipient; FALSE (zero) if the
3123  *     event dispatch to the client application should proceed as normal.
3124  *
3125  *     see atk_add_key_event_listener.
3126  */
3127 public alias extern(C) int function(AtkKeyEventStruct* event, void* userData) AtkKeySnoopFunc;
3128 
3129 /**
3130  * An AtkPropertyChangeHandler is a function which is executed when an
3131  * AtkObject's property changes value. It is specified in a call to
3132  * atk_object_connect_property_change_handler().
3133  *
3134  * Deprecated: Since 2.12.
3135  *
3136  * Params:
3137  *     obj = atkobject which property changes
3138  *     vals = values changed
3139  */
3140 public alias extern(C) void function(AtkObject* obj, AtkPropertyValues* vals) AtkPropertyChangeHandler;
3141 
3142 /**
3143  * Like atk_get_binary_age(), but from the headers used at
3144  * application compile time, rather than from the library linked
3145  * against at application run time.
3146  */
3147 enum BINARY_AGE = 23411;
3148 alias ATK_BINARY_AGE = BINARY_AGE;
3149 
3150 /**
3151  * Like atk_get_interface_age(), but from the headers used at
3152  * application compile time, rather than from the library linked
3153  * against at application run time.
3154  */
3155 enum INTERFACE_AGE = 1;
3156 alias ATK_INTERFACE_AGE = INTERFACE_AGE;
3157 
3158 /**
3159  * Like atk_get_major_version(), but from the headers used at
3160  * application compile time, rather than from the library linked
3161  * against at application run time.
3162  */
3163 enum MAJOR_VERSION = 2;
3164 alias ATK_MAJOR_VERSION = MAJOR_VERSION;
3165 
3166 /**
3167  * Like atk_get_micro_version(), but from the headers used at
3168  * application compile time, rather than from the library linked
3169  * against at application run time.
3170  */
3171 enum MICRO_VERSION = 1;
3172 alias ATK_MICRO_VERSION = MICRO_VERSION;
3173 
3174 /**
3175  * Like atk_get_minor_version(), but from the headers used at
3176  * application compile time, rather than from the library linked
3177  * against at application run time.
3178  */
3179 enum MINOR_VERSION = 34;
3180 alias ATK_MINOR_VERSION = MINOR_VERSION;
3181 
3182 /**
3183  * A macro that should be defined by the user prior to including
3184  * the atk/atk.h header.
3185  * The definition should be one of the predefined ATK version
3186  * macros: %ATK_VERSION_2_12, %ATK_VERSION_2_14,...
3187  *
3188  * This macro defines the earliest version of ATK that the package is
3189  * required to be able to compile against.
3190  *
3191  * If the compiler is configured to warn about the use of deprecated
3192  * functions, then using functions that were deprecated in version
3193  * %ATK_VERSION_MIN_REQUIRED or earlier will cause warnings (but
3194  * using functions deprecated in later releases will not).
3195  */
3196 enum VERSION_MIN_REQUIRED = 2;
3197 alias ATK_VERSION_MIN_REQUIRED = VERSION_MIN_REQUIRED;