Add AtkHypertext interface as this object should claim to implement all
[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, write to the
16  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17  * Boston, MA 02111-1307, USA.
18  */
19
20 #include "atk.h"
21 #include "atknoopobject.h"
22
23 static void atk_no_op_object_class_init (AtkNoOpObjectClass *klass);
24
25 static gpointer parent_class = NULL;
26
27
28 GType
29 atk_no_op_object_get_type (void)
30 {
31   static GType type = 0;
32
33   if (!type)
34   {
35     static const GTypeInfo tinfo =
36     {
37       sizeof (AtkObjectClass),
38       (GBaseInitFunc) NULL, /* base init */
39       (GBaseFinalizeFunc) NULL, /* base finalize */
40       (GClassInitFunc) atk_no_op_object_class_init, /* class init */
41       (GClassFinalizeFunc) NULL, /* class finalize */
42       NULL, /* class data */
43       sizeof (AtkNoOpObject), /* instance size */
44       0, /* nb preallocs */
45       (GInstanceInitFunc) NULL, /* instance init */
46       NULL /* value table */
47     };
48
49     static const GInterfaceInfo atk_component_info =
50     {
51         (GInterfaceInitFunc) NULL,
52         (GInterfaceFinalizeFunc) NULL,
53         NULL
54     };
55
56     static const GInterfaceInfo atk_action_info =
57     {
58         (GInterfaceInitFunc) NULL,
59         (GInterfaceFinalizeFunc) NULL,
60         NULL
61     };
62
63     static const GInterfaceInfo atk_editable_text_info =
64     {
65         (GInterfaceInitFunc) NULL,
66         (GInterfaceFinalizeFunc) NULL,
67         NULL
68     };
69
70     static const GInterfaceInfo atk_image_info =
71     {
72         (GInterfaceInitFunc) NULL,
73         (GInterfaceFinalizeFunc) NULL,
74         NULL
75     };
76
77     static const GInterfaceInfo atk_selection_info =
78     {
79         (GInterfaceInitFunc) NULL,
80         (GInterfaceFinalizeFunc) NULL,
81         NULL
82     };
83
84     static const GInterfaceInfo atk_table_info =
85     {
86         (GInterfaceInitFunc) NULL,
87         (GInterfaceFinalizeFunc) NULL,
88         NULL
89     };
90
91     static const GInterfaceInfo atk_text_info =
92     {
93         (GInterfaceInitFunc) NULL,
94         (GInterfaceFinalizeFunc) NULL,
95         NULL
96     };
97
98     static const GInterfaceInfo atk_hypertext_info =
99     {
100         (GInterfaceInitFunc) NULL,
101         (GInterfaceFinalizeFunc) NULL,
102         NULL
103     };
104
105     static const GInterfaceInfo atk_value_info =
106     {
107         (GInterfaceInitFunc) NULL,
108         (GInterfaceFinalizeFunc) NULL,
109         NULL
110     };
111
112
113     type = g_type_register_static (ATK_TYPE_OBJECT,
114                                     "AtkNoOpObject", &tinfo, 0);
115     g_type_add_interface_static (type, ATK_TYPE_COMPONENT,
116                                  &atk_component_info);
117     g_type_add_interface_static (type, ATK_TYPE_ACTION,
118                                  &atk_action_info);
119     g_type_add_interface_static (type, ATK_TYPE_EDITABLE_TEXT,
120                                  &atk_editable_text_info);
121     g_type_add_interface_static (type, ATK_TYPE_IMAGE,
122                                  &atk_image_info);
123     g_type_add_interface_static (type, ATK_TYPE_SELECTION,
124                                  &atk_selection_info);
125     g_type_add_interface_static (type, ATK_TYPE_TABLE,
126                                  &atk_table_info);
127     g_type_add_interface_static (type, ATK_TYPE_TEXT,
128                                  &atk_text_info);
129     g_type_add_interface_static (type, ATK_TYPE_HYPERTEXT,
130                                  &atk_hypertext_info);
131     g_type_add_interface_static (type, ATK_TYPE_VALUE,
132                                  &atk_value_info);
133   }
134   return type;
135 }
136
137 static void
138 atk_no_op_object_class_init (AtkNoOpObjectClass *klass)
139 {
140   parent_class = g_type_class_peek_parent (klass);
141 }
142
143 /**
144  * atk_no_op_object_new:
145  * @obj: a #GObject
146  *
147  * Provides a default (non-functioning stub) #AtkObject.
148  * Application maintainers should not use this method. 
149  *
150  * Returns: a default (non-functioning stub) #AtkObject
151  **/
152 AtkObject*
153 atk_no_op_object_new (GObject *obj)
154 {
155   AtkObject *accessible;
156
157   g_return_val_if_fail (obj != NULL, NULL);
158
159   accessible = g_object_new (ATK_TYPE_NO_OP_OBJECT, NULL);
160   g_return_val_if_fail (accessible != NULL, NULL);
161
162   accessible->role = ATK_ROLE_INVALID;
163   accessible->layer = ATK_LAYER_INVALID;
164
165   return accessible;
166 }
167