diff options
author | Emmanuele Bassi <ebassi@openedhand.com> | 2008-01-29 19:13:15 +0000 |
---|---|---|
committer | Emmanuele Bassi <ebassi@openedhand.com> | 2008-01-29 19:13:15 +0000 |
commit | 3a9ec8f1ca9bf525875c3fbfaf1ab2f3c708bf36 (patch) | |
tree | 801edb382bad000e3cd91bb4798da5e58bc65f89 | |
parent | e8a59f086f43e5abd5414033ea8c9a886eb112ed (diff) | |
download | json-glib-work.tar.gz |
Update the JSON-GLib Vala bindingswork
Add a dependencies file, so that valac can simply use the json-glib-1.0
package and correcly chain up all the dependencies needed (at the moment,
only glib-2.0).
Update the vapi file to match with the GLib bindings with regards to the
out length parameters and some weak pointers. The only way to properly
solve the weak assignments issue would be to make JsonNode, JsonObject
and JsonArray proper GObjects, or at least add reference counting to
JsonNode. Not going to happend in 0.6, but it's worth adding it to the
1.0 roadmap.
-rw-r--r-- | contrib/json-glib-1.0.deps | 1 | ||||
-rw-r--r-- | contrib/json-glib-1.0.vapi | 14 | ||||
-rw-r--r-- | contrib/json-test.vala | 62 |
3 files changed, 38 insertions, 39 deletions
diff --git a/contrib/json-glib-1.0.deps b/contrib/json-glib-1.0.deps new file mode 100644 index 0000000..2bb8574 --- /dev/null +++ b/contrib/json-glib-1.0.deps @@ -0,0 +1 @@ +glib-2.0 diff --git a/contrib/json-glib-1.0.vapi b/contrib/json-glib-1.0.vapi index 3b93fa3..fb13b65 100644 --- a/contrib/json-glib-1.0.vapi +++ b/contrib/json-glib-1.0.vapi @@ -98,10 +98,9 @@ namespace Json { public weak uint current_line { get; } public weak uint current_pos { get; } public Parser (); - public bool load_from_file (string filename) throws GLib.Error; - public bool load_from_data (string buffer, ulong length = -1) throws ParserError; - public weak Json.Node peek_root (); - public Json.Node get_root (); + public bool load_from_file (string filename) throws ParserError; + public bool load_from_data (string buffer, ulong length) throws ParserError; + public weak Json.Node get_root (); public bool has_assingment (out string variable_name); public signal void parse_start (); public signal void parse_end (); @@ -119,17 +118,18 @@ namespace Json { [NoAccessorMethod] public weak bool pretty { get; set; } [NoAccessorMethod] - public weak uint indent_char { get; set; } + public weak unichar indent_char { get; set; } public Json.Node root { set; } public Generator (); - public string to_data (out ulong length = null); + public string to_data (out ulong length); public bool to_file (string! filename) throws GLib.FileError; + public void set_root (Json.Node node); } [CCode (cheader_filename = "json-glib/json-gobject.h")] public interface Serializable : GLib.Object { public abstract Json.Node serialize_property (string property_name, GLib.Value val, GLib.ParamSpec pspec); - public abstract bool deserialize_property (string property_name, GLib.Value val, GLib.ParamSpec pspec, Json.Node node); + public abstract bool deserialize_property (string property_name, ref GLib.Value val, GLib.ParamSpec pspec, Json.Node node); } [CCode (cheader_filename = "json-glib/json-gobject.h")] diff --git a/contrib/json-test.vala b/contrib/json-test.vala index 9091694..f5ec3b5 100644 --- a/contrib/json-test.vala +++ b/contrib/json-test.vala @@ -12,58 +12,56 @@ using GLib; using Json; public class Sample : GLib.Object { - public void dump_node (Json.Node node) - { - switch (node.type ()) - { + private void dump_node (Json.Node node) { + switch (node.type ()) { case Json.NodeType.OBJECT: - var obj = node.get_object (); + Json.Object obj = node.get_object (); stdout.printf ("* size: %d\n", obj.get_size ()); - foreach (weak string member in obj.get_members ()) - { - var val = obj.dup_member (member); + foreach (weak string member in obj.get_members ()) { + weak Json.Node val = obj.get_member (member); - stdout.printf ("* member[\"%s\"] type: %s, value:\n", - member, - val.type_name ()); + stdout.printf ("* member[\"%s\"] type: %s, value:\n", + member, + val.type_name ()); - dump_node (val); - } + dump_node (val); + } break; case Json.NodeType.ARRAY: - var array = node.get_array (); + Json.Array array = node.get_array (); stdout.printf ("* length: %d\n", array.get_length ()); - var count = 0; - foreach (weak Json.Node element in array.get_elements ()) - { - stdout.printf ("* element[%d] type: %s, value:\n", - count++, - element.type_name ()); + int count = 0; + foreach (weak Json.Node element in array.get_elements ()) { + stdout.printf ("* element[%d] type: %s, value:\n", + count++, + element.type_name ()); - dump_node (element); - } + dump_node (element); + } break; case Json.NodeType.VALUE: - switch (node.get_value_type ()) - { + switch (node.get_value_type ()) { case typeof (int): - stdout.printf ("*** %d\n", node.get_int ()); + stdout.printf ("*** value '%d'\n", node.get_int ()); break; case typeof (double): - stdout.printf ("*** %f\n", node.get_double ()); + stdout.printf ("*** value '%f'\n", node.get_double ()); break; case typeof (string): - stdout.printf ("*** %s\n", node.get_string ()); + stdout.printf ("*** value '%s'\n", node.get_string ()); break; - } + case typeof (bool): + stdout.printf ("*** value '%s'\n", node.get_boolean () ? "true" : "false"); + break; + } break; case Json.NodeType.NULL: - stdout.printf ("*** null\n"); + stdout.printf ("*** value: 'nul'l\n"); break; } } @@ -91,7 +89,7 @@ public class Sample : GLib.Object { gen.root = node; var len = 0; - var dump = gen.to_data (ref len); + var dump = gen.to_data (out len); stdout.printf ("** object dump (length: %d): %s\n", len, dump); }; @@ -100,13 +98,13 @@ public class Sample : GLib.Object { stdout.printf ("parsing complete\n"); }; - try { parser.load_from_data (buffer); } + try { parser.load_from_data (buffer, -1); } catch (Json.ParserError e) { stdout.printf ("%s\n", e.message); return; } - var root = parser.get_root (); + weak Json.Node root = parser.get_root (); stdout.printf ("root node type: %s\n", root.type_name ()); dump_node (root); |