1 | /* gtkaccessiblevalueprivate.h: Accessible value |
2 | * |
3 | * Copyright 2020 GNOME Foundation |
4 | * |
5 | * SPDX-License-Identifier: LGPL-2.1-or-later |
6 | * |
7 | * This library is free software; you can redistribute it and/or |
8 | * modify it under the terms of the GNU Lesser General Public |
9 | * License as published by the Free Software Foundation; either |
10 | * version 2.1 of the License, or (at your option) any later version. |
11 | * |
12 | * This library is distributed in the hope that it will be useful, |
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
15 | * Lesser General Public License for more details. |
16 | * |
17 | * You should have received a copy of the GNU Lesser General Public |
18 | * License along with this library; if not, see <http://www.gnu.org/licenses/>. |
19 | */ |
20 | |
21 | #pragma once |
22 | |
23 | #include <glib-object.h> |
24 | |
25 | #include "gtkaccessible.h" |
26 | #include "gtkenums.h" |
27 | |
28 | G_BEGIN_DECLS |
29 | |
30 | #define GTK_TYPE_ACCESSIBLE_VALUE (gtk_accessible_value_get_type()) |
31 | |
32 | #define GTK_ACCESSIBLE_VALUE_ERROR (gtk_accessible_value_error_quark()) |
33 | |
34 | typedef struct _GtkAccessibleValue GtkAccessibleValue; |
35 | typedef struct _GtkAccessibleValueClass GtkAccessibleValueClass; |
36 | |
37 | typedef enum { |
38 | GTK_ACCESSIBLE_VALUE_TYPE_UNDEFINED, |
39 | GTK_ACCESSIBLE_VALUE_TYPE_BOOLEAN, |
40 | GTK_ACCESSIBLE_VALUE_TYPE_TRISTATE, |
41 | GTK_ACCESSIBLE_VALUE_TYPE_TOKEN, |
42 | GTK_ACCESSIBLE_VALUE_TYPE_INTEGER, |
43 | GTK_ACCESSIBLE_VALUE_TYPE_NUMBER, |
44 | GTK_ACCESSIBLE_VALUE_TYPE_STRING, |
45 | GTK_ACCESSIBLE_VALUE_TYPE_REFERENCE, |
46 | GTK_ACCESSIBLE_VALUE_TYPE_REFERENCE_LIST |
47 | } GtkAccessibleValueType; |
48 | |
49 | struct _GtkAccessibleValue |
50 | { |
51 | const GtkAccessibleValueClass *value_class; |
52 | |
53 | int ref_count; |
54 | }; |
55 | |
56 | #define GTK_ACCESSIBLE_VALUE_INIT(klass) { .value_class = (klass), .ref_count = 1 } |
57 | |
58 | struct _GtkAccessibleValueClass |
59 | { |
60 | GtkAccessibleValueType type; |
61 | const char *type_name; |
62 | gsize instance_size; |
63 | |
64 | void (* init) (GtkAccessibleValue *self); |
65 | void (* finalize) (GtkAccessibleValue *self); |
66 | void (* print) (const GtkAccessibleValue *self, |
67 | GString *string); |
68 | gboolean (* equal) (const GtkAccessibleValue *value_a, |
69 | const GtkAccessibleValue *value_b); |
70 | }; |
71 | |
72 | #define GTK_IS_ACCESSIBLE_VALUE_TYPE(v,type) \ |
73 | ((v)->value_class->type == (type)) |
74 | |
75 | typedef enum { |
76 | GTK_ACCESSIBLE_VALUE_ERROR_READ_ONLY, |
77 | GTK_ACCESSIBLE_VALUE_ERROR_INVALID_VALUE, |
78 | GTK_ACCESSIBLE_VALUE_ERROR_INVALID_RANGE, |
79 | GTK_ACCESSIBLE_VALUE_ERROR_INVALID_TOKEN |
80 | } GtkAccessibleValueError; |
81 | |
82 | GType gtk_accessible_value_get_type (void) G_GNUC_CONST; |
83 | GQuark gtk_accessible_value_error_quark (void); |
84 | |
85 | GtkAccessibleValue * gtk_accessible_value_alloc (const GtkAccessibleValueClass *klass); |
86 | GtkAccessibleValue * gtk_accessible_value_ref (GtkAccessibleValue *self); |
87 | void gtk_accessible_value_unref (GtkAccessibleValue *self); |
88 | void gtk_accessible_value_print (const GtkAccessibleValue *self, |
89 | GString *buffer); |
90 | char * gtk_accessible_value_to_string (const GtkAccessibleValue *self); |
91 | gboolean gtk_accessible_value_equal (const GtkAccessibleValue *value_a, |
92 | const GtkAccessibleValue *value_b); |
93 | |
94 | GtkAccessibleValue * gtk_accessible_value_get_default_for_state (GtkAccessibleState state); |
95 | GtkAccessibleValue * gtk_accessible_value_collect_for_state (GtkAccessibleState state, |
96 | GError **error, |
97 | va_list *args); |
98 | GtkAccessibleValue * gtk_accessible_value_collect_for_state_value (GtkAccessibleState state, |
99 | const GValue *value, |
100 | GError **error); |
101 | GtkAccessibleValue * gtk_accessible_value_parse_for_state (GtkAccessibleState state, |
102 | const char *str, |
103 | gsize len, |
104 | GError **error); |
105 | |
106 | GtkAccessibleValue * gtk_accessible_value_get_default_for_property (GtkAccessibleProperty property); |
107 | GtkAccessibleValue * gtk_accessible_value_collect_for_property (GtkAccessibleProperty property, |
108 | GError **error, |
109 | va_list *args); |
110 | GtkAccessibleValue * gtk_accessible_value_collect_for_property_value (GtkAccessibleProperty property, |
111 | const GValue *value, |
112 | GError **error); |
113 | GtkAccessibleValue * gtk_accessible_value_parse_for_property (GtkAccessibleProperty property, |
114 | const char *str, |
115 | gsize len, |
116 | GError **error); |
117 | |
118 | GtkAccessibleValue * gtk_accessible_value_get_default_for_relation (GtkAccessibleRelation relation); |
119 | GtkAccessibleValue * gtk_accessible_value_collect_for_relation (GtkAccessibleRelation relation, |
120 | GError **error, |
121 | va_list *args); |
122 | GtkAccessibleValue * gtk_accessible_value_collect_for_relation_value (GtkAccessibleRelation relation, |
123 | const GValue *value, |
124 | GError **error); |
125 | GtkAccessibleValue * gtk_accessible_value_parse_for_relation (GtkAccessibleRelation relation, |
126 | const char *str, |
127 | gsize len, |
128 | GError **error); |
129 | |
130 | /* Basic values */ |
131 | GtkAccessibleValue * gtk_undefined_accessible_value_new (void); |
132 | int gtk_undefined_accessible_value_get (const GtkAccessibleValue *value); |
133 | |
134 | GtkAccessibleValue * gtk_boolean_accessible_value_new (gboolean value); |
135 | gboolean gtk_boolean_accessible_value_get (const GtkAccessibleValue *value); |
136 | |
137 | GtkAccessibleValue * gtk_tristate_accessible_value_new (GtkAccessibleTristate value); |
138 | GtkAccessibleTristate gtk_tristate_accessible_value_get (const GtkAccessibleValue *value); |
139 | |
140 | GtkAccessibleValue * gtk_int_accessible_value_new (int value); |
141 | int gtk_int_accessible_value_get (const GtkAccessibleValue *value); |
142 | |
143 | GtkAccessibleValue * gtk_number_accessible_value_new (double value); |
144 | double gtk_number_accessible_value_get (const GtkAccessibleValue *value); |
145 | |
146 | GtkAccessibleValue * gtk_string_accessible_value_new (const char *value); |
147 | const char * gtk_string_accessible_value_get (const GtkAccessibleValue *value); |
148 | |
149 | GtkAccessibleValue * gtk_reference_accessible_value_new (GtkAccessible *value); |
150 | GtkAccessible * gtk_reference_accessible_value_get (const GtkAccessibleValue *value); |
151 | |
152 | GtkAccessibleValue * gtk_reference_list_accessible_value_new (GList *value); |
153 | GList * gtk_reference_list_accessible_value_get (const GtkAccessibleValue *value); |
154 | |
155 | /* Token values */ |
156 | GtkAccessibleValue * gtk_invalid_accessible_value_new (GtkAccessibleInvalidState value); |
157 | GtkAccessibleInvalidState gtk_invalid_accessible_value_get (const GtkAccessibleValue *value); |
158 | GtkAccessibleValue * gtk_invalid_accessible_value_parse (const char *str, |
159 | gsize len, |
160 | GError **error); |
161 | void gtk_invalid_accessible_value_init_value (GValue *value); |
162 | |
163 | GtkAccessibleValue * gtk_autocomplete_accessible_value_new (GtkAccessibleAutocomplete value); |
164 | GtkAccessibleAutocomplete gtk_autocomplete_accessible_value_get (const GtkAccessibleValue *value); |
165 | GtkAccessibleValue * gtk_autocomplete_accessible_value_parse (const char *str, |
166 | gsize len, |
167 | GError **error); |
168 | void gtk_autocomplete_accessible_value_init_value (GValue *value); |
169 | |
170 | GtkAccessibleValue * gtk_orientation_accessible_value_new (GtkOrientation value); |
171 | GtkOrientation gtk_orientation_accessible_value_get (const GtkAccessibleValue *value); |
172 | GtkAccessibleValue * gtk_orientation_accessible_value_parse (const char *str, |
173 | gsize len, |
174 | GError **error); |
175 | void gtk_orientation_accessible_value_init_value (GValue *value); |
176 | |
177 | GtkAccessibleValue * gtk_sort_accessible_value_new (GtkAccessibleSort value); |
178 | GtkAccessibleSort gtk_sort_accessible_value_get (const GtkAccessibleValue *value); |
179 | GtkAccessibleValue * gtk_sort_accessible_value_parse (const char *str, |
180 | gsize len, |
181 | GError **error); |
182 | void gtk_sort_accessible_value_init_value (GValue *value); |
183 | |
184 | G_END_DECLS |
185 | |