summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Update the JSON-GLib Vala bindingsworkEmmanuele Bassi2008-01-293-39/+38
| | | | | | | | | | | | | 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.
* Remove % from the pkg-config file ruleEmmanuele Bassi2008-01-291-1/+1
| | | | | Rules starting with '%' are a make-isms, and automake 1.10 complains a lot about them.
* Remove json_parser_peek_root from the gtk-doc sectionsEmmanuele Bassi2008-01-291-1/+0
| | | | | The json_parser_peek_root() function has been removed, and so we do not its symbol in the json-glib-sections.txt file anymore.
* Update after the JsonParser::get_root changeEmmanuele Bassi2008-01-294-8/+2
| | | | | Do not free the root node returned by the get_root() method in the JSON-GObject API and in the JsonParser tests.
* Revert JsonParser::get_root semanticsEmmanuele Bassi2008-01-292-25/+2
| | | | | | | | | The get_root() method should not return a copy of the parsed node: it is up to the developer copying it, if it needs to be kept around across multiple parsing runs. This commit reverts the 0b6b09c0 commit, by removing the peek_root() method and restoring the previous get_root() method behaviour.
* Use the normalized member name in has_memberEmmanuele Bassi2008-01-281-1/+1
| | | | | The json_object_has_member() used the passed in member name, instead of the correctly normalized one.
* Extract the parser state clearing into its own functionEmmanuele Bassi2008-01-271-21/+30
| | | | | | | | The JsonParser object clears its state upon starting the parsing sequence or during the instance destruction process. It's worth moving the free and unref calls into their own function to be called by the load_from_data() and dispose methods. As further optimisation, inlining them should be worth as well.
* Wrap config.h include with conditionalsEmmanuele Bassi2007-12-255-0/+11
| | | | | Including the autotools generated config.h should always be conditional on the HAVE_CONFIG_H definitions.
* Kill off a few indirectionsEmmanuele Bassi2007-12-251-11/+14
| | | | Use an intermediary pointer to avoid a lot of pointer dereferences
* Some miscellaneous fixes to the Vala bindingsEmmanuele Bassi2007-12-253-27/+85
| | | | | | | | Expose the properties as members and remove the accessor methods in case it's obvious that they are just function proxies. Also, start binding the basic GObject API, even though no serializable support is ready, yet.
* Provide a default implementation of JsonSerializableEmmanuele Bassi2007-12-251-88/+120
| | | | | | | | The JsonSerializable interface can provide a default implementation, using the powers of GTypeInterface. This means that classes implementing the interface can opt to implement both, either or none of the JsonSerializable methods, and still be able to retain some basic functionality for the methods they decide not to implement.
* Plug a leak when loading a new buffer with the same parserEmmanuele Bassi2007-12-251-0/+2
| | | | | | When the same JsonParser loads a different buffer it needs to clear out the current state; this means clearing the variable_name string it saves when the passed JSON stream is a JavaScript assignment.
* Use gssize for the buffer length parameterEmmanuele Bassi2007-12-252-6/+6
| | | | | | | Since we allow a negative value, meaning "take the whole string", for the length parameter, when need a signed size_t. This also fixes the bug where we implicitly always computed the buffer length and discarded the passed length parameter.
* Initialise to zero when creating/copying a JsonNodeEmmanuele Bassi2007-12-251-4/+5
| | | | Avoid feeding garbage to the callers by using g_slice_new0().
* Do not leak the intermediate strings when generating JSONEmmanuele Bassi2007-12-251-0/+6
| | | | Found this very dumb leak while using Valgrind.
* Do not free the pointer to the boxed type we get when serialisingEmmanuele Bassi2007-12-251-2/+0
| | | | | | The pointer returned by g_value_get_boxed() is just a pointer to the internal copy inside GValue, and it's not ours to free, as Valgrind gently pointed out.
* Add a simple Vala serialization exampleEmmanuele Bassi2007-11-221-0/+40
| | | | | | We don't provide the Serializable interface at the moment, because it is too much C-oriented. This example shows how to serialize a class in Vala to a JSON string.
* Omit the lenght argument now that we provide a defaultEmmanuele Bassi2007-11-221-1/+1
|
* Fix the Vala bindingsEmmanuele Bassi2007-11-221-9/+11
| | | | | | | | | Miscellaneous fixes for the Vala bindings of JSON-GLib: * add missing return values for a couple of methods * decorate the Object and Array constructors with their C names * correctly transfer the ownership when adding members/elements * add the non-null value marker for strings * provide default values for the length argument in from_data()/to_data()
* Recurse into the contrib directory only if Vala is availableEmmanuele Bassi2007-11-222-1/+10
| | | | | | If Vala is not available then there's no point in getting into the contrib directory. This might change in the future, so we already have the HAVE_VALA conditional for the Makefiles.
* Update the test case for the Vala bindingsEmmanuele Bassi2007-11-211-2/+2
|
* Wrap the newly added API in the Vala bindingsEmmanuele Bassi2007-11-211-2/+6
| | | | | Add the Json.Object.dup_member() and Json.Array.dup_element() functions. Also, export the JSON_NODE_TYPE() macro as Json.Node.type() method.
* Add symbols of the newly committed APIEmmanuele Bassi2007-11-211-0/+3
|
* Add API to retrieve copies of the nodes inside objects and arraysEmmanuele Bassi2007-11-213-0/+62
| | | | | | Getting copies of the nodes might work better for high level languages binding the JSON-GLib API, because they can manage the lifetime of the returned values using their own rules.
* Fix leaks in the test suiteEmmanuele Bassi2007-11-215-1/+19
| | | | | Dispose the root node when using the JsonParser and JsonGenerator objects after the change in sematics for their accessors.
* Free the root node obtained using json_parser_get_root()Emmanuele Bassi2007-11-211-0/+2
| | | | | Update json_construct_gobject() to the change of behaviour in the root node getter function of JsonParser.
* Change json_parser_get_root() semanticsEmmanuele Bassi2007-11-212-2/+26
| | | | | | | | | | | | | The json_parser_get_root() returns a pointer to the root node. This does not conform to the API naming convention inherited from GLib, where functions returning an internal pointer are called "peek" and function returning a copy are called "get". Thus, json_parser_get_root() will now return a copy of the root node and it is left to the developer to free the returned JsonNode. A function returning the pointer has also been added, and it's called json_parser_peek_root().
* Add JSON-GLib Vala bindingsEmmanuele Bassi2007-11-215-1/+222
| | | | Add bindings for the basic JSON-GLib API. GObject API will arrive later.
* Use a unicode character for the indent-char property of JsonGeneratorEmmanuele Bassi2007-11-212-9/+13
| | | | | The indent character should be any Unicode character available instead of a generic char.
* Add the indent-char property to JsonGeneratorEmmanuele Bassi2007-11-211-14/+40
| | | | | The JsonGenerator:indent-char can be used to control the character that indents the lines when pretty printing.
* Use G_TYPE_DOUBLE when dumping a value.Emmanuele Bassi2007-11-211-2/+2
| | | | | JsonNode of type value for floating point numbers is G_TYPE_DOUBLE and not G_TYPE_FLOAT anymore.
* Test correct deserialization of enum valuesparse-enumsEmmanuele Bassi2007-11-201-7/+53
| | | | | Update the GObject deserialization test suite to check for the correct deserialization of the enum/flags values.
* Allow deserialization of strings into enums/flagsEmmanuele Bassi2007-11-201-0/+170
| | | | | | | | If the target value is a G_TYPE_ENUM or a G_TYPE_FLAGS we can effectively deserialize a string into the corresponding value (or bit mask) using the introspection API for the GEnum and GFlags types. This code is taken from ClutterScript and it was adapted from GtkBuilder.
* Bump up to 0.5.0Emmanuele Bassi2007-11-131-1/+1
|
* Bump up to 0.4.0json-glib-0.4.0stable-0.4Emmanuele Bassi2007-11-132-1/+10
|
* Fix variable shadowing for distcheckEmmanuele Bassi2007-11-131-2/+2
|
* Add 0.4 symbols indexEmmanuele Bassi2007-11-131-0/+4
|
* Change "responsible" to "asked" in the (de)serialization functions docsEmmanuele Bassi2007-11-131-7/+8
| | | | | We provide fallbacks in case a JsonSerializable object does not translate a property into a JSON object member and vice versa.
* Add new symbols to the documentationEmmanuele Bassi2007-11-131-1/+6
|
* Merge branch 'gobject-deserialize' into workEmmanuele Bassi2007-11-1310-40/+650
|\
| * Use the fallback value-to-node generator even for serializablesgobject-deserializeEmmanuele Bassi2007-11-132-18/+12
| | | | | | | | | | | | | | To avoid reimplementing the same code all over again, if the implementation of the serialize_property virtual function of JsonSerializable returns NULL we will fall back to the simple value-to-node generator we provide for non-serializable classes.
| * Add test unit for the GObject deserializationEmmanuele Bassi2007-11-133-1/+296
| |
| * Fix a couple of dumb typos in the GObject deserialization codeEmmanuele Bassi2007-11-131-2/+4
| | | | | | | | | | | | We need to skip if the CONSTRUCT_ONLY flag is set, not unset. We also need to copy the value from the JSON node into the target GValue, not the other way around.
| * Update git ignore fileEmmanuele Bassi2007-11-131-0/+2
| |
| * Add node-to-property simple fallback parser for deserializationEmmanuele Bassi2007-11-131-9/+85
| | | | | | | | | | | | | | | | | | The fallback parser for json_construct_gobject() is invoked if the GType does not implement the JsonSerializable interface, or if the interface was not handling the property. It will natively convert integers, booleans, strings and double precision floating point values; it also handles string vectors in form of arrays.
| * Add the JsonGenerator:root propertyEmmanuele Bassi2007-11-131-2/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | JsonGenerator now has a :root property, so it can be constructed using just g_object_new(): generator = g_object_new (JSON_TYPE_GENERATOR, "pretty", TRUE, "indent", 4, "root", node, NULL); This means that the root node is copied inside the generator, instead of just taking ownership (it was quite confusing). The documentation now clearly states what happens, and that you can safely free the node after feeding it to the JsonGenerator.
| * Fix member name in json_node_get_value_type()Emmanuele Bassi2007-11-131-1/+1
| | | | | | | | JsonNode payload is inside a union.
| * Add a GType for JsonNodeEmmanuele Bassi2007-11-132-2/+54
| | | | | | | | | | | | We need a GType for nodes if we want to add JsonNode properties or signal marshallers to a GObject class. We could use pointers, but we'd loose type safety, so it's a no-no.
| * Initial implementation of GObject deserialization functionEmmanuele Bassi2007-11-103-14/+177
| | | | | | | | | | | | | | | | | | | | The json_construct_gobject() function takes a GType and a JSON data stream and constructs a new instance for the given type. If the type is a JsonSerializable, it will use the JsonSerializable interface for parsing the JsonNodes of each object member. This is the initial implementation of the function: the JsonNode-to-GValue fallback parser is just a stub.
* | When parsing a full assignment, also swallow any trailing semi-colonEmmanuele Bassi2007-11-102-1/+12
| | | | | | | | | | | | There's no end to web developers insanity when they can twist and turn a perfectly simple and elegant notation into something that allows lazyness and breakage.