Synopsis#include <glib-object.h> #define G_TYPE_IS_PARAM (type) #define G_PARAM_SPEC (pspec) #define G_IS_PARAM_SPEC (pspec) #define G_PARAM_SPEC_CLASS (pclass) #define G_IS_PARAM_SPEC_CLASS (pclass) #define G_PARAM_SPEC_GET_CLASS (pspec) #define G_PARAM_SPEC_TYPE (pspec) #define G_PARAM_SPEC_TYPE_NAME (pspec) #define G_PARAM_SPEC_VALUE_TYPE (pspec) GParamSpec; GParamSpecClass; enum GParamFlags; #define G_PARAM_READWRITE #define G_PARAM_STATIC_STRINGS #define G_PARAM_MASK #define G_PARAM_USER_SHIFT GParamSpec* g_param_spec_ref (GParamSpec *pspec); void g_param_spec_unref (GParamSpec *pspec); void g_param_spec_sink (GParamSpec *pspec); GParamSpec* g_param_spec_ref_sink (GParamSpec *pspec); void g_param_value_set_default (GParamSpec *pspec, GValue *value); gboolean g_param_value_defaults (GParamSpec *pspec, GValue *value); gboolean g_param_value_validate (GParamSpec *pspec, GValue *value); gboolean g_param_value_convert (GParamSpec *pspec, const GValue *src_value, GValue *dest_value, gboolean strict_validation); gint g_param_values_cmp (GParamSpec *pspec, const GValue *value1, const GValue *value2); const gchar* g_param_spec_get_name (GParamSpec *pspec); const gchar* g_param_spec_get_nick (GParamSpec *pspec); const gchar* g_param_spec_get_blurb (GParamSpec *pspec); gpointer g_param_spec_get_qdata (GParamSpec *pspec, GQuark quark); void g_param_spec_set_qdata (GParamSpec *pspec, GQuark quark, gpointer data); void g_param_spec_set_qdata_full (GParamSpec *pspec, GQuark quark, gpointer data, GDestroyNotify destroy); gpointer g_param_spec_steal_qdata (GParamSpec *pspec, GQuark quark); GParamSpec* g_param_spec_get_redirect_target (GParamSpec *pspec); gpointer g_param_spec_internal (GType param_type, const gchar *name, const gchar *nick, const gchar *blurb, GParamFlags flags); GParamSpecTypeInfo; GType g_param_type_register_static (const gchar *name, const GParamSpecTypeInfo *pspec_info); GParamSpecPool; GParamSpecPool* g_param_spec_pool_new (gboolean type_prefixing); void g_param_spec_pool_insert (GParamSpecPool *pool, GParamSpec *pspec, GType owner_type); void g_param_spec_pool_remove (GParamSpecPool *pool, GParamSpec *pspec); GParamSpec* g_param_spec_pool_lookup (GParamSpecPool *pool, const gchar *param_name, GType owner_type, gboolean walk_ancestors); GParamSpec** g_param_spec_pool_list (GParamSpecPool *pool, GType owner_type, guint *n_pspecs_p); GList* g_param_spec_pool_list_owned (GParamSpecPool *pool, GType owner_type); DescriptionGParamSpec is an object structure that encapsulates the metadata required to specify parameters, such as e.g. GObject properties.
Parameter names need to start with a letter (a-z or A-Z). Subsequent characters can be letters, numbers or a '-'. All other characters are replaced by a '-' during construction. The result of this replacement is called the canonical name of the parameter.
DetailsG_TYPE_IS_PARAM()#define G_TYPE_IS_PARAM(type) (G_TYPE_FUNDAMENTAL (type) == G_TYPE_PARAM)
Checks whether
G_PARAM_SPEC()#define G_PARAM_SPEC(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM, GParamSpec)) Casts a derived GParamSpec object (e.g. of type GParamSpecInt) into a GParamSpec object.
G_IS_PARAM_SPEC()#define G_IS_PARAM_SPEC(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM))
Checks whether
G_PARAM_SPEC_CLASS()#define G_PARAM_SPEC_CLASS(pclass) (G_TYPE_CHECK_CLASS_CAST ((pclass), G_TYPE_PARAM, GParamSpecClass)) Casts a derived GParamSpecClass structure into a GParamSpecClass structure.
G_IS_PARAM_SPEC_CLASS()#define G_IS_PARAM_SPEC_CLASS(pclass) (G_TYPE_CHECK_CLASS_TYPE ((pclass), G_TYPE_PARAM))
Checks whether
G_PARAM_SPEC_GET_CLASS()#define G_PARAM_SPEC_GET_CLASS(pspec) (G_TYPE_INSTANCE_GET_CLASS ((pspec), G_TYPE_PARAM, GParamSpecClass)) Retrieves the GParamSpecClass of a GParamSpec.
G_PARAM_SPEC_TYPE()#define G_PARAM_SPEC_TYPE(pspec) (G_TYPE_FROM_INSTANCE (pspec))
Retrieves the GType of this
G_PARAM_SPEC_TYPE_NAME()#define G_PARAM_SPEC_TYPE_NAME(pspec) (g_type_name (G_PARAM_SPEC_TYPE (pspec)))
Retrieves the GType name of this
G_PARAM_SPEC_VALUE_TYPE()#define G_PARAM_SPEC_VALUE_TYPE(pspec) (G_PARAM_SPEC (pspec)->value_type) Retrieves the GType to initialize a GValue for this parameter.
GParamSpectypedef struct { GTypeInstance g_type_instance; gchar *name; GParamFlags flags; GType value_type; GType owner_type; /* class or interface using this property */ } GParamSpec; All other fields of the GParamSpec struct are private and should not be used directly.
GParamSpecClasstypedef struct { GTypeClass g_type_class; GType value_type; void (*finalize) (GParamSpec *pspec); /* GParam methods */ void (*value_set_default) (GParamSpec *pspec, GValue *value); gboolean (*value_validate) (GParamSpec *pspec, GValue *value); gint (*values_cmp) (GParamSpec *pspec, const GValue *value1, const GValue *value2); } GParamSpecClass;
The class structure for the GParamSpec type.
Normally, GParamSpec classes are filled by
enum GParamFlagstypedef enum { G_PARAM_READABLE = 1 << 0, G_PARAM_WRITABLE = 1 << 1, G_PARAM_CONSTRUCT = 1 << 2, G_PARAM_CONSTRUCT_ONLY = 1 << 3, G_PARAM_LAX_VALIDATION = 1 << 4, G_PARAM_STATIC_NAME = 1 << 5, #ifndef G_DISABLE_DEPRECATED G_PARAM_PRIVATE = G_PARAM_STATIC_NAME, #endif G_PARAM_STATIC_NICK = 1 << 6, G_PARAM_STATIC_BLURB = 1 << 7 } GParamFlags; Through the GParamFlags flag values, certain aspects of parameters can be configured.
G_PARAM_READWRITE#define G_PARAM_READWRITE (G_PARAM_READABLE | G_PARAM_WRITABLE)
GParamFlags value alias for
G_PARAM_STATIC_STRINGS#define G_PARAM_STATIC_STRINGS (G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB)
GParamFlags value alias for Since 2.13.0
G_PARAM_MASK#define G_PARAM_MASK (0x000000ff) Mask containing the bits of GParamSpec.flags which are reserved for GLib.
G_PARAM_USER_SHIFT#define G_PARAM_USER_SHIFT (8) Minimum shift count to be used for user defined flags, to be stored in GParamSpec.flags.
g_param_spec_ref ()GParamSpec* g_param_spec_ref (GParamSpec *pspec);
Increments the reference count of
g_param_spec_unref ()void g_param_spec_unref (GParamSpec *pspec);
Decrements the reference count of a
g_param_spec_sink ()void g_param_spec_sink (GParamSpec *pspec);
The initial reference count of a newly created GParamSpec is 1,
even though no one has explicitly called
g_param_spec_ref_sink ()GParamSpec* g_param_spec_ref_sink (GParamSpec *pspec); Convenience function to ref and sink a GParamSpec.
Since 2.10 g_param_value_set_default ()void g_param_value_set_default (GParamSpec *pspec, GValue *value);
Sets
g_param_value_defaults ()gboolean g_param_value_defaults (GParamSpec *pspec, GValue *value);
Checks whether
g_param_value_validate ()gboolean g_param_value_validate (GParamSpec *pspec, GValue *value);
Ensures that the contents of
g_param_value_convert ()gboolean g_param_value_convert (GParamSpec *pspec, const GValue *src_value, GValue *dest_value, gboolean strict_validation);
Transforms
See also
g_param_values_cmp ()gint g_param_values_cmp (GParamSpec *pspec, const GValue *value1, const GValue *value2);
Compares
g_param_spec_get_name ()const gchar* g_param_spec_get_name (GParamSpec *pspec); Get the name of a GParamSpec.
g_param_spec_get_nick ()const gchar* g_param_spec_get_nick (GParamSpec *pspec); Get the nickname of a GParamSpec.
g_param_spec_get_blurb ()const gchar* g_param_spec_get_blurb (GParamSpec *pspec); Get the short description of a GParamSpec.
g_param_spec_get_qdata ()gpointer g_param_spec_get_qdata (GParamSpec *pspec, GQuark quark);
Gets back user data pointers stored via
g_param_spec_set_qdata ()void g_param_spec_set_qdata (GParamSpec *pspec, GQuark quark, gpointer data);
Sets an opaque, named pointer on a GParamSpec. The name is
specified through a GQuark (retrieved e.g. via
g_param_spec_set_qdata_full ()void g_param_spec_set_qdata_full (GParamSpec *pspec, GQuark quark, gpointer data, GDestroyNotify destroy);
This function works like
g_param_spec_steal_qdata ()gpointer g_param_spec_steal_qdata (GParamSpec *pspec, GQuark quark);
Gets back user data pointers stored via
g_param_spec_get_redirect_target ()GParamSpec* g_param_spec_get_redirect_target (GParamSpec *pspec);
If the paramspec redirects operations to another paramspec,
returns that paramspec. Redirect is used typically for
providing a new implementation of a property in a derived
type while preserving all the properties from the parent
type. Redirection is established by creating a property
of type GParamSpecOverride. See
Since 2.4 g_param_spec_internal ()gpointer g_param_spec_internal (GType param_type, const gchar *name, const gchar *nick, const gchar *blurb, GParamFlags flags); Creates a new GParamSpec instance. A property name consists of segments consisting of ASCII letters and digits, separated by either the '-' or '_' character. The first character of a property name must be a letter. Names which violate these rules lead to undefined behaviour. When creating and looking up a GParamSpec, either separator can be used, but they cannot be mixed. Using '-' is considerably more efficient and in fact required when using property names as detail strings for signals.
Beyond the name, GParamSpecs have two more descriptive
strings associated with them, the
GParamSpecTypeInfotypedef struct { /* type system portion */ guint16 instance_size; /* obligatory */ guint16 n_preallocs; /* optional */ void (*instance_init) (GParamSpec *pspec); /* optional */ /* class portion */ GType value_type; /* obligatory */ void (*finalize) (GParamSpec *pspec); /* optional */ void (*value_set_default) (GParamSpec *pspec, /* recommended */ GValue *value); gboolean (*value_validate) (GParamSpec *pspec, /* optional */ GValue *value); gint (*values_cmp) (GParamSpec *pspec, /* recommended */ const GValue *value1, const GValue *value2); } GParamSpecTypeInfo;
This structure is used to provide the type system with the information
required to initialize and destruct (finalize) a parameter's class and
instances thereof.
The initialized structure is passed to the
g_param_type_register_static ()GType g_param_type_register_static (const gchar *name, const GParamSpecTypeInfo *pspec_info);
Registers
GParamSpecPooltypedef struct _GParamSpecPool GParamSpecPool; A GParamSpecPool maintains a collection of GParamSpecs which can be quickly accessed by owner and name. The implementation of the GObject property system uses such a pool to store the GParamSpecs of the properties all object types.
g_param_spec_pool_new ()GParamSpecPool* g_param_spec_pool_new (gboolean type_prefixing); Creates a new GParamSpecPool.
If
g_param_spec_pool_insert ()void g_param_spec_pool_insert (GParamSpecPool *pool, GParamSpec *pspec, GType owner_type); Inserts a GParamSpec in the pool.
g_param_spec_pool_remove ()void g_param_spec_pool_remove (GParamSpecPool *pool, GParamSpec *pspec); Removes a GParamSpec from the pool.
g_param_spec_pool_lookup ()GParamSpec* g_param_spec_pool_lookup (GParamSpecPool *pool, const gchar *param_name, GType owner_type, gboolean walk_ancestors); Looks up a GParamSpec in the pool.
g_param_spec_pool_list ()GParamSpec** g_param_spec_pool_list (GParamSpecPool *pool, GType owner_type, guint *n_pspecs_p);
Gets an array of all GParamSpecs owned by
g_param_spec_pool_list_owned ()GList* g_param_spec_pool_list_owned (GParamSpecPool *pool, GType owner_type);
Gets an GList of all GParamSpecs owned by
|