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
0020
0021 #ifndef __G_PARAM_H__
0022 #define __G_PARAM_H__
0023
0024 #if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION)
0025 #error "Only <glib-object.h> can be included directly."
0026 #endif
0027
0028 #include <gobject/gvalue.h>
0029
0030 G_BEGIN_DECLS
0031
0032
0033
0034
0035
0036
0037
0038
0039 #define G_TYPE_IS_PARAM(type) (G_TYPE_FUNDAMENTAL (type) == G_TYPE_PARAM)
0040
0041
0042
0043
0044
0045
0046
0047 #define G_PARAM_SPEC(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM, GParamSpec))
0048
0049
0050
0051
0052
0053
0054
0055 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_42
0056 #define G_IS_PARAM_SPEC(pspec) (G_TYPE_CHECK_INSTANCE_FUNDAMENTAL_TYPE ((pspec), G_TYPE_PARAM))
0057 #else
0058 #define G_IS_PARAM_SPEC(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM))
0059 #endif
0060
0061
0062
0063
0064
0065
0066 #define G_PARAM_SPEC_CLASS(pclass) (G_TYPE_CHECK_CLASS_CAST ((pclass), G_TYPE_PARAM, GParamSpecClass))
0067
0068
0069
0070
0071
0072
0073
0074 #define G_IS_PARAM_SPEC_CLASS(pclass) (G_TYPE_CHECK_CLASS_TYPE ((pclass), G_TYPE_PARAM))
0075
0076
0077
0078
0079
0080
0081 #define G_PARAM_SPEC_GET_CLASS(pspec) (G_TYPE_INSTANCE_GET_CLASS ((pspec), G_TYPE_PARAM, GParamSpecClass))
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091 #define G_PARAM_SPEC_TYPE(pspec) (G_TYPE_FROM_INSTANCE (pspec))
0092
0093
0094
0095
0096
0097
0098 #define G_PARAM_SPEC_TYPE_NAME(pspec) (g_type_name (G_PARAM_SPEC_TYPE (pspec)))
0099
0100
0101
0102
0103
0104
0105 #define G_PARAM_SPEC_VALUE_TYPE(pspec) (G_PARAM_SPEC (pspec)->value_type)
0106
0107
0108
0109
0110
0111
0112
0113
0114 #define G_VALUE_HOLDS_PARAM(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_PARAM))
0115
0116
0117
0118
0119
0120
0121
0122
0123
0124
0125
0126
0127
0128
0129
0130
0131
0132
0133
0134
0135
0136
0137
0138
0139
0140
0141
0142
0143
0144
0145
0146
0147
0148
0149
0150
0151
0152
0153
0154 typedef enum
0155 {
0156 G_PARAM_READABLE = 1 << 0,
0157 G_PARAM_WRITABLE = 1 << 1,
0158 G_PARAM_READWRITE = (G_PARAM_READABLE | G_PARAM_WRITABLE),
0159 G_PARAM_CONSTRUCT = 1 << 2,
0160 G_PARAM_CONSTRUCT_ONLY = 1 << 3,
0161 G_PARAM_LAX_VALIDATION = 1 << 4,
0162 G_PARAM_STATIC_NAME = 1 << 5,
0163 G_PARAM_PRIVATE GOBJECT_DEPRECATED_ENUMERATOR_IN_2_26 = G_PARAM_STATIC_NAME,
0164 G_PARAM_STATIC_NICK = 1 << 6,
0165 G_PARAM_STATIC_BLURB = 1 << 7,
0166
0167 G_PARAM_EXPLICIT_NOTIFY = 1 << 30,
0168
0169 G_PARAM_DEPRECATED = (gint)(1u << 31)
0170 } GParamFlags;
0171
0172
0173
0174
0175
0176
0177
0178
0179
0180
0181
0182
0183
0184
0185 #define G_PARAM_STATIC_STRINGS (G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB)
0186
0187
0188
0189
0190
0191
0192 #define G_PARAM_MASK (0x000000ff)
0193
0194
0195
0196
0197
0198
0199 #define G_PARAM_USER_SHIFT (8)
0200
0201
0202 typedef struct _GParamSpec GParamSpec;
0203 typedef struct _GParamSpecClass GParamSpecClass;
0204 typedef struct _GParameter GParameter GOBJECT_DEPRECATED_TYPE_IN_2_54;
0205 typedef struct _GParamSpecPool GParamSpecPool;
0206
0207 struct _GParamSpec
0208 {
0209 GTypeInstance g_type_instance;
0210
0211 const gchar *name;
0212 GParamFlags flags;
0213 GType value_type;
0214 GType owner_type;
0215
0216
0217 gchar *_nick;
0218 gchar *_blurb;
0219 GData *qdata;
0220 guint ref_count;
0221 guint param_id;
0222 };
0223
0224
0225
0226
0227
0228
0229
0230
0231
0232
0233
0234
0235
0236
0237
0238
0239
0240
0241
0242
0243
0244
0245 struct _GParamSpecClass
0246 {
0247 GTypeClass g_type_class;
0248
0249 GType value_type;
0250
0251 void (*finalize) (GParamSpec *pspec);
0252
0253
0254 void (*value_set_default) (GParamSpec *pspec,
0255 GValue *value);
0256 gboolean (*value_validate) (GParamSpec *pspec,
0257 GValue *value);
0258 gint (*values_cmp) (GParamSpec *pspec,
0259 const GValue *value1,
0260 const GValue *value2);
0261
0262 gboolean (*value_is_valid) (GParamSpec *pspec,
0263 const GValue *value);
0264
0265
0266 gpointer dummy[3];
0267 };
0268
0269
0270
0271
0272
0273
0274
0275
0276
0277
0278 struct _GParameter
0279 {
0280 const gchar *name;
0281 GValue value;
0282 } GOBJECT_DEPRECATED_TYPE_IN_2_54;
0283
0284
0285
0286 GOBJECT_AVAILABLE_IN_ALL
0287 GParamSpec* g_param_spec_ref (GParamSpec *pspec);
0288 GOBJECT_AVAILABLE_IN_ALL
0289 void g_param_spec_unref (GParamSpec *pspec);
0290 GOBJECT_AVAILABLE_IN_ALL
0291 void g_param_spec_sink (GParamSpec *pspec);
0292 GOBJECT_AVAILABLE_IN_ALL
0293 GParamSpec* g_param_spec_ref_sink (GParamSpec *pspec);
0294 GOBJECT_AVAILABLE_IN_ALL
0295 gpointer g_param_spec_get_qdata (GParamSpec *pspec,
0296 GQuark quark);
0297 GOBJECT_AVAILABLE_IN_ALL
0298 void g_param_spec_set_qdata (GParamSpec *pspec,
0299 GQuark quark,
0300 gpointer data);
0301 GOBJECT_AVAILABLE_IN_ALL
0302 void g_param_spec_set_qdata_full (GParamSpec *pspec,
0303 GQuark quark,
0304 gpointer data,
0305 GDestroyNotify destroy);
0306 GOBJECT_AVAILABLE_IN_ALL
0307 gpointer g_param_spec_steal_qdata (GParamSpec *pspec,
0308 GQuark quark);
0309 GOBJECT_AVAILABLE_IN_ALL
0310 GParamSpec* g_param_spec_get_redirect_target (GParamSpec *pspec);
0311
0312 GOBJECT_AVAILABLE_IN_ALL
0313 void g_param_value_set_default (GParamSpec *pspec,
0314 GValue *value);
0315 GOBJECT_AVAILABLE_IN_ALL
0316 gboolean g_param_value_defaults (GParamSpec *pspec,
0317 const GValue *value);
0318 GOBJECT_AVAILABLE_IN_ALL
0319 gboolean g_param_value_validate (GParamSpec *pspec,
0320 GValue *value);
0321 GOBJECT_AVAILABLE_IN_2_74
0322 gboolean g_param_value_is_valid (GParamSpec *pspec,
0323 const GValue *value);
0324 GOBJECT_AVAILABLE_IN_ALL
0325 gboolean g_param_value_convert (GParamSpec *pspec,
0326 const GValue *src_value,
0327 GValue *dest_value,
0328 gboolean strict_validation);
0329 GOBJECT_AVAILABLE_IN_ALL
0330 gint g_param_values_cmp (GParamSpec *pspec,
0331 const GValue *value1,
0332 const GValue *value2);
0333 GOBJECT_AVAILABLE_IN_ALL
0334 const gchar * g_param_spec_get_name (GParamSpec *pspec);
0335 GOBJECT_AVAILABLE_IN_ALL
0336 const gchar * g_param_spec_get_nick (GParamSpec *pspec);
0337 GOBJECT_AVAILABLE_IN_ALL
0338 const gchar * g_param_spec_get_blurb (GParamSpec *pspec);
0339 GOBJECT_AVAILABLE_IN_ALL
0340 void g_value_set_param (GValue *value,
0341 GParamSpec *param);
0342 GOBJECT_AVAILABLE_IN_ALL
0343 GParamSpec* g_value_get_param (const GValue *value);
0344 GOBJECT_AVAILABLE_IN_ALL
0345 GParamSpec* g_value_dup_param (const GValue *value);
0346
0347
0348 GOBJECT_AVAILABLE_IN_ALL
0349 void g_value_take_param (GValue *value,
0350 GParamSpec *param);
0351 GOBJECT_DEPRECATED_FOR(g_value_take_param)
0352 void g_value_set_param_take_ownership (GValue *value,
0353 GParamSpec *param);
0354 GOBJECT_AVAILABLE_IN_2_36
0355 const GValue * g_param_spec_get_default_value (GParamSpec *pspec);
0356
0357 GOBJECT_AVAILABLE_IN_2_46
0358 GQuark g_param_spec_get_name_quark (GParamSpec *pspec);
0359
0360
0361 typedef struct _GParamSpecTypeInfo GParamSpecTypeInfo;
0362
0363
0364
0365
0366
0367
0368
0369
0370
0371
0372
0373
0374
0375
0376
0377
0378
0379
0380
0381
0382
0383
0384
0385
0386
0387 struct _GParamSpecTypeInfo
0388 {
0389
0390 guint16 instance_size;
0391 guint16 n_preallocs;
0392 void (*instance_init) (GParamSpec *pspec);
0393
0394
0395 GType value_type;
0396 void (*finalize) (GParamSpec *pspec);
0397 void (*value_set_default) (GParamSpec *pspec,
0398 GValue *value);
0399 gboolean (*value_validate) (GParamSpec *pspec,
0400 GValue *value);
0401 gint (*values_cmp) (GParamSpec *pspec,
0402 const GValue *value1,
0403 const GValue *value2);
0404 };
0405 GOBJECT_AVAILABLE_IN_ALL
0406 GType g_param_type_register_static (const gchar *name,
0407 const GParamSpecTypeInfo *pspec_info);
0408
0409 GOBJECT_AVAILABLE_IN_2_66
0410 gboolean g_param_spec_is_valid_name (const gchar *name);
0411
0412
0413 GType _g_param_type_register_static_constant (const gchar *name,
0414 const GParamSpecTypeInfo *pspec_info,
0415 GType opt_type);
0416
0417
0418
0419 GOBJECT_AVAILABLE_IN_ALL
0420 gpointer g_param_spec_internal (GType param_type,
0421 const gchar *name,
0422 const gchar *nick,
0423 const gchar *blurb,
0424 GParamFlags flags);
0425 GOBJECT_AVAILABLE_IN_ALL
0426 GParamSpecPool* g_param_spec_pool_new (gboolean type_prefixing);
0427 GOBJECT_AVAILABLE_IN_ALL
0428 void g_param_spec_pool_insert (GParamSpecPool *pool,
0429 GParamSpec *pspec,
0430 GType owner_type);
0431 GOBJECT_AVAILABLE_IN_ALL
0432 void g_param_spec_pool_remove (GParamSpecPool *pool,
0433 GParamSpec *pspec);
0434 GOBJECT_AVAILABLE_IN_ALL
0435 GParamSpec* g_param_spec_pool_lookup (GParamSpecPool *pool,
0436 const gchar *param_name,
0437 GType owner_type,
0438 gboolean walk_ancestors);
0439 GOBJECT_AVAILABLE_IN_ALL
0440 GList* g_param_spec_pool_list_owned (GParamSpecPool *pool,
0441 GType owner_type);
0442 GOBJECT_AVAILABLE_IN_ALL
0443 GParamSpec** g_param_spec_pool_list (GParamSpecPool *pool,
0444 GType owner_type,
0445 guint *n_pspecs_p);
0446 GOBJECT_AVAILABLE_IN_2_80
0447 void g_param_spec_pool_free (GParamSpecPool *pool);
0448
0449
0450
0451
0452
0453
0454
0455
0456
0457
0458
0459
0460
0461
0462
0463
0464
0465 G_END_DECLS
0466
0467 #endif