c43ad06bec84ffade5429e6431f27e783db12cb1
[platform/upstream/atk.git] / atk / atkmisc.h
1 /* ATK -  Accessibility Toolkit
2  * Copyright 2007 Sun Microsystems Inc.
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Library General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Library General Public License for more details.
13  *
14  * You should have received a copy of the GNU Library General Public
15  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
16  */
17
18 #if defined(ATK_DISABLE_SINGLE_INCLUDES) && !defined (__ATK_H_INSIDE__) && !defined (ATK_COMPILATION)
19 #error "Only <atk/atk.h> can be included directly."
20 #endif
21
22 #ifndef __ATK_MISC_H__
23 #define __ATK_MISC_H__
24
25 #include <glib-object.h>
26
27 /* We prefix variable declarations so they can
28  * properly get exported in Windows DLLs.
29  */
30 #ifndef ATK_VAR
31 #  ifdef G_PLATFORM_WIN32
32 #    ifdef ATK_STATIC_COMPILATION
33 #      define ATK_VAR extern
34 #    else /* !ATK_STATIC_COMPILATION */
35 #      ifdef ATK_COMPILATION
36 #        ifdef DLL_EXPORT
37 #          define ATK_VAR __declspec(dllexport)
38 #        else /* !DLL_EXPORT */
39 #          define ATK_VAR extern
40 #        endif /* !DLL_EXPORT */
41 #      else /* !ATK_COMPILATION */
42 #        define ATK_VAR extern __declspec(dllimport)
43 #      endif /* !ATK_COMPILATION */
44 #    endif /* !ATK_STATIC_COMPILATION */
45 #  else /* !G_PLATFORM_WIN32 */
46 #    define ATK_VAR extern
47 #  endif /* !G_PLATFORM_WIN32 */
48 #endif /* ATK_VAR */
49
50 G_BEGIN_DECLS
51
52 #define ATK_TYPE_MISC                   (atk_misc_get_type ())
53 #define ATK_IS_MISC(obj)                G_TYPE_CHECK_INSTANCE_TYPE ((obj), ATK_TYPE_MISC)
54 #define ATK_MISC(obj)                   G_TYPE_CHECK_INSTANCE_CAST ((obj), ATK_TYPE_MISC, AtkMisc)
55 #define ATK_MISC_CLASS(klass)                   (G_TYPE_CHECK_CLASS_CAST ((klass), ATK_TYPE_MISC, AtkMiscClass))
56 #define ATK_IS_MISC_CLASS(klass)                (G_TYPE_CHECK_CLASS_TYPE ((klass), ATK_TYPE_MISC))
57 #define ATK_MISC_GET_CLASS(obj)                 (G_TYPE_INSTANCE_GET_CLASS ((obj), ATK_TYPE_MISC, AtkMiscClass))
58
59
60 #ifndef _TYPEDEF_ATK_MISC_
61 #define _TYPEDEF_ATK_MISC_
62 typedef struct _AtkMisc      AtkMisc;
63 typedef struct _AtkMiscClass AtkMiscClass;
64 #endif
65
66 struct _AtkMisc
67 {
68   GObject parent;
69 };
70
71 /*
72  * Singleton instance - only the ATK implementation layer for
73  * a given GUI toolkit/application instance should touch this
74  * symbol directly.
75  *
76  * Deprecated: Since 2.12.
77  */
78 ATK_VAR AtkMisc *atk_misc_instance;
79
80 /**
81  * AtkMiscClass:
82  * @threads_enter: This virtual function is deprecated since 2.12 and
83  *   it should not be overriden.
84  * @threads_leave: This virtual function is deprecated sice 2.12 and
85  *   it should not be overriden.
86  *
87  * Usage of AtkMisc is deprecated since 2.12 and heavily discouraged.
88  */
89 struct _AtkMiscClass
90 {
91    GObjectClass parent;
92    void   (* threads_enter)                     (AtkMisc *misc);
93    void   (* threads_leave)                     (AtkMisc *misc);
94    gpointer vfuncs[32]; /* future bincompat */
95 };
96 GType atk_misc_get_type (void);
97
98 G_DEPRECATED
99 void     atk_misc_threads_enter  (AtkMisc *misc);
100 G_DEPRECATED
101 void     atk_misc_threads_leave  (AtkMisc *misc);
102 G_DEPRECATED
103 const AtkMisc *atk_misc_get_instance (void);
104
105 G_END_DECLS
106
107 #endif /* __ATK_MISC_H__ */