Updated FSF's address
[platform/upstream/atk.git] / atk / atknoopobject.c
1 /* ATK -  Accessibility Toolkit
2  * Copyright 2001, 2002, 2003 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 Lesser 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  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
16  */
17
18 #include "atk.h"
19 #include "atknoopobject.h"
20
21 /**
22  * SECTION:atknoopobject
23  * @Short_description: An AtkObject which purports to implement all ATK interfaces.
24  * @Title:AtkNoOpObject
25  *
26  * An AtkNoOpObject is an AtkObject which purports to implement all
27  * ATK interfaces. It is the type of AtkObject which is created if an
28  * accessible object is requested for an object type for which no
29  * factory type is specified.
30  *
31  */
32
33
34 static void atk_no_op_object_class_init (AtkNoOpObjectClass *klass);
35
36 static gpointer parent_class = NULL;
37
38
39 GType
40 atk_no_op_object_get_type (void)
41 {
42   static GType type = 0;
43
44   if (!type)
45   {
46     static const GTypeInfo tinfo =
47     {
48       sizeof (AtkObjectClass),
49       (GBaseInitFunc) NULL, /* base init */
50       (GBaseFinalizeFunc) NULL, /* base finalize */
51       (GClassInitFunc) atk_no_op_object_class_init, /* class init */
52       (GClassFinalizeFunc) NULL, /* class finalize */
53       NULL, /* class data */
54       sizeof (AtkNoOpObject), /* instance size */
55       0, /* nb preallocs */
56       (GInstanceInitFunc) NULL, /* instance init */
57       NULL /* value table */
58     };
59
60     static const GInterfaceInfo atk_component_info =
61     {
62         (GInterfaceInitFunc) NULL,
63         (GInterfaceFinalizeFunc) NULL,
64         NULL
65     };
66
67     static const GInterfaceInfo atk_action_info =
68     {
69         (GInterfaceInitFunc) NULL,
70         (GInterfaceFinalizeFunc) NULL,
71         NULL
72     };
73
74     static const GInterfaceInfo atk_editable_text_info =
75     {
76         (GInterfaceInitFunc) NULL,
77         (GInterfaceFinalizeFunc) NULL,
78         NULL
79     };
80
81     static const GInterfaceInfo atk_image_info =
82     {
83         (GInterfaceInitFunc) NULL,
84         (GInterfaceFinalizeFunc) NULL,
85         NULL
86     };
87
88     static const GInterfaceInfo atk_selection_info =
89     {
90         (GInterfaceInitFunc) NULL,
91         (GInterfaceFinalizeFunc) NULL,
92         NULL
93     };
94
95     static const GInterfaceInfo atk_table_info =
96     {
97         (GInterfaceInitFunc) NULL,
98         (GInterfaceFinalizeFunc) NULL,
99         NULL
100     };
101
102     static const GInterfaceInfo atk_text_info =
103     {
104         (GInterfaceInitFunc) NULL,
105         (GInterfaceFinalizeFunc) NULL,
106         NULL
107     };
108
109     static const GInterfaceInfo atk_hypertext_info =
110     {
111         (GInterfaceInitFunc) NULL,
112         (GInterfaceFinalizeFunc) NULL,
113         NULL
114     };
115
116     static const GInterfaceInfo atk_value_info =
117     {
118         (GInterfaceInitFunc) NULL,
119         (GInterfaceFinalizeFunc) NULL,
120         NULL
121     };
122
123     static const GInterfaceInfo atk_document_info =
124     {
125         (GInterfaceInitFunc) NULL,
126         (GInterfaceFinalizeFunc) NULL,
127         NULL
128     };
129
130     static const GInterfaceInfo atk_window_info =
131     {
132         (GInterfaceInitFunc) NULL,
133         (GInterfaceFinalizeFunc) NULL,
134         NULL
135     };
136
137     type = g_type_register_static (ATK_TYPE_OBJECT,
138                                     "AtkNoOpObject", &tinfo, 0);
139     g_type_add_interface_static (type, ATK_TYPE_COMPONENT,
140                                  &atk_component_info);
141     g_type_add_interface_static (type, ATK_TYPE_ACTION,
142                                  &atk_action_info);
143     g_type_add_interface_static (type, ATK_TYPE_EDITABLE_TEXT,
144                                  &atk_editable_text_info);
145     g_type_add_interface_static (type, ATK_TYPE_IMAGE,
146                                  &atk_image_info);
147     g_type_add_interface_static (type, ATK_TYPE_SELECTION,
148                                  &atk_selection_info);
149     g_type_add_interface_static (type, ATK_TYPE_TABLE,
150                                  &atk_table_info);
151     g_type_add_interface_static (type, ATK_TYPE_TEXT,
152                                  &atk_text_info);
153     g_type_add_interface_static (type, ATK_TYPE_HYPERTEXT,
154                                  &atk_hypertext_info);
155     g_type_add_interface_static (type, ATK_TYPE_VALUE,
156                                  &atk_value_info);
157     g_type_add_interface_static (type, ATK_TYPE_DOCUMENT,
158                                  &atk_document_info);
159     g_type_add_interface_static (type, ATK_TYPE_WINDOW,
160                                  &atk_window_info);
161   }
162   return type;
163 }
164
165 static void
166 atk_no_op_object_class_init (AtkNoOpObjectClass *klass)
167 {
168   parent_class = g_type_class_peek_parent (klass);
169 }
170
171 /**
172  * atk_no_op_object_new:
173  * @obj: a #GObject
174  *
175  * Provides a default (non-functioning stub) #AtkObject.
176  * Application maintainers should not use this method. 
177  *
178  * Returns: a default (non-functioning stub) #AtkObject
179  **/
180 AtkObject*
181 atk_no_op_object_new (GObject *obj)
182 {
183   AtkObject *accessible;
184
185   g_return_val_if_fail (obj != NULL, NULL);
186
187   accessible = g_object_new (ATK_TYPE_NO_OP_OBJECT, NULL);
188   g_return_val_if_fail (accessible != NULL, NULL);
189
190   accessible->role = ATK_ROLE_INVALID;
191   accessible->layer = ATK_LAYER_INVALID;
192
193   return accessible;
194 }
195