Class
GObjectObject
Description [src]
class GObject.Object : GObject.TypeInstance
{
/* No available fields */
}
The base object type.
GObject
is the fundamental type providing the common attributes and
methods for all object types in GTK, Pango and other libraries
based on GObject. The GObject
class provides methods for object
construction and destruction, property access methods, and signal
support. Signals are described in detail [here][gobject-Signals].
For a tutorial on implementing a new GObject
class, see How to define and
implement a new GObject.
For a list of naming conventions for GObjects and their methods, see the
GType conventions. For the high-level concepts
behind GObject, read
Instantiatable classed types: Objects.
Since GLib 2.72, all GObject
s are guaranteed to be aligned to at least the
alignment of the largest basic GLib type (typically this is guint64
or
gdouble
). If you need larger alignment for an element in a GObject
, you
should allocate it on the heap (aligned), or arrange for your GObject
to be
appropriately padded. This guarantee applies to the GObject
(or derived)
struct, the GObjectClass
(or derived) struct, and any private data allocated
by G_ADD_PRIVATE()
.
Constructors
g_object_new_with_properties
Creates a new instance of a GObject
subtype and sets its properties using
the provided arrays. Both arrays must have exactly n_properties
elements,
and the names and values correspond by index.
since: 2.54
Functions
g_object_interface_find_property
Find the GParamSpec
with the given name for an
interface. Generally, the interface vtable passed in as g_iface
will be the default vtable from g_type_default_interface_ref(), or,
if you know the interface has already been loaded, g_type_default_interface_peek().
since: 2.4
g_object_interface_install_property
Add a property to an interface; this is only useful for interfaces
that are added to GObject-derived types. Adding a property to an
interface forces all objects classes with that interface to have a
compatible property. The compatible property could be a newly
created GParamSpec
, but normally
g_object_class_override_property()
will be used so that the object
class only needs to provide an implementation and inherits the
property description, default value, bounds, and so forth from the
interface property.
since: 2.4
g_object_interface_list_properties
Lists the properties of an interface.Generally, the interface
vtable passed in as g_iface
will be the default vtable from
g_type_default_interface_ref(), or, if you know the interface has
already been loaded, g_type_default_interface_peek().
since: 2.4
Instance methods
g_object_add_toggle_ref
Increases the reference count of the object by one and sets a callback to be called when all other references to the object are dropped, or when this is already the last reference to the object and another reference is established.
since: 2.8
g_object_add_weak_pointer
Adds a weak reference from weak_pointer to object
to indicate that
the pointer located at weak_pointer_location
is only valid during
the lifetime of object
. When the object
is finalized,
weak_pointer
will be set to NULL
.
g_object_bind_property
Creates a binding between source_property
on source
and target_property
on target
.
since: 2.26
g_object_bind_property_with_closures
Creates a binding between source_property
on source
and target_property
on target
, allowing you to set the transformation functions to be used by
the binding.
since: 2.26
g_object_dup_data
This is a variant of g_object_get_data()
which returns
a ‘duplicate’ of the value. dup_func
defines the
meaning of ‘duplicate’ in this context, it could e.g.
take a reference on a ref-counted object.
since: 2.34
g_object_dup_qdata
This is a variant of g_object_get_qdata()
which returns
a ‘duplicate’ of the value. dup_func
defines the
meaning of ‘duplicate’ in this context, it could e.g.
take a reference on a ref-counted object.
since: 2.34
g_object_force_floating
This function is intended for GObject
implementations to re-enforce
a [floating][floating-ref] object reference. Doing this is seldom
required: all GInitiallyUnowneds
are created with a floating reference
which usually just needs to be sunken by calling g_object_ref_sink().
since: 2.10
g_object_freeze_notify
Increases the freeze count on object
. If the freeze count is
non-zero, the emission of “notify” signals on object
is
stopped. The signals are queued until the freeze count is decreased
to zero. Duplicate notifications are squashed so that at most one
GObject::notify
signal is emitted for each property modified while the
object is frozen.
g_object_get_data
Gets a named field from the objects table of associations (see g_object_set_data()).
g_object_getv
Gets n_properties
properties for an object
.
Obtained properties will be set to values
. All properties must be valid.
Warnings will be emitted and undefined behaviour may result if invalid
properties are passed in.
since: 2.54
g_object_notify_by_pspec
Emits a “notify” signal for the property specified by pspec
on object
.
since: 2.26
g_object_ref_sink
Increase the reference count of object
, and possibly remove the
[floating][floating-ref] reference, if object
has a floating reference.
since: 2.10
g_object_remove_toggle_ref
Removes a reference added with g_object_add_toggle_ref(). The reference count of the object is decreased by one.
since: 2.8
g_object_remove_weak_pointer
Removes a weak reference from object
that was previously added
using g_object_add_weak_pointer(). The weak_pointer_location
has
to match the one used with g_object_add_weak_pointer().
g_object_replace_data
Compares the user data for the key key
on object
with
oldval
, and if they are the same, replaces oldval
with
newval
.
since: 2.34
g_object_replace_qdata
Compares the user data for the key quark
on object
with
oldval
, and if they are the same, replaces oldval
with
newval
.
since: 2.34
g_object_run_dispose
Releases all references to other objects. This can be used to break reference cycles.
g_object_set_data
Each object carries around a table of associations from strings to pointers. This function lets you set an association.
g_object_set_data_full
Like g_object_set_data()
except it adds notification
for when the association is destroyed, either by setting it
to a different value or when the object is destroyed.
g_object_set_qdata
This sets an opaque, named pointer on an object.
The name is specified through a GQuark
(retrieved e.g. via
g_quark_from_static_string()), and the pointer
can be gotten back from the object
with g_object_get_qdata()
until the object
is finalized.
Setting a previously set user data pointer, overrides (frees)
the old pointer set, using NULL
as pointer essentially
removes the data stored.
g_object_set_qdata_full
This function works like g_object_set_qdata(), but in addition,
a void (*destroy) (gpointer) function may be specified which is
called with data
as argument when the object
is finalized, or
the data is being overwritten by a call to g_object_set_qdata()
with the same quark
.
g_object_setv
Sets n_properties
properties for an object
.
Properties to be set will be taken from values
. All properties must be
valid. Warnings will be emitted and undefined behaviour may result if invalid
properties are passed in.
since: 2.54
g_object_steal_data
Remove a specified datum from the object’s data associations, without invoking the association’s destroy handler.
g_object_steal_qdata
This function gets back user data pointers stored via
g_object_set_qdata()
and removes the data
from object
without invoking its destroy()
function (if any was
set).
Usually, calling this function is only required to update
user data pointers with a destroy notifier, for example:.
g_object_thaw_notify
Reverts the effect of a previous call to
g_object_freeze_notify(). The freeze count is decreased on object
and when it reaches zero, queued “notify” signals are emitted.
g_object_unref
Decreases the reference count of object
. When its reference count
drops to 0, the object is finalized (i.e. its memory is freed).
g_object_watch_closure
This function essentially limits the life time of the closure
to
the life time of the object. That is, when the object is finalized,
the closure
is invalidated by calling g_closure_invalidate()
on
it, in order to prevent invocations of the closure with a finalized
(nonexisting) object. Also, g_object_ref()
and g_object_unref()
are
added as marshal guards to the closure
, to ensure that an extra
reference count is held on object
during invocation of the
closure
. Usually, this function will be called on closures that
use this object
as closure data.
g_object_weak_ref
Adds a weak reference callback to an object. Weak references are
used for notification when an object is disposed. They are called
“weak references” because they allow you to safely hold a pointer
to an object without calling g_object_ref()
(g_object_ref() adds a
strong reference, that is, forces the object to stay alive).
Signals
GObject.Object::notify
The notify signal is emitted on an object when one of its properties has its value set through g_object_set_property(), g_object_set(), et al.
Class structure
struct GObjectObjectClass {
GTypeClass g_type_class;
GObject* (* constructor) (
GType type,
guint n_construct_properties,
GObjectConstructParam* construct_properties
);
void (* set_property) (
GObject* object,
guint property_id,
const GValue* value,
GParamSpec* pspec
);
void (* get_property) (
GObject* object,
guint property_id,
GValue* value,
GParamSpec* pspec
);
void (* dispose) (
GObject* object
);
void (* finalize) (
GObject* object
);
void (* dispatch_properties_changed) (
GObject* object,
guint n_pspecs,
GParamSpec** pspecs
);
void (* notify) (
GObject* object,
GParamSpec* pspec
);
void (* constructed) (
GObject* object
);
}
The class structure for the GObject type.
// Example of implementing a singleton using a constructor.
static MySingleton *the_singleton = NULL;
static GObject*
my_singleton_constructor (GType type,
guint n_construct_params,
GObjectConstructParam *construct_params)
{
GObject *object;
if (!the_singleton)
{
object = G_OBJECT_CLASS (parent_class)->constructor (type,
n_construct_params,
construct_params);
the_singleton = MY_SINGLETON (object);
}
else
object = g_object_ref (G_OBJECT (the_singleton));
return object;
}
Class members
g_type_class: GTypeClass
The parent class.
constructor: GObject* (* constructor) ( GType type, guint n_construct_properties, GObjectConstructParam* construct_properties )
The
constructor
function is called by g_object_new () to complete the object initialization after all the construction properties are set. The first thing aconstructor
implementation must do is chain up to theconstructor
of the parent class. Overridingconstructor
should be rarely needed, e.g. to handle construct properties, or to implement singletons.set_property: void (* set_property) ( GObject* object, guint property_id, const GValue* value, GParamSpec* pspec )
The generic setter for all properties of this type. Should be overridden for every type with properties. If implementations of
set_property
don’t emit property change notification explicitly, this will be done implicitly by the type system. However, if the notify signal is emitted explicitly, the type system will not emit it a second time.get_property: void (* get_property) ( GObject* object, guint property_id, GValue* value, GParamSpec* pspec )
The generic getter for all properties of this type. Should be overridden for every type with properties.
dispose: void (* dispose) ( GObject* object )
The
dispose
function is supposed to drop all references to other objects, but keep the instance otherwise intact, so that client method invocations still work. It may be run multiple times (due to reference loops). Before returning,dispose
should chain up to thedispose
method of the parent class.finalize: void (* finalize) ( GObject* object )
Instance finalization function, should finish the finalization of the instance begun in
dispose
and chain up to thefinalize
method of the parent class.dispatch_properties_changed: void (* dispatch_properties_changed) ( GObject* object, guint n_pspecs, GParamSpec** pspecs )
Emits property change notification for a bunch of properties. Overriding
dispatch_properties_changed
should be rarely needed.notify: void (* notify) ( GObject* object, GParamSpec* pspec )
The class closure for the notify signal.
constructed: void (* constructed) ( GObject* object )
The
constructed
function is called byg_object_new()
as the final step of the object creation process. At the point of the call, all construction properties have been set on the object. The purpose of this call is to allow for object initialisation steps that can only be performed after construction properties have been set.constructed
implementors should chain up to theconstructed
call of their parent class to allow it to complete its initialisation.
Virtual methods
GObject.ObjectClass.constructed
The constructed
function is called by g_object_new()
as the
final step of the object creation process. At the point of the call, all
construction properties have been set on the object. The purpose of this
call is to allow for object initialisation steps that can only be performed
after construction properties have been set. constructed
implementors
should chain up to the constructed
call of their parent class to allow it
to complete its initialisation.
GObject.ObjectClass.dispatch_properties_changed
Emits property change notification for a bunch
of properties. Overriding dispatch_properties_changed
should be rarely needed.
GObject.ObjectClass.dispose
The dispose
function is supposed to drop all references to other
objects, but keep the instance otherwise intact, so that client method
invocations still work. It may be run multiple times (due to reference
loops). Before returning, dispose
should chain up to the dispose
method
of the parent class.
GObject.ObjectClass.finalize
Instance finalization function, should finish the finalization of
the instance begun in dispose
and chain up to the finalize
method of the
parent class.
GObject.ObjectClass.get_property
The generic getter for all properties of this type. Should be overridden for every type with properties.
GObject.ObjectClass.set_property
The generic setter for all properties of this type. Should be
overridden for every type with properties. If implementations of
set_property
don’t emit property change notification explicitly, this will
be done implicitly by the type system. However, if the notify signal is
emitted explicitly, the type system will not emit it a second time.
Class methods
g_object_class_override_property
Registers property_id
as referring to a property with the name
name
in a parent class or in an interface implemented by oclass
.
This allows this class to “override” a property implementation in
a parent class or to provide the implementation of a property from
an interface.
since: 2.4