File indexing completed on 2025-12-16 10:17:39
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019 #ifndef __G_ENUMS_H__
0020 #define __G_ENUMS_H__
0021
0022 #if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION)
0023 #error "Only <glib-object.h> can be included directly."
0024 #endif
0025
0026 #include <gobject/gtype.h>
0027
0028 G_BEGIN_DECLS
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039 #define G_TYPE_IS_ENUM(type) (G_TYPE_FUNDAMENTAL (type) == G_TYPE_ENUM)
0040
0041
0042
0043
0044
0045
0046 #define G_ENUM_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_ENUM, GEnumClass))
0047
0048
0049
0050
0051
0052
0053
0054 #define G_IS_ENUM_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_ENUM))
0055
0056
0057
0058
0059
0060
0061
0062
0063 #define G_ENUM_CLASS_TYPE(class) (G_TYPE_FROM_CLASS (class))
0064
0065
0066
0067
0068
0069
0070
0071
0072 #define G_ENUM_CLASS_TYPE_NAME(class) (g_type_name (G_ENUM_CLASS_TYPE (class)))
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083 #define G_TYPE_IS_FLAGS(type) (G_TYPE_FUNDAMENTAL (type) == G_TYPE_FLAGS)
0084
0085
0086
0087
0088
0089
0090 #define G_FLAGS_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_FLAGS, GFlagsClass))
0091
0092
0093
0094
0095
0096
0097
0098 #define G_IS_FLAGS_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_FLAGS))
0099
0100
0101
0102
0103
0104
0105
0106
0107 #define G_FLAGS_CLASS_TYPE(class) (G_TYPE_FROM_CLASS (class))
0108
0109
0110
0111
0112
0113
0114
0115
0116 #define G_FLAGS_CLASS_TYPE_NAME(class) (g_type_name (G_FLAGS_CLASS_TYPE (class)))
0117
0118
0119
0120
0121
0122
0123
0124
0125
0126
0127 #define G_VALUE_HOLDS_ENUM(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_ENUM))
0128
0129
0130
0131
0132
0133
0134
0135
0136 #define G_VALUE_HOLDS_FLAGS(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_FLAGS))
0137
0138
0139
0140 typedef struct _GEnumClass GEnumClass;
0141 typedef struct _GFlagsClass GFlagsClass;
0142 typedef struct _GEnumValue GEnumValue;
0143 typedef struct _GFlagsValue GFlagsValue;
0144
0145
0146
0147
0148
0149
0150
0151
0152
0153
0154
0155
0156
0157 struct _GEnumClass
0158 {
0159 GTypeClass g_type_class;
0160
0161
0162 gint minimum;
0163 gint maximum;
0164 guint n_values;
0165 GEnumValue *values;
0166 };
0167
0168
0169
0170
0171
0172
0173
0174
0175
0176
0177
0178 struct _GFlagsClass
0179 {
0180 GTypeClass g_type_class;
0181
0182
0183 guint mask;
0184 guint n_values;
0185 GFlagsValue *values;
0186 };
0187
0188
0189
0190
0191
0192
0193
0194
0195
0196 struct _GEnumValue
0197 {
0198 gint value;
0199 const gchar *value_name;
0200 const gchar *value_nick;
0201 };
0202
0203
0204
0205
0206
0207
0208
0209
0210
0211 struct _GFlagsValue
0212 {
0213 guint value;
0214 const gchar *value_name;
0215 const gchar *value_nick;
0216 };
0217
0218
0219
0220 GOBJECT_AVAILABLE_IN_ALL
0221 GEnumValue* g_enum_get_value (GEnumClass *enum_class,
0222 gint value);
0223 GOBJECT_AVAILABLE_IN_ALL
0224 GEnumValue* g_enum_get_value_by_name (GEnumClass *enum_class,
0225 const gchar *name);
0226 GOBJECT_AVAILABLE_IN_ALL
0227 GEnumValue* g_enum_get_value_by_nick (GEnumClass *enum_class,
0228 const gchar *nick);
0229 GOBJECT_AVAILABLE_IN_ALL
0230 GFlagsValue* g_flags_get_first_value (GFlagsClass *flags_class,
0231 guint value);
0232 GOBJECT_AVAILABLE_IN_ALL
0233 GFlagsValue* g_flags_get_value_by_name (GFlagsClass *flags_class,
0234 const gchar *name);
0235 GOBJECT_AVAILABLE_IN_ALL
0236 GFlagsValue* g_flags_get_value_by_nick (GFlagsClass *flags_class,
0237 const gchar *nick);
0238 GOBJECT_AVAILABLE_IN_2_54
0239 gchar *g_enum_to_string (GType g_enum_type,
0240 gint value);
0241 GOBJECT_AVAILABLE_IN_2_54
0242 gchar *g_flags_to_string (GType flags_type,
0243 guint value);
0244 GOBJECT_AVAILABLE_IN_ALL
0245 void g_value_set_enum (GValue *value,
0246 gint v_enum);
0247 GOBJECT_AVAILABLE_IN_ALL
0248 gint g_value_get_enum (const GValue *value);
0249 GOBJECT_AVAILABLE_IN_ALL
0250 void g_value_set_flags (GValue *value,
0251 guint v_flags);
0252 GOBJECT_AVAILABLE_IN_ALL
0253 guint g_value_get_flags (const GValue *value);
0254
0255
0256
0257
0258
0259
0260
0261 GOBJECT_AVAILABLE_IN_ALL
0262 GType g_enum_register_static (const gchar *name,
0263 const GEnumValue *const_static_values);
0264 GOBJECT_AVAILABLE_IN_ALL
0265 GType g_flags_register_static (const gchar *name,
0266 const GFlagsValue *const_static_values);
0267
0268
0269
0270 GOBJECT_AVAILABLE_IN_ALL
0271 void g_enum_complete_type_info (GType g_enum_type,
0272 GTypeInfo *info,
0273 const GEnumValue *const_values);
0274 GOBJECT_AVAILABLE_IN_ALL
0275 void g_flags_complete_type_info (GType g_flags_type,
0276 GTypeInfo *info,
0277 const GFlagsValue *const_values);
0278
0279
0280
0281
0282
0283
0284
0285
0286
0287
0288
0289
0290
0291
0292
0293 #define G_DEFINE_ENUM_VALUE(EnumValue, EnumNick) \
0294 { EnumValue, #EnumValue, EnumNick } \
0295 GOBJECT_AVAILABLE_MACRO_IN_2_74
0296
0297
0298
0299
0300
0301
0302
0303
0304
0305
0306
0307
0308
0309
0310
0311
0312
0313
0314
0315
0316
0317
0318
0319
0320 #define G_DEFINE_ENUM_TYPE(TypeName, type_name, ...) \
0321 GType \
0322 type_name ## _get_type (void) { \
0323 static _g_type_once_init_type g_define_type__static = 0; \
0324 if (_g_type_once_init_enter (&g_define_type__static)) { \
0325 static const GEnumValue enum_values[] = { \
0326 __VA_ARGS__ , \
0327 { 0, NULL, NULL }, \
0328 }; \
0329 GType g_define_type = g_enum_register_static (g_intern_static_string (#TypeName), enum_values); \
0330 _g_type_once_init_leave (&g_define_type__static, g_define_type); \
0331 } \
0332 return g_define_type__static; \
0333 } \
0334 GOBJECT_AVAILABLE_MACRO_IN_2_74
0335
0336
0337
0338
0339
0340
0341
0342
0343
0344
0345
0346
0347
0348
0349
0350
0351
0352
0353
0354
0355
0356
0357
0358
0359
0360
0361
0362
0363 #define G_DEFINE_FLAGS_TYPE(TypeName, type_name, ...) \
0364 GType \
0365 type_name ## _get_type (void) { \
0366 static _g_type_once_init_type g_define_type__static = 0; \
0367 if (_g_type_once_init_enter (&g_define_type__static)) { \
0368 static const GFlagsValue flags_values[] = { \
0369 __VA_ARGS__ , \
0370 { 0, NULL, NULL }, \
0371 }; \
0372 GType g_define_type = g_flags_register_static (g_intern_static_string (#TypeName), flags_values); \
0373 _g_type_once_init_leave (&g_define_type__static, g_define_type); \
0374 } \
0375 return g_define_type__static; \
0376 } \
0377 GOBJECT_AVAILABLE_MACRO_IN_2_74
0378
0379 G_END_DECLS
0380
0381 #endif