[json-glib] gobject: Uniform JSON<->GObject mapping code
- From: Emmanuele Bassi <ebassi src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [json-glib] gobject: Uniform JSON<->GObject mapping code
- Date: Wed, 28 Oct 2009 16:30:14 +0000 (UTC)
commit 00b4d200849e232cd904d23d3593d6f95252b483
Author: Emmanuele Bassi <ebassi linux intel com>
Date: Wed Oct 28 16:05:19 2009 +0000
gobject: Uniform JSON<->GObject mapping code
Rename json_gobject_new() to json_gobject_deserialize(), and
json_gobject_dump() to json_gobject_serialize(); this maps the
JSON GBoxed API.
Also for consistency, change the serialize() return value and
the deserialize() argument to be JsonNodes of type JSON_NODE_OBJECT.
doc/reference/json-glib-sections.txt | 4 +-
json-glib/json-gobject.c | 82 ++++++++++++++++++++++------------
json-glib/json-gobject.h | 10 ++--
3 files changed, 61 insertions(+), 35 deletions(-)
---
diff --git a/doc/reference/json-glib-sections.txt b/doc/reference/json-glib-sections.txt
index 428767d..e47c309 100644
--- a/doc/reference/json-glib-sections.txt
+++ b/doc/reference/json-glib-sections.txt
@@ -227,8 +227,8 @@ json_boxed_deserialize
<SECTION>
<FILE>json-gobject</FILE>
<TITLE>GObject Serialization</TITLE>
-json_gobject_new
-json_gobject_dump
+json_gobject_serialize
+json_gobject_deserialize
<SUBSECTION>
json_construct_gobject
diff --git a/json-glib/json-gobject.c b/json-glib/json-gobject.c
index 5fa18b6..53ee8fb 100644
--- a/json-glib/json-gobject.c
+++ b/json-glib/json-gobject.c
@@ -173,20 +173,7 @@ flags_from_string (GType type,
return ret;
}
-/**
- * json_gobject_new:
- * @gtype: the type of the #GObject to create
- * @object: a #JsonObject describing the object instance
- *
- * Creates a new #GObject of type @gtype, and constructs it
- * using the members of the passed #JsonObject
- *
- * Return value: (transfer full): The newly created #GObject
- * instance. Use g_object_unref() when done
- *
- * Since: 0.10
- */
-GObject *
+static GObject *
json_gobject_new (GType gtype,
JsonObject *object)
{
@@ -340,20 +327,7 @@ json_gobject_new (GType gtype,
return retval;
}
-/**
- * json_gobject_dump:
- * @gobject: a #GObject
- *
- * Creates a #JsonObject representing the passed #GObject
- * instance. Each member of the returned JSON object will
- * map to a property of the #GObject
- *
- * Return value: (transfer full): the newly created #JsonObject.
- * Use json_object_unref() when done
- *
- * Since: 0.10
- */
-JsonObject *
+static JsonObject *
json_gobject_dump (GObject *gobject)
{
JsonSerializableIface *iface = NULL;
@@ -721,6 +695,58 @@ json_serialize_pspec (const GValue *real_value,
}
/**
+ * json_gobject_deserialize:
+ * @gtype: the type of the #GObject to create
+ * @node: a #JsonNode of type %JSON_NODE_OBJECT describing the
+ * instance of type @gtype
+ *
+ * Creates a new #GObject of type @gtype, and constructs it
+ * using the members of the passed #JsonObject
+ *
+ * Return value: (transfer full): The newly created #GObject
+ * instance. Use g_object_unref() to free the resources
+ * allocated by this function
+ *
+ * Since: 0.10
+ */
+GObject *
+json_gobject_deserialize (GType gtype,
+ JsonNode *node)
+{
+ g_return_val_if_fail (g_type_is_a (gtype, G_TYPE_OBJECT), NULL);
+ g_return_val_if_fail (JSON_NODE_TYPE (node) == JSON_NODE_OBJECT, NULL);
+
+ return json_gobject_new (gtype, json_node_get_object (node));
+}
+
+/**
+ * json_gobject_serialize:
+ * @gobject: a #GObject
+ *
+ * Creates a #JsonNode representing the passed #GObject
+ * instance. Each member of the returned JSON object will
+ * map to a property of the #GObject
+ *
+ * Return value: (transfer full): the newly created #JsonNode
+ * of type %JSON_NODE_OBJECT. Use json_node_free() to free
+ * the resources allocated by this function
+ *
+ * Since: 0.10
+ */
+JsonNode *
+json_gobject_serialize (GObject *gobject)
+{
+ JsonNode *retval;
+
+ g_return_val_if_fail (G_IS_OBJECT (gobject), NULL);
+
+ retval = json_node_new (JSON_NODE_OBJECT);
+ json_node_take_object (retval, json_gobject_dump (gobject));
+
+ return retval;
+}
+
+/**
* json_construct_gobject:
* @gtype: the #GType of object to construct
* @data: a JSON data stream
diff --git a/json-glib/json-gobject.h b/json-glib/json-gobject.h
index a855fba..d294702 100644
--- a/json-glib/json-gobject.h
+++ b/json-glib/json-gobject.h
@@ -117,15 +117,15 @@ JsonNode *json_boxed_serialize (GType gboxed_t
gpointer json_boxed_deserialize (GType gboxed_type,
JsonNode *node);
-GObject * json_gobject_new (GType gtype,
- JsonObject *object);
-JsonObject *json_gobject_dump (GObject *gobject);
+JsonNode *json_gobject_serialize (GObject *gobject);
+GObject * json_gobject_deserialize (GType gtype,
+ JsonNode *node);
-GObject * json_construct_gobject (GType gtype,
+GObject * json_construct_gobject (GType gtype,
const gchar *data,
gsize length,
GError **error);
-gchar * json_serialize_gobject (GObject *gobject,
+gchar * json_serialize_gobject (GObject *gobject,
gsize *length) G_GNUC_MALLOC;
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]