| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Avoid compiler warnings when running with `-Wunused-parameter`.
|
| |
|
|\
| |
| |
| |
| | |
Use gi-docgen to build the API reference
See merge request GNOME/json-glib!41
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Drop `SECTION` blurbs.
Use gi-docgen syntax for internal links.
Use summary lines for gi-docgen indices.
Use Markdown syntax for code fragments.
|
|/ |
|
|
|
|
|
| |
Both g_object_newv() and GParameter have been deprecated for a long
time.
|
|\ |
|
| |
| |
| |
| |
| |
| |
| | |
Use JsonObject's private members_ordered
GQueue instead. This avoids a g_list_copy().
https://bugzilla.gnome.org/show_bug.cgi?id=773504
|
|/
|
|
|
| |
We're going to replace it once we bump the dependency on GObject, to
avoid a nasty ifdef hell.
|
|
|
|
|
|
| |
See https://developer.gnome.org/hig/stable/typography.html
https://bugzilla.gnome.org/show_bug.cgi?id=772753
|
|
|
|
| |
They need to be exactly one line above a string to show up in .po files.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add reference counting semantics to JsonNode, in addition to the
existing init/unset and alloc/free semantics.
json_node_free() must only be used with nodes allocated using
json_node_alloc(). json_node_unref() may be used with all nodes (if
correctly paired; it may be paired with json_node_alloc()).
It is not valid to call json_node_free() on a node whose reference count
is not 1.
https://bugzilla.gnome.org/show_bug.cgi?id=756121
|
|
|
|
|
|
|
|
| |
Long and unsigned long was properly serialized but not deserialized, guint64
handling is not ideal as the type is cast into a gint64, however this is
better than not handling the fundamental type at all.
https://bugzilla.gnome.org/show_bug.cgi?id=725972
|
|
|
|
| |
All the platforms and build system we support have a config.h header.
|
|
|
|
|
| |
Drop the DocBook documentation, and move everything to the MarkDown
format used by modern gtk-doc.
|
|
|
|
|
| |
We depend on a new version of GLib, so we can remove a bunch of old
version checks.
|
| |
|
|
|
|
| |
Instead of directly accessing the vfunc from the interface vtable.
|
|
|
|
| |
The non-explicitly signed variant is deprecated.
|
|
|
|
|
|
|
|
|
|
|
|
| |
While we have to give up deserializing CONSTRUCT_ONLY properties with
JsonSerializable, CONSTRUCT properties should just be deserialized like
any other property.
Sadly, there's still a refuse in the json_gobject_new() code that skips
CONSTRUCT properties along with CONSTRUCT_ONLY ones — a remnant of a
period when we deserialized them both without JsonSerializable.
https://bugzilla.gnome.org/show_bug.cgi?id=655526
|
|
|
|
|
|
|
| |
It happens that while serializing that float/double properties are
set to round numbers, this results in deserialization as gint64
values and a parse failure. This patch addresses it by accepting
round gint64 numbers as valid values for float/double properties.
|
|
|
|
|
|
| |
The same warning that is fired when failing to deserialize
properties normally needed to be added for the case that
we fail to deserialize construct-only properties.
|
|
|
|
|
|
|
|
| |
consulting the JsonSerializable.
This patch gives the JsonSerializable class a chance to decide
whether it's appropriate to serialize a property before
JsonGObject checks for a default value and skips the property.
|
|
|
|
|
|
|
|
| |
This patch fixes json_deserialize_pspec() to return FALSE when
failing to deserialize some properties. Consequently the patch
ensures we get the intended warnings when failing to deserialize
pspecs for some fundamental types:
Failed to deserialize property "foo" of type "int" on object "bar"
|
|
|
|
| |
These errors might find their way into a UI.
|
|
|
|
| |
We need to translate the GError messages.
|
|
|
|
|
| |
If a property is set to its default value then we can skip its
serialization, to keep the number of JSON object members down.
|
|
|
|
|
| |
This allows a Serializable implementation to override the property list,
and the setter and the getter function.
|
|
|
|
| |
This fixes deserialization to match serialization (bug 648539)
|
|
|
|
| |
deserialized.
|
|
|
|
|
|
|
|
| |
Commit 2d7550948dfb2e5907b851bc2c4bd296a7526086 broke the construct-only
properties; we now only check for the G_PARAM_CONSTRUCT_ONLY flag, and
pass construct-only properties to g_object_newv(); all the properties
flagged as G_PARAM_CONSTRUCT gets passed with the rest of the properties
after that.
|
| |
|
| |
|
|
|
|
|
|
|
| |
Right now, we're checking twice for G_PARAM_CONSTRUCT_ONLY, but what we
really want is to check for both G_PARAM_CONSTRUCT and
G_PARAM_CONSTRUCT_ONLY properties when creating a new instance from a
JSON definition.
|
|
|
|
|
|
|
|
|
|
|
| |
Here's a small patch for json-glib, to fix some gcc warnings breaking
the build with -Werror (gcc can't know if the variable will get
initialized or not). I didn't find a product for json-glib in bugzilla,
but I guess a mail will work ;-)
Happy holidays :-)
Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A GBoxed type defined as:
struct Boxed {
int foo;
gboolean bar;
int baz;
};
Can be represented either by a JSON object:
{
"foo" : 1,
"bar" : true,
"baz" : 3
}
Or by a JSON array:
[ 1, true, 3 ]
The current function for registering a serialization and a
deserialization pair does not allow registering more than one
deserialization function - which means that there can only be
one way to deserialize a GBoxed type into a specific JsonNode
type.
To allow having more than one JsonNodeType associated to a
GBoxed type and a deserialization function we need to split out
the registration of the serialization and deserialization functions
into two distinct functions.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If a GObject class implements JsonSerializable and has overridden
the serialize_property() vfunc then the Serializable should be fully in
charge of serializing a property - that is: JSON-GLib should not try to
add a fallback in case the serialize_property() implementation returned
NULL.
This is a change in semantics for JsonSerializable implementations.
http://bugzilla.openedhand.com/show_bug.cgi?id=1859
Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Be more GLib-like, and use
<namespace>_<type>_from_data()
<namespace>_<type>_to_data()
Instead of the homebrew "construct" and "serialize", when dealing
with string buffers.
This means:
• adding json_gobject_from_data() to deprecate
json_construct_gobject()
• adding json_gobject_to_data() to deprecate
json_serialize_gobject()
The json_construct_gobject() function also contains a mistake: it
uses gsize with the special value of -1 meaning "slurp the whole
string", but gsize is an unsigned type. The newly added
json_gobject_from_data() correctly uses gssize instead.
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
The json-gobject.c is getting pretty crowded; we should split out
the JsonBoxed API and the JsonSerialized implementation into their
separate source files.
|
|
|
|
|
| |
The functions mapping a GObject to and from a JsonObject should
be public, as they can be used by parsers.
|
|
|
|
|
|
|
|
|
|
|
| |
Since we ignore all members that don't have a corresponding
GParamSpec for the class we cannot use:
members = g_list_prepend (members, pspec->name);
Because pspec might also be NULL. We can reuse the GList iterator
data field, since that points to data internal to the JsonObject
we are iterating over.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Serializing and deserializing GBoxed types is fairly complicated
currently. If a GObject implements JsonSerializable it is possible
for the class to intercept the JsonNode, parse it manually and
then set the value to the property.
This leaves a hole opened for:
• manual (de)serialization of GBoxed types
• (de)serialization of GBoxed properties in classes not
implementing JsonSerializable
In order to serialize and deserialize a GBoxed JSON-GLib should
provide a mechanism similar to the GValue transformation functions:
when registering the boxed type the developer should also be able
to register a serialization and a deserialization functions pair
matching the tuple:
(GBoxed type, JSON type)
The serialization function would be:
JsonNode *(* JsonBoxedSerializeFunc) (gconstpointer boxed);
And, conversely, the deserialization function would be:
gpointer (* JsonBoxedDeserializeFunc) (JsonNode *node);
Obviously, the whole machinery works only for GBoxed types that
register the serialization and deserialization functions.
|
|
|
|
|
| |
The stray semicolon was preventing the GPtrArray from being
updated.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
The GObject deserialization code currently skips all the constructor
and constructor-only properties. In order to implement them we can
add a preliminary pass on the JSON object members and build a
GParameter array.
As we don't have a GObject instance we cannot really use the
Serializable interface to provide custom parsing for complex data
structures, thus we fall back to the default deserialization code
path.
|
|
|
|
|
| |
Like we deserialize them, we can serialize GObject properties
defined using GParamSpecObject.
|
|
|
|
|
|
| |
Like for the deserialization of a GObject into a JsonObject we
should split out the serialization of a GObject into a JsonObject
part of json_serialize_gobject() into its own private function.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use the newly added json_gobject_new() internal function to
recurse into properties defined using GParamSpecObject.
The same rules used by json_construct_gobject() apply to the
properties storing a GObject - including JsonSerializable
support.
The test case for serialization and deserialization of a
GObject has been updated to include a property holding a
GObject.
|