Lines Matching full:value
44 * Boxed types are useful for simple value-holder structures like rectangles or
83 value_meminit (GValue *value,
86 value->g_type = value_type;
87 memset (value->data, 0, sizeof (value->data));
107 GValue *value = boxed;
109 if (G_VALUE_TYPE (value))
110 g_value_unset (value);
111 g_free (value);
278 boxed_proxy_value_init (GValue *value)
280 value->data[0].v_pointer = NULL;
284 boxed_proxy_value_free (GValue *value)
286 if (value->data[0].v_pointer && !(value->data[1].v_uint & G_VALUE_NOCOPY_CONTENTS))
290 key.type = G_VALUE_TYPE (value);
292 node->free (value->data[0].v_pointer);
313 boxed_proxy_value_peek_pointer (const GValue *value)
315 return value->data[0].v_pointer;
319 boxed_proxy_collect_value (GValue *value,
326 key.type = G_VALUE_TYPE (value);
330 value->data[0].v_pointer = NULL;
335 value->data[0].v_pointer = collect_values[0].v_pointer;
336 value->data[1].v_uint = G_VALUE_NOCOPY_CONTENTS;
339 value->data[0].v_pointer = node->copy (collect_values[0].v_pointer);
346 boxed_proxy_lcopy_value (const GValue *value,
354 return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
356 if (!value->data[0].v_pointer)
359 *boxed_p = value->data[0].v_pointer;
364 key.type = G_VALUE_TYPE (value);
366 *boxed_p = node->copy (value->data[0].v_pointer);
471 /* we heavily rely on third-party boxed type value vtable
472 * implementations to follow normal boxed value storage
533 GValue value;
536 value_meminit (&value, boxed_type);
537 value.data[0].v_pointer = boxed;
538 value_table->value_free (&value);
544 * @value: a valid #GValue of %G_TYPE_BOXED derived type
548 * Returns: boxed contents of @value
551 g_value_get_boxed (const GValue *value)
553 g_return_val_if_fail (G_VALUE_HOLDS_BOXED (value), NULL);
554 g_return_val_if_fail (G_TYPE_IS_VALUE (G_VALUE_TYPE (value)), NULL);
556 return value->data[0].v_pointer;
561 * @value: a valid #GValue of %G_TYPE_BOXED derived type
564 * the boxed value is duplicated and needs to be later freed with
565 * g_boxed_free(), e.g. like: g_boxed_free (G_VALUE_TYPE (@value),
568 * Returns: boxed contents of @value
571 g_value_dup_boxed (const GValue *value)
573 g_return_val_if_fail (G_VALUE_HOLDS_BOXED (value), NULL);
574 g_return_val_if_fail (G_TYPE_IS_VALUE (G_VALUE_TYPE (value)), NULL);
576 return value->data[0].v_pointer ? g_boxed_copy (G_VALUE_TYPE (value), value->data[0].v_pointer) : NULL;
580 value_set_boxed_internal (GValue *value,
591 * have value reinitialized also (for values defaulting
592 * to other default value states than a NULL data pointer),
595 g_value_reset (value);
599 key.type = G_VALUE_TYPE (value);
605 if (value->data[0].v_pointer && !(value->data[1].v_uint & G_VALUE_NOCOPY_CONTENTS))
606 node->free (value->data[0].v_pointer);
607 value->data[1].v_uint = need_free ? 0 : G_VALUE_NOCOPY_CONTENTS;
608 value->data[0].v_pointer = need_copy ? node->copy (boxed) : boxed;
615 if (value->data[0].v_pointer && !(value->data[1].v_uint & G_VALUE_NOCOPY_CONTENTS))
616 g_boxed_free (G_VALUE_TYPE (value), value
617 value->data[1].v_uint = need_free ? 0 : G_VALUE_NOCOPY_CONTENTS;
618 value->data[0].v_pointer = need_copy ? g_boxed_copy (G_VALUE_TYPE (value), boxed) : boxed;
624 * @value: a valid #GValue of %G_TYPE_BOXED derived type
625 * @v_boxed: boxed value to be set
630 g_value_set_boxed (GValue *value,
633 g_return_if_fail (G_VALUE_HOLDS_BOXED (value));
634 g_return_if_fail (G_TYPE_IS_VALUE (G_VALUE_TYPE (value)));
636 value_set_boxed_internal (value, boxed, TRUE, TRUE);
641 * @value: a valid #GValue of %G_TYPE_BOXED derived type
642 * @v_boxed: static boxed value to be set
645 * The boxed value is assumed to be static, and is thus not duplicated
649 g_value_set_static_boxed (GValue *value,
652 g_return_if_fail (G_VALUE_HOLDS_BOXED (value));
653 g_return_if_fail (G_TYPE_IS_VALUE (G_VALUE_TYPE (value)));
655 value_set_boxed_internal (value, boxed, FALSE, FALSE);
660 * @value: a valid #GValue of %G_TYPE_BOXED derived type
661 * @v_boxed: duplicated unowned boxed value to be set
668 g_value_set_boxed_take_ownership (GValue *value,
671 g_value_take_boxed (value, boxed);
676 * @value: a valid #GValue of %G_TYPE_BOXED derived type
677 * @v_boxed: duplicated unowned boxed value to be set
686 g_value_take_boxed (GValue *value,
689 g_return_if_fail (G_VALUE_HOLDS_BOXED (value));
690 g_return_if_fail (G_TYPE_IS_VALUE (G_VALUE_TYPE (value)));
692 value_set_boxed_internal (value, boxed, FALSE, TRUE);