[glib] gvalue: Add g_value_clear method
- From: Nicolas Dufresne <nicolasd src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] gvalue: Add g_value_clear method
- Date: Tue, 29 Sep 2015 12:40:44 +0000 (UTC)
commit 1233962b54de68bfdf06cfde244693ab7fd3558a
Author: Nicolas Dufresne <nicolas dufresne collabora com>
Date: Mon Sep 28 19:41:28 2015 -0400
gvalue: Add g_value_clear method
This method is similar to g_value_unset() but will accept
an uninitialized (zero-filled) GValue structure.
https://bugzilla.gnome.org/show_bug.cgi?id=755766
docs/reference/gobject/gobject-sections.txt | 1 +
gobject/gvalue.c | 20 ++++++++++++++++++++
gobject/gvalue.h | 2 ++
3 files changed, 23 insertions(+), 0 deletions(-)
---
diff --git a/docs/reference/gobject/gobject-sections.txt b/docs/reference/gobject/gobject-sections.txt
index 0f14f93..ce72fca 100644
--- a/docs/reference/gobject/gobject-sections.txt
+++ b/docs/reference/gobject/gobject-sections.txt
@@ -450,6 +450,7 @@ g_value_init
g_value_copy
g_value_reset
g_value_unset
+g_value_clear
g_value_init_from_instance
g_value_set_instance
g_value_fits_pointer
diff --git a/gobject/gvalue.c b/gobject/gvalue.c
index 5277b77..c91584e 100644
--- a/gobject/gvalue.c
+++ b/gobject/gvalue.c
@@ -274,6 +274,26 @@ g_value_unset (GValue *value)
}
/**
+ * g_value_clear:
+ * @value: An #GValue structure.
+ *
+ * Clears the current value in @value and "unsets" the type,
+ * this releases all resources associated with this GValue.
+ * Unlike g_value_unset() this method will accept uninitialized
+ * (zero-filled) #GValue structure as @value.
+ *
+ * Since 2.48
+ */
+void
+g_value_clear (GValue *value)
+{
+ if (value && value->g_type == 0)
+ return;
+
+ g_value_unset (value);
+}
+
+/**
* g_value_fits_pointer:
* @value: An initialized #GValue structure.
*
diff --git a/gobject/gvalue.h b/gobject/gvalue.h
index fd924f6..12b7975 100644
--- a/gobject/gvalue.h
+++ b/gobject/gvalue.h
@@ -134,6 +134,8 @@ GLIB_AVAILABLE_IN_ALL
GValue* g_value_reset (GValue *value);
GLIB_AVAILABLE_IN_ALL
void g_value_unset (GValue *value);
+GLIB_AVAILABLE_IN_2_48
+void g_value_clear (GValue *value);
GLIB_AVAILABLE_IN_ALL
void g_value_set_instance (GValue *value,
gpointer instance);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]