summaryrefslogtreecommitdiff
path: root/json-glib
Commit message (Collapse)AuthorAgeFilesLines
...
* serializable: Fix default deserialization method.Jeremy Philippe2020-01-131-0/+9
| | | | | | | | | json_serializable_default_deserialize_property() fails when called with an uninitialized value. This violates the API since value is marked as an out parameter. Fixes https://gitlab.gnome.org/GNOME/json-glib/issues/39
* Merge branch 'dab_add_conditional_tests' into 'master'Emmanuele Bassi2020-01-131-1/+3
|\ | | | | | | | | meson: add tests option See merge request GNOME/json-glib!19
| * meson: add tests optionStéphane Cerveau2020-01-091-1/+3
| | | | | | | | Give an option to meson to disable `tests` build
* | typo: parser -> parsedAlexandre Viau2020-01-101-1/+1
|/
* serializable: Add (nullable) annotationNiels De Graef2020-01-071-2/+2
| | | | | `json_serializable_serialize_property()` can return NULL, so make that clear in the documentation (and to GIR).
* Annotate json_builder_new_immutable()Emmanuele Bassi2019-02-281-1/+1
| | | | | We shouldn't rely on g-ir-scanner doing pattern matching on the name of the function to determine if it's a constructor or not.
* Change introspection option to feature typeXavier Claessens2019-01-071-2/+2
|
* Meson: Add glib fallbackXavier Claessens2019-01-071-2/+2
|
* docs: Clarify some expections of the json_object_get_*_member APIsDebarshi Ray2018-03-141-14/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | It is an error to use the following with a missing member: • json_object_get_int_member • json_object_get_double_member • json_object_get_boolean_member • json_object_get_null_member • json_object_get_string_member • json_object_get_array_member • json_object_get_object_member Doing so will lead to CRITICALs like these: Json-CRITICAL **: json_object_get_string_member: assertion 'node != NULL' failed Instead one of these should be used to determine the existence of the member: • json_object_get_member • json_object_has_member Or, when available, one can use the corresponding json_object_get_<type>_member_with_default. https://gitlab.gnome.org/GNOME/json-glib/issues/24
* Refresh the build systemEmmanuele Bassi2018-03-132-69/+90
| | | | | | | | | | We should use more idiomatic Meson: - improve the coding style - ensure that the `json_glib_dep` dependency object also includes the introspection data, if enabled - add a separate option for the man page generation - ensure that json-glib can be used as a subproject
* Add `--output` option to json-glib-formatEmmanuele Bassi2018-03-131-10/+39
| | | | | | We should allow redirecting the output of the format utility to a file, instead of dumping everything on the standard output. This makes it easier to use json-glib-format inside a build system or a CI pipeline.
* Merge branch 'get-with-default' into 'master'Emmanuele Bassi2017-12-154-85/+198
|\ | | | | | | | | | | | | Add JsonObject getters with fallback value Closes #4 See merge request GNOME/json-glib!4
| * Add with_default() variant for JsonObject gettersEmmanuele Bassi2017-11-143-85/+178
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When using the typed getters for JsonObject, the existing API will automatically fail if the member requested is not present. This is generally good practice, because JSON data typically does not have a schema, and thus is has to be validated "on the go"; a JSON object member that contains `null`, or `0`, or `false`, is indistinguishable from a JSON object member that does not exist, so we cannot simply return a scalar value and be done with it. We can provide an escape hatch, though, for the crowd writing parsers for JSON data; by using Python as the model, we can add methods that take a default value as a parameter, and return it as a fallback value if the requested object member does not exist, or if it's set to `null`.
| * Open the development cycle towards 1.6Emmanuele Bassi2017-11-141-0/+20
| |
* | Merge branch 'leak-fix' into 'master'Emmanuele Bassi2017-12-154-1/+7
|\ \ | | | | | | | | | | | | Leak fix See merge request GNOME/json-glib!6
| * | tests: Fix some memory leaks in the testsPhilip Withnall2017-12-153-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | We can’t do this by porting to g_autoptr(), because json-glib needs to be buildable using MSVC. Sad panda. Signed-off-by: Philip Withnall <withnall@endlessm.com> https://gitlab.gnome.org/GNOME/json-glib/issues/30
| * | json-parser: Fix a memory leak on two error handling pathsPhilip Withnall2017-12-151-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | Small leak. With some additional fixes to the tests themselves, this makes all the tests run valgrind-clean. (See the following commit.) Signed-off-by: Philip Withnall <withnall@endlessm.com> https://gitlab.gnome.org/GNOME/json-glib/issues/30
* | | Merge branch 'parsing-empty-string' into 'master'Emmanuele Bassi2017-12-152-10/+31
|\ \ \ | |/ / |/| | | | | | | | json-parser: Fix getting immutable root nodes from empty input See merge request GNOME/json-glib!8
| * | json-parser: Fix getting immutable root nodes from empty inputPhilip Withnall2017-12-152-10/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If parsing an empty document, it’s allowed to return NULL from json_parser_get_root(). This was broken for immutable parsers when immutability support was added (an assertion fails). Fix that, and also document that json_parser_get_root() may return NULL. Do the same for json_parser_steal_root() too, which is another way that the root node may be NULL. Add a unit test. Signed-off-by: Philip Withnall <withnall@endlessm.com>
* | | json-node: Clarify documentation regarding programmer errorsPhilip Withnall2017-12-151-19/+33
|/ / | | | | | | | | | | | | | | | | | | | | | | Despite my efforts in commit 011c1e424b7 (parts of which were completely incorrect), the JsonNode documentation still wasn’t particularly helpful about differentiating between methods which return NULL if the JsonNode is not of the right type, and methods which emit a critical warning. Try and improve that across the board, hopefully without saying blatantly incorrect things this time. Signed-off-by: Philip Withnall <withnall@endlessm.com>
* | node: Use json_node_unref for the JsonNode autoptr cleanupRobert Ancell2017-12-061-1/+1
| | | | | | | | | | | | json_node_unref was added after the autoptr macros were written. This fixes an assertion failure if using autoptr and json_node_ref.
* | Update json-enum-types.h.inRavish Bhatia2017-11-141-1/+1
|/
* Use fuzzy comparison for floating point valuesEmmanuele Bassi2017-11-044-32/+14
| | | | | | Direct comparison should never be used for floating point values. Fixes #27 and #28.
* Add float comparison utility macros for testsEmmanuele Bassi2017-11-041-0/+21
| | | | | We do compare floating point values elsewhere in our code, so we should ensure that we're doing that with a certain amount of fuzziness.
* build: Clean up configuration optionsEmmanuele Bassi2017-09-121-1/+1
| | | | | Drop the Autotool-isms, and use something more in line with what Meson expects for configuration options.
* build: Rework the introspection optionEmmanuele Bassi2017-09-051-0/+2
| | | | | | | | | | | Instead of using `disable_introspection=false`, flip the condition around, and use `enable-introspection=true`. This avoids the double negative. Additionally, we should drop the cross-compilation check; it's entirely possible to cross-compile introspection data for different platforms and architectures; this allows the Yocto project to drop a patch for JSON-GLib.
* Merge branch 'master-old'Emmanuele Bassi2017-07-108-81/+91
|\
| * generator: Add an GString-based methodGarrett Regier2017-06-162-11/+34
| | | | | | | | | | | | This allows callers to avoid extra allocations when dumping to a preexisting string. https://bugzilla.gnome.org/show_bug.cgi?id=773504
| * core: Avoid json_object_get_members()Garrett Regier2017-06-167-52/+47
| | | | | | | | | | | | | | Use JsonObject's private members_ordered GQueue instead. This avoids a g_list_copy(). https://bugzilla.gnome.org/show_bug.cgi?id=773504
| * object: Use a GQueue for members_orderedGarrett Regier2017-06-162-19/+11
| | | | | | | | | | | | | | | | This makes the list always ordered and removes the g_list_reverse() in json_object_get_members(). https://bugzilla.gnome.org/show_bug.cgi?id=773504
* | gobject: Ignore deprecation warning for g_object_newv()Emmanuele Bassi2017-07-101-0/+2
| | | | | | | | | | We're going to replace it once we bump the dependency on GObject, to avoid a nasty ifdef hell.
* | build: Test all common compiler and linker flagsEmmanuele Bassi2017-07-101-12/+1
| | | | | | | | | | | | | | | | Instead of assuming some compiler and linker flags will work depending on the platform, we should test them all. Additionally, we should move all the compiler and linker flag checks in the same place.
* | build: Silence the introspection scannerEmmanuele Bassi2017-07-101-0/+1
| | | | | | | | We are only interested in warnings and errors.
* | build: Coding style clean upsEmmanuele Bassi2017-07-101-9/+9
| |
* | build: Clean up the hard-coded API version numbersEmmanuele Bassi2017-07-102-8/+8
|/ | | | | | In order to be resilient towards future API bumps, we should have very few places that deal with the API version encoded inside paths and file names.
* build: Move ancillary build scripts to a separate directoryEmmanuele Bassi2017-06-032-22/+0
| | | | | Avoid cluttering the source directories, and makes finding things easier.
* build: Clean up installed tests rulesEmmanuele Bassi2017-06-031-8/+10
| | | | Use variables for common values, instead of duplicating them.
* build: Don't copy test data in the build directoryEmmanuele Bassi2017-04-011-9/+6
| | | | | | GTest can use environment variables to find the test data in the source and build directory, so we don't need to copy files around using Python scripts.
* build: Use the Meson 'python3' moduleEmmanuele Bassi2017-04-011-1/+1
| | | | | | | This allows finding Python3 on Windows, in order to build and run the tests. https://bugzilla.gnome.org/show_bug.cgi?id=780550
* build: Fix the installed test wrapper fileEmmanuele Bassi2017-03-291-1/+1
| | | | | We need to point to the binary, but we're using the wrong name for the Exec key.
* docs: Clarify when NULL might be returnedMatthew Leeds2017-03-181-13/+14
| | | | | | | | | If a JsonObject has no members, json_object_get_members() and json_object_get_values() will return NULL, so this commit makes that behavior clear in the docs. It also adds the (nullable) annotation in a few places in the same file. https://bugzilla.gnome.org/show_bug.cgi?id=769206
* utils/json_from_string: Don't reset user-provided error argumentHeinrich Fink2017-03-181-1/+0
| | | | | | | | In json_from_string, just pass the user-provided GError** to json_parser_load_from_data. Otherwise json_from_string will never propagate any parser errors back to the caller. https://bugzilla.gnome.org/show_bug.cgi?id=766281
* introspection: fix nullable annotation for return values in the following ↵Alberto Ruiz2017-03-185-23/+34
| | | | | | | | | | | | | | | | | | | | | | | | methods json_builder_add_boolean_value json_builder_add_double_value json_builder_add_int_value json_builder_add_null_value json_builder_add_string_value json_builder_add_value json_builder_begin_array json_builder_begin_object json_builder_end_array json_builder_end_object json_builder_get_root json_builder_set_member_name json_generator_get_root json_reader_get_error json_reader_get_member_name json_reader_get_value json_serializable_find_property json_serializable_find_property json_boxed_serialize
* tests: Add unit for JsonReader NULL value checksEmmanuele Bassi2017-03-181-0/+28
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=758580
* reader: Make json_reader_get_value return a value for the null type. This ↵Robert Ancell2017-03-181-1/+1
| | | | | | matches the json_reader_is_value check. https://bugzilla.gnome.org/show_bug.cgi?id=758580
* docs: Fix array subsets descriptionAllin Cottrell2017-03-181-2/+2
| | | | | | | | | | | | | | | The doc for json-glib misstates the meaning of the JsonPath set notation operator, as in $.store.book[0,2] This does not mean elements 0 to 2 (a range) but rather just elements 0 and 2. This is correctly handled in the library; it's just the doc that is wrong. https://bugzilla.gnome.org/show_bug.cgi?id=768788
* docs: Use appropriate markdown for literalsEmmanuele Bassi2017-03-181-8/+8
|
* generator: Avoid multiple buffer allocationsGarrett Regier2017-03-181-187/+67
| | | | | | | Instead share a single GString in all dump functions. https://bugzilla.gnome.org/show_bug.cgi?id=773504
* parser: Use g_steal_pointer()Emmanuele Bassi2017-03-181-8/+2
| | | | | GLib already has a convenient API for stealing pointer values and replacing them with NULL, so let's use it.
* core: Add json_parser_steal_root()Ole André Vadla Ravnås2017-03-182-0/+28
| | | | | | This avoids copying the root node for the parse-to-node use-case. https://bugzilla.gnome.org/show_bug.cgi?id=774688