1
#include "cogl-gtype-private.h"
3
#include <gobject/gvaluecollector.h>
6
_cogl_gtype_object_init_value (GValue *value)
8
value->data[0].v_pointer = NULL;
12
_cogl_gtype_object_free_value (GValue *value)
14
if (value->data[0].v_pointer != NULL)
15
cogl_object_unref (value->data[0].v_pointer);
19
_cogl_gtype_object_copy_value (const GValue *src,
22
if (src->data[0].v_pointer != NULL)
23
dst->data[0].v_pointer = cogl_object_ref (src->data[0].v_pointer);
25
dst->data[0].v_pointer = NULL;
29
_cogl_gtype_object_peek_pointer (const GValue *value)
31
return value->data[0].v_pointer;
35
_cogl_gtype_object_collect_value (GValue *value,
36
guint n_collect_values,
37
GTypeCValue *collect_values,
42
object = collect_values[0].v_pointer;
46
value->data[0].v_pointer = NULL;
50
if (object->klass == NULL)
51
return g_strconcat ("invalid unclassed CoglObject pointer for "
53
G_VALUE_TYPE_NAME (value),
57
value->data[0].v_pointer = cogl_object_ref (object);
63
_cogl_gtype_object_lcopy_value (const GValue *value,
64
guint n_collect_values,
65
GTypeCValue *collect_values,
68
CoglObject **object_p = collect_values[0].v_pointer;
71
return g_strconcat ("value location for '",
72
G_VALUE_TYPE_NAME (value),
76
if (value->data[0].v_pointer == NULL)
78
else if (collect_flags & G_VALUE_NOCOPY_CONTENTS)
79
*object_p = value->data[0].v_pointer;
81
*object_p = cogl_object_ref (value->data[0].v_pointer);
87
_cogl_gtype_object_class_base_init (CoglObjectClass *klass)
92
_cogl_gtype_object_class_base_finalize (CoglObjectClass *klass)
97
_cogl_gtype_object_class_init (CoglObjectClass *klass)
102
_cogl_gtype_object_init (CoglObject *object)
107
_cogl_gtype_dummy_iface_init (gpointer iface)
112
* cogl_object_value_set_object:
113
* @value: a #GValue initialized with %COGL_GTYPE_TYPE_OBJECT
114
* @object: (type Cogl.GtypeObject) (allow-none): a #CoglGtypeObject, or %NULL
116
* Sets the contents of a #GValue initialized with %COGL_GTYPE_TYPE_OBJECT.
120
cogl_object_value_set_object (GValue *value,
123
CoglObject *old_object;
125
old_object = value->data[0].v_pointer;
129
/* take over ownership */
130
value->data[0].v_pointer = object;
133
value->data[0].v_pointer = NULL;
135
if (old_object != NULL)
136
cogl_object_unref (old_object);
140
* cogl_object_value_get_object:
141
* @value: a #GValue initialized with %COGL_GTYPE_TYPE_OBJECT
143
* Retrieves a pointer to the #CoglGtypeObject contained inside
144
* the passed #GValue.
146
* Return value: (transfer none) (type Cogl.GtypeObject): a pointer to
147
* a #CoglGtypeObject, or %NULL
150
cogl_object_value_get_object (const GValue *value)
152
return value->data[0].v_pointer;