-build_log
-*.log
-*.pyc
-usr
-opt
-*.o
-*.os
-*.exe
-packages
-binaries
-*.ipk
-*~
-*.lo
+ABOUT-NLS
+INSTALL
Makefile
-*.la
-build-stamp
+Makefile.in
+aclocal.m4
+autom4te.cache
+/build/autotools/*.m4
+!/build/autotools/as-compiler-flag.m4
+!/build/autotools/introspection.m4
+!/build/autotools/Makefile.am.*
+/build/test-driver
+compile
+configure
+config.guess
config.h
+config.h.in
+config.h.in~
+config.log
+config.rpath
config.status
-debian/files
-debian/libjson-glib-dev.install
-debian/libjson-glib-dev.substvars
-debian/libjson-glib-dev/
-debian/libjson-glib.install
-debian/libjson-glib.postinst.debhelper
-debian/libjson-glib.postrm.debhelper
-debian/libjson-glib.substvars
-debian/libjson-glib/
-doc/reference/version.xml
+config.sub
+depcomp
+/doc/reference/version.xml
+/doc/reference/json-glib-format.1
+/doc/reference/json-glib-validate.1
+gtk-doc.make
+install-sh
json-glib-1.0.pc
json-glib.pc
-json-glib/.deps/
-json-glib/.libs/
-json-glib/json-enum-types.c
-json-glib/json-enum-types.h
-json-glib/json-marshal.c
-json-glib/json-marshal.h
-json-glib/json-version.h
-json-glib/stamp-enum-types
-json-glib/stamp-marshal
-json-glib/tests/.deps/
-json-glib/tests/.libs/
-json-glib/tests/array-test
-json-glib/tests/node-test
-json-glib/tests/object-test
+/json-lcov.info
+/json-lcov
+.deps
+.libs
+*.o
+*.lo
+*.test
+/json-glib/json-enum-types.[ch]
+/json-glib/json-glib-format
+/json-glib/json-glib-validate
+/json-glib/json-marshal.[ch]
+/json-glib/json-version.h
+/json-glib/Json-1.0.gir
+/json-glib/Json-1.0.typelib
+/json-glib/*.la
+/json-glib/gcov-report.txt
+/json-glib/stamp-enum-types
+/json-glib/stamp-marshal
+/json-glib/test-suite.log
+/json-glib/abicheck.sh.*
libtool
+ltmain.sh
+missing
stamp-h1
-tests/.deps/
-tests/.libs/
-tests/test-generator
-tests/test-parser
-tests/test-serialize-boxed
-tests/test-serialize-complex
-tests/test-serialize-full
-tests/test-serialize-simple
+test-report.xml
+test-report.html
+.*.swp
+*.stamp
+/doc/reference/html
+/doc/reference/tmpl
+/doc/reference/xml
+/doc/reference/json-glib-decl-list.txt
+/doc/reference/json-glib-decl-list.txt.bak
+/doc/reference/json-glib-decl.txt
+/doc/reference/json-glib-decl.txt.bak
+/doc/reference/json-glib-overrides.txt
+/doc/reference/json-glib-undeclared.txt
+/doc/reference/json-glib-undocumented.txt
+/doc/reference/json-glib-unused.txt
+/doc/reference/json-glib.args
+/doc/reference/json-glib.hierarchy
+/doc/reference/json-glib.interfaces
+/doc/reference/json-glib.prerequisites
+/doc/reference/json-glib.signals
+omf.make
+xmldocs.make
+*.gcov
+++ /dev/null
-Emmanuele Bassi <ebassi@openedhand.com>
+++ /dev/null
-commit 8935b7db1f25818eff3bb16cbe2b8b2981d4e195
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Fri Mar 19 17:04:54 2010 +0000
-
- Release 0.10.4
-
- NEWS | 7 +++++++
- configure.ac | 2 +-
- 2 files changed, 8 insertions(+), 1 deletions(-)
-
-commit a3ac934acabe0bf5e03dc5c22c51f0bd8fa056c2
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Fri Mar 19 16:59:57 2010 +0000
-
- parser: Refactor the JsonParser logic
-
- The array and object parsing logic in JsonParser has clearly exploded
- beyond control: a simple tightening of the JSON validation almost broke
- the parser in two. It it is time to...
-
- <cue Christopher Lee voice-over>
-
- REFACTOR THE CODE!
-
- </cue Christopher Lee voice-over>
-
- This time, we should be following the JSON state machine and try to do
- more prediction of the next state based on peeking the next token.
-
- The code is fairly cleaner, now; and, most of all, still passes the
- validation test suite - which is, you know... nice.
-
- (cherry picked from commit 08cec3b7c9202007a5abbf548f8d2f1b54d4d0b4)
-
- Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
-
- json-glib/json-parser.c | 467 ++++++++++++++++++-----------------------------
- 1 files changed, 179 insertions(+), 288 deletions(-)
-
-commit e2e4c60f9f1b5302f23f08fea9e3882ea5135406
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Thu Mar 18 22:41:14 2010 +0000
-
- JSON-GLib bug tracking system has been moved
-
- We are now using bugzilla.gnome.org, since we're already hosted on
- git.gnome.org.
- (cherry picked from commit 9d7c58b4fb5edeb8e9413acc9d509447e13962e5)
-
- Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
-
- README | 2 +-
- configure.ac | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-commit 6b2d50001f2db526c5108a764693a632573c51a0
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Thu Mar 18 17:05:57 2010 +0000
-
- generator: Use %g format for g_ascii_formatd()
-
- I should read the documentation for the functions I use:
-
- Converts a gdouble to a string, using the '.' as decimal point. To
- format the number you pass in a printf()-style format string. Allowed
- conversion specifiers are 'e', 'E', 'f', 'F', 'g' and 'G'.
- -- from g_ascii_formatd() in GLib's API reference
-
- Epic reading fail.
- (cherry picked from commit f622ee8d8ba54ddea6fbb7311a905ffab7842e8d)
-
- Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
-
- json-glib/json-generator.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit 7ced197c050f56c2555b9190d648f22e337209b8
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Fri Mar 5 19:23:49 2010 +0000
-
- tests: Add another trailing comma invalid test
- (cherry picked from commit 88ac0d5111eb528e4c396e4c169ceee4fb046e62)
-
- Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
-
- tests/test-parser.c | 3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-commit 3c239e0d75a7246a2a3f75358ad662cefdb0960d
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Mon Mar 1 17:42:41 2010 +0000
-
- tests: Add negative tests
-
- Verify that invalid JSON will trigger a parser error.
- (cherry picked from commit c22c1151e418af9506547804d4bc9fddb60bc0f1)
-
- Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
-
- tests/test-parser.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 53 insertions(+), 0 deletions(-)
-
-commit 29881f03468db08bfb404cfcd5b61b4cdc419a87
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Mon Mar 1 17:41:14 2010 +0000
-
- parser: Improve strictness
-
- Apparently, some breakage crept in JsonParser which allowed invalid JSON
- to actually pass. For instance: trailing and missing commas, invalid
- barewords and wrong array and object closing braces.
- (cherry picked from commit 26668fe238a52a7fd8374f409fc277aaa8efa826)
-
- Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
-
- json-glib/json-parser.c | 117 +++++++++++++++++++++++++++++++----------------
- 1 files changed, 78 insertions(+), 39 deletions(-)
-
-commit 84b68de38bab2d4537a6eb77c8df2a1288cef8ca
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Fri Feb 26 14:07:47 2010 +0000
-
- Post-release version bump to 0.10.3
-
- configure.ac | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-commit 755592e2c9e7e9cafbdf2b349a0df41dfeae83aa
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Fri Feb 26 14:04:12 2010 +0000
-
- Release 0.10.2 (stable snapshot)
-
- configure.ac | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-commit 382159118096b899b10411c8b37dbc743702e205
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Fri Feb 26 14:03:59 2010 +0000
-
- Update NEWS file
-
- NEWS | 5 +++++
- 1 files changed, 5 insertions(+), 0 deletions(-)
-
-commit a5d9c7bd125571c877f1f7b76f92412b37fc4ce4
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Sun Jan 24 18:58:28 2010 +0000
-
- docs: Fix the GBoxed registration example
-
- The registration function for serialization and deserialization has been
- replaced by two separate functions before releasing 0.10, but I forgot to
- update the example in the documentation.
- (cherry picked from commit ea666891cb1e6fc9e527ce6c93a306bc97145f16)
-
- json-glib/json-gboxed.c | 11 ++++++-----
- 1 files changed, 6 insertions(+), 5 deletions(-)
-
-commit 1ce1d549477b79e7d94fb891f323afbdb8a8d4ce
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Sun Jan 10 09:59:14 2010 +0000
-
- Initialize every member of JsonObject on construction
-
- We create JsonObject structures using g_slice_new(), so we need to
- initialize every member of the structure ourselves.
- (cherry picked from commit c09c2dc1c54c83fea4ef93486081fe3fab35452c)
-
- json-glib/json-object.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-commit dae32677d140a3ba6a15e1198b53ea0b3e1716b0
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Tue Dec 29 15:35:21 2009 +0000
-
- Post-release version bump to 0.10.1
-
- configure.ac | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit 5aff66e8fae3e28c9cb6b74696170154eed303a7
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Tue Dec 29 15:33:28 2009 +0000
-
- Release 0.10.0
-
- configure.ac | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-commit 7258a776ea90ea4b2dcc6f1e4e440bb09c581a12
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Tue Dec 29 15:31:22 2009 +0000
-
- build: Enable introspection when distchecking
-
- Makefile.am | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit 80c5178127052e600146ca889500e263da4ebf10
-Author: Vincent Untz <vuntz@gnome.org>
-Date: Sun Dec 27 02:09:44 2009 +0100
-
- Initialize out variables before using them
-
- 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>
-
- json-glib/json-gobject.c | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-commit e3a57eae397926ad23e216996eda164ed6c15c63
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Sun Nov 29 12:50:58 2009 +0000
-
- Post-release bump to 0.9.3
-
- configure.ac | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit 4477758b73a0712fdef5e7907f6b6f4e0878428e
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Sun Nov 29 12:34:41 2009 +0000
-
- Release 0.9.2 (0.10.0-rc1)
-
- configure.ac | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit 654f99c6b0d771cc6b4c68790ab164b0f691307d
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Sun Nov 29 12:34:08 2009 +0000
-
- Update NEWS
-
- NEWS | 15 +++++++++++++++
- 1 files changed, 15 insertions(+), 0 deletions(-)
-
-commit 307605046cf89ef922d1d1e7c7b95405f3ecfdfb
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Sun Nov 29 12:48:25 2009 +0000
-
- docs: Fix annotation for json_gobject_to_data()
-
- json-glib/json-gobject.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit e7eb3ca4a9de1c7348dc82f528cf0858f52849dd
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Sun Nov 29 12:37:04 2009 +0000
-
- docs: Add missing to/from_data methods
-
- doc/reference/json-glib-sections.txt | 2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
-
-commit 27bb2c060a7b2ecc4839719d39b2044efe4c3e7a
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Sun Nov 29 12:46:27 2009 +0000
-
- docs: Add release notes to the README
-
- README | 12 ++++++++++--
- 1 files changed, 10 insertions(+), 2 deletions(-)
-
-commit 780d82310c47c3f07bcbaab2cefbea0d6decb899
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Sun Nov 29 12:33:45 2009 +0000
-
- docs: Update the README
-
- README | 27 ++++++++++++++++-----------
- 1 files changed, 16 insertions(+), 11 deletions(-)
-
-commit d122f9b8c09ad7e82b1a70da5d65ebba2111e6cc
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Sun Nov 29 12:33:01 2009 +0000
-
- build: Clean up the configure summary
-
- Make the output of the summary a little bit nicer.
-
- configure.ac | 27 ++++++++++++++++++++-------
- 1 files changed, 20 insertions(+), 7 deletions(-)
-
-commit e4c4480036a82cc5177fc1f184c18019af0e805e
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Sun Nov 29 12:31:54 2009 +0000
-
- build: Require G-I 0.6.4
-
- We should require at least 0.6.4 for GObject-Introspection, since that
- version allows us to pass the .la file to g-ir-scanner.
-
- configure.ac | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit 4445bdb04d5eebc145a1db82aa5b811e8d4ed048
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Sat Nov 28 19:13:27 2009 +0000
-
- docs: Fix argument name mismatch
-
- gtk-doc complains that the argument name in the header does not match
- the one in the documentation annotation for the GBoxed deserialization
- function registration.
-
- json-glib/json-gobject.h | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit 793e827feaa9be3c4ffbe5c0425ac6bcc0c9e6d1
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Sat Nov 28 19:06:36 2009 +0000
-
- build: Clean up json-glib/Makefile.am rules
-
- json-glib/Makefile.am | 24 ++++--------------------
- 1 files changed, 4 insertions(+), 20 deletions(-)
-
-commit 97584658672fe4709fc7c3b24a44b477112322f7
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Sat Nov 28 17:39:37 2009 +0000
-
- build: Fix out-of-tree enum types file generation
-
- build/autotools/Makefile.am.enums | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-commit 3cf919e9c7f3201305a1a63a3c270e422a37efed
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Mon Nov 23 22:20:58 2009 +0000
-
- boxed: Split (de)serialization registration
-
- 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.
-
- doc/reference/json-glib-sections.txt | 3 +-
- json-glib/json-gboxed.c | 115 ++++++++++++++++++++++------------
- json-glib/json-gobject.c | 4 +-
- json-glib/json-gobject.h | 63 +++++++++---------
- tests/test-serialize-boxed.c | 7 +-
- 5 files changed, 114 insertions(+), 78 deletions(-)
-
-commit 61d54cc9e2a3098e876e700a9248428f400a5368
-Author: Tristan Van Berkom <tristan.van.berkom@gmail.com>
-Date: Thu Nov 12 12:59:03 2009 +0000
-
- serializable: Make Serializable in charge of parsing
-
- 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>
-
- json-glib/json-gobject.c | 7 +++++--
- 1 files changed, 5 insertions(+), 2 deletions(-)
-
-commit 63dc03da507a216c0764bc0e50fc62b2b77dc1b2
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Thu Nov 12 12:38:29 2009 +0000
-
- serializable: Add methods proxying default implementations
-
- If you want to use the default implementation of serialize_property()
- and/or deserialize_property() from an object class implementing
- JsonSerializable you currently have to peek the interface vtable and
- then call the vfunc pointers.
-
- We can expose the default implementation through functions ourselves and
- simplify the required code.
-
- doc/reference/json-glib-sections.txt | 4 ++
- json-glib/json-gobject.h | 28 +++++++---
- json-glib/json-serializable.c | 92 ++++++++++++++++++++++++++++++++++
- 3 files changed, 115 insertions(+), 9 deletions(-)
-
-commit 5f484d8c274a2b866f9a3d38eebe2baa1939b7ac
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Thu Nov 12 12:03:13 2009 +0000
-
- gobject: Add deprecation annotations
-
- This makes it easier to detect when building without
- JSON_DISABLE_DEPRECATED.
-
- json-glib/json-gobject.h | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-commit 3c7811bf24d4b957da730949af6795b728db5bad
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Thu Nov 12 12:02:41 2009 +0000
-
- build: Build without deprecations
-
- Make sure that JSON-GLib is built without using deprecated API.
-
- json-glib/Makefile.am | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-commit 923311ee52b77f53c5c529e497ea2a24efaf23ea
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Thu Nov 12 12:01:04 2009 +0000
-
- tests: Do not use deprecated API
-
- Tests should not be using API marked as deprecated.
-
- tests/Makefile.am | 2 +-
- tests/test-serialize-boxed.c | 4 ++--
- tests/test-serialize-complex.c | 2 +-
- tests/test-serialize-full.c | 2 +-
- tests/test-serialize-simple.c | 2 +-
- 5 files changed, 6 insertions(+), 6 deletions(-)
-
-commit e3ae84e743e1d1a1a0202e900f443e143cb77f45
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Thu Nov 12 11:57:45 2009 +0000
-
- tests: Verify Serializable::serialize_property()
-
- Verify that an object with a custom serialize_property() is effectively
- what we expect it to be when it is parsed.
-
- tests/test-serialize-complex.c | 32 ++++++++++++++++++++++++++++++++
- 1 files changed, 32 insertions(+), 0 deletions(-)
-
-commit 7cebdd008a02e6cef0514f40327f94eba2a2088e
-Author: Cornelius Hald <hald@icandy.de>
-Date: Thu Nov 12 11:37:54 2009 +0000
-
- Doubles are converted to strings containing commas
-
- Under some locales (e.g. de_DE) a double is converted to a string
- containing a comma instead of a dot. That breaks the JSON syntax.
-
- Example:
- Double: 0.34 is converted to 0,34 when using locale de_DE
-
- http://bugzilla.openedhand.com/show_bug.cgi?id=1826
-
- Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
-
- json-glib/json-generator.c | 7 ++++++-
- 1 files changed, 6 insertions(+), 1 deletions(-)
-
-commit 30d4efb775cb416212c00e3ececb0f0147739f40
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Thu Nov 12 11:28:17 2009 +0000
-
- Update Introspection annotations
-
- • Fix the transfer rules for JsonNode, JsonObject and JsonArray
- getters.
-
- • Annotate the methods returning lists
-
- json-glib/json-array.c | 18 +++++++++---------
- json-glib/json-node.c | 15 ++++++++-------
- json-glib/json-object.c | 25 +++++++++++++------------
- json-glib/json-parser.c | 5 +++--
- 4 files changed, 33 insertions(+), 30 deletions(-)
-
-commit 47cd2f678a8321faac0e2d00a3538181e7bc1cbf
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Thu Nov 12 11:27:36 2009 +0000
-
- build: Add more flags to the maintainer cflags list
-
- configure.ac | 4 +++-
- 1 files changed, 3 insertions(+), 1 deletions(-)
-
-commit ecc185d1c542f6ff41f84be026dc380f611a5d6e
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Thu Nov 12 10:09:17 2009 +0000
-
- enum-types: Put back a missing static
-
- The GEnumValue array defining the enumeration type values must be
- static, otherwise everything will crash when trying to retrieve the
- enumeration data from the GEnumClass.
-
- json-glib/json-enum-types.c.in | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit 84f5af58c23b174cc9708e81ce8ccbfffa6e68eb
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Fri Oct 30 10:46:32 2009 +0000
-
- object: Return values list in insertion order
-
- Since we return the member names in insertion order, we should also
- return the member values in the same order.
-
- This also allows us to get rid of the (yucky) internal copies of
- g_hash_table_get_keys() and g_hash_table_get_values(), since we use
- the hash table only for storage and lookup purposes.
-
- json-glib/json-object.c | 55 ++++++-----------------------------------------
- 1 files changed, 7 insertions(+), 48 deletions(-)
-
-commit a25a1ded25e5d1f605cffd6da7a5e036151aa70c
-Author: Mathias Hasselmann <mathias.hasselmann@gmx.de>
-Date: Thu Oct 29 14:01:04 2009 +0000
-
- tests: Verify parsing bare values
-
- http://bugzilla.openedhand.com/show_bug.cgi?id=1856
-
- Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
-
- tests/test-parser.c | 38 +++++++++++++++++++++++++++++++++-----
- 1 files changed, 33 insertions(+), 5 deletions(-)
-
-commit 026ea0357fbe95e2acd43555e3b5d00e329c9740
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Thu Oct 29 13:59:44 2009 +0000
-
- parser: Advance when parsing bare values
-
- A missing get_next_token() prevents getting the contents of
- the tokenizer in order to place them into the JsonNode.
-
- json-glib/json-parser.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-commit 578111be53065a2bbeda73865bfa4e178f185649
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Wed Oct 28 16:54:34 2009 +0000
-
- introspection: Fix the GIR generation
-
- The rule for creating the JSON-GLib GIR file should use the
- json-glib.la shared object, to avoid using the installed
- copy of JSON-GLib when compiling the typelib.
-
- The include file for JSON-GLib is json-glib/json-gobject.h as
- well: json-glib/json-object.h does not exist.
-
- json-glib/Makefile.am | 11 ++++++++---
- 1 files changed, 8 insertions(+), 3 deletions(-)
-
-commit 8f8ce87730fc0bf102a707e84c4f6106b215cfab
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Wed Oct 28 16:23:39 2009 +0000
-
- gobject: Use from/to data naming convention
-
- 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.
-
- json-glib/json-gobject.c | 63 +++++++++++++++++++++++++++++++++++++++++++---
- json-glib/json-gobject.h | 10 +++++++
- 2 files changed, 69 insertions(+), 4 deletions(-)
-
-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(-)
-
-commit fc0607c740b153acc96e4df12a12b042e08e831b
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Wed Oct 28 12:01:21 2009 +0000
-
- docs: Add long descriptions
-
- The json-boxed and json-serializable sections are missing the
- long description for the API reference.
-
- json-glib/json-gboxed.c | 49 +++++++++++++++++++++++++++++++++++++---
- json-glib/json-serializable.c | 5 +++-
- 2 files changed, 49 insertions(+), 5 deletions(-)
-
-commit 498827110f3d635e545c7351732551676a06a1bf
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Wed Oct 28 10:07:39 2009 +0000
-
- docs: Add the 0.10 symbols index
-
- doc/reference/json-glib-docs.xml | 5 +++++
- 1 files changed, 5 insertions(+), 0 deletions(-)
-
-commit 0979bbceb654c5e4b5dadf1e6f7e85bb9df87ca5
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Tue Oct 27 20:58:08 2009 +0000
-
- docs: Split out GObject-related sections
-
- Like commit c176f70e593c9cfb4901cd9f27ce54b8aa7152f2 did for the
- source code, the documentation should be split three-ways:
-
- • GObject-related API
- • JsonSerializable
- • GBoxed-related API
-
- doc/reference/Makefile.am | 15 +++++++--------
- doc/reference/json-glib-docs.xml | 2 ++
- doc/reference/json-glib-sections.txt | 33 +++++++++++++++++++++++++++------
- 3 files changed, 36 insertions(+), 14 deletions(-)
-
-commit 2f56ba9021ec4fe1574630404d6b24e4813cf1eb
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Tue Oct 27 20:57:52 2009 +0000
-
- docs: Documentation fixes for gtk-doc
-
- json-glib/json-gboxed.c | 8 +++++---
- 1 files changed, 5 insertions(+), 3 deletions(-)
-
-commit c176f70e593c9cfb4901cd9f27ce54b8aa7152f2
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Tue Oct 27 20:49:09 2009 +0000
-
- build: Split out GBoxed and Serializable
-
- The json-gobject.c is getting pretty crowded; we should split out
- the JsonBoxed API and the JsonSerialized implementation into their
- separate source files.
-
- json-glib/Makefile.am | 4 +
- json-glib/json-gboxed.c | 275 ++++++++++++++++++++++++++++
- json-glib/json-gobject-private.h | 39 ++++
- json-glib/json-gobject.c | 371 +-------------------------------------
- json-glib/json-serializable.c | 154 ++++++++++++++++
- 5 files changed, 476 insertions(+), 367 deletions(-)
-
-commit 373fa3d9b73391b38620fbd9ce9b69f358e5f4c8
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Tue Oct 27 18:10:19 2009 +0000
-
- gobject: Make GObject<->JsonObject functions public
-
- The functions mapping a GObject to and from a JsonObject should
- be public, as they can be used by parsers.
-
- json-glib/json-gobject.c | 30 ++++++++++++++++++++++++++++--
- json-glib/json-gobject.h | 16 ++++++++++------
- 2 files changed, 38 insertions(+), 8 deletions(-)
-
-commit 85f7a8e8206168d95b3ef9c02aa584f0fae5b37e
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Tue Oct 27 18:03:11 2009 +0000
-
- gobject: Reuse the list data
-
- 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.
-
- json-glib/json-gobject.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit ff986ee5b8df45255f4f5ab01be0bbad893bc55e
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Tue Oct 27 17:53:34 2009 +0000
-
- gobject: Add experimental GBoxed<->JSON transformation
-
- 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.
-
- .gitignore | 68 ++++++-----
- json-glib/json-gobject.c | 264 +++++++++++++++++++++++++++++++++++++++++-
- json-glib/json-gobject.h | 37 ++++++
- tests/Makefile.am | 8 +-
- tests/test-serialize-boxed.c | 263 +++++++++++++++++++++++++++++++++++++++++
- 5 files changed, 602 insertions(+), 38 deletions(-)
-
-commit 7f6a73a0964b66b15e8b5a9858b9bc76b010f67b
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Tue Oct 27 17:43:38 2009 +0000
-
- node: Add a private NodeType-to-string converter
-
- Useful for debugging and logging purposes.
-
- json-glib/json-node.c | 23 ++++++++++++++++++++++-
- json-glib/json-types-private.h | 2 ++
- 2 files changed, 24 insertions(+), 1 deletions(-)
-
-commit 3f8990f7a4c362590f19e427aae2f68f27303fe6
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Tue Oct 27 17:42:14 2009 +0000
-
- Remove a stray ';' that broke deserializing GStrv
-
- The stray semicolon was preventing the GPtrArray from being
- updated.
-
- json-glib/json-gobject.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit 8e550ac4dbb5500a40c7adad88868ede40397db7
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Tue Oct 27 17:41:38 2009 +0000
-
- Fix compiler warnings (remove unused variables)
-
- json-glib/json-gobject.c | 3 +--
- 1 files changed, 1 insertions(+), 2 deletions(-)
-
-commit 3b994a52d9c34f67e4ac52aa4bb0c380789fbd60
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Tue Oct 27 17:40:55 2009 +0000
-
- build: Export MAINTAINER_CFLAGS
-
- Apparently, the MAINTAINER_CFLAGS were ignored.
-
- configure.ac | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-commit 0810711a7fbb915ba9397a66e77babb30765d090
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Tue Oct 27 17:40:23 2009 +0000
-
- build: Use AM_PROG_CC_C_O
-
- Use the Automake macro to enable per-target compiler flags.
-
- configure.ac | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit d664f886372afbe1d54e633240e7b7e06ebc45c8
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Tue Oct 27 17:40:03 2009 +0000
-
- Fix compiler warnings (remove unused variables)
-
- tests/test-generator.c | 4 ++--
- tests/test-serialize-full.c | 1 -
- 2 files changed, 2 insertions(+), 3 deletions(-)
-
-commit 83dea3b3dd2281dca206e0873b5fed0a2a3d50de
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Tue Oct 27 14:01:24 2009 +0000
-
- gobject: Support constructor properties
-
- 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.
-
- json-glib/json-gobject.c | 98 ++++++++++++++++++++++++++++++++++++++-----
- tests/test-serialize-full.c | 11 +++--
- 2 files changed, 93 insertions(+), 16 deletions(-)
-
-commit 2616938c7c042fced9be197205a535a8b420534e
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Tue Oct 27 11:57:38 2009 +0000
-
- build: Clean up the build environment
-
- Some of the rules can be moved into their own files to be included
- when needed, like:
-
- • silent rules (QUIET_*)
- • glib-mkenums rules
- • glib-genmarshal rules
-
- Also, the test suite rules should be moved from the top-level of
- the project into the build/autotools directory and then included
- only where it makes sense.
-
- This requires changing most of the build system to use the new
- files layout.
-
- .gitignore | 4 +-
- Makefile.am | 5 +-
- Makefile.decl | 61 ------------------------
- build/Makefile.am | 12 ++++-
- build/autotools/Makefile.am | 21 +++++++--
- build/autotools/Makefile.am.enums | 43 +++++++++++++++++
- build/autotools/Makefile.am.gtest | 61 ++++++++++++++++++++++++
- build/autotools/Makefile.am.marshal | 45 ++++++++++++++++++
- build/autotools/Makefile.am.silent | 17 +++++++
- doc/Makefile.am | 12 ++++-
- doc/reference/Makefile.am | 5 +-
- json-glib/Makefile.am | 88 +++++++++++------------------------
- json-glib/tests/Makefile.am | 12 +++--
- tests/Makefile.am | 15 ++----
- 14 files changed, 252 insertions(+), 149 deletions(-)
-
-commit 5406301b0e3bf74c0d7ae47a618c416d5c6dc29d
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Tue Oct 27 11:30:55 2009 +0000
-
- gobject: Serialize properties holding a GObject
-
- Like we deserialize them, we can serialize GObject properties
- defined using GParamSpecObject.
-
- json-glib/json-gobject.c | 14 ++++++++++++++
- 1 files changed, 14 insertions(+), 0 deletions(-)
-
-commit 3a2176ebf96b33716d1b50068ca44b1d3cd9b0c8
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Tue Oct 27 11:29:32 2009 +0000
-
- tests: Use properties to change values
-
- The values inside _init() should match the default values of the
- properties as specified by the GParamSpec. If we want to verify
- a non-default value we should specify the value when instantiating
- the object.
-
- tests/test-serialize-simple.c | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-commit 1ff48cdc5d773925bda1ddf8bc904a9ea6a5e643
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Tue Oct 27 11:18:51 2009 +0000
-
- gobject: Split GObject serialization code
-
- 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.
-
- json-glib/json-gobject.c | 113 +++++++++++++++++++++++++---------------------
- 1 files changed, 61 insertions(+), 52 deletions(-)
-
-commit 27afed8dc89bf9562c3536f0a053d250e70eea4d
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Tue Oct 27 10:30:27 2009 +0000
-
- gobject: Recurse in GParamSpecObject properties
-
- 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.
-
- json-glib/json-gobject.c | 14 +++++++++-
- tests/test-serialize-full.c | 58 +++++++++++++++++++++++++++++++++++++-----
- 2 files changed, 64 insertions(+), 8 deletions(-)
-
-commit 317447b52455c56b0123168ab127ce026d7d0c22
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Tue Oct 27 10:20:42 2009 +0000
-
- gobject: Split JSON to GObject code
-
- If we want to be able to parse a GParamSpecObject property
- we need to use the same code as json_construct_gobject(), minus
- the parsing.
-
- json-glib/json-gobject.c | 152 +++++++++++++++++++++++++---------------------
- 1 files changed, 83 insertions(+), 69 deletions(-)
-
-commit cba7db96581343e3cbd8e5eb067026efb8cac24e
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Mon Oct 26 22:36:01 2009 +0000
-
- object: Guarantee insertion order
-
- When iterating over the members of a JsonObject, or when retrieving
- the list of members, the insertion order should be preserved by the
- JsonObject. This is simply implemented by keeping a mirror list of
- the member names.
-
- Apparently, though JSON does not guarantee any ordering, it is somewhat
- expected by JSON (and ECMAScript) users.
-
- json-glib/json-object.c | 67 +++++++++++++++++++++-------------------
- json-glib/json-types-private.h | 3 ++
- tests/test-generator.c | 3 +-
- 3 files changed, 40 insertions(+), 33 deletions(-)
-
-commit d5bebce0286aef5c4b4110c16c22a8ef3dc38405
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Mon Sep 28 18:15:48 2009 +0100
-
- [node] Add HOLDS macros for quick type checking
-
- JsonNode should mimick GValue's API and have macros for easy type checking
-
- doc/reference/json-glib-sections.txt | 7 ++++-
- json-glib/json-types.h | 51 ++++++++++++++++++++++++++++++++++
- json-glib/tests/node-test.c | 2 +-
- 3 files changed, 58 insertions(+), 2 deletions(-)
-
-commit 17fc731ed54b754285bac76c7ac23eac6b96bf24
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Mon Sep 28 14:02:14 2009 +0100
-
- [tests] Add a test case for Object members with empty strings
-
- Both the Object API and the Parser should not choke on members with
- empty strings as their value. The Object should just have a member
- associated with a JSON_NODE_VALUE node type and an empty string as
- the contents.
-
- json-glib/tests/object-test.c | 13 +++++++++++++
- tests/test-parser.c | 1 +
- 2 files changed, 14 insertions(+), 0 deletions(-)
-
-commit 5181bf24bf3cde743de590ab3ffa0471df9e4799
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Tue Sep 22 15:42:34 2009 +0100
-
- Post-branch bump to 0.9.1
-
- configure.ac | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-commit 3f83767109979c660469b3b5862fbd04469a8011
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Tue Sep 22 15:39:46 2009 +0100
-
- [release] 0.8.0
-
- NEWS | 2 ++
- configure.ac | 8 ++++++--
- 2 files changed, 8 insertions(+), 2 deletions(-)
-
-commit bd604338b25884edbd86cf531505259948484323
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Tue Sep 22 15:34:18 2009 +0100
-
- [parser] Return the right expected token
-
- When parsing a value embedded in a Json Object or Array we need to
- return the right expected token so that the generated syntax error
- will be correct.
-
- json-glib/json-parser.c | 16 ++++++++++++++--
- 1 files changed, 14 insertions(+), 2 deletions(-)
-
-commit f99cf3d3d038eff786f85409f3d04736e2068e74
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Tue Sep 22 15:34:07 2009 +0100
-
- [parser] Whitespace clean up
-
- json-glib/json-parser.c | 11 ++++++-----
- 1 files changed, 6 insertions(+), 5 deletions(-)
-
-commit 6c20aae2b49a6d64db5e7d1ff3a82950ea9dc58a
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Mon Sep 7 22:30:11 2009 +0100
-
- [build] Prefer automake-1.11 silent rules to shave
-
- If we have automake-1.11 installed then we should enable the
- AM_SILENT_RULES machinery instead of Shave - even though Shave's
- output is a lot cleaner.
-
- autogen.sh | 2 +-
- configure.ac | 20 ++++++++++++++++----
- json-glib/Makefile.am | 6 +++++-
- 3 files changed, 22 insertions(+), 6 deletions(-)
-
-commit 7b4bb80930f12a366d5e5a5eea5b398972cd4891
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Sun Sep 6 17:31:41 2009 +0100
-
- [node] Add JsonNode.set_parent()
-
- Add the setter for JsonNode:parent, to be used in JsonParser instead
- of directly accessing the JsonNode structure.
-
- doc/reference/json-glib-sections.txt | 1 +
- json-glib/json-node.c | 18 ++++++++++++++++++
- json-glib/json-parser.c | 14 +++++++-------
- json-glib/json-types.h | 2 ++
- tests/test-parser.c | 10 ++++++++++
- 5 files changed, 38 insertions(+), 7 deletions(-)
-
-commit c1b76a73e0b2c6e0c7afced10bd6079a0f5b0f5d
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Sun Sep 6 17:15:46 2009 +0100
-
- [parser] Clean up value parsing
-
- The code that parses a value within an object and an array should
- be moved to its own function to avoid duplication.
-
- json-glib/json-parser.c | 199 +++++++++++++++++++----------------------------
- tests/test-parser.c | 9 +-
- 2 files changed, 86 insertions(+), 122 deletions(-)
-
-commit d3f005c27d9a8a46259205f2f8077fb01a6a3609
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Sun Sep 6 14:44:18 2009 +0100
-
- [docs] Use proper xi:include for indexes
-
- Instead of relying on gtk-doc we can do the proper inclusion of the
- API indexes using XInclude, complete with fallbacks.
-
- Also, we should include the additional pages that gtk-doc generates
- for us, like the annotations glossary and the object tree.
-
- doc/reference/json-glib-docs.xml | 17 +++++++++++++++++
- 1 files changed, 17 insertions(+), 0 deletions(-)
-
-commit 7442a3011a860f12cbd40b6687b699b0b648d6b7
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Wed Sep 2 16:41:51 2009 +0100
-
- [docs] Small documentation fixes
-
- Clean up some notes, and add introspection annotations where needed.
-
- json-glib/json-generator.c | 11 ++++++-----
- json-glib/json-gobject.c | 24 ++++++++++++------------
- json-glib/json-parser.c | 3 ++-
- 3 files changed, 20 insertions(+), 18 deletions(-)
-
-commit d7d1e702b1d67fa1ec830a46650a02367ce1dd29
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Sun Aug 16 05:52:46 2009 +0100
-
- [docs] Remove note about normalization of member names
-
- The normalization of member names inside JsonObject was removed by
- commit 8a7e0f381dc7e49745680df92ebb428f18bf4832.
-
- json-glib/json-object.c | 6 +-----
- 1 files changed, 1 insertions(+), 5 deletions(-)
-
-commit 9362ccc891c914dbcf1be6bd067b0b37ae688057
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Thu Aug 13 15:10:27 2009 +0100
-
- [docs] Generate new symbols index for 0.6 and 0.8
-
- doc/reference/json-glib-docs.xml | 8 ++++++++
- 1 files changed, 8 insertions(+), 0 deletions(-)
-
-commit 087bfe83412dca8de1b2dd67c74f490e44ecb96a
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Thu Aug 13 15:10:07 2009 +0100
-
- [docs] Remove the version number from the title
-
- doc/reference/json-glib-docs.xml | 11 ++++++++---
- 1 files changed, 8 insertions(+), 3 deletions(-)
-
-commit c7d31d55b50b23c6c1067cb3541f73dddc12127a
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Thu Aug 13 15:08:56 2009 +0100
-
- [docs] Let gtk-doc build the correct index
-
- Use the --name-space command line argument for gtk-doc to detect the
- right namespace of JSON-GLib, and create a useful index.
-
- doc/reference/Makefile.am | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit be07ba7b983b34231ad2f0fd7fe60ae47b14ce7e
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Thu Aug 13 14:51:42 2009 +0100
-
- [docs] Rename main file to json-glib-docs.xml
-
- doc/reference/Makefile.am | 36 +++++----
- doc/reference/json-glib-docs.sgml | 163 -------------------------------------
- doc/reference/json-glib-docs.xml | 163 +++++++++++++++++++++++++++++++++++++
- 3 files changed, 182 insertions(+), 180 deletions(-)
-
-commit 9661ff342b439b5b398f7bf9ba931d6139d5143d
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Wed Aug 12 16:09:33 2009 +0100
-
- Post-release version bump to 0.7.7
-
- configure.ac | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit d5922b42604c09ba7ebcb0adc1566d0a33a99808
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Wed Aug 12 16:06:40 2009 +0100
-
- [release] 0.7.6 (brown paper bag)
-
- configure.ac | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit 9a647104ca77d4c4272845fed4bfae028098afd3
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Wed Aug 12 15:56:00 2009 +0100
-
- Actually use the int64 support in the Scanner
-
- We switched everything to 64 bit integers but then I forgot to
- enable the support for actually making the tokenizer store the
- parsed integers into a 64 bit value.
-
- Bad Emmanuele, no cookie for you.
-
- json-glib/json-parser.c | 12 ++++++------
- json-glib/json-scanner.c | 1 +
- 2 files changed, 7 insertions(+), 6 deletions(-)
-
-commit f3e0618ee1d8aa90d0ba22e9abe5c7d6b849e0ea
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Wed Aug 12 14:08:35 2009 +0100
-
- Post-release version bump to 0.7.5
-
- configure.ac | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit c1c691fc6b58a990ee9bb17504189064051d5a12
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Wed Aug 12 13:56:08 2009 +0100
-
- [release] 0.7.4
-
- configure.ac | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit 12bc49ea08c50da9a7ed53c475fe873421432ebe
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Wed Aug 12 14:01:49 2009 +0100
-
- Update the NEWS file
-
- NEWS | 2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
-
-commit 75b888c26eebf7784c5af045a8c6af353e56b2e9
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Wed Aug 12 13:59:52 2009 +0100
-
- [build] Use our libtool for the typelib
-
- When compiling the GIR into a .typelib file we can use our own
- libtool script; shave will proxy it to the right place.
-
- json-glib/Makefile.am | 20 +++++++++++---------
- 1 files changed, 11 insertions(+), 9 deletions(-)
-
-commit d84c0f367b06e094ff693d60a724b9f141c33ca9
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Wed Aug 12 13:48:17 2009 +0100
-
- Disallow single header file inclusion
-
- The correct header file for JSON-GLib is, and has always been,
- json-glib.h. Anything else was not supported, as we've been
- moving around stuff for a while, now.
-
- This commit enforces the single include file, using the same
- policy enacted by other libraries, like: GLib, GTK+ and Clutter.
-
- json-glib/json-enum-types.h.in | 4 ++++
- json-glib/json-generator.h | 4 ++++
- json-glib/json-glib.h | 6 ++++++
- json-glib/json-parser.h | 4 ++++
- json-glib/json-types.h | 4 ++++
- json-glib/json-version.h.in | 4 ++++
- 6 files changed, 26 insertions(+), 0 deletions(-)
-
-commit 3adba015e1c1f9edc7b7b2c4364d65f813216225
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Wed Aug 12 13:46:46 2009 +0100
-
- [introspection] Use json-gobject.h
-
- The json-gobject.h header file includes json-glib.h and all the
- GObject-related serialization and deserialization API; we assume
- that if you want introspection you should be using this header
- and not the plain json-glib.h.
-
- json-glib/Makefile.am | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit a9386e20bf8e16e17a89dda24781c63bf495aa97
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Wed Aug 12 13:46:05 2009 +0100
-
- [tests] Include json-glib.h
-
- Do not include json-types.h, use the correct global include.
-
- json-glib/tests/array-test.c | 2 +-
- json-glib/tests/node-test.c | 2 +-
- json-glib/tests/object-test.c | 2 +-
- 3 files changed, 3 insertions(+), 3 deletions(-)
-
-commit 8a7e0f381dc7e49745680df92ebb428f18bf4832
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Wed Aug 12 12:29:34 2009 +0100
-
- Do not sanitize the object member's name
-
- JsonObject sanitizes the name of the member to replace all
- characters defined by G_STR_DELIMITERS with '_'. This is
- absolutely brain damaged, since a member name can be any
- valid JSON string.
-
- Obviously, if a member name maps to a GObject property is
- entirely up to the GObject code to decide whether to sanitize
- the member name or not.
-
- json-glib/json-object.c | 35 ++++++-----------------------------
- 1 files changed, 6 insertions(+), 29 deletions(-)
-
-commit ad638149c2cc1a17c0d2ad1482d932c8940c64e0
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Wed Aug 12 12:22:44 2009 +0100
-
- Update NEWS
-
- NEWS | 2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
-
-commit d87b18675ac02f42be23bf4070134690b8b9934b
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Wed Aug 12 12:13:11 2009 +0100
-
- Auto-promote integer types to G_TYPE_INT64
-
- The JSON RFC does not specify the size of the integer type, thus
- implicitly falling back to machine-size.
-
- This would all be fine and dandy if some demented Web Developer (and
- I use the term "developer" *very much* loosely) did not decide to
- use integers to store unique identifiers for objects; obviously, you
- can't have more than 2^32-1 status messages in a database with
- millions of users who update their status multiple times per day.
- Right, Twitter?
-
- Anyway, some languages do a type auto-promotion from Integer to
- Long, thus pushing the limit of allowed positive values -- until the
- next integer overflow, that is. C, and GLib, do not do that
- transparently for us so we need to:
-
- - always use gint64 when parsing a JSON data stream using
- JsonScanner
- - move all the Node, Object and Array APIs to gint64
- - auto-promote G_TYPE_INT to G_TYPE_INT64 when setting
- a GValue manually
- - auto-promote and auto-demote G_TYPE_INT properties when
- (de)serializing GObjects.
-
- The GLib types used internally by JSON-GLib are, thus:
-
- integer -> G_TYPE_INT64
- boolean -> G_TYPE_BOOLEAN
- float -> G_TYPE_DOUBLE
- string -> G_TYPE_STRING
-
- json-glib/json-array.c | 4 +-
- json-glib/json-generator.c | 4 +-
- json-glib/json-gobject.c | 58 ++++++++++++++++++++++++++++++---------
- json-glib/json-node.c | 61 +++++++++++++++++++++++++++++++++--------
- json-glib/json-object.c | 4 +-
- json-glib/json-types.h | 12 ++++----
- json-glib/tests/array-test.c | 2 +-
- json-glib/tests/node-test.c | 14 +++++-----
- json-glib/tests/object-test.c | 2 +-
- tests/test-generator.c | 4 +-
- tests/test-parser.c | 4 +-
- tests/test-serialize-full.c | 9 +-----
- 12 files changed, 121 insertions(+), 57 deletions(-)
-
-commit 7411cadc0fdd9ffc2bd7004c9980913ac857a495
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Sun Jun 28 23:52:34 2009 +0100
-
- Indentation fixes
-
- tests/test-parser.c | 98 +++++++++++++++++++++++++-------------------------
- 1 files changed, 49 insertions(+), 49 deletions(-)
-
-commit 112a8ec8dfd9c46304008b62e8ab256ed7714644
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Sun Jun 28 23:49:51 2009 +0100
-
- [parser] Advance the tokenizer to avoid an infinite loop
-
- The tokenizer is not advanced when we peek a base value and return.
- This causes an endless loop which terminates only if the OOM killer
- in the kernel gets the right process.
-
- Thanks to Thomas Weidner for catching and reporting the issue.
-
- json-glib/json-parser.c | 16 +++++++++++-----
- 1 files changed, 11 insertions(+), 5 deletions(-)
-
-commit 4ecdd6bedb7961f3a33971aa1f2338115a60f7f3
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Sun Jun 28 23:48:36 2009 +0100
-
- [tests] Verify parsing base values
-
- A JSON document containing just a base value (null, true/false, an
- integer, a floating point value or a string) is still a valid JSON
- document, and JsonParser must create the correct JsonNode.
-
- tests/test-parser.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 59 insertions(+), 0 deletions(-)
-
-commit 9a3b7a020716e23f1330915f1768a7c00bffbeb5
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Thu Jun 25 10:37:43 2009 +0100
-
- [docs] Fix typo in JsonObject::set_object_member()
-
- The passed value is a pointer to a JsonObject, not to a JsonArray.
-
- json-glib/json-object.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit 68d872f15022217c0ff1cf516aec917d600fd762
-Author: Rodrigo Moya <rodrigo@gnome-db.org>
-Date: Wed Jun 24 14:07:18 2009 +0200
-
- Use JSON_NODE_OBJECT, not JSON_NODE_ARRAY when creating the node in json_object_set_object_member
-
- Reviewed by Emmanuele Bassi
-
- json-glib/json-object.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit 6e706fb2b7a371f25c169ed25d4b617f2dc05b63
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Sun Jun 21 10:58:24 2009 +0100
-
- [generator] Pre-compute the escape table
-
- Instead of allocating the escape table to be used with g_strescape()
- for each string we can have it unrolled already in code.
-
- Thanks to: Christian Persch <chpe@gnome.org>
-
- Fixes bug:
-
- http://bugzilla.openedhand.com/show_bug.cgi?id=1648
-
- json-glib/json-generator.c | 43 +++++++++++++++++++++++++++++++++----------
- 1 files changed, 33 insertions(+), 10 deletions(-)
-
-commit a9416b7e2823f1fffe639d90bb352a337815a70e
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Thu Jun 18 11:23:56 2009 +0100
-
- Post-release bump to 0.7.3
-
- configure.ac | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit 1d13a409bb911141653a75d44e90feac9bfc2862
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Thu Jun 18 11:20:35 2009 +0100
-
- [release] 0.7.2
-
- configure.ac | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit ff97e679522c52be6b5dfe0f851416cdeac7f921
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Thu Jun 18 11:14:37 2009 +0100
-
- [release] Update NEWS
-
- NEWS | 19 +++++++++++++++++++
- 1 files changed, 19 insertions(+), 0 deletions(-)
-
-commit 182ca9cd9a3fabaa2533d841154856c61c570d08
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Thu Jun 18 11:14:13 2009 +0100
-
- [build] Fixes for passing distcheck
-
- Makefile.am | 17 ++++++++++++-----
- build/Makefile.am | 2 ++
- build/autotools/Makefile.am | 4 +++-
- doc/reference/Makefile.am | 20 +++++++++++---------
- json-glib/Makefile.am | 27 ++++++++++++++-------------
- 5 files changed, 42 insertions(+), 28 deletions(-)
-
-commit 019d8d4c1c56250cd507283c0fc478a38364e92a
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Thu Jun 18 10:05:57 2009 +0100
-
- [build] Let gtk-doc ignore json-types-private.h
-
- The type definitions in json-types-private.h are not meant to be
- documented or scanned.
-
- doc/reference/Makefile.am | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-commit 41649f049637864cfce21f6615c7d8bcaf3f03b8
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Thu Jun 18 10:03:23 2009 +0100
-
- [docs] Update the README file
-
- README | 30 ++++++++++++++++++++----------
- 1 files changed, 20 insertions(+), 10 deletions(-)
-
-commit 97fc00b1a5e3878074488ee93d9b52570983da1f
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Thu Jun 18 10:03:05 2009 +0100
-
- [build] Use AS_CASE m4 macro, instead of AS_IF
-
- configure.ac | 30 ++++++++++++++++--------------
- 1 files changed, 16 insertions(+), 14 deletions(-)
-
-commit 610cd260ac50c09809d6273c328ecea5a21f51bb
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Thu Jun 18 10:02:39 2009 +0100
-
- [build] Require automake 1.10
-
- configure.ac | 6 +++---
- 1 files changed, 3 insertions(+), 3 deletions(-)
-
-commit bddc717b8b6f2f1501c30f78159c20394665d335
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Tue Jun 9 11:48:02 2009 +0100
-
- [build] Add introspection generation
-
- Build the Introspection data when compiling JSON-GLib; this way, the
- API should be available to other languages automatically.
-
- .gitignore | 3 +
- build/autotools/Makefile.am | 7 +++-
- build/autotools/introspection.m4 | 88 ++++++++++++++++++++++++++++++++++++++
- configure.ac | 13 +++--
- json-glib/Makefile.am | 30 +++++++++++++
- 5 files changed, 135 insertions(+), 6 deletions(-)
-
-commit 3ddeb7a8779a4c51453289aa15af130af480eea6
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Tue Jun 9 11:24:54 2009 +0100
-
- [build] Add AS_COMPILER_FLAGS
-
- Use the m4 AS_COMPILER_FLAGS macro to check for the maintainer
- compiler flags supported by the C compiler. This should allow the
- build to handle gracefully different versions of GCC.
-
- .gitignore | 1 +
- Makefile.am | 2 +
- build/autotools/Makefile.am | 2 +-
- build/autotools/as-compiler-flag.m4 | 62 +++++++++++++++++++++++++++++++++++
- configure.ac | 5 ++-
- 5 files changed, 70 insertions(+), 2 deletions(-)
-
-commit 9f817eae9fe0d09441fa78b11ef148a3f4affe22
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Tue Jun 9 11:21:19 2009 +0100
-
- [tests] Do not namespace with json-
-
- tests/test-generator.c | 10 +++++-----
- tests/test-parser.c | 18 +++++++++---------
- 2 files changed, 14 insertions(+), 14 deletions(-)
-
-commit bde3da83b1a144fc0eff1db5a2aa790462bb685e
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Tue Jun 9 11:15:53 2009 +0100
-
- [git ignore] Add m4 files under build/
-
- .gitignore | 3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
-
-commit c12786444e0175464295fb9a98c600060bffa0ed
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Tue Jun 9 11:13:30 2009 +0100
-
- Fix license and copyright notices
-
- THere is no such thing as the "Lesser General Public License
- version 2": the LGPL v2 is the "Library GPL", and has been
- superceded by v2.1 with the new "Lesser GPL" name.
-
- Also, the copyright is now Intel Corp.
-
- json-glib/json-array.c | 8 ++++++--
- json-glib/json-generator.c | 8 ++++++--
- json-glib/json-generator.h | 8 ++++++--
- json-glib/json-glib.h | 23 +++++++++++++++++++++++
- json-glib/json-gobject.h | 8 ++++++--
- json-glib/json-node.c | 8 ++++++--
- json-glib/json-object.c | 9 ++++++---
- json-glib/json-parser.c | 8 ++++++--
- json-glib/json-parser.h | 8 ++++++--
- json-glib/json-version.h.in | 8 ++++++--
- 10 files changed, 77 insertions(+), 19 deletions(-)
-
-commit 069cdc8c4ea9024b1583f074815e16e9ddf7db7f
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Tue Jun 9 11:05:23 2009 +0100
-
- [node] Make JsonNode completely private
-
- The JsonNode structure has always been meant to be completely
- opaque; we indirectly exposed the :type member, but only for
- access through the JSON_NODE_TYPE() macro.
-
- Since that macro has become a proxy for the json_node_get_node_type()
- function we can safely move everything into a private, uninstalled
- header file and let JsonNode be completely opaque to the developer.
-
- json-glib/Makefile.am | 1 +
- json-glib/json-array.c | 9 +-----
- json-glib/json-generator.c | 2 +
- json-glib/json-gobject.c | 2 +
- json-glib/json-node.c | 2 +-
- json-glib/json-object.c | 9 +-----
- json-glib/json-parser.c | 2 +
- json-glib/json-types-private.h | 61 ++++++++++++++++++++++++++++++++++++++++
- json-glib/json-types.h | 38 +++++++++---------------
- json-glib/tests/node-test.c | 8 ++--
- 10 files changed, 89 insertions(+), 45 deletions(-)
-
-commit 930fdf4c4dff1f5310a946c2a9f5b6860f7c8ba8
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Sun May 17 19:44:41 2009 +0100
-
- Add JsonArray iteration function
-
- Similarly to commit 3057a172 for JsonObject, the newly added
- json_array_foreach_element() iterates over a JSON array data
- type.
-
- doc/reference/json-glib-sections.txt | 2 +
- json-glib/json-array.c | 35 ++++++++++++++++++++++++
- json-glib/json-types.h | 21 +++++++++++++++
- json-glib/tests/array-test.c | 48 ++++++++++++++++++++++++++++++++++
- 4 files changed, 106 insertions(+), 0 deletions(-)
-
-commit 3057a1722e27a13b39ddec4754fb6abda1aea199
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Sat May 16 20:09:07 2009 +0100
-
- Add JsonObject iteration function
-
- The json_object_foreach_member() function iterates over a JsonObject
- data type.
-
- doc/reference/json-glib-sections.txt | 2 +
- json-glib/json-object.c | 55 ++++++++++++++++++++++++++++++++
- json-glib/json-types.h | 25 +++++++++++++-
- json-glib/tests/object-test.c | 57 ++++++++++++++++++++++++++++++++++
- 4 files changed, 137 insertions(+), 2 deletions(-)
-
-commit 5778210462b8b7a1a5d98466508276f712ea8c47
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Sat May 16 13:53:58 2009 +0100
-
- Update the enum types templates
-
- The autogenerated enumeration types registration code should
- be using the same pattern used by the G_DEFINE_TYPE() macros,
- with GOnce to enable atomic (and thread-safe) type registration.
-
- json-glib/json-enum-types.c.in | 18 +++++++++++++-----
- 1 files changed, 13 insertions(+), 5 deletions(-)
-
-commit 43d4bd151cd6979ecc6fdad5fab3e7988117c7be
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Sun Apr 19 00:36:08 2009 +0100
-
- [doap] Add a category element
-
- json-glib.doap | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-commit 58999bddac74c176fbd8544fa2cd30e2f067d863
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Fri Apr 17 15:45:42 2009 +0100
-
- [node] Add is_null() method
-
- The json_node_is_null() function is just a quick check for
- nodes set to null.
-
- doc/reference/json-glib-sections.txt | 1 +
- json-glib/json-node.c | 20 ++++++++++++++++++++
- json-glib/json-types.h | 1 +
- 3 files changed, 22 insertions(+), 0 deletions(-)
-
-commit ba46d8e07a8e2dd50a3b1fff8b8c3303e3686480
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Fri Apr 17 15:38:40 2009 +0100
-
- [node] Make JSON_NODE_TYPE call a function
-
- Second pass at adding type safety to the JsonNode type checks.
-
- The JSON_NODE_TYPE macro now calls the json_node_get_node_type()
- function which hides the JsonNode.type structure field and gives
- us a little bit more of future compatibility.
-
- json-glib/json-types.h | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit d1e7d1ecd05687624f7149dad75a5fac9a645e72
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Fri Apr 17 15:36:09 2009 +0100
-
- [node] Add function version of JSON_NODE_TYPE macro
-
- First pass at adding some type safety to the JsonNode type checks,
- and at removing every mention of the JsonNode interna fields.
-
- doc/reference/json-glib-sections.txt | 1 +
- json-glib/json-node.c | 18 ++++++++++++++++++
- json-glib/json-types.h | 5 +++--
- 3 files changed, 22 insertions(+), 2 deletions(-)
-
-commit f2f43d17254317d35ea0cc8206592ecbcb856b68
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Fri Apr 17 15:22:04 2009 +0100
-
- Intern the remaining type names
-
- JsonArray and JsonSerializable type names should be interned like
- the rest of the types.
-
- json-glib/json-array.c | 2 +-
- json-glib/json-gobject.c | 3 ++-
- 2 files changed, 3 insertions(+), 2 deletions(-)
-
-commit bfcc50d5b199e72ed3e5a7556ac2294442e3ac55
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Fri Apr 17 15:19:42 2009 +0100
-
- [docs] Remove newline from the version template
-
- The newline at the end of the version.xml.in file is retained
- when using its contents as the version entity in the API reference
- docbook.
-
- doc/reference/version.xml.in | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit cbc92b72b2d7870a916f24055f8c2aa2371aa4ea
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Fri Apr 17 15:02:44 2009 +0100
-
- [tests] Use the typed accessors in test-generator
-
- Other than using the GValue-based methods we should also be using
- the typed JsonNode accessors and the newly added JsonObject and
- JsonArray typed accessors.
-
- tests/test-generator.c | 65 ++++++++---------------------------------------
- 1 files changed, 11 insertions(+), 54 deletions(-)
-
-commit e437ce609e333c5b8ede21174dfba032c1bbfb00
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Fri Apr 17 14:49:25 2009 +0100
-
- Add convenience accessors to JsonArray
-
- Like commit 5bb6ea91 did for JsonObject, we should add typed
- convenience accessors to JsonArray in order to cut down the
- amount of nodes needed when parsing and generating JSON data
- streams.
-
- As for JsonObject, the amount of types is small enough to avoid
- the combinatorial API explosion.
-
- doc/reference/json-glib-sections.txt | 22 ++-
- json-glib/json-array.c | 386 ++++++++++++++++++++++++++++++++++
- json-glib/json-types.h | 57 ++++--
- 3 files changed, 447 insertions(+), 18 deletions(-)
-
-commit 4819ca625d1b73270797f913495a3835297950c2
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Fri Apr 17 11:44:01 2009 +0100
-
- Update after the json_object_add_member() deprecation
-
- Since json_object_add_member() has been deprecated and it's using
- a gcc compiler attribute to loudly complain while compiling the
- library, we should restore the sanity and use json_object_set_member()
- instead.
-
- json-glib/json-gobject.c | 2 +-
- json-glib/json-parser.c | 6 +++---
- json-glib/tests/node-test.c | 2 +-
- json-glib/tests/object-test.c | 4 ++--
- tests/test-generator.c | 26 +++++++++++++-------------
- tests/test-serialize-complex.c | 4 ++--
- tests/test-serialize-full.c | 4 ++--
- 7 files changed, 24 insertions(+), 24 deletions(-)
-
-commit 5bb6ea91accb1d35f0ea4dae8f2b8f71bdbd134d
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Fri Apr 17 11:35:57 2009 +0100
-
- Deprecate add_member() and add set_member() and friends
-
- The add_member() method of JsonObject has wee bit weird semantics: if
- the member to be added already exists it prints a scary warning and
- returns - and yet it calls g_hash_table_replace() internally as if it
- overwrites the member.
-
- So, instead of changing semantics midway we can:
-
- - add a json_object_set_member() which adds a new member and
- overwrites existing members
-
- - deprecate json_object_add_member()
-
- While we're at it, we can add convenience wrappers for set_member()
- and get_member() that don't require us toying with nodes; luckily,
- since the amount of valid types we can add to a JsonObject is limited,
- this does not lead to a combinatorial API explosion.
-
- doc/reference/json-glib-sections.txt | 17 ++
- json-glib/json-object.c | 489 ++++++++++++++++++++++++++++++++--
- json-glib/json-types.h | 83 +++++--
- 3 files changed, 555 insertions(+), 34 deletions(-)
-
-commit 2a768cb5e553afc4a9ac0d9bf1dc36a183821983
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Thu Apr 16 19:57:11 2009 +0100
-
- [doap] Add GNOME extensions
-
- The GNOME project provides an extension to DOAP that allows the
- description of the maintainer/author of a project to specify the
- GNOME userid.
-
- json-glib.doap | 3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
-
-commit 17822292acb4d1c9b4f414ea0e4b858809d3b858
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Thu Apr 16 18:18:45 2009 +0100
-
- [doap] Add 0.6 releases
-
- Describe the releases of the 0.6 cycle.
-
- json-glib.doap | 18 ++++++++++++++++++
- 1 files changed, 18 insertions(+), 0 deletions(-)
-
-commit 470f3a4299153362deea260c806d9b87870af3de
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Thu Apr 16 18:03:31 2009 +0100
-
- Add JSON-GLib DOAP description
-
- Use DOAP (Description Of A Project) to describe JSON-GLib. The
- GNOME Cgit instance will pick up the DOAP file and update itself.
-
- json-glib.doap | 30 ++++++++++++++++++++++++++++++
- 1 files changed, 30 insertions(+), 0 deletions(-)
-
-commit 764a3f79fe0d8d13e24bd921a16a46f4603bcbf1
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Thu Apr 16 11:28:24 2009 +0100
-
- Add MAINTAINERS file
-
- Every GNOME project needs a MAINTAINERS file.
-
- MAINTAINERS | 3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
-
-commit f9956b4eadcfc9bbd5c0bc4b861ff782779e8a9a
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Tue Apr 14 00:09:35 2009 +0100
-
- [node] Do not overwrite when copying
-
- Bug 1353 - Copying JSON_NODE_VALUE nodes unreliable at best
-
- When copying a JsonNode to another we do an implicit memcpy using:
-
- *copy = *src
-
- Which works well enough with pointers, but makes a mess out of the
- value-based nodes.
-
- We should just copy the type of the original JsonNode and leave the
- rest to the switch() block.
-
- In order to catch potential regressions, we also need a more
- thorough test unit for the JsonNode copy operation.
-
- json-glib/json-node.c | 2 +-
- json-glib/tests/node-test.c | 45 +++++++++++++++++++++++++++++++++++++++++-
- 2 files changed, 44 insertions(+), 3 deletions(-)
-
-commit e2c65a75d68aafa26f2084928e732961e48beb99
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Mon Apr 13 23:46:52 2009 +0100
-
- [build] Improve the build system
-
- Clean up the configure.ac and Makefile.am files to use something
- that is not entirely made of FAIL.
-
- Also, use Shave to sanitize the libtool and compiler incantations
- and restore sanity to the build system.
-
- .gitignore | 5 ++
- autogen.sh | 9 ++++
- build/Makefile.am | 1 +
- build/autotools/Makefile.am | 3 +
- build/autotools/shave-libtool.in | 69 +++++++++++++++++++++++++++++
- build/autotools/shave.in | 79 +++++++++++++++++++++++++++++++++
- build/autotools/shave.m4 | 77 ++++++++++++++++++++++++++++++++
- configure.ac | 90 +++++++++++++++++++++----------------
- json-glib/Makefile.am | 89 +++++++++++++++++++------------------
- 9 files changed, 340 insertions(+), 82 deletions(-)
-
-commit 8080df63b4b4eae3b59d1214fc67f48149f49773
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Mon Apr 13 22:25:42 2009 +0100
-
- [parser] Prevent leaks on error codepaths
-
- Static analysis of the code showed some potential leaks inside
- error paths for JsonParser.
-
- Thanks to: Gordon Williams <gordon.williams@collabora.co.uk>
-
- json-glib/json-parser.c | 38 +++++++++++++++++++++++++++++++++-----
- 1 files changed, 33 insertions(+), 5 deletions(-)
-
-commit ca329a7d5c1185cdf15fb85891693eca30295de1
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Mon Apr 13 22:30:05 2009 +0100
-
- [docs] Show an example of assignment
-
- Since I decided to rant about assignments in JSON definitions,
- I also need to show what an assignment looks like.
-
- json-glib/json-parser.c | 17 ++++++++++++-----
- 1 files changed, 12 insertions(+), 5 deletions(-)
-
-commit b28d5894060aac1239e23665f42be3946b5450e7
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Mon Apr 13 22:29:36 2009 +0100
-
- Whitespace fixes
-
- Add more spaces and remove the ` from the error message.
-
- json-glib/json-parser.c | 18 ++++++++++++------
- 1 files changed, 12 insertions(+), 6 deletions(-)
-
-commit a19a51df9e95e36edf949e68581731bd31959081
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Mon Apr 13 22:08:21 2009 +0100
-
- [tests] Use 'static' when registering enum types
-
- Bug 1393 - Regression tests fails on OpenBSD
-
- When registering a GEnumClass we need to set the GEnumValue array
- as static const because g_enum_register_static() does not contain
- the word "static" just for fun.
-
- Reported by: Jasper <jasper@humppa.nl>
-
- tests/test-serialize-full.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit e583a9ec95f3d157091ec1e1a2ac8c493f0e23b2
-Author: Emmanuele Bassi <ebassi@linux.intel.com>
-Date: Mon Apr 13 22:04:10 2009 +0100
-
- [build] Use gnome-autogen script
-
- When setting up the build environment we should use the tools that
- GNOME provides instead of calling autoreconf.
-
- autogen.sh | 21 ++++++++-------------
- 1 files changed, 8 insertions(+), 13 deletions(-)
-
-commit 1d92c73bc05423872581d513f355783d4864edd5
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Fri Nov 28 17:24:15 2008 +0000
-
- Abstract the loading code into its own function
-
- The load_from_file() method must set the is_filename/filename fields
- of the JsonParserPrivate structure, so that the error handler can
- use them to print out the file, as well as the line in case of
- error.
-
- Since load_from_data() needs to unset those two fields, to avoid
- printing invalid/stale information, we need to have a generic "load"
- function that can be invoked by both load_from_data() and
- load_from_file(), and leave the JsonParser object set up to those
- two methods.
-
- Hence, a private json_parser_load() has been added, moving most of
- the code out of json_parser_load_from_data(). This function does not
- perform type checks and requires that the length of the memory buffer
- containing the JSON data stream is already a positive integer.
-
- json-glib/json-parser.c | 175 +++++++++++++++++++++++++++-------------------
- 1 files changed, 103 insertions(+), 72 deletions(-)
-
-commit 6e7958785096806b3ffa60a4937642d713a051f2
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Fri Nov 28 17:19:17 2008 +0000
-
- Display the filename inside error messages
-
- Instead of just relaying the line number both when parsing files
- and memory buffers, JsonParser should also print out the file name
- in case it is available.
-
- The error message format should be make-like and emacs-friendly,
- that is:
-
- filename:line_number: error message
-
- so that editors and development environments can parse the errors
- easily.
-
- This commit adds the filename string, and a boolean flag for checking
- whether the filename is set, inside the JsonParser private data
- structure. The boolean flag is checked inside the JsonScanner error
- handler when populating the GError or when printing the warning
- directly on stderr.
-
- json-glib/json-parser.c | 28 ++++++++++++++++++++++++++--
- 1 files changed, 26 insertions(+), 2 deletions(-)
-
-commit a5bea353dead0bd69f9664df86050fc829a2dcd5
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Mon Nov 3 16:01:03 2008 +0000
-
- Bump to 0.7.1 after stable branch
-
- configure.ac | 6 +++---
- 1 files changed, 3 insertions(+), 3 deletions(-)
-
-commit cf4c7360c69c0fe7587ec2456cd10839e1d0c1d6
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date: Mon Nov 3 15:51:21 2008 +0000
-
- Correctly terminate a string array
-
- When converting from a JsonArray of strings to a GStrv we need to
- add a NULL at the end of the GPtrArray we use to perform the
- conversion.
-
- This two lines patch fixes the issue.
-
- See bug 1203.
-
- Patch by: Kouhei Sutou <kou@cozmixng.org>
-
- Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
-
- json-glib/json-gobject.c | 4 +++-
- 1 files changed, 3 insertions(+), 1 deletions(-)
-
-commit 9b94bc7f99063f45a2725861369f36b53ec3d440
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Fri Jun 13 11:56:46 2008 +0100
-
- Sync up with the current stable release numbers
-
- configure.ac | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-commit 4dd392342003147d55eee98db50e11d344b287d4
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Fri Jun 13 11:27:50 2008 +0100
-
- Fix a variable shadowing
-
- json-glib/json-generator.c | 3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-commit a02a42ef47e61456747e511556097b903f07d68a
-Merge: fdbad1c bc5c722
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Fri Jun 13 11:23:08 2008 +0100
-
- Merge the fix for bug #965
-
- Merge branch 'bug-965'
-
-commit bc5c7225535ef447743ac59ecdba8c237549a108
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Fri Jun 13 11:22:35 2008 +0100
-
- Conditionally compile the test suite
-
- If the --disable-glibtest command line switch has been given to the
- configure script, the test suite should be disabled and not built.
-
- This commit disables recursion in the tests/ and json-glib/tests
- when the ENABLE_GLIB_TEST Makefile conditional has been set.
-
- Makefile.am | 6 +++++-
- configure.ac | 3 +++
- json-glib/Makefile.am | 2 ++
- 3 files changed, 10 insertions(+), 1 deletions(-)
-
-commit fdbad1cfd6ad6da9fab631f945ab8d2e85228fdf
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Fri Jun 13 11:06:15 2008 +0100
-
- Escape to special characters in JsonGenerator
-
- When using json-glib to write a blog system, some deserialized objects
- were not been interpreted by javascript because there were line breaks
- in generated strings.
-
- Patch from Lincoln de Sousa.
-
- Bug #958 - JsonGenerator does not escape special characters
-
- Signed-off-by: Emmanuele Bassi <ebassi@openedhand.com>
-
- json-glib/json-generator.c | 17 ++++++++++++++++-
- 1 files changed, 16 insertions(+), 1 deletions(-)
-
-commit 81c02ef3db6901655f8a7117e5e2675d37096daf
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sun May 18 11:56:04 2008 +0100
-
- Remove the include for json-scanner.h
-
- The json-scanner.h header file is not shipped with JSON-GLib anymore.
-
- json-glib/json-glib.h | 1 -
- 1 files changed, 0 insertions(+), 1 deletions(-)
-
-commit 9713843a4294b3e35a29125bf2bf1867a6443f27
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue May 6 11:48:25 2008 +0100
-
- Remove debian packaging
-
- debian/changelog | 5 ---
- debian/compat | 1 -
- debian/control | 61 ---------------------------------------
- debian/copyright | 27 -----------------
- debian/libjson-glib-dev.install | 3 --
- debian/libjson-glib-doc.install | 1 -
- debian/libjson-glib-doc.links | 1 -
- debian/libjson-glib0.install | 1 -
- debian/rules | 12 -------
- 9 files changed, 0 insertions(+), 112 deletions(-)
-
-commit d67000ab6c5ae6710f48f0517c98600af7cdaa0e
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon May 5 23:17:58 2008 +0100
-
- Update changelog for the debian packages
-
- debian/changelog | 3 +--
- 1 files changed, 1 insertions(+), 2 deletions(-)
-
-commit 0830873edc5203655f04868184cedb428b6d2d54
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon May 5 23:16:38 2008 +0100
-
- Update git ignore file
-
- .gitignore | 72 ++++++++++++++++++-----------------------------------------
- 1 files changed, 22 insertions(+), 50 deletions(-)
-
-commit eb1cd29f78ff52e3ec3b063716fb86b5f2c5ae4a
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon May 5 23:13:17 2008 +0100
-
- Remove Vala bindings
-
- Vala bindings are maintained out of tree, directly inside the Vala
- repository and official packages, so there's no point in duplicating
- the effort here.
-
- Makefile.am | 6 +--
- configure.ac | 15 -----
- contrib/Makefile.am | 6 --
- contrib/json-glib-1.0.deps | 1 -
- contrib/json-glib-1.0.vapi | 139 --------------------------------------------
- contrib/json-object.vala | 46 ---------------
- contrib/json-test.vala | 122 --------------------------------------
- 7 files changed, 1 insertions(+), 334 deletions(-)
-
-commit 094acd1663210e803a8dab496f6de8066ef11f44
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon May 5 12:44:29 2008 +0100
-
- Bump to 0.6.1
-
- configure.ac | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit a725bac9a287883f2d4f32130c7faedb121f754b
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon May 5 12:39:01 2008 +0100
-
- Bump to 0.6.0
-
- configure.ac | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-commit cd598180b12a212525427a8cddf11bc0ed4f1836
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon May 5 12:38:50 2008 +0100
-
- Update NEWS for 0.6.0
-
- NEWS | 5 +++++
- 1 files changed, 5 insertions(+), 0 deletions(-)
-
-commit 26479ec3c342889a2ee822bdf73f2e5fb6e170d7
-Merge: 8b5b5f6 7ff9134
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon May 5 12:35:16 2008 +0100
-
- Add debian packaging to the master branch
-
- Merge branch 'debian-packaging'
-
-commit 8b5b5f6a4fdfb219897d75893889014f44ba4bb0
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon May 5 12:34:35 2008 +0100
-
- Add json-scanner.h to the EXTRA_DIST content
-
- Fix a distcheck error because json-scanner.h is not packaged inside
- the tarball.
-
- json-glib/Makefile.am | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-commit 705a73eb3dfa2323ec86c1d299b567a15acde7a6
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon May 5 12:24:22 2008 +0100
-
- Style fixes for the configure output
-
- configure.ac | 10 +++++-----
- 1 files changed, 5 insertions(+), 5 deletions(-)
-
-commit e017d392a281594e350a8d74c142cbe014753d7e
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon May 5 12:24:00 2008 +0100
-
- Fix typo in the libtool flags arguments
-
- The correct syntax for passing the versioning information to
- libtool is '-version-info', not '-versio-info'.
-
- configure.ac | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit 2051be2f7185733bbc62d10ec096538fec924638
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon May 5 12:22:59 2008 +0100
-
- Add the Bugzilla URL to AC_INIT
-
- JSON-GLib has a bugzilla product on bugzilla.openedhand.com. By adding
- the URL to the configure.ac template, the configure script will print
- it when invoked with the --help command line switch.
-
- configure.ac | 7 ++++++-
- 1 files changed, 6 insertions(+), 1 deletions(-)
-
-commit 4cb8a9078172c5f56ac5d56417b8656a7053df4a
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon May 5 12:21:40 2008 +0100
-
- Update autogen.sh
-
- Make autogen.sh test for the location of the current directory, and
- warn if the checkout is not complete.
-
- If gtk-doc is not installed (for instance, on an embedded minimal
- set up), do not fail and just provide a stub gtk-doc.make.
-
- autogen.sh | 28 +++++++++++++++++++++++++---
- 1 files changed, 25 insertions(+), 3 deletions(-)
-
-commit 1571fcddd6f2a245f4bb6ad64f82d24fc9c4cec0
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Thu May 1 23:00:28 2008 +0100
-
- Test the deserialization of arrays of strings
-
- Arrays of strings are handled automatically by the GObject
- deserialization and serialization code. We need to test that
- they are correctly parsed and assigned to the instance.
-
- tests/test-serialize-full.c | 29 +++++++++++++++++++++++++++--
- 1 files changed, 27 insertions(+), 2 deletions(-)
-
-commit 4c11d0969a44bb70acf6463ef6305999ff443be2
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Thu May 1 22:58:55 2008 +0100
-
- Use an array to hold the strings in a vector
-
- Instead of building a GString by concatenating every string inside
- an array to deserialize the array into a string vector property,
- use a GPtrArray. This is far more efficient (no reallocations are
- necessary, as we know the size of the array) and safe (the separator
- used to build the string buffer and then split it might exist in
- one of the original strings).
-
- json-glib/json-gobject.c | 15 +++++----------
- 1 files changed, 5 insertions(+), 10 deletions(-)
-
-commit 7ff91344d21b0c26d3a3a2834dbf09286cb1f904
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Thu May 1 16:08:15 2008 +0100
-
- Remove control re-generation rule
-
- We don't have a template control, so there's not need to clean it
- up and regenerate it.
-
- This is why copying existing debian/rules templates is not a good
- idea unless you read the Debian packaging rules.
-
- debian/rules | 3 ---
- 1 files changed, 0 insertions(+), 3 deletions(-)
-
-commit e75321e64f17d69beac0c2e131572fe081680b08
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Thu May 1 15:58:31 2008 +0100
-
- Add debian packaging files
-
- The debian packaging files are obviously needed to generate Debian
- packages for JSON-GLib.
-
- debian/changelog | 6 ++++
- debian/compat | 1 +
- debian/control | 61 +++++++++++++++++++++++++++++++++++++++
- debian/copyright | 27 +++++++++++++++++
- debian/libjson-glib-dev.install | 3 ++
- debian/libjson-glib-doc.install | 1 +
- debian/libjson-glib-doc.links | 1 +
- debian/libjson-glib0.install | 1 +
- debian/rules | 15 +++++++++
- 9 files changed, 116 insertions(+), 0 deletions(-)
-
-commit 30f9d47ecf43a17610cd9c0074ff832bfa37593c
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Thu Apr 24 15:47:11 2008 +0100
-
- Test the equality of the serialize string length
-
- tests/test-serialize-simple.c | 3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
-
-commit 07c2b916dadb4b40fbaabf49f0e80941993cc2cf
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Thu Apr 24 15:02:33 2008 +0100
-
- Export only the public symbols
-
- All the symbols starting with an underscore or with something that
- is not "json" are to considered private, and thus are not global
- to the shared object.
-
- json-glib/Makefile.am | 6 +++++-
- 1 files changed, 5 insertions(+), 1 deletions(-)
-
-commit 179899e5da801fda0981a1d446ba420efd4021c1
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Thu Apr 24 14:55:51 2008 +0100
-
- Update git ignore file
-
- .gitignore | 4 ++++
- 1 files changed, 4 insertions(+), 0 deletions(-)
-
-commit b0daf7e3a2529dd9950d77a96a10233d68778f32
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Thu Apr 24 14:54:05 2008 +0100
-
- Include the newly added json-enum-types.h header
-
- When including json-glib/json-glib.h we get everything json-glib
- expose as a public symbol.
-
- json-glib/json-glib.h | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-commit c7a7f429565195fe7aba56a254abf3637cf6fa8a
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Thu Apr 24 14:52:54 2008 +0100
-
- Ignore the enumeration types header and the stamp file
-
- We don't need gtk-doc to look at those files; the enumeration
- types are already documented, and the get_type() function and
- macro are implied.
-
- doc/reference/Makefile.am | 2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
-
-commit 053bf43c813799c5f59e9241217fe31c560b5885
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Thu Apr 24 14:52:07 2008 +0100
-
- Install the autogenerated enum types header
-
- The enumeration GTypes are public and meant to be used by
- language bindings and other users of the library.
-
- json-glib/Makefile.am | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-commit 5977d95866cd9763e97a47d6c9909e6a2fbf0ed1
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Thu Apr 24 14:50:34 2008 +0100
-
- Autogenerate the GTypes for the enumerations
-
- json-glib/Makefile.am | 70 +++++++++++++++++++++++++++++++++----------------
- 1 files changed, 47 insertions(+), 23 deletions(-)
-
-commit 356413e8840a614914b84f40b1d8476ba036ded4
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Thu Apr 24 14:49:45 2008 +0100
-
- Add enumeration types templates for glib-mkenums
-
- The templates for glib-mkenums keep the Makefile.am sane and
- editable by mere mortals.
-
- json-glib/json-enum-types.c.in | 31 +++++++++++++++++++++++++++++++
- json-glib/json-enum-types.h.in | 26 ++++++++++++++++++++++++++
- 2 files changed, 57 insertions(+), 0 deletions(-)
-
-commit 7d57ffc03783defbfeb26e21a14e3df32555c29d
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon Apr 21 10:57:05 2008 +0100
-
- Update git ignore file
-
- .gitignore | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-commit 7d259e03b9a556d155ade87417ab26830c3e7684
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sun Apr 20 22:43:32 2008 +0100
-
- Validate the variable name in the assignment test
-
- Make sure that not only we report that there is an assignment
- and that the returned variable is not NULL, but also that the
- returned variable name is correct.
-
- tests/test-parser.c | 16 ++++++++++------
- 1 files changed, 10 insertions(+), 6 deletions(-)
-
-commit 6899bca0dcf72dac0cad9dcf1a7cd10159d471e5
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sat Apr 19 23:22:29 2008 +0100
-
- Add more cases for the nested array parsing unit
-
- Try more combinations of elements inside an array with a nested
- object.
-
- tests/test-parser.c | 2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
-
-commit 81addb645ac5fad28619bb660624902abe981377
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sat Apr 19 23:18:54 2008 +0100
-
- Add verbose messages
-
- The unicode escaping unit should have the same verbosity as the
- other units.
-
- tests/test-parser.c | 4 ++++
- 1 files changed, 4 insertions(+), 0 deletions(-)
-
-commit 22a0db88c14895f98db76bca3cb078fbd3a2b07d
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sat Apr 19 23:09:32 2008 +0100
-
- Whitespace fixes in the licensing notice
-
- json-glib/json-scanner.h | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit 676592cef006de16d966a1ca0469ccd0556f0e4b
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sat Apr 19 23:09:20 2008 +0100
-
- Documentation fixes in JsonNode
-
- json-glib/json-node.c | 6 +++---
- 1 files changed, 3 insertions(+), 3 deletions(-)
-
-commit bf2249a1855b6bebe0b3528b4d5321a1ebe4b9e7
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sat Apr 19 23:08:20 2008 +0100
-
- Do not copy node data if it's not there
-
- If the source JsonNode does not contain data yet, do not try
- and copy it.
-
- json-glib/json-node.c | 17 +++++++++++++----
- 1 files changed, 13 insertions(+), 4 deletions(-)
-
-commit c191b2f8a8159457db3333390be10d6c7c0d4336
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sat Apr 19 23:05:03 2008 +0100
-
- Ignore json-scanner.h and its types
-
- When generating the documentation, ignore the JsonScanner header
- as it will not be installed.
-
- Also, we moved JsonTokenType from json-parser.h to json-scanner.h,
- where it belongs, so we can remove it from the (private) subsection
- of the json-parser section.
-
- doc/reference/Makefile.am | 7 ++++++-
- doc/reference/json-glib-sections.txt | 1 -
- 2 files changed, 6 insertions(+), 2 deletions(-)
-
-commit ffbd9063556a061ba3e7e4223b924ae4766adfbd
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sat Apr 19 23:01:26 2008 +0100
-
- Do not install the JsonScanner header
-
- The JsonScanner tokenizer is an internal copy of GScanner: it should
- not be used outside JSON-GLib - JsonParser is the public API for
- parsing JSON.
-
- json-glib/Makefile.am | 5 +++--
- 1 files changed, 3 insertions(+), 2 deletions(-)
-
-commit df2a310a6ed0a3b32415f53076ff4c053b3fd925
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sat Apr 19 22:59:28 2008 +0100
-
- Fix the external gtk-doc references
-
- Gtk-doc can try and resolve the external symbols using the data
- currently installed in other locations.
-
- Since we are using GLib and GObject it would be nice to backlink
- to them inside our API reference.
-
- doc/reference/Makefile.am | 7 ++++---
- 1 files changed, 4 insertions(+), 3 deletions(-)
-
-commit 6a3d8266efe505b29555db21658c241eba20fe2d
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sat Apr 19 22:57:05 2008 +0100
-
- Add GLIB_PREFIX variable
-
- The gtk-doc-fixref script needs to know the location of the
- libraries documentation; in order to get it, we can ask the
- pkg-config file of the library for its prefix.
-
- configure.ac | 5 +++++
- 1 files changed, 5 insertions(+), 0 deletions(-)
-
-commit 4e5ec69cce8ab27f965985ba69ea11224ae39ffd
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sat Apr 19 22:28:21 2008 +0100
-
- Update the description and dependencies
-
- README | 7 ++++++-
- 1 files changed, 6 insertions(+), 1 deletions(-)
-
-commit f65a5d5e30a1242a899149b732d1139891876014
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sat Apr 19 18:05:45 2008 +0100
-
- Bump to 0.5.1
-
- configure.ac | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit ab0da7c61bde715e99dd16027b198c7760b30922
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sat Apr 19 18:01:57 2008 +0100
-
- Update for 0.5.0 release
-
- NEWS | 14 ++++++++++++++
- 1 files changed, 14 insertions(+), 0 deletions(-)
-
-commit 203927c71231cf6cec6d88161211702b7105df2d
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sat Apr 19 17:20:50 2008 +0100
-
- Fix ignore rule
-
- .gitignore | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit 76921ac27534aa0a25b39790ce4d99cf6e19a20c
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sat Apr 19 17:19:30 2008 +0100
-
- Verify the correct handling of Unicode escaping
-
- Check that JsonParser correctly handles Unicode characters escaped
- using the \uXXXX notation, as per RFC.
-
- tests/test-parser.c | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 67 insertions(+), 0 deletions(-)
-
-commit 379a2fe972c6e7436be9f345fe018bf4fe575354
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sat Apr 19 17:16:28 2008 +0100
-
- Add support for parsing \uXXXX into Unicode
-
- JsonScanner was forked from GScanner in order to support the
- JSON-specific Unicode escaping.
-
- JsonScanner now intercepts the \u escape character and, if it
- is followed by a hexadecimal value, it will retrieve the
- Unicode character encoded in the following 4 values and insert
- the character itself in the buffer.
-
- This allows full compatibility with JSON.
-
- json-glib/json-scanner.c | 56 +++++++++++++++++++++++++++++++++++++++++-----
- 1 files changed, 50 insertions(+), 6 deletions(-)
-
-commit 9429ecaa88cdb6705189b6970481911f11339ff6
-Merge: d313aa1 445a3f7
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sat Apr 19 15:33:15 2008 +0100
-
- Merge master branch back for testing JsonScanner
-
- Merge branch 'master' into json-scanner
-
-commit 445a3f71d046abed4ff99e0ab4cd9cc8e047f5be
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sat Apr 12 13:21:21 2008 +0100
-
- Allow null nodes to return a value without a warning
-
- Value nodes might contain 'null' as a valid value, so the fast accessors
- should not barf out when encountering a JSON_NODE_NULL instead of the
- expected JSON_NODE_VALUE.
-
- json-glib/json-node.c | 21 +++++++++++++++------
- 1 files changed, 15 insertions(+), 6 deletions(-)
-
-commit 4e826d9f209a8f68023bae54c91b2bbbb202a54a
-Merge: 98b6e5e 2a579b5
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Thu Apr 3 16:32:53 2008 +0100
-
- Merge branch 'test-framework'
-
-commit 2a579b51f38df1c009201703279a3e6cb4f57eea
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Thu Apr 3 16:31:48 2008 +0100
-
- Wrap the test report information section inside an info element
-
- Makefile.decl | 6 ++++--
- 1 files changed, 4 insertions(+), 2 deletions(-)
-
-commit 8e2e539d02b84e0fe452174f3dfab06f35a4e6a1
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sun Mar 9 20:52:29 2008 +0000
-
- Add value testing to the JsonNode unit
-
- Test the GValue API for storing fundamental types into a JsonNode.
-
- json-glib/tests/node-test.c | 29 +++++++++++++++++++++++++++++
- 1 files changed, 29 insertions(+), 0 deletions(-)
-
-commit 646b90e79d3424a332064a6a1e9fc62d1ce99386
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Wed Mar 5 17:43:06 2008 +0000
-
- Add package and version information to the test-report XML
-
- Makefile.decl | 2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
-
-commit b8943381b0df44d9e6e21ae8321df2376c8458a8
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Wed Mar 5 16:03:24 2008 +0000
-
- Add JsonObject test unit
-
- Use a similar test unit as the JsonArray one, testing creation, empty
- objects, addition and removal of members.
-
- .gitignore | 2 +
- json-glib/tests/Makefile.am | 17 +++++++----
- json-glib/tests/object-test.c | 62 +++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 75 insertions(+), 6 deletions(-)
-
-commit 7eab612d9b200aef197fa1dffa4f89b936c76b1f
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Wed Mar 5 15:46:41 2008 +0000
-
- Add element removal unit to the Array test
-
- Remove the json_array_remove_element() call from the add-element test unit
- and set up a separate test case for the element removal. This keeps the
- test cases clean.
-
- json-glib/tests/array-test.c | 12 ++++++++++++
- 1 files changed, 12 insertions(+), 0 deletions(-)
-
-commit 6aa1ddb891594e0f567bc3ebeb3bf5d3ab8e7e0c
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Mar 4 13:07:08 2008 +0000
-
- Clean the test-report XML output, if found
-
- Makefile.am | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit 6eee8282d327614380854d572b2680f40b2faaf5
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Mar 4 12:37:52 2008 +0000
-
- Update gitignore file
-
- .gitignore | 18 ++++++++----------
- 1 files changed, 8 insertions(+), 10 deletions(-)
-
-commit d5cb48681c68c3d53d8ec331ef37fb60820a9421
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Mar 4 12:30:48 2008 +0000
-
- Build test-serialize-full
-
- Complete the porting of the old test suite into the new, GTest based one.
-
- The new test suite is automatically run with make test; make test-report
- will generate an XML report of the test.
-
- The API coverage for the data types is part of the json-glib/tests
- directory and will be expanded later.
-
- tests/Makefile.am | 8 ++++-
- tests/test-serialize-full.c | 56 ++++++++++++++++++++++++++----------------
- 2 files changed, 41 insertions(+), 23 deletions(-)
-
-commit 1f6307ea2d7dc6ebe279d08b9f95f3074fbdd462
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Mar 4 12:18:19 2008 +0000
-
- Rename test-08 into test-serialize-full
-
- The test-08 case was the last numbered test unit.
-
- tests/test-08.c | 337 -------------------------------------------
- tests/test-serialize-full.c | 337 +++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 337 insertions(+), 337 deletions(-)
-
-commit cdb194e8d64343e8bcb00e046c5fbeefd677b02a
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Mar 4 12:17:29 2008 +0000
-
- Rename test-07 into test-serialize-complex
-
- The new test-serialize-complex adds a test unit for the JsonSerializable
- interface; the TestObject implements the serialization interface to
- create a JSON data type from a boxed GType.
-
- tests/Makefile.am | 4 +
- tests/test-07.c | 252 --------------------------------------
- tests/test-serialize-complex.c | 261 ++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 265 insertions(+), 252 deletions(-)
-
-commit 4c766a029d8f6a2d06b749527020fd93fc4a4f99
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Mar 4 12:12:37 2008 +0000
-
- Fix compilation of test-serialize-simple and add it to the test suite
-
- The new test-serialize-simple tests the GObject integration for
- serializing simple GObjects into JSON.
-
- tests/Makefile.am | 4 ++++
- tests/test-serialize-simple.c | 5 +++--
- 2 files changed, 7 insertions(+), 2 deletions(-)
-
-commit 325185c5955f8942ddf8d55a9e3b5d6a8c2723d1
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Mar 4 12:10:23 2008 +0000
-
- Rename test-06 to test-serialize-simple
-
- tests/test-06.c | 162 -----------------------------------------
- tests/test-serialize-simple.c | 162 +++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 162 insertions(+), 162 deletions(-)
-
-commit cbea4698c1b7284d8004fff659a7354fb3af29ee
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Mar 4 12:09:44 2008 +0000
-
- Move test-06 to GTest API
-
- First pass into replacing the last three numbered tests into named
- tests.
-
- tests/test-06.c | 28 ++++++++++++++++++----------
- 1 files changed, 18 insertions(+), 10 deletions(-)
-
-commit 5cc1d3d6061830de403ccbc10c2414f29cd1cf82
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Mar 4 10:52:51 2008 +0000
-
- Coalesce JsonGenerator test cases into a single test unit
-
- Like we did for JsonParser, JsonGenerator has now a test unit checking the
- output of a DOM built and dumped into a buffer.
-
- For the arrays is quite easy to verify that the output is correct;
- unfortunately, JsonObject does not guarantee any ordering on the members,
- with it being an associative array. Hence, for the object test case we
- just compare the length of the output.
-
- tests/Makefile.am | 4 +
- tests/test-04.c | 238 ----------------------------
- tests/test-05.c | 227 ---------------------------
- tests/test-generator.c | 399 ++++++++++++++++++++++++++++++++++++++++++++++++
- 4 files changed, 403 insertions(+), 465 deletions(-)
-
-commit e100c69a4fca046cbeb6db3fc8ba49160796d87c
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Mar 4 10:44:56 2008 +0000
-
- Append to EXTRA_DIST, since it was defined elsewhere
-
- contrib/Makefile.am | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit 98b6e5e2f151c4ee800754675bf01e585fee850b
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Mar 4 07:05:01 2008 +0000
-
- Update the README
-
- README | 36 ++++++++++++++++++++++++++++++++++++
- 1 files changed, 36 insertions(+), 0 deletions(-)
-
-commit 1a078c783a5a03b3367ce59eb25248dd6e23b5c6
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Mar 4 07:05:01 2008 +0000
-
- Update the README
-
- README | 36 ++++++++++++++++++++++++++++++++++++
- 1 files changed, 36 insertions(+), 0 deletions(-)
-
-commit 44891ea1040ceae95a994b646174696de7779ea1
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Mar 4 06:44:59 2008 +0000
-
- Update gitignore file
-
- .gitignore | 11 +++++------
- 1 files changed, 5 insertions(+), 6 deletions(-)
-
-commit 3ea189acf52ea39653c6505c136f1f45a660a24c
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Mar 4 06:34:11 2008 +0000
-
- Add validation to the simple object test values
-
- Like for the simple arrays test case, add validation of the values types
- for the members of the simple objects test case.
-
- tests/test-parser.c | 31 ++++++++++++++++++++++++-------
- 1 files changed, 24 insertions(+), 7 deletions(-)
-
-commit 40b3e9330f482e002aea90b0c1a4b9db2adffff0
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Mar 4 06:27:24 2008 +0000
-
- Add validation of the simple array test values
-
- Instead of just checking that the array contains something, the simple-array
- test case should validate the contents of the array.
-
- The test now uses a struct defining:
- - the test array
- - the size of the array
- - an element to check
- - the type of the node for the element
- - the type of the value for the node
-
- All the fields are checked for a match. This makes the simple arrays test
- case more reliable.
-
- tests/test-parser.c | 40 +++++++++++++++++++++++++++++++---------
- 1 files changed, 31 insertions(+), 9 deletions(-)
-
-commit 7e6dab14302b94979672acf81eec8710ea95e288
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sun Mar 2 17:44:27 2008 +0000
-
- Add array-test to the JSON-GLib types unit tests
-
- This simple unit will test the JsonArray API, as part of the coverage
- test for the JSON-GLib types.
-
- json-glib/tests/Makefile.am | 10 ++++++--
- json-glib/tests/array-test.c | 50 ++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 57 insertions(+), 3 deletions(-)
-
-commit 441ee88a6e024fc5ab2cf8355adad1fecc276088
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sun Mar 2 15:09:05 2008 +0000
-
- Coalesce test-03 into test-parser
-
- The third test under the tests/ directory was the last JsonParser test,
- dealing with object parsing. Now, test-parser is complete and contains
- all the JsonParser test cases. It still needs further testing to
- verify the DOM created by the parser object.
-
- tests/test-02.c | 225 ---------------------------------------------------
- tests/test-03.c | 214 ------------------------------------------------
- tests/test-parser.c | 167 ++++++++++++++++++++++++++++++++++++--
- 3 files changed, 161 insertions(+), 445 deletions(-)
-
-commit 71db86d84a5544d603b03721891e0ad14f92178d
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sun Mar 2 14:58:58 2008 +0000
-
- Update the tests build to be a testing unit
-
- Instead of having stand alone tests, use the GTest framework and start
- coalescing multiple test cases into one.
-
- The tests directory will be used for JsonParser, JsonGenerator and
- the JSON-GObject integration API, by reusing the previous test cases
- and remolding them into a more interesting test framework.
-
- tests/Makefile.am | 39 +++++----------------------------------
- 1 files changed, 5 insertions(+), 34 deletions(-)
-
-commit 1e6aa16a2a6432cf96d0a86d4650c13e63c67e43
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sun Mar 2 14:56:56 2008 +0000
-
- Remove old, empty string test
-
- tests/test-01.c | 57 -------------------------------------------------------
- 1 files changed, 0 insertions(+), 57 deletions(-)
-
-commit 989c807fd61cc65c1e4058c5d0794ae2fe438ba1
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sun Mar 2 14:56:28 2008 +0000
-
- Rename JsonParser test, and coaelesce basic parser and array tests
-
- Instead of using a single test for empty strings and another test for
- arrays, merge the two into a single test unit, using the GTest API.
-
- The JsonObject parsing test will also be merged later.
-
- tests/test-parser.c | 262 +++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 262 insertions(+), 0 deletions(-)
-
-commit f1e1c0e7796903abb725e8216fc54f53573ecdc9
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sun Mar 2 10:51:09 2008 +0000
-
- Port the empty string test to the GLib testing framework
-
- The old test-01 program tested the JsonParser with an empty string; instead
- of relying on the exit code and error messages on screen, it shoul use the
- new GTest API.
-
- This is the first test of the old test suite to be ported to the new test
- framework API.
-
- tests/test-01.c | 44 +++++++++++++++++++++++++++++++++++---------
- 1 files changed, 35 insertions(+), 9 deletions(-)
-
-commit cb5b3d5fa6244b0d20258203bd9df7e3148af57b
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sun Mar 2 10:50:17 2008 +0000
-
- Add a JsonNode copy test unit
-
- The test unit copies a NULL JsonNode and checks that the copy and the
- original nodes are equivalent.
-
- json-glib/tests/node-test.c | 15 +++++++++++++++
- 1 files changed, 15 insertions(+), 0 deletions(-)
-
-commit 40c757835e329fe01f8f22aba74d2e47f3a5e55c
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sun Mar 2 10:49:52 2008 +0000
-
- Update Makefile templates to include the testing framework
-
- contrib/Makefile.am | 2 ++
- doc/Makefile.am | 2 ++
- doc/reference/Makefile.am | 1 +
- tests/Makefile.am | 38 ++++++++++++++++++++++++++++++++------
- 4 files changed, 37 insertions(+), 6 deletions(-)
-
-commit 75939c2b43430583150b18f0a8e82e3d60a4f4f1
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sat Mar 1 19:35:47 2008 +0000
-
- Update gitignore file
-
- .gitignore | 4 ++++
- 1 files changed, 4 insertions(+), 0 deletions(-)
-
-commit e4be0d896359cc1d0ba99dd81a66855389ebd5df
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sat Mar 1 19:30:41 2008 +0000
-
- Add initial test suite support using GLib's new testing framework
-
- GLib 2.15 added a new test unit framework to the GLib API. It allows
- integrating unit testing into GLib and GObject based libraries and
- applications.
-
- It requires a specially crafter Makefile holding a set of declarations,
- which must be included into the project own Makefile templates; then
- it is possible to drop tests inside a subdirectory, which will be built
- after the library or application, and executed upon "make check".
-
- At the moment, there is a simple test for the JsonNode API, with a
- single unit for the "null" node type.
-
- Makefile.am | 4 ++-
- Makefile.decl | 57 +++++++++++++++++++++++++++++++++++++++++++
- configure.ac | 3 +-
- json-glib/Makefile.am | 9 ++++++-
- json-glib/tests/Makefile.am | 15 +++++++++++
- json-glib/tests/node-test.c | 27 ++++++++++++++++++++
- 6 files changed, 112 insertions(+), 3 deletions(-)
-
-commit d313aa1e9e472834252ec173c0409eba11ebcff9
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Fri Feb 29 16:40:33 2008 +0000
-
- Update gitignore
-
- .gitignore | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-commit 8a2bb3c4400b9df6cd864eb29920a7767e8170c7
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Fri Feb 29 16:37:18 2008 +0000
-
- Sanitize JsonScanner code
-
- Use a closure instead of (*eugh*) an array of gpointers and casting
- to void*.
-
- Also, use the Slice allocator for the ScannerKey structs.
-
- json-glib/json-scanner.c | 42 ++++++++++++++++++++----------------------
- 1 files changed, 20 insertions(+), 22 deletions(-)
-
-commit 42f7800c5b1c30ff187fc824a9bb39565033488e
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Fri Feb 29 16:01:48 2008 +0000
-
- Update JsonParser to fix compilation
-
- JsonParser now uses JsonScanner, the internal copy of GScanner.
-
- json-glib/json-parser.c | 33 +++++++++++++++++----------------
- 1 files changed, 17 insertions(+), 16 deletions(-)
-
-commit 314f24fd0c8c6b024c93b1d8d275f9049ef22951
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Fri Feb 29 16:00:55 2008 +0000
-
- Completely internalize the JsonScanner
-
- Rename all the API and the data types to the Json namespace, so we can
- use the internal copy instead of GScanner.
-
- json-glib/json-scanner.c | 639 +++++++++++++++++++++++-----------------------
- json-glib/json-scanner.h | 6 +-
- 2 files changed, 328 insertions(+), 317 deletions(-)
-
-commit 65708000ab02d0a4080b662bb409ac4b79101488
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Fri Feb 29 16:00:30 2008 +0000
-
- Add JsonScanner to the build
-
- json-glib/Makefile.am | 2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
-
-commit 8e27ac27a9b22361296564d740301c2c49b387f8
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Fri Feb 29 15:59:57 2008 +0000
-
- Bump up autotools requirements
-
- Do not require an ancient version of automake, and settle for one slightly
- less ancient.
-
- configure.ac | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-commit a475b0896d5760c893a099c9411f9790e5c492ba
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Fri Feb 29 12:24:14 2008 +0000
-
- Update the JsonScanner default configuration
-
- json-glib/json-scanner.c | 84 +++++++++++++++++++--------------------------
- 1 files changed, 36 insertions(+), 48 deletions(-)
-
-commit 10ac1734b326700257ef318d9a2000c538b5cd38
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Fri Feb 29 12:22:02 2008 +0000
-
- Use JsonScanner API into JsonParser
-
- Rename the GScanner function calls into JsonScanner, to see what we
- actually need to have public.
-
- Also, remove the configuration: JsonScanner will provide us with one.
-
- json-glib/json-parser.c | 127 ++++++++++++++++------------------------------
- 1 files changed, 44 insertions(+), 83 deletions(-)
-
-commit 4a4095c360fc29f766e8baba3529a78b6d736b19
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Fri Feb 29 12:21:20 2008 +0000
-
- Add json-scanner.h to the exported headers
-
- json-glib/json-glib.h | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-commit 469a22e4f1fac6b4fd8110823322b7fbfa9b6552
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Fri Feb 29 12:13:54 2008 +0000
-
- Include JsonScanner into JsonParser
-
- json-glib/json-parser.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-commit 8537549a5a65f3111a4436b69499664c167b1534
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Fri Feb 29 12:10:16 2008 +0000
-
- Move JsonTokenType into JsonScanner
-
- The GTokenType extension enumeration belongs with the tokenizer.
-
- json-glib/json-parser.h | 15 ++-------------
- 1 files changed, 2 insertions(+), 13 deletions(-)
-
-commit 1ddd45d36a3a25aa86a95c60e0c29e83687971bd
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Fri Feb 29 12:06:19 2008 +0000
-
- Copy GScanner into JSON-GLib as JsonScanner
-
- Instead of writing our tokenizer we can fork GScanner and make a
- specialized version for JSON (as per RFC), luckily the licenses
- are compatible (LGPLv2.1 with "any later" clause).
-
- GScanner does not support Unicode "\uNNNN" escaping and we need to
- ensure UTF-8 strings as well.
-
- The API will mostly be the same, but the generic bits not used by
- JsonParser will be hidden: this is, after all, a specialized
- tokenizer.
-
- json-glib/json-scanner.c | 1809 ++++++++++++++++++++++++++++++++++++++++++++++
- json-glib/json-scanner.h | 167 +++++
- 2 files changed, 1976 insertions(+), 0 deletions(-)
-
-commit 3a9ec8f1ca9bf525875c3fbfaf1ab2f3c708bf36
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Jan 29 19:13:15 2008 +0000
-
- Update the JSON-GLib Vala bindings
-
- 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.
-
- contrib/json-glib-1.0.deps | 1 +
- contrib/json-glib-1.0.vapi | 14 +++++-----
- contrib/json-test.vala | 62 +++++++++++++++++++++----------------------
- 3 files changed, 38 insertions(+), 39 deletions(-)
-
-commit e8a59f086f43e5abd5414033ea8c9a886eb112ed
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Jan 29 19:12:35 2008 +0000
-
- Remove % from the pkg-config file rule
-
- Rules starting with '%' are a make-isms, and automake 1.10 complains a
- lot about them.
-
- Makefile.am | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit b6963328f3d8d8e85ca0b21f9bdeca77b5611019
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Jan 29 18:19:16 2008 +0000
-
- Remove json_parser_peek_root from the gtk-doc sections
-
- The json_parser_peek_root() function has been removed, and so we do not
- its symbol in the json-glib-sections.txt file anymore.
-
- doc/reference/json-glib-sections.txt | 1 -
- 1 files changed, 0 insertions(+), 1 deletions(-)
-
-commit 48079c2f580171235eecc298b0193022a67e0b79
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Jan 29 18:18:01 2008 +0000
-
- Update after the JsonParser::get_root change
-
- Do not free the root node returned by the get_root() method in the
- JSON-GObject API and in the JsonParser tests.
-
- json-glib/json-gobject.c | 4 +---
- tests/test-01.c | 2 +-
- tests/test-02.c | 2 --
- tests/test-03.c | 2 --
- 4 files changed, 2 insertions(+), 8 deletions(-)
-
-commit a86a300fdc256ad4270881cf9b7b97367cd87c87
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Jan 29 18:14:49 2008 +0000
-
- Revert JsonParser::get_root semantics
-
- 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.
-
- json-glib/json-parser.c | 26 ++------------------------
- json-glib/json-parser.h | 1 -
- 2 files changed, 2 insertions(+), 25 deletions(-)
-
-commit 9a167068edcde51b50a15bab4ee8623994eb9c04
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon Jan 28 11:02:30 2008 +0000
-
- Use the normalized member name in has_member
-
- The json_object_has_member() used the passed in member name, instead of
- the correctly normalized one.
-
- json-glib/json-object.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit f2f08d282ac6bc69ba9029d065979b1332abd5a5
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sun Jan 27 21:26:51 2008 +0000
-
- Extract the parser state clearing into its own function
-
- 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.
-
- json-glib/json-parser.c | 51 +++++++++++++++++++++++++++-------------------
- 1 files changed, 30 insertions(+), 21 deletions(-)
-
-commit 629d4a54913c578d7b612f10d9b04addc8e0c7fb
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Dec 25 21:44:03 2007 +0000
-
- Wrap config.h include with conditionals
-
- Including the autotools generated config.h should always be conditional
- on the HAVE_CONFIG_H definitions.
-
- json-glib/json-array.c | 2 ++
- json-glib/json-generator.c | 2 ++
- json-glib/json-gobject.c | 2 ++
- json-glib/json-node.c | 3 +++
- json-glib/json-object.c | 2 ++
- 5 files changed, 11 insertions(+), 0 deletions(-)
-
-commit e172e9ccec88999e7d8433df08d8d92568537cf7
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Dec 25 21:41:44 2007 +0000
-
- Kill off a few indirections
-
- Use an intermediary pointer to avoid a lot of pointer dereferences
-
- json-glib/json-parser.c | 25 ++++++++++++++-----------
- 1 files changed, 14 insertions(+), 11 deletions(-)
-
-commit 61a6a144a2182946be4fb975d05e1c26d814c323
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Dec 25 11:55:36 2007 +0000
-
- Some miscellaneous fixes to the Vala bindings
-
- 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.
-
- contrib/json-glib-1.0.vapi | 21 ++++++++++--
- contrib/json-object.vala | 10 ++++-
- contrib/json-test.vala | 81 ++++++++++++++++++++++++++++++++------------
- 3 files changed, 85 insertions(+), 27 deletions(-)
-
-commit 8ec0c93715f6f43e4829a6f3ac534f9ec05e0363
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Dec 25 11:53:04 2007 +0000
-
- Provide a default implementation of JsonSerializable
-
- 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.
-
- json-glib/json-gobject.c | 208 ++++++++++++++++++++++++++-------------------
- 1 files changed, 120 insertions(+), 88 deletions(-)
-
-commit 5bb6dd7b77dcd0d1996f484990223287d2144ff3
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Dec 25 11:51:20 2007 +0000
-
- Plug a leak when loading a new buffer with the same parser
-
- 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.
-
- json-glib/json-parser.c | 2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
-
-commit a90a842f269314c4423de9d84d03391a8efbd7b5
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Dec 25 11:49:20 2007 +0000
-
- Use gssize for the buffer length parameter
-
- 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.
-
- json-glib/json-parser.c | 10 +++++-----
- json-glib/json-parser.h | 2 +-
- 2 files changed, 6 insertions(+), 6 deletions(-)
-
-commit 7229b9bf0bd15c6c1e5b695f8e291218a041ab45
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Dec 25 11:47:10 2007 +0000
-
- Initialise to zero when creating/copying a JsonNode
-
- Avoid feeding garbage to the callers by using g_slice_new0().
-
- json-glib/json-node.c | 9 +++++----
- 1 files changed, 5 insertions(+), 4 deletions(-)
-
-commit ba7282dd23e2980203208cb73942535bfefa5906
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Dec 25 11:45:56 2007 +0000
-
- Do not leak the intermediate strings when generating JSON
-
- Found this very dumb leak while using Valgrind.
-
- json-glib/json-generator.c | 6 ++++++
- 1 files changed, 6 insertions(+), 0 deletions(-)
-
-commit 193aca9aabbfc3db8e1faca0a65b19ac7ba96341
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Dec 25 11:44:18 2007 +0000
-
- Do not free the pointer to the boxed type we get when serialising
-
- 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.
-
- tests/test-07.c | 2 --
- 1 files changed, 0 insertions(+), 2 deletions(-)
-
-commit a6fae2d61b1cfefa742574761edc19c8d6f702f5
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Thu Nov 22 16:00:35 2007 +0000
-
- Add a simple Vala serialization example
-
- 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.
-
- contrib/json-object.vala | 40 ++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 40 insertions(+), 0 deletions(-)
-
-commit ea6cc8756f70d488eae128e4a01f63ce2766cc3a
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Thu Nov 22 15:59:25 2007 +0000
-
- Omit the lenght argument now that we provide a default
-
- contrib/json-test.vala | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit 9492f3439dd491bb5afadfe6b2bd49a72ec9bb1e
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Thu Nov 22 15:58:23 2007 +0000
-
- Fix the Vala bindings
-
- 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()
-
- contrib/json-glib-1.0.vapi | 20 +++++++++++---------
- 1 files changed, 11 insertions(+), 9 deletions(-)
-
-commit a255b4f5eb8769c444a9ac3a4cc7404fccd44ee3
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Thu Nov 22 00:01:37 2007 +0000
-
- Recurse into the contrib directory only if Vala is available
-
- 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.
-
- Makefile.am | 8 +++++++-
- configure.ac | 3 +++
- 2 files changed, 10 insertions(+), 1 deletions(-)
-
-commit aa8911ca4d63bfb3dd34997f9a745d70d12673af
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Wed Nov 21 20:44:08 2007 +0000
-
- Update the test case for the Vala bindings
-
- contrib/json-test.vala | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-commit 7083e9e6733611b5313f0708c4b93b9726ef26d0
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Wed Nov 21 20:43:35 2007 +0000
-
- Wrap the newly added API in the Vala bindings
-
- Add the Json.Object.dup_member() and Json.Array.dup_element() functions.
- Also, export the JSON_NODE_TYPE() macro as Json.Node.type() method.
-
- contrib/json-glib-1.0.vapi | 8 ++++++--
- 1 files changed, 6 insertions(+), 2 deletions(-)
-
-commit 9d4588e97a88960a4dd6a28debb3cb0f8d75f098
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Wed Nov 21 20:42:07 2007 +0000
-
- Add symbols of the newly committed API
-
- doc/reference/json-glib-sections.txt | 3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
-
-commit cf2eceeb69ccbda4f2ff583ee7869c7fd3cda603
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Wed Nov 21 20:41:42 2007 +0000
-
- Add API to retrieve copies of the nodes inside objects and arrays
-
- 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.
-
- json-glib/json-array.c | 29 +++++++++++++++++++++++++++++
- json-glib/json-object.c | 29 +++++++++++++++++++++++++++++
- json-glib/json-types.h | 4 ++++
- 3 files changed, 62 insertions(+), 0 deletions(-)
-
-commit 5a4a8761af0562fbee8e1a56ce1771a20c1ad8e3
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Wed Nov 21 20:07:12 2007 +0000
-
- Fix leaks in the test suite
-
- Dispose the root node when using the JsonParser and JsonGenerator
- objects after the change in sematics for their accessors.
-
- tests/test-01.c | 2 +-
- tests/test-02.c | 2 ++
- tests/test-03.c | 2 ++
- tests/test-04.c | 8 ++++++++
- tests/test-05.c | 6 ++++++
- 5 files changed, 19 insertions(+), 1 deletions(-)
-
-commit ac699263493e09eeb203f9bf88c0a8296f9e4a8f
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Wed Nov 21 20:06:06 2007 +0000
-
- Free the root node obtained using json_parser_get_root()
-
- Update json_construct_gobject() to the change of behaviour in the
- root node getter function of JsonParser.
-
- json-glib/json-gobject.c | 2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
-
-commit 0b6b09c0fe2fdd21b18593192e7213d1b0098f12
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Wed Nov 21 20:05:07 2007 +0000
-
- Change json_parser_get_root() semantics
-
- 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().
-
- json-glib/json-parser.c | 26 ++++++++++++++++++++++++--
- json-glib/json-parser.h | 2 ++
- 2 files changed, 26 insertions(+), 2 deletions(-)
-
-commit 5f110dc5ad338497c95418b9ad1b267c95fb8ded
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Wed Nov 21 18:39:04 2007 +0000
-
- Add JSON-GLib Vala bindings
-
- Add bindings for the basic JSON-GLib API. GObject API will arrive later.
-
- Makefile.am | 2 +-
- configure.ac | 12 +++++
- contrib/Makefile.am | 4 ++
- contrib/json-glib-1.0.vapi | 118 ++++++++++++++++++++++++++++++++++++++++++++
- contrib/json-test.vala | 87 ++++++++++++++++++++++++++++++++
- 5 files changed, 222 insertions(+), 1 deletions(-)
-
-commit 557a60b4e0f1fd6fc0fa79efc60f9bfd777e0670
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Wed Nov 21 14:52:15 2007 +0000
-
- Use a unicode character for the indent-char property of JsonGenerator
-
- The indent character should be any Unicode character available instead
- of a generic char.
-
- json-glib/json-generator.c | 16 ++++++++--------
- tests/test-05.c | 6 +++++-
- 2 files changed, 13 insertions(+), 9 deletions(-)
-
-commit 5fc37f8f2a1594821623419f75ceaa4b95fe07cf
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Wed Nov 21 01:39:00 2007 +0000
-
- Add the indent-char property to JsonGenerator
-
- The JsonGenerator:indent-char can be used to control the character that
- indents the lines when pretty printing.
-
- json-glib/json-generator.c | 54 ++++++++++++++++++++++++++++++++-----------
- 1 files changed, 40 insertions(+), 14 deletions(-)
-
-commit 58133b51152ca76b8cb5c93b5991f9b1a565e9a9
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Wed Nov 21 01:20:20 2007 +0000
-
- Use G_TYPE_DOUBLE when dumping a value.
-
- JsonNode of type value for floating point numbers is G_TYPE_DOUBLE
- and not G_TYPE_FLOAT anymore.
-
- json-glib/json-generator.c | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-commit 80006db7bcea2bd8c44a648a64ba3da6a05a6fd1
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Nov 20 18:30:42 2007 +0000
-
- Test correct deserialization of enum values
-
- Update the GObject deserialization test suite to check for the correct
- deserialization of the enum/flags values.
-
- tests/test-08.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++------
- 1 files changed, 53 insertions(+), 7 deletions(-)
-
-commit 1110e098fa879abf7f67f24af2a1b736ce359dd6
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Nov 20 18:20:33 2007 +0000
-
- Allow deserialization of strings into enums/flags
-
- 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.
-
- json-glib/json-gobject.c | 170 ++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 170 insertions(+), 0 deletions(-)
-
-commit 2674ce68e574cebeca147944cf748b41fbe27507
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Nov 13 11:34:05 2007 +0000
-
- Bump up to 0.5.0
-
- configure.ac | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit c1547eb3aba6f09b3ce4c23bd66a798e03b35a34
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Nov 13 11:29:19 2007 +0000
-
- Bump up to 0.4.0
-
- NEWS | 9 +++++++++
- configure.ac | 2 +-
- 2 files changed, 10 insertions(+), 1 deletions(-)
-
-commit 03325e108e40d5deba979852ee402d7d6579ac81
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Nov 13 11:20:34 2007 +0000
-
- Fix variable shadowing for distcheck
-
- json-glib/json-parser.c | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-commit afeec9b40468d289351c78007b5122ff716bb977
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Nov 13 11:16:51 2007 +0000
-
- Add 0.4 symbols index
-
- doc/reference/json-glib-docs.sgml | 4 ++++
- 1 files changed, 4 insertions(+), 0 deletions(-)
-
-commit 32023e03ca9c976e66b9af949d4aea36e1d4d874
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Nov 13 10:59:14 2007 +0000
-
- Change "responsible" to "asked" in the (de)serialization functions docs
-
- We provide fallbacks in case a JsonSerializable object does not translate
- a property into a JSON object member and vice versa.
-
- json-glib/json-gobject.c | 15 ++++++++-------
- 1 files changed, 8 insertions(+), 7 deletions(-)
-
-commit c669a28d37795be68f3a51e9353f6f9d8e695a52
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Nov 13 10:55:23 2007 +0000
-
- Add new symbols to the documentation
-
- doc/reference/json-glib-sections.txt | 7 ++++++-
- 1 files changed, 6 insertions(+), 1 deletions(-)
-
-commit b83a2bfa96885837ca48bacb6492fd68a2b5b564
-Merge: 1f9b3e5 198ed83
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Nov 13 10:51:58 2007 +0000
-
- Merge branch 'gobject-deserialize' into work
-
-commit 198ed839424dc7791d22dede152f4d7abc16a8b2
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Nov 13 10:51:31 2007 +0000
-
- Use the fallback value-to-node generator even for serializables
-
- 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.
-
- json-glib/json-gobject.c | 17 +++++++++++------
- tests/test-07.c | 13 +------------
- 2 files changed, 12 insertions(+), 18 deletions(-)
-
-commit 10e937a68bd802a4f5948d900aa2201344cfc138
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Nov 13 10:46:02 2007 +0000
-
- Add test unit for the GObject deserialization
-
- .gitignore | 2 +
- tests/Makefile.am | 4 +-
- tests/test-08.c | 291 +++++++++++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 296 insertions(+), 1 deletions(-)
-
-commit 7b93db7ad996b29a6c576db33803029dc94e16fc
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Nov 13 10:45:23 2007 +0000
-
- Fix a couple of dumb typos in the GObject deserialization code
-
- 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.
-
- json-glib/json-gobject.c | 6 ++++--
- 1 files changed, 4 insertions(+), 2 deletions(-)
-
-commit 9e61004365982017bfe9b76889e2a7d1a0320350
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Nov 13 10:11:34 2007 +0000
-
- Update git ignore file
-
- .gitignore | 2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
-
-commit 4b496c7d906c81dceafe6a5f442b55b6e161f762
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Nov 13 10:11:00 2007 +0000
-
- Add node-to-property simple fallback parser for deserialization
-
- 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.
-
- json-glib/json-gobject.c | 94 +++++++++++++++++++++++++++++++++++++++++----
- 1 files changed, 85 insertions(+), 9 deletions(-)
-
-commit a7c39c910e08093ee0d0723685005623f26b9eae
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Nov 13 09:28:57 2007 +0000
-
- Add the JsonGenerator:root property
-
- 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.
-
- json-glib/json-generator.c | 30 ++++++++++++++++++++++++++++--
- 1 files changed, 28 insertions(+), 2 deletions(-)
-
-commit 6132d7325c33e26740b4c955d8ccbe53fd817cd8
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Nov 13 09:26:02 2007 +0000
-
- Fix member name in json_node_get_value_type()
-
- JsonNode payload is inside a union.
-
- json-glib/json-node.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit f051b948714e4928a7d7f903e891639ce4ba82fd
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Nov 13 09:17:22 2007 +0000
-
- Add a GType for JsonNode
-
- 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.
-
- json-glib/json-node.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
- json-glib/json-types.h | 8 ++++++--
- 2 files changed, 54 insertions(+), 2 deletions(-)
-
-commit 1f9b3e50282f8aa4a421c83ad596f6186ef82ec9
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sat Nov 10 15:12:20 2007 +0000
-
- When parsing a full assignment, also swallow any trailing semi-colon
-
- 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.
-
- json-glib/json-parser.c | 12 +++++++++++-
- tests/test-02.c | 1 +
- 2 files changed, 12 insertions(+), 1 deletions(-)
-
-commit 261d05a4cdcc1f64824615cdc81b4b467d0a5f57
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sat Nov 10 02:15:44 2007 +0000
-
- Add support for parsing assignments
-
- Some JSON web APIs return a full JavaScript assignment instead of just
- the data structure (and I'm looking at you, Tumblr). This is done in clear
- violation of the grammar published in the RFC 4627, and it's evidently
- done because most web developers are too lazy for doing a
-
- var foo = eval('(' + text ')');
-
- and want everything defined for them. JsonParser will blissfully ignore
- the left-hand part of the assignment but, in the interest of the developer
- who cares, will record: 1. that the parsed statement was in fact an
- assignment and 2. the name of the variable used.
-
- The function json_parser_has_assignment() can be used to query both the
- presence of an assignment and the variable name at the same time.
-
- doc/reference/json-glib-sections.txt | 1 +
- json-glib/json-parser.c | 80 +++++++++++++++++++++++++++++++++-
- json-glib/json-parser.h | 5 ++
- tests/test-02.c | 5 ++
- 4 files changed, 89 insertions(+), 2 deletions(-)
-
-commit 45c697263364a975fd6a54373f999f2932436b6f
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sat Nov 10 01:26:46 2007 +0000
-
- Initial implementation of GObject deserialization function
-
- 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.
-
- doc/reference/json-glib-sections.txt | 1 +
- json-glib/json-gobject.c | 182 +++++++++++++++++++++++++++++++---
- json-glib/json-gobject.h | 8 +-
- 3 files changed, 177 insertions(+), 14 deletions(-)
-
-commit 4eade1089355ebcf0614d0cfbc9c441513b7d97a
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon Oct 29 22:23:36 2007 +0000
-
- Fix objects test suite to match the arrays one
-
- tests/test-03.c | 8 ++++----
- 1 files changed, 4 insertions(+), 4 deletions(-)
-
-commit 3948d83795d68d665b8b969c08b6c40498eb2661
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon Oct 29 22:23:07 2007 +0000
-
- More sanity checks for objects
-
- Add a check for commas after complex data types inside object members.
-
- json-glib/json-parser.c | 8 +++++++-
- 1 files changed, 7 insertions(+), 1 deletions(-)
-
-commit 6182457fa305a1f159e9009d3fbef42a93f2768e
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon Oct 29 22:17:44 2007 +0000
-
- Fix the test suite for arrays
-
- Fix a typo in test number 7 (missing comma to separate the C strings) and
- use G_TYPE_DOUBLE instead of G_TYPE_FLOAT for the floating point values.
-
- tests/test-02.c | 8 ++++----
- 1 files changed, 4 insertions(+), 4 deletions(-)
-
-commit 25cdc18be8acdad54561f919c5805ad4fa9b3ac9
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon Oct 29 22:16:31 2007 +0000
-
- Add more sanity checks to the parser
-
- Catch missing commas after an array element or an object member.
-
- json-glib/json-parser.c | 10 ++++++++++
- 1 files changed, 10 insertions(+), 0 deletions(-)
-
-commit 812422e4ed4df83374cdda6d94637448ab94dfef
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon Oct 29 18:18:34 2007 +0000
-
- Backport fixes from Clutter trunk
-
- The copy of JSON-GLib in Clutter trunk has two fixes for the JsonParser
- object:
-
- * support for negative numbers (ints and floats);
- * correct parse error propagation
-
- which should make the JsonParser hopefully complete.
-
- json-glib/json-parser.c | 123 +++++++++++++++++++++++++++++++++++++++--------
- 1 files changed, 103 insertions(+), 20 deletions(-)
-
-commit 72d007d865a822875dfa311698fb2d13f5d3df69
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon Oct 29 18:16:24 2007 +0000
-
- Check if the payload is set in json_node_free()
-
- Before calling json_object_unref() or json_array_unref() in json_node_free()
- we need to check if the payload of JsonNode is set to avoid a critical.
-
- json-glib/json-node.c | 6 ++++--
- 1 files changed, 4 insertions(+), 2 deletions(-)
-
-commit 59a66484befba457eda2ee7a9540f2b33ff04031
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Oct 16 23:20:22 2007 +0100
-
- Add test unit for the JsonSerializable interface
-
- This should have been done before relasing 0.2.0. Well, that's what
- point releases are for.
-
- tests/Makefile.am | 4 +-
- tests/test-07.c | 265 +++++++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 268 insertions(+), 1 deletions(-)
-
-commit 34515af7bb1d69317b9e52d0ced92beaf6770e7d
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Oct 16 23:19:35 2007 +0100
-
- We need the actual implementation of the JsonSerializable GType function
-
- A placeholder, while syntactically correct, won't do.
-
- json-glib/json-gobject.c | 6 ++++++
- 1 files changed, 6 insertions(+), 0 deletions(-)
-
-commit 0656c4bee8e14c375481c89a62f0e6e95be758ce
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Oct 16 23:18:47 2007 +0100
-
- Fix the compiler fixes
-
- This is what happens when you fix a compiler warning about a shadowing
- variable and you don't run the test suite to check the results.
-
- json-glib/json-generator.c | 10 ++++++----
- 1 files changed, 6 insertions(+), 4 deletions(-)
-
-commit 88794df33e08cb409f71d1aaf702cd509b600954
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Oct 16 19:53:27 2007 +0100
-
- Bump up to 0.3.0
-
- configure.ac | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit 0ce3bf30d84aedcf5f8f75e6c1112d91dcc1d654
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Oct 16 19:49:42 2007 +0100
-
- Bump up to 0.2.0
-
- configure.ac | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit 77248800533f3dabfb09dfa8ba32e3084ea62d5f
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Oct 16 19:43:27 2007 +0100
-
- Fix DISTCHECK configure flags
-
- Makefile.am | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit 70be36c97a8cd598af061eb9ac5a9a5852858682
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Oct 16 19:42:05 2007 +0100
-
- Fix compilation errors with extra maintainer CFLAGS
-
- json-glib/json-array.c | 2 +-
- json-glib/json-generator.c | 16 ++++++++--------
- json-glib/json-parser.c | 4 ++--
- 3 files changed, 11 insertions(+), 11 deletions(-)
-
-commit 57c39582818b8a6579fed327f5c6e2fc34e93694
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Oct 16 19:41:18 2007 +0100
-
- Drop -Wextra from the maintainer CFLAGS
-
- Some autogenerated code caused -Werror to croak, so -Wextra has to go.
-
- configure.ac | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit 9c690da734ee4513f19841f93a08ae35bbaa65b1
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Oct 16 18:20:19 2007 +0100
-
- Autogenerate the ChangeLog when disting
-
- Makefile.am | 5 +++++
- 1 files changed, 5 insertions(+), 0 deletions(-)
-
-commit 95fc9c4fb5af82c766d2f4f515b361028bc348e7
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Oct 16 18:20:01 2007 +0100
-
- Fix EXTRA_DIST files for distcheck
-
- json-glib/Makefile.am | 16 +++++++++-------
- 1 files changed, 9 insertions(+), 7 deletions(-)
-
-commit 87a36b8a5e23f3cf80730627f9b89061934a5bbf
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Oct 16 17:40:06 2007 +0100
-
- Add the JsonSerializable interface
-
- The JsonSerializable interface allows implementations to override the
- GObject-to-JSON serialization process, by providing two virtual methods
- to control the (de)serialization of GObject properties. This way it's
- possible to serialize GObjects with properties holding complex data types.
-
- doc/reference/json-glib-sections.txt | 15 +++
- json-glib/json-gobject.c | 188 ++++++++++++++++++++++++++++------
- json-glib/json-gobject.h | 51 +++++++++
- json-glib/json-types.h | 1 +
- 4 files changed, 224 insertions(+), 31 deletions(-)
-
-commit 85cb0f44c4c7297a75141999674f3eb0fdf6a308
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Oct 16 17:25:08 2007 +0100
-
- Add a method for getting all the nodes from a JsonObject
-
- To map json_array_get_elements(), a json_object_get_values() method has
- been added which returns the list of JsonNodes contained by a JsonObject.
-
- doc/reference/json-glib-sections.txt | 1 +
- json-glib/json-object.c | 41 ++++++++++++++++++++++++++++++++++
- json-glib/json-types.h | 1 +
- 3 files changed, 43 insertions(+), 0 deletions(-)
-
-commit 474ecf1cc6aae35b184edffc75fc8626c3f12f61
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Oct 16 16:40:57 2007 +0100
-
- Add a note in the JsonObject documentation for the member name normalization
-
- json-glib/json-object.c | 6 +++++-
- 1 files changed, 5 insertions(+), 1 deletions(-)
-
-commit 93e26b94d9bb1909f3b16a4b0500f27660d7e621
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Oct 16 16:37:01 2007 +0100
-
- Normalize every member name before using it
-
- Every member name is stored inside the internal hash table of JsonObject
- using a normalized string: every delimiter found matching G_STR_DELIMITERS
- is automatically transformed in an underscore ('_').
-
- This means that "member-name" and "member_name" are completely equivalent
- for a JsonObject.
-
- json-glib/json-object.c | 31 ++++++++++++++++++++++++++-----
- 1 files changed, 26 insertions(+), 5 deletions(-)
-
-commit 73a7671dedfd3bb9bc1a8c197a68dcef90e627f7
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon Oct 15 10:28:39 2007 +0100
-
- Provide an internal g_hash_table_get_keys() and bump down GLib dependency
-
- Even though GLib 2.14 is now available, many systems still come out with
- GLib 2.12. Since we are using just a single 2.14 function for retrieving
- the members from a JsonObject, we can provide an internal version of that
- function and hideit behind a pre-processor macro.
-
- configure.ac | 2 +-
- json-glib/json-object.c | 25 +++++++++++++++++++++++++
- 2 files changed, 26 insertions(+), 1 deletions(-)
-
-commit 28928a2f1cbe83a2f1bf699c915daa6eca80f587
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon Oct 15 10:25:09 2007 +0100
-
- Add API for removing nodes from arrays and objects
-
- Write and document json_object_remove_member() and json_array_remove_element()
- which can be used to remove a JsonNode from a JsonObject or a JsonArray
- respectively. This way, the JsonObject and JsonArray are API-complete and
- the object model can be manipulated in code.
-
- doc/reference/json-glib-sections.txt | 2 +
- json-glib/json-array.c | 18 +++++
- json-glib/json-object.c | 17 +++++
- json-glib/json-types.h | 126 +++++++++++++++++----------------
- 4 files changed, 102 insertions(+), 61 deletions(-)
-
-commit b3ecd6e2fbdd58250427f406c43d60b8cb8d2644
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Wed Oct 10 12:03:59 2007 +0100
-
- Parse bare root values
-
- If the root node contains just a bare value (true, false, null, fundamental
- type) then it's still valid JSON.
-
- Also, use the commodity JsonNode API to avoid using values in the parser
- code.
-
- json-glib/json-parser.c | 79 +++++++++++++++++-----------------------------
- 1 files changed, 29 insertions(+), 50 deletions(-)
-
-commit a7839a06da53d32eb372b4813e5883a04e1c36b7
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Oct 9 20:52:56 2007 +0100
-
- Add the forgotten JsonGenerator type function
-
- doc/reference/json-glib.types | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-commit daeef3345c3a7f3325cea8c945f0e1d814defcc1
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon Oct 8 18:29:44 2007 +0100
-
- Add json_node_dup_string()
-
- The newly added json_node_dup_string() is a convenience function for
- getting a copy of the string contained inside a JsonNode.
-
- doc/reference/json-glib-sections.txt | 1 +
- json-glib/json-node.c | 20 ++++++++++++++++++++
- json-glib/json-types.h | 1 +
- 3 files changed, 22 insertions(+), 0 deletions(-)
-
-commit b12efcec57fff6e7637fc924fc50333b97eb2594
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Sun Oct 7 00:47:32 2007 +0100
-
- Fix documentation about the ownership of the nodes
-
- When adding a JsonNode to a JsonObject or a JsonArray, the containers
- take ownership of the node.
-
- json-glib/json-array.c | 7 +++++--
- json-glib/json-object.c | 13 ++++++++-----
- 2 files changed, 13 insertions(+), 7 deletions(-)
-
-commit bd5a60ca658257752993ccea47950b97cdc45246
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Fri Oct 5 18:24:27 2007 +0100
-
- Add convenience accessors for fundamental types in JsonNode
-
- This commit adds some convenience accessors for setting and
- getting fundamental types in and from a JsonNode, to avoid
- jumping through all the GValue hoops.
-
- doc/reference/json-glib-sections.txt | 8 ++
- json-glib/json-node.c | 201 ++++++++++++++++++++++++++++++++++
- json-glib/json-types.h | 12 ++
- 3 files changed, 221 insertions(+), 0 deletions(-)
-
-commit ad95c8bf8e4103058d42ae71f47e6980e3b52c34
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Fri Oct 5 18:23:15 2007 +0100
-
- Use doubles when parsing, not floats
-
- GScanner advertise the floating point values as floats, but it really
- uses doubles. Hence, we need to use G_TYPE_DOUBLE when saving the
- parsed constants into a GValue.
-
- json-glib/json-parser.c | 8 ++++----
- 1 files changed, 4 insertions(+), 4 deletions(-)
-
-commit 220838e4e61c5a8fd9cf627da7309acf44fa82f0
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Fri Oct 5 16:39:10 2007 +0100
-
- Add line/position getters to JsonParser
-
- Add two methods to JsonParser to retrieve the currently parsed line
- and position within that line. These methods works only while parsing,
- so within the signal handlers and inside subclasses.
-
- doc/reference/json-glib-sections.txt | 6 ++++
- json-glib/json-parser.c | 46 +++++++++++++++++++++++++++++++--
- json-glib/json-parser.h | 21 +++++++++------
- 3 files changed, 61 insertions(+), 12 deletions(-)
-
-commit ea5ee264a5b82fd1d09fa84ec81e17c4ea0d0c4a
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Fri Oct 5 15:13:21 2007 +0100
-
- Document the newly added signals
-
- json-glib/json-parser.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++
- json-glib/json-parser.h | 10 ++++++-
- 2 files changed, 73 insertions(+), 1 deletions(-)
-
-commit fa9d1676da588306be5a14bcab100ad58a41b799
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Fri Oct 5 11:59:44 2007 +0100
-
- Add more signals to the JsonParser class
-
- JsonParser should emit signals in critical places, like: start/end of
- the parsing process; start and end of a JsonObject and a JsonArray;
- completion of every member and element of a JsonObject and a JsonArray.
- These signals require the addition of some custom marshaller.
-
- json-glib/json-marshal.list | 4 ++
- json-glib/json-parser.c | 118 +++++++++++++++++++++++++++++++++++++++++-
- json-glib/json-parser.h | 25 ++++++++-
- 3 files changed, 141 insertions(+), 6 deletions(-)
-
-commit aa2b31234f7cfac63b870e8d9d74e682b3121d4a
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Fri Oct 5 11:57:53 2007 +0100
-
- Implement the GType functions for JsonObject and JsonArray
-
- The type functions for the JsonObject and JsonArray types were declared,
- albeit with the wrong return value, but not implemented. This commit
- fixed the return value and implements them.
-
- JsonObject and JsonArray are boxed types because we don't need them to
- be GObjects (no signals, no inheritance and their implementation must be
- completely opaque for the developer).
-
- json-glib/json-array.c | 13 +++++++++++++
- json-glib/json-object.c | 13 +++++++++++++
- json-glib/json-types.h | 4 ++--
- 3 files changed, 28 insertions(+), 2 deletions(-)
-
-commit bd41854505f47d2176ea4cfba8083ce998c482cc
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Oct 2 12:13:23 2007 +0100
-
- Document the GObject integration API into the API reference
-
- doc/reference/json-glib-docs.sgml | 6 ++++++
- doc/reference/json-glib-sections.txt | 6 ++++++
- 2 files changed, 12 insertions(+), 0 deletions(-)
-
-commit cea3f69f2cde1cb4e6ea9242f6014b31864ad80f
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Oct 2 12:12:49 2007 +0100
-
- Add test case for GObject integration
-
- .gitignore | 2 +
- tests/Makefile.am | 4 +-
- tests/test-06.c | 154 +++++++++++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 159 insertions(+), 1 deletions(-)
-
-commit 3666613e47b66d67a28bc06c6dcf678fe97eae50
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Oct 2 12:11:55 2007 +0100
-
- Add GObject serialization support for JSON-GLib
-
- This commit adds json-gobject.h and json_serialize_gobject() to
- JSON-GLib, to serialize a GObject instance into a JSON data stream.
-
- .gitignore | 1 +
- json-glib/Makefile.am | 2 +
- json-glib/json-gobject.c | 169 ++++++++++++++++++++++++++++++++++++++++++++++
- json-glib/json-gobject.h | 33 +++++++++
- 4 files changed, 205 insertions(+), 0 deletions(-)
-
-commit 8398253c76cf5dda23891b49b1aaa49e57d95a8d
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Oct 2 10:03:00 2007 +0100
-
- Complete the tests suite with the object deserialization
-
- Add a test unit for JSON object generation using JsonGenerator. The
- empty, simple (1-depth) and complex (nested object and array) cases
- are exercised.
-
- The complex object generation is taken from the RFC 4627, Examples
- section.
-
- .gitignore | 2 +
- tests/Makefile.am | 4 +-
- tests/test-05.c | 217 +++++++++++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 222 insertions(+), 1 deletions(-)
-
-commit 2b25dbfa802f9af6e76fbe72140b687535cae8e5
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Tue Oct 2 08:07:56 2007 +0100
-
- Add objects support
-
- JsonGenerator can now create objects and array-nested objects, with and without
- pretty printing. The test suite has been updated accordingly.
-
- json-glib/json-generator.c | 125 ++++++++++++++++++++++++++++++++++++++++++-
- tests/test-04.c | 68 ++++++++++++++++++++++++
- 2 files changed, 190 insertions(+), 3 deletions(-)
-
-commit 326cdead6f1c7b1bbaae0961d28bfe5ca3af0a1a
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon Oct 1 23:07:18 2007 +0100
-
- Add nested arrays support
-
- JsonGenerator now supports nested arrays, both with and without pretty
- printing. The tests suite has been updated accordingly.
-
- json-glib/json-generator.c | 10 +++++++
- tests/test-04.c | 61 ++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 71 insertions(+), 0 deletions(-)
-
-commit 6f4dd6b154a150e8b4221800b61f85e5c4277d1b
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon Oct 1 22:58:04 2007 +0100
-
- Simple arrays generation
-
- JsonGenerator now can create simple arrays, with "pretty" enabled and disabled.
- Simple arrays are just one-level, value-only arrays.
-
- The test unit has been updated to exercise this new feature.
-
- json-glib/json-generator.c | 160 ++++++++++++++++++++++++++++++++++++++++++--
- tests/test-04.c | 86 ++++++++++++++++++++++--
- 2 files changed, 234 insertions(+), 12 deletions(-)
-
-commit 7f0232eaab0af434e2e086c83b68395146e410f9
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon Oct 1 22:22:12 2007 +0100
-
- Update list of git ignored files
-
- .gitignore | 5 +++++
- 1 files changed, 5 insertions(+), 0 deletions(-)
-
-commit 47b34271f989cb5f2ba01a633d003adb6052cbd1
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon Oct 1 22:20:23 2007 +0100
-
- Add initial test unit for the JsonGenerator object
-
- tests/Makefile.am | 4 +++-
- tests/test-04.c | 29 +++++++++++++++++++++++++++++
- 2 files changed, 32 insertions(+), 1 deletions(-)
-
-commit 8edb4ef3232428ac9e548ae6c1dfa2328bf7198c
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon Oct 1 22:19:28 2007 +0100
-
- Add missing json-generator.h header
-
- json-glib/json-glib.h | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-commit f09acae8e0d6ceba5d13de75551491835a7e71de
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon Oct 1 19:49:43 2007 +0100
-
- Document the new public functions
-
- Now that we moved the constructors and setters for the JSON data types into
- the public symbols we need to document them to get back to 100% doc coverage.
-
- doc/reference/json-glib-sections.txt | 26 ++++++++++-
- json-glib/json-array.c | 22 ++++++++++
- json-glib/json-node.c | 78 ++++++++++++++++++++++++++++++++++
- json-glib/json-object.c | 15 +++++++
- json-glib/json-types.h | 2 +
- 5 files changed, 141 insertions(+), 2 deletions(-)
-
-commit 228a5e4efe65995778847f48d2be43f3df988e10
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon Oct 1 18:01:20 2007 +0100
-
- Move data types ctors and setters into the public headers
-
- Now that we are providing a generator class we need to provide the
- constructors and setters for JsonNode, JsonObject and JsonArray. This
- also means that the json-private.h header is now useless, so we can
- remove it from the build and repository.
-
- json-glib/Makefile.am | 2 +-
- json-glib/json-array.c | 1 -
- json-glib/json-generator.c | 1 -
- json-glib/json-node.c | 1 -
- json-glib/json-object.c | 1 -
- json-glib/json-parser.c | 1 -
- json-glib/json-private.h | 35 -----------------------------------
- json-glib/json-types.h | 38 +++++++++++++++++++++++++++++++-------
- 8 files changed, 32 insertions(+), 48 deletions(-)
-
-commit bfa60e9ef9da71e3c0d171f81cd08e8eac749061
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon Oct 1 17:48:34 2007 +0100
-
- Add stub class for JsonGenerator
-
- JsonGenerator is an object that creates JSON data streams from a data
- model tree. This commit adds the JsonGenerator class to the build and
- API reference.
-
- doc/reference/json-glib-docs.sgml | 1 +
- doc/reference/json-glib-sections.txt | 25 ++++
- json-glib/Makefile.am | 2 +
- json-glib/json-generator.c | 255 ++++++++++++++++++++++++++++++++++
- json-glib/json-generator.h | 82 +++++++++++
- 5 files changed, 365 insertions(+), 0 deletions(-)
-
-commit 41849494890f1f51bc7c4429f0ee7b5d168da302
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon Oct 1 16:37:14 2007 +0100
-
- Fix ids inside the main documentation index
-
- doc/reference/json-glib-docs.sgml | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-commit c3f8ea960ef7f8733969d9fb0f71531bc7449a16
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon Oct 1 16:25:47 2007 +0100
-
- Complete API reference of JSON-GLib
-
- With this commit, we reach 100% coverage.
-
- json-glib/json-parser.h | 19 +++++++++++++++++++
- json-glib/json-types.h | 20 ++++++++++++++++++++
- 2 files changed, 39 insertions(+), 0 deletions(-)
-
-commit 2211e4e60b90b92d868c9b5f6b61e133d2435b4d
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon Oct 1 16:25:11 2007 +0100
-
- Implement json_node_get_parent()
-
- It seems that the parent accessor fell through. This commit implements
- the declared json_node_get_parent() function.
-
- json-glib/json-node.c | 16 ++++++++++++++++
- 1 files changed, 16 insertions(+), 0 deletions(-)
-
-commit 29feafc236f888021b817fdfe0cfe685f5e3b65e
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon Oct 1 16:16:15 2007 +0100
-
- Add licensing informations to the source code
-
- json-glib/json-array.c | 29 ++++++++++++++++++++++++
- json-glib/json-node.c | 52 ++++++++++++++++++++++++++++++++++++------
- json-glib/json-object.c | 34 ++++++++++++++++++++++++---
- json-glib/json-parser.c | 28 +++++++++++++++++++++-
- json-glib/json-parser.h | 19 +++++++++++++++
- json-glib/json-types.h | 35 +++++++++++++++++++++++++++++
- json-glib/json-version.h.in | 19 +++++++++++++++
- 7 files changed, 202 insertions(+), 14 deletions(-)
-
-commit 6eb1a5e94957d3555e7de5f6744a8777cd89efaf
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon Oct 1 15:55:04 2007 +0100
-
- Fix a stray newline in the documentation
-
- doc/reference/json-glib-docs.sgml | 3 +--
- 1 files changed, 1 insertions(+), 2 deletions(-)
-
-commit a5ecf553082816a1ce6c4354ff23e8addf8d9c80
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon Oct 1 15:52:54 2007 +0100
-
- Update git ignore file
-
- .gitignore | 22 ++++++++++++++++++++++
- 1 files changed, 22 insertions(+), 0 deletions(-)
-
-commit 9bdee4c01adef7e9d7ed18d5dd94671057f1459b
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon Oct 1 15:50:49 2007 +0100
-
- Add API reference for JSON-GLib
-
- Use gtk-doc to build the various bits and pieces of the API reference
- for JSON-GLib.
-
- doc/Makefile.am | 1 +
- doc/reference/Makefile.am | 2 +-
- doc/reference/json-glib-docs.sgml | 153 ++++++++++++++++++++++++++++++++++
- doc/reference/json-glib-sections.txt | 92 ++++++++++++++++++++
- doc/reference/json-glib.types | 1 +
- json-glib/json-node.c | 2 +-
- json-glib/json-version.h.in | 8 ++
- 7 files changed, 257 insertions(+), 2 deletions(-)
-
-commit 2e362edd46f11f2fd1fa327877372b902b70c280
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon Oct 1 14:57:39 2007 +0100
-
- Add more test cases for the object parsing
-
- tests/test-03.c | 3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
-
-commit 79423943a8588a8ed6d5bedbc038255111897261
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon Oct 1 14:57:25 2007 +0100
-
- Swallow the comma earlier in the parser
-
- The comma is used as a member and element separator, so it should be
- swallowed by the parser as soon as possible.
-
- json-glib/json-parser.c | 25 ++++++++++++++++---------
- 1 files changed, 16 insertions(+), 9 deletions(-)
-
-commit e711b883dba88d68b6986d87f14a06361cf54be7
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon Oct 1 14:46:31 2007 +0100
-
- Update gitignore
-
- .gitignore | 3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
-
-commit 591989c80b16fe68bdd79bcc7759a4249fdaf129
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon Oct 1 14:45:42 2007 +0100
-
- Test object parsing
-
- Add JSON object parsing testing to the test units.
-
- tests/Makefile.am | 8 +-
- tests/test-02.c | 73 +++++++++++++++++-
- tests/test-03.c | 211 +++++++++++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 285 insertions(+), 7 deletions(-)
-
-commit ba3a6e6afed0d4fe3853b8e7400516557a20f775
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon Oct 1 14:44:51 2007 +0100
-
- Add JSON object parsing
-
- This commit completes the JsonParser class by adding the ability to
- parse JSON objects, either alone or inside arrays. JsonParser is now
- a JSON parser.
-
- json-glib/json-parser.c | 235 ++++++++++++++++++++++++++++++++++++++++++++---
- 1 files changed, 220 insertions(+), 15 deletions(-)
-
-commit fd89ad3d7127e68df06345fa52863e73ada93689
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon Oct 1 14:43:12 2007 +0100
-
- Declare json_node_take_object() and json_node_take_array()
-
- JsonParser uses the take variant of JsonNode setters for objects and arrays
- since it's the one creating the objects. This way, we avoid leaks and the
- extra complexity of unreffing the newly created complex containers after
- setting them into the JsonNodes.
-
- json-glib/json-private.h | 4 ++++
- 1 files changed, 4 insertions(+), 0 deletions(-)
-
-commit b2ee98f9b0baac019540020e177189b6a3780b83
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon Oct 1 13:01:32 2007 +0100
-
- Chain up nodes to their parent
-
- When parsing a JSON node we need to correctly set up the parent node
- of the newly created ones.
-
- json-glib/json-parser.c | 6 +++++-
- 1 files changed, 5 insertions(+), 1 deletions(-)
-
-commit 88b11be5eec1da769328e93189bc2f3316c9cd0a
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Mon Oct 1 12:57:46 2007 +0100
-
- Add JsonNode, a generic container for JSON types
-
- This huge commit removes JsonData and adds JsonNode, the generic container
- for fundamental and complex data types extracted from a JSON stream. The
- contents of a JsonNode can be extracted from it in form of a GValue for
- fundamental types (integers, floats, strings, booleans) or in form of
- JsonObject and JsonArray objects. JsonObject and JsonArray now accept
- JsonNodes instead of GValues.
-
- The JsonParser object builds the data model tree when parsing a JSON stream;
- the tree can be recursed by getting the root node and walking it using the
- GValue API for the fundamental types and the objects/arrays API for complex
- types.
-
- The API has been updated and the tests now recurse through the generated
- data model tree.
-
- json-glib/Makefile.am | 2 +-
- json-glib/json-array.c | 64 +++++------
- json-glib/json-data.c | 93 ----------------
- json-glib/json-node.c | 269 ++++++++++++++++++++++++++++++++++++++++++++++
- json-glib/json-object.c | 44 ++------
- json-glib/json-parser.c | 87 +++++++++++----
- json-glib/json-parser.h | 2 +-
- json-glib/json-private.h | 38 +++----
- json-glib/json-types.h | 59 ++++++-----
- tests/test-01.c | 2 +-
- tests/test-02.c | 112 ++++++++++++++++++-
- 11 files changed, 535 insertions(+), 237 deletions(-)
-
-commit c11ebd32f73a1e21d6097bf9eba8e12f7e35497a
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Fri Sep 21 21:07:12 2007 +0100
-
- Add JsonData, an opaque container for JSON data types
-
- JsonData is like GValue, but it stores JSON data types (objects and
- arrays) and allows us to retrieve them safely. This way we can actually
- know the type of the objects returned by the parser and by the other
- object walking functions.
-
- json-glib/Makefile.am | 1 +
- json-glib/json-data.c | 93 ++++++++++++++++++++++++++++++++++++++++++++++
- json-glib/json-private.h | 7 +++
- json-glib/json-types.h | 53 ++++++++++++++++++--------
- 4 files changed, 138 insertions(+), 16 deletions(-)
-
-commit f661c7e1a04c2fb198279030c9dd812f357240a3
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Fri Sep 21 21:05:12 2007 +0100
-
- Skip the token check after parsing a nested array
-
- Since there cannot be any other token except for the comma, which we
- eat anyway, there's no point in going through the switch() check
- after we have finished parsing a nested array.
-
- json-glib/json-parser.c | 2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
-
-commit ae3a66e6a90b6cfd71cb8c41c0d752fd1b0a67cc
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Fri Sep 21 20:15:52 2007 +0100
-
- Update gitignore file
-
- .gitignore | 7 +++++++
- 1 files changed, 7 insertions(+), 0 deletions(-)
-
-commit 7875c5f573fdc6c2a39e958d2032f4c26d1f91ff
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Fri Sep 21 20:14:49 2007 +0100
-
- Start the test suite
-
- Add the first two test units:
-
- - test-01.c: build/empty test unit
- - test-02.c: array test unit
-
- Every test unit must follow the same naming policy, so we can add
- a run-tests script later on and a pre-commit hook to invoke it
- and catch regressions automagically.
-
- tests/Makefile.am | 12 ++++++++++++
- tests/test-01.c | 31 +++++++++++++++++++++++++++++++
- tests/test-02.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 95 insertions(+), 0 deletions(-)
-
-commit 81ad2e5c61db2391d2d98a6b5df1247e3abf16ec
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Fri Sep 21 20:12:02 2007 +0100
-
- Parse JSON arrays
-
- Add the array parsing code. The parser identifies and builds nested
- levels of arrays, but the storage is not quite right. That is a problem
- of the parser object, though, so this can be considered a first raw
- pass at the problem.
-
- json-glib/json-parser.c | 114 ++++++++++++++++++++++++++++++++++++++++-------
- 1 files changed, 97 insertions(+), 17 deletions(-)
-
-commit b433703db6722785e33f968830e23c5806230ac2
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Fri Sep 21 12:16:15 2007 +0100
-
- Add RFC 4627 text, where JSON is defined
-
- doc/rfc4627.txt | 563 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 563 insertions(+), 0 deletions(-)
-
-commit c77af0ec13e3e11cdb784510e6a75125bb8ef667
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Fri Sep 21 12:08:09 2007 +0100
-
- Top-levels in JSON can only be objects or arrays
-
- JSON is an object serialisation format (thanks, RFC4627), so it can
- only express objects and/or arrays as top-levels.
-
- json-glib/json-parser.c | 24 ++++++++++++++----------
- 1 files changed, 14 insertions(+), 10 deletions(-)
-
-commit 0ff67fb63c5e021b88d6a3d17c5e34dc95ac2676
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Fri Sep 21 11:58:00 2007 +0100
-
- Update gitignore file
-
- .gitignore | 4 ++++
- 1 files changed, 4 insertions(+), 0 deletions(-)
-
-commit d98d8c3d245192abe6ec5a531c9d0d678b07d061
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Fri Sep 21 11:54:40 2007 +0100
-
- Add stubs to JsonParser for actually parsing a JSON stream
-
- Initial commit for getting JsonParser to work. Because GScanner API
- is old and mostly sucks, we need to do some magic with signals.
-
- If json_parser_load_from_data() fails, the passed GError will be set
- with a JSON_PARSER_ERROR code and message; unfortunately, we can't get
- the nice error message out of GScanner. We can, however, override the
- default message handler and make it emit a signal on the JsonParser
- object.
-
- So, to make a long story short: the GError passed to the load_from_data()
- method is filled with a short error message; the *real* error message
- is passed to the ::error signal handlers so they can actually use it.
-
- GScanner should really get a way to retrieve the last error message.
-
- json-glib/json-parser.c | 266 ++++++++++++++++++++++++++++++++++++++++++++++-
- json-glib/json-parser.h | 28 +++++-
- 2 files changed, 290 insertions(+), 4 deletions(-)
-
-commit cd1040e2fb6f6da50aaf72017746b33234c39704
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Fri Sep 21 11:08:06 2007 +0100
-
- Add marshallers generation to the build
-
- Use glib-genmarshal to generate the marshallers we need. For the
- time being, we just need a (void,pointer).
-
- json-glib/Makefile.am | 30 +++++++++++++++++++++++++-----
- json-glib/json-marshal.list | 1 +
- 2 files changed, 26 insertions(+), 5 deletions(-)
-
-commit 821ac3e602f936318f9a2c3b831f135408ca5d74
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Thu Sep 20 20:41:09 2007 +0100
-
- Add gitignore file
-
- .gitignore | 29 +++++++++++++++++++++++++++++
- 1 files changed, 29 insertions(+), 0 deletions(-)
-
-commit c5bfb22f964b8f1feecdc8fb29d8a74b36861d32
-Author: Emmanuele Bassi <ebassi@openedhand.com>
-Date: Thu Sep 20 17:33:28 2007 +0100
-
- Initial import of JSON-GLib
-
- JSON-GLib is a JSON parser library written with GLib and GObject.
-
- JSON is the JavaScript Object Notation, and it's used to define objects
- and object hierarchies in a human-readable way.
-
- AUTHORS | 1 +
- COPYING | 504 +++++++++++++++++++++++++++++++++++++
- ChangeLog | 6 +
- Makefile.am | 15 ++
- README | 39 +++
- autogen.sh | 4 +
- configure.ac | 119 +++++++++
- doc/reference/Makefile.am | 82 ++++++
- doc/reference/version.xml.in | 1 +
- json-glib.pc.in | 11 +
- json-glib/Makefile.am | 52 ++++
- json-glib/json-array.c | 176 +++++++++++++
- json-glib/json-glib.h | 8 +
- json-glib/json-object.c | 201 +++++++++++++++
- json-glib/json-parser.c | 152 +++++++++++
- json-glib/json-parser.h | 57 +++++
- json-glib/json-private.h | 26 ++
- json-glib/json-types.h | 32 +++
- json-glib/json-version.h.in | 65 +++++
- 19 files changed, 1551 insertions(+), 0 deletions(-)
+++ /dev/null
-Installation Instructions
-*************************
-
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
-2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-
- Copying and distribution of this file, with or without modification,
-are permitted in any medium without royalty provided the copyright
-notice and this notice are preserved. This file is offered as-is,
-without warranty of any kind.
-
-Basic Installation
-==================
-
- Briefly, the shell commands `./configure; make; make install' should
-configure, build, and install this package. The following
-more-detailed instructions are generic; see the `README' file for
-instructions specific to this package. Some packages provide this
-`INSTALL' file but do not implement all of the features documented
-below. The lack of an optional feature in a given package is not
-necessarily a bug. More recommendations for GNU packages can be found
-in *note Makefile Conventions: (standards)Makefile Conventions.
-
- The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation. It uses
-those values to create a `Makefile' in each directory of the package.
-It may also create one or more `.h' files containing system-dependent
-definitions. Finally, it creates a shell script `config.status' that
-you can run in the future to recreate the current configuration, and a
-file `config.log' containing compiler output (useful mainly for
-debugging `configure').
-
- It can also use an optional file (typically called `config.cache'
-and enabled with `--cache-file=config.cache' or simply `-C') that saves
-the results of its tests to speed up reconfiguring. Caching is
-disabled by default to prevent problems with accidental use of stale
-cache files.
-
- If you need to do unusual things to compile the package, please try
-to figure out how `configure' could check whether to do them, and mail
-diffs or instructions to the address given in the `README' so they can
-be considered for the next release. If you are using the cache, and at
-some point `config.cache' contains results you don't want to keep, you
-may remove or edit it.
-
- The file `configure.ac' (or `configure.in') is used to create
-`configure' by a program called `autoconf'. You need `configure.ac' if
-you want to change it or regenerate `configure' using a newer version
-of `autoconf'.
-
- The simplest way to compile this package is:
-
- 1. `cd' to the directory containing the package's source code and type
- `./configure' to configure the package for your system.
-
- Running `configure' might take a while. While running, it prints
- some messages telling which features it is checking for.
-
- 2. Type `make' to compile the package.
-
- 3. Optionally, type `make check' to run any self-tests that come with
- the package, generally using the just-built uninstalled binaries.
-
- 4. Type `make install' to install the programs and any data files and
- documentation. When installing into a prefix owned by root, it is
- recommended that the package be configured and built as a regular
- user, and only the `make install' phase executed with root
- privileges.
-
- 5. Optionally, type `make installcheck' to repeat any self-tests, but
- this time using the binaries in their final installed location.
- This target does not install anything. Running this target as a
- regular user, particularly if the prior `make install' required
- root privileges, verifies that the installation completed
- correctly.
-
- 6. You can remove the program binaries and object files from the
- source code directory by typing `make clean'. To also remove the
- files that `configure' created (so you can compile the package for
- a different kind of computer), type `make distclean'. There is
- also a `make maintainer-clean' target, but that is intended mainly
- for the package's developers. If you use it, you may have to get
- all sorts of other programs in order to regenerate files that came
- with the distribution.
-
- 7. Often, you can also type `make uninstall' to remove the installed
- files again. In practice, not all packages have tested that
- uninstallation works correctly, even though it is required by the
- GNU Coding Standards.
-
- 8. Some packages, particularly those that use Automake, provide `make
- distcheck', which can by used by developers to test that all other
- targets like `make install' and `make uninstall' work correctly.
- This target is generally not run by end users.
-
-Compilers and Options
-=====================
-
- Some systems require unusual options for compilation or linking that
-the `configure' script does not know about. Run `./configure --help'
-for details on some of the pertinent environment variables.
-
- You can give `configure' initial values for configuration parameters
-by setting variables in the command line or in the environment. Here
-is an example:
-
- ./configure CC=c99 CFLAGS=-g LIBS=-lposix
-
- *Note Defining Variables::, for more details.
-
-Compiling For Multiple Architectures
-====================================
-
- You can compile the package for more than one kind of computer at the
-same time, by placing the object files for each architecture in their
-own directory. To do this, you can use GNU `make'. `cd' to the
-directory where you want the object files and executables to go and run
-the `configure' script. `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'. This
-is known as a "VPATH" build.
-
- With a non-GNU `make', it is safer to compile the package for one
-architecture at a time in the source code directory. After you have
-installed the package for one architecture, use `make distclean' before
-reconfiguring for another architecture.
-
- On MacOS X 10.5 and later systems, you can create libraries and
-executables that work on multiple system types--known as "fat" or
-"universal" binaries--by specifying multiple `-arch' options to the
-compiler but only a single `-arch' option to the preprocessor. Like
-this:
-
- ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
- CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
- CPP="gcc -E" CXXCPP="g++ -E"
-
- This is not guaranteed to produce working output in all cases, you
-may have to build one architecture at a time and combine the results
-using the `lipo' tool if you have problems.
-
-Installation Names
-==================
-
- By default, `make install' installs the package's commands under
-`/usr/local/bin', include files under `/usr/local/include', etc. You
-can specify an installation prefix other than `/usr/local' by giving
-`configure' the option `--prefix=PREFIX', where PREFIX must be an
-absolute file name.
-
- You can specify separate installation prefixes for
-architecture-specific files and architecture-independent files. If you
-pass the option `--exec-prefix=PREFIX' to `configure', the package uses
-PREFIX as the prefix for installing programs and libraries.
-Documentation and other data files still use the regular prefix.
-
- In addition, if you use an unusual directory layout you can give
-options like `--bindir=DIR' to specify different values for particular
-kinds of files. Run `configure --help' for a list of the directories
-you can set and what kinds of files go in them. In general, the
-default for these options is expressed in terms of `${prefix}', so that
-specifying just `--prefix' will affect all of the other directory
-specifications that were not explicitly provided.
-
- The most portable way to affect installation locations is to pass the
-correct locations to `configure'; however, many packages provide one or
-both of the following shortcuts of passing variable assignments to the
-`make install' command line to change installation locations without
-having to reconfigure or recompile.
-
- The first method involves providing an override variable for each
-affected directory. For example, `make install
-prefix=/alternate/directory' will choose an alternate location for all
-directory configuration variables that were expressed in terms of
-`${prefix}'. Any directories that were specified during `configure',
-but not in terms of `${prefix}', must each be overridden at install
-time for the entire installation to be relocated. The approach of
-makefile variable overrides for each directory variable is required by
-the GNU Coding Standards, and ideally causes no recompilation.
-However, some platforms have known limitations with the semantics of
-shared libraries that end up requiring recompilation when using this
-method, particularly noticeable in packages that use GNU Libtool.
-
- The second method involves providing the `DESTDIR' variable. For
-example, `make install DESTDIR=/alternate/directory' will prepend
-`/alternate/directory' before all installation names. The approach of
-`DESTDIR' overrides is not required by the GNU Coding Standards, and
-does not work on platforms that have drive letters. On the other hand,
-it does better at avoiding recompilation issues, and works well even
-when some directory options were not specified in terms of `${prefix}'
-at `configure' time.
-
-Optional Features
-=================
-
- If the package supports it, you can cause programs to be installed
-with an extra prefix or suffix on their names by giving `configure' the
-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
-
- Some packages pay attention to `--enable-FEATURE' options to
-`configure', where FEATURE indicates an optional part of the package.
-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
-is something like `gnu-as' or `x' (for the X Window System). The
-`README' should mention any `--enable-' and `--with-' options that the
-package recognizes.
-
- For packages that use the X Window System, `configure' can usually
-find the X include and library files automatically, but if it doesn't,
-you can use the `configure' options `--x-includes=DIR' and
-`--x-libraries=DIR' to specify their locations.
-
- Some packages offer the ability to configure how verbose the
-execution of `make' will be. For these packages, running `./configure
---enable-silent-rules' sets the default to minimal output, which can be
-overridden with `make V=1'; while running `./configure
---disable-silent-rules' sets the default to verbose, which can be
-overridden with `make V=0'.
-
-Particular systems
-==================
-
- On HP-UX, the default C compiler is not ANSI C compatible. If GNU
-CC is not installed, it is recommended to use the following options in
-order to use an ANSI C compiler:
-
- ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
-
-and if that doesn't work, install pre-built binaries of GCC for HP-UX.
-
- On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
-parse its `<wchar.h>' header file. The option `-nodtk' can be used as
-a workaround. If GNU CC is not installed, it is therefore recommended
-to try
-
- ./configure CC="cc"
-
-and if that doesn't work, try
-
- ./configure CC="cc -nodtk"
-
- On Solaris, don't put `/usr/ucb' early in your `PATH'. This
-directory contains several dysfunctional programs; working variants of
-these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
-in your `PATH', put it _after_ `/usr/bin'.
-
- On Haiku, software installed for all users goes in `/boot/common',
-not `/usr/local'. It is recommended to use the following options:
-
- ./configure --prefix=/boot/common
-
-Specifying the System Type
-==========================
-
- There may be some features `configure' cannot figure out
-automatically, but needs to determine by the type of machine the package
-will run on. Usually, assuming the package is built to be run on the
-_same_ architectures, `configure' can figure that out, but if it prints
-a message saying it cannot guess the machine type, give it the
-`--build=TYPE' option. TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name which has the form:
-
- CPU-COMPANY-SYSTEM
-
-where SYSTEM can have one of these forms:
-
- OS
- KERNEL-OS
-
- See the file `config.sub' for the possible values of each field. If
-`config.sub' isn't included in this package, then this package doesn't
-need to know the machine type.
-
- If you are _building_ compiler tools for cross-compiling, you should
-use the option `--target=TYPE' to select the type of system they will
-produce code for.
-
- If you want to _use_ a cross compiler, that generates code for a
-platform different from the build platform, you should specify the
-"host" platform (i.e., that on which the generated programs will
-eventually be run) with `--host=TYPE'.
-
-Sharing Defaults
-================
-
- If you want to set default values for `configure' scripts to share,
-you can create a site shell script called `config.site' that gives
-default values for variables like `CC', `cache_file', and `prefix'.
-`configure' looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists. Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: not all `configure' scripts look for a site script.
-
-Defining Variables
-==================
-
- Variables not defined in a site shell script can be set in the
-environment passed to `configure'. However, some packages may run
-configure again during the build, and the customized values of these
-variables may be lost. In order to avoid this problem, you should set
-them in the `configure' command line, using `VAR=value'. For example:
-
- ./configure CC=/usr/local2/bin/gcc
-
-causes the specified `gcc' to be used as the C compiler (unless it is
-overridden in the site shell script).
-
-Unfortunately, this technique does not work for `CONFIG_SHELL' due to
-an Autoconf bug. Until the bug is fixed you can use this workaround:
-
- CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
-
-`configure' Invocation
-======================
-
- `configure' recognizes the following options to control how it
-operates.
-
-`--help'
-`-h'
- Print a summary of all of the options to `configure', and exit.
-
-`--help=short'
-`--help=recursive'
- Print a summary of the options unique to this package's
- `configure', and exit. The `short' variant lists options used
- only in the top level, while the `recursive' variant lists options
- also present in any nested packages.
-
-`--version'
-`-V'
- Print the version of Autoconf used to generate the `configure'
- script, and exit.
-
-`--cache-file=FILE'
- Enable the cache: use and save the results of the tests in FILE,
- traditionally `config.cache'. FILE defaults to `/dev/null' to
- disable caching.
-
-`--config-cache'
-`-C'
- Alias for `--cache-file=config.cache'.
-
-`--quiet'
-`--silent'
-`-q'
- Do not print messages saying which checks are being made. To
- suppress all normal output, redirect it to `/dev/null' (any error
- messages will still be shown).
-
-`--srcdir=DIR'
- Look for the package's source code in directory DIR. Usually
- `configure' can determine that directory automatically.
-
-`--prefix=DIR'
- Use DIR as the installation prefix. *note Installation Names::
- for more details, including other options available for fine-tuning
- the installation locations.
-
-`--no-create'
-`-n'
- Run the configure checks, but stop before creating any output
- files.
-
-`configure' also accepts some other, not widely useful, options. Run
-`configure --help' for more details.
-
-include $(top_srcdir)/build/autotools/Makefile.am.gtest
-include $(top_srcdir)/build/autotools/Makefile.am.silent
-
ACLOCAL_AMFLAGS = -I build/autotools
-SUBDIRS = build json-glib doc
-
-if ENABLE_GLIB_TEST
-SUBDIRS += tests
-endif
-
-DIST_SUBDIRS = build json-glib doc tests
-
-pcfiles = json-glib-1.0.pc
-
-json-glib-1.0.pc: json-glib.pc
- $(QUIET_GEN)cp -f $< $@
+EXTRA_DIST =
-pkgconfig_DATA = $(pcfiles)
-pkgconfigdir = $(libdir)/pkgconfig
+SUBDIRS = json-glib build po
-EXTRA_DIST += json-glib.pc.in
-
-CLEANFILES = $(pcfiles) test-report.xml
-
-DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --enable-maintainer-flags --enable-introspection
+DISTCHECK_CONFIGURE_FLAGS = --enable-man --enable-maintainer-flags --enable-introspection
dist-hook:
@if test -d "$(srcdir)/.git"; then \
echo Generating ChangeLog ; \
( cd "$(srcdir)" \
- && $(top_srcdir)/missing --run git log --stat ) > ChangeLog.tmp \
+ && $(top_srcdir)/build/missing --run git log --stat ) > ChangeLog.tmp \
&& mv -f ChangeLog.tmp $(top_distdir)/ChangeLog \
|| ( rm -f ChangeLog.tmp; \
echo Failed to generate ChangeLog >&2 ); \
else \
echo A git checkout is required to generate a ChangeLog >&2; \
fi
+
+if ENABLE_GCOV
+# use recursive makes in order to ignore errors during check/perf
+lcov:
+ -$(MAKE) $(AM_MAKEFLAGS) check
+ $(MAKE) $(AM_MAKEFLAGS) genlcov
+
+# we have to massage the lcov.info file slightly to hide the effect of libtool
+# placing the objects files in the .libs/ directory separate from the *.c
+genlcov:
+ $(LTP) --directory $(top_builddir) --capture --output-file json-lcov.info --test-name JSON_TEST --no-checksum
+ $(SED) -e 's#.libs/##' < json-lcov.info > json-lcov.info.tmp
+ LANG=C $(LTP_GENHTML) --prefix $(top_builddir) --output-directory json-lcov --title "JSON-GLib Code Coverage" --show-details json-lcov.info.tmp
+ rm -f json-lcov.info.tmp
+
+lcov-clean:
+ -$(LTP) --directory $(top_builddir) -z
+ -$(RM) -rf json-lcov.info json-lcov
+else
+lcov genlcov lcov-clean:
+ @echo You need to configure JSON-GLib with support for gcov enabled.
+ @echo e.g., ./configure --enable-gcov
+endif
+
+.PHONY: lcov genlcov lcov-clean
-Overview of changes for 0.10.4
+Overview of changes for 1.0
==============================
-• Improve the strictness of the JsonParser code by refactoring a large
- chunk of it
-• Fix JsonGenerator when dumping nodes with a floating point value
-• Add negative conformance test cases
+• Bump the dependency on GLib to 2.38
+• Use the TAP driver for the test suite
+• Improve the syntax validation in JsonPath
+• Validate the JsonParser input to be UTF-8
+• Add command line tools for validating and formatting JSON
+• Improve documentation
-Overview of changes for 0.10.2
+Overview of changes for 0.16.0
==============================
-• Documentation fixes for GBoxed transformation functions
-• Zero all fields of JsonObject on creation
+• Fixes for building with VisualStudio. [Chun-wei Fan]
+• Allow out-of-tree builds. [Colin Walters]
+• Bump the dependency on GLib to 2.31.
+• Use the new deprecation system provided by GLib.
+• Simplify the value handling inside JsonNode.
+• Use lcov to generate coverage reports for the test suite.
+• Check expected ABI when building.
+• Drop dependency on gnome-autogen.sh when building from Git.
+
+Overview of changes for 0.14.0
+==============================
+• Documentation fixes
+• Bump the dependency on GLib to 2.26
+• Allow building on Windows using VisualStudio [Chun-wei Fan]
+• Add JSON ↔ GVariant translation [Eduardo Lima Mitev]
+• Improve sanity checks when (de)serializing GObject
+ properties [Tristan Van Berkom]
+• Add missing introspection annotations [Luca Bruno]
+• Add JsonReader.list_members()
+• Allow using JsonReader.read_element() on JSON objects
+• Remove all G_CONST_RETURN usage after the deprecation
+• Allow JsonSerializable to override the introspection and
+ modification of properties
+• Add i18n support for GError messages
+• Do not serialize GObject properties that match their default
+ values.
+• Make JsonReader perform a stricter validation especially when using
+ the strongly typed accessors.
+
+Overview of changes for 0.12.0
+==============================
+• Support surrogate pairs in JSON strings [Eiichi Sato]
+• Update the test suite
+• Add (optional) coverage reports
+• Improve strictness of JsonParser
+• Improve error reporting of JsonParser
+• Add JsonBuilder, a convenience API for programmatic building
+ of JSON trees [Luca Bruno]
+• Add methods for JsonParser and JsonGenerator to handle Input|OutputStream
+ objects coming from GIO.
+• Add JsonReader, a convenience API for cursor-based parsing of
+ JSON trees
+• Depend on GObject-Introspection ≥ 0.9.5
Overview of changes for 0.10.0
==============================
+++ /dev/null
-JSON-GLib - A JSON parser for GLib-based libraries and applications
-===============================================================================
-
-JSON-GLib implements a full JSON parser using GLib and GObject.
-
-Use JSON-GLib it is possible to parse and generate valid JSON data
-structures, using a DOM-like API. JSON-GLib also offers GObject
-integration, providing the ability to serialize and deserialize
-GObject instances to and from JSON data types.
-
-JSON is the JavaScript Object Notation; it can be used to represent
-objects and object hierarchies while retaining human-readability.
-
-GLib is a C library providing common and efficient data types for
-the C developers.
-
-GObject is a library providing a run-time Object Oriented type system
-for C developers. GLib and GObject are extensively used by the GTK+
-toolkit and by the GNOME project.
-
-For more information, see:
- • JSON: http://www.json.org
- • GLib and GObject: http://www.gtk.org
-
-REQUIREMENTS
-------------
-In order to build JSON-GLib you will need:
-
- • pkg-config
- • gtk-doc >= 1.11
- • GLib >= 2.16
-
-Optionally, JSON-GLib depends on:
-
- • GObject-Introspection >= 0.6.4
-
-INSTALLATION
--------------------------------------------------------------------------------
-To build JSON-GLib just run:
-
- $ ./configure
- $ make all
- # make install
-
-BUGS
--------------------------------------------------------------------------------
-If you find a bug in JSON-GLib, please create a Bugzilla entry here:
-
- http://bugzilla.gnome.org/enter_bug.cgi?product=json-glib
-
-Attaching:
-
- • the version of JSON-GLib
- ◦ if it is a development version, the branch of the git repository
- • the JSON data that produced the bug (if any)
- • a small test case, if none of the test units exhibit the behaviour
- • in case of a segmentation fault, a full stack trace with debugging
- symbols obtained through gdb is greatly appreaciated
-
-RELEASE NOTES
--------------------------------------------------------------------------------
-• Prior to JSON-GLib 0.10, a JsonSerializable implementation could
- automatically fall back to the default serialization code by simply
- returning NULL from an overridden JsonSerializable::serialize_property()
- virtual function. Since JSON-GLib 0.10 this is not possible any more. A
- JsonSerializable is always expected to serialize and deserialize all
- properties. JSON-GLib provides public API for the default implementation
- in case the serialization code wants to fall back to that.
-
-HACKING
--------------------------------------------------------------------------------
-JSON-GLib is developed mainly inside a GIT repository available at:
-
- http://git.gnome.org/cgit/json-glib
-
-You can clone the GIT repository with:
-
- git clone git://git.gnome.org/json-glib
-
-If you want to contribute functionality or bug fixes to JSON-GLib you
-can either notify me to pull from your GIT repository or send me a set
-of patches using:
-
- git format-patch master -k -s
-
-or:
-
- git send-email -k -s
-
-Make sure you always run the test suite when you are fixing bugs. New
-features should come with a test unit.
-
-AUTHOR, COPYRIGHT AND LICENSING
--------------------------------------------------------------------------------
-JSON-GLib has been written by Emmanuele Bassi
-
-JSON-GLib is released under the terms of the GNU Lesser General Public License,
-either version 2.1 or (at your option) any later version.
-
-See the file COPYING for details.
-
-Copyright (C) 2007 OpenedHand Ltd
-Copyright (C) 2009 Intel Corp.
--- /dev/null
+JSON-GLib
+===============================================================================
+
+JSON-GLib implements a full suite of JSON-related tools using GLib and GObject.
+
+Use JSON-GLib it is possible to parse and generate valid JSON data
+structures using a DOM-like API. JSON-GLib also integrates with GObject to
+provide the ability to serialize and deserialize GObject instances to and from
+JSON data types.
+
+JSON is the JavaScript Object Notation; it can be used to represent objects and
+object hierarchies while retaining human-readability.
+
+GLib is a C library providing common and efficient data types for the C
+developers.
+
+GObject is a library providing a run-time Object Oriented type system for C
+developers. GLib and GObject are extensively used by the GTK+ toolkit and by the
+GNOME project.
+
+For more information, see:
+
+ * [JSON][json]
+ * [GLib and GObject][glib]
+ * [JSON-GLib][json-glib]
+
+REQUIREMENTS
+------------
+In order to build JSON-GLib you will need:
+
+ * pkg-config
+ * gtk-doc ≥ 1.13
+ * GLib, GIO ≥ 2.38
+
+Optionally, JSON-GLib depends on:
+
+ * GObject-Introspection ≥ 1.38
+ * LCov ≥ 1.6
+
+INSTALLATION
+------------
+To build JSON-GLib just run:
+
+ $ ./configure
+ $ make all
+ # make install
+
+BUGS
+----
+JSON-GLib tracks bugs in the GNOME Bugzilla.
+
+If you find a bug in JSON-GLib, please file an issue using
+[the appropriate form][bugzilla-enter-bug]. You can also check
+[the list of open bugs][bugzilla-bug-page].
+
+Required information:
+
+ * the version of JSON-GLib
+ * if it is a development version, the branch of the git repository
+ * the JSON data that produced the bug (if any)
+ * a small, self-contained test case, if none of the test units exhibit the
+ buggy behaviour
+ * in case of a segmentation fault, a full stack trace with debugging
+ symbols obtained through gdb is greatly appreaciated
+
+RELEASE NOTES
+-------------
+ * Prior to JSON-GLib 0.10, a JsonSerializable implementation could
+ automatically fall back to the default serialization code by simply
+ returning NULL from an overridden JsonSerializable::serialize-property
+ virtual function. Since JSON-GLib 0.10 this is not possible any more. A
+ JsonSerializable is always expected to serialize and deserialize all
+ properties. JSON-GLib provides public API for the default implementation
+ in case the serialization code wants to fall back to that.
+
+HACKING
+-------
+JSON-GLib is developed mainly inside a GIT repository available at:
+
+ https://git.gnome.org/browse/json-glib
+
+You can clone the GIT repository with:
+
+ git clone git://git.gnome.org/json-glib
+
+If you want to contribute functionality or bug fixes to JSON-GLib you can either
+notify me to pull from your Git repository, or you can attach patches for review
+to a bug on [the bug tracking system][bugzilla] using
+
+ git format-patch master -k -s
+
+to generate the patches from each commit. Using [git-bz][git-bz] to automate
+this process is strongly encouraged.
+
+Please, try to conform to the coding style used by JSON-GLib, which is the same
+used by projects like GLib, GTK+, and Clutter. Coding style conformance is a
+requirement for upstream acceptance.
+
+Make sure you always run the test suite when you are fixing bugs. New features
+should come with a test unit. Patches that regress the test suite will be
+rejected.
+
+AUTHOR, COPYRIGHT AND LICENSING
+-------------------------------
+JSON-GLib has been written by Emmanuele Bassi
+
+JSON-GLib is released under the terms of the GNU Lesser General Public License,
+either version 2.1 or (at your option) any later version.
+
+See the file COPYING for details.
+
+Copyright (C) 2007, 2008 OpenedHand Ltd
+Copyright (C) 2009, 2010, 2011, 2012 Intel Corp.
+Copyright (C) 2013 Emmanuele Bassi
+
+[json]: http://www.json.org "JSON"
+[glib]: http://www.gtk.org "GTK+"
+[json-glib]: https://wiki.gnome.org/Project/JsonGlib "JSON-GLib wiki"
+[bugzilla]: https://bugzilla.gnome.org "GNOME Bugzilla"
+[bugzilla-bug-page]: https://http://bugzilla.gnome.org/browse.cgi?product=json-glib "GNOME Bugzilla - Browse: json-glib"
+[bugzilla-enter-bug]: https://bugzilla.gnome.org/enter_bug.cgi?product=json-glib "GNOME Bugzilla - Enter bug: json-glib"
+[git-bz]: http://blog.fishsoup.net/2008/11/16/git-bz-bugzilla-subcommand-for-git/
+++ /dev/null
-#!/bin/sh
-
-. ./config
-export TET_INSTALL_PATH=$TET_INSTALL_HOST_PATH # tetware root path
-export TET_TARGET_PATH=$TET_INSTALL_PATH/tetware-target # tetware target path
-export PATH=$TET_TARGET_PATH/bin:$PATH
-export LD_LIBRARY_PATH=$TET_TARGET_PATH/lib/tet3:$LD_LIBRARY_PATH
-export TET_ROOT=$TET_TARGET_PATH
+++ /dev/null
-#!/bin/sh
-. ./config
-export TET_INSTALL_PATH=$TET_INSTALL_TARGET_PATH # path to path
-export TET_TARGET_PATH=$TET_INSTALL_PATH/tetware-target
-export PATH=$TET_TARGET_PATH/bin:$PATH
-export LD_LIBRARY_PATH=$TET_TARGET_PATH/lib/tet3:$LD_LIBRARY_PATH
-export TET_ROOT=$TET_TARGET_PATH
+++ /dev/null
-#!/bin/sh
-
-. ./_export_env.sh # setting environment variables
-
-export TET_SUITE_ROOT=`pwd`
-FILE_NAME_EXTENSION=`date +%s`
-
-RESULT_DIR=results
-HTML_RESULT=$RESULT_DIR/build-tar-result-$FILE_NAME_EXTENSION.html
-JOURNAL_RESULT=$RESULT_DIR/build-tar-result-$FILE_NAME_EXTENSION.journal
-
-mkdir -p $RESULT_DIR
-
-tcc -c -p ./
-tcc -b -j $JOURNAL_RESULT -p ./
-grw -c 7 -f chtml -o $HTML_RESULT $JOURNAL_RESULT
+++ /dev/null
-#!/bin/sh
-
-. ./_export_env.sh # setting environment variables
-
-export TET_SUITE_ROOT=`pwd`
-RESULT_DIR=results
-
-tcc -c -p ./ # executing tcc, with clean option (-c)
-rm -r $RESULT_DIR
-rm -r tet_tmp_dir
-rm testcase/tet_captured
+++ /dev/null
-TET_INSTALL_HOST_PATH=/home/ivan/xuyun/DTS/TETware
-TET_INSTALL_TARGET_PATH=/mnt/nfs/DTS/TETware
+++ /dev/null
-#!/bin/sh
-
-. ./_export_target_env.sh # setting environment variables
-
-export TET_SUITE_ROOT=`pwd`
-FILE_NAME_EXTENSION=`date +%s`
-
-RESULT_DIR=results
-HTML_RESULT=$RESULT_DIR/exec-tar-result-$FILE_NAME_EXTENSION.html
-JOURNAL_RESULT=$RESULT_DIR/exec-tar-result-$FILE_NAME_EXTENSION.journal
-
-mkdir -p $RESULT_DIR
-
-tcc -e -j $JOURNAL_RESULT -p ./
-grw -c 3 -f chtml -o $HTML_RESULT $JOURNAL_RESULT
+++ /dev/null
-all
- ^TEST
-##### Scenarios for TEST #####
-
-# Test scenario
-TEST
- :include:/unit/TC_Parser/tslist
- :include:/unit/TC_Generator/tslist
- :include:/unit/TC_Types/tslist
- :include:/unit/TC_Gobject/tslist
\ No newline at end of file
+++ /dev/null
-TET_OUTPUT_CAPTURE=False # capture option for build operation checking
-TET_BUILD_TOOL=make # build with using make command
-TET_BUILD_FILE=-f Makefile # execution file (Makefile) for build
-TET_API_COMPLIANT=True # use TET API in Test Case ?
-TET_PASS_TC_NAME=True # report passed TC name in Journal file?
+++ /dev/null
-TET_OUTPUT_CAPTURE=True # capture option
-TET_CLEAN_TOOL= make clean # clean tool
-TET_CLEAN_FILE= Makefile # file for clean
-TET_API_COMPLIANT=True # TET API useage
-TET_PASS_TC_NAME=True # showing name , passed TC
+++ /dev/null
-TET_OUTPUT_CAPTURE=True # capturing execution or not
-TET_EXEC_TOOL= # ex) exec : execution tool set up/ Optional
-TET_EXEC_FILE= # ex) exectool : execution file/ Optional
-TET_API_COMPLIANT=True # Test case or Tool usesTET API?
-TET_PASS_TC_NAME=True # showing Passed TC name ?
+++ /dev/null
-testbuildtype=normal
-#export testbuildtype
-
-all: TCParser TC_Generator TC_Types TC_Gobject
- echo done
-
-TCParser:
- make -s -C TC_Parser
-
-TC_Generator:
- make -s -C TC_Generator
-
-TC_Types:
- make -s -C TC_Types
-
-TC_Gobject:
- make -s -C TC_Gobject
-
-clean:
- make clean -C TC_Parser
- make clean -C TC_Generator
- make clean -C TC_Types
- make clean -C TC_Gobject
-
\ No newline at end of file
+++ /dev/null
-###################################################
-# add your TestCase List Here
-#
-# e.g.,
-# TC1 = utc_frameworkName_apiName_func
-# TC2 = utc_ApplicationLib_recurGetDayOfWeek_func
-TARGETS = utc_libjson_json_generator_new_func \
- utc_libjson_json_generator_to_file_func \
- utc_libjson_json_generator_to_data_func \
- utc_libjson_json_generator_set_root_func
-###################################################
-# add your Package Config Info Here
-#
-# e.g.,
-# PKGS=calendar
-PKGS=json-glib-1.0
-
-LIBS = `pkg-config --libs $(PKGS)`
-LIBS += `pkg-config --libs glib-2.0`
-LIBS +=$(TET_ROOT)/lib/tet3/tcm_s.o
-LIBS +=-L$(TET_ROOT)/lib/tet3 -ltcm_s
-LIBS +=-L$(TET_ROOT)/lib/tet3 -lapi_s
-
-INCS = -I. `pkg-config --cflags $(PKGS)`
-INCS += -I. `pkg-config --cflags glib-2.0`
-INCS += -I$(TET_ROOT)/inc/tet3
-
-
-CFLAGS = $(INCS)
-CFLAGS += -D_TETWARE_MODE
-CFLAGS += -Wall
-LDFLAGS = $(LIBS)
-
-###################################################
-# Modify here
-# depending on the Test Case you want to build
-#
-# e.g.,
-# TCLIST = $(TC1) $(TC2)
-all : $(TARGETS)
-
-$(TARGETS) : %: %.c
- $(CC) -o $@ $< $(CFLAGS) $(LDFLAGS)
-
-clean :
- rm -rf $(TARGETS)
-
+++ /dev/null
-/unit/TC_Generator/utc_libjson_json_generator_new_func
-/unit/TC_Generator/utc_libjson_json_generator_to_file_func
-/unit/TC_Generator/utc_libjson_json_generator_to_data_func
-/unit/TC_Generator/utc_libjson_json_generator_set_root_func
\ No newline at end of file
+++ /dev/null
-#include <tet_api.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <glib.h>
-#include <json-glib/json-glib.h>
-
-static void startup(void);
-static void cleanup(void);
-
-void (*tet_startup)(void) = startup;
-void (*tet_cleanup)(void) = cleanup;
-
-static void utc_libjson_json_generator_new_func_01(void);
-static void utc_libjson_json_generator_new_func_02(void);
-
-
-enum {
- POSITIVE_TC_IDX = 0x01,
- NEGATIVE_TC_IDX,
-};
-
-struct tet_testlist tet_testlist[] = {
- { utc_libjson_json_generator_new_func_01, POSITIVE_TC_IDX },
- { utc_libjson_json_generator_new_func_02, POSITIVE_TC_IDX },
- { NULL, 0 }
-};
-
-
-static void startup(void)
-{
- g_type_init();
-}
-
-static void cleanup(void)
-{
-}
-
-/**
- * @brief Positive test case of json_generator_new()
- */
-static void utc_libjson_json_generator_new_func_01(void)
-{
- JsonGenerator *gen = NULL;
-
- gen = json_generator_new();
- dts_check_ne("json_generator_new", gen, NULL);
-
- g_object_unref (gen);
-}
-
-/**
- * @brief Negative test case of ug_init json_generator_new()
- */
-static void utc_libjson_json_generator_new_func_02(void)
-{
- JsonGenerator *gen = NULL;
-
- gen = json_generator_new();
- dts_check_ne("json_generator_new", gen, NULL);
- dts_check_eq("json_generator_new", JSON_IS_GENERATOR (gen), TRUE);
-
- g_object_unref (gen);
-}
-
+++ /dev/null
-#include <tet_api.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <glib.h>
-
-#include <json-glib/json-glib.h>
-
-static void startup(void);
-static void cleanup(void);
-
-void (*tet_startup)(void) = startup;
-void (*tet_cleanup)(void) = cleanup;
-
-static void utc_libjson_json_generator_set_root_func_01(void);
-
-enum {
- POSITIVE_TC_IDX = 0x01,
- NEGATIVE_TC_IDX,
-};
-
-struct tet_testlist tet_testlist[] = {
- { utc_libjson_json_generator_set_root_func_01, POSITIVE_TC_IDX },
- { NULL, 0 }
-};
-
-static void startup(void)
-{
- g_type_init ();
-}
-
-static void cleanup(void)
-{
-}
-
-
-static void utc_libjson_json_generator_set_root_func_01(void)
-{
- JsonGenerator *gen = NULL;
- JsonParser *parser = NULL;
- GError *error = NULL;
-
- JsonNode *root = NULL;
- gchar *data = NULL;
- gsize len = 0;
-
- gen = json_generator_new();
- dts_check_ne("json_generator_set_root", gen, NULL);
-
- root = json_node_new (JSON_NODE_ARRAY);
- json_node_take_array (root, json_array_new ());
-
- json_generator_set_root (gen, root);
- g_object_set (gen, "pretty", FALSE, NULL);
-
- data = json_generator_to_data (gen, &len);
- json_node_free (root);
- g_object_unref (gen);
-
- parser = json_parser_new ();
- g_assert(JSON_IS_PARSER (parser));
- if (!json_parser_load_from_data (parser, data, -1, &error))
- {
- g_error_free (error);
- }
- else
- {
- root = json_parser_get_root (parser);
- dts_check_ne("json_generator_set_root", root, NULL);
- dts_check_eq("json_generator_set_root", JSON_NODE_TYPE(root), JSON_NODE_ARRAY);
- }
-
- dts_pass("json_generator_set_root", "pass");
-
- g_free (data);
- g_object_unref (parser);
-
-}
-
-
+++ /dev/null
-#include <tet_api.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <glib.h>
-
-#include <json-glib/json-glib.h>
-
-static void startup(void);
-static void cleanup(void);
-
-void (*tet_startup)(void) = startup;
-void (*tet_cleanup)(void) = cleanup;
-
-static void utc_libjson_json_generator_to_data_func_01(void);
-static void utc_libjson_json_generator_to_data_func_02(void);
-static void utc_libjson_json_generator_to_data_func_03(void);
-static void utc_libjson_json_generator_to_data_func_04(void);
-static void utc_libjson_json_generator_to_data_func_05(void);
-static void utc_libjson_json_generator_to_data_func_06(void);
-static void utc_libjson_json_generator_to_data_func_07(void);
-
-
-enum {
- POSITIVE_TC_IDX = 0x01,
- NEGATIVE_TC_IDX,
-};
-
-struct tet_testlist tet_testlist[] = {
- { utc_libjson_json_generator_to_data_func_01, POSITIVE_TC_IDX },
- { utc_libjson_json_generator_to_data_func_02, POSITIVE_TC_IDX },
- { utc_libjson_json_generator_to_data_func_03, POSITIVE_TC_IDX },
- { utc_libjson_json_generator_to_data_func_04, POSITIVE_TC_IDX },
- { utc_libjson_json_generator_to_data_func_05, POSITIVE_TC_IDX },
- { utc_libjson_json_generator_to_data_func_06, POSITIVE_TC_IDX },
- { utc_libjson_json_generator_to_data_func_07, POSITIVE_TC_IDX },
- { NULL, 0 }
-};
-
-static const gchar *empty_array = "[ ]";
-static const gchar *empty_object = "{ }";
-
-static const gchar *simple_array = "[ true, false, null, 42, \"foo\" ]";
-static const gchar *nested_array = "[ true, [ false, null ], 42 ]";
-
-static const gchar *simple_object = "{ \"Bool1\" : true, \"Bool2\" : false, \"Null\" : null, \"Int\" : 42, \"String\" : \"foo\" }";
-
-
-static void startup(void)
-{
- g_type_init();
-}
-
-static void cleanup(void)
-{
-}
-
-
-/**
- * @brief Positive test case of json_generator_to_data()
- */
-static void utc_libjson_json_generator_to_data_func_01(void)
-{
- gchar *data = NULL;
- gsize len = 0;
-
- data = json_generator_to_data (NULL, &len);
- dts_check_eq("json_generator_to_data", len, 0);
- dts_check_eq("json_generator_to_data", data, NULL);
-}
-
-
-/**
- * @brief Positive test case of json_generator_to_data()
- */
-static void utc_libjson_json_generator_to_data_func_02(void)
-{
- JsonGenerator *gen = NULL;
- gchar *data = NULL;
- gsize len = 0;
-
- gen = json_generator_new();
- dts_check_ne("json_generator_to_data", gen, NULL);
-
- data = json_generator_to_data (gen, &len);
- dts_check_eq("json_generator_to_data", len, 0);
- dts_check_eq("json_generator_to_data", data, NULL);
-
- g_object_unref (gen);
-}
-
-static void utc_libjson_json_generator_to_data_func_03(void)
-{
- JsonGenerator *gen = NULL;
- JsonNode *root = NULL;
- gchar *data = NULL;
- gsize len = 0;
-
- gen = json_generator_new();
- dts_check_ne("json_generator_to_data", gen, NULL);
-
- root = json_node_new (JSON_NODE_ARRAY);
- json_node_take_array (root, json_array_new ());
-
- json_generator_set_root (gen, root);
- g_object_set (gen, "pretty", FALSE, NULL);
-
- data = json_generator_to_data (gen, &len);
- dts_check_eq("json_generator_to_data", len, strlen(empty_array));
- dts_check_str_eq("json_generator_to_data", data, empty_array);
-
- g_free (data);
- json_node_free (root);
- g_object_unref (gen);
-
-}
-
-static void utc_libjson_json_generator_to_data_func_04(void)
-{
- JsonGenerator *gen = NULL;
- JsonNode *root = NULL;
- gchar *data = NULL;
- gsize len = 0;
-
- gen = json_generator_new();
- dts_check_ne("json_generator_to_data", gen, NULL);
-
- root = json_node_new (JSON_NODE_OBJECT);
- json_node_take_object (root, json_object_new ());
-
- json_generator_set_root (gen, root);
- g_object_set (gen, "pretty", FALSE, NULL);
-
- data = json_generator_to_data (gen, &len);
- dts_check_eq("json_generator_to_data", len, strlen(empty_object));
- dts_check_str_eq("json_generator_to_data", data, empty_object);
-
- g_free (data);
- json_node_free (root);
- g_object_unref (gen);
-}
-
-static void utc_libjson_json_generator_to_data_func_05(void)
-{
- JsonGenerator *gen = NULL;
- JsonNode *root = NULL;
- JsonNode *val = NULL;
- JsonArray *array = NULL;
- GValue value = { 0, };
- gchar *data = NULL;
- gsize len = 0;
-
- gen = json_generator_new();
- dts_check_ne("json_generator_to_data", gen, NULL);
-
- root = json_node_new (JSON_NODE_ARRAY);
- array = json_array_sized_new (6);
-
- val = json_node_new (JSON_NODE_VALUE);
- g_value_init (&value, G_TYPE_BOOLEAN);
- g_value_set_boolean (&value, TRUE);
- json_node_set_value (val, &value);
- json_array_add_element (array, val);
- g_value_unset (&value);
-
- val = json_node_new (JSON_NODE_VALUE);
- json_node_set_boolean (val, FALSE);
- json_array_add_element (array, val);
-
- val = json_node_new (JSON_NODE_NULL);
- json_array_add_element (array, val);
-
- json_array_add_int_element (array, 42);
-
- val = json_node_new (JSON_NODE_VALUE);
- g_value_init (&value, G_TYPE_STRING);
- g_value_set_string (&value, "foo");
- json_node_set_value (val, &value);
- json_array_add_element (array, val);
- g_value_unset (&value);
-
- json_node_take_array (root, array);
- json_generator_set_root (gen, root);
- g_object_set (gen, "pretty", FALSE, NULL);
-
- data = json_generator_to_data (gen, &len);
- dts_check_eq("json_generator_to_data", len, strlen(simple_array));
- dts_check_str_eq("json_generator_to_data", data, simple_array);
-
- g_free (data);
- json_node_free (root);
- g_object_unref (gen);
-}
-
-static void utc_libjson_json_generator_to_data_func_06(void)
-{
- JsonGenerator *gen = NULL;
- JsonNode *root = NULL;
- JsonNode *val = NULL;
- JsonArray *array = NULL;
- JsonArray *nested = NULL;
- GValue value = { 0, };
- gchar *data = NULL;
- gsize len = 0;
-
- gen = json_generator_new();
- dts_check_ne("json_generator_to_data", gen, NULL);
-
- root = json_node_new (JSON_NODE_ARRAY);
- array = json_array_sized_new (3);
-
- val = json_node_new (JSON_NODE_VALUE);
- g_value_init (&value, G_TYPE_BOOLEAN);
- g_value_set_boolean (&value, TRUE);
- json_node_set_value (val, &value);
- json_array_add_element (array, val);
- g_value_unset (&value);
-
- nested = json_array_new ();
- json_array_add_boolean_element (nested, FALSE);
- json_array_add_null_element (nested);
- json_array_add_array_element (array, nested);
-
- val = json_node_new (JSON_NODE_VALUE);
- g_value_init (&value, G_TYPE_INT64);
- g_value_set_int64 (&value, 42);
- json_node_set_value (val, &value);
- json_array_add_element (array, val);
- g_value_unset (&value);
-
- json_node_take_array (root, array);
- json_generator_set_root (gen, root);
- g_object_set (gen, "pretty", FALSE, NULL);
-
- data = json_generator_to_data (gen, &len);
- dts_check_eq("json_generator_to_data", len, strlen(nested_array));
- dts_check_str_eq("json_generator_to_data", data, nested_array);
-
- g_free (data);
- json_node_free (root);
- g_object_unref (gen);
-}
-
-static void utc_libjson_json_generator_to_data_func_07(void)
-{
- JsonGenerator *gen = NULL;
- JsonNode *root = NULL;
- JsonObject *object = NULL;
- gchar *data = NULL;
- gsize len = 0;
-
- gen = json_generator_new();
- dts_check_ne("json_generator_to_data", gen, NULL);
-
- root = json_node_new (JSON_NODE_OBJECT);
- object = json_object_new ();
-
- json_object_set_boolean_member (object, "Bool1", TRUE);
- json_object_set_boolean_member (object, "Bool2", FALSE);
- json_object_set_null_member (object, "Null");
- json_object_set_int_member (object, "Int", 42);
- json_object_set_string_member (object, "String", "foo");
-
- json_node_take_object (root, object);
- json_generator_set_root (gen, root);
- g_object_set (gen, "pretty", FALSE, NULL);
-
- data = json_generator_to_data (gen, &len);
- dts_check_eq("json_generator_to_data", len, strlen(simple_object));
- dts_check_str_eq("json_generator_to_data", data, simple_object);
-
- g_free (data);
- json_node_free (root);
- g_object_unref (gen);
-}
-
-
+++ /dev/null
-#include <tet_api.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <glib.h>
-#include <glib/gstdio.h>
-
-#include <json-glib/json-glib.h>
-
-
-static void startup(void);
-static void cleanup(void);
-
-void (*tet_startup)(void) = startup;
-void (*tet_cleanup)(void) = cleanup;
-
-static void utc_libjson_json_generator_to_file_func_01(void);
-static void utc_libjson_json_generator_to_file_func_02(void);
-static void utc_libjson_json_generator_to_file_func_03(void);
-static void utc_libjson_json_generator_to_file_func_04(void);
-
-static const gchar *test_filename = "gen_test.info";
-
-enum {
- POSITIVE_TC_IDX = 0x01,
- NEGATIVE_TC_IDX,
-};
-
-struct tet_testlist tet_testlist[] = {
- { utc_libjson_json_generator_to_file_func_01, POSITIVE_TC_IDX },
- { utc_libjson_json_generator_to_file_func_02, POSITIVE_TC_IDX },
- { utc_libjson_json_generator_to_file_func_03, POSITIVE_TC_IDX },
- { utc_libjson_json_generator_to_file_func_04, POSITIVE_TC_IDX },
- { NULL, 0 }
-};
-
-
-static void startup(void)
-{
- g_type_init();
-}
-
-static void cleanup(void)
-{
-}
-
-
-/**
- * @brief Positive test case of json_generator_to_file()
- */
-static void utc_libjson_json_generator_to_file_func_01(void)
-{
- GError *error = NULL;
- gboolean ret = FALSE;
-
- ret = json_generator_to_file (NULL, NULL, &error);
- dts_check_eq("json_generator_to_data", ret, FALSE);
-}
-
-
-static void utc_libjson_json_generator_to_file_func_02(void)
-{
- JsonGenerator *gen = NULL;
- GError *error = NULL;
- gboolean ret = FALSE;
-
- gen = json_generator_new();
- dts_check_ne("json_generator_to_data", gen, NULL);
-
- ret = json_generator_to_file (gen, NULL, &error);
- dts_check_eq("json_generator_to_data", ret, FALSE);
-
- g_object_unref (gen);
-}
-
-static void utc_libjson_json_generator_to_file_func_03(void)
-{
- JsonGenerator *gen = NULL;
- GError *error = NULL;
- gboolean ret = FALSE;
-
- gen = json_generator_new();
- dts_check_ne("json_generator_to_data", gen, NULL);
-
- ret = json_generator_to_file (gen, "", &error);
- dts_check_eq("json_generator_to_data", ret, FALSE);
-
- g_object_unref (gen);
-}
-
-static void utc_libjson_json_generator_to_file_func_04(void)
-{
- JsonGenerator *gen = NULL;
- GError *error = NULL;
- gboolean ret = FALSE;
-
- gen = json_generator_new();
- dts_check_ne("json_generator_to_data", gen, NULL);
-
- g_remove(test_filename);
- ret = json_generator_to_file (gen, test_filename, &error);
- dts_check_eq("json_generator_to_data", ret, TRUE);
-
- ret = g_file_test(test_filename, G_FILE_TEST_EXISTS);
- dts_check_eq("json_generator_to_data", ret, TRUE);
-
- g_object_unref (gen);
-}
-
+++ /dev/null
-###################################################
-# add your TestCase List Here
-#
-# e.g.,
-# TC1 = utc_frameworkName_apiName_func
-# TC2 = utc_ApplicationLib_recurGetDayOfWeek_func
-TARGETS = utc_libjson_json_serialize_boxed_func \
- utc_libjson_json_serialize_gobject_func \
- utc_libjson_json_serialize_interface_func \
- utc_libjson_json_serialize_simple_func \
- utc_libjson_json_serialize_complex_func \
- utc_libjson_json_serialize_full_func
-###################################################
-# add your Package Config Info Here
-#
-# e.g.,
-# PKGS=calendar
-PKGS=json-glib-1.0
-
-LIBS = `pkg-config --libs $(PKGS)`
-LIBS += `pkg-config --libs glib-2.0`
-LIBS +=$(TET_ROOT)/lib/tet3/tcm_s.o
-LIBS +=-L$(TET_ROOT)/lib/tet3 -ltcm_s
-LIBS +=-L$(TET_ROOT)/lib/tet3 -lapi_s
-
-INCS = -I. `pkg-config --cflags $(PKGS)`
-INCS += -I. `pkg-config --cflags glib-2.0`
-INCS += -I$(TET_ROOT)/inc/tet3
-
-
-CFLAGS = $(INCS)
-CFLAGS += -D_TETWARE_MODE
-CFLAGS += -Wall
-LDFLAGS = $(LIBS)
-
-###################################################
-# Modify here
-# depending on the Test Case you want to build
-#
-# e.g.,
-# TCLIST = $(TC1) $(TC2)
-all : $(TARGETS)
-
-$(TARGETS) : %: %.c
- $(CC) -o $@ $< $(CFLAGS) $(LDFLAGS)
-
-clean :
- rm -rf $(TARGETS)
-
+++ /dev/null
-/unit/TC_Gobject/utc_libjson_json_serialize_boxed_func
-/unit/TC_Gobject/utc_libjson_json_serialize_gobject_func
-/unit/TC_Gobject/utc_libjson_json_serialize_interface_func
-/unit/TC_Gobject/utc_libjson_json_serialize_simple_func
-/unit/TC_Gobject/utc_libjson_json_serialize_complex_func
-/unit/TC_Gobject/utc_libjson_json_serialize_full_func
\ No newline at end of file
+++ /dev/null
-#include <tet_api.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <glib-object.h>
-
-#include <json-glib/json-glib.h>
-
-static void startup(void);
-static void cleanup(void);
-
-void (*tet_startup)(void) = startup;
-void (*tet_cleanup)(void) = cleanup;
-
-static void utc_libjson_json_serialize_boxed_func_01(void);
-static void utc_libjson_json_serialize_boxed_func_02(void);
-static void utc_libjson_json_serialize_boxed_func_03(void);
-static void utc_libjson_json_serialize_boxed_func_04(void);
-static void utc_libjson_json_serialize_boxed_func_05(void);
-static void utc_libjson_json_serialize_boxed_func_06(void);
-
-
-
-enum {
- POSITIVE_TC_IDX = 0x01,
- NEGATIVE_TC_IDX,
-};
-
-struct tet_testlist tet_testlist[] = {
- { utc_libjson_json_serialize_boxed_func_01, POSITIVE_TC_IDX },
- { utc_libjson_json_serialize_boxed_func_02, POSITIVE_TC_IDX },
- { utc_libjson_json_serialize_boxed_func_03, POSITIVE_TC_IDX },
- { utc_libjson_json_serialize_boxed_func_04, POSITIVE_TC_IDX },
- { utc_libjson_json_serialize_boxed_func_05, POSITIVE_TC_IDX },
- { utc_libjson_json_serialize_boxed_func_06, POSITIVE_TC_IDX },
- { NULL, 0 }
-};
-
-
-#define TEST_TYPE_BOXED (test_boxed_get_type ())
-#define TEST_TYPE_OBJECT (test_object_get_type ())
-#define TEST_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TEST_TYPE_OBJECT, TestObject))
-#define TEST_IS_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TEST_TYPE_OBJECT))
-#define TEST_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TEST_TYPE_OBJECT, TestObjectClass))
-#define TEST_IS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TEST_TYPE_OBJECT))
-#define TEST_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TEST_TYPE_OBJECT, TestObjectClass))
-
-
-typedef struct _TestBoxed TestBoxed;
-typedef struct _TestObject TestObject;
-typedef struct _TestObjectClass TestObjectClass;
-
-struct _TestBoxed
-{
- gint foo;
- gboolean bar;
-};
-
-struct _TestObject
-{
- GObject parent_instance;
-
- TestBoxed blah;
-};
-
-struct _TestObjectClass
-{
- GObjectClass parent_class;
-};
-
-GType test_object_get_type (void);
-
-
-static const gchar *serialize_data =
-"{\n"
-" \"blah\" : {\n"
-" \"foo\" : 42,\n"
-" \"bar\" : true\n"
-" }\n"
-"}";
-
-
-static void startup(void)
-{
- g_type_init();
-}
-
-static void cleanup(void)
-{
-}
-
-
-/*** implementation ***/
-
-static gpointer
-test_boxed_copy (gpointer src)
-{
- return g_slice_dup (TestBoxed, src);
-}
-
-static void
-test_boxed_free (gpointer boxed)
-{
- if (G_LIKELY (boxed != NULL))
- g_slice_free (TestBoxed, boxed);
-}
-
-static JsonNode *
-test_boxed_serialize (gconstpointer boxed)
-{
- const TestBoxed *test = boxed;
- JsonObject *object;
- JsonNode *node;
-
- if (boxed == NULL)
- return json_node_new (JSON_NODE_NULL);
-
- object = json_object_new ();
- node = json_node_new (JSON_NODE_OBJECT);
-
- json_object_set_int_member (object, "foo", test->foo);
- json_object_set_boolean_member (object, "bar", test->bar);
-
- json_node_take_object (node, object);
-
- if (g_test_verbose ())
- {
- g_print ("Serialize: { foo: %" G_GINT64_FORMAT ", bar: %s }\n",
- json_object_get_int_member (object, "foo"),
- json_object_get_boolean_member (object, "bar") ? "true" : "false");
- }
-
- return node;
-}
-
-static gpointer
-test_boxed_deserialize (JsonNode *node)
-{
- JsonObject *object;
- TestBoxed *test;
-
- if (json_node_get_node_type (node) != JSON_NODE_OBJECT)
- return NULL;
-
- object = json_node_get_object (node);
-
- test = g_slice_new (TestBoxed);
- test->foo = json_object_get_int_member (object, "foo");
- test->bar = json_object_get_boolean_member (object, "bar");
-
- if (g_test_verbose ())
- {
- g_print ("Deserialize: { foo: %d, bar: %s }\n",
- test->foo,
- test->bar ? "true" : "false");
- }
-
- return (gpointer)test;
-}
-
-GType
-test_boxed_get_type (void)
-{
- static GType b_type = 0;
-
- if (G_UNLIKELY (b_type == 0))
- {
- b_type = g_boxed_type_register_static ("TestBoxed",
- test_boxed_copy,
- test_boxed_free);
-
- if (g_test_verbose ())
- g_print ("Registering transform functions\n");
-
- json_boxed_register_serialize_func (b_type, JSON_NODE_OBJECT,
- test_boxed_serialize);
- json_boxed_register_deserialize_func (b_type, JSON_NODE_OBJECT,
- test_boxed_deserialize);
- }
-
- return b_type;
-}
-
-enum
-{
- PROP_0,
- PROP_BLAH
-};
-
-G_DEFINE_TYPE (TestObject, test_object, G_TYPE_OBJECT);
-
-static void
-test_object_finalize (GObject *gobject)
-{
- G_OBJECT_CLASS (test_object_parent_class)->finalize (gobject);
-}
-
-static void
-test_object_set_property (GObject *gobject,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- switch (prop_id)
- {
- case PROP_BLAH:
- {
- const TestBoxed *blah = g_value_get_boxed (value);
- TEST_OBJECT (gobject)->blah = *blah;
- }
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
- }
-}
-
-static void
-test_object_get_property (GObject *gobject,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- switch (prop_id)
- {
- case PROP_BLAH:
- g_value_set_boxed (value, &(TEST_OBJECT (gobject)->blah));
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
- }
-}
-
-static void
-test_object_class_init (TestObjectClass *klass)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
-
- gobject_class->set_property = test_object_set_property;
- gobject_class->get_property = test_object_get_property;
- gobject_class->finalize = test_object_finalize;
-
- g_object_class_install_property (gobject_class,
- PROP_BLAH,
- g_param_spec_boxed ("blah", "Blah", "Blah",
- TEST_TYPE_BOXED,
- G_PARAM_READWRITE));
-}
-
-static void
-test_object_init (TestObject *object)
-{
- object->blah.foo = 0;
- object->blah.bar = FALSE;
-}
-
-
-/**
- * @brief Positive test case of json_gobject_to_data()
- */
-static void utc_libjson_json_serialize_boxed_func_01(void)
-{
- TestBoxed boxed = { 42, TRUE };
- GObject *obj = NULL;
- gchar *data = NULL;
- gsize len = 0;
-
- obj = g_object_new(TEST_TYPE_OBJECT, "blah", &boxed, NULL);
-
- data = json_gobject_to_data (obj, &len);
-
- dts_check_eq("json_serialize_boxed", len, strlen(serialize_data));
- dts_check_str_eq("json_serialize_boxed", data, serialize_data);
-
- g_free(data);
- g_object_unref(obj);
-}
-
-/**
- * @brief Negative test case of json_gobject_from_data()
- */
-static void utc_libjson_json_serialize_boxed_func_02(void)
-{
- GObject *obj = NULL;
-
- obj = json_gobject_from_data(TEST_TYPE_OBJECT, serialize_data, -1, NULL);
- dts_check_eq("json_deserialize_boxed", TEST_IS_OBJECT(obj), TRUE);
- dts_check_eq("json_deserialize_boxed", TEST_OBJECT(obj)->blah.foo, 42);
- dts_check_eq("json_deserialize_boxed", TEST_OBJECT(obj)->blah.bar, TRUE);
-
- g_object_unref (obj);
-}
-
-/**
-* @brief Negative test case of json_boxed_can_serialize()
-*/
-static void utc_libjson_json_serialize_boxed_func_03(void)
-{
- gboolean ret = FALSE;
- JsonNodeType node_type = JSON_NODE_OBJECT;
- ret = json_boxed_can_serialize(TEST_TYPE_BOXED, &node_type);
- dts_check_eq("json_boxed_can_serialize", ret, TRUE);
-}
-
-/**
-* @brief Negative test case of json_boxed_can_deserialize()
-*/
-static void utc_libjson_json_serialize_boxed_func_04(void)
-{
- gboolean ret = FALSE;
- JsonNodeType node_type = JSON_NODE_OBJECT;
- ret = json_boxed_can_deserialize(TEST_TYPE_BOXED, node_type);
- dts_check_eq("json_boxed_can_deserialize", ret, TRUE);
-}
-
-/**
-* @brief Negative test case of json_boxed_serialize()
-*/
-static void utc_libjson_json_serialize_boxed_func_05(void)
-{
- TestBoxed boxed = { 42, TRUE };
- GObject *obj = NULL;
- JsonNode *node = NULL;
- JsonObject *object;
-
- obj = g_object_new(TEST_TYPE_BOXED, "blah", &boxed, NULL);
- node = json_boxed_serialize(TEST_TYPE_BOXED, &boxed);
- dts_check_eq("json_boxed_serialize", json_node_get_node_type (node), JSON_NODE_OBJECT);
- object = json_node_get_object (node);
- dts_check_eq("json_boxed_serialize", json_object_get_int_member(object, "foo"), 42);
- dts_check_eq("json_boxed_serialize", json_object_get_boolean_member(object, "bar"), TRUE);
-
- g_object_unref (obj);
- json_node_free (node);
-}
-
-/**
-* @brief Negative test case of json_boxed_deserialize()
-*/
-static void utc_libjson_json_serialize_boxed_func_06(void)
-{
- gpointer *obj = NULL;
- JsonObject *object = NULL;
- JsonNode *node = NULL;
-
- object = json_object_new();
- json_object_set_int_member (object, "foo", 42);
- json_object_set_boolean_member (object, "bar", TRUE);
- node = json_node_new(JSON_NODE_OBJECT);
- json_node_take_object (node, object);
-
- obj = json_boxed_deserialize(TEST_TYPE_BOXED, node);
- dts_check_ne("json_boxed_deserialize", obj, NULL);
- dts_check_eq("json_boxed_deserialize", ((TestBoxed*)obj)->foo, 42);
- dts_check_eq("json_boxed_deserialize", ((TestBoxed*)obj)->bar, TRUE);
-
- g_object_unref (obj);
- json_node_free (node);
-}
-
+++ /dev/null
-#include <tet_api.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <glib-object.h>
-
-#include <json-glib/json-glib.h>
-
-
-static void startup(void);
-static void cleanup(void);
-
-void (*tet_startup)(void) = startup;
-void (*tet_cleanup)(void) = cleanup;
-
-static void utc_libjson_json_serialize_complex_func_01(void);
-
-enum {
- POSITIVE_TC_IDX = 0x01,
- NEGATIVE_TC_IDX,
-};
-
-struct tet_testlist tet_testlist[] = {
- { utc_libjson_json_serialize_complex_func_01, POSITIVE_TC_IDX },
- { NULL, 0 }
-};
-
-
-#define TEST_TYPE_BOXED (test_boxed_get_type ())
-#define TEST_TYPE_OBJECT (test_object_get_type ())
-#define TEST_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TEST_TYPE_OBJECT, TestObject))
-#define TEST_IS_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TEST_TYPE_OBJECT))
-#define TEST_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TEST_TYPE_OBJECT, TestObjectClass))
-#define TEST_IS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TEST_TYPE_OBJECT))
-#define TEST_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TEST_TYPE_OBJECT, TestObjectClass))
-
-typedef struct _TestBoxed TestBoxed;
-typedef struct _TestObject TestObject;
-typedef struct _TestObjectClass TestObjectClass;
-
-struct _TestBoxed
-{
- gint foo;
- gboolean bar;
-};
-
-struct _TestObject
-{
- GObject parent_instance;
-
- gint foo;
- gboolean bar;
- gchar *baz;
- TestBoxed blah;
-};
-
-struct _TestObjectClass
-{
- GObjectClass parent_class;
-};
-
-GType test_object_get_type (void);
-
-
-static void startup(void)
-{
- g_type_init ();
-}
-
-static void cleanup(void)
-{
-}
-
-
-/*** implementation ***/
-
-static TestBoxed *
-test_boxed_copy (const TestBoxed *src)
-{
- TestBoxed *copy = g_slice_new (TestBoxed);
-
- *copy = *src;
-
- return copy;
-}
-
-static void
-test_boxed_free (TestBoxed *boxed)
-{
- if (G_LIKELY (boxed))
- {
- g_slice_free (TestBoxed, boxed);
- }
-}
-
-GType
-test_boxed_get_type (void)
-{
- static GType b_type = 0;
-
- if (G_UNLIKELY (b_type == 0))
- b_type = g_boxed_type_register_static ("TestBoxed",
- (GBoxedCopyFunc) test_boxed_copy,
- (GBoxedFreeFunc) test_boxed_free);
-
- return b_type;
-}
-
-enum
-{
- PROP_0,
-
- PROP_FOO,
- PROP_BAR,
- PROP_BAZ,
- PROP_BLAH
-};
-
-static JsonSerializableIface *serializable_iface = NULL;
-
-static void json_serializable_iface_init (gpointer g_iface);
-
-G_DEFINE_TYPE_WITH_CODE (TestObject, test_object, G_TYPE_OBJECT,
- G_IMPLEMENT_INTERFACE (JSON_TYPE_SERIALIZABLE,
- json_serializable_iface_init));
-
-static JsonNode *
-test_object_serialize_property (JsonSerializable *serializable,
- const gchar *name,
- const GValue *value,
- GParamSpec *pspec)
-{
- JsonNode *retval = NULL;
-
- if (strcmp (name, "blah") == 0)
- {
- TestBoxed *boxed;
- JsonObject *obj;
- JsonNode *val;
-
- retval = json_node_new (JSON_NODE_OBJECT);
- obj = json_object_new ();
-
- boxed = g_value_get_boxed (value);
-
- val = json_node_new (JSON_NODE_VALUE);
- json_node_set_int (val, boxed->foo);
- json_object_set_member (obj, "foo", val);
-
- val = json_node_new (JSON_NODE_VALUE);
- json_node_set_boolean (val, boxed->bar);
- json_object_set_member (obj, "bar", val);
-
- json_node_take_object (retval, obj);
- }
- else
- retval = serializable_iface->serialize_property (serializable,
- name,
- value, pspec);
-
- return retval;
-}
-
-static void
-json_serializable_iface_init (gpointer g_iface)
-{
- JsonSerializableIface *iface = g_iface;
-
- serializable_iface = g_type_default_interface_peek (JSON_TYPE_SERIALIZABLE);
-
- iface->serialize_property = test_object_serialize_property;
-}
-
-static void
-test_object_finalize (GObject *gobject)
-{
- g_free (TEST_OBJECT (gobject)->baz);
-
- G_OBJECT_CLASS (test_object_parent_class)->finalize (gobject);
-}
-
-static void
-test_object_set_property (GObject *gobject,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- switch (prop_id)
- {
- case PROP_FOO:
- TEST_OBJECT (gobject)->foo = g_value_get_int (value);
- break;
- case PROP_BAR:
- TEST_OBJECT (gobject)->bar = g_value_get_boolean (value);
- break;
- case PROP_BAZ:
- g_free (TEST_OBJECT (gobject)->baz);
- TEST_OBJECT (gobject)->baz = g_value_dup_string (value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
- }
-}
-
-static void
-test_object_get_property (GObject *gobject,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- switch (prop_id)
- {
- case PROP_FOO:
- g_value_set_int (value, TEST_OBJECT (gobject)->foo);
- break;
- case PROP_BAR:
- g_value_set_boolean (value, TEST_OBJECT (gobject)->bar);
- break;
- case PROP_BAZ:
- g_value_set_string (value, TEST_OBJECT (gobject)->baz);
- break;
- case PROP_BLAH:
- g_value_set_boxed (value, &(TEST_OBJECT (gobject)->blah));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
- }
-}
-
-static void
-test_object_class_init (TestObjectClass *klass)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
-
- gobject_class->set_property = test_object_set_property;
- gobject_class->get_property = test_object_get_property;
- gobject_class->finalize = test_object_finalize;
-
- g_object_class_install_property (gobject_class,
- PROP_FOO,
- g_param_spec_int ("foo", "Foo", "Foo",
- 0, G_MAXINT, 42,
- G_PARAM_READWRITE));
- g_object_class_install_property (gobject_class,
- PROP_BAR,
- g_param_spec_boolean ("bar", "Bar", "Bar",
- FALSE,
- G_PARAM_READWRITE));
- g_object_class_install_property (gobject_class,
- PROP_BAZ,
- g_param_spec_string ("baz", "Baz", "Baz",
- NULL,
- G_PARAM_READWRITE));
- g_object_class_install_property (gobject_class,
- PROP_BLAH,
- g_param_spec_boxed ("blah", "Blah", "Blah",
- TEST_TYPE_BOXED,
- G_PARAM_READABLE));
-}
-
-static void
-test_object_init (TestObject *object)
-{
- object->foo = 42;
- object->bar = TRUE;
- object->baz = g_strdup ("Test");
-
- object->blah.foo = object->foo;
- object->blah.bar = object->bar;
-}
-
-/**
- * @brief Positive test case of json_serialize_complex()
- */
-static void utc_libjson_json_serialize_complex_func_01(void)
-{
- TestObject *obj = g_object_new (TEST_TYPE_OBJECT, NULL);
- JsonParser *parser = json_parser_new ();
- GError *error = NULL;
- JsonObject *object = NULL;
- JsonNode *node = NULL;
- gchar *data = NULL;
- gsize len = 0;
-
- data = json_gobject_to_data (G_OBJECT (obj), &len);
-
- dts_check_gt("json_serialize_complex", len, 0);
-
- parser = json_parser_new ();
- json_parser_load_from_data (parser, data, -1, &error);
- dts_check_eq("json_serialize_complex", error, NULL);
-
- node = json_parser_get_root (parser);
- dts_check_eq("json_serialize_complex", json_node_get_node_type(node), JSON_NODE_OBJECT);
-
- object = json_node_get_object (node);
- dts_check_eq("json_serialize_complex", json_object_get_int_member(object, "foo"), 42);
- dts_check_eq("json_serialize_complex", json_object_get_boolean_member(object, "bar"), TRUE);
- dts_check_str_eq("json_serialize_complex", json_object_get_string_member(object, "baz"), "Test");
-
- node = json_object_get_member (object, "blah");
- dts_check_eq("json_serialize_complex", json_node_get_node_type(node), JSON_NODE_OBJECT);
-
- object = json_node_get_object (node);
- dts_check_eq("json_serialize_complex", json_object_get_int_member(object, "foo"), 42);
- dts_check_eq("json_serialize_complex", json_object_get_boolean_member(object, "bar"), TRUE);
-
- g_free (data);
- g_object_unref (parser);
- g_object_unref (obj);
-
-}
-
-
+++ /dev/null
-#include <tet_api.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <glib-object.h>
-
-#include <json-glib/json-glib.h>
-
-
-static void startup(void);
-static void cleanup(void);
-
-void (*tet_startup)(void) = startup;
-void (*tet_cleanup)(void) = cleanup;
-
-static void utc_libjson_json_serialize_full_func_01(void);
-
-enum {
- POSITIVE_TC_IDX = 0x01,
- NEGATIVE_TC_IDX,
-};
-
-struct tet_testlist tet_testlist[] = {
- { utc_libjson_json_serialize_full_func_01, POSITIVE_TC_IDX },
- { NULL, 0 }
-};
-
-
-#define TEST_TYPE_BOXED (test_boxed_get_type ())
-#define TEST_TYPE_OBJECT (test_object_get_type ())
-#define TEST_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TEST_TYPE_OBJECT, TestObject))
-#define TEST_IS_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TEST_TYPE_OBJECT))
-#define TEST_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TEST_TYPE_OBJECT, TestObjectClass))
-#define TEST_IS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TEST_TYPE_OBJECT))
-#define TEST_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TEST_TYPE_OBJECT, TestObjectClass))
-
-typedef struct _TestBoxed TestBoxed;
-typedef struct _TestObject TestObject;
-typedef struct _TestObjectClass TestObjectClass;
-
-struct _TestBoxed
-{
- gint foo;
- gboolean bar;
-};
-
-struct _TestObject
-{
- GObject parent_instance;
-
- gint foo;
- gboolean bar;
- gchar *baz;
- TestBoxed blah;
-};
-
-struct _TestObjectClass
-{
- GObjectClass parent_class;
-};
-
-GType test_object_get_type (void);
-
-
-static void startup(void)
-{
- g_type_init();
-}
-
-static void cleanup(void)
-{
-}
-
-/*** implementation ***/
-
-static TestBoxed *
-test_boxed_copy (const TestBoxed *src)
-{
- TestBoxed *copy = g_slice_new (TestBoxed);
-
- *copy = *src;
-
- return copy;
-}
-
-static void
-test_boxed_free (TestBoxed *boxed)
-{
- if (G_LIKELY (boxed))
- {
- g_slice_free (TestBoxed, boxed);
- }
-}
-
-GType
-test_boxed_get_type (void)
-{
- static GType b_type = 0;
-
- if (G_UNLIKELY (b_type == 0))
- b_type = g_boxed_type_register_static ("TestBoxed",
- (GBoxedCopyFunc) test_boxed_copy,
- (GBoxedFreeFunc) test_boxed_free);
-
- return b_type;
-}
-
-enum
-{
- PROP_0,
-
- PROP_FOO,
- PROP_BAR,
- PROP_BAZ,
- PROP_BLAH
-};
-
-static JsonSerializableIface *serializable_iface = NULL;
-
-static void json_serializable_iface_init (gpointer g_iface);
-
-G_DEFINE_TYPE_WITH_CODE (TestObject, test_object, G_TYPE_OBJECT,
- G_IMPLEMENT_INTERFACE (JSON_TYPE_SERIALIZABLE,
- json_serializable_iface_init));
-
-static JsonNode *
-test_object_serialize_property (JsonSerializable *serializable,
- const gchar *name,
- const GValue *value,
- GParamSpec *pspec)
-{
- JsonNode *retval = NULL;
-
- if (strcmp (name, "blah") == 0)
- {
- TestBoxed *boxed;
- JsonObject *obj;
- JsonNode *val;
-
- retval = json_node_new (JSON_NODE_OBJECT);
- obj = json_object_new ();
-
- boxed = g_value_get_boxed (value);
-
- val = json_node_new (JSON_NODE_VALUE);
- json_node_set_int (val, boxed->foo);
- json_object_set_member (obj, "foo", val);
-
- val = json_node_new (JSON_NODE_VALUE);
- json_node_set_boolean (val, boxed->bar);
- json_object_set_member (obj, "bar", val);
-
- json_node_take_object (retval, obj);
- }
- else
- retval = serializable_iface->serialize_property (serializable,
- name,
- value, pspec);
-
- return retval;
-}
-
-static void
-json_serializable_iface_init (gpointer g_iface)
-{
- JsonSerializableIface *iface = g_iface;
-
- serializable_iface = g_type_default_interface_peek (JSON_TYPE_SERIALIZABLE);
-
- iface->serialize_property = test_object_serialize_property;
-}
-
-static void
-test_object_finalize (GObject *gobject)
-{
- g_free (TEST_OBJECT (gobject)->baz);
-
- G_OBJECT_CLASS (test_object_parent_class)->finalize (gobject);
-}
-
-static void
-test_object_set_property (GObject *gobject,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- switch (prop_id)
- {
- case PROP_FOO:
- TEST_OBJECT (gobject)->foo = g_value_get_int (value);
- break;
- case PROP_BAR:
- TEST_OBJECT (gobject)->bar = g_value_get_boolean (value);
- break;
- case PROP_BAZ:
- g_free (TEST_OBJECT (gobject)->baz);
- TEST_OBJECT (gobject)->baz = g_value_dup_string (value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
- }
-}
-
-static void
-test_object_get_property (GObject *gobject,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- switch (prop_id)
- {
- case PROP_FOO:
- g_value_set_int (value, TEST_OBJECT (gobject)->foo);
- break;
- case PROP_BAR:
- g_value_set_boolean (value, TEST_OBJECT (gobject)->bar);
- break;
- case PROP_BAZ:
- g_value_set_string (value, TEST_OBJECT (gobject)->baz);
- break;
- case PROP_BLAH:
- g_value_set_boxed (value, &(TEST_OBJECT (gobject)->blah));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
- }
-}
-
-static void
-test_object_class_init (TestObjectClass *klass)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
-
- gobject_class->set_property = test_object_set_property;
- gobject_class->get_property = test_object_get_property;
- gobject_class->finalize = test_object_finalize;
-
- g_object_class_install_property (gobject_class,
- PROP_FOO,
- g_param_spec_int ("foo", "Foo", "Foo",
- 0, G_MAXINT, 42,
- G_PARAM_READWRITE));
- g_object_class_install_property (gobject_class,
- PROP_BAR,
- g_param_spec_boolean ("bar", "Bar", "Bar",
- FALSE,
- G_PARAM_READWRITE));
- g_object_class_install_property (gobject_class,
- PROP_BAZ,
- g_param_spec_string ("baz", "Baz", "Baz",
- NULL,
- G_PARAM_READWRITE));
- g_object_class_install_property (gobject_class,
- PROP_BLAH,
- g_param_spec_boxed ("blah", "Blah", "Blah",
- TEST_TYPE_BOXED,
- G_PARAM_READABLE));
-}
-
-static void
-test_object_init (TestObject *object)
-{
- object->foo = 42;
- object->bar = TRUE;
- object->baz = g_strdup ("Test");
-
- object->blah.foo = object->foo;
- object->blah.bar = object->bar;
-}
-
-/**
- * @brief Positive test case of json_serialize_full()
- */
-static void utc_libjson_json_serialize_full_func_01(void)
-{
- TestObject *obj = g_object_new(TEST_TYPE_OBJECT, NULL);
- JsonParser *parser = json_parser_new();
- GError *error = NULL;
- JsonObject *object = NULL;
- JsonNode *node = NULL;
- gchar *data = NULL;
- gsize len = 0;
-
- data = json_gobject_to_data(G_OBJECT(obj), &len);
-
- dts_check_gt("json_serialize_full", len, 0);
-
- parser = json_parser_new ();
- json_parser_load_from_data (parser, data, -1, &error);
- dts_check_eq("json_serialize_full", error, NULL);
-
- node = json_parser_get_root (parser);
- dts_check_eq("json_serialize_full", json_node_get_node_type(node), JSON_NODE_OBJECT);
-
- object = json_node_get_object (node);
- dts_check_eq("json_serialize_full", json_object_get_int_member(object, "foo"), 42);
- dts_check_eq("json_serialize_full", json_object_get_boolean_member(object, "bar"), TRUE);
- dts_check_str_eq("json_serialize_full", json_object_get_string_member(object, "baz"), "Test");
-
- node = json_object_get_member(object, "blah");
- dts_check_eq("json_serialize_full", json_node_get_node_type(node), JSON_NODE_OBJECT);
-
- object = json_node_get_object(node);
- dts_check_eq("json_serialize_full", json_object_get_int_member(object, "foo"), 42);
- dts_check_eq("json_serialize_full", json_object_get_boolean_member(object, "bar"), TRUE);
-
- g_free(data);
- g_object_unref(parser);
- g_object_unref(obj);
-
-}
-
+++ /dev/null
-
-#include <tet_api.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <glib-object.h>
-
-#include <json-glib/json-glib.h>
-#define JSON_DISABLE_DEPRECATED
-
-static void startup(void);
-static void cleanup(void);
-
-void (*tet_startup)(void) = startup;
-void (*tet_cleanup)(void) = cleanup;
-
-static void utc_libjson_json_serialize_gobject_func_01(void);
-static void utc_libjson_json_serialize_gobject_func_02(void);
-static void utc_libjson_json_serialize_gobject_func_03(void);
-#ifndef JSON_DISABLE_DEPRECATED
-static void utc_libjson_json_serialize_gobject_func_04(void);
-static void utc_libjson_json_serialize_gobject_func_05(void);
-#endif
-static void utc_libjson_json_serialize_gobject_func_06(void);
-
-
-
-enum {
- POSITIVE_TC_IDX = 0x01,
- NEGATIVE_TC_IDX,
-};
-
-struct tet_testlist tet_testlist[] = {
- { utc_libjson_json_serialize_gobject_func_01, POSITIVE_TC_IDX },
- { utc_libjson_json_serialize_gobject_func_02, POSITIVE_TC_IDX },
- { utc_libjson_json_serialize_gobject_func_03, POSITIVE_TC_IDX },
-#ifndef JSON_DISABLE_DEPRECATED
- { utc_libjson_json_serialize_gobject_func_04, POSITIVE_TC_IDX },
- { utc_libjson_json_serialize_gobject_func_05, POSITIVE_TC_IDX },
-#endif
- { utc_libjson_json_serialize_gobject_func_06, POSITIVE_TC_IDX },
- { NULL, 0 }
-};
-
-
-
-#define TEST_TYPE_BOXED (test_boxed_get_type ())
-#define TEST_TYPE_OBJECT (test_object_get_type ())
-#define TEST_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TEST_TYPE_OBJECT, TestObject))
-#define TEST_IS_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TEST_TYPE_OBJECT))
-#define TEST_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TEST_TYPE_OBJECT, TestObjectClass))
-#define TEST_IS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TEST_TYPE_OBJECT))
-#define TEST_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TEST_TYPE_OBJECT, TestObjectClass))
-
-typedef struct _TestBoxed TestBoxed;
-typedef struct _TestObject TestObject;
-typedef struct _TestObjectClass TestObjectClass;
-
-struct _TestBoxed
-{
- gint foo;
- gboolean bar;
-};
-
-struct _TestObject
-{
- GObject parent_instance;
-
- gint foo;
- gboolean bar;
- gchar *baz;
- TestBoxed blah;
-};
-
-struct _TestObjectClass
-{
- GObjectClass parent_class;
-};
-
-GType test_object_get_type (void);
-
-static const gchar *serialize_data =
-"{\n"
-" \"blah\" : {\n"
-" \"foo\" : 42,\n"
-" \"bar\" : true\n"
-" }\n"
-"}";
-
-static void startup(void)
-{
- g_type_init();
-}
-
-static void cleanup(void)
-{
-}
-
-/*** implementation ***/
-
-static TestBoxed *
-test_boxed_copy (const TestBoxed *src)
-{
- TestBoxed *copy = g_slice_new (TestBoxed);
-
- *copy = *src;
-
- return copy;
-}
-
-static void
-test_boxed_free (TestBoxed *boxed)
-{
- if (G_LIKELY (boxed))
- {
- g_slice_free (TestBoxed, boxed);
- }
-}
-
-GType
-test_boxed_get_type (void)
-{
- static GType b_type = 0;
-
- if (G_UNLIKELY (b_type == 0))
- b_type = g_boxed_type_register_static ("TestBoxed",
- (GBoxedCopyFunc) test_boxed_copy,
- (GBoxedFreeFunc) test_boxed_free);
-
- return b_type;
-}
-
-enum
-{
- PROP_0,
-
- PROP_FOO,
- PROP_BAR,
- PROP_BAZ,
- PROP_BLAH
-};
-
-static JsonSerializableIface *serializable_iface = NULL;
-
-static void json_serializable_iface_init (gpointer g_iface);
-
-G_DEFINE_TYPE_WITH_CODE (TestObject, test_object, G_TYPE_OBJECT,
- G_IMPLEMENT_INTERFACE (JSON_TYPE_SERIALIZABLE,
- json_serializable_iface_init));
-
-static JsonNode *
-test_object_serialize_property (JsonSerializable *serializable,
- const gchar *name,
- const GValue *value,
- GParamSpec *pspec)
-{
- JsonNode *retval = NULL;
-
- if (strcmp (name, "blah") == 0)
- {
- TestBoxed *boxed;
- JsonObject *obj;
- JsonNode *val;
-
- retval = json_node_new (JSON_NODE_OBJECT);
- obj = json_object_new ();
-
- boxed = g_value_get_boxed (value);
-
- val = json_node_new (JSON_NODE_VALUE);
- json_node_set_int (val, boxed->foo);
- json_object_set_member (obj, "foo", val);
-
- val = json_node_new (JSON_NODE_VALUE);
- json_node_set_boolean (val, boxed->bar);
- json_object_set_member (obj, "bar", val);
-
- json_node_take_object (retval, obj);
- }
- else
- retval = serializable_iface->serialize_property (serializable,
- name,
- value, pspec);
-
- return retval;
-}
-
-static void
-json_serializable_iface_init (gpointer g_iface)
-{
- JsonSerializableIface *iface = g_iface;
-
- serializable_iface = g_type_default_interface_peek (JSON_TYPE_SERIALIZABLE);
-
- iface->serialize_property = test_object_serialize_property;
-}
-
-static void
-test_object_finalize (GObject *gobject)
-{
- g_free (TEST_OBJECT (gobject)->baz);
-
- G_OBJECT_CLASS (test_object_parent_class)->finalize (gobject);
-}
-
-static void
-test_object_set_property (GObject *gobject,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- switch (prop_id)
- {
- case PROP_FOO:
- TEST_OBJECT (gobject)->foo = g_value_get_int (value);
- break;
- case PROP_BAR:
- TEST_OBJECT (gobject)->bar = g_value_get_boolean (value);
- break;
- case PROP_BAZ:
- g_free (TEST_OBJECT (gobject)->baz);
- TEST_OBJECT (gobject)->baz = g_value_dup_string (value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
- }
-}
-
-static void
-test_object_get_property (GObject *gobject,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- switch (prop_id)
- {
- case PROP_FOO:
- g_value_set_int (value, TEST_OBJECT (gobject)->foo);
- break;
- case PROP_BAR:
- g_value_set_boolean (value, TEST_OBJECT (gobject)->bar);
- break;
- case PROP_BAZ:
- g_value_set_string (value, TEST_OBJECT (gobject)->baz);
- break;
- case PROP_BLAH:
- g_value_set_boxed (value, &(TEST_OBJECT (gobject)->blah));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
- }
-}
-
-static void
-test_object_class_init (TestObjectClass *klass)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
-
- gobject_class->set_property = test_object_set_property;
- gobject_class->get_property = test_object_get_property;
- gobject_class->finalize = test_object_finalize;
-
- g_object_class_install_property (gobject_class,
- PROP_FOO,
- g_param_spec_int ("foo", "Foo", "Foo",
- 0, G_MAXINT, 42,
- G_PARAM_READWRITE));
- g_object_class_install_property (gobject_class,
- PROP_BAR,
- g_param_spec_boolean ("bar", "Bar", "Bar",
- FALSE,
- G_PARAM_READWRITE));
- g_object_class_install_property (gobject_class,
- PROP_BAZ,
- g_param_spec_string ("baz", "Baz", "Baz",
- NULL,
- G_PARAM_READWRITE));
- g_object_class_install_property (gobject_class,
- PROP_BLAH,
- g_param_spec_boxed ("blah", "Blah", "Blah",
- TEST_TYPE_BOXED,
- G_PARAM_READABLE));
-}
-
-static void
-test_object_init (TestObject *object)
-{
- object->foo = 42;
- object->bar = TRUE;
- object->baz = g_strdup ("Test");
-
- object->blah.foo = object->foo;
- object->blah.bar = object->bar;
-}
-
-/**
- * @brief Positive test case of json_gobject_to_data()
- */
-static void utc_libjson_json_serialize_gobject_func_01(void)
-{
- TestObject *obj = g_object_new(TEST_TYPE_OBJECT, "bar", TRUE, NULL);
- gchar *data;
- gsize len;
-
- data = json_gobject_to_data(G_OBJECT(obj), &len);
-
- dts_check_ne("json_gobject_to_data", data, NULL);
- dts_check_gt("json_gobject_to_data", len, 0);
- dts_check_eq("json_gobject_to_data", len, strlen(data));
-
- g_free (data);
- g_object_unref (obj);
-}
-
-
-/**
- * @brief Negative test case of json_gobject_from_data()
- */
-static void utc_libjson_json_serialize_gobject_func_02(void)
-{
- GObject *obj = NULL;
-
- obj = json_gobject_from_data(TEST_TYPE_OBJECT, serialize_data, -1, NULL);
- dts_check_eq("json_gobject_from_data", TEST_IS_OBJECT(obj), TRUE);
- dts_check_eq("json_gobject_from_data", TEST_OBJECT(obj)->blah.foo, 42);
- dts_check_eq("json_gobject_from_data", TEST_OBJECT(obj)->blah.bar, TRUE);
-
- g_object_unref (obj);
-}
-
-
-/**
-* @brief Negative test case of json_gobject_serialize()
-*/
-static void utc_libjson_json_serialize_gobject_func_03(void)
-{
- JsonNode *node = NULL;
- JsonObject *object = NULL;
- GObject *obj = NULL;
-
- obj = g_object_new(TEST_TYPE_OBJECT, "bar", TRUE, NULL);
- node = json_gobject_serialize(obj);
- dts_check_eq("json_gobject_serialize", json_node_get_node_type (node), JSON_NODE_OBJECT);
- object = json_node_get_object (node);
- dts_check_eq("json_gobject_serialize", json_object_get_boolean_member(object, "bar"), TRUE);
-
- g_object_unref (obj);
- json_node_free (node);
-}
-
-#ifndef JSON_DISABLE_DEPRECATED
-
-/**
- * @brief Negative test case of json_construct_gobject()
- */
-static void utc_libjson_json_serialize_gobject_func_04(void)
-{
- GObject *obj = NULL;
-
- obj = json_construct_gobject(TEST_TYPE_OBJECT, serialize_data, -1, NULL);
- dts_check_eq("json_construct_gobject", TEST_IS_OBJECT(obj), TRUE);
- dts_check_eq("json_construct_gobject", TEST_OBJECT(obj)->blah.foo, 42);
- dts_check_eq("json_construct_gobject", TEST_OBJECT(obj)->blah.bar, TRUE);
-
- g_object_unref (obj);
-}
-
-
-/**
- * @brief Negative test case of json_serialize_gobject()
- */
-static void utc_libjson_json_serialize_gobject_func_05(void)
-{
- GObject *obj = NULL;
-
- obj = json_serialize_gobject(TEST_TYPE_OBJECT, serialize_data, -1, NULL);
- dts_check_eq("json_serialize_gobject", TEST_IS_OBJECT(obj), TRUE);
- dts_check_eq("json_serialize_gobject", TEST_OBJECT(obj)->blah.foo, 42);
- dts_check_eq("json_serialize_gobject", TEST_OBJECT(obj)->blah.bar, TRUE);
-
- g_object_unref (obj);
-}
-#endif
-
-/**
-* @brief Negative test case of json_gobject_deserialize()
-*/
-static void utc_libjson_json_serialize_gobject_func_06(void)
-{
- GObject *obj = NULL;
- JsonObject *object = NULL;
- JsonNode *node = NULL;
-
- object = json_object_new();
- node = json_node_new(JSON_NODE_OBJECT);
- json_object_set_int_member (object, "foo", 42);
- json_object_set_boolean_member (object, "bar", TRUE);
- json_node_take_object (node, object);
-
- obj = json_gobject_deserialize(TEST_TYPE_OBJECT, node);
- dts_check_eq("json_gobject_deserialize", TEST_IS_OBJECT(obj), TRUE);
- dts_check_eq("json_gobject_deserialize", TEST_OBJECT(obj)->foo, 42);
- dts_check_eq("json_gobject_deserialize", TEST_OBJECT(obj)->bar, TRUE);
-
- g_object_unref (obj);
- json_object_unref(object);
- json_node_free (node);
-
-}
-
+++ /dev/null
-#include <tet_api.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <glib-object.h>
-
-#include <json-glib/json-glib.h>
-
-
-static void startup(void);
-static void cleanup(void);
-
-void (*tet_startup)(void) = startup;
-void (*tet_cleanup)(void) = cleanup;
-
-static void utc_libjson_json_serialize_full_func_01(void);
-static void utc_libjson_json_serialize_full_func_02(void);
-static void utc_libjson_json_serialize_full_func_03(void);
-static void utc_libjson_json_serialize_full_func_04(void);
-
-enum {
- POSITIVE_TC_IDX = 0x01,
- NEGATIVE_TC_IDX,
-};
-
-struct tet_testlist tet_testlist[] = {
- { utc_libjson_json_serialize_full_func_01, POSITIVE_TC_IDX },
- { utc_libjson_json_serialize_full_func_02, POSITIVE_TC_IDX },
- { utc_libjson_json_serialize_full_func_03, POSITIVE_TC_IDX },
- { utc_libjson_json_serialize_full_func_04, POSITIVE_TC_IDX },
- { NULL, 0 }
-};
-
-
-#define TEST_TYPE_BOXED (test_boxed_get_type ())
-#define TEST_TYPE_OBJECT (test_object_get_type ())
-#define TEST_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TEST_TYPE_OBJECT, TestObject))
-#define TEST_IS_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TEST_TYPE_OBJECT))
-#define TEST_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TEST_TYPE_OBJECT, TestObjectClass))
-#define TEST_IS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TEST_TYPE_OBJECT))
-#define TEST_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TEST_TYPE_OBJECT, TestObjectClass))
-
-typedef struct _TestBoxed TestBoxed;
-typedef struct _TestObject TestObject;
-typedef struct _TestObjectClass TestObjectClass;
-
-struct _TestBoxed
-{
- gint foo;
- gboolean bar;
-};
-
-struct _TestObject
-{
- GObject parent_instance;
-
- gint foo;
- gboolean bar;
- gchar *baz;
- TestBoxed blah;
-};
-
-struct _TestObjectClass
-{
- GObjectClass parent_class;
-};
-
-
-GType test_object_get_type (void);
-
-
-static void startup(void)
-{
- g_type_init();
-}
-
-static void cleanup(void)
-{
-}
-
-/*** implementation ***/
-
-static TestBoxed *
-test_boxed_copy (const TestBoxed *src)
-{
- TestBoxed *copy = g_slice_new (TestBoxed);
-
- *copy = *src;
-
- return copy;
-}
-
-static void
-test_boxed_free (TestBoxed *boxed)
-{
- if (G_LIKELY (boxed))
- {
- g_slice_free (TestBoxed, boxed);
- }
-}
-
-GType
-test_boxed_get_type (void)
-{
- static GType b_type = 0;
-
- if (G_UNLIKELY (b_type == 0))
- b_type = g_boxed_type_register_static ("TestBoxed",
- (GBoxedCopyFunc) test_boxed_copy,
- (GBoxedFreeFunc) test_boxed_free);
-
- return b_type;
-}
-
-enum
-{
- PROP_0,
-
- PROP_FOO,
- PROP_BAR,
- PROP_BAZ,
- PROP_BLAH
-};
-
-static JsonSerializableIface *serializable_iface = NULL;
-
-static void json_serializable_iface_init (gpointer g_iface);
-
-G_DEFINE_TYPE_WITH_CODE (TestObject, test_object, G_TYPE_OBJECT,
- G_IMPLEMENT_INTERFACE (JSON_TYPE_SERIALIZABLE,
- json_serializable_iface_init));
-
-static JsonNode *
-test_object_serialize_property (JsonSerializable *serializable,
- const gchar *name,
- const GValue *value,
- GParamSpec *pspec)
-{
- JsonNode *retval = NULL;
-
- if (strcmp (name, "blah") == 0)
- {
- JsonObject *obj;
-
- retval = json_node_new (JSON_NODE_OBJECT);
- obj = json_object_new ();
-
- json_object_set_int_member(obj, "foo", g_value_get_int(value));
- json_node_take_object (retval, obj);
- }
- else
- retval = serializable_iface->serialize_property (serializable,
- name,
- value, pspec);
-
- return retval;
-}
-
-
-static gboolean
-test_object_deserialize_property (JsonSerializable *serializable,
- const gchar *name,
- GValue *value,
- GParamSpec *pspec,
- JsonNode *node)
-{
- gboolean retval = FALSE;
-
- if (strcmp (name, "blah") == 0)
- {
- JsonObject *obj;
-
- obj = json_node_get_object (node);
- g_value_set_int (value, json_object_get_int_member(obj, "foo"));
- retval = TRUE;
- }
- else
- retval = serializable_iface->deserialize_property (serializable,
- name,
- value, pspec, node);
- return retval;
-}
-
-static void
-json_serializable_iface_init (gpointer g_iface)
-{
- JsonSerializableIface *iface = g_iface;
-
- serializable_iface = g_type_default_interface_peek (JSON_TYPE_SERIALIZABLE);
-
- iface->serialize_property = test_object_serialize_property;
- iface->deserialize_property= test_object_deserialize_property;
-}
-
-static void
-test_object_finalize (GObject *gobject)
-{
- g_free (TEST_OBJECT (gobject)->baz);
-
- G_OBJECT_CLASS (test_object_parent_class)->finalize (gobject);
-}
-
-static void
-test_object_set_property (GObject *gobject,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- switch (prop_id)
- {
- case PROP_FOO:
- TEST_OBJECT (gobject)->foo = g_value_get_int (value);
- break;
- case PROP_BAR:
- TEST_OBJECT (gobject)->bar = g_value_get_boolean (value);
- break;
- case PROP_BAZ:
- g_free (TEST_OBJECT (gobject)->baz);
- TEST_OBJECT (gobject)->baz = g_value_dup_string (value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
- }
-}
-
-static void
-test_object_get_property (GObject *gobject,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- switch (prop_id)
- {
- case PROP_FOO:
- g_value_set_int (value, TEST_OBJECT (gobject)->foo);
- break;
- case PROP_BAR:
- g_value_set_boolean (value, TEST_OBJECT (gobject)->bar);
- break;
- case PROP_BAZ:
- g_value_set_string (value, TEST_OBJECT (gobject)->baz);
- break;
- case PROP_BLAH:
- g_value_set_boxed (value, &(TEST_OBJECT (gobject)->blah));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
- }
-}
-
-static void
-test_object_class_init (TestObjectClass *klass)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
-
- gobject_class->set_property = test_object_set_property;
- gobject_class->get_property = test_object_get_property;
- gobject_class->finalize = test_object_finalize;
-
- g_object_class_install_property (gobject_class,
- PROP_FOO,
- g_param_spec_int ("foo", "Foo", "Foo",
- 0, G_MAXINT, 42,
- G_PARAM_READWRITE));
- g_object_class_install_property (gobject_class,
- PROP_BAR,
- g_param_spec_boolean ("bar", "Bar", "Bar",
- FALSE,
- G_PARAM_READWRITE));
- g_object_class_install_property (gobject_class,
- PROP_BAZ,
- g_param_spec_string ("baz", "Baz", "Baz",
- NULL,
- G_PARAM_READWRITE));
- g_object_class_install_property (gobject_class,
- PROP_BLAH,
- g_param_spec_boxed ("blah", "Blah", "Blah",
- TEST_TYPE_BOXED,
- G_PARAM_READABLE));
-}
-
-static void
-test_object_init (TestObject *object)
-{
- object->foo = 42;
- object->bar = TRUE;
- object->baz = g_strdup ("Test");
-
- object->blah.foo = object->foo;
- object->blah.bar = object->bar;
-}
-
-
-static void utc_libjson_json_serialize_full_func_01(void)
-{
- GObject *obj = NULL;
- JsonSerializableIface *iface = NULL;
- JsonSerializable *serializable = NULL;
- GValue value = {0};
- GParamSpec pspecs;
- JsonNode *node = NULL;
- JsonObject *ret_object = NULL;
-
- obj = g_object_new(TEST_TYPE_OBJECT, "bar", TRUE, NULL);
-
- serializable = JSON_SERIALIZABLE (obj);
- iface = JSON_SERIALIZABLE_GET_IFACE (serializable);
-
- g_value_init (&value, G_TYPE_INT);
- g_value_set_int (&value, 42);
- node = json_serializable_serialize_property(serializable, "blah", &value, &pspecs);
-
- ret_object = json_node_get_object (node);
- dts_check_ne("json_serializable_serialize_property", ret_object, NULL);
- dts_check_eq("json_serializable_serialize_property", json_object_get_int_member(ret_object, "foo"), 42);
-
- g_object_unref (obj);
- json_node_free (node);
-}
-
-
-static void utc_libjson_json_serialize_full_func_02(void)
-{
- JsonObject *object = NULL;
- JsonNode *node = NULL;
- GObject *obj = NULL;
- JsonSerializableIface *iface = NULL;
- JsonSerializable *serializable = NULL;
- GValue value = {0};
- GParamSpec pspecs;
- gboolean ret = FALSE;
-
- object = json_object_new();
- node = json_node_new(JSON_NODE_OBJECT);
- json_object_set_int_member (object, "foo", 42);
- json_node_take_object (node, object);
-
- obj = g_object_new(TEST_TYPE_OBJECT, "bar", TRUE, NULL);
-
- serializable = JSON_SERIALIZABLE (obj);
- iface = JSON_SERIALIZABLE_GET_IFACE (serializable);
-
- g_value_init (&value, G_TYPE_INT);
- ret = json_serializable_deserialize_property(serializable, "blah", &value, &pspecs, node);
- dts_check_eq("json_serializable_deserialize_property", ret, TRUE);
- dts_check_eq("json_serializable_deserialize_property", g_value_get_int (&value), 42);
-
- g_object_unref (obj);
- json_object_unref(object);
- json_node_free (node);
-
-}
-
-static void utc_libjson_json_serialize_full_func_03(void)
-{
- JsonNode *node = NULL;
- GObject *obj = NULL;
- JsonSerializableIface *iface = NULL;
- JsonSerializable *serializable = NULL;
- GValue value = {0};
- GParamSpec pspecs;
-
- obj = g_object_new(TEST_TYPE_OBJECT, "bar", TRUE, NULL);
- serializable = JSON_SERIALIZABLE (obj);
- iface = JSON_SERIALIZABLE_GET_IFACE (serializable);
-
- g_value_init (&value, G_TYPE_INT);
- g_value_set_int (&value, 42);
-
- node = json_serializable_default_serialize_property(serializable, "blah", &value, &pspecs);
- dts_check_ne("json_serializable_default_serialize_property", node, NULL);
- dts_check_eq("json_serializable_default_serialize_property", json_node_get_int(node), 42);
-
- g_object_unref (obj);
- json_node_free (node);
-
-}
-
-static void utc_libjson_json_serialize_full_func_04(void)
-{
- JsonNode *node = NULL;
- GObject *obj = NULL;
- JsonSerializableIface *iface = NULL;
- JsonSerializable *serializable = NULL;
- GValue value = {0};
- GParamSpec pspecs;
- gboolean ret = FALSE;
-
- obj = g_object_new(TEST_TYPE_OBJECT, "bar", TRUE, NULL);
- serializable = JSON_SERIALIZABLE (obj);
- iface = JSON_SERIALIZABLE_GET_IFACE (serializable);
-
- node = json_node_new(JSON_NODE_VALUE);
- json_node_set_int(node, 42);
-
- g_value_init (&value, G_TYPE_INT);
- ret = json_serializable_default_deserialize_property(serializable, "blah", &value, &pspecs, node);
- dts_check_eq("json_serializable_default_deserialize_property", ret, TRUE);
- dts_check_eq("json_serializable_default_deserialize_property", g_value_get_int (&value), 42);
-
- g_object_unref (obj);
- json_node_free (node);
-
-}
-
+++ /dev/null
-#include <tet_api.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <glib-object.h>
-
-#include <json-glib/json-glib.h>
-
-
-static void startup(void);
-static void cleanup(void);
-
-void (*tet_startup)(void) = startup;
-void (*tet_cleanup)(void) = cleanup;
-
-static void utc_libjson_json_serialize_simple_func_01(void);
-
-enum {
- POSITIVE_TC_IDX = 0x01,
- NEGATIVE_TC_IDX,
-};
-
-struct tet_testlist tet_testlist[] = {
- { utc_libjson_json_serialize_simple_func_01, POSITIVE_TC_IDX },
- { NULL, 0 }
-};
-
-#define TEST_TYPE_OBJECT (test_object_get_type ())
-#define TEST_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TEST_TYPE_OBJECT, TestObject))
-#define TEST_IS_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TEST_TYPE_OBJECT))
-#define TEST_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TEST_TYPE_OBJECT, TestObjectClass))
-#define TEST_IS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TEST_TYPE_OBJECT))
-#define TEST_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TEST_TYPE_OBJECT, TestObjectClass))
-
-typedef struct _TestObject TestObject;
-typedef struct _TestObjectClass TestObjectClass;
-
-struct _TestObject
-{
- GObject parent_instance;
-
- gint foo;
- gboolean bar;
- gchar *baz;
-};
-
-struct _TestObjectClass
-{
- GObjectClass parent_class;
-};
-
-GType test_object_get_type (void);
-
-
-static void startup(void)
-{
- g_type_init();
-}
-
-static void cleanup(void)
-{
-}
-
-
-/*** implementation ***/
-
-enum
-{
- PROP_0,
-
- PROP_FOO,
- PROP_BAR,
- PROP_BAZ
-};
-
-G_DEFINE_TYPE (TestObject, test_object, G_TYPE_OBJECT);
-
-static void
-test_object_finalize (GObject *gobject)
-{
- g_free (TEST_OBJECT (gobject)->baz);
-
- G_OBJECT_CLASS (test_object_parent_class)->finalize (gobject);
-}
-
-static void
-test_object_set_property (GObject *gobject,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- switch (prop_id)
- {
- case PROP_FOO:
- TEST_OBJECT (gobject)->foo = g_value_get_int (value);
- break;
- case PROP_BAR:
- TEST_OBJECT (gobject)->bar = g_value_get_boolean (value);
- break;
- case PROP_BAZ:
- g_free (TEST_OBJECT (gobject)->baz);
- TEST_OBJECT (gobject)->baz = g_value_dup_string (value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
- }
-}
-
-static void
-test_object_get_property (GObject *gobject,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- switch (prop_id)
- {
- case PROP_FOO:
- g_value_set_int (value, TEST_OBJECT (gobject)->foo);
- break;
- case PROP_BAR:
- g_value_set_boolean (value, TEST_OBJECT (gobject)->bar);
- break;
- case PROP_BAZ:
- g_value_set_string (value, TEST_OBJECT (gobject)->baz);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
- }
-}
-
-static void
-test_object_class_init (TestObjectClass *klass)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
-
- gobject_class->set_property = test_object_set_property;
- gobject_class->get_property = test_object_get_property;
- gobject_class->finalize = test_object_finalize;
-
- g_object_class_install_property (gobject_class,
- PROP_FOO,
- g_param_spec_int ("foo", "Foo", "Foo",
- 0, G_MAXINT, 42,
- G_PARAM_READWRITE));
- g_object_class_install_property (gobject_class,
- PROP_BAR,
- g_param_spec_boolean ("bar", "Bar", "Bar",
- FALSE,
- G_PARAM_READWRITE));
- g_object_class_install_property (gobject_class,
- PROP_BAZ,
- g_param_spec_string ("baz", "Baz", "Baz",
- NULL,
- G_PARAM_READWRITE));
-}
-
-static void
-test_object_init (TestObject *object)
-{
- object->foo = 42;
- object->bar = FALSE;
- object->baz = g_strdup ("Test");
-}
-
-/**
- * @brief Positive test case of json_serialize_simple()
- */
-static void utc_libjson_json_serialize_simple_func_01(void)
-{
- TestObject *obj = g_object_new(TEST_TYPE_OBJECT, "bar", TRUE, NULL);
- gchar *data;
- gsize len;
-
- data = json_gobject_to_data(G_OBJECT(obj), &len);
-
- dts_check_ne("json_serialize_simple", data, NULL);
- dts_check_gt("json_serialize_simple", len, 0);
- dts_check_eq("json_serialize_simple", len, strlen(data));
-
- g_free (data);
- g_object_unref (obj);
-}
-
-
+++ /dev/null
-###################################################
-# add your TestCase List Here
-#
-# e.g.,
-# TC1 = utc_frameworkName_apiName_func
-# TC2 = utc_ApplicationLib_recurGetDayOfWeek_func
-TARGETS = utc_libjson_json_parser_new_func \
- utc_libjson_json_parser_load_from_file_func \
- utc_libjson_json_parser_load_from_data_func \
- utc_libjson_json_parser_get_root_func \
- utc_libjson_json_parser_get_current_line_func \
- utc_libjson_json_parser_get_current_pos_func \
- utc_libjson_json_parser_has_assignment_func
-###################################################
-# add your Package Config Info Here
-#
-# e.g.,
-# PKGS=calendar
-PKGS=json-glib-1.0
-
-LIBS = `pkg-config --libs $(PKGS)`
-LIBS += `pkg-config --libs glib-2.0`
-LIBS +=$(TET_ROOT)/lib/tet3/tcm_s.o
-LIBS +=-L$(TET_ROOT)/lib/tet3 -ltcm_s
-LIBS +=-L$(TET_ROOT)/lib/tet3 -lapi_s
-
-INCS = -I. `pkg-config --cflags $(PKGS)`
-INCS += -I. `pkg-config --cflags glib-2.0`
-INCS += -I$(TET_ROOT)/inc/tet3
-
-
-CFLAGS = $(INCS)
-CFLAGS += -D_TETWARE_MODE
-CFLAGS += -Wall
-LDFLAGS = $(LIBS)
-
-###################################################
-# Modify here
-# depending on the Test Case you want to build
-#
-# e.g.,
-# TCLIST = $(TC1) $(TC2)
-all : $(TARGETS)
-
-$(TARGETS) : %: %.c
- $(CC) -o $@ $< $(CFLAGS) $(LDFLAGS)
-
-clean :
- rm -rf $(TARGETS)
-
+++ /dev/null
-/unit/TC_Parser/utc_libjson_json_parser_new_func
-/unit/TC_Parser/utc_libjson_json_parser_load_from_file_func
-/unit/TC_Parser/utc_libjson_json_parser_load_from_data_func
-/unit/TC_Parser/utc_libjson_json_parser_get_root_func
-/unit/TC_Parser/utc_libjson_json_parser_get_current_line_func
-/unit/TC_Parser/utc_libjson_json_parser_get_current_pos_func
-/unit/TC_Parser/utc_libjson_json_parser_has_assignment_func
\ No newline at end of file
+++ /dev/null
-#include <tet_api.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <glib.h>
-#include <json-glib/json-glib.h>
-
-static void startup(void);
-static void cleanup(void);
-
-void (*tet_startup)(void) = startup;
-void (*tet_cleanup)(void) = cleanup;
-
-static void utc_libjson_json_parser_get_current_line_func_01(void);
-static void utc_libjson_json_parser_get_current_line_func_02(void);
-static void utc_libjson_json_parser_get_current_line_func_03(void);
-
-
-enum {
- POSITIVE_TC_IDX = 0x01,
- NEGATIVE_TC_IDX,
-};
-
-struct tet_testlist tet_testlist[] = {
- { utc_libjson_json_parser_get_current_line_func_01, POSITIVE_TC_IDX },
- { utc_libjson_json_parser_get_current_line_func_02, POSITIVE_TC_IDX },
- { utc_libjson_json_parser_get_current_line_func_03, POSITIVE_TC_IDX },
- { NULL, 0 }
-};
-
-static const gchar *test_string = "{ \"test\" : 42 }";
-
-static void startup(void)
-{
- g_type_init();
-}
-
-static void cleanup(void)
-{
-}
-
-
-/**
- * @brief Positive test case of json_parser_get_current_line()
- */
-static void utc_libjson_json_parser_get_current_line_func_01(void)
-{
- int line = 0;
-
- line = json_parser_get_current_line(NULL);
-
- dts_check_eq("json_parser_get_current_line", line, 0);
-
-}
-
-/**
- * @brief Negative test case of ug_init json_parser_get_current_line()
- */
-static void utc_libjson_json_parser_get_current_line_func_02(void)
-{
- JsonParser *parser = NULL;
- int line = 0;
-
- parser = json_parser_new ();
- g_assert (JSON_IS_PARSER (parser));
-
- line = json_parser_get_current_line(parser);
- dts_check_eq("json_parser_get_current_line", line, 0);
- g_object_unref (parser);
-}
-
-
-static void utc_libjson_json_parser_get_current_line_func_03(void)
-{
- JsonParser *parser = NULL;
- GError *error = NULL;
- gboolean ret = FALSE;
- int line = 0;
-
- parser = json_parser_new ();
- g_assert (JSON_IS_PARSER (parser));
-
- ret = json_parser_load_from_data(parser, test_string, -1, &error);
- dts_check_eq("json_parser_load_from_data", ret, TRUE);
-
- line = json_parser_get_current_line(parser);
- dts_check_eq("json_parser_get_current_line", line, 0);
- g_error_free (error);
- g_object_unref (parser);
-}
-
-
+++ /dev/null
-#include <tet_api.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <glib.h>
-#include <json-glib/json-glib.h>
-
-
-static void startup(void);
-static void cleanup(void);
-
-void (*tet_startup)(void) = startup;
-void (*tet_cleanup)(void) = cleanup;
-
-static void utc_libjson_json_parser_get_current_pos_func_01(void);
-static void utc_libjson_json_parser_get_current_pos_func_02(void);
-static void utc_libjson_json_parser_get_current_pos_func_03(void);
-
-enum {
- POSITIVE_TC_IDX = 0x01,
- NEGATIVE_TC_IDX,
-};
-
-struct tet_testlist tet_testlist[] = {
- { utc_libjson_json_parser_get_current_pos_func_01, POSITIVE_TC_IDX },
- { utc_libjson_json_parser_get_current_pos_func_02, POSITIVE_TC_IDX },
- { utc_libjson_json_parser_get_current_pos_func_03, POSITIVE_TC_IDX },
- { NULL, 0 }
-};
-
-static const gchar *test_string = "{ \"test\" : 42 }";
-
-static void startup(void)
-{
- g_type_init();
-}
-
-static void cleanup(void)
-{
-}
-
-
-/**
- * @brief Positive test case of json_parser_get_current_pos()
- */
-static void utc_libjson_json_parser_get_current_pos_func_01(void)
-{
- int pos = 0;
-
- pos = json_parser_get_current_pos(NULL);
-
- dts_check_eq("json_parser_get_current_pos", pos, 0);
-
-}
-
-static void utc_libjson_json_parser_get_current_pos_func_02(void)
-{
- JsonParser *parser = NULL;
- int pos = 0;
-
- parser = json_parser_new ();
- g_assert (JSON_IS_PARSER (parser));
-
- pos = json_parser_get_current_pos(parser);
- dts_check_eq("json_parser_get_current_pos", pos, 0);
- g_object_unref (parser);
-}
-
-
-static void utc_libjson_json_parser_get_current_pos_func_03(void)
-{
- JsonParser *parser = NULL;
- GError *error = NULL;
- gboolean ret = FALSE;
- int pos = 0;
-
- parser = json_parser_new ();
- g_assert (JSON_IS_PARSER (parser));
-
- ret = json_parser_load_from_data(parser, test_string, -1, &error);
- dts_check_eq("json_parser_get_current_pos", ret, TRUE);
-
- pos = json_parser_get_current_pos(parser);
- dts_check_eq("json_parser_get_current_pos", pos, 0);
- g_error_free (error);
- g_object_unref (parser);
-}
-
-
+++ /dev/null
-#include <tet_api.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <glib.h>
-#include <json-glib/json-glib.h>
-
-static void startup(void);
-static void cleanup(void);
-
-void (*tet_startup)(void) = startup;
-void (*tet_cleanup)(void) = cleanup;
-
-static void utc_libjson_json_parser_get_root_func_01(void);
-static void utc_libjson_json_parser_get_root_func_02(void);
-static void utc_libjson_json_parser_get_root_func_03(void);
-static void utc_libjson_json_parser_get_root_func_04(void);
-static void utc_libjson_json_parser_get_root_func_05(void);
-static void utc_libjson_json_parser_get_root_func_06(void);
-static void utc_libjson_json_parser_get_root_func_07(void);
-static void utc_libjson_json_parser_get_root_func_08(void);
-static void utc_libjson_json_parser_get_root_func_09(void);
-static void utc_libjson_json_parser_get_root_func_10(void);
-static void utc_libjson_json_parser_get_root_func_11(void);
-
-
-enum {
- POSITIVE_TC_IDX = 0x01,
- NEGATIVE_TC_IDX,
-};
-
-struct tet_testlist tet_testlist[] = {
- { utc_libjson_json_parser_get_root_func_01, POSITIVE_TC_IDX },
- { utc_libjson_json_parser_get_root_func_02, POSITIVE_TC_IDX },
- { utc_libjson_json_parser_get_root_func_03, POSITIVE_TC_IDX },
- { utc_libjson_json_parser_get_root_func_04, POSITIVE_TC_IDX },
- { utc_libjson_json_parser_get_root_func_05, POSITIVE_TC_IDX },
- { utc_libjson_json_parser_get_root_func_06, POSITIVE_TC_IDX },
- { utc_libjson_json_parser_get_root_func_07, POSITIVE_TC_IDX },
- { utc_libjson_json_parser_get_root_func_08, POSITIVE_TC_IDX },
- { utc_libjson_json_parser_get_root_func_09, POSITIVE_TC_IDX },
- { utc_libjson_json_parser_get_root_func_10, POSITIVE_TC_IDX },
- { utc_libjson_json_parser_get_root_func_11, POSITIVE_TC_IDX },
- { NULL, 0 }
-};
-
-static const gchar *test_empty_string = "";
-static const gchar *test_empty_array_string = "[ ]";
-static const gchar *test_empty_object_string = "{ }";
-
-static const struct {
- const gchar *str;
- JsonNodeType type;
- GType gtype;
-}test_base_values[] = {
- { "null", JSON_NODE_NULL, G_TYPE_INVALID },
- { "42", JSON_NODE_VALUE, G_TYPE_INT64 },
- { "true", JSON_NODE_VALUE, G_TYPE_BOOLEAN },
- { "\"string\"", JSON_NODE_VALUE, G_TYPE_STRING },
- { "10.2e3", JSON_NODE_VALUE, G_TYPE_DOUBLE }
-};
-
-static const struct {
- const gchar *str;
- gint len;
- gint element;
- JsonNodeType type;
- GType gtype;
-}test_simple_arrays[] = {
- { "[ true ]", 1, 0, JSON_NODE_VALUE, G_TYPE_BOOLEAN },
- { "[ true, false, null ]", 3, 2, JSON_NODE_NULL, G_TYPE_INVALID },
- { "[ 1, 2, 3.14, \"test\" ]", 4, 3, JSON_NODE_VALUE, G_TYPE_STRING }
-};
-
-static const gchar *test_nested_arrays[] = {
- "[ 42, [ ], null ]",
- "[ [ ], [ true, [ true ] ] ]",
- "[ [ false, true, 42 ], [ true, false, 3.14 ], \"test\" ]",
- "[ true, { } ]",
- "[ false, { \"test\" : 42 } ]",
- "[ { \"test\" : 42 }, null ]",
- "[ true, { \"test\" : 42 }, null ]",
- "[ { \"channel\" : \"/meta/connect\" } ]"
-};
-
-static const struct {
- const gchar *str;
- gint size;
- const gchar *member;
- JsonNodeType type;
- GType gtype;
-}test_simple_objects[] = {
- { "{ \"test\" : 42 }", 1, "test", JSON_NODE_VALUE, G_TYPE_INT64 },
- { "{ \"name\" : \"\", \"state\" : 1 }", 2, "name", JSON_NODE_VALUE, G_TYPE_STRING },
- { "{ \"foo\" : \"bar\", \"baz\" : null }", 2, "baz", JSON_NODE_NULL, G_TYPE_INVALID },
- { "{ \"channel\" : \"/meta/connect\" }", 1, "channel", JSON_NODE_VALUE, G_TYPE_STRING }
-};
-
-static const gchar *test_nested_objects[] = {
- "{ \"array\" : [ false, \"foo\" ], \"object\" : { \"foo\" : true } }"
-};
-
-static const struct {
- const gchar *str;
- const gchar *var;
-}test_assignments[] = {
- { "var foo = [ false, false, true ]", "foo" },
- { "var bar = [ true, 42 ];", "bar" },
- { "var baz = { \"foo\" : false }", "baz" }
-};
-
-static const struct
-{
- const gchar *str;
- const gchar *member;
- const gchar *match;
-}test_unicode[] = {
- { "{ \"test\" : \"foo \\u00e8\" }", "test", "foo è" }
-};
-
-static const struct
-{
- const gchar *str;
-}test_invalid[] = {
- { "test" },
- { "[ foo, ]" },
- { "[ true, ]" },
- { "{ \"foo\" : true \"bar\" : false }" },
- { "[ true, [ false, ] ]" },
- { "{ \"foo\" : { \"bar\" : false, } }" },
- { "[ { }, { }, { }, ]" }
-};
-
-static guint n_test_base_values = G_N_ELEMENTS (test_base_values);
-static guint n_test_simple_arrays = G_N_ELEMENTS (test_simple_arrays);
-static guint n_test_nested_arrays = G_N_ELEMENTS (test_nested_arrays);
-static guint n_test_simple_objects = G_N_ELEMENTS (test_simple_objects);
-static guint n_test_nested_objects = G_N_ELEMENTS (test_nested_objects);
-static guint n_test_assignments = G_N_ELEMENTS (test_assignments);
-static guint n_test_unicode = G_N_ELEMENTS (test_unicode);
-static guint n_test_invalid = G_N_ELEMENTS (test_invalid);
-
-static void startup(void)
-{
- g_type_init ();
-}
-
-static void cleanup(void)
-{
-}
-
-/**
- * @brief Positive test case of json_parser_get_root()
- */
-static void utc_libjson_json_parser_get_root_func_01(void)
-{
- JsonParser *parser = NULL;
- GError *error = NULL;
- gboolean ret = FALSE;
- JsonNode *root = NULL;
-
- parser = json_parser_new ();
- g_assert (JSON_IS_PARSER (parser));
-
- ret = json_parser_load_from_data(parser, test_empty_string, -1, &error);
- dts_check_eq("json_parser_get_root", ret, TRUE);
-
- root = json_parser_get_root (parser);
- dts_check_eq("json_parser_get_root", root, NULL);
-
- g_error_free (error);
- g_object_unref (parser);
-}
-
-static void utc_libjson_json_parser_get_root_func_02(void)
-{
- JsonParser *parser = NULL;
- GError *error = NULL;
- JsonNode *root = NULL;
- int i = 0;
-
- parser = json_parser_new ();
- g_assert (JSON_IS_PARSER (parser));
-
- for (i = 0; i < n_test_base_values; i++)
- {
- error = NULL;
- if (!json_parser_load_from_data (parser, test_base_values[i].str, -1, &error))
- {
- g_error_free (error);
- }
- else
- {
- root = json_parser_get_root (parser);
- dts_check_ne("json_parser_get_root", root, NULL);
- dts_check_eq("json_parser_get_root", JSON_NODE_TYPE(root), test_base_values[i].type);
- }
- }
- dts_pass("json_parser_get_root", "pass");
- g_object_unref (parser);
-
-}
-
-static void utc_libjson_json_parser_get_root_func_03(void)
-{
- JsonParser *parser = NULL;
- GError *error = NULL;
- gboolean ret = FALSE;
- JsonNode *root = NULL;
-
- parser = json_parser_new ();
- g_assert (JSON_IS_PARSER (parser));
-
- ret = json_parser_load_from_data(parser, test_empty_array_string, -1, &error);
- dts_check_eq("json_parser_get_root", ret, TRUE);
-
- root = json_parser_get_root (parser);
- dts_check_ne("json_parser_get_root", root, NULL);
- dts_check_eq("json_parser_get_root", JSON_NODE_TYPE(root), JSON_NODE_ARRAY);
- g_error_free (error);
- g_object_unref (parser);
-}
-
-
-static void utc_libjson_json_parser_get_root_func_04(void)
-{
- JsonParser *parser = NULL;
- GError *error = NULL;
- JsonNode *root = NULL;
- int i = 0;
-
- parser = json_parser_new ();
- g_assert (JSON_IS_PARSER (parser));
-
- for (i = 0; i < n_test_simple_arrays; i++)
- {
- error = NULL;
- if (!json_parser_load_from_data (parser, test_simple_arrays[i].str, -1, &error))
- {
- g_error_free (error);
- }
- else
- {
- root = json_parser_get_root (parser);
- dts_check_ne("json_parser_get_root", root, NULL);
- dts_check_eq("json_parser_get_root", JSON_NODE_TYPE(root), JSON_NODE_ARRAY);
- }
- }
- dts_pass("json_parser_get_root", "pass");
- g_object_unref (parser);
-}
-
-
-static void utc_libjson_json_parser_get_root_func_05(void)
-{
- JsonParser *parser = NULL;
- GError *error = NULL;
- JsonNode *root = NULL;
- int i = 0;
-
- parser = json_parser_new ();
- g_assert (JSON_IS_PARSER (parser));
-
- for (i = 0; i < n_test_nested_arrays; i++)
- {
- error = NULL;
- if (!json_parser_load_from_data (parser, test_nested_arrays[i], -1, &error))
- {
- g_error_free (error);
- }
- else
- {
- root = json_parser_get_root (parser);
- dts_check_ne("json_parser_get_root", root, NULL);
- dts_check_eq("json_parser_get_root", JSON_NODE_TYPE(root), JSON_NODE_ARRAY);
- }
- }
- dts_pass("json_parser_get_root", "pass");
- g_object_unref (parser);
-}
-
-static void utc_libjson_json_parser_get_root_func_06(void)
-{
- JsonParser *parser = NULL;
- GError *error = NULL;
- gboolean ret = FALSE;
- JsonNode *root = NULL;
-
- parser = json_parser_new ();
- g_assert (JSON_IS_PARSER (parser));
-
- ret = json_parser_load_from_data(parser, test_empty_object_string, -1, &error);
- dts_check_eq("json_parser_get_root", ret, TRUE);
-
- root = json_parser_get_root (parser);
- dts_check_ne("json_parser_get_root", root, NULL);
- dts_check_eq("json_parser_get_root", JSON_NODE_TYPE(root), JSON_NODE_OBJECT);
- g_error_free (error);
- g_object_unref (parser);
-}
-
-
-
-static void utc_libjson_json_parser_get_root_func_07(void)
-{
- JsonParser *parser = NULL;
- GError *error = NULL;
- JsonNode *root = NULL;
- int i = 0;
-
- parser = json_parser_new ();
- g_assert (JSON_IS_PARSER (parser));
-
- for (i = 0; i < n_test_simple_objects; i++)
- {
- error = NULL;
- if (!json_parser_load_from_data (parser, test_simple_objects[i].str, -1, &error))
- {
- g_error_free (error);
- }
- else
- {
- root = json_parser_get_root (parser);
- dts_check_ne("json_parser_get_root", root, NULL);
- dts_check_eq("json_parser_get_root", JSON_NODE_TYPE(root), JSON_NODE_OBJECT);
- }
- }
- dts_pass("json_parser_get_root", "pass");
- g_object_unref (parser);
-
-}
-
-static void utc_libjson_json_parser_get_root_func_08(void)
-{
- JsonParser *parser = NULL;
- GError *error = NULL;
- JsonNode *root = NULL;
- int i = 0;
-
- parser = json_parser_new ();
- g_assert (JSON_IS_PARSER (parser));
-
- for (i = 0; i < n_test_nested_objects; i++)
- {
- error = NULL;
- if (!json_parser_load_from_data (parser, test_nested_objects[i], -1, &error))
- {
- g_error_free (error);
- }
- else
- {
- root = json_parser_get_root (parser);
- dts_check_ne("json_parser_get_root", root, NULL);
- dts_check_eq("json_parser_get_root", JSON_NODE_TYPE(root), JSON_NODE_OBJECT);
- }
- }
- dts_pass("json_parser_get_root", "pass");
- g_object_unref (parser);
-
-}
-
-
-static void utc_libjson_json_parser_get_root_func_09(void)
-{
- JsonParser *parser = NULL;
- GError *error = NULL;
- JsonNode *root = NULL;
- int i = 0;
-
- parser = json_parser_new ();
- g_assert (JSON_IS_PARSER (parser));
-
- for (i = 0; i < n_test_assignments; i++)
- {
- error = NULL;
- if (!json_parser_load_from_data (parser, test_assignments[i].str, -1, &error))
- {
- g_error_free (error);
- }
- else
- {
- root = json_parser_get_root (parser);
- dts_check_ne("json_parser_get_root", root, NULL);
- }
- }
- dts_pass("json_parser_has_assignment", "pass");
- g_object_unref (parser);
-}
-
-
-static void utc_libjson_json_parser_get_root_func_10(void)
-{
- JsonParser *parser = NULL;
- GError *error = NULL;
- JsonNode *root = NULL;
- int i = 0;
-
- parser = json_parser_new ();
- g_assert (JSON_IS_PARSER (parser));
-
- for (i = 0; i < n_test_unicode; i++)
- {
- error = NULL;
- if (!json_parser_load_from_data (parser, test_unicode[i].str, -1, &error))
- {
- g_error_free (error);
- }
- else
- {
- root = json_parser_get_root (parser);
- dts_check_ne("json_parser_load_from_data", root, NULL);
- dts_check_eq("json_parser_load_from_data", JSON_NODE_TYPE (root), JSON_NODE_OBJECT);
- }
- }
- dts_pass("json_parser_load_from_data", "pass");
- g_object_unref (parser);
-
-}
-
-
-static void utc_libjson_json_parser_get_root_func_11(void)
-{
- JsonParser *parser = NULL;
- GError *error = NULL;
- gboolean ret = FALSE;
- int i = 0;
-
- parser = json_parser_new ();
- g_assert (JSON_IS_PARSER (parser));
-
- for (i = 0; i < n_test_invalid; i++)
- {
- error = NULL;
- ret = json_parser_load_from_data (parser, test_invalid[i].str, -1, &error);
- dts_check_eq("json_parser_load_from_data", ret, FALSE);
-
- dts_check_ne("json_parser_load_from_data", error, NULL);
- dts_check_eq("json_parser_load_from_data", error->domain, JSON_PARSER_ERROR);
-
- g_error_free (error);
- }
- dts_pass("json_parser_load_from_data", "pass");
- g_object_unref (parser);
-
-}
-
-
+++ /dev/null
-#include <tet_api.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <glib.h>
-#include <json-glib/json-glib.h>
-
-static void startup(void);
-static void cleanup(void);
-
-void (*tet_startup)(void) = startup;
-void (*tet_cleanup)(void) = cleanup;
-
-static void utc_libjson_json_parser_has_assignment_func_01(void);
-static void utc_libjson_json_parser_has_assignment_func_02(void);
-static void utc_libjson_json_parser_has_assignment_func_03(void);
-static void utc_libjson_json_parser_has_assignment_func_04(void);
-
-enum {
- POSITIVE_TC_IDX = 0x01,
- NEGATIVE_TC_IDX,
-};
-
-struct tet_testlist tet_testlist[] = {
- { utc_libjson_json_parser_has_assignment_func_01, POSITIVE_TC_IDX },
- { utc_libjson_json_parser_has_assignment_func_02, POSITIVE_TC_IDX },
- { utc_libjson_json_parser_has_assignment_func_03, POSITIVE_TC_IDX },
- { utc_libjson_json_parser_has_assignment_func_04, POSITIVE_TC_IDX },
- { NULL, 0 }
-};
-
-
-static const gchar *test_string = "{ \"test\" : 42 }";
-
-static const struct {
- const gchar *str;
- const gchar *var;
-}test_assignments[] = {
- { "var foo = [ false, false, true ]", "foo" },
- { "var bar = [ true, 42 ];", "bar" },
- { "var baz = { \"foo\" : false }", "baz" }
-};
-
-static guint n_test_assignments = G_N_ELEMENTS (test_assignments);
-
-
-static void startup(void)
-{
- g_type_init();
-}
-
-static void cleanup(void)
-{
-}
-
-
-
-/**
- * @brief Positive test case of json_parser_has_assignment()
- */
-static void utc_libjson_json_parser_has_assignment_func_01(void)
-{
- gboolean ret = FALSE;
-
- ret = json_parser_has_assignment (NULL, NULL);
- dts_check_eq("json_parser_has_assignment", ret, FALSE);
-}
-
-/**
- * @brief Negative test case of ug_init json_parser_has_assignment()
- */
-static void utc_libjson_json_parser_has_assignment_func_02(void)
-{
- JsonParser *parser = NULL;
- gboolean ret = FALSE;
-
- parser = json_parser_new ();
- g_assert (JSON_IS_PARSER (parser));
-
- ret = json_parser_has_assignment(parser, NULL);
- dts_check_eq("json_parser_has_assignment", ret, FALSE);
- g_object_unref (parser);
-}
-
-static void utc_libjson_json_parser_has_assignment_func_03(void)
-{
- JsonParser *parser = NULL;
- GError *error = NULL;
- gboolean ret = FALSE;
- gchar *var = NULL; ;
-
- parser = json_parser_new ();
- g_assert (JSON_IS_PARSER (parser));
-
- if (!json_parser_load_from_data (parser, test_string, -1, &error))
- {
- g_error_free (error);
- }
- else
- {
- ret = json_parser_has_assignment (parser, &var);
- dts_check_eq("json_parser_has_assignment", ret, FALSE);
- dts_check_eq("json_parser_has_assignment", var, NULL);
- }
- g_object_unref (parser);
-}
-
-static void utc_libjson_json_parser_has_assignment_func_04(void)
-{
- JsonParser *parser = NULL;
- GError *error = NULL;
- gboolean ret = FALSE;
- gchar *var = NULL;
- int i = 0;
-
- parser = json_parser_new ();
- g_assert (JSON_IS_PARSER (parser));
-
- for (i = 0; i < n_test_assignments; i++)
- {
- error = NULL;
- if (!json_parser_load_from_data (parser, test_assignments[i].str, -1, &error))
- {
- g_error_free (error);
- }
- else
- {
- ret = json_parser_has_assignment (parser, &var);
- dts_check_eq("json_parser_has_assignment", ret, TRUE);
- dts_check_ne("json_parser_has_assignment", var, NULL);
- dts_check_str_eq ("json_parser_has_assignment", var, test_assignments[i].var);
- }
- }
- dts_pass("json_parser_has_assignment", "pass");
- g_object_unref (parser);
-}
-
+++ /dev/null
-#include <tet_api.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <glib.h>
-#include <json-glib/json-glib.h>
-
-static void startup(void);
-static void cleanup(void);
-
-void (*tet_startup)(void) = startup;
-void (*tet_cleanup)(void) = cleanup;
-
-static void utc_libjson_json_parser_load_from_data_func_01(void);
-static void utc_libjson_json_parser_load_from_data_func_02(void);
-static void utc_libjson_json_parser_load_from_data_func_03(void);
-static void utc_libjson_json_parser_load_from_data_func_04(void);
-static void utc_libjson_json_parser_load_from_data_func_05(void);
-static void utc_libjson_json_parser_load_from_data_func_06(void);
-static void utc_libjson_json_parser_load_from_data_func_07(void);
-static void utc_libjson_json_parser_load_from_data_func_08(void);
-static void utc_libjson_json_parser_load_from_data_func_09(void);
-static void utc_libjson_json_parser_load_from_data_func_10(void);
-static void utc_libjson_json_parser_load_from_data_func_11(void);
-static void utc_libjson_json_parser_load_from_data_func_12(void);
-
-
-enum {
- POSITIVE_TC_IDX = 0x01,
- NEGATIVE_TC_IDX,
-};
-
-struct tet_testlist tet_testlist[] = {
- { utc_libjson_json_parser_load_from_data_func_01, POSITIVE_TC_IDX },
- { utc_libjson_json_parser_load_from_data_func_02, POSITIVE_TC_IDX },
- { utc_libjson_json_parser_load_from_data_func_03, POSITIVE_TC_IDX },
- { utc_libjson_json_parser_load_from_data_func_04, POSITIVE_TC_IDX },
- { utc_libjson_json_parser_load_from_data_func_05, POSITIVE_TC_IDX },
- { utc_libjson_json_parser_load_from_data_func_06, POSITIVE_TC_IDX },
- { utc_libjson_json_parser_load_from_data_func_07, POSITIVE_TC_IDX },
- { utc_libjson_json_parser_load_from_data_func_08, POSITIVE_TC_IDX },
- { utc_libjson_json_parser_load_from_data_func_09, POSITIVE_TC_IDX },
- { utc_libjson_json_parser_load_from_data_func_10, POSITIVE_TC_IDX },
- { utc_libjson_json_parser_load_from_data_func_11, POSITIVE_TC_IDX },
- { utc_libjson_json_parser_load_from_data_func_12, POSITIVE_TC_IDX },
- { NULL, 0 }
-};
-
-static const gchar *test_empty_string = "";
-static const gchar *test_empty_array_string = "[ ]";
-static const gchar *test_empty_object_string = "{ }";
-
-static void
-verify_int_value (JsonNode *node)
-{
- dts_check_eq("json_parser_load_from_data", 42, json_node_get_int (node));
-}
-
-static void
-verify_boolean_value (JsonNode *node)
-{
- dts_check_eq("json_parser_load_from_data", TRUE, json_node_get_boolean (node));
-}
-
-static void
-verify_string_value (JsonNode *node)
-{
- dts_check_str_eq("json_parser_load_from_data", "string", json_node_get_string (node));
-}
-
-static void
-verify_double_value (JsonNode *node)
-{
- dts_check_eq("json_parser_load_from_data", 10.2e3, json_node_get_double (node));
-}
-
-static const struct {
- const gchar *str;
- JsonNodeType type;
- GType gtype;
- void (* verify_value) (JsonNode *node);
-}test_base_values[] = {
- { "null", JSON_NODE_NULL, G_TYPE_INVALID, NULL, },
- { "42", JSON_NODE_VALUE, G_TYPE_INT64, verify_int_value },
- { "true", JSON_NODE_VALUE, G_TYPE_BOOLEAN, verify_boolean_value },
- { "\"string\"", JSON_NODE_VALUE, G_TYPE_STRING, verify_string_value },
- { "10.2e3", JSON_NODE_VALUE, G_TYPE_DOUBLE, verify_double_value }
-};
-
-static const struct {
- const gchar *str;
- gint len;
- gint element;
- JsonNodeType type;
- GType gtype;
-}test_simple_arrays[] = {
- { "[ true ]", 1, 0, JSON_NODE_VALUE, G_TYPE_BOOLEAN },
- { "[ true, false, null ]", 3, 2, JSON_NODE_NULL, G_TYPE_INVALID },
- { "[ 1, 2, 3.14, \"test\" ]", 4, 3, JSON_NODE_VALUE, G_TYPE_STRING }
-};
-
-static const gchar *test_nested_arrays[] = {
- "[ 42, [ ], null ]",
- "[ [ ], [ true, [ true ] ] ]",
- "[ [ false, true, 42 ], [ true, false, 3.14 ], \"test\" ]",
- "[ true, { } ]",
- "[ false, { \"test\" : 42 } ]",
- "[ { \"test\" : 42 }, null ]",
- "[ true, { \"test\" : 42 }, null ]",
- "[ { \"channel\" : \"/meta/connect\" } ]"
-};
-
-static const struct {
- const gchar *str;
- gint size;
- const gchar *member;
- JsonNodeType type;
- GType gtype;
-}test_simple_objects[] = {
- { "{ \"test\" : 42 }", 1, "test", JSON_NODE_VALUE, G_TYPE_INT64 },
- { "{ \"name\" : \"\", \"state\" : 1 }", 2, "name", JSON_NODE_VALUE, G_TYPE_STRING },
- { "{ \"foo\" : \"bar\", \"baz\" : null }", 2, "baz", JSON_NODE_NULL, G_TYPE_INVALID },
- { "{ \"channel\" : \"/meta/connect\" }", 1, "channel", JSON_NODE_VALUE, G_TYPE_STRING }
-};
-
-static const gchar *test_nested_objects[] = {
- "{ \"array\" : [ false, \"foo\" ], \"object\" : { \"foo\" : true } }"
-};
-
-static const struct
-{
- const gchar *str;
- const gchar *member;
- const gchar *match;
-}test_unicode[] = {
- { "{ \"test\" : \"foo \\u00e8\" }", "test", "foo è" }
-};
-
-static const struct
-{
- const gchar *str;
-}test_invalid[] = {
- { "test" },
- { "[ foo, ]" },
- { "[ true, ]" },
- { "{ \"foo\" : true \"bar\" : false }" },
- { "[ true, [ false, ] ]" },
- { "{ \"foo\" : { \"bar\" : false, } }" },
- { "[ { }, { }, { }, ]" }
-};
-
-static guint n_test_base_values = G_N_ELEMENTS (test_base_values);
-static guint n_test_simple_arrays = G_N_ELEMENTS (test_simple_arrays);
-static guint n_test_nested_arrays = G_N_ELEMENTS (test_nested_arrays);
-static guint n_test_simple_objects = G_N_ELEMENTS (test_simple_objects);
-static guint n_test_nested_objects = G_N_ELEMENTS (test_nested_objects);
-static guint n_test_unicode = G_N_ELEMENTS (test_unicode);
-static guint n_test_invalid = G_N_ELEMENTS (test_invalid);
-
-
-static void startup(void)
-{
- g_type_init();
-}
-
-static void cleanup(void)
-{
-}
-
-/**
- * @brief Positive test case of json_parser_load_from_data()
- */
-static void utc_libjson_json_parser_load_from_data_func_01(void)
-{
- JsonParser *parser = NULL;
- GError *error = NULL;
- gboolean ret = FALSE;
-
- parser = json_parser_new ();
- g_assert (JSON_IS_PARSER (parser));
-
- ret = json_parser_load_from_data(NULL, NULL, -1, &error);
- dts_check_eq("json_parser_load_from_data", ret, FALSE);
- g_error_free (error);
- g_object_unref (parser);
-}
-
-/**
- * @brief Negative test case of ug_init json_parser_load_from_data()
- */
-static void utc_libjson_json_parser_load_from_data_func_02(void)
-{
- JsonParser *parser = NULL;
- GError *error = NULL;
- gboolean ret = FALSE;
-
- parser = json_parser_new ();
- g_assert (JSON_IS_PARSER (parser));
-
- ret = json_parser_load_from_data(parser, NULL, -1, &error);
- dts_check_eq("json_parser_load_from_data", ret, FALSE);
- g_error_free (error);
- g_object_unref (parser);
-}
-
-static void utc_libjson_json_parser_load_from_data_func_03(void)
-{
- JsonParser *parser = NULL;
- GError *error = NULL;
- gboolean ret = FALSE;
- JsonNode *root;
-
- parser = json_parser_new ();
- g_assert (JSON_IS_PARSER (parser));
-
- ret = json_parser_load_from_data(parser, test_empty_string, -1, &error);
- dts_check_eq("json_parser_load_from_data", ret, TRUE);
-
- root = json_parser_get_root (parser);
- dts_check_eq("json_parser_load_from_data", root, NULL);
-
- g_error_free (error);
- g_object_unref (parser);
-}
-
-static void utc_libjson_json_parser_load_from_data_func_04(void)
-{
- JsonParser *parser = NULL;
- GError *error = NULL;
- gboolean ret = FALSE;
- JsonNode *root = NULL;
- int i = 0;
-
- parser = json_parser_new ();
- g_assert (JSON_IS_PARSER (parser));
-
- for (i = 0; i < n_test_base_values; i++)
- {
- error = NULL;
- ret = json_parser_load_from_data (parser, test_base_values[i].str, -1, &error);
- dts_check_eq("json_parser_load_from_data", ret, TRUE);
- g_error_free (error);
-
- root = json_parser_get_root (parser);
- dts_check_ne("json_parser_load_from_data", root, NULL);
-
- dts_check_eq("json_parser_load_from_data", json_node_get_parent(root), NULL);
-
- dts_check_eq("json_parser_load_from_data", JSON_NODE_TYPE (root), test_base_values[i].type);
- dts_check_eq("json_parser_load_from_data", json_node_get_value_type (root), test_base_values[i].gtype);
-
- if (test_base_values[i].verify_value)
- test_base_values[i].verify_value (root);
- }
- dts_pass("json_parser_load_from_data", "pass");
- g_object_unref (parser);
-
-}
-
-static void utc_libjson_json_parser_load_from_data_func_05(void)
-{
- JsonParser *parser = NULL;
- GError *error = NULL;
- gboolean ret = FALSE;
- JsonNode *root = NULL;
- JsonArray *array = NULL;
-
- parser = json_parser_new ();
- g_assert (JSON_IS_PARSER (parser));
-
- ret = json_parser_load_from_data(parser, test_empty_array_string, -1, &error);
- dts_check_eq("json_parser_load_from_data", ret, TRUE);
-
- root = json_parser_get_root (parser);
- dts_check_ne("json_parser_load_from_data", root, NULL);
-
- dts_check_eq("json_parser_load_from_data", JSON_NODE_TYPE (root), JSON_NODE_ARRAY);
- dts_check_eq("json_parser_load_from_data", json_node_get_parent (root), NULL);
-
- array = json_node_get_array (root);
- dts_check_ne("json_parser_load_from_data", array, NULL);
-
- dts_check_eq("json_parser_load_from_data", json_array_get_length (array), 0);
-
- g_error_free(error);
- g_object_unref(parser);
-}
-
-
-static void utc_libjson_json_parser_load_from_data_func_06(void)
-{
- JsonParser *parser = NULL;
- GError *error = NULL;
- gboolean ret = FALSE;
- JsonNode *root = NULL;
- JsonNode *node = NULL;
- JsonArray *array = NULL;
- int i = 0;
-
- parser = json_parser_new ();
- g_assert (JSON_IS_PARSER (parser));
-
- for (i = 0; i < n_test_simple_arrays; i++)
- {
- error = NULL;
- ret = json_parser_load_from_data (parser, test_simple_arrays[i].str, -1, &error);
- dts_check_eq("json_parser_load_from_data", ret, TRUE);
- g_error_free (error);
-
- root = json_parser_get_root (parser);
- dts_check_ne("json_parser_load_from_data", root, NULL);
-
- dts_check_eq("json_parser_load_from_data", JSON_NODE_TYPE(root), JSON_NODE_ARRAY);
- dts_check_eq("json_parser_load_from_data", json_node_get_parent(root), NULL);
-
- array = json_node_get_array (root);
- dts_check_ne("json_parser_load_from_data", array, NULL);
-
- dts_check_eq("json_parser_load_from_data", json_array_get_length(array), test_simple_arrays[i].len);
-
- node = json_array_get_element (array, test_simple_arrays[i].element);
- dts_check_ne("json_parser_load_from_data", node, NULL);
- dts_check_eq("json_parser_load_from_data", json_node_get_parent(node), root);
- dts_check_eq("json_parser_load_from_data", JSON_NODE_TYPE(node), test_simple_arrays[i].type);
- dts_check_eq("json_parser_load_from_data", json_node_get_value_type (node), test_simple_arrays[i].gtype);
- }
- dts_pass("json_parser_load_from_data", "pass");
- g_object_unref (parser);
-}
-
-
-static void utc_libjson_json_parser_load_from_data_func_07(void)
-{
- JsonParser *parser = NULL;
- GError *error = NULL;
- gboolean ret = FALSE;
- JsonNode *root = NULL;
- JsonArray *array = NULL;
- int i = 0;
-
- parser = json_parser_new ();
- g_assert (JSON_IS_PARSER (parser));
-
- for (i = 0; i < n_test_nested_arrays; i++)
- {
- error = NULL;
- ret = json_parser_load_from_data (parser, test_nested_arrays[i], -1, &error);
- dts_check_eq("json_parser_load_from_data", ret, TRUE);
- g_error_free (error);
-
- root = json_parser_get_root (parser);
- dts_check_ne("json_parser_load_from_data", root, NULL);
-
- dts_check_eq("json_parser_load_from_data", JSON_NODE_TYPE(root), JSON_NODE_ARRAY);
- dts_check_eq("json_parser_load_from_data", json_node_get_parent(root), NULL);
-
- array = json_node_get_array (root);
- dts_check_ne("json_parser_load_from_data", array, NULL);
-
- dts_check_gt("json_parser_load_from_data", json_array_get_length(array), 0);
- }
- dts_pass("json_parser_load_from_data", "pass");
- g_object_unref (parser);
-}
-
-static void utc_libjson_json_parser_load_from_data_func_08(void)
-{
- JsonParser *parser = NULL;
- GError *error = NULL;
- gboolean ret = FALSE;
- JsonNode *root = NULL;
- JsonObject *object = NULL;
-
- parser = json_parser_new ();
- g_assert (JSON_IS_PARSER (parser));
-
- ret = json_parser_load_from_data(parser, test_empty_object_string, -1, &error);
- dts_check_eq("json_parser_load_from_data", ret, TRUE);
-
- root = json_parser_get_root (parser);
- dts_check_ne("json_parser_load_from_data", root, NULL);
-
- dts_check_eq("json_parser_load_from_data", json_node_get_parent(root), NULL);
- dts_check_eq("json_parser_load_from_data", JSON_NODE_TYPE(root), JSON_NODE_OBJECT);
- dts_check_eq("json_parser_load_from_data", json_node_get_parent(root), NULL);
-
- object = json_node_get_object (root);
- dts_check_ne("json_parser_load_from_data", object, NULL);
-
- dts_check_eq("json_parser_load_from_data", json_object_get_size(object), 0);
-
- g_error_free (error);
- g_object_unref (parser);
-}
-
-
-
-static void utc_libjson_json_parser_load_from_data_func_09(void)
-{
- JsonParser *parser = NULL;
- GError *error = NULL;
- gboolean ret = FALSE;
- JsonNode *root = NULL;
- JsonNode *node = NULL;
- JsonObject *object = NULL;
- int i = 0;
-
- parser = json_parser_new ();
- g_assert (JSON_IS_PARSER (parser));
-
- for (i = 0; i < n_test_simple_objects; i++)
- {
- error = NULL;
- ret = json_parser_load_from_data (parser, test_simple_objects[i].str, -1, &error);
- dts_check_eq("json_parser_load_from_data", ret, TRUE);
- g_error_free (error);
-
- root = json_parser_get_root (parser);
- dts_check_ne("json_parser_load_from_data", root, NULL);
-
- dts_check_eq("json_parser_load_from_data", JSON_NODE_TYPE(root), JSON_NODE_OBJECT);
- dts_check_eq("json_parser_load_from_data", json_node_get_parent(root), NULL);
-
- object = json_node_get_object (root);
- dts_check_ne("json_parser_load_from_data",object, NULL);
- dts_check_eq("json_parser_load_from_data", json_object_get_size(object), test_simple_objects[i].size);
-
- node = json_object_get_member (object, test_simple_objects[i].member);
- dts_check_ne("json_parser_load_from_data", node, NULL);
- dts_check_eq("json_parser_load_from_data", json_node_get_parent(node), root);
- dts_check_eq("json_parser_load_from_data", JSON_NODE_TYPE(node), test_simple_objects[i].type);
- dts_check_eq("json_parser_load_from_data", json_node_get_value_type(node), test_simple_objects[i].gtype);
- }
- dts_pass("json_parser_load_from_data", "pass");
- g_object_unref (parser);
-
-}
-
-static void utc_libjson_json_parser_load_from_data_func_10(void)
-{
- JsonParser *parser = NULL;
- GError *error = NULL;
- gboolean ret = FALSE;
- JsonNode *root = NULL;
- JsonObject *object = NULL;
- int i = 0;
-
- parser = json_parser_new ();
- g_assert (JSON_IS_PARSER (parser));
-
- for (i = 0; i < n_test_nested_objects; i++)
- {
- error = NULL;
- ret = json_parser_load_from_data (parser, test_nested_objects[i], -1, &error);
- dts_check_eq("json_parser_load_from_data", ret, TRUE);
- g_error_free (error);
-
- root = json_parser_get_root (parser);
- dts_check_ne("json_parser_load_from_data", root, NULL);
-
- dts_check_eq("json_parser_load_from_data", JSON_NODE_TYPE(root), JSON_NODE_OBJECT);
- dts_check_eq("json_parser_load_from_data", json_node_get_parent(root), NULL);
-
- object = json_node_get_object (root);
- dts_check_ne("json_parser_load_from_data", object, NULL);
- dts_check_gt("json_parser_load_from_data", json_object_get_size(object), 0);
- }
- dts_pass("json_parser_load_from_data", "pass");
- g_object_unref (parser);
-
-}
-
-
-static void utc_libjson_json_parser_load_from_data_func_11(void)
-{
- JsonParser *parser = NULL;
- GError *error = NULL;
- gboolean ret = FALSE;
- JsonNode *root = NULL;
- JsonNode *node = NULL;
- JsonObject *object = NULL;
- int i = 0;
-
- parser = json_parser_new ();
- g_assert (JSON_IS_PARSER (parser));
-
- for (i = 0; i < n_test_unicode; i++)
- {
- error = NULL;
- ret = json_parser_load_from_data (parser, test_unicode[i].str, -1, &error);
- dts_check_eq("json_parser_load_from_data", ret, TRUE);
- g_error_free (error);
-
- root = json_parser_get_root (parser);
- dts_check_ne("json_parser_load_from_data", root, NULL);
-
- dts_check_eq("json_parser_load_from_data", JSON_NODE_TYPE (root), JSON_NODE_OBJECT);
-
- object = json_node_get_object (root);
- dts_check_ne("json_parser_load_from_data", object, NULL);
- dts_check_gt("json_parser_load_from_data", json_object_get_size (object), 0);
-
- node = json_object_get_member(object, test_unicode[i].member);
- dts_check_eq("json_parser_load_from_data", JSON_NODE_TYPE(node), JSON_NODE_VALUE);
- dts_check_str_eq("json_parser_load_from_data", json_node_get_string (node), test_unicode[i].match);
- dts_check_eq("json_parser_load_from_data", g_utf8_validate(json_node_get_string (node), -1, NULL), TRUE);
-
- }
- dts_pass("json_parser_load_from_data", "pass");
- g_object_unref (parser);
-}
-
-
-static void utc_libjson_json_parser_load_from_data_func_12(void)
-{
- JsonParser *parser = NULL;
- GError *error = NULL;
- gboolean ret = FALSE;
- int i = 0;
-
- parser = json_parser_new ();
- g_assert (JSON_IS_PARSER (parser));
-
- for (i = 0; i < n_test_invalid; i++)
- {
- error = NULL;
- ret = json_parser_load_from_data (parser, test_invalid[i].str, -1, &error);
- dts_check_eq("json_parser_load_from_data", ret, FALSE);
-
- dts_check_ne("json_parser_load_from_data", error, NULL);
- dts_check_eq("json_parser_load_from_data", error->domain, JSON_PARSER_ERROR);
-
- g_error_free (error);
- }
- dts_pass("json_parser_load_from_data", "pass");
- g_object_unref (parser);
-}
-
+++ /dev/null
-#include <tet_api.h>
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <glib.h>
-#include <json-glib/json-glib.h>
-
-
-static void startup(void);
-static void cleanup(void);
-
-void (*tet_startup)(void) = startup;
-void (*tet_cleanup)(void) = cleanup;
-
-static void utc_libjson_json_parser_load_from_file_func_01(void);
-static void utc_libjson_json_parser_load_from_file_func_02(void);
-static void utc_libjson_json_parser_load_from_file_func_03(void);
-
-enum {
- POSITIVE_TC_IDX = 0x01,
- NEGATIVE_TC_IDX,
-};
-
-struct tet_testlist tet_testlist[] = {
- { utc_libjson_json_parser_load_from_file_func_01, POSITIVE_TC_IDX },
- { utc_libjson_json_parser_load_from_file_func_02, POSITIVE_TC_IDX },
- { utc_libjson_json_parser_load_from_file_func_03, POSITIVE_TC_IDX },
- { NULL, 0 }
-};
-
-
-static void startup(void)
-{
- g_type_init ();
-}
-
-static void cleanup(void)
-{
-}
-
-/**
- * @brief Positive test case of json_parser_load_from_file()
- */
-static void utc_libjson_json_parser_load_from_file_func_01(void)
-{
- JsonParser *parser = NULL;
- GError *error = NULL;
- gboolean ret = FALSE;
-
- parser = json_parser_new ();
- g_assert (JSON_IS_PARSER (parser));
-
- ret = json_parser_load_from_file(NULL, NULL, &error);
- dts_check_eq("json_parser_load_from_file", ret, FALSE);
- g_error_free (error);
- g_object_unref (parser);
-}
-
-/**
- * @brief Negative test case of ug_init json_parser_load_from_file()
- */
-static void utc_libjson_json_parser_load_from_file_func_02(void)
-{
- JsonParser *parser = NULL;
- GError *error = NULL;
- gboolean ret = FALSE;
-
- parser = json_parser_new ();
- g_assert (JSON_IS_PARSER (parser));
-
- ret = json_parser_load_from_file(parser, NULL, &error);
- dts_check_eq("json_parser_load_from_file", ret, FALSE);
- g_error_free (error);
- g_object_unref (parser);
-}
-
-/**
- * @brief Negative test case of ug_init json_parser_load_from_file()
- */
-static void utc_libjson_json_parser_load_from_file_func_03(void)
-{
- JsonParser *parser = NULL;
- GError *error = NULL;
- gboolean ret = FALSE;
-
- parser = json_parser_new ();
- g_assert (JSON_IS_PARSER (parser));
-
- ret = json_parser_load_from_file(parser, "", &error);
- dts_check_eq("json_parser_load_from_file", ret, FALSE);
- g_error_free (error);
- g_object_unref (parser);
-}
-
+++ /dev/null
-#include <tet_api.h>
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <glib.h>
-#include <json-glib/json-glib.h>
-
-static void startup(void);
-static void cleanup(void);
-
-void (*tet_startup)(void) = startup;
-void (*tet_cleanup)(void) = cleanup;
-
-static void utc_libjson_json_parser_new_func_01(void);
-static void utc_libjson_json_parser_new_func_02(void);
-
-enum {
- POSITIVE_TC_IDX = 0x01,
- NEGATIVE_TC_IDX,
-};
-
-struct tet_testlist tet_testlist[] = {
- { utc_libjson_json_parser_new_func_01, POSITIVE_TC_IDX },
- { utc_libjson_json_parser_new_func_02, POSITIVE_TC_IDX },
- { NULL, 0 }
-};
-
-static void startup(void)
-{
- g_type_init ();
-}
-
-static void cleanup(void)
-{
-}
-
-/**
- * @brief Positive test case of json_parser_new()
- */
-static void utc_libjson_json_parser_new_func_01(void)
-{
- JsonParser *parser = NULL;
-
- parser = json_parser_new ();
- dts_check_ne("json_parser_new", parser, NULL);
- g_object_unref (parser);
-}
-
-/**
- * @brief Negative test case of ug_init json_parser_new()
- */
-static void utc_libjson_json_parser_new_func_02(void)
-{
- JsonParser *parser = NULL;
-
- parser = json_parser_new();
-
- dts_check_eq("json_parser_new", JSON_IS_PARSER(parser), TRUE);
- g_object_unref (parser);
-}
+++ /dev/null
-###################################################
-# add your TestCase List Here
-#
-# e.g.,
-# TC1 = utc_frameworkName_apiName_func
-# TC2 = utc_ApplicationLib_recurGetDayOfWeek_func
-TARGETS = utc_libjson_json_array_func \
- utc_libjson_json_node_func \
- utc_libjson_json_object_func
-###################################################
-# add your Package Config Info Here
-#
-# e.g.,
-# PKGS=calendar
-PKGS=json-glib-1.0
-
-LIBS = `pkg-config --libs $(PKGS)`
-LIBS += `pkg-config --libs glib-2.0`
-LIBS +=$(TET_ROOT)/lib/tet3/tcm_s.o
-LIBS +=-L$(TET_ROOT)/lib/tet3 -ltcm_s
-LIBS +=-L$(TET_ROOT)/lib/tet3 -lapi_s
-
-INCS = -I. `pkg-config --cflags $(PKGS)`
-INCS += -I. `pkg-config --cflags glib-2.0`
-INCS += -I$(TET_ROOT)/inc/tet3
-
-
-CFLAGS = $(INCS)
-CFLAGS += -D_TETWARE_MODE
-CFLAGS += -Wall
-LDFLAGS = $(LIBS)
-
-###################################################
-# Modify here
-# depending on the Test Case you want to build
-#
-# e.g.,
-# TCLIST = $(TC1) $(TC2)
-all : $(TARGETS)
-
-$(TARGETS) : %: %.c
- $(CC) -o $@ $< $(CFLAGS) $(LDFLAGS)
-
-clean :
- rm -rf $(TARGETS)
-
+++ /dev/null
-/unit/TC_Types/utc_libjson_json_array_func
-/unit/TC_Types/utc_libjson_json_node_func
-/unit/TC_Types/utc_libjson_json_object_func
\ No newline at end of file
+++ /dev/null
-#include <tet_api.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <glib.h>
-#include <glib/gstdio.h>
-
-#include <json-glib/json-glib.h>
-
-
-static void startup(void);
-static void cleanup(void);
-
-void (*tet_startup)(void) = startup;
-void (*tet_cleanup)(void) = cleanup;
-
-static void utc_libjson_json_array_func_01(void);
-static void utc_libjson_json_array_func_02(void);
-static void utc_libjson_json_array_func_03(void);
-static void utc_libjson_json_array_func_04(void);
-static void utc_libjson_json_array_func_05(void);
-static void utc_libjson_json_array_func_06(void);
-
-
-enum {
- POSITIVE_TC_IDX = 0x01,
- NEGATIVE_TC_IDX,
-};
-
-struct tet_testlist tet_testlist[] = {
- { utc_libjson_json_array_func_01, POSITIVE_TC_IDX },
- { utc_libjson_json_array_func_02, POSITIVE_TC_IDX },
- { utc_libjson_json_array_func_03, POSITIVE_TC_IDX },
- { utc_libjson_json_array_func_04, POSITIVE_TC_IDX },
- { utc_libjson_json_array_func_05, POSITIVE_TC_IDX },
- { utc_libjson_json_array_func_06, POSITIVE_TC_IDX },
- { NULL, 0 }
-};
-
-
-typedef struct _TestForeachFixture
-{
- gint n_elements;
-}TestForeachFixture;
-
-static const struct {
- JsonNodeType element_type;
- GType element_gtype;
-}type_verify[] = {
- { JSON_NODE_VALUE, G_TYPE_INT64 },
- { JSON_NODE_VALUE, G_TYPE_BOOLEAN },
- { JSON_NODE_VALUE, G_TYPE_STRING },
- { JSON_NODE_NULL, G_TYPE_INVALID }
-};
-
-
-static void startup(void)
-{
- g_type_init();
-}
-
-static void cleanup(void)
-{
-}
-
-/**
- * @brief Positive test case of json_array()
- */
-static void utc_libjson_json_array_func_01(void)
-{
- JsonArray *array = json_array_new ();
-
- dts_check_eq("json_array_empty", json_array_get_length (array), 0);
- dts_check_eq("json_array_empty", json_array_get_elements (array), NULL);
-
- json_array_unref (array);
-}
-
-/**
- * @brief Negative test case of ug_init json_array()
- */
-static void utc_libjson_json_array_func_02(void)
-{
- JsonArray *array = json_array_new ();
- JsonNode *node = json_node_new (JSON_NODE_NULL);
-
- dts_check_eq("json_array_add", json_array_get_length (array), 0);
-
- json_array_add_element (array, node);
- dts_check_eq("json_array_add", json_array_get_length (array), 1);
-
- node = json_array_get_element (array, 0);
- dts_check_eq("json_array_add", JSON_NODE_TYPE (node), JSON_NODE_NULL);
-
- json_array_unref (array);
-}
-
-static void utc_libjson_json_array_func_03(void)
-{
- JsonArray *array = json_array_new ();
- JsonNode *node = json_node_new (JSON_NODE_NULL);
-
- json_array_add_element (array, node);
- json_array_remove_element (array, 0);
- dts_check_eq("json_array_remove", json_array_get_length (array), 0);
-
- json_array_unref (array);
-}
-
-static void
-verify_foreach (JsonArray *array,
- guint index_,
- JsonNode *element_node,
- gpointer user_data)
-{
- TestForeachFixture *fixture = user_data;
-
- dts_check_eq("json_array_foreach_element", json_node_get_node_type(element_node), type_verify[index_].element_type);
- dts_check_eq("json_array_foreach_element", json_node_get_value_type(element_node), type_verify[index_].element_gtype);
-
- fixture->n_elements += 1;
-}
-
-
-static void utc_libjson_json_array_func_04(void)
-{
- JsonArray *array = json_array_new ();
- TestForeachFixture fixture = { 0, };
-
- json_array_add_int_element (array, 42);
- json_array_add_boolean_element (array, TRUE);
- json_array_add_string_element (array, "hello");
- json_array_add_null_element (array);
-
- json_array_foreach_element (array, verify_foreach, &fixture);
-
- dts_check_eq("json_array_foreach_element", fixture.n_elements, json_array_get_length (array));
-
- json_array_unref (array);
-}
-
-static void utc_libjson_json_array_func_05(void)
-{
- JsonArray *array = json_array_sized_new (3);
- JsonArray *ret_array = NULL;
-
- ret_array = json_array_ref(array);
- dts_check_eq ("json_object_ref", ret_array, array);
-
- json_array_unref (array); // for ref
- json_array_unref (array); // for new
-}
-
-
-static void utc_libjson_json_array_func_06(void)
-{
- JsonArray* array = NULL;
- JsonArray* array_member = NULL;
- JsonObject * object_member = NULL;
- JsonArray* ret_array = NULL;
- JsonObject * ret_object = NULL;
- JsonNode * dup_node = NULL;
-
- array = json_array_new ();
-
- json_array_add_int_element (array, 42);
- json_array_add_double_element(array, 25.6);
- json_array_add_boolean_element(array, TRUE);
- json_array_add_string_element(array, "foo");
- json_array_add_null_element(array);
-
- array_member = json_array_new();
- json_array_add_int_element(array_member, 12);
- json_array_add_array_element(array, array_member);
-
- object_member = json_object_new();
- json_object_set_int_member(object_member, "foo", 89);
- json_array_add_object_element(array, object_member);
-
- dts_check_eq ("json_array_int_member_get_set", json_array_get_int_element (array, 0), 42);
- dts_check_eq ("json_array_double_member_get_set", json_array_get_double_element (array, 1), 25.6);
- dts_check_eq ("json_array_boolean_member_get_set", json_array_get_boolean_element (array, 2), TRUE);
- dts_check_str_eq ("json_array_string_member_get_set", json_array_get_string_element (array, 3),"foo");
- dts_check_eq ("json_array_null_member_get_set", json_array_get_null_element (array, 4), TRUE);
-
- ret_array = json_array_get_array_element (array, 5);
- dts_check_eq ("json_array_array_member_get_set", json_array_get_int_element(ret_array, 0), 12);
-
- ret_object = json_array_get_object_element (array,6);
- dts_check_eq ("json_array_object_member_get_set", json_object_get_int_member (ret_object, "foo"), 89);
-
- dup_node = json_array_dup_element(array, 0);
- dts_check_eq ("json_array_dup_element", json_node_get_int(dup_node), 42);
-
- json_object_unref(object_member);
- json_array_unref(array_member);
- json_array_unref(array);
-}
-
-
-
+++ /dev/null
-#include <tet_api.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <glib.h>
-#include <glib/gstdio.h>
-
-#include <json-glib/json-glib.h>
-
-static void startup(void);
-static void cleanup(void);
-
-void (*tet_startup)(void) = startup;
-void (*tet_cleanup)(void) = cleanup;
-
-static void utc_libjson_json_node_func_01(void);
-static void utc_libjson_json_node_func_02(void);
-static void utc_libjson_json_node_func_03(void);
-static void utc_libjson_json_node_func_04(void);
-static void utc_libjson_json_node_func_05(void);
-static void utc_libjson_json_node_func_06(void);
-static void utc_libjson_json_node_func_07(void);
-static void utc_libjson_json_node_func_08(void);
-static void utc_libjson_json_node_func_09(void);
-static void utc_libjson_json_node_func_10(void);
-static void utc_libjson_json_node_func_11(void);
-
-
-/*
-#define TEST_TYPE_BOXED (test_boxed_get_type ())
-#define TEST_TYPE_OBJECT (test_object_get_type ())
-#define TEST_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TEST_TYPE_OBJECT, TestObject))
-#define TEST_IS_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TEST_TYPE_OBJECT))
-
-*/
-#define JSON_TYPE_NODE (json_node_get_type ())
-
-#define TEST_IS_JSONNODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), JSON_TYPE_NODE))
-
-GType json_node_get_type (void);
-
-enum {
- POSITIVE_TC_IDX = 0x01,
- NEGATIVE_TC_IDX,
-};
-
-struct tet_testlist tet_testlist[] = {
- { utc_libjson_json_node_func_01, POSITIVE_TC_IDX },
- { utc_libjson_json_node_func_02, POSITIVE_TC_IDX },
- { utc_libjson_json_node_func_03, POSITIVE_TC_IDX },
- { utc_libjson_json_node_func_04, POSITIVE_TC_IDX },
- { utc_libjson_json_node_func_05, POSITIVE_TC_IDX },
- { utc_libjson_json_node_func_06, POSITIVE_TC_IDX },
- { utc_libjson_json_node_func_07, POSITIVE_TC_IDX },
- { utc_libjson_json_node_func_08, POSITIVE_TC_IDX },
- { utc_libjson_json_node_func_09, POSITIVE_TC_IDX },
- { utc_libjson_json_node_func_10, POSITIVE_TC_IDX },
- { utc_libjson_json_node_func_11, POSITIVE_TC_IDX },
- { NULL, 0 }
-};
-
-static void startup(void)
-{
- g_type_init();
-}
-
-static void cleanup(void)
-{
-}
-
-/**
- * @brief Positive test case of json_node()
- */
-static void utc_libjson_json_node_func_01(void)
-{
- JsonNode *node = json_node_new (JSON_NODE_NULL);
- JsonNode *copy = json_node_copy (node);
-
- dts_check_eq ("json_node_copy_null", json_node_get_node_type (node), json_node_get_node_type (copy));
- dts_check_eq ("json_node_copy_null", json_node_get_value_type (node), json_node_get_value_type (copy));
- dts_check_eq ("json_node_copy_null", json_node_type_name (node), json_node_type_name (copy));
-
- json_node_free (copy);
- json_node_free (node);
-}
-
-/**
- * @brief Negative test case of ug_init json_node()
- */
-static void utc_libjson_json_node_func_02(void)
-{
- JsonNode *node = json_node_new (JSON_NODE_VALUE);
- JsonNode *copy;
-
- json_node_set_string (node, "hello");
-
- copy = json_node_copy (node);
- dts_check_eq ("json_node_copy_value", json_node_get_node_type (node), json_node_get_node_type (copy));
- dts_check_str_eq ("json_node_copy_value", json_node_type_name (node), json_node_type_name (copy));
- dts_check_str_eq ("json_node_copy_value", json_node_get_string (node), json_node_get_string (copy));
-
- json_node_free (copy);
- json_node_free (node);
-}
-
-static void utc_libjson_json_node_func_03(void)
-{
- JsonObject *obj = json_object_new ();
- JsonNode *node = json_node_new (JSON_NODE_OBJECT);
- JsonNode *value = json_node_new (JSON_NODE_VALUE);
- JsonNode *copy;
-
- json_node_set_int (value, 42);
- json_object_set_member (obj, "answer", value);
-
- json_node_take_object (node, obj);
-
- copy = json_node_copy (node);
-
- dts_check_eq ("json_node_copy_object", json_node_get_node_type (node), json_node_get_node_type (copy));
- dts_check_eq ("json_node_copy_object", json_node_get_object (node), json_node_get_object (copy));
-
- json_node_free (copy);
- json_node_free (node);
-
-}
-
-
-static void utc_libjson_json_node_func_04(void)
-{
- JsonNode *node = json_node_new (JSON_NODE_NULL);
-
- g_assert (JSON_NODE_HOLDS_NULL (node));
- dts_check_eq ("json_node_null", json_node_get_value_type (node), G_TYPE_INVALID);
- dts_check_str_eq ("json_node_null", json_node_type_name (node), "NULL");
-
- json_node_free (node);
-}
-
-static void utc_libjson_json_node_func_05(void)
-{
- JsonNode *node = json_node_new (JSON_NODE_VALUE);
- GValue value = { 0, };
- GValue check = { 0, };
-
- dts_check_eq ("json_node_value", JSON_NODE_TYPE (node), JSON_NODE_VALUE);
-
- g_value_init (&value, G_TYPE_INT64);
- g_value_set_int64 (&value, 42);
-
- dts_check_eq ("json_node_value", G_VALUE_TYPE (&value), G_TYPE_INT64);
- dts_check_eq ("json_node_value", g_value_get_int64 (&value), 42);
-
- json_node_set_value (node, &value);
- json_node_get_value (node, &check);
-
- dts_check_eq ("json_node_value", G_VALUE_TYPE (&value), G_VALUE_TYPE (&check));
- dts_check_eq ("json_node_value", g_value_get_int64 (&value), g_value_get_int64 (&check));
- dts_check_eq ("json_node_value", G_VALUE_TYPE (&check), G_TYPE_INT64);
- dts_check_eq ("json_node_value", g_value_get_int64 (&check), 42);
-
- g_value_unset (&value);
- g_value_unset (&check);
- json_node_free (node);
-
-}
-
-static void utc_libjson_json_node_func_06(void)
-{
- JsonNode *root = json_node_new (JSON_NODE_OBJECT);
- JsonNode *node = json_node_new (JSON_NODE_OBJECT);
- JsonObject * object = NULL;
- JsonObject * ret_object = NULL;
-
- json_node_set_parent(node, root);
- dts_check_eq("json_node_object", json_node_get_parent(node), root);
-
- object = json_object_new();
- json_object_set_int_member(object, "foo", 12);
-
- json_node_set_object(node, object);
- ret_object = json_node_get_object(node);
- dts_check_ne("json_node_object", ret_object, NULL);
- dts_check_eq("json_node_object", json_object_get_int_member(ret_object, "foo"), 12);
-
- json_node_dup_object(node);
- dts_check_eq("json_node_object", json_object_get_int_member(ret_object, "foo"), 12);
-
- json_object_unref(object); //for json_node_set_object
- json_object_unref(object); //for json_node_dup_object
-
- json_node_free(node);
- json_node_free(root);
-}
-
-static void utc_libjson_json_node_func_07(void)
-{
- JsonNode *node = json_node_new (JSON_NODE_ARRAY);
- JsonArray* array = NULL;
- JsonArray * ret_array = NULL;
-
- array = json_array_new();
- json_array_add_int_element(array, 12);
-
- json_node_set_array(node, array);
- ret_array = json_node_get_array(node);
- dts_check_ne("json_node_array", ret_array, NULL);
- dts_check_eq("json_node_array", json_array_get_int_element(ret_array, 0), 12);
-
- json_node_take_array(node, array);
- ret_array = json_node_get_array(node);
- dts_check_eq("json_node_array", json_array_get_int_element(ret_array, 0), 12);
-
- json_node_dup_array(node);
- ret_array = json_node_get_array(node);
- dts_check_eq("json_node_array", json_array_get_int_element(ret_array, 0), 12);
-
- json_array_unref(array); //for json_node_set_array
- json_array_unref(array); //for json_node_dup_array
-
- json_node_free(node);
-}
-
-static void utc_libjson_json_node_func_08(void)
-{
- JsonNode *node = json_node_new (JSON_NODE_VALUE);
- char* value = NULL;
-
- json_node_set_string(node, "foo");
- dts_check_str_eq("json_node_string", json_node_get_string(node), "foo");
-
- value = json_node_dup_string(node);
- dts_check_str_eq("json_node_string", json_node_get_string(node), "foo");
-
- json_node_free(node);
-}
-
-static void utc_libjson_json_node_func_09(void)
-{
- JsonNode *node = json_node_new (JSON_NODE_VALUE);
-
- json_node_set_double(node, 2.3);
- dts_check_eq("json_node_double", json_node_get_double(node), 2.3);
-
- json_node_free(node);
-}
-
-static void utc_libjson_json_node_func_10(void)
-{
- JsonNode *node = json_node_new (JSON_NODE_VALUE);
-
- json_node_set_boolean(node, TRUE);
- dts_check_eq("json_node_boolean", json_node_get_boolean(node), TRUE);
-
- json_node_free(node);
-}
-
-
-static void utc_libjson_json_node_func_11(void)
-{
- JsonNode *node = NULL;
-
- //GObject *obj = NULL;
- //obj = g_object_new(JSON_TYPE_NODE, "bar", TRUE, NULL);
- //dts_check_eq("json_node_get_type", TEST_IS_JSONNODE(obj), TRUE);
- //g_object_unref (obj);
-
- dts_check_eq("json_node_is_null", json_node_is_null(node), TRUE);
-
- node = json_node_new (JSON_NODE_OBJECT);
- dts_check_eq("json_node_is_null", json_node_is_null(node), FALSE);
-
- json_node_free(node);
-}
-
-
+++ /dev/null
-#include <tet_api.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <glib.h>
-#include <glib/gstdio.h>
-
-#include <json-glib/json-glib.h>
-
-
-static void startup(void);
-static void cleanup(void);
-
-void (*tet_startup)(void) = startup;
-void (*tet_cleanup)(void) = cleanup;
-
-static void utc_libjson_json_object_func_01(void);
-static void utc_libjson_json_object_func_02(void);
-static void utc_libjson_json_object_func_03(void);
-static void utc_libjson_json_object_func_04(void);
-static void utc_libjson_json_object_func_05(void);
-static void utc_libjson_json_object_func_06(void);
-static void utc_libjson_json_object_func_07(void);
-
-
-enum {
- POSITIVE_TC_IDX = 0x01,
- NEGATIVE_TC_IDX,
-};
-
-struct tet_testlist tet_testlist[] = {
- { utc_libjson_json_object_func_01, POSITIVE_TC_IDX },
- { utc_libjson_json_object_func_02, POSITIVE_TC_IDX },
- { utc_libjson_json_object_func_03, POSITIVE_TC_IDX },
- { utc_libjson_json_object_func_04, POSITIVE_TC_IDX },
- { utc_libjson_json_object_func_05, POSITIVE_TC_IDX },
- { utc_libjson_json_object_func_06, POSITIVE_TC_IDX },
- { utc_libjson_json_object_func_07, POSITIVE_TC_IDX },
- { NULL, 0 }
-};
-
-typedef struct _TestForeachFixture
-{
- gint n_members;
-}TestForeachFixture;
-
-static const struct {
- const gchar *member_name;
- JsonNodeType member_type;
- GType member_gtype;
-}type_verify[] = {
- { "integer", JSON_NODE_VALUE, G_TYPE_INT64 },
- { "boolean", JSON_NODE_VALUE, G_TYPE_BOOLEAN },
- { "string", JSON_NODE_VALUE, G_TYPE_STRING },
- { "null", JSON_NODE_NULL, G_TYPE_INVALID }
-};
-
-static void startup(void)
-{
- g_type_init();
-}
-
-static void cleanup(void)
-{
-}
-
-/**
- * @brief Positive test case of json_object()
- */
-static void utc_libjson_json_object_func_01(void)
-{
- JsonObject *object = json_object_new ();
-
- dts_check_eq ("json_object_empty", json_object_get_size (object), 0);
- dts_check_eq ("json_object_empty", json_object_get_members (object), NULL);
-
- json_object_unref (object);
-}
-
-/**
- * @brief Negative test case of ug_init json_object()
- */
-static void utc_libjson_json_object_func_02(void)
-{
- JsonObject *object = json_object_new ();
- JsonNode *node = json_node_new (JSON_NODE_NULL);
- JsonNode *dup_node = NULL;
-
- dts_check_eq ("json_object_add_member", json_object_get_size (object), 0);
-
- json_object_set_member (object, "Null", node);
- dts_check_eq ("json_object_add_member", json_object_get_size (object), 1);
-
- dup_node = json_object_dup_member(object, "Null");
- dts_check_eq ("json_object_add_member", JSON_NODE_TYPE (dup_node), JSON_NODE_NULL);
-
- node = json_object_get_member (object, "Null");
- dts_check_eq ("json_object_add_member", JSON_NODE_TYPE (node), JSON_NODE_NULL);
-
- json_object_unref (object);
-}
-
-static void utc_libjson_json_object_func_03(void)
-{
- JsonObject *object = json_object_new ();
- JsonNode *node = json_node_new (JSON_NODE_NULL);
-
- json_object_set_member (object, "Null", node);
-
- json_object_remove_member (object, "Null");
- dts_check_eq ("json_object_remove_member", json_object_get_size (object), 0);
-
- json_object_unref (object);
-}
-
-static void
-verify_foreach (JsonObject *object,
- const gchar *member_name,
- JsonNode *member_node,
- gpointer user_data)
-{
- TestForeachFixture *fixture = user_data;
- gint i = 0;
-
- for (i = 0; i < G_N_ELEMENTS (type_verify); i++)
- {
- if (strcmp (member_name, type_verify[i].member_name) == 0)
- {
- dts_check_eq ("json_object_foreach_member", json_node_get_node_type (member_node), type_verify[i].member_type);
- dts_check_eq ("json_object_foreach_member", json_node_get_value_type (member_node), type_verify[i].member_gtype);
- break;
- }
- }
-
- fixture->n_members += 1;
-}
-
-static void utc_libjson_json_object_func_04(void)
-{
- JsonObject *object = json_object_new ();
- TestForeachFixture fixture = { 0, };
-
- json_object_set_int_member (object, "integer", 42);
- json_object_set_boolean_member (object, "boolean", TRUE);
- json_object_set_string_member (object, "string", "hello");
- json_object_set_null_member (object, "null");
-
- json_object_foreach_member (object, verify_foreach, &fixture);
-
- dts_check_eq ("json_object_foreach_member", fixture.n_members, json_object_get_size (object));
-
- json_object_unref (object);
-
-}
-
-static void utc_libjson_json_object_func_05(void)
-{
- JsonObject *object = json_object_new ();
-
- json_object_set_string_member (object, "string", "");
- dts_check_eq ("json_object_empty_member", json_object_has_member (object, "string"), TRUE);
- dts_check_str_eq ("json_object_empty_member", json_object_get_string_member (object, "string"), "");
-
- json_object_unref (object);
-}
-
-static void utc_libjson_json_object_func_06(void)
-{
- JsonObject *object = json_object_new ();
- JsonObject *ret_object = NULL;
-
- ret_object = json_object_ref(object);
-
- json_object_unref (object); // for ref
- json_object_unref (object); // for new
-
- dts_check_eq ("json_object_ref", ret_object, object);
-}
-
-static void utc_libjson_json_object_func_07(void)
-{
- JsonObject *object = NULL;
- JsonArray* array = NULL;
- JsonObject * object_member = NULL;
- JsonArray* ret_array = NULL;
- JsonObject * ret_object_member = NULL;
-
- object = json_object_new ();
-
- dts_check_eq ("json_object_int_member_get_set", json_object_get_values(object), NULL);
-
- json_object_set_int_member (object, "Int", 42);
- json_object_set_double_member(object, "Double", 25.6);
- json_object_set_boolean_member (object, "Bool1", TRUE);
- json_object_set_string_member (object, "String", "foo");
- json_object_set_null_member (object, "Null");
-
- array = json_array_new();
- json_array_add_int_element(array, 12);
- json_object_set_array_member(object, "Array", array);
-
- object_member = json_object_new();
- json_object_set_int_member(object_member, "foo", 89);
- json_object_set_object_member(object, "Object", object_member);
-
- dts_check_eq ("json_object_int_member_get_set", json_object_get_int_member (object, "Int"), 42);
- dts_check_eq ("json_object_double_member_get_set", json_object_get_double_member (object, "Double"), 25.6);
- dts_check_eq ("json_object_boolean_member_get_set", json_object_get_boolean_member (object, "Bool1"), TRUE);
- dts_check_str_eq ("json_object_string_member_get_set", json_object_get_string_member (object, "String"),"foo");
- dts_check_eq ("json_object_null_member_get_set", json_object_get_null_member (object, "Null"), TRUE);
-
- ret_array = json_object_get_array_member (object, "Array");
- dts_check_eq ("json_object_null_member_get_set", json_array_get_int_element(ret_array, 0), 12);
-
- ret_object_member = json_object_get_object_member (object, "Object");
- dts_check_eq ("json_object_null_member_get_set", json_object_get_int_member (ret_object_member, "foo"), 89);
-
- dts_check_ne ("json_object_int_member_get_set", json_object_get_values(object), NULL);
-
- json_object_unref(object_member);
- json_array_unref(array);
- json_object_unref(object);
-}
-
-
-
+++ /dev/null
-#!/bin/sh
-
-TMPSTR=$0
-SCRIPT=${TMPSTR##*/}
-
-if [ $# -lt 2 ]; then
- echo "Usage) $SCRIPT module_name api_name"
- exit 1
-fi
-
-MODULE=$1
-API=$2
-TEMPLATE=utc_MODULE_API_func.c.in
-TESTCASE=utc_${MODULE}_${API}_func
-
-sed -e '
- s^@API@^'"$API"'^g
- s^@MODULE@^'"$MODULE"'^g
- ' $TEMPLATE > $TESTCASE.c
-
-if [ ! -e "$TESTCASE.c" ]; then
- echo "Failed"
- exit 1
-fi
-echo "Testcase file is $TESTCASE.c"
-echo "Done"
-echo "please put \"$TESTCASE\" as Target in Makefile"
-echo "please put \"/unit/$TESTCASE\" in tslist"
+++ /dev/null
-#include <tet_api.h>
-#include "pkgname.h"
-
-static void startup(void);
-static void cleanup(void);
-
-void (*tet_startup)(void) = startup;
-void (*tet_cleanup)(void) = cleanup;
-
-static void utc_@MODULE@_@API@_func_01(void);
-static void utc_@MODULE@_@API@_func_02(void);
-
-enum {
- POSITIVE_TC_IDX = 0x01,
- NEGATIVE_TC_IDX,
-};
-
-struct tet_testlist tet_testlist[] = {
- { utc_@MODULE@_@API@_func_01, POSITIVE_TC_IDX },
- { utc_@MODULE@_@API@_func_02, NEGATIVE_TC_IDX },
-};
-
-static int pid;
-
-static void startup(void)
-{
-}
-
-static void cleanup(void)
-{
-}
-
-/**
- * @brief Positive test case of @API@()
- */
-static void utc_@MODULE@_@API@_func_01(void)
-{
- int r = 0;
- char buf[MAX_LOCAL_BUFSZ];
-
- r = @API@(...);
-
- if (r<0) {
- tet_infoline("@API@() failed in positive test case");
- tet_result(TET_FAIL);
- return;
- }
- tet_result(TET_PASS);
-}
-
-/**
- * @brief Negative test case of ug_init @API@()
- */
-static void utc_@MODULE@_@API@_func_02(void)
-{
- int r = 0;
- char buf[MAX_LOCAL_BUFSZ];
-
- r = @API@(...);
-
- if (r>=0) {
- tet_infoline("@API@() failed in negative test case");
- tet_result(TET_FAIL);
- return;
- }
- tet_result(TET_PASS);
-}
PKG_NAME="libjson-glib"
(test -f $srcdir/configure.ac \
- && test -d $srcdir/json-glib) || {
- echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
- echo " top-level $PKG_NAME directory"
- exit 1
+ && test -d $srcdir/json-glib) || {
+ echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
+ echo " top-level $PKG_NAME directory"
+ exit 1
}
which gnome-autogen.sh || {
- echo "You need to install gnome-common from the GNOME CVS"
- exit 1
+ echo "You need to install gnome-common from the GNOME CVS"
+ exit 1
}
USE_GNOME2_MACROS=1 . gnome-autogen.sh --prefix=/usr --libdir=/usr/lib --bindir=/usr/bin
+
-SUBDIRS = autotools
-
-test-report:
- @true
-
-test:
- @true
-
-check-local: test
-
-.PHONY: test-report test check-local
+SUBDIRS = autotools win32
EXTRA_DIST = \
- shave-libtool.in \
- shave.in \
- shave.m4 \
as-compiler-flag.m4 \
+ as-linguas.m4 \
+ glib-tap.mk \
+ glibtests.m4 \
introspection.m4 \
- Makefile.am.silent \
+ jh-catalog.m4 \
Makefile.am.enums \
Makefile.am.marshal \
- Makefile.am.gtest
-
-DISTCLEANFILES = shave-libtool shave
-
-# needed to avoid including Makefile.am.gtest
-test-report:
- @true
-
-test:
- @true
-
-check-local: test
-
-.PHONY: test test-report check-local
+ Makefile.am.gitignore \
+ tap-driver.sh \
+ tap-test
EXTRA_DIST += $(srcdir)/$(enum_tmpl_h) $(srcdir)/$(enum_tmpl_c)
stamp-enum-types: $(glib_enum_headers) $(srcdir)/$(enum_tmpl_h)
- $(QUIET_GEN)$(GLIB_MKENUMS) \
+ $(AM_V_GEN)$(GLIB_MKENUMS) \
--template $(srcdir)/$(enum_tmpl_h) \
$(glib_enum_headers) > xgen-eh \
&& (cmp -s xgen-eh $(glib_enum_h) || cp -f xgen-eh $(glib_enum_h)) \
@true
$(glib_enum_c): $(glib_enum_h) $(srcdir)/$(enum_tmpl_c)
- $(QUIET_GEN)$(GLIB_MKENUMS) \
+ $(AM_V_GEN)$(GLIB_MKENUMS) \
--template $(srcdir)/$(enum_tmpl_c) \
$(glib_enum_headers) > xgen-ec \
&& cp -f xgen-ec $(glib_enum_c) \
--- /dev/null
+# this file should only be used in directories that generate test
+# or example binaries through noinst_PROGRAMS; it is *not* a full
+# generator of Git ignore files, and it's not meant to be used as
+# the top-level Git ignore file generator.
+
+$(srcdir)/.gitignore: Makefile.am
+ $(AM_V_GEN)( \
+ echo "*.o" ; \
+ echo ".gitignore" ; \
+ echo "*.trs" ; \
+ echo "*.log" ; \
+ ) > $(srcdir)/.gitignore ; \
+ for p in $(noinst_PROGRAMS); do \
+ echo "/$$p" >> $(srcdir)/.gitignore ; \
+ done ; \
+ for p in $(check_PROGRAMS); do \
+ echo "/$$p" >> $(srcdir)/.gitignore ; \
+ done
+
+
+gitignore: $(srcdir)/.gitignore
+
+gitignore-clean:
+ @rm -f $(srcdir)/.gitignore
+
+.PHONY: gitignore gitignore-clean
+
+all: gitignore
+
+maintainer-clean: gitignore-clean
+++ /dev/null
-# JSON-GLib - JSON reader and writer library
-
-GTESTER = gtester
-GTESTER_REPORT = gtester-report
-
-# initialize variables for unconditional += appending
-EXTRA_DIST =
-TEST_PROGS =
-
-### testing rules
-
-# test: run all tests in cwd and subdirs
-test: ${TEST_PROGS}
- @test -z "${TEST_PROGS}" || ${GTESTER} --verbose ${TEST_PROGS}
- @ for subdir in $(SUBDIRS) . ; do \
- test "$$subdir" = "." -o "$$subdir" = "po" || \
- ( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \
- done
-# test-report: run tests in subdirs and generate report
-# perf-report: run tests in subdirs with -m perf and generate report
-# full-report: like test-report: with -m perf and -m slow
-test-report perf-report full-report: ${TEST_PROGS}
- @test -z "${TEST_PROGS}" || { \
- case $@ in \
- test-report) test_options="-k";; \
- perf-report) test_options="-k -m=perf";; \
- full-report) test_options="-k -m=perf -m=slow";; \
- esac ; \
- if test -z "$$GTESTER_LOGDIR" ; then \
- ${GTESTER} --verbose $$test_options -o test-report.xml ${TEST_PROGS} ; \
- elif test -n "${TEST_PROGS}" ; then \
- ${GTESTER} --verbose $$test_options -o `mktemp "$$GTESTER_LOGDIR/log-XXXXXX"` ${TEST_PROGS} ; \
- fi ; \
- }
- @ ignore_logdir=true ; \
- if test -z "$$GTESTER_LOGDIR" ; then \
- GTESTER_LOGDIR=`mktemp -d "\`pwd\`/.testlogs-XXXXXX"`; export GTESTER_LOGDIR ; \
- ignore_logdir=false ; \
- fi ; \
- for subdir in $(SUBDIRS) . ; do \
- test "$$subdir" = "." -o "$$subdir" = "po" || \
- ( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \
- done ; \
- $$ignore_logdir || { \
- echo '<?xml version="1.0"?>' > $@.xml ; \
- echo '<report-collection>' >> $@.xml ; \
- echo '<info>' >> $@.xml ; \
- echo ' <package>$(PACKAGE)</package>' >> $@.xml ; \
- echo ' <version>$(VERSION)</version>' >> $@.xml ; \
- echo '</info>' >> $@.xml ; \
- for lf in `ls -L "$$GTESTER_LOGDIR"/.` ; do \
- sed '1,1s/^<?xml\b[^>?]*?>//' <"$$GTESTER_LOGDIR"/"$$lf" >> $@.xml ; \
- done ; \
- echo >> $@.xml ; \
- echo '</report-collection>' >> $@.xml ; \
- rm -rf "$$GTESTER_LOGDIR"/ ; \
- ${GTESTER_REPORT} --version 2>/dev/null 1>&2 ; test "$$?" != 0 || ${GTESTER_REPORT} $@.xml >$@.html ; \
- }
-.PHONY: test test-report perf-report full-report
-# run make test as part of make check
-check-local: test
EXTRA_DIST += $(srcdir)/$(glib_marshal_list)
stamp-marshal: $(glib_marshal_list)
- $(QUIET_GEN)$(GLIB_GENMARSHAL) \
+ $(AM_V_GEN)$(GLIB_GENMARSHAL) \
--prefix=$(glib_marshal_prefix) \
--header \
$(srcdir)/$(glib_marshal_list) > xgen-mh \
@true
$(marshal_c): $(marshal_h)
- $(QUIET_GEN)(echo "#include \"$(marshal_h)\"" ; \
+ $(AM_V_GEN)(echo "#include \"$(marshal_h)\"" ; \
$(GLIB_GENMARSHAL) \
--prefix=$(glib_marshal_prefix) \
--body \
+++ /dev/null
-# custom rules for quiet builds
-
-if USE_SHAVE
-QUIET_GEN = $(Q:@=@echo ' GEN '$@;)
-QUIET_LN = $(Q:@=@echo ' LN '$@;)
-QUIET_RM = $(Q:@=@echo ' RM '$@;)
-else
-QUIET_GEN = $(AM_V_GEN)
-
-QUIET_LN = $(QUIET_LN_$(V))
-QUIET_LN_ = $(QUIET_LN_$(AM_DEFAULT_VERBOSITY))
-QUIET_LN_0 = @echo ' LN '$@;
-
-QUIET_RM = $(QUIET_RM_$(V))
-QUIET_RM_ = $(QUIET_RM_$(AM_DEFAULT_VERBOSITY))
-QUIET_RM_0 = @echo ' RM '$@;
-endif # USE_SHAVE
--- /dev/null
+# Set ALL_ALL_LINGUAS based on the .po files present. Optional argument is the
+# name of the po directory. $podir/LINGUAS.ignore can be used to ignore a
+# subset of the po files.
+
+AC_DEFUN([AS_ALL_LINGUAS],
+[
+ AC_MSG_CHECKING([for linguas])
+ podir="m4_default([$1],[$srcdir/po])"
+ linguas=`cd $podir && ls *.po 2>/dev/null | awk 'BEGIN { FS="."; ORS=" " } { print $[]1 }'`
+ if test -f "$podir/LINGUAS.ignore"; then
+ ALL_LINGUAS="";
+ ignore_linguas=`sed -n -e 's/^\s\+\|\s\+$//g' -e '/^#/b' -e '/\S/!b' \
+ -e 's/\s\+/\n/g' -e p "$podir/LINGUAS.ignore"`;
+ for lang in $linguas; do
+ if ! echo "$ignore_linguas" | grep -q "^${lang}$"; then
+ ALL_LINGUAS="$ALL_LINGUAS $lang";
+ fi;
+ done;
+ else
+ ALL_LINGUAS="$linguas";
+ fi;
+ AC_SUBST([ALL_LINGUAS])
+ AC_MSG_RESULT($ALL_LINGUAS)
+])
--- /dev/null
+# GLIB - Library of useful C routines
+
+TESTS_ENVIRONMENT= \
+ G_TEST_SRCDIR="$(abs_srcdir)" \
+ G_TEST_BUILDDIR="$(abs_builddir)" \
+ G_DEBUG=gc-friendly \
+ MALLOC_CHECK_=2 \
+ MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256))
+LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) $(top_srcdir)/build/autotools/tap-driver.sh
+LOG_COMPILER = $(top_srcdir)/build/autotools/tap-test
+
+NULL =
+
+# initialize variables for unconditional += appending
+BUILT_SOURCES =
+BUILT_EXTRA_DIST =
+CLEANFILES = *.log *.trs
+DISTCLEANFILES =
+MAINTAINERCLEANFILES =
+EXTRA_DIST =
+TESTS =
+
+installed_test_LTLIBRARIES =
+installed_test_PROGRAMS =
+installed_test_SCRIPTS =
+nobase_installed_test_DATA =
+
+noinst_LTLIBRARIES =
+noinst_PROGRAMS =
+noinst_SCRIPTS =
+noinst_DATA =
+
+check_LTLIBRARIES =
+check_PROGRAMS =
+check_SCRIPTS =
+check_DATA =
+
+# We support a fairly large range of possible variables. It is expected that all types of files in a test suite
+# will belong in exactly one of the following variables.
+#
+# First, we support the usual automake suffixes, but in lowercase, with the customary meaning:
+#
+# test_programs, test_scripts, test_data, test_ltlibraries
+#
+# The above are used to list files that are involved in both uninstalled and installed testing. The
+# test_programs and test_scripts are taken to be actual testcases and will be run as part of the test suite.
+# Note that _data is always used with the nobase_ automake variable name to ensure that installed test data is
+# installed in the same way as it appears in the package layout.
+#
+# In order to mark a particular file as being only for one type of testing, use 'installed' or 'uninstalled',
+# like so:
+#
+# installed_test_programs, uninstalled_test_programs
+# installed_test_scripts, uninstalled_test_scripts
+# installed_test_data, uninstalled_test_data
+# installed_test_ltlibraries, uninstalled_test_ltlibraries
+#
+# Additionally, we support 'extra' infixes for programs and scripts. This is used for support programs/scripts
+# that should not themselves be run as testcases (but exist to be used from other testcases):
+#
+# test_extra_programs, installed_test_extra_programs, uninstalled_test_extra_programs
+# test_extra_scripts, installed_test_extra_scripts, uninstalled_test_extra_scripts
+#
+# Additionally, for _scripts and _data, we support the customary dist_ prefix so that the named script or data
+# file automatically end up in the tarball.
+#
+# dist_test_scripts, dist_test_data, dist_test_extra_scripts
+# dist_installed_test_scripts, dist_installed_test_data, dist_installed_test_extra_scripts
+# dist_uninstalled_test_scripts, dist_uninstalled_test_data, dist_uninstalled_test_extra_scripts
+#
+# Note that no file is automatically disted unless it appears in one of the dist_ variables. This follows the
+# standard automake convention of not disting programs scripts or data by default.
+#
+# test_programs, test_scripts, uninstalled_test_programs and uninstalled_test_scripts (as well as their disted
+# variants) will be run as part of the in-tree 'make check'. These are all assumed to be runnable under
+# gtester. That's a bit strange for scripts, but it's possible.
+
+TESTS += $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \
+ $(dist_test_scripts) $(dist_uninstalled_test_scripts)
+
+# Note: build even the installed-only targets during 'make check' to ensure that they still work.
+# We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to
+# prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were
+# filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'.
+all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \
+ $(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs)
+all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) $(installed_test_scripts) \
+ $(test_extra_scripts) $(uninstalled_test_extra_scripts) $(installed_test_extra_scripts)
+all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \
+ $(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts)
+all_test_scripts += $(all_dist_test_scripts)
+EXTRA_DIST += $(all_dist_test_scripts)
+all_test_data = $(test_data) $(uninstalled_test_data) $(installed_test_data)
+all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data)
+all_test_data += $(all_dist_test_data)
+EXTRA_DIST += $(all_dist_test_data)
+all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries)
+
+if ENABLE_ALWAYS_BUILD_TESTS
+noinst_LTLIBRARIES += $(all_test_ltlibs)
+noinst_PROGRAMS += $(all_test_programs)
+noinst_SCRIPTS += $(all_test_scripts)
+noinst_DATA += $(all_test_data)
+else
+check_LTLIBRARIES += $(all_test_ltlibs)
+check_PROGRAMS += $(all_test_programs)
+check_SCRIPTS += $(all_test_scripts)
+check_DATA += $(all_test_data)
+endif
+
+if ENABLE_INSTALLED_TESTS
+installed_test_PROGRAMS += $(test_programs) $(installed_test_programs) \
+ $(test_extra_programs) $(installed_test_extra_programs)
+installed_test_SCRIPTS += $(test_scripts) $(installed_test_scripts) \
+ $(test_extra_scripts) $(test_installed_extra_scripts)
+installed_test_SCRIPTS += $(dist_test_scripts) $(dist_test_extra_scripts) \
+ $(dist_installed_test_scripts) $(dist_installed_test_extra_scripts)
+nobase_installed_test_DATA += $(test_data) $(installed_test_data)
+nobase_installed_test_DATA += $(dist_test_data) $(dist_installed_test_data)
+installed_test_LTLIBRARIES += $(test_ltlibraries) $(installed_test_ltlibraries)
+installed_testcases = $(test_programs) $(installed_test_programs) \
+ $(test_scripts) $(installed_test_scripts) \
+ $(dist_test_scripts) $(dist_installed_test_scripts)
+
+installed_test_meta_DATA = $(installed_testcases:=.test)
+
+%.test: %$(EXEEXT) Makefile
+ $(AM_V_GEN) (echo '[Test]' > $@.tmp; \
+ echo 'Type=session' >> $@.tmp; \
+ echo 'Exec=$(installed_testdir)/$<' >> $@.tmp; \
+ mv $@.tmp $@)
+
+CLEANFILES += $(installed_test_meta_DATA)
+endif
--- /dev/null
+dnl GLIB_TESTS
+dnl
+
+AC_DEFUN([GLIB_TESTS],
+[
+ AC_ARG_ENABLE(installed-tests,
+ AS_HELP_STRING([--enable-installed-tests],
+ [Enable installation of some test cases]),
+ [case ${enableval} in
+ yes) ENABLE_INSTALLED_TESTS="1" ;;
+ no) ENABLE_INSTALLED_TESTS="" ;;
+ *) AC_MSG_ERROR([bad value ${enableval} for --enable-installed-tests]) ;;
+ esac])
+ AM_CONDITIONAL([ENABLE_INSTALLED_TESTS], test "$ENABLE_INSTALLED_TESTS" = "1")
+ AC_ARG_ENABLE(always-build-tests,
+ AS_HELP_STRING([--enable-always-build-tests],
+ [Enable always building tests during 'make all']),
+ [case ${enableval} in
+ yes) ENABLE_ALWAYS_BUILD_TESTS="1" ;;
+ no) ENABLE_ALWAYS_BUILD_TESTS="" ;;
+ *) AC_MSG_ERROR([bad value ${enableval} for --enable-always-build-tests]) ;;
+ esac])
+ AM_CONDITIONAL([ENABLE_ALWAYS_BUILD_TESTS], test "$ENABLE_ALWAYS_BUILD_TESTS" = "1")
+ if test "$ENABLE_INSTALLED_TESTS" == "1"; then
+ AC_SUBST(installed_test_metadir, [${datadir}/installed-tests/]AC_PACKAGE_NAME)
+ AC_SUBST(installed_testdir, [${libexecdir}/installed-tests/]AC_PACKAGE_NAME)
+ fi
+])
+++ /dev/null
-dnl -*- mode: autoconf -*-
-
-# serial 1
-
-dnl Usage:
-dnl GTK_DOC_CHECK([minimum-gtk-doc-version])
-AC_DEFUN([GTK_DOC_CHECK],
-[
- AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
- AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
-
- dnl check for tools we added during development
- AC_PATH_PROG([GTKDOC_CHECK],[gtkdoc-check])
- AC_PATH_PROGS([GTKDOC_REBASE],[gtkdoc-rebase],[true])
- AC_PATH_PROG([GTKDOC_MKPDF],[gtkdoc-mkpdf])
-
- dnl for overriding the documentation installation directory
- AC_ARG_WITH([html-dir],
- AS_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),,
- [with_html_dir='${datadir}/gtk-doc/html'])
- HTML_DIR="$with_html_dir"
- AC_SUBST([HTML_DIR])
-
- dnl enable/disable documentation building
- AC_ARG_ENABLE([gtk-doc],
- AS_HELP_STRING([--enable-gtk-doc],
- [use gtk-doc to build documentation [[default=no]]]),,
- [enable_gtk_doc=no])
-
- if test x$enable_gtk_doc = xyes; then
- ifelse([$1],[],
- [PKG_CHECK_EXISTS([gtk-doc],,
- AC_MSG_ERROR([gtk-doc not installed and --enable-gtk-doc requested]))],
- [PKG_CHECK_EXISTS([gtk-doc >= $1],,
- AC_MSG_ERROR([You need to have gtk-doc >= $1 installed to build $PACKAGE_NAME]))])
- fi
-
- AC_MSG_CHECKING([whether to build gtk-doc documentation])
- AC_MSG_RESULT($enable_gtk_doc)
-
- dnl enable/disable output formats
- AC_ARG_ENABLE([gtk-doc-html],
- AS_HELP_STRING([--enable-gtk-doc-html],
- [build documentation in html format [[default=yes]]]),,
- [enable_gtk_doc_html=yes])
- AC_ARG_ENABLE([gtk-doc-pdf],
- AS_HELP_STRING([--enable-gtk-doc-pdf],
- [build documentation in pdf format [[default=no]]]),,
- [enable_gtk_doc_pdf=no])
-
- if test -z "$GTKDOC_MKPDF"; then
- enable_gtk_doc_pdf=no
- fi
-
-
- AM_CONDITIONAL([ENABLE_GTK_DOC], [test x$enable_gtk_doc = xyes])
- AM_CONDITIONAL([GTK_DOC_BUILD_HTML], [test x$enable_gtk_doc_html = xyes])
- AM_CONDITIONAL([GTK_DOC_BUILD_PDF], [test x$enable_gtk_doc_pdf = xyes])
- AM_CONDITIONAL([GTK_DOC_USE_LIBTOOL], [test -n "$LIBTOOL"])
- AM_CONDITIONAL([GTK_DOC_USE_REBASE], [test -n "$GTKDOC_REBASE"])
-])
],dnl
[auto],[dnl
PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1], found_introspection=yes, found_introspection=no)
+ dnl Canonicalize enable_introspection
+ enable_introspection=$found_introspection
],dnl
[dnl
AC_MSG_ERROR([invalid argument passed to --enable-introspection, should be one of @<:@no/auto/yes@:>@])
INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0`
INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)"
+ INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0`
+ INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0`
+ INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
fi
AC_SUBST(INTROSPECTION_SCANNER)
AC_SUBST(INTROSPECTION_COMPILER)
AC_SUBST(INTROSPECTION_GENERATE)
AC_SUBST(INTROSPECTION_GIRDIR)
AC_SUBST(INTROSPECTION_TYPELIBDIR)
+ AC_SUBST(INTROSPECTION_CFLAGS)
+ AC_SUBST(INTROSPECTION_LIBS)
+ AC_SUBST(INTROSPECTION_MAKEFILE)
AM_CONDITIONAL(HAVE_INTROSPECTION, test "x$found_introspection" = "xyes")
])
--- /dev/null
+# Checks the location of the XML Catalog
+# Usage:
+# JH_PATH_XML_CATALOG([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+# Defines XMLCATALOG and XML_CATALOG_FILE substitutions
+AC_DEFUN([JH_PATH_XML_CATALOG],
+[
+ # check for the presence of the XML catalog
+ AC_ARG_WITH([xml-catalog],
+ AC_HELP_STRING([--with-xml-catalog=CATALOG],
+ [path to xml catalog to use]),,
+ [with_xml_catalog=/etc/xml/catalog])
+ jh_found_xmlcatalog=true
+ XML_CATALOG_FILE="$with_xml_catalog"
+ AC_SUBST([XML_CATALOG_FILE])
+ AC_MSG_CHECKING([for XML catalog ($XML_CATALOG_FILE)])
+ if test -f "$XML_CATALOG_FILE"; then
+ AC_MSG_RESULT([found])
+ else
+ jh_found_xmlcatalog=false
+ AC_MSG_RESULT([not found])
+ fi
+
+ # check for the xmlcatalog program
+ AC_PATH_PROG(XMLCATALOG, xmlcatalog, no)
+ if test "x$XMLCATALOG" = xno; then
+ jh_found_xmlcatalog=false
+ fi
+
+ if $jh_found_xmlcatalog; then
+ ifelse([$1],,[:],[$1])
+ else
+ ifelse([$2],,[AC_MSG_ERROR([could not find XML catalog])],[$2])
+ fi
+])
+
+# Checks if a particular URI appears in the XML catalog
+# Usage:
+# JH_CHECK_XML_CATALOG(URI, [FRIENDLY-NAME], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+AC_DEFUN([JH_CHECK_XML_CATALOG],
+[
+ AC_REQUIRE([JH_PATH_XML_CATALOG],[JH_PATH_XML_CATALOG(,[:])])dnl
+ AC_MSG_CHECKING([for ifelse([$2],,[$1],[$2]) in XML catalog])
+ if $jh_found_xmlcatalog && \
+ AC_RUN_LOG([$XMLCATALOG --noout "$XML_CATALOG_FILE" "$1" >&2]); then
+ AC_MSG_RESULT([found])
+ ifelse([$3],,,[$3
+])dnl
+ else
+ AC_MSG_RESULT([not found])
+ ifelse([$4],,
+ [AC_MSG_ERROR([could not find ifelse([$2],,[$1],[$2]) in XML catalog])],
+ [$4])
+ fi
+])
+++ /dev/null
-# Helper functions for option handling. -*- Autoconf -*-
-#
-# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
-# Written by Gary V. Vaughan, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 6 ltoptions.m4
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
-
-
-# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
-# ------------------------------------------
-m4_define([_LT_MANGLE_OPTION],
-[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
-
-
-# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
-# ---------------------------------------
-# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
-# matching handler defined, dispatch to it. Other OPTION-NAMEs are
-# saved as a flag.
-m4_define([_LT_SET_OPTION],
-[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
-m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
- _LT_MANGLE_DEFUN([$1], [$2]),
- [m4_warning([Unknown $1 option `$2'])])[]dnl
-])
-
-
-# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
-# ------------------------------------------------------------
-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-m4_define([_LT_IF_OPTION],
-[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
-
-
-# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
-# -------------------------------------------------------
-# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
-# are set.
-m4_define([_LT_UNLESS_OPTIONS],
-[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
- [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
- [m4_define([$0_found])])])[]dnl
-m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
-])[]dnl
-])
-
-
-# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
-# ----------------------------------------
-# OPTION-LIST is a space-separated list of Libtool options associated
-# with MACRO-NAME. If any OPTION has a matching handler declared with
-# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
-# the unknown option and exit.
-m4_defun([_LT_SET_OPTIONS],
-[# Set options
-m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
- [_LT_SET_OPTION([$1], _LT_Option)])
-
-m4_if([$1],[LT_INIT],[
- dnl
- dnl Simply set some default values (i.e off) if boolean options were not
- dnl specified:
- _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
- ])
- _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
- ])
- dnl
- dnl If no reference was made to various pairs of opposing options, then
- dnl we run the default mode handler for the pair. For example, if neither
- dnl `shared' nor `disable-shared' was passed, we enable building of shared
- dnl archives by default:
- _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
- _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
- _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
- _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
- [_LT_ENABLE_FAST_INSTALL])
- ])
-])# _LT_SET_OPTIONS
-
-
-## --------------------------------- ##
-## Macros to handle LT_INIT options. ##
-## --------------------------------- ##
-
-# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
-# -----------------------------------------
-m4_define([_LT_MANGLE_DEFUN],
-[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
-
-
-# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
-# -----------------------------------------------
-m4_define([LT_OPTION_DEFINE],
-[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
-])# LT_OPTION_DEFINE
-
-
-# dlopen
-# ------
-LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
-])
-
-AU_DEFUN([AC_LIBTOOL_DLOPEN],
-[_LT_SET_OPTION([LT_INIT], [dlopen])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `dlopen' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
-
-
-# win32-dll
-# ---------
-# Declare package support for building win32 dll's.
-LT_OPTION_DEFINE([LT_INIT], [win32-dll],
-[enable_win32_dll=yes
-
-case $host in
-*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*)
- AC_CHECK_TOOL(AS, as, false)
- AC_CHECK_TOOL(DLLTOOL, dlltool, false)
- AC_CHECK_TOOL(OBJDUMP, objdump, false)
- ;;
-esac
-
-test -z "$AS" && AS=as
-_LT_DECL([], [AS], [0], [Assembler program])dnl
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl
-])# win32-dll
-
-AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-_LT_SET_OPTION([LT_INIT], [win32-dll])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `win32-dll' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
-
-
-# _LT_ENABLE_SHARED([DEFAULT])
-# ----------------------------
-# implement the --enable-shared flag, and supports the `shared' and
-# `disable-shared' LT_INIT options.
-# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_SHARED],
-[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([shared],
- [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
- [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
- [p=${PACKAGE-default}
- case $enableval in
- yes) enable_shared=yes ;;
- no) enable_shared=no ;;
- *)
- enable_shared=no
- # Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
- for pkg in $enableval; do
- IFS="$lt_save_ifs"
- if test "X$pkg" = "X$p"; then
- enable_shared=yes
- fi
- done
- IFS="$lt_save_ifs"
- ;;
- esac],
- [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
-
- _LT_DECL([build_libtool_libs], [enable_shared], [0],
- [Whether or not to build shared libraries])
-])# _LT_ENABLE_SHARED
-
-LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
-
-# Old names:
-AC_DEFUN([AC_ENABLE_SHARED],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
-])
-
-AC_DEFUN([AC_DISABLE_SHARED],
-[_LT_SET_OPTION([LT_INIT], [disable-shared])
-])
-
-AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
-AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_ENABLE_SHARED], [])
-dnl AC_DEFUN([AM_DISABLE_SHARED], [])
-
-
-
-# _LT_ENABLE_STATIC([DEFAULT])
-# ----------------------------
-# implement the --enable-static flag, and support the `static' and
-# `disable-static' LT_INIT options.
-# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_STATIC],
-[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([static],
- [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
- [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
- [p=${PACKAGE-default}
- case $enableval in
- yes) enable_static=yes ;;
- no) enable_static=no ;;
- *)
- enable_static=no
- # Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
- for pkg in $enableval; do
- IFS="$lt_save_ifs"
- if test "X$pkg" = "X$p"; then
- enable_static=yes
- fi
- done
- IFS="$lt_save_ifs"
- ;;
- esac],
- [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
-
- _LT_DECL([build_old_libs], [enable_static], [0],
- [Whether or not to build static libraries])
-])# _LT_ENABLE_STATIC
-
-LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
-
-# Old names:
-AC_DEFUN([AC_ENABLE_STATIC],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
-])
-
-AC_DEFUN([AC_DISABLE_STATIC],
-[_LT_SET_OPTION([LT_INIT], [disable-static])
-])
-
-AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
-AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_ENABLE_STATIC], [])
-dnl AC_DEFUN([AM_DISABLE_STATIC], [])
-
-
-
-# _LT_ENABLE_FAST_INSTALL([DEFAULT])
-# ----------------------------------
-# implement the --enable-fast-install flag, and support the `fast-install'
-# and `disable-fast-install' LT_INIT options.
-# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_FAST_INSTALL],
-[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([fast-install],
- [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
- [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
- [p=${PACKAGE-default}
- case $enableval in
- yes) enable_fast_install=yes ;;
- no) enable_fast_install=no ;;
- *)
- enable_fast_install=no
- # Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
- for pkg in $enableval; do
- IFS="$lt_save_ifs"
- if test "X$pkg" = "X$p"; then
- enable_fast_install=yes
- fi
- done
- IFS="$lt_save_ifs"
- ;;
- esac],
- [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
-
-_LT_DECL([fast_install], [enable_fast_install], [0],
- [Whether or not to optimize for fast installation])dnl
-])# _LT_ENABLE_FAST_INSTALL
-
-LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
-
-# Old names:
-AU_DEFUN([AC_ENABLE_FAST_INSTALL],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `fast-install' option into LT_INIT's first parameter.])
-])
-
-AU_DEFUN([AC_DISABLE_FAST_INSTALL],
-[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `disable-fast-install' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
-dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
-
-
-# _LT_WITH_PIC([MODE])
-# --------------------
-# implement the --with-pic flag, and support the `pic-only' and `no-pic'
-# LT_INIT options.
-# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
-m4_define([_LT_WITH_PIC],
-[AC_ARG_WITH([pic],
- [AS_HELP_STRING([--with-pic],
- [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
- [pic_mode="$withval"],
- [pic_mode=default])
-
-test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
-
-_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
-])# _LT_WITH_PIC
-
-LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
-LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
-
-# Old name:
-AU_DEFUN([AC_LIBTOOL_PICMODE],
-[_LT_SET_OPTION([LT_INIT], [pic-only])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `pic-only' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
-
-## ----------------- ##
-## LTDL_INIT Options ##
-## ----------------- ##
-
-m4_define([_LTDL_MODE], [])
-LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
- [m4_define([_LTDL_MODE], [nonrecursive])])
-LT_OPTION_DEFINE([LTDL_INIT], [recursive],
- [m4_define([_LTDL_MODE], [recursive])])
-LT_OPTION_DEFINE([LTDL_INIT], [subproject],
- [m4_define([_LTDL_MODE], [subproject])])
-
-m4_define([_LTDL_TYPE], [])
-LT_OPTION_DEFINE([LTDL_INIT], [installable],
- [m4_define([_LTDL_TYPE], [installable])])
-LT_OPTION_DEFINE([LTDL_INIT], [convenience],
- [m4_define([_LTDL_TYPE], [convenience])])
+++ /dev/null
-# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*-
-#
-# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
-# Written by Gary V. Vaughan, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 6 ltsugar.m4
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
-
-
-# lt_join(SEP, ARG1, [ARG2...])
-# -----------------------------
-# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
-# associated separator.
-# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
-# versions in m4sugar had bugs.
-m4_define([lt_join],
-[m4_if([$#], [1], [],
- [$#], [2], [[$2]],
- [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
-m4_define([_lt_join],
-[m4_if([$#$2], [2], [],
- [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
-
-
-# lt_car(LIST)
-# lt_cdr(LIST)
-# ------------
-# Manipulate m4 lists.
-# These macros are necessary as long as will still need to support
-# Autoconf-2.59 which quotes differently.
-m4_define([lt_car], [[$1]])
-m4_define([lt_cdr],
-[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
- [$#], 1, [],
- [m4_dquote(m4_shift($@))])])
-m4_define([lt_unquote], $1)
-
-
-# lt_append(MACRO-NAME, STRING, [SEPARATOR])
-# ------------------------------------------
-# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
-# Note that neither SEPARATOR nor STRING are expanded; they are appended
-# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
-# No SEPARATOR is output if MACRO-NAME was previously undefined (different
-# than defined and empty).
-#
-# This macro is needed until we can rely on Autoconf 2.62, since earlier
-# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
-m4_define([lt_append],
-[m4_define([$1],
- m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
-
-
-
-# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
-# ----------------------------------------------------------
-# Produce a SEP delimited list of all paired combinations of elements of
-# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list
-# has the form PREFIXmINFIXSUFFIXn.
-# Needed until we can rely on m4_combine added in Autoconf 2.62.
-m4_define([lt_combine],
-[m4_if(m4_eval([$# > 3]), [1],
- [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
-[[m4_foreach([_Lt_prefix], [$2],
- [m4_foreach([_Lt_suffix],
- ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
- [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
-
-
-# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
-# -----------------------------------------------------------------------
-# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
-# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
-m4_define([lt_if_append_uniq],
-[m4_ifdef([$1],
- [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
- [lt_append([$1], [$2], [$3])$4],
- [$5])],
- [lt_append([$1], [$2], [$3])$4])])
-
-
-# lt_dict_add(DICT, KEY, VALUE)
-# -----------------------------
-m4_define([lt_dict_add],
-[m4_define([$1($2)], [$3])])
-
-
-# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
-# --------------------------------------------
-m4_define([lt_dict_add_subkey],
-[m4_define([$1($2:$3)], [$4])])
-
-
-# lt_dict_fetch(DICT, KEY, [SUBKEY])
-# ----------------------------------
-m4_define([lt_dict_fetch],
-[m4_ifval([$3],
- m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
- m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
-
-
-# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
-# -----------------------------------------------------------------
-m4_define([lt_if_dict_fetch],
-[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
- [$5],
- [$6])])
-
-
-# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
-# --------------------------------------------------------------
-m4_define([lt_dict_filter],
-[m4_if([$5], [], [],
- [lt_join(m4_quote(m4_default([$4], [[, ]])),
- lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
- [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
-])
+++ /dev/null
-# ltversion.m4 -- version numbers -*- Autoconf -*-
-#
-# Copyright (C) 2004 Free Software Foundation, Inc.
-# Written by Scott James Remnant, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# Generated from ltversion.in.
-
-# serial 3017 ltversion.m4
-# This file is part of GNU Libtool
-
-m4_define([LT_PACKAGE_VERSION], [2.2.6b])
-m4_define([LT_PACKAGE_REVISION], [1.3017])
-
-AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.2.6b'
-macro_revision='1.3017'
-_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
-_LT_DECL(, macro_revision, 0)
-])
+++ /dev/null
-# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*-
-#
-# Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
-# Written by Scott James Remnant, 2004.
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 4 lt~obsolete.m4
-
-# These exist entirely to fool aclocal when bootstrapping libtool.
-#
-# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
-# which have later been changed to m4_define as they aren't part of the
-# exported API, or moved to Autoconf or Automake where they belong.
-#
-# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN
-# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
-# using a macro with the same name in our local m4/libtool.m4 it'll
-# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
-# and doesn't know about Autoconf macros at all.)
-#
-# So we provide this file, which has a silly filename so it's always
-# included after everything else. This provides aclocal with the
-# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
-# because those macros already exist, or will be overwritten later.
-# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
-#
-# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
-# Yes, that means every name once taken will need to remain here until
-# we give up compatibility with versions before 1.7, at which point
-# we need to keep only those names which we still refer to.
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
-
-m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
-m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])])
-m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
-m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])])
-m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
-m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])])
-m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])])
-m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
-m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])])
-m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])])
-m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])])
-m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
-m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
-m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
-m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
-m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])])
-m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])])
-m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
-m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
-m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])])
-m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])])
-m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
-m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
-m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
-m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
-m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
-m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
-m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
-m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])])
-m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])])
-m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])])
-m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
-m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])])
-m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])])
-m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])])
-m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])])
-m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
-m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])])
-m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
-m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])])
-m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])])
-m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])])
-m4_ifndef([AC_LIBTOOL_RC], [AC_DEFUN([AC_LIBTOOL_RC])])
-m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
-m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
-m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
-m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
-m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
-m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
-m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])])
-m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
+++ /dev/null
-#!/bin/sh
-
-# we need sed
-SED=@SED@
-if test -z "$SED" ; then
-SED=sed
-fi
-
-lt_unmangle ()
-{
- last_result=`echo $1 | $SED -e 's#.libs/##' -e 's#[0-9a-zA-Z_\-\.]*_la-##'`
-}
-
-# the real libtool to use
-LIBTOOL="$1"
-shift
-
-# if 1, don't print anything, the underlaying wrapper will do it
-pass_though=0
-
-# scan the arguments, keep the right ones for libtool, and discover the mode
-preserved_args=
-while test "$#" -gt 0; do
- opt="$1"
- shift
-
- case $opt in
- --mode=*)
- mode=`echo $opt | $SED -e 's/[-_a-zA-Z0-9]*=//'`
- preserved_args="$preserved_args $opt"
- ;;
- -o)
- lt_output="$1"
- preserved_args="$preserved_args $opt"
- ;;
- *)
- preserved_args="$preserved_args $opt"
- ;;
- esac
-done
-
-case "$mode" in
-compile)
- # shave will be called and print the actual CC/CXX/LINK line
- preserved_args="$preserved_args --shave-mode=$mode"
- pass_though=1
- ;;
-link)
- preserved_args="$preserved_args --shave-mode=$mode"
- Q=" LINK "
- ;;
-*)
- # let's u
- # echo "*** libtool: Unimplemented mode: $mode, fill a bug report"
- ;;
-esac
-
-lt_unmangle "$lt_output"
-output=$last_result
-
-if test -z $V; then
- if test $pass_though -eq 0; then
- echo "$Q$output"
- fi
- $LIBTOOL --silent $preserved_args
-else
- echo $LIBTOOL $preserved_args
- $LIBTOOL $preserved_args
-fi
+++ /dev/null
-#!/bin/sh
-
-# we need sed
-SED=@SED@
-if test -z "$SED" ; then
-SED=sed
-fi
-
-lt_unmangle ()
-{
- last_result=`echo $1 | $SED -e 's#.libs/##' -e 's#[0-9a-zA-Z_\-\.]*_la-##'`
-}
-
-# the tool to wrap (cc, cxx, ar, ranlib, ..)
-tool="$1"
-shift
-
-# the reel tool (to call)
-REEL_TOOL="$1"
-shift
-
-pass_through=0
-preserved_args=
-while test "$#" -gt 0; do
- opt="$1"
- shift
-
- case $opt in
- --shave-mode=*)
- mode=`echo $opt | $SED -e 's/[-_a-zA-Z0-9]*=//'`
- ;;
- -o)
- lt_output="$1"
- preserved_args="$preserved_args $opt"
- ;;
- *)
- preserved_args="$preserved_args $opt"
- ;;
- esac
-done
-
-# mode=link is handled in the libtool wrapper
-case "$mode,$tool" in
-link,*)
- pass_through=1
- ;;
-*,cxx)
- Q=" CXX "
- ;;
-*,cc)
- Q=" CC "
- ;;
-*,fc)
- Q=" FC "
- ;;
-*,f77)
- Q=" F77 "
- ;;
-*,objc)
- Q=" OBJC "
- ;;
-*,*)
- # should not happen
- Q=" CC "
- ;;
-esac
-
-lt_unmangle "$lt_output"
-output=$last_result
-
-if test -z $V; then
- if test $pass_through -eq 0; then
- echo "$Q$output"
- fi
- $REEL_TOOL $preserved_args
-else
- echo $REEL_TOOL $preserved_args
- $REEL_TOOL $preserved_args
-fi
+++ /dev/null
-dnl Make automake/libtool output more friendly to humans
-dnl Damien Lespiau <damien.lespiau@gmail.com>
-dnl
-dnl SHAVE_INIT([shavedir],[default_mode])
-dnl
-dnl shavedir: the directory where the shave scripts are, it defaults to
-dnl $(top_builddir)
-dnl default_mode: (enable|disable) default shave mode. This parameter
-dnl controls shave's behaviour when no option has been
-dnl given to configure. It defaults to disable.
-dnl
-dnl * SHAVE_INIT should be called late in your configure.(ac|in) file (just
-dnl before AC_CONFIG_FILE/AC_OUTPUT is perfect. This macro rewrites CC and
-dnl LIBTOOL, you don't want the configure tests to have these variables
-dnl re-defined.
-dnl * This macro requires GNU make's -s option.
-
-AC_DEFUN([_SHAVE_ARG_ENABLE],
-[
- AC_ARG_ENABLE([shave],
- AS_HELP_STRING(
- [--enable-shave],
- [use shave to make the build pretty [[default=$1]]]),,
- [enable_shave=$1]
- )
-])
-
-AC_DEFUN([SHAVE_INIT],
-[
- dnl you can tweak the default value of enable_shave
- m4_if([$2], [enable], [_SHAVE_ARG_ENABLE(yes)], [_SHAVE_ARG_ENABLE(no)])
-
- if test x"$enable_shave" = xyes; then
- dnl where can we find the shave scripts?
- m4_if([$1],,
- [shavedir="$ac_pwd"],
- [shavedir="$ac_pwd/$1"])
- AC_SUBST(shavedir)
-
- dnl make is now quiet
- AC_SUBST([MAKEFLAGS], [-s])
- AC_SUBST([AM_MAKEFLAGS], ['`test -z $V && echo -s`'])
-
- dnl we need sed
- AC_CHECK_PROG(SED,sed,sed,false)
-
- dnl substitute libtool
- SHAVE_SAVED_LIBTOOL=$LIBTOOL
- LIBTOOL="${SHELL} ${shavedir}/shave-libtool '${SHAVE_SAVED_LIBTOOL}'"
- AC_SUBST(LIBTOOL)
-
- dnl substitute cc/cxx
- SHAVE_SAVED_CC=$CC
- SHAVE_SAVED_CXX=$CXX
- SHAVE_SAVED_FC=$FC
- SHAVE_SAVED_F77=$F77
- SHAVE_SAVED_OBJC=$OBJC
- CC="${SHELL} ${shavedir}/shave cc ${SHAVE_SAVED_CC}"
- CXX="${SHELL} ${shavedir}/shave cxx ${SHAVE_SAVED_CXX}"
- FC="${SHELL} ${shavedir}/shave fc ${SHAVE_SAVED_FC}"
- F77="${SHELL} ${shavedir}/shave f77 ${SHAVE_SAVED_F77}"
- OBJC="${SHELL} ${shavedir}/shave objc ${SHAVE_SAVED_OBJC}"
- AC_SUBST(CC)
- AC_SUBST(CXX)
- AC_SUBST(FC)
- AC_SUBST(F77)
- AC_SUBST(OBJC)
-
- V=@
- else
- V=1
- fi
- Q='$(V:1=)'
- AC_SUBST(V)
- AC_SUBST(Q)
-])
-
--- /dev/null
+#! /bin/sh
+# Copyright (C) 2011-2013 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+scriptversion=2011-12-27.17; # UTC
+
+# Make unconditional expansion of undefined variables an error. This
+# helps a lot in preventing typo-related bugs.
+set -u
+
+me=tap-driver.sh
+
+fatal ()
+{
+ echo "$me: fatal: $*" >&2
+ exit 1
+}
+
+usage_error ()
+{
+ echo "$me: $*" >&2
+ print_usage >&2
+ exit 2
+}
+
+print_usage ()
+{
+ cat <<END
+Usage:
+ tap-driver.sh --test-name=NAME --log-file=PATH --trs-file=PATH
+ [--expect-failure={yes|no}] [--color-tests={yes|no}]
+ [--enable-hard-errors={yes|no}] [--ignore-exit]
+ [--diagnostic-string=STRING] [--merge|--no-merge]
+ [--comments|--no-comments] [--] TEST-COMMAND
+The \`--test-name', \`--log-file' and \`--trs-file' options are mandatory.
+END
+}
+
+# TODO: better error handling in option parsing (in particular, ensure
+# TODO: $log_file, $trs_file and $test_name are defined).
+test_name= # Used for reporting.
+log_file= # Where to save the result and output of the test script.
+trs_file= # Where to save the metadata of the test run.
+expect_failure=0
+color_tests=0
+merge=0
+ignore_exit=0
+comments=0
+diag_string='#'
+while test $# -gt 0; do
+ case $1 in
+ --help) print_usage; exit $?;;
+ --version) echo "$me $scriptversion"; exit $?;;
+ --test-name) test_name=$2; shift;;
+ --log-file) log_file=$2; shift;;
+ --trs-file) trs_file=$2; shift;;
+ --color-tests) color_tests=$2; shift;;
+ --expect-failure) expect_failure=$2; shift;;
+ --enable-hard-errors) shift;; # No-op.
+ --merge) merge=1;;
+ --no-merge) merge=0;;
+ --ignore-exit) ignore_exit=1;;
+ --comments) comments=1;;
+ --no-comments) comments=0;;
+ --diagnostic-string) diag_string=$2; shift;;
+ --) shift; break;;
+ -*) usage_error "invalid option: '$1'";;
+ esac
+ shift
+done
+
+test $# -gt 0 || usage_error "missing test command"
+
+case $expect_failure in
+ yes) expect_failure=1;;
+ *) expect_failure=0;;
+esac
+
+if test $color_tests = yes; then
+ init_colors='
+ color_map["red"]="\e[0;31m" # Red.
+ color_map["grn"]="\e[0;32m" # Green.
+ color_map["lgn"]="\e[1;32m" # Light green.
+ color_map["blu"]="\e[1;34m" # Blue.
+ color_map["mgn"]="\e[0;35m" # Magenta.
+ color_map["std"]="\e[m" # No color.
+ color_for_result["ERROR"] = "mgn"
+ color_for_result["PASS"] = "grn"
+ color_for_result["XPASS"] = "red"
+ color_for_result["FAIL"] = "red"
+ color_for_result["XFAIL"] = "lgn"
+ color_for_result["SKIP"] = "blu"'
+else
+ init_colors=''
+fi
+
+# :; is there to work around a bug in bash 3.2 (and earlier) which
+# does not always set '$?' properly on redirection failure.
+# See the Autoconf manual for more details.
+:;{
+ (
+ # Ignore common signals (in this subshell only!), to avoid potential
+ # problems with Korn shells. Some Korn shells are known to propagate
+ # to themselves signals that have killed a child process they were
+ # waiting for; this is done at least for SIGINT (and usually only for
+ # it, in truth). Without the `trap' below, such a behaviour could
+ # cause a premature exit in the current subshell, e.g., in case the
+ # test command it runs gets terminated by a SIGINT. Thus, the awk
+ # script we are piping into would never seen the exit status it
+ # expects on its last input line (which is displayed below by the
+ # last `echo $?' statement), and would thus die reporting an internal
+ # error.
+ # For more information, see the Autoconf manual and the threads:
+ # <http://lists.gnu.org/archive/html/bug-autoconf/2011-09/msg00004.html>
+ # <http://mail.opensolaris.org/pipermail/ksh93-integration-discuss/2009-February/004121.html>
+ trap : 1 3 2 13 15
+ if test $merge -gt 0; then
+ exec 2>&1
+ else
+ exec 2>&3
+ fi
+ "$@"
+ echo $?
+ ) | LC_ALL=C ${AM_TAP_AWK-awk} \
+ -v me="$me" \
+ -v test_script_name="$test_name" \
+ -v log_file="$log_file" \
+ -v trs_file="$trs_file" \
+ -v expect_failure="$expect_failure" \
+ -v merge="$merge" \
+ -v ignore_exit="$ignore_exit" \
+ -v comments="$comments" \
+ -v diag_string="$diag_string" \
+'
+# FIXME: the usages of "cat >&3" below could be optimized when using
+# FIXME: GNU awk, and/on on systems that supports /dev/fd/.
+
+# Implementation note: in what follows, `result_obj` will be an
+# associative array that (partly) simulates a TAP result object
+# from the `TAP::Parser` perl module.
+
+## ----------- ##
+## FUNCTIONS ##
+## ----------- ##
+
+function fatal(msg)
+{
+ print me ": " msg | "cat >&2"
+ exit 1
+}
+
+function abort(where)
+{
+ fatal("internal error " where)
+}
+
+# Convert a boolean to a "yes"/"no" string.
+function yn(bool)
+{
+ return bool ? "yes" : "no";
+}
+
+function add_test_result(result)
+{
+ if (!test_results_index)
+ test_results_index = 0
+ test_results_list[test_results_index] = result
+ test_results_index += 1
+ test_results_seen[result] = 1;
+}
+
+# Whether the test script should be re-run by "make recheck".
+function must_recheck()
+{
+ for (k in test_results_seen)
+ if (k != "XFAIL" && k != "PASS" && k != "SKIP")
+ return 1
+ return 0
+}
+
+# Whether the content of the log file associated to this test should
+# be copied into the "global" test-suite.log.
+function copy_in_global_log()
+{
+ for (k in test_results_seen)
+ if (k != "PASS")
+ return 1
+ return 0
+}
+
+# FIXME: this can certainly be improved ...
+function get_global_test_result()
+{
+ if ("ERROR" in test_results_seen)
+ return "ERROR"
+ if ("FAIL" in test_results_seen || "XPASS" in test_results_seen)
+ return "FAIL"
+ all_skipped = 1
+ for (k in test_results_seen)
+ if (k != "SKIP")
+ all_skipped = 0
+ if (all_skipped)
+ return "SKIP"
+ return "PASS";
+}
+
+function stringify_result_obj(result_obj)
+{
+ if (result_obj["is_unplanned"] || result_obj["number"] != testno)
+ return "ERROR"
+
+ if (plan_seen == LATE_PLAN)
+ return "ERROR"
+
+ if (result_obj["directive"] == "TODO")
+ return result_obj["is_ok"] ? "XPASS" : "XFAIL"
+
+ if (result_obj["directive"] == "SKIP")
+ return result_obj["is_ok"] ? "SKIP" : COOKED_FAIL;
+
+ if (length(result_obj["directive"]))
+ abort("in function stringify_result_obj()")
+
+ return result_obj["is_ok"] ? COOKED_PASS : COOKED_FAIL
+}
+
+function decorate_result(result)
+{
+ color_name = color_for_result[result]
+ if (color_name)
+ return color_map[color_name] "" result "" color_map["std"]
+ # If we are not using colorized output, or if we do not know how
+ # to colorize the given result, we should return it unchanged.
+ return result
+}
+
+function report(result, details)
+{
+ if (result ~ /^(X?(PASS|FAIL)|SKIP|ERROR)/)
+ {
+ msg = ": " test_script_name
+ add_test_result(result)
+ }
+ else if (result == "#")
+ {
+ msg = " " test_script_name ":"
+ }
+ else
+ {
+ abort("in function report()")
+ }
+ if (length(details))
+ msg = msg " " details
+ # Output on console might be colorized.
+ print decorate_result(result) msg
+ # Log the result in the log file too, to help debugging (this is
+ # especially true when said result is a TAP error or "Bail out!").
+ print result msg | "cat >&3";
+}
+
+function testsuite_error(error_message)
+{
+ report("ERROR", "- " error_message)
+}
+
+function handle_tap_result()
+{
+ details = result_obj["number"];
+ if (length(result_obj["description"]))
+ details = details " " result_obj["description"]
+
+ if (plan_seen == LATE_PLAN)
+ {
+ details = details " # AFTER LATE PLAN";
+ }
+ else if (result_obj["is_unplanned"])
+ {
+ details = details " # UNPLANNED";
+ }
+ else if (result_obj["number"] != testno)
+ {
+ details = sprintf("%s # OUT-OF-ORDER (expecting %d)",
+ details, testno);
+ }
+ else if (result_obj["directive"])
+ {
+ details = details " # " result_obj["directive"];
+ if (length(result_obj["explanation"]))
+ details = details " " result_obj["explanation"]
+ }
+
+ report(stringify_result_obj(result_obj), details)
+}
+
+# `skip_reason` should be empty whenever planned > 0.
+function handle_tap_plan(planned, skip_reason)
+{
+ planned += 0 # Avoid getting confused if, say, `planned` is "00"
+ if (length(skip_reason) && planned > 0)
+ abort("in function handle_tap_plan()")
+ if (plan_seen)
+ {
+ # Error, only one plan per stream is acceptable.
+ testsuite_error("multiple test plans")
+ return;
+ }
+ planned_tests = planned
+ # The TAP plan can come before or after *all* the TAP results; we speak
+ # respectively of an "early" or a "late" plan. If we see the plan line
+ # after at least one TAP result has been seen, assume we have a late
+ # plan; in this case, any further test result seen after the plan will
+ # be flagged as an error.
+ plan_seen = (testno >= 1 ? LATE_PLAN : EARLY_PLAN)
+ # If testno > 0, we have an error ("too many tests run") that will be
+ # automatically dealt with later, so do not worry about it here. If
+ # $plan_seen is true, we have an error due to a repeated plan, and that
+ # has already been dealt with above. Otherwise, we have a valid "plan
+ # with SKIP" specification, and should report it as a particular kind
+ # of SKIP result.
+ if (planned == 0 && testno == 0)
+ {
+ if (length(skip_reason))
+ skip_reason = "- " skip_reason;
+ report("SKIP", skip_reason);
+ }
+}
+
+function extract_tap_comment(line)
+{
+ if (index(line, diag_string) == 1)
+ {
+ # Strip leading `diag_string` from `line`.
+ line = substr(line, length(diag_string) + 1)
+ # And strip any leading and trailing whitespace left.
+ sub("^[ \t]*", "", line)
+ sub("[ \t]*$", "", line)
+ # Return what is left (if any).
+ return line;
+ }
+ return "";
+}
+
+# When this function is called, we know that line is a TAP result line,
+# so that it matches the (perl) RE "^(not )?ok\b".
+function setup_result_obj(line)
+{
+ # Get the result, and remove it from the line.
+ result_obj["is_ok"] = (substr(line, 1, 2) == "ok" ? 1 : 0)
+ sub("^(not )?ok[ \t]*", "", line)
+
+ # If the result has an explicit number, get it and strip it; otherwise,
+ # automatically assing the next progresive number to it.
+ if (line ~ /^[0-9]+$/ || line ~ /^[0-9]+[^a-zA-Z0-9_]/)
+ {
+ match(line, "^[0-9]+")
+ # The final `+ 0` is to normalize numbers with leading zeros.
+ result_obj["number"] = substr(line, 1, RLENGTH) + 0
+ line = substr(line, RLENGTH + 1)
+ }
+ else
+ {
+ result_obj["number"] = testno
+ }
+
+ if (plan_seen == LATE_PLAN)
+ # No further test results are acceptable after a "late" TAP plan
+ # has been seen.
+ result_obj["is_unplanned"] = 1
+ else if (plan_seen && testno > planned_tests)
+ result_obj["is_unplanned"] = 1
+ else
+ result_obj["is_unplanned"] = 0
+
+ # Strip trailing and leading whitespace.
+ sub("^[ \t]*", "", line)
+ sub("[ \t]*$", "", line)
+
+ # This will have to be corrected if we have a "TODO"/"SKIP" directive.
+ result_obj["description"] = line
+ result_obj["directive"] = ""
+ result_obj["explanation"] = ""
+
+ if (index(line, "#") == 0)
+ return # No possible directive, nothing more to do.
+
+ # Directives are case-insensitive.
+ rx = "[ \t]*#[ \t]*([tT][oO][dD][oO]|[sS][kK][iI][pP])[ \t]*"
+
+ # See whether we have the directive, and if yes, where.
+ pos = match(line, rx "$")
+ if (!pos)
+ pos = match(line, rx "[^a-zA-Z0-9_]")
+
+ # If there was no TAP directive, we have nothing more to do.
+ if (!pos)
+ return
+
+ # Let`s now see if the TAP directive has been escaped. For example:
+ # escaped: ok \# SKIP
+ # not escaped: ok \\# SKIP
+ # escaped: ok \\\\\# SKIP
+ # not escaped: ok \ # SKIP
+ if (substr(line, pos, 1) == "#")
+ {
+ bslash_count = 0
+ for (i = pos; i > 1 && substr(line, i - 1, 1) == "\\"; i--)
+ bslash_count += 1
+ if (bslash_count % 2)
+ return # Directive was escaped.
+ }
+
+ # Strip the directive and its explanation (if any) from the test
+ # description.
+ result_obj["description"] = substr(line, 1, pos - 1)
+ # Now remove the test description from the line, that has been dealt
+ # with already.
+ line = substr(line, pos)
+ # Strip the directive, and save its value (normalized to upper case).
+ sub("^[ \t]*#[ \t]*", "", line)
+ result_obj["directive"] = toupper(substr(line, 1, 4))
+ line = substr(line, 5)
+ # Now get the explanation for the directive (if any), with leading
+ # and trailing whitespace removed.
+ sub("^[ \t]*", "", line)
+ sub("[ \t]*$", "", line)
+ result_obj["explanation"] = line
+}
+
+function get_test_exit_message(status)
+{
+ if (status == 0)
+ return ""
+ if (status !~ /^[1-9][0-9]*$/)
+ abort("getting exit status")
+ if (status < 127)
+ exit_details = ""
+ else if (status == 127)
+ exit_details = " (command not found?)"
+ else if (status >= 128 && status <= 255)
+ exit_details = sprintf(" (terminated by signal %d?)", status - 128)
+ else if (status > 256 && status <= 384)
+ # We used to report an "abnormal termination" here, but some Korn
+ # shells, when a child process die due to signal number n, can leave
+ # in $? an exit status of 256+n instead of the more standard 128+n.
+ # Apparently, both behaviours are allowed by POSIX (2008), so be
+ # prepared to handle them both. See also Austing Group report ID
+ # 0000051 <http://www.austingroupbugs.net/view.php?id=51>
+ exit_details = sprintf(" (terminated by signal %d?)", status - 256)
+ else
+ # Never seen in practice.
+ exit_details = " (abnormal termination)"
+ return sprintf("exited with status %d%s", status, exit_details)
+}
+
+function write_test_results()
+{
+ print ":global-test-result: " get_global_test_result() > trs_file
+ print ":recheck: " yn(must_recheck()) > trs_file
+ print ":copy-in-global-log: " yn(copy_in_global_log()) > trs_file
+ for (i = 0; i < test_results_index; i += 1)
+ print ":test-result: " test_results_list[i] > trs_file
+ close(trs_file);
+}
+
+BEGIN {
+
+## ------- ##
+## SETUP ##
+## ------- ##
+
+'"$init_colors"'
+
+# Properly initialized once the TAP plan is seen.
+planned_tests = 0
+
+COOKED_PASS = expect_failure ? "XPASS": "PASS";
+COOKED_FAIL = expect_failure ? "XFAIL": "FAIL";
+
+# Enumeration-like constants to remember which kind of plan (if any)
+# has been seen. It is important that NO_PLAN evaluates "false" as
+# a boolean.
+NO_PLAN = 0
+EARLY_PLAN = 1
+LATE_PLAN = 2
+
+testno = 0 # Number of test results seen so far.
+bailed_out = 0 # Whether a "Bail out!" directive has been seen.
+
+# Whether the TAP plan has been seen or not, and if yes, which kind
+# it is ("early" is seen before any test result, "late" otherwise).
+plan_seen = NO_PLAN
+
+## --------- ##
+## PARSING ##
+## --------- ##
+
+is_first_read = 1
+
+while (1)
+ {
+ # Involutions required so that we are able to read the exit status
+ # from the last input line.
+ st = getline
+ if (st < 0) # I/O error.
+ fatal("I/O error while reading from input stream")
+ else if (st == 0) # End-of-input
+ {
+ if (is_first_read)
+ abort("in input loop: only one input line")
+ break
+ }
+ if (is_first_read)
+ {
+ is_first_read = 0
+ nextline = $0
+ continue
+ }
+ else
+ {
+ curline = nextline
+ nextline = $0
+ $0 = curline
+ }
+ # Copy any input line verbatim into the log file.
+ print | "cat >&3"
+ # Parsing of TAP input should stop after a "Bail out!" directive.
+ if (bailed_out)
+ continue
+
+ # TAP test result.
+ if ($0 ~ /^(not )?ok$/ || $0 ~ /^(not )?ok[^a-zA-Z0-9_]/)
+ {
+ testno += 1
+ setup_result_obj($0)
+ handle_tap_result()
+ }
+ # TAP plan (normal or "SKIP" without explanation).
+ else if ($0 ~ /^1\.\.[0-9]+[ \t]*$/)
+ {
+ # The next two lines will put the number of planned tests in $0.
+ sub("^1\\.\\.", "")
+ sub("[^0-9]*$", "")
+ handle_tap_plan($0, "")
+ continue
+ }
+ # TAP "SKIP" plan, with an explanation.
+ else if ($0 ~ /^1\.\.0+[ \t]*#/)
+ {
+ # The next lines will put the skip explanation in $0, stripping
+ # any leading and trailing whitespace. This is a little more
+ # tricky in truth, since we want to also strip a potential leading
+ # "SKIP" string from the message.
+ sub("^[^#]*#[ \t]*(SKIP[: \t][ \t]*)?", "")
+ sub("[ \t]*$", "");
+ handle_tap_plan(0, $0)
+ }
+ # "Bail out!" magic.
+ # Older versions of prove and TAP::Harness (e.g., 3.17) did not
+ # recognize a "Bail out!" directive when preceded by leading
+ # whitespace, but more modern versions (e.g., 3.23) do. So we
+ # emulate the latter, "more modern" behaviour.
+ else if ($0 ~ /^[ \t]*Bail out!/)
+ {
+ bailed_out = 1
+ # Get the bailout message (if any), with leading and trailing
+ # whitespace stripped. The message remains stored in `$0`.
+ sub("^[ \t]*Bail out![ \t]*", "");
+ sub("[ \t]*$", "");
+ # Format the error message for the
+ bailout_message = "Bail out!"
+ if (length($0))
+ bailout_message = bailout_message " " $0
+ testsuite_error(bailout_message)
+ }
+ # Maybe we have too look for dianogtic comments too.
+ else if (comments != 0)
+ {
+ comment = extract_tap_comment($0);
+ if (length(comment))
+ report("#", comment);
+ }
+ }
+
+## -------- ##
+## FINISH ##
+## -------- ##
+
+# A "Bail out!" directive should cause us to ignore any following TAP
+# error, as well as a non-zero exit status from the TAP producer.
+if (!bailed_out)
+ {
+ if (!plan_seen)
+ {
+ testsuite_error("missing test plan")
+ }
+ else if (planned_tests != testno)
+ {
+ bad_amount = testno > planned_tests ? "many" : "few"
+ testsuite_error(sprintf("too %s tests run (expected %d, got %d)",
+ bad_amount, planned_tests, testno))
+ }
+ if (!ignore_exit)
+ {
+ # Fetch exit status from the last line.
+ exit_message = get_test_exit_message(nextline)
+ if (exit_message)
+ testsuite_error(exit_message)
+ }
+ }
+
+write_test_results()
+
+exit 0
+
+} # End of "BEGIN" block.
+'
+
+# TODO: document that we consume the file descriptor 3 :-(
+} 3>"$log_file"
+
+test $? -eq 0 || fatal "I/O or internal error"
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
--- /dev/null
+#! /bin/sh
+
+# run a GTest in tap mode. The test binary is passed as $1
+
+$1 -k --tap
--- /dev/null
+/config.h.win32
+/vs10/json-glib.vcxproj
+/vs10/json-glib.vcxproj.filters
+/vs9/json-glib.vcproj
--- /dev/null
+SUBDIRS = vs9 vs10
+
+EXTRA_DIST = \
+ config.h.win32.in \
+ config.h.win32 \
+ gen-file-list-jsonglib.py \
+ detectenv_msvc.mak \
+ introspection-msvc.mak \
+ json-glib-introspection-msvc.mak
--- /dev/null
+/* config.h.in. Generated from configure.ac by autoheader. */
+
+/* Define to 1 if translation of program messages to the user's native
+ language is requested. */
+#define ENABLE_NLS 1
+
+/* The prefix for our gettext translation domains. */
+#define GETTEXT_PACKAGE "json-glib-1.0"
+
+/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
+ CoreFoundation framework. */
+/* #undef HAVE_CFLOCALECOPYCURRENT */
+
+/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
+ the CoreFoundation framework. */
+/* #undef HAVE_CFPREFERENCESCOPYAPPVALUE */
+
+/* Define if the GNU dcgettext() function is already present or preinstalled.
+ */
+#define HAVE_DCGETTEXT 1
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+/* #undef HAVE_DLFCN_H */
+
+/* Whether you have gcov */
+/* #undef HAVE_GCOV */
+
+/* Define if the GNU gettext() function is already present or preinstalled. */
+#define HAVE_GETTEXT 1
+
+/* Define if you have the iconv() function and it works. */
+#define HAVE_ICONV 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#if !defined (_MSC_VER) || (_MSC_VER >= 1800)
+#define HAVE_INTTYPES_H 1
+#endif
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#if !defined (_MSC_VER) || (_MSC_VER >= 1600)
+#define HAVE_STDINT_H 1
+#endif
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+/*#undef HAVE_STRINGS_H*/
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#ifndef _MSC_VER
+#define HAVE_UNISTD_H 1
+#endif
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+ */
+#define LT_OBJDIR ".libs/"
+
+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
+/* #undef NO_MINUS_C_MINUS_O */
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "http://bugzilla.gnome.org/enter_bug.cgi?product=json-glib"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "json-glib"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "json-glib @JSON_MAJOR_VERSION@.@JSON_MINOR_VERSION@.@JSON_MICRO_VERSION@"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "json-glib"
+
+/* Define to the home page for this package. */
+#define PACKAGE_URL ""
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "@JSON_MAJOR_VERSION@.@JSON_MINOR_VERSION@.@JSON_MICRO_VERSION@"
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* defines how to decorate public symbols while building */
+#ifdef _MSC_VER
+#define _JSON_EXTERN __declspec(dllexport) extern
+#else
+#define _JSON_EXTERN __attribute__((visibility("default"))) __declspec(dllexport) extern
+#endif
--- /dev/null
+# Check to see we are configured to build with MSVC (MSDEVDIR, MSVCDIR or
+# VCINSTALLDIR) or with the MS Platform SDK (MSSDK or WindowsSDKDir)
+!if !defined(VCINSTALLDIR) && !defined(WINDOWSSDKDIR)
+MSG = ^
+This Makefile is only for Visual Studio 2008 and later.^
+You need to ensure that the Visual Studio Environment is properly set up^
+before running this Makefile.
+!error $(MSG)
+!endif
+
+ERRNUL = 2>NUL
+_HASH=^#
+
+!if ![echo VCVERSION=_MSC_VER > vercl.x] \
+ && ![echo $(_HASH)if defined(_M_IX86) >> vercl.x] \
+ && ![echo PLAT=Win32 >> vercl.x] \
+ && ![echo $(_HASH)elif defined(_M_AMD64) >> vercl.x] \
+ && ![echo PLAT=x64 >> vercl.x] \
+ && ![echo $(_HASH)endif >> vercl.x] \
+ && ![cl -nologo -TC -P vercl.x $(ERRNUL)]
+!include vercl.i
+!if ![echo VCVER= ^\> vercl.vc] \
+ && ![set /a $(VCVERSION) / 100 - 6 >> vercl.vc]
+!include vercl.vc
+!endif
+!endif
+!if ![del $(ERRNUL) /q/f vercl.x vercl.i vercl.vc]
+!endif
+
+!if $(VCVERSION) > 1499 && $(VCVERSION) < 1600
+VSVER = 9
+!elseif $(VCVERSION) > 1599 && $(VCVERSION) < 1700
+VSVER = 10
+!elseif $(VCVERSION) > 1699 && $(VCVERSION) < 1800
+VSVER = 11
+!elseif $(VCVERSION) > 1799 && $(VCVERSION) < 1900
+VSVER = 12
+!else
+VSVER = 0
+!endif
+
+!if "$(VSVER)" == "0"
+MSG = ^
+This NMake Makefile set supports Visual Studio^
+9 (2008) through 12 (2013). Your Visual Studio^
+version is not supported.
+!error $(MSG)
+!endif
+
+VALID_CFGSET = FALSE
+!if "$(CFG)" == "release" || "$(CFG)" == "debug"
+VALID_CFGSET = TRUE
+!endif
+
+!if "$(CFG)" == "release"
+CFLAGS_ADD = /MD /O2
+!else
+CFLAGS_ADD = /MDd /Od /Zi
+!endif
+
+!if "$(PLAT)" == "x64"
+LDFLAGS_ARCH = /machine:x64
+!else
+LDFLAGS_ARCH = /machine:x86
+!endif
--- /dev/null
+#!/usr/bin/python
+# vim: encoding=utf-8
+# Generate the file lists for processing with g-ir-scanner
+import os
+import sys
+import re
+import string
+import subprocess
+import optparse
+
+def gen_jsonglib_filelist(srcroot, subdir, dest):
+ vars = read_vars_from_AM(os.path.join(srcroot, subdir, 'Makefile.am'),
+ vars = {'srcdir':'../json-glib',
+ 'top_srcdir':'..',
+ 'top_builddir':'..'},
+ conds = {'HAVE_INTROSPECTION':True},
+ filters = ['Json_1_0_gir_FILES'])
+
+ files = vars['Json_1_0_gir_FILES'].split()
+ if (srcroot == '..\\..'):
+ relative_srcdir = '..'
+ else:
+ relative_srcdir = 'srcroot'
+
+ with open(dest, 'w') as d:
+ for i in files:
+ d.write(relative_srcdir + '\\' + i.replace('/', '\\') + '\n')
+
+def read_vars_from_AM(path, vars = {}, conds = {}, filters = None):
+ '''
+ path: path to the Makefile.am
+ vars: predefined variables
+ conds: condition variables for Makefile
+ filters: if None, all variables defined are returned,
+ otherwise, it is a list contains that variables should be returned
+ '''
+ cur_vars = vars.copy()
+ RE_AM_VAR_REF = re.compile(r'\$\((\w+?)\)')
+ RE_AM_VAR = re.compile(r'^\s*(\w+)\s*=(.*)$')
+ RE_AM_INCLUDE = re.compile(r'^\s*include\s+(\w+)')
+ RE_AM_CONTINUING = re.compile(r'\\\s*$')
+ RE_AM_IF = re.compile(r'^\s*if\s+(\w+)')
+ RE_AM_ELSE = re.compile(r'^\s*else')
+ RE_AM_ENDIF = re.compile(r'^\s*endif')
+ def am_eval(cont):
+ return RE_AM_VAR_REF.sub(lambda x: cur_vars.get(x.group(1), ''), cont)
+ with open(path, 'r') as f:
+ contents = f.readlines()
+ #combine continuing lines
+ i = 0
+ ncont = []
+ while i < len(contents):
+ line = contents[i]
+ if RE_AM_CONTINUING.search(line):
+ line = RE_AM_CONTINUING.sub('', line)
+ j = i + 1
+ while j < len(contents) and RE_AM_CONTINUING.search(contents[j]):
+ line += RE_AM_CONTINUING.sub('', contents[j])
+ j += 1
+ else:
+ if j < len(contents):
+ line += contents[j]
+ i = j
+ else:
+ i += 1
+ ncont.append(line)
+
+ #include, var define, var evaluation
+ i = -1
+ skip = False
+ oldskip = []
+ while i < len(ncont) - 1:
+ i += 1
+ line = ncont[i]
+ mo = RE_AM_IF.search(line)
+ if mo:
+ oldskip.append(skip)
+ skip = False if mo.group(1) in conds and conds[mo.group(1)] \
+ else True
+ continue
+ mo = RE_AM_ELSE.search(line)
+ if mo:
+ skip = not skip
+ continue
+ mo = RE_AM_ENDIF.search(line)
+ if mo:
+ skip = oldskip.pop()
+ continue
+ if not skip:
+ mo = RE_AM_INCLUDE.search(line)
+ if mo:
+ cur_vars.update(read_vars_from_AM(am_eval(mo.group(1)), cur_vars, conds, None))
+ continue
+ mo = RE_AM_VAR.search(line)
+ if mo:
+ cur_vars[mo.group(1)] = am_eval(mo.group(2).strip())
+ continue
+
+ #filter:
+ if filters != None:
+ ret = {}
+ for i in filters:
+ ret[i] = cur_vars.get(i, '')
+ return ret
+ else:
+ return cur_vars
+
+def main(argv):
+ srcroot = '..\\..'
+ subdir = 'json-glib'
+ gen_jsonglib_filelist(srcroot, subdir, 'json_list')
+ return 0
+
+if __name__ == '__main__':
+ sys.exit(main(sys.argv))
--- /dev/null
+# Common Utility NMake Makefile Template
+# Used to Generate Introspection files for various Projects
+
+# Can Override with env vars as needed
+# You will need to have built gobject-introspection for this to work.
+# Change or pass in or set the following to suit your environment
+
+BASEDIR = ..\..\..\vs$(VSVER)\$(PLAT)
+GIR_SUBDIR = share\gir-1.0
+GIR_TYPELIBDIR = lib\girepository-1.0
+G_IR_SCANNER = $(BASEDIR)\bin\g-ir-scanner
+G_IR_COMPILER = $(BASEDIR)\bin\g-ir-compiler.exe
+G_IR_INCLUDEDIR = $(BASEDIR)\$(GIR_SUBDIR)
+G_IR_TYPELIBDIR = $(BASEDIR)\$(GIR_TYPELIBDIR)
+
+# Note: The PYTHON2 must be a Python 2.6.x or 2.7.x Interpretor!
+# Either having python.exe from Python 2.6.x/2.7.x in your PATH will work
+# or passing in PYTHON2=<full path to your Python 2.6.x/2.7.x interpretor> will do
+
+# This is required, and gobject-introspection needs to be built
+# before this can be successfully run.
+PYTHON2=python
+
+# Don't change anything following this line!
+VALID_PKG_CONFIG_PATH = FALSE
+VALID_GCC_INSTPATH = FALSE
+
+MSG_INVALID_PKGCONFIG = You must set or specifiy a valid PKG_CONFIG_PATH
+MSG_INVALID_MINGWDIR = You must set or specifiy a valid MINGWDIR, where gcc.exe can be found in %MINGWDIR%\bin
+MSG_INVALID_CFG = You need to specify or set CFG to be release or debug to use this Makefile to build the Introspection Files
+
+ERROR_MSG =
+
+BUILD_INTROSPECTION = TRUE
+
+!if ![pkg-config --print-errors --errors-to-stdout $(CHECK_PACKAGE) > pkgconfig.x] \
+ && ![setlocal] \
+ && ![set file="pkgconfig.x"] \
+ && ![FOR %A IN (%file%) DO @echo PKG_CHECK_SIZE=%~zA > pkgconfig.chksize] \
+ && ![del $(ERRNUL) /q/f pkgconfig.x]
+!endif
+
+!include pkgconfig.chksize
+!if "$(PKG_CHECK_SIZE)" == "0"
+VALID_PKG_CONFIG_PATH = TRUE
+!else
+VALID_PKG_CONFIG_PATH = FALSE
+!endif
+
+!if ![IF EXIST %MINGWDIR%\bin\gcc.exe @echo VALID_GCC_INSTPATH=TRUE > gcccheck.x]
+!endif
+
+!if ![IF NOT EXIST %MINGWDIR%\bin\gcc.exe @echo VALID_GCC_INSTPATH=FALSE > gcccheck.x]
+!endif
+
+!include gcccheck.x
+
+!if ![del $(ERRNUL) /q/f pkgconfig.chksize gcccheck.x]
+!endif
+
+VALID_CFGSET = FALSE
+!if "$(CFG)" == "release" || "$(CFG)" == "debug"
+VALID_CFGSET = TRUE
+!endif
+
+!if "$(VALID_GCC_INSTPATH)" != "TRUE"
+BUILD_INTROSPECTION = FALSE
+ERROR_MSG = $(MSG_INVALID_MINGWDIR)
+!endif
+
+!if "$(VALID_PKG_CONFIG_PATH)" != "TRUE"
+BUILD_INTROSPECTION = FALSE
+ERROR_MSG = $(MSG_INVALID_PKGCONFIG)
+!endif
+
+!if "$(VALID_CFGSET)" != "TRUE"
+BUILD_INTROSPECTION = FALSE
+ERROR_MSG = $(MSG_INVALID_CFG)
+!endif
--- /dev/null
+# NMake Makefile to build Introspection Files for JSON-GLib
+
+!include detectenv_msvc.mak
+
+APIVERSION = 1.0
+
+CHECK_PACKAGE = gio-2.0
+
+!include introspection-msvc.mak
+
+!if "$(BUILD_INTROSPECTION)" == "TRUE"
+all: setgirbuildnev Json-$(APIVERSION).gir Json-$(APIVERSION).typelib
+
+json_list:
+ @-echo Generating Filelist to Introspect for JSON-GLib...
+ $(PYTHON2) gen-file-list-jsonglib.py
+
+vs$(VSVER)\$(CFG)\$(PLAT)\bin\Json-$(APIVERSION).lib:
+ @-echo Copying Json-1.0.lib from json-glib-1.0.lib
+ @-copy /b vs$(VSVER)\$(CFG)\$(PLAT)\bin\json-glib-$(APIVERSION).lib vs$(VSVER)\$(CFG)\$(PLAT)\bin\Json-$(APIVERSION).lib
+
+setgirbuildnev:
+ @set CC=$(CC)
+ @set PYTHONPATH=$(BASEDIR)\lib\gobject-introspection
+ @set PATH=vs$(VSVER)\$(CFG)\$(PLAT)\bin;$(BASEDIR)\bin;$(PATH);$(MINGWDIR)\bin
+ @set PKG_CONFIG_PATH=$(PKG_CONFIG_PATH)
+ @set LIB=vs$(VSVER)\$(CFG)\$(PLAT)\bin;$(LIB)
+
+Json-$(APIVERSION).gir: json_list vs$(VSVER)\$(CFG)\$(PLAT)\bin\Json-$(APIVERSION).lib
+ @-echo Generating Json-$(APIVERSION).gir...
+ $(PYTHON2) $(G_IR_SCANNER) --verbose -I..\.. \
+ -I$(BASEDIR)\include\glib-2.0 -I$(BASEDIR)\lib\glib-2.0\include \
+ --namespace=Json --nsversion=$(APIVERSION) \
+ --include=GObject-2.0 --include=Gio-2.0 \
+ --no-libtool --library=json-glib-1.0 \
+ --reparse-validate --add-include-path=$(BASEDIR)\share\gir-1.0 --add-include-path=. \
+ --warn-all --pkg-export json-glib-$(APIVERSION) --c-include "json-glib/json-glib.h" \
+ -DJSON_COMPILATION=1 -DG_LOG_DOMAIN=\"Json\" \
+ --filelist=json_list -o $@
+
+Json-$(APIVERSION).typelib: Json-$(APIVERSION).gir
+ @-echo Compiling Json-$(APIVERSION).typelib...
+ $(G_IR_COMPILER) --includedir=. --debug --verbose Json-$(APIVERSION).gir -o Json-$(APIVERSION).typelib
+
+install-introspection: setgirbuildnev Json-$(APIVERSION).gir Json-$(APIVERSION).typelib
+ @-copy Json-$(APIVERSION).gir $(G_IR_INCLUDEDIR)
+ @-copy /b Json-$(APIVERSION).typelib $(G_IR_TYPELIBDIR)
+
+!else
+all:
+ @-echo $(ERROR_MSG)
+!endif
+
+clean:
+ @-del /f/q Json-$(APIVERSION).typelib
+ @-del /f/q Json-$(APIVERSION).gir
+ @-del /f/q vs$(VSVER)\$(CFG)\$(PLAT)\bin\Json-$(APIVERSION).lib
+ @-del /f/q json_list
+ @-del /f/q *.pyc
--- /dev/null
+NULL =
+
+EXTRA_DIST = \
+ json-glib.sln \
+ json-glib-version-paths.props \
+ json-glib-build-defines.props \
+ json-glib-gen-srcs.props \
+ json-glib-install.props \
+ json-glib.vcxproj \
+ json-glib.vcxprojin \
+ json-glib.vcxproj.filters \
+ json-glib.vcxproj.filtersin \
+ json-glib-format.vcxproj \
+ json-glib-format.vcxproj.filters \
+ json-glib-validate.vcxproj \
+ json-glib-validate.vcxproj.filters \
+ array.vcxproj \
+ array.vcxproj.filters \
+ boxed.vcxproj \
+ boxed.vcxproj.filters \
+ builder.vcxproj \
+ builder.vcxproj.filters \
+ generator.vcxproj \
+ generator.vcxproj.filters \
+ gvariant.vcxproj \
+ gvariant.vcxproj.filters \
+ install.vcxproj \
+ node.vcxproj \
+ node.vcxproj.filters \
+ object.vcxproj \
+ object.vcxproj.filters \
+ parser.vcxproj \
+ parser.vcxproj.filters \
+ path.vcxproj \
+ path.vcxproj.filters \
+ reader.vcxproj \
+ reader.vcxproj.filters \
+ serialize-complex.vcxproj \
+ serialize-complex.vcxproj.filters \
+ serialize-full.vcxproj \
+ serialize-full.vcxproj.filters \
+ serialize-simple.vcxproj \
+ serialize-simple.vcxproj.filters \
+ README.txt \
+ invalid.vcxproj \
+ invalid.vcxproj.filters \
+ $(NULL)
--- /dev/null
+Please refer to the following GNOME Live! page for more detailed\r
+instructions on building JSON-GLib and its dependencies with Visual C++:\r
+\r
+https://live.gnome.org/GTK%2B/Win32/MSVCCompilationOfGTKStack\r
+\r
+This VS10 solution and the projects it includes are intended to be used\r
+in a JSON-GLib source tree unpacked from a tarball. In a git checkout you\r
+first need to use some Unix-like environment or manual work to expand\r
+the .in files needed, mainly config.h.win32.in into config.h.win32.\r
+You will also need to expand json-glib.vcxprojin and json-glib.vcxproj.filtersin\r
+here into json-glib.vcxproj and json-glib.vcxproj.filters repectively.\r
+\r
+The dependencies for this package are gettext-runtime (libintl), GLib*,\r
+ZLib at the minimum.\r
+\r
+For the Dependencies, you may either:\r
+\r
+a) look for all of the dependencies (except GLib*) under\r
+\r
+ http://ftp.gnome.org/pub/GNOME/binaries/win32/dependencies/ (32-bit) -OR-\r
+ http://ftp.gnome.org/pub/GNOME/binaries/win64/dependencies/ (64-bit)\r
+\r
+ Please use the latest versions of these libraries that are available there,\r
+ these are packaged by Tor Lillqvist, which are built with MinGW/GCC.\r
+ Please see b) below regarding the build of GLib*\r
+\r
+-OR-\r
+\r
+b) Build them yourself with VS10 (but you may most probably wish to get\r
+ gettext-runtime from the URL(s) mentioned in a)). Use the latest\r
+ stable versions for them (you may need to get the latest unstable version of\r
+ GLib if you are using an unstable version of JSON-GLib):\r
+\r
+ GLib*: Grab the latest sources from http://www.gtk.org under "Download"\r
+ (stable only-please make a search for the latest unstable versions)\r
+ ZLib: http://www.zlib.net\r
+\r
+ The above 2 packages all have supported mechanisms (Makefiles and/or Project\r
+ Files) for building under VS10 (upgrade the Project Files from earlier VS\r
+ versions will do for these, when applicable). It is recommended that ZLib\r
+ is built using the win32/Makefile.msc makefile with VS10 with the ASM routines\r
+ to avoid linking problems (copy zdll.lib to zlib1.lib[Release] or to zlib1d.lib\r
+ [Debug] after completion of compilation)-see win32/Makefile.msc in ZLib for\r
+ more details.\r
+\r
+* This GLib refers to a build that is built by VS10\r
+\r
+Set up the source tree as follows under some arbitrary top\r
+folder <root>:\r
+\r
+<root>\json-glib\<this-json-glib-source-tree>\r
+<root>\vs10\<PlatformName>\r
+\r
+*this* file you are now reading is thus located at\r
+<root>\json-glib\<this-json-glib-source-tree>\build\win32\vs10\README.\r
+\r
+<PlatformName> is either Win32 or x64, as in the VS10 project files.\r
+\r
+You should unpack the <dependent-package>-dev and <dependent-packge> (runtime)\r
+into <root>\vs10\<PlatformName>, if you download any of the packages from\r
+\r
+http://ftp.gnome.org/pub/GNOME/binaries/win32/dependencies/ (32-bit) -OR-\r
+http://ftp.gnome.org/pub/GNOME/binaries/win64/dependencies/ (64-bit)\r
+\r
+so that for instance libintl.h end up at \r
+<root>\vs10\<PlatformName>\include\libintl.h.\r
+\r
+If you build any of the dependencies yourselves, copy the: \r
+-DLLs and EXEs into <root>\vs10\<PlatformName>\bin\r
+-headers into <root>\vs10\<PlatformName>\include\\r
+-LIBs into <root>\vs10\<PlatformName>\lib\r
+\r
+If you have not built GLib with VS10 and placed the LIBs and headers in a\r
+place where VS10 can find them automatically, you should also uncompress\r
+your GLib sources in <root>\ and build it from there, following the\r
+instructions in <root>\glib<-version>\build\win32\vs10, so that the required\r
+headers, EXEs, DLLs and LIBs will end up in\r
+<root>\vs10\<PlatformName>\include\glib-2.0 (headers)\r
+<root>\vs10\<PlatformName>\lib (LIBs, also glib-2.0/include/glibconfig.h)\r
+<root>\vs10\<PlatformName>\bin (EXEs/DLLs)\r
+respectively.\r
+\r
+After the build of JSON-GLib, the "install" project will copy build results\r
+and headers into their appropriate location under <root>\vs10\<PlatformName>.\r
+For instance, built DLLs go into <root>\vs10\<PlatformName>\bin, built LIBs into\r
+<root>\vs10\<PlatformName>\lib and JSON-GLib headers into\r
+<root>\vs10\<PlatformName>\include\json-glib-1.0. This is then from where\r
+project files higher in the stack are supposed to look for them, not\r
+from a specific JSON-GLib source tree.\r
+\r
+--Chun-wei Fan <fanc999@yahoo.com.tw>\r
+--(adapted from the GLib VS9 README.txt file originally written by Tor Lillqvist)\r
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{9B2921C9-577F-418D-8341-6D79771DDCEC}</ProjectGuid>
+ <RootNamespace>array</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ <ForcedIncludeFiles>%(ForcedIncludeFiles)</ForcedIncludeFiles>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>CompileAsC</CompileAs>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <PreBuildEvent>
+ <Command>
+ </Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <ForcedIncludeFiles>%(ForcedIncludeFiles)</ForcedIncludeFiles>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>CompileAsC</CompileAs>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\json-glib\tests\array.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="json-glib.vcxproj">
+ <Project>{469db0a8-e33e-4112-a38c-52a168ecdc03}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Sources">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\json-glib\tests\array.c">
+ <Filter>Sources</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{5016D295-CC2F-4149-80C2-71D7A33791B2}</ProjectGuid>
+ <RootNamespace>boxed</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ <ForcedIncludeFiles>%(ForcedIncludeFiles)</ForcedIncludeFiles>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>CompileAsC</CompileAs>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <PreBuildEvent>
+ <Command>
+ </Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <ForcedIncludeFiles>%(ForcedIncludeFiles)</ForcedIncludeFiles>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>CompileAsC</CompileAs>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\json-glib\tests\boxed.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="json-glib.vcxproj">
+ <Project>{469db0a8-e33e-4112-a38c-52a168ecdc03}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Sources">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\json-glib\tests\boxed.c">
+ <Filter>Sources</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{B7D32B02-3481-4A6E-8E0F-B43887F348A8}</ProjectGuid>
+ <RootNamespace>builder</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ <ForcedIncludeFiles>%(ForcedIncludeFiles)</ForcedIncludeFiles>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>CompileAsC</CompileAs>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <PreBuildEvent>
+ <Command>
+ </Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <ForcedIncludeFiles>%(ForcedIncludeFiles)</ForcedIncludeFiles>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>CompileAsC</CompileAs>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\json-glib\tests\builder.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="json-glib.vcxproj">
+ <Project>{469db0a8-e33e-4112-a38c-52a168ecdc03}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Sources">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\json-glib\tests\builder.c">
+ <Filter>Sources</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{E84F9D53-C9F7-4D7D-B8D0-AFE8BE3E7B7D}</ProjectGuid>
+ <RootNamespace>generator</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ <ForcedIncludeFiles>%(ForcedIncludeFiles)</ForcedIncludeFiles>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>CompileAsC</CompileAs>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <PreBuildEvent>
+ <Command>
+ </Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <ForcedIncludeFiles>%(ForcedIncludeFiles)</ForcedIncludeFiles>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>CompileAsC</CompileAs>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\json-glib\tests\generator.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="json-glib.vcxproj">
+ <Project>{469db0a8-e33e-4112-a38c-52a168ecdc03}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Sources">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\json-glib\tests\generator.c">
+ <Filter>Sources</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{AA52A332-735D-4177-8CA6-842018E60DED}</ProjectGuid>
+ <RootNamespace>gvariant</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>CompileAsC</CompileAs>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>CompileAsC</CompileAs>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\json-glib\tests\gvariant.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="json-glib.vcxproj">
+ <Project>{469db0a8-e33e-4112-a38c-52a168ecdc03}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Sources">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\json-glib\tests\gvariant.c">
+ <Filter>Sources</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{41ABBEB6-693A-4E63-9DD7-EAAC437BC173}</ProjectGuid>
+ <RootNamespace>install</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Utility</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Utility</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Utility</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Utility</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-install.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-install.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-install.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-install.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <PostBuildEvent>
+ <Command>$(JsonGlibDoInstall)</Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <PostBuildEvent>
+ <Command>$(JsonGlibDoInstall)</Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <PostBuildEvent>
+ <Command>$(JsonGlibDoInstall)</Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <PostBuildEvent>
+ <Command>$(JsonGlibDoInstall)</Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ProjectReference Include="json-glib.vcxproj">
+ <Project>{469db0a8-e33e-4112-a38c-52a168ecdc03}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="json-glib-validate.vcxproj">
+ <Project>{ff640d73-9bcd-4b75-b63f-75175a3c9f68}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="json-glib-format.vcxproj">
+ <Project>{ff640d73-9bcd-4b75-b63f-75175a3c9f69}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{04658465-64F9-4F06-B7A7-D40F6EDF26E4}</ProjectGuid>
+ <RootNamespace>invalid</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ <ForcedIncludeFiles>%(ForcedIncludeFiles)</ForcedIncludeFiles>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>CompileAsC</CompileAs>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <PreBuildEvent>
+ <Command>
+ </Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <ForcedIncludeFiles>%(ForcedIncludeFiles)</ForcedIncludeFiles>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>CompileAsC</CompileAs>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\json-glib\tests\invalid.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="json-glib.vcxproj">
+ <Project>{469db0a8-e33e-4112-a38c-52a168ecdc03}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Sources">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\json-glib\tests\invalid.c">
+ <Filter>Sources</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Label="PropertySheets">
+ <Import Project="json-glib-version-paths.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros">
+ <JsonGlibDefines>JSON_COMPILATION;G_LOG_DOMAIN="Json";JSON_LOCALEDIR="/dummy"</JsonGlibDefines>
+ </PropertyGroup>
+ <PropertyGroup>
+ <_PropertySheetDisplayName>jsonglibbuilddefinesprops</_PropertySheetDisplayName>
+ <OutDir>$(SolutionDir)$(Configuration)\$(PlatformName)\bin\</OutDir>
+ <IntDir>$(SolutionDir)$(Configuration)\$(PlatformName)\obj\$(ProjectName)\</IntDir>
+ </PropertyGroup>
+ <ItemDefinitionGroup>
+ <ClCompile>
+ <AdditionalIncludeDirectories>..\..\..;..\..\..\json-glib;$(GlibEtcInstallRoot)\include;$(GlibEtcInstallRoot)\include\glib-2.0;$(GlibEtcInstallRoot)\lib\glib-2.0\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ForcedIncludeFiles>msvc_recommended_pragmas.h;%(ForcedIncludeFiles)</ForcedIncludeFiles>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>glib-2.0.lib;gobject-2.0.lib;gio-2.0.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalLibraryDirectories>$(GlibEtcInstallRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <BuildMacro Include="JsonGlibDefines">
+ <Value>$(JsonGlibDefines)</Value>
+ </BuildMacro>
+ </ItemGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{FF640D73-9BCD-4B75-B63F-75175A3C9F69}</ProjectGuid>
+ <RootNamespace>jsonglibformat</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;$(JsonGlibDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <AdditionalDependencies>intl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;$(JsonGlibDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>CompileAsC</CompileAs>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <AdditionalDependencies>intl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>$(JsonGlibDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <AdditionalDependencies>intl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <PreprocessorDefinitions>$(JsonGlibDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>CompileAsC</CompileAs>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <AdditionalDependencies>intl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\json-glib\json-glib-format.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="json-glib.vcxproj">
+ <Project>{469db0a8-e33e-4112-a38c-52a168ecdc03}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Sources">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\json-glib\json-glib-format.c">
+ <Filter>Sources</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Label="PropertySheets">
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros">
+ <CopyConfigH>copy ..\config.h.win32 ..\..\..\config.h</CopyConfigH>
+ </PropertyGroup>
+ <PropertyGroup>
+ <_PropertySheetDisplayName>jsonglibgensrcsprops</_PropertySheetDisplayName>
+ </PropertyGroup>
+ <ItemGroup>
+ <BuildMacro Include="CopyConfigH">
+ <Value>$(CopyConfigH)</Value>
+ </BuildMacro>
+ </ItemGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Label="PropertySheets">
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros">
+ <JsonGlibDoInstall>
+mkdir $(CopyDir)
+
+mkdir $(CopyDir)\bin
+
+mkdir $(CopyDir)\lib
+
+
+copy $(SolutionDir)$(Configuration)\$(Platform)\bin\json-glib-$(ApiVersion).lib $(CopyDir)\lib
+
+
+copy $(SolutionDir)$(Configuration)\$(Platform)\bin\$(JsonGlibDllPrefix)json-glib$(JsonGlibDllSuffix).dll $(CopyDir)\bin
+
+copy $(SolutionDir)$(Configuration)\$(Platform)\bin\json-glib-format.exe $(CopyDir)\bin
+
+copy $(SolutionDir)$(Configuration)\$(Platform)\bin\json-glib-validate.exe $(CopyDir)\bin
+
+
+mkdir $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib
+
+
+copy ..\..\..\json-glib\json-enum-types.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib
+
+copy ..\..\..\json-glib\json-version.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib
+
+copy ..\..\..\json-glib\json-glib.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib
+
+
+copy ..\..\..\json-glib\json-builder.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib
+
+copy ..\..\..\json-glib\json-generator.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib
+
+copy ..\..\..\json-glib\json-gvariant.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib
+
+copy ..\..\..\json-glib\json-gobject.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib
+
+copy ..\..\..\json-glib\json-path.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib
+
+copy ..\..\..\json-glib\json-parser.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib
+
+copy ..\..\..\json-glib\json-reader.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib
+
+copy ..\..\..\json-glib\json-types.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib
+
+copy ..\..\..\json-glib\json-version-macros.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib
+</JsonGlibDoInstall>
+ </PropertyGroup>
+ <PropertyGroup>
+ <_PropertySheetDisplayName>jsonglibinstallprops</_PropertySheetDisplayName>
+ </PropertyGroup>
+ <ItemGroup>
+ <BuildMacro Include="JsonGlibDoInstall">
+ <Value>$(JsonGlibDoInstall)</Value>
+ </BuildMacro>
+ </ItemGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{FF640D73-9BCD-4B75-B63F-75175A3C9F68}</ProjectGuid>
+ <RootNamespace>jsonglibvalidate</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;$(JsonGlibDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <AdditionalDependencies>intl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;$(JsonGlibDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>CompileAsC</CompileAs>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <AdditionalDependencies>intl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>$(JsonGlibDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <AdditionalDependencies>intl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <PreprocessorDefinitions>$(JsonGlibDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>CompileAsC</CompileAs>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <AdditionalDependencies>intl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\json-glib\json-glib-validate.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="json-glib.vcxproj">
+ <Project>{469db0a8-e33e-4112-a38c-52a168ecdc03}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Sources">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\json-glib\json-glib-validate.c">
+ <Filter>Sources</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Label="UserMacros">
+ <VSVer>10</VSVer>
+ <GlibEtcInstallRoot>$(SolutionDir)\..\..\..\..\vs$(VSVer)\$(Platform)</GlibEtcInstallRoot>
+ <CopyDir>$(GlibEtcInstallRoot)</CopyDir>
+ <DefDir>$(SolutionDir)$(Configuration)\$(PlatformName)\obj\$(ProjectName)\</DefDir>
+ <ApiVersion>1.0</ApiVersion>
+ <JsonGlibLibtoolCompatibleDllPrefix>lib</JsonGlibLibtoolCompatibleDllPrefix>
+ <JsonGlibLibtoolCompatibleDllSuffix>-1.0-0</JsonGlibLibtoolCompatibleDllSuffix>
+ <JsonGlibSeparateVSDllPrefix />
+ <JsonGlibSeparateVSDllSuffix>-1-vs$(VSVer)</JsonGlibSeparateVSDllSuffix>
+ <JsonGlibDllPrefix>$(JsonGlibSeparateVSDllPrefix)</JsonGlibDllPrefix>
+ <JsonGlibDllSuffix>$(JsonGlibSeparateVSDllSuffix)</JsonGlibDllSuffix>
+ </PropertyGroup>
+ <PropertyGroup>
+ <_PropertySheetDisplayName>jsonglibversionpathsprops</_PropertySheetDisplayName>
+ </PropertyGroup>
+ <ItemGroup>
+ <BuildMacro Include="VSVer">
+ <Value>$(VSVer)</Value>
+ </BuildMacro>
+ <BuildMacro Include="GlibEtcInstallRoot">
+ <Value>$(GlibEtcInstallRoot)</Value>
+ </BuildMacro>
+ <BuildMacro Include="CopyDir">
+ <Value>$(CopyDir)</Value>
+ </BuildMacro>
+ <BuildMacro Include="ApiVersion">
+ <Value>$(ApiVersion)</Value>
+ </BuildMacro>
+ <BuildMacro Include="JsonGlibLibtoolCompatibleDllPrefix">
+ <Value>$(JsonGlibLibtoolCompatibleDllPrefix)</Value>
+ </BuildMacro>
+ <BuildMacro Include="JsonGlibLibtoolCompatibleDllSuffix">
+ <Value>$(JsonGlibLibtoolCompatibleDllSuffix)</Value>
+ </BuildMacro>
+ <BuildMacro Include="JsonGlibSeparateVSDllPrefix">
+ <Value>$(JsonGlibSeparateVSDllPrefix)</Value>
+ </BuildMacro>
+ <BuildMacro Include="JsonGlibSeparateVSDllSuffix">
+ <Value>$(JsonGlibSeparateVSDllSuffix)</Value>
+ </BuildMacro>
+ <BuildMacro Include="JsonGlibDllPrefix">
+ <Value>$(JsonGlibDllPrefix)</Value>
+ </BuildMacro>
+ <BuildMacro Include="JsonGlibDllSuffix">
+ <Value>$(JsonGlibDllSuffix)</Value>
+ </BuildMacro>
+ <BuildMacro Include="DefDir">
+ <Value>$(DefDir)</Value>
+ </BuildMacro>
+ </ItemGroup>
+</Project>
--- /dev/null
+\r
+Microsoft Visual Studio Solution File, Format Version 11.00\r
+# Visual Studio 2010\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "json-glib", "json-glib.vcxproj", "{469DB0A8-E33E-4112-A38C-52A168ECDC03}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "json-glib-validate", "json-glib-validate.vcxproj", "{FF640D73-9BCD-4B75-B63F-75175A3C9F68}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "json-glib-format", "json-glib-format.vcxproj", "{FF640D73-9BCD-4B75-B63F-75175A3C9F69}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "install", "install.vcxproj", "{41ABBEB6-693A-4E63-9DD7-EAAC437BC173}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "array", "array.vcxproj", "{9B2921C9-577F-418D-8341-6D79771DDCEC}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "builder", "builder.vcxproj", "{B7D32B02-3481-4A6E-8E0F-B43887F348A8}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "generator", "generator.vcxproj", "{E84F9D53-C9F7-4D7D-B8D0-AFE8BE3E7B7D}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gvariant", "gvariant.vcxproj", "{AA52A332-735D-4177-8CA6-842018E60DED}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "node", "node.vcxproj", "{04658465-64F9-4F06-B7A7-D40F6EDF26E3}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "object", "object.vcxproj", "{83A444A0-D80E-40E0-90CF-5876E1AA97DB}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "path", "path.vcxproj", "{FF640D73-9BCD-4B75-B63F-75175A3C9F67}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "parser", "parser.vcxproj", "{BDF81D39-F7E1-4B34-80E5-4B979E10629F}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "reader", "reader.vcxproj", "{99FC597F-539A-49BB-9B9A-6C1EF802A17B}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "serialize-complex", "serialize-complex.vcxproj", "{C3FCC23B-54CC-4447-B9A7-CE095EA60B16}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "serialize-full", "serialize-full.vcxproj", "{980282CA-EAEA-4F33-8982-39DAF018978A}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "serialize-simple", "serialize-simple.vcxproj", "{27AFA4CD-917A-4155-9F61-025094A97933}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "boxed", "boxed.vcxproj", "{5016D295-CC2F-4149-80C2-71D7A33791B2}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "invalid", "invalid.vcxproj", "{04658465-64F9-4F06-B7A7-D40F6EDF26E4}"\r
+EndProject\r
+Global\r
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+ Debug|Win32 = Debug|Win32\r
+ Debug|x64 = Debug|x64\r
+ Release|Win32 = Release|Win32\r
+ Release|x64 = Release|x64\r
+ EndGlobalSection\r
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+ {469DB0A8-E33E-4112-A38C-52A168ECDC03}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {469DB0A8-E33E-4112-A38C-52A168ECDC03}.Debug|Win32.Build.0 = Debug|Win32\r
+ {469DB0A8-E33E-4112-A38C-52A168ECDC03}.Debug|x64.ActiveCfg = Debug|x64\r
+ {469DB0A8-E33E-4112-A38C-52A168ECDC03}.Debug|x64.Build.0 = Debug|x64\r
+ {469DB0A8-E33E-4112-A38C-52A168ECDC03}.Release|Win32.ActiveCfg = Release|Win32\r
+ {469DB0A8-E33E-4112-A38C-52A168ECDC03}.Release|Win32.Build.0 = Release|Win32\r
+ {469DB0A8-E33E-4112-A38C-52A168ECDC03}.Release|x64.ActiveCfg = Release|x64\r
+ {469DB0A8-E33E-4112-A38C-52A168ECDC03}.Release|x64.Build.0 = Release|x64\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F68}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F68}.Debug|Win32.Build.0 = Debug|Win32\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F68}.Debug|x64.ActiveCfg = Debug|x64\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F68}.Debug|x64.Build.0 = Debug|x64\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F68}.Release|Win32.ActiveCfg = Release|Win32\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F68}.Release|Win32.Build.0 = Release|Win32\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F68}.Release|x64.ActiveCfg = Release|x64\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F68}.Release|x64.Build.0 = Release|x64\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F69}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F69}.Debug|Win32.Build.0 = Debug|Win32\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F69}.Debug|x64.ActiveCfg = Debug|x64\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F69}.Debug|x64.Build.0 = Debug|x64\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F69}.Release|Win32.ActiveCfg = Release|Win32\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F69}.Release|Win32.Build.0 = Release|Win32\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F69}.Release|x64.ActiveCfg = Release|x64\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F69}.Release|x64.Build.0 = Release|x64\r
+ {9B2921C9-577F-418D-8341-6D79771DDCEC}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {9B2921C9-577F-418D-8341-6D79771DDCEC}.Debug|Win32.Build.0 = Debug|Win32\r
+ {9B2921C9-577F-418D-8341-6D79771DDCEC}.Debug|x64.ActiveCfg = Debug|x64\r
+ {9B2921C9-577F-418D-8341-6D79771DDCEC}.Debug|x64.Build.0 = Debug|x64\r
+ {9B2921C9-577F-418D-8341-6D79771DDCEC}.Release|Win32.ActiveCfg = Release|Win32\r
+ {9B2921C9-577F-418D-8341-6D79771DDCEC}.Release|Win32.Build.0 = Release|Win32\r
+ {9B2921C9-577F-418D-8341-6D79771DDCEC}.Release|x64.ActiveCfg = Release|x64\r
+ {9B2921C9-577F-418D-8341-6D79771DDCEC}.Release|x64.Build.0 = Release|x64\r
+ {B7D32B02-3481-4A6E-8E0F-B43887F348A8}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {B7D32B02-3481-4A6E-8E0F-B43887F348A8}.Debug|Win32.Build.0 = Debug|Win32\r
+ {B7D32B02-3481-4A6E-8E0F-B43887F348A8}.Debug|x64.ActiveCfg = Debug|x64\r
+ {B7D32B02-3481-4A6E-8E0F-B43887F348A8}.Debug|x64.Build.0 = Debug|x64\r
+ {B7D32B02-3481-4A6E-8E0F-B43887F348A8}.Release|Win32.ActiveCfg = Release|Win32\r
+ {B7D32B02-3481-4A6E-8E0F-B43887F348A8}.Release|Win32.Build.0 = Release|Win32\r
+ {B7D32B02-3481-4A6E-8E0F-B43887F348A8}.Release|x64.ActiveCfg = Release|x64\r
+ {B7D32B02-3481-4A6E-8E0F-B43887F348A8}.Release|x64.Build.0 = Release|x64\r
+ {E84F9D53-C9F7-4D7D-B8D0-AFE8BE3E7B7D}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {E84F9D53-C9F7-4D7D-B8D0-AFE8BE3E7B7D}.Debug|Win32.Build.0 = Debug|Win32\r
+ {E84F9D53-C9F7-4D7D-B8D0-AFE8BE3E7B7D}.Debug|x64.ActiveCfg = Debug|x64\r
+ {E84F9D53-C9F7-4D7D-B8D0-AFE8BE3E7B7D}.Debug|x64.Build.0 = Debug|x64\r
+ {E84F9D53-C9F7-4D7D-B8D0-AFE8BE3E7B7D}.Release|Win32.ActiveCfg = Release|Win32\r
+ {E84F9D53-C9F7-4D7D-B8D0-AFE8BE3E7B7D}.Release|Win32.Build.0 = Release|Win32\r
+ {E84F9D53-C9F7-4D7D-B8D0-AFE8BE3E7B7D}.Release|x64.ActiveCfg = Release|x64\r
+ {E84F9D53-C9F7-4D7D-B8D0-AFE8BE3E7B7D}.Release|x64.Build.0 = Release|x64\r
+ {04658465-64F9-4F06-B7A7-D40F6EDF26E3}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {04658465-64F9-4F06-B7A7-D40F6EDF26E3}.Debug|Win32.Build.0 = Debug|Win32\r
+ {04658465-64F9-4F06-B7A7-D40F6EDF26E3}.Debug|x64.ActiveCfg = Debug|x64\r
+ {04658465-64F9-4F06-B7A7-D40F6EDF26E3}.Debug|x64.Build.0 = Debug|x64\r
+ {04658465-64F9-4F06-B7A7-D40F6EDF26E3}.Release|Win32.ActiveCfg = Release|Win32\r
+ {04658465-64F9-4F06-B7A7-D40F6EDF26E3}.Release|Win32.Build.0 = Release|Win32\r
+ {04658465-64F9-4F06-B7A7-D40F6EDF26E3}.Release|x64.ActiveCfg = Release|x64\r
+ {04658465-64F9-4F06-B7A7-D40F6EDF26E3}.Release|x64.Build.0 = Release|x64\r
+ {83A444A0-D80E-40E0-90CF-5876E1AA97DB}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {83A444A0-D80E-40E0-90CF-5876E1AA97DB}.Debug|Win32.Build.0 = Debug|Win32\r
+ {83A444A0-D80E-40E0-90CF-5876E1AA97DB}.Debug|x64.ActiveCfg = Debug|x64\r
+ {83A444A0-D80E-40E0-90CF-5876E1AA97DB}.Debug|x64.Build.0 = Debug|x64\r
+ {83A444A0-D80E-40E0-90CF-5876E1AA97DB}.Release|Win32.ActiveCfg = Release|Win32\r
+ {83A444A0-D80E-40E0-90CF-5876E1AA97DB}.Release|Win32.Build.0 = Release|Win32\r
+ {83A444A0-D80E-40E0-90CF-5876E1AA97DB}.Release|x64.ActiveCfg = Release|x64\r
+ {83A444A0-D80E-40E0-90CF-5876E1AA97DB}.Release|x64.Build.0 = Release|x64\r
+ {BDF81D39-F7E1-4B34-80E5-4B979E10629F}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {BDF81D39-F7E1-4B34-80E5-4B979E10629F}.Debug|Win32.Build.0 = Debug|Win32\r
+ {BDF81D39-F7E1-4B34-80E5-4B979E10629F}.Debug|x64.ActiveCfg = Debug|x64\r
+ {BDF81D39-F7E1-4B34-80E5-4B979E10629F}.Debug|x64.Build.0 = Debug|x64\r
+ {BDF81D39-F7E1-4B34-80E5-4B979E10629F}.Release|Win32.ActiveCfg = Release|Win32\r
+ {BDF81D39-F7E1-4B34-80E5-4B979E10629F}.Release|Win32.Build.0 = Release|Win32\r
+ {BDF81D39-F7E1-4B34-80E5-4B979E10629F}.Release|x64.ActiveCfg = Release|x64\r
+ {BDF81D39-F7E1-4B34-80E5-4B979E10629F}.Release|x64.Build.0 = Release|x64\r
+ {99FC597F-539A-49BB-9B9A-6C1EF802A17B}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {99FC597F-539A-49BB-9B9A-6C1EF802A17B}.Debug|Win32.Build.0 = Debug|Win32\r
+ {99FC597F-539A-49BB-9B9A-6C1EF802A17B}.Debug|x64.ActiveCfg = Debug|x64\r
+ {99FC597F-539A-49BB-9B9A-6C1EF802A17B}.Debug|x64.Build.0 = Debug|x64\r
+ {99FC597F-539A-49BB-9B9A-6C1EF802A17B}.Release|Win32.ActiveCfg = Release|Win32\r
+ {99FC597F-539A-49BB-9B9A-6C1EF802A17B}.Release|Win32.Build.0 = Release|Win32\r
+ {99FC597F-539A-49BB-9B9A-6C1EF802A17B}.Release|x64.ActiveCfg = Release|x64\r
+ {99FC597F-539A-49BB-9B9A-6C1EF802A17B}.Release|x64.Build.0 = Release|x64\r
+ {C3FCC23B-54CC-4447-B9A7-CE095EA60B16}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {C3FCC23B-54CC-4447-B9A7-CE095EA60B16}.Debug|Win32.Build.0 = Debug|Win32\r
+ {C3FCC23B-54CC-4447-B9A7-CE095EA60B16}.Debug|x64.ActiveCfg = Debug|x64\r
+ {C3FCC23B-54CC-4447-B9A7-CE095EA60B16}.Debug|x64.Build.0 = Debug|x64\r
+ {C3FCC23B-54CC-4447-B9A7-CE095EA60B16}.Release|Win32.ActiveCfg = Release|Win32\r
+ {C3FCC23B-54CC-4447-B9A7-CE095EA60B16}.Release|Win32.Build.0 = Release|Win32\r
+ {C3FCC23B-54CC-4447-B9A7-CE095EA60B16}.Release|x64.ActiveCfg = Release|x64\r
+ {C3FCC23B-54CC-4447-B9A7-CE095EA60B16}.Release|x64.Build.0 = Release|x64\r
+ {980282CA-EAEA-4F33-8982-39DAF018978A}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {980282CA-EAEA-4F33-8982-39DAF018978A}.Debug|Win32.Build.0 = Debug|Win32\r
+ {980282CA-EAEA-4F33-8982-39DAF018978A}.Debug|x64.ActiveCfg = Debug|x64\r
+ {980282CA-EAEA-4F33-8982-39DAF018978A}.Debug|x64.Build.0 = Debug|x64\r
+ {980282CA-EAEA-4F33-8982-39DAF018978A}.Release|Win32.ActiveCfg = Release|Win32\r
+ {980282CA-EAEA-4F33-8982-39DAF018978A}.Release|Win32.Build.0 = Release|Win32\r
+ {980282CA-EAEA-4F33-8982-39DAF018978A}.Release|x64.ActiveCfg = Release|x64\r
+ {980282CA-EAEA-4F33-8982-39DAF018978A}.Release|x64.Build.0 = Release|x64\r
+ {27AFA4CD-917A-4155-9F61-025094A97933}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {27AFA4CD-917A-4155-9F61-025094A97933}.Debug|Win32.Build.0 = Debug|Win32\r
+ {27AFA4CD-917A-4155-9F61-025094A97933}.Debug|x64.ActiveCfg = Debug|x64\r
+ {27AFA4CD-917A-4155-9F61-025094A97933}.Debug|x64.Build.0 = Debug|x64\r
+ {27AFA4CD-917A-4155-9F61-025094A97933}.Release|Win32.ActiveCfg = Release|Win32\r
+ {27AFA4CD-917A-4155-9F61-025094A97933}.Release|Win32.Build.0 = Release|Win32\r
+ {27AFA4CD-917A-4155-9F61-025094A97933}.Release|x64.ActiveCfg = Release|x64\r
+ {27AFA4CD-917A-4155-9F61-025094A97933}.Release|x64.Build.0 = Release|x64\r
+ {5016D295-CC2F-4149-80C2-71D7A33791B2}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {5016D295-CC2F-4149-80C2-71D7A33791B2}.Debug|Win32.Build.0 = Debug|Win32\r
+ {5016D295-CC2F-4149-80C2-71D7A33791B2}.Debug|x64.ActiveCfg = Debug|x64\r
+ {5016D295-CC2F-4149-80C2-71D7A33791B2}.Debug|x64.Build.0 = Debug|x64\r
+ {5016D295-CC2F-4149-80C2-71D7A33791B2}.Release|Win32.ActiveCfg = Release|Win32\r
+ {5016D295-CC2F-4149-80C2-71D7A33791B2}.Release|Win32.Build.0 = Release|Win32\r
+ {5016D295-CC2F-4149-80C2-71D7A33791B2}.Release|x64.ActiveCfg = Release|x64\r
+ {5016D295-CC2F-4149-80C2-71D7A33791B2}.Release|x64.Build.0 = Release|x64\r
+ {AA52A332-735D-4177-8CA6-842018E60DED}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {AA52A332-735D-4177-8CA6-842018E60DED}.Debug|Win32.Build.0 = Debug|Win32\r
+ {AA52A332-735D-4177-8CA6-842018E60DED}.Debug|x64.ActiveCfg = Debug|x64\r
+ {AA52A332-735D-4177-8CA6-842018E60DED}.Debug|x64.Build.0 = Debug|x64\r
+ {AA52A332-735D-4177-8CA6-842018E60DED}.Release|Win32.ActiveCfg = Release|Win32\r
+ {AA52A332-735D-4177-8CA6-842018E60DED}.Release|Win32.Build.0 = Release|Win32\r
+ {AA52A332-735D-4177-8CA6-842018E60DED}.Release|x64.ActiveCfg = Release|x64\r
+ {AA52A332-735D-4177-8CA6-842018E60DED}.Release|x64.Build.0 = Release|x64\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F67}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F67}.Debug|Win32.Build.0 = Debug|Win32\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F67}.Debug|x64.ActiveCfg = Debug|x64\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F67}.Debug|x64.Build.0 = Debug|x64\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F67}.Release|Win32.ActiveCfg = Release|Win32\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F67}.Release|Win32.Build.0 = Release|Win32\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F67}.Release|x64.ActiveCfg = Release|x64\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F67}.Release|x64.Build.0 = Release|x64\r
+ {41ABBEB6-693A-4E63-9DD7-EAAC437BC173}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {41ABBEB6-693A-4E63-9DD7-EAAC437BC173}.Debug|Win32.Build.0 = Debug|Win32\r
+ {41ABBEB6-693A-4E63-9DD7-EAAC437BC173}.Debug|x64.ActiveCfg = Debug|x64\r
+ {41ABBEB6-693A-4E63-9DD7-EAAC437BC173}.Debug|x64.Build.0 = Debug|x64\r
+ {41ABBEB6-693A-4E63-9DD7-EAAC437BC173}.Release|Win32.ActiveCfg = Release|Win32\r
+ {41ABBEB6-693A-4E63-9DD7-EAAC437BC173}.Release|Win32.Build.0 = Release|Win32\r
+ {41ABBEB6-693A-4E63-9DD7-EAAC437BC173}.Release|x64.ActiveCfg = Release|x64\r
+ {41ABBEB6-693A-4E63-9DD7-EAAC437BC173}.Release|x64.Build.0 = Release|x64\r
+ {04658465-64F9-4F06-B7A7-D40F6EDF26E4}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {04658465-64F9-4F06-B7A7-D40F6EDF26E4}.Debug|Win32.Build.0 = Debug|Win32\r
+ {04658465-64F9-4F06-B7A7-D40F6EDF26E4}.Debug|x64.ActiveCfg = Debug|x64\r
+ {04658465-64F9-4F06-B7A7-D40F6EDF26E4}.Debug|x64.Build.0 = Debug|x64\r
+ {04658465-64F9-4F06-B7A7-D40F6EDF26E4}.Release|Win32.ActiveCfg = Release|Win32\r
+ {04658465-64F9-4F06-B7A7-D40F6EDF26E4}.Release|Win32.Build.0 = Release|Win32\r
+ {04658465-64F9-4F06-B7A7-D40F6EDF26E4}.Release|x64.ActiveCfg = Release|x64\r
+ {04658465-64F9-4F06-B7A7-D40F6EDF26E4}.Release|x64.Build.0 = Release|x64\r
+ EndGlobalSection\r
+ GlobalSection(SolutionProperties) = preSolution\r
+ HideSolutionNode = FALSE\r
+ EndGlobalSection\r
+EndGlobal\r
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Sources">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Headers">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+#include "jsonglib.vs10.sourcefiles.filters"
+ </ItemGroup>
+ <ItemGroup>
+ <CustomBuild Include="..\config.h.win32"><Filter>Resource Files</Filter></CustomBuild>
+ </ItemGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{469DB0A8-E33E-4112-A38C-52A168ECDC03}</ProjectGuid>
+ <RootNamespace>jsonglib</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-gen-srcs.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-gen-srcs.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-gen-srcs.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-gen-srcs.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <PreBuildEvent>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;$(JsonGlibDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ <ForcedIncludeFiles>%(ForcedIncludeFiles)</ForcedIncludeFiles>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(JsonGlibDllPrefix)$(ProjectName)$(JsonGlibDllSuffix).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(ApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <PreBuildEvent>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;$(JsonGlibDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(JsonGlibDllPrefix)$(ProjectName)$(JsonGlibDllSuffix).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(ApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <PreBuildEvent>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>$(JsonGlibDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <ForcedIncludeFiles>%(ForcedIncludeFiles)</ForcedIncludeFiles>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(JsonGlibDllPrefix)$(ProjectName)$(JsonGlibDllSuffix).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(ApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <PreBuildEvent>
+ </PreBuildEvent>
+ <ClCompile>
+ <PreprocessorDefinitions>$(JsonGlibDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(JsonGlibDllPrefix)$(ProjectName)$(JsonGlibDllSuffix).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(ApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+#include "jsonglib.vs10.sourcefiles"
+ </ItemGroup>
+ <ItemGroup>
+ <CustomBuild Include="..\config.h.win32">
+ <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Copying config.h from config.h.win32...</Message>
+ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(CopyConfigH)</Command>
+ <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\..\config.h;%(Outputs)</Outputs>
+ <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Copying config.h from config.h.win32...</Message>
+ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(CopyConfigH)</Command>
+ <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\..\config.h;%(Outputs)</Outputs>
+ <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Copying config.h from config.h.win32...</Message>
+ <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(CopyConfigH)</Command>
+ <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\..\config.h;%(Outputs)</Outputs>
+ <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Copying config.h from config.h.win32...</Message>
+ <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(CopyConfigH)</Command>
+ <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\..\config.h;%(Outputs)</Outputs>
+ </CustomBuild>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{04658465-64F9-4F06-B7A7-D40F6EDF26E3}</ProjectGuid>
+ <RootNamespace>node</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ <ForcedIncludeFiles>%(ForcedIncludeFiles)</ForcedIncludeFiles>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>CompileAsC</CompileAs>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <PreBuildEvent>
+ <Command>
+ </Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <ForcedIncludeFiles>%(ForcedIncludeFiles)</ForcedIncludeFiles>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>CompileAsC</CompileAs>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\json-glib\tests\node.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="json-glib.vcxproj">
+ <Project>{469db0a8-e33e-4112-a38c-52a168ecdc03}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Sources">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\json-glib\tests\node.c">
+ <Filter>Sources</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{83A444A0-D80E-40E0-90CF-5876E1AA97DB}</ProjectGuid>
+ <RootNamespace>object</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ <ForcedIncludeFiles>%(ForcedIncludeFiles)</ForcedIncludeFiles>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>CompileAsC</CompileAs>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <PreBuildEvent>
+ <Command>
+ </Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <ForcedIncludeFiles>%(ForcedIncludeFiles)</ForcedIncludeFiles>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>CompileAsC</CompileAs>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\json-glib\tests\object.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="json-glib.vcxproj">
+ <Project>{469db0a8-e33e-4112-a38c-52a168ecdc03}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Sources">
+ <UniqueIdentifier>{48deb3fb-fef6-49a6-82dc-c39cb01b4098}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\json-glib\tests\object.c">
+ <Filter>Sources</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{BDF81D39-F7E1-4B34-80E5-4B979E10629F}</ProjectGuid>
+ <RootNamespace>parser</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ <ForcedIncludeFiles>%(ForcedIncludeFiles)</ForcedIncludeFiles>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>CompileAsC</CompileAs>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <PreBuildEvent>
+ <Command>
+ </Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <ForcedIncludeFiles>%(ForcedIncludeFiles)</ForcedIncludeFiles>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>CompileAsC</CompileAs>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\json-glib\tests\parser.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="json-glib.vcxproj">
+ <Project>{469db0a8-e33e-4112-a38c-52a168ecdc03}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Sources">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\json-glib\tests\parser.c">
+ <Filter>Sources</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{FF640D73-9BCD-4B75-B63F-75175A3C9F67}</ProjectGuid>
+ <RootNamespace>path</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>CompileAsC</CompileAs>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>CompileAsC</CompileAs>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\json-glib\tests\path.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="json-glib.vcxproj">
+ <Project>{469db0a8-e33e-4112-a38c-52a168ecdc03}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Sources">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\json-glib\tests\path.c">
+ <Filter>Sources</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{99FC597F-539A-49BB-9B9A-6C1EF802A17B}</ProjectGuid>
+ <RootNamespace>reader</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ <ForcedIncludeFiles>%(ForcedIncludeFiles)</ForcedIncludeFiles>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>CompileAsC</CompileAs>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <PreBuildEvent>
+ <Command>
+ </Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <ForcedIncludeFiles>%(ForcedIncludeFiles)</ForcedIncludeFiles>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>CompileAsC</CompileAs>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\json-glib\tests\reader.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="json-glib.vcxproj">
+ <Project>{469db0a8-e33e-4112-a38c-52a168ecdc03}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Sources">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\json-glib\tests\reader.c">
+ <Filter>Sources</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{C3FCC23B-54CC-4447-B9A7-CE095EA60B16}</ProjectGuid>
+ <RootNamespace>serializecomplex</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ <ForcedIncludeFiles>%(ForcedIncludeFiles)</ForcedIncludeFiles>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>CompileAsC</CompileAs>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <PreBuildEvent>
+ <Command>
+ </Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>CompileAsC</CompileAs>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\json-glib\tests\serialize-complex.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="json-glib.vcxproj">
+ <Project>{469db0a8-e33e-4112-a38c-52a168ecdc03}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Sources">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\json-glib\tests\serialize-complex.c">
+ <Filter>Sources</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{980282CA-EAEA-4F33-8982-39DAF018978A}</ProjectGuid>
+ <RootNamespace>serializefull</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ <ForcedIncludeFiles>%(ForcedIncludeFiles)</ForcedIncludeFiles>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>CompileAsC</CompileAs>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <PreBuildEvent>
+ <Command>
+ </Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <ForcedIncludeFiles>%(ForcedIncludeFiles)</ForcedIncludeFiles>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>CompileAsC</CompileAs>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\json-glib\tests\serialize-full.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="json-glib.vcxproj">
+ <Project>{469db0a8-e33e-4112-a38c-52a168ecdc03}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Sources">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\json-glib\tests\serialize-full.c">
+ <Filter>Sources</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{27AFA4CD-917A-4155-9F61-025094A97933}</ProjectGuid>
+ <RootNamespace>serializesimple</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="json-glib-build-defines.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ <ForcedIncludeFiles>%(ForcedIncludeFiles)</ForcedIncludeFiles>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>CompileAsC</CompileAs>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <PreBuildEvent>
+ <Command>
+ </Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <ForcedIncludeFiles>%(ForcedIncludeFiles)</ForcedIncludeFiles>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>CompileAsC</CompileAs>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\json-glib\tests\serialize-simple.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="json-glib.vcxproj">
+ <Project>{469db0a8-e33e-4112-a38c-52a168ecdc03}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Sources">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\json-glib\tests\serialize-simple.c">
+ <Filter>Sources</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project>
--- /dev/null
+NULL =
+
+EXTRA_DIST = \
+ json-glib.sln \
+ json-glib-version-paths.vsprops \
+ json-glib-build-defines.vsprops \
+ json-glib-gen-srcs.vsprops \
+ json-glib-install.vsprops \
+ json-glib.vcproj \
+ json-glib.vcprojin \
+ json-glib-validate.vcproj \
+ json-glib-format.vcproj \
+ install.vcproj \
+ README.txt \
+ array.vcproj \
+ boxed.vcproj \
+ builder.vcproj \
+ generator.vcproj \
+ gvariant.vcproj \
+ invalid.vcproj \
+ node.vcproj \
+ object.vcproj \
+ parser.vcproj \
+ path.vcproj \
+ reader.vcproj \
+ serialize-complex.vcproj \
+ serialize-full.vcproj \
+ serialize-simple.vcproj \
+ $(NULL)
--- /dev/null
+Please refer to the following GNOME Live! page for more detailed\r
+instructions on building JSON-GLib and its dependencies with Visual C++:\r
+\r
+https://live.gnome.org/GTK%2B/Win32/MSVCCompilationOfGTKStack\r
+\r
+This VS9 solution and the projects it includes are intended to be used\r
+in a JSON-GLib source tree unpacked from a tarball. In a git checkout you\r
+first need to use some Unix-like environment or manual work to expand\r
+the .in files needed, mainly config.h.win32.in into config.h.win32.\r
+You will also need to expand json-glib.vcprojin here into json-glib.vcproj.\r
+\r
+The dependencies for this package are gettext-runtime (libintl), GLib*,\r
+ZLib at the minimum.\r
+\r
+For the Dependencies, you may either:\r
+\r
+a) look for all of the dependencies (except GLib*) under\r
+\r
+ http://ftp.gnome.org/pub/GNOME/binaries/win32/dependencies/ (32-bit) -OR-\r
+ http://ftp.gnome.org/pub/GNOME/binaries/win64/dependencies/ (64-bit)\r
+\r
+ Please use the latest versions of these libraries that are available there,\r
+ these are packaged by Tor Lillqvist, which are built with MinGW/GCC.\r
+ Please see b) below regarding the build of GLib*\r
+\r
+-OR-\r
+\r
+b) Build them yourself with VS9 (but you may most probably wish to get\r
+ gettext-runtime from the URL(s) mentioned in a)). Use the latest\r
+ stable versions for them (you may need to get the latest unstable version of\r
+ GLib if you are using an unstable version of JSON-GLib):\r
+\r
+ GLib*: Grab the latest sources from http://www.gtk.org under "Download"\r
+ (stable only-please make a search for the latest unstable versions)\r
+ ZLib: http://www.zlib.net\r
+\r
+ The above 2 packages all have supported mechanisms (Makefiles and/or Project\r
+ Files) for building under VS9 (upgrade the Project Files from earlier VS\r
+ versions will do for these, when applicable). It is recommended that ZLib\r
+ is built using the win32/Makefile.msc makefile with VS9 with the ASM routines\r
+ to avoid linking problems (copy zdll.lib to zlib1.lib[Release] or to zlib1d.lib\r
+ [Debug] after completion of compilation)-see win32/Makefile.msc in ZLib for\r
+ more details.\r
+\r
+* This GLib refers to a build that is built by VS9\r
+\r
+Set up the source tree as follows under some arbitrary top\r
+folder <root>:\r
+\r
+<root>\json-glib\<this-json-glib-source-tree>\r
+<root>\vs9\<PlatformName>\r
+\r
+*this* file you are now reading is thus located at\r
+<root>\json-glib\<this-json-glib-source-tree>\build\win32\vs9\README.\r
+\r
+<PlatformName> is either Win32 or x64, as in the VS9 project files.\r
+\r
+You should unpack the <dependent-package>-dev and <dependent-packge> (runtime)\r
+into <root>\vs9\<PlatformName>, if you download any of the packages from\r
+\r
+http://ftp.gnome.org/pub/GNOME/binaries/win32/dependencies/ (32-bit) -OR-\r
+http://ftp.gnome.org/pub/GNOME/binaries/win64/dependencies/ (64-bit)\r
+\r
+so that for instance libintl.h end up at \r
+<root>\vs9\<PlatformName>\include\libintl.h.\r
+\r
+If you build any of the dependencies yourselves, copy the: \r
+-DLLs and EXEs into <root>\vs9\<PlatformName>\bin\r
+-headers into <root>\vs9\<PlatformName>\include\\r
+-LIBs into <root>\vs9\<PlatformName>\lib\r
+\r
+If you have not built GLib with VS9 and placed the LIBs and headers in a\r
+place where VS9 can find them automatically, you should also uncompress\r
+your GLib sources in <root>\ and build it from there, following the\r
+instructions in <root>\glib<-version>\build\win32\vs9, so that the required\r
+headers, EXEs, DLLs and LIBs will end up in\r
+<root>\vs9\<PlatformName>\include\glib-2.0 (headers)\r
+<root>\vs9\<PlatformName>\lib (LIBs, also glib-2.0/include/glibconfig.h)\r
+<root>\vs9\<PlatformName>\bin (EXEs/DLLs)\r
+respectively.\r
+\r
+After the build of JSON-GLib, the "install" project will copy build results\r
+and headers into their appropriate location under <root>\vs9\<PlatformName>.\r
+For instance, built DLLs go into <root>\vs9\<PlatformName>\bin, built LIBs into\r
+<root>\vs9\<PlatformName>\lib and JSON-GLib headers into\r
+<root>\vs9\<PlatformName>\include\json-glib-1.0. This is then from where\r
+project files higher in the stack are supposed to look for them, not\r
+from a specific JSON-GLib source tree.\r
+\r
+--Chun-wei Fan <fanc999@yahoo.com.tw>\r
+--(adapted from the GLib VS9 README.txt file originally written by Tor Lillqvist)\r
--- /dev/null
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="array"
+ ProjectGUID="{9B2921C9-577F-418D-8341-6D79771DDCEC}"
+ RootNamespace="array"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ ForcedIncludeFiles=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ ForcedIncludeFiles=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies=""
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File RelativePath="..\..\..\json-glib\tests\array.c" />
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
--- /dev/null
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="boxed"
+ ProjectGUID="{5016D295-CC2F-4149-80C2-71D7A33791B2}"
+ RootNamespace="boxed"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ ForcedIncludeFiles=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ ForcedIncludeFiles=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies=""
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File RelativePath="..\..\..\json-glib\tests\boxed.c" />
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
--- /dev/null
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="builder"
+ ProjectGUID="{B7D32B02-3481-4A6E-8E0F-B43887F348A8}"
+ RootNamespace="builder"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ ForcedIncludeFiles=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ ForcedIncludeFiles=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies=""
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File RelativePath="..\..\..\json-glib\tests\builder.c" />
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
--- /dev/null
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="generator"
+ ProjectGUID="{E84F9D53-C9F7-4D7D-B8D0-AFE8BE3E7B7D}"
+ RootNamespace="generator"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ ForcedIncludeFiles=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ ForcedIncludeFiles=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies=""
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File RelativePath="..\..\..\json-glib\tests\generator.c" />
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
--- /dev/null
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="gvariant"
+ ProjectGUID="{AA52A332-735D-4177-8CA6-842018E60DED}"
+ RootNamespace="gvariant"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File RelativePath="..\..\..\json-glib\tests\gvariant.c" />
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
--- /dev/null
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="install"
+ ProjectGUID="{41ABBEB6-693A-4E63-9DD7-EAAC437BC173}"
+ RootNamespace="install"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="10"
+ InheritedPropertySheets=".\json-glib-install.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="$(JsonGlibDoInstall)"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="10"
+ InheritedPropertySheets=".\json-glib-install.vsprops"
+ CharacterSet="2"
+ DeleteExtensionsOnClean=""
+ >
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="$(JsonGlibDoInstall)"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="10"
+ InheritedPropertySheets=".\json-glib-install.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="$(JsonGlibDoInstall)"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="10"
+ InheritedPropertySheets=".\json-glib-install.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ DeleteExtensionsOnClean=""
+ >
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="$(JsonGlibDoInstall)"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
--- /dev/null
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="invalid"
+ ProjectGUID="{04658465-64F9-4F06-B7A7-D40F6EDF26E4}"
+ RootNamespace="invalid"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ ForcedIncludeFiles=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ ForcedIncludeFiles=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies=""
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File RelativePath="..\..\..\json-glib\tests\invalid.c" />
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
--- /dev/null
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioPropertySheet
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="jsonglibbuilddefinesprops"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)\$(PlatformName)\bin"
+ IntermediateDirectory="$(SolutionDir)$(ConfigurationName)\$(PlatformName)\obj\$(ProjectName)"
+ InheritedPropertySheets=".\json-glib-version-paths.vsprops"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\..;..\..\..\json-glib;$(GlibEtcInstallRoot)\include;$(GlibEtcInstallRoot)\include\glib-2.0;$(GlibEtcInstallRoot)\lib\glib-2.0\include"
+ PreprocessorDefinitions="HAVE_CONFIG_H"
+ ForcedIncludeFiles="msvc_recommended_pragmas.h"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="glib-2.0.lib gobject-2.0.lib gio-2.0.lib"
+ AdditionalLibraryDirectories="$(GlibEtcInstallRoot)\lib"
+ />
+ <UserMacro
+ Name="JsonGlibDefines"
+ Value="JSON_COMPILATION=1;G_LOG_DOMAIN=\"Json\";JSON_LOCALEDIR=\"/dummy\""
+ />
+</VisualStudioPropertySheet>
--- /dev/null
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="json-glib-format"
+ ProjectGUID="{FF640D73-9BCD-4B75-B63F-75175A3C9F69}"
+ RootNamespace="jsonglibformat"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG;$(JsonGlibDefines)"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="intl.lib"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG;$(JsonGlibDefines)"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="intl.lib"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions="$(JsonGlibDefines)"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="intl.lib"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="$(JsonGlibDefines)"
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="intl.lib"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File RelativePath="..\..\..\json-glib\json-glib-format.c" />
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
--- /dev/null
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioPropertySheet
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="jsonglibgensrcsprops"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ >
+ <UserMacro
+ Name="CopyConfigH"
+ Value="copy ..\config.h.win32 ..\..\..\config.h"
+ />
+</VisualStudioPropertySheet>
--- /dev/null
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioPropertySheet
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="jsonglibinstallprops"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ >
+ <UserMacro
+ Name="JsonGlibDoInstall"
+ Value="
+mkdir $(CopyDir)

+mkdir $(CopyDir)\bin

+mkdir $(CopyDir)\lib

+
+copy $(SolutionDir)$(ConfigurationName)\$(PlatformName)\bin\*.lib $(CopyDir)\lib

+
+copy $(SolutionDir)$(ConfigurationName)\$(PlatformName)\bin\$(JsonGlibDllPrefix)json-glib$(JsonGlibDllSuffix).dll $(CopyDir)\bin

+copy $(SolutionDir)$(ConfigurationName)\$(PlatformName)\bin\json-glib-format.exe $(CopyDir)\bin

+copy $(SolutionDir)$(ConfigurationName)\$(PlatformName)\bin\json-glib-validate.exe $(CopyDir)\bin

+
+mkdir $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib

+
+copy ..\..\..\json-glib\json-enum-types.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib

+copy ..\..\..\json-glib\json-version.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib

+copy ..\..\..\json-glib\json-glib.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib

+
+copy ..\..\..\json-glib\json-builder.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib

+copy ..\..\..\json-glib\json-generator.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib

+copy ..\..\..\json-glib\json-gobject.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib

+copy ..\..\..\json-glib\json-gvariant.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib

+copy ..\..\..\json-glib\json-path.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib

+copy ..\..\..\json-glib\json-parser.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib

+copy ..\..\..\json-glib\json-reader.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib

+copy ..\..\..\json-glib\json-types.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib

+copy ..\..\..\json-glib\json-version-macros.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib

+"
+ />
+</VisualStudioPropertySheet>
--- /dev/null
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="json-glib-validate"
+ ProjectGUID="{FF640D73-9BCD-4B75-B63F-75175A3C9F68}"
+ RootNamespace="jsonglibvalidate"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG;$(JsonGlibDefines)"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="intl.lib"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG;$(JsonGlibDefines)"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="intl.lib"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions="$(JsonGlibDefines)"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="intl.lib"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="$(JsonGlibDefines)"
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="intl.lib"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File RelativePath="..\..\..\json-glib\json-glib-validate.c" />
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
--- /dev/null
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioPropertySheet
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="jsonglibversionpathsprops"
+ >
+ <UserMacro
+ Name="VSVer"
+ Value="9"
+ />
+ <UserMacro
+ Name="GlibEtcInstallRoot"
+ Value="$(SolutionDir)\..\..\..\..\vs$(VSVer)\$(PlatformName)"
+ />
+ <UserMacro
+ Name="CopyDir"
+ Value="$(GlibEtcInstallRoot)"
+ />
+ <UserMacro
+ Name="DefDir"
+ Value="$(SolutionDir)$(ConfigurationName)\$(PlatformName)\obj\$(ProjectName)"
+ />
+ <UserMacro
+ Name="ApiVersion"
+ Value="1.0"
+ />
+ <UserMacro
+ Name="JsonGlibLibtoolCompatibleDllPrefix"
+ Value="lib"
+ />
+ <UserMacro
+ Name="JsonGlibLibtoolCompatibleDllSuffix"
+ Value="-1.0-0"
+ />
+ <UserMacro
+ Name="JsonGlibSeparateVSDllPrefix"
+ Value=""
+ />
+ <UserMacro
+ Name="JsonGlibSeparateVSDllSuffix"
+ Value="-1-vs$(VSVer)"
+ />
+ <!-- Change these two to JsonGlibLibtoolCompatibleDllPrefix and
+ JsonGlibLibtoolCompatibleDllSuffix if that is what you want -->
+ <UserMacro
+ Name="JsonGlibDllPrefix"
+ Value="$(JsonGlibSeparateVSDllPrefix)"
+ />
+ <UserMacro
+ Name="JsonGlibDllSuffix"
+ Value="$(JsonGlibSeparateVSDllSuffix)"
+ />
+</VisualStudioPropertySheet>
--- /dev/null
+\r
+Microsoft Visual Studio Solution File, Format Version 10.00\r
+# Visual Studio 2008\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "json-glib", "json-glib.vcproj", "{469DB0A8-E33E-4112-A38C-52A168ECDC03}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "json-glib-validate", "json-glib-validate.vcproj", "{FF640D73-9BCD-4B75-B63F-75175A3C9F68}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {469DB0A8-E33E-4112-A38C-52A168ECDC03} = {469DB0A8-E33E-4112-A38C-52A168ECDC03}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "json-glib-format", "json-glib-format.vcproj", "{FF640D73-9BCD-4B75-B63F-75175A3C9F69}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {469DB0A8-E33E-4112-A38C-52A168ECDC03} = {469DB0A8-E33E-4112-A38C-52A168ECDC03}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "array", "array.vcproj", "{9B2921C9-577F-418D-8341-6D79771DDCEC}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {469DB0A8-E33E-4112-A38C-52A168ECDC03} = {469DB0A8-E33E-4112-A38C-52A168ECDC03}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "builder", "builder.vcproj", "{B7D32B02-3481-4A6E-8E0F-B43887F348A8}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {469DB0A8-E33E-4112-A38C-52A168ECDC03} = {469DB0A8-E33E-4112-A38C-52A168ECDC03}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "generator", "generator.vcproj", "{E84F9D53-C9F7-4D7D-B8D0-AFE8BE3E7B7D}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {469DB0A8-E33E-4112-A38C-52A168ECDC03} = {469DB0A8-E33E-4112-A38C-52A168ECDC03}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "node", "node.vcproj", "{04658465-64F9-4F06-B7A7-D40F6EDF26E3}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {469DB0A8-E33E-4112-A38C-52A168ECDC03} = {469DB0A8-E33E-4112-A38C-52A168ECDC03}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "object", "object.vcproj", "{83A444A0-D80E-40E0-90CF-5876E1AA97DB}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {469DB0A8-E33E-4112-A38C-52A168ECDC03} = {469DB0A8-E33E-4112-A38C-52A168ECDC03}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "parser", "parser.vcproj", "{BDF81D39-F7E1-4B34-80E5-4B979E10629F}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {469DB0A8-E33E-4112-A38C-52A168ECDC03} = {469DB0A8-E33E-4112-A38C-52A168ECDC03}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "reader", "reader.vcproj", "{99FC597F-539A-49BB-9B9A-6C1EF802A17B}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {469DB0A8-E33E-4112-A38C-52A168ECDC03} = {469DB0A8-E33E-4112-A38C-52A168ECDC03}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "serialize-complex", "serialize-complex.vcproj", "{C3FCC23B-54CC-4447-B9A7-CE095EA60B16}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {469DB0A8-E33E-4112-A38C-52A168ECDC03} = {469DB0A8-E33E-4112-A38C-52A168ECDC03}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "serialize-full", "serialize-full.vcproj", "{980282CA-EAEA-4F33-8982-39DAF018978A}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {469DB0A8-E33E-4112-A38C-52A168ECDC03} = {469DB0A8-E33E-4112-A38C-52A168ECDC03}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "serialize-simple", "serialize-simple.vcproj", "{27AFA4CD-917A-4155-9F61-025094A97933}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {469DB0A8-E33E-4112-A38C-52A168ECDC03} = {469DB0A8-E33E-4112-A38C-52A168ECDC03}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "boxed", "boxed.vcproj", "{5016D295-CC2F-4149-80C2-71D7A33791B2}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {469DB0A8-E33E-4112-A38C-52A168ECDC03} = {469DB0A8-E33E-4112-A38C-52A168ECDC03}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gvariant", "gvariant.vcproj", "{AA52A332-735D-4177-8CA6-842018E60DED}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {469DB0A8-E33E-4112-A38C-52A168ECDC03} = {469DB0A8-E33E-4112-A38C-52A168ECDC03}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "path", "path.vcproj", "{FF640D73-9BCD-4B75-B63F-75175A3C9F67}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {469DB0A8-E33E-4112-A38C-52A168ECDC03} = {469DB0A8-E33E-4112-A38C-52A168ECDC03}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "invalid", "invalid.vcproj", "{04658465-64F9-4F06-B7A7-D40F6EDF26E4}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {469DB0A8-E33E-4112-A38C-52A168ECDC03} = {469DB0A8-E33E-4112-A38C-52A168ECDC03}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "install", "install.vcproj", "{41ABBEB6-693A-4E63-9DD7-EAAC437BC173}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {469DB0A8-E33E-4112-A38C-52A168ECDC03} = {469DB0A8-E33E-4112-A38C-52A168ECDC03}\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F68} = {FF640D73-9BCD-4B75-B63F-75175A3C9F68}\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F69} = {FF640D73-9BCD-4B75-B63F-75175A3C9F69}\r
+ EndProjectSection\r
+EndProject\r
+Global\r
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+ Debug|Win32 = Debug|Win32\r
+ Debug|x64 = Debug|x64\r
+ Release|Win32 = Release|Win32\r
+ Release|x64 = Release|x64\r
+ EndGlobalSection\r
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+ {469DB0A8-E33E-4112-A38C-52A168ECDC03}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {469DB0A8-E33E-4112-A38C-52A168ECDC03}.Debug|Win32.Build.0 = Debug|Win32\r
+ {469DB0A8-E33E-4112-A38C-52A168ECDC03}.Debug|x64.ActiveCfg = Debug|x64\r
+ {469DB0A8-E33E-4112-A38C-52A168ECDC03}.Debug|x64.Build.0 = Debug|x64\r
+ {469DB0A8-E33E-4112-A38C-52A168ECDC03}.Release|Win32.ActiveCfg = Release|Win32\r
+ {469DB0A8-E33E-4112-A38C-52A168ECDC03}.Release|Win32.Build.0 = Release|Win32\r
+ {469DB0A8-E33E-4112-A38C-52A168ECDC03}.Release|x64.ActiveCfg = Release|x64\r
+ {469DB0A8-E33E-4112-A38C-52A168ECDC03}.Release|x64.Build.0 = Release|x64\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F68}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F68}.Debug|Win32.Build.0 = Debug|Win32\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F68}.Debug|x64.ActiveCfg = Debug|x64\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F68}.Debug|x64.Build.0 = Debug|x64\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F68}.Release|Win32.ActiveCfg = Release|Win32\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F68}.Release|Win32.Build.0 = Release|Win32\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F68}.Release|x64.ActiveCfg = Release|x64\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F68}.Release|x64.Build.0 = Release|x64\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F69}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F69}.Debug|Win32.Build.0 = Debug|Win32\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F69}.Debug|x64.ActiveCfg = Debug|x64\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F69}.Debug|x64.Build.0 = Debug|x64\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F69}.Release|Win32.ActiveCfg = Release|Win32\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F69}.Release|Win32.Build.0 = Release|Win32\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F69}.Release|x64.ActiveCfg = Release|x64\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F69}.Release|x64.Build.0 = Release|x64\r
+ {9B2921C9-577F-418D-8341-6D79771DDCEC}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {9B2921C9-577F-418D-8341-6D79771DDCEC}.Debug|Win32.Build.0 = Debug|Win32\r
+ {9B2921C9-577F-418D-8341-6D79771DDCEC}.Debug|x64.ActiveCfg = Debug|x64\r
+ {9B2921C9-577F-418D-8341-6D79771DDCEC}.Debug|x64.Build.0 = Debug|x64\r
+ {9B2921C9-577F-418D-8341-6D79771DDCEC}.Release|Win32.ActiveCfg = Release|Win32\r
+ {9B2921C9-577F-418D-8341-6D79771DDCEC}.Release|Win32.Build.0 = Release|Win32\r
+ {9B2921C9-577F-418D-8341-6D79771DDCEC}.Release|x64.ActiveCfg = Release|x64\r
+ {9B2921C9-577F-418D-8341-6D79771DDCEC}.Release|x64.Build.0 = Release|x64\r
+ {B7D32B02-3481-4A6E-8E0F-B43887F348A8}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {B7D32B02-3481-4A6E-8E0F-B43887F348A8}.Debug|Win32.Build.0 = Debug|Win32\r
+ {B7D32B02-3481-4A6E-8E0F-B43887F348A8}.Debug|x64.ActiveCfg = Debug|x64\r
+ {B7D32B02-3481-4A6E-8E0F-B43887F348A8}.Debug|x64.Build.0 = Debug|x64\r
+ {B7D32B02-3481-4A6E-8E0F-B43887F348A8}.Release|Win32.ActiveCfg = Release|Win32\r
+ {B7D32B02-3481-4A6E-8E0F-B43887F348A8}.Release|Win32.Build.0 = Release|Win32\r
+ {B7D32B02-3481-4A6E-8E0F-B43887F348A8}.Release|x64.ActiveCfg = Release|x64\r
+ {B7D32B02-3481-4A6E-8E0F-B43887F348A8}.Release|x64.Build.0 = Release|x64\r
+ {E84F9D53-C9F7-4D7D-B8D0-AFE8BE3E7B7D}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {E84F9D53-C9F7-4D7D-B8D0-AFE8BE3E7B7D}.Debug|Win32.Build.0 = Debug|Win32\r
+ {E84F9D53-C9F7-4D7D-B8D0-AFE8BE3E7B7D}.Debug|x64.ActiveCfg = Debug|x64\r
+ {E84F9D53-C9F7-4D7D-B8D0-AFE8BE3E7B7D}.Debug|x64.Build.0 = Debug|x64\r
+ {E84F9D53-C9F7-4D7D-B8D0-AFE8BE3E7B7D}.Release|Win32.ActiveCfg = Release|Win32\r
+ {E84F9D53-C9F7-4D7D-B8D0-AFE8BE3E7B7D}.Release|Win32.Build.0 = Release|Win32\r
+ {E84F9D53-C9F7-4D7D-B8D0-AFE8BE3E7B7D}.Release|x64.ActiveCfg = Release|x64\r
+ {E84F9D53-C9F7-4D7D-B8D0-AFE8BE3E7B7D}.Release|x64.Build.0 = Release|x64\r
+ {04658465-64F9-4F06-B7A7-D40F6EDF26E3}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {04658465-64F9-4F06-B7A7-D40F6EDF26E3}.Debug|Win32.Build.0 = Debug|Win32\r
+ {04658465-64F9-4F06-B7A7-D40F6EDF26E3}.Debug|x64.ActiveCfg = Debug|x64\r
+ {04658465-64F9-4F06-B7A7-D40F6EDF26E3}.Debug|x64.Build.0 = Debug|x64\r
+ {04658465-64F9-4F06-B7A7-D40F6EDF26E3}.Release|Win32.ActiveCfg = Release|Win32\r
+ {04658465-64F9-4F06-B7A7-D40F6EDF26E3}.Release|Win32.Build.0 = Release|Win32\r
+ {04658465-64F9-4F06-B7A7-D40F6EDF26E3}.Release|x64.ActiveCfg = Release|x64\r
+ {04658465-64F9-4F06-B7A7-D40F6EDF26E3}.Release|x64.Build.0 = Release|x64\r
+ {83A444A0-D80E-40E0-90CF-5876E1AA97DB}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {83A444A0-D80E-40E0-90CF-5876E1AA97DB}.Debug|Win32.Build.0 = Debug|Win32\r
+ {83A444A0-D80E-40E0-90CF-5876E1AA97DB}.Debug|x64.ActiveCfg = Debug|x64\r
+ {83A444A0-D80E-40E0-90CF-5876E1AA97DB}.Debug|x64.Build.0 = Debug|x64\r
+ {83A444A0-D80E-40E0-90CF-5876E1AA97DB}.Release|Win32.ActiveCfg = Release|Win32\r
+ {83A444A0-D80E-40E0-90CF-5876E1AA97DB}.Release|Win32.Build.0 = Release|Win32\r
+ {83A444A0-D80E-40E0-90CF-5876E1AA97DB}.Release|x64.ActiveCfg = Release|x64\r
+ {83A444A0-D80E-40E0-90CF-5876E1AA97DB}.Release|x64.Build.0 = Release|x64\r
+ {BDF81D39-F7E1-4B34-80E5-4B979E10629F}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {BDF81D39-F7E1-4B34-80E5-4B979E10629F}.Debug|Win32.Build.0 = Debug|Win32\r
+ {BDF81D39-F7E1-4B34-80E5-4B979E10629F}.Debug|x64.ActiveCfg = Debug|x64\r
+ {BDF81D39-F7E1-4B34-80E5-4B979E10629F}.Debug|x64.Build.0 = Debug|x64\r
+ {BDF81D39-F7E1-4B34-80E5-4B979E10629F}.Release|Win32.ActiveCfg = Release|Win32\r
+ {BDF81D39-F7E1-4B34-80E5-4B979E10629F}.Release|Win32.Build.0 = Release|Win32\r
+ {BDF81D39-F7E1-4B34-80E5-4B979E10629F}.Release|x64.ActiveCfg = Release|x64\r
+ {BDF81D39-F7E1-4B34-80E5-4B979E10629F}.Release|x64.Build.0 = Release|x64\r
+ {99FC597F-539A-49BB-9B9A-6C1EF802A17B}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {99FC597F-539A-49BB-9B9A-6C1EF802A17B}.Debug|Win32.Build.0 = Debug|Win32\r
+ {99FC597F-539A-49BB-9B9A-6C1EF802A17B}.Debug|x64.ActiveCfg = Debug|x64\r
+ {99FC597F-539A-49BB-9B9A-6C1EF802A17B}.Debug|x64.Build.0 = Debug|x64\r
+ {99FC597F-539A-49BB-9B9A-6C1EF802A17B}.Release|Win32.ActiveCfg = Release|Win32\r
+ {99FC597F-539A-49BB-9B9A-6C1EF802A17B}.Release|Win32.Build.0 = Release|Win32\r
+ {99FC597F-539A-49BB-9B9A-6C1EF802A17B}.Release|x64.ActiveCfg = Release|x64\r
+ {99FC597F-539A-49BB-9B9A-6C1EF802A17B}.Release|x64.Build.0 = Release|x64\r
+ {C3FCC23B-54CC-4447-B9A7-CE095EA60B16}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {C3FCC23B-54CC-4447-B9A7-CE095EA60B16}.Debug|Win32.Build.0 = Debug|Win32\r
+ {C3FCC23B-54CC-4447-B9A7-CE095EA60B16}.Debug|x64.ActiveCfg = Debug|x64\r
+ {C3FCC23B-54CC-4447-B9A7-CE095EA60B16}.Debug|x64.Build.0 = Debug|x64\r
+ {C3FCC23B-54CC-4447-B9A7-CE095EA60B16}.Release|Win32.ActiveCfg = Release|Win32\r
+ {C3FCC23B-54CC-4447-B9A7-CE095EA60B16}.Release|Win32.Build.0 = Release|Win32\r
+ {C3FCC23B-54CC-4447-B9A7-CE095EA60B16}.Release|x64.ActiveCfg = Release|x64\r
+ {C3FCC23B-54CC-4447-B9A7-CE095EA60B16}.Release|x64.Build.0 = Release|x64\r
+ {980282CA-EAEA-4F33-8982-39DAF018978A}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {980282CA-EAEA-4F33-8982-39DAF018978A}.Debug|Win32.Build.0 = Debug|Win32\r
+ {980282CA-EAEA-4F33-8982-39DAF018978A}.Debug|x64.ActiveCfg = Debug|x64\r
+ {980282CA-EAEA-4F33-8982-39DAF018978A}.Debug|x64.Build.0 = Debug|x64\r
+ {980282CA-EAEA-4F33-8982-39DAF018978A}.Release|Win32.ActiveCfg = Release|Win32\r
+ {980282CA-EAEA-4F33-8982-39DAF018978A}.Release|Win32.Build.0 = Release|Win32\r
+ {980282CA-EAEA-4F33-8982-39DAF018978A}.Release|x64.ActiveCfg = Release|x64\r
+ {980282CA-EAEA-4F33-8982-39DAF018978A}.Release|x64.Build.0 = Release|x64\r
+ {27AFA4CD-917A-4155-9F61-025094A97933}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {27AFA4CD-917A-4155-9F61-025094A97933}.Debug|Win32.Build.0 = Debug|Win32\r
+ {27AFA4CD-917A-4155-9F61-025094A97933}.Debug|x64.ActiveCfg = Debug|x64\r
+ {27AFA4CD-917A-4155-9F61-025094A97933}.Debug|x64.Build.0 = Debug|x64\r
+ {27AFA4CD-917A-4155-9F61-025094A97933}.Release|Win32.ActiveCfg = Release|Win32\r
+ {27AFA4CD-917A-4155-9F61-025094A97933}.Release|Win32.Build.0 = Release|Win32\r
+ {27AFA4CD-917A-4155-9F61-025094A97933}.Release|x64.ActiveCfg = Release|x64\r
+ {27AFA4CD-917A-4155-9F61-025094A97933}.Release|x64.Build.0 = Release|x64\r
+ {5016D295-CC2F-4149-80C2-71D7A33791B2}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {5016D295-CC2F-4149-80C2-71D7A33791B2}.Debug|Win32.Build.0 = Debug|Win32\r
+ {5016D295-CC2F-4149-80C2-71D7A33791B2}.Debug|x64.ActiveCfg = Debug|x64\r
+ {5016D295-CC2F-4149-80C2-71D7A33791B2}.Debug|x64.Build.0 = Debug|x64\r
+ {5016D295-CC2F-4149-80C2-71D7A33791B2}.Release|Win32.ActiveCfg = Release|Win32\r
+ {5016D295-CC2F-4149-80C2-71D7A33791B2}.Release|Win32.Build.0 = Release|Win32\r
+ {5016D295-CC2F-4149-80C2-71D7A33791B2}.Release|x64.ActiveCfg = Release|x64\r
+ {5016D295-CC2F-4149-80C2-71D7A33791B2}.Release|x64.Build.0 = Release|x64\r
+ {AA52A332-735D-4177-8CA6-842018E60DED}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {AA52A332-735D-4177-8CA6-842018E60DED}.Debug|Win32.Build.0 = Debug|Win32\r
+ {AA52A332-735D-4177-8CA6-842018E60DED}.Debug|x64.ActiveCfg = Debug|x64\r
+ {AA52A332-735D-4177-8CA6-842018E60DED}.Debug|x64.Build.0 = Debug|x64\r
+ {AA52A332-735D-4177-8CA6-842018E60DED}.Release|Win32.ActiveCfg = Release|Win32\r
+ {AA52A332-735D-4177-8CA6-842018E60DED}.Release|Win32.Build.0 = Release|Win32\r
+ {AA52A332-735D-4177-8CA6-842018E60DED}.Release|x64.ActiveCfg = Release|x64\r
+ {AA52A332-735D-4177-8CA6-842018E60DED}.Release|x64.Build.0 = Release|x64\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F67}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F67}.Debug|Win32.Build.0 = Debug|Win32\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F67}.Debug|x64.ActiveCfg = Debug|x64\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F67}.Debug|x64.Build.0 = Debug|x64\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F67}.Release|Win32.ActiveCfg = Release|Win32\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F67}.Release|Win32.Build.0 = Release|Win32\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F67}.Release|x64.ActiveCfg = Release|x64\r
+ {FF640D73-9BCD-4B75-B63F-75175A3C9F67}.Release|x64.Build.0 = Release|x64\r
+ {41ABBEB6-693A-4E63-9DD7-EAAC437BC173}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {41ABBEB6-693A-4E63-9DD7-EAAC437BC173}.Debug|Win32.Build.0 = Debug|Win32\r
+ {41ABBEB6-693A-4E63-9DD7-EAAC437BC173}.Debug|x64.ActiveCfg = Debug|x64\r
+ {41ABBEB6-693A-4E63-9DD7-EAAC437BC173}.Debug|x64.Build.0 = Debug|x64\r
+ {41ABBEB6-693A-4E63-9DD7-EAAC437BC173}.Release|Win32.ActiveCfg = Release|Win32\r
+ {41ABBEB6-693A-4E63-9DD7-EAAC437BC173}.Release|Win32.Build.0 = Release|Win32\r
+ {41ABBEB6-693A-4E63-9DD7-EAAC437BC173}.Release|x64.ActiveCfg = Release|x64\r
+ {41ABBEB6-693A-4E63-9DD7-EAAC437BC173}.Release|x64.Build.0 = Release|x64\r
+ {04658465-64F9-4F06-B7A7-D40F6EDF26E4}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {04658465-64F9-4F06-B7A7-D40F6EDF26E4}.Debug|Win32.Build.0 = Debug|Win32\r
+ {04658465-64F9-4F06-B7A7-D40F6EDF26E4}.Debug|x64.ActiveCfg = Debug|x64\r
+ {04658465-64F9-4F06-B7A7-D40F6EDF26E4}.Debug|x64.Build.0 = Debug|x64\r
+ {04658465-64F9-4F06-B7A7-D40F6EDF26E4}.Release|Win32.ActiveCfg = Release|Win32\r
+ {04658465-64F9-4F06-B7A7-D40F6EDF26E4}.Release|Win32.Build.0 = Release|Win32\r
+ {04658465-64F9-4F06-B7A7-D40F6EDF26E4}.Release|x64.ActiveCfg = Release|x64\r
+ {04658465-64F9-4F06-B7A7-D40F6EDF26E4}.Release|x64.Build.0 = Release|x64\r
+ EndGlobalSection\r
+ GlobalSection(SolutionProperties) = preSolution\r
+ HideSolutionNode = FALSE\r
+ EndGlobalSection\r
+EndGlobal\r
--- /dev/null
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="json-glib"
+ ProjectGUID="{469DB0A8-E33E-4112-A38C-52A168ECDC03}"
+ RootNamespace="jsonglib"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\json-glib-gen-srcs.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_DEBUG;$(JsonGlibDefines)"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ ForcedIncludeFiles=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(JsonGlibDllPrefix)$(ProjectName)$(JsonGlibDllSuffix).dll"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(ApiVersion).lib"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ InheritedPropertySheets=".\json-glib-gen-srcs.vsprops"
+ ConfigurationType="2"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG;$(JsonGlibDefines)"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies=""
+ OutputFile="$(OutDir)\$(JsonGlibDllPrefix)$(ProjectName)$(JsonGlibDllSuffix).dll"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(ApiVersion).lib"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\json-glib-gen-srcs.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="$(JsonGlibDefines)"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ ForcedIncludeFiles=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(JsonGlibDllPrefix)$(ProjectName)$(JsonGlibDllSuffix).dll"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(ApiVersion).lib"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ InheritedPropertySheets=".\json-glib-gen-srcs.vsprops"
+ ConfigurationType="2"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="$(JsonGlibDefines)"
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies=""
+ OutputFile="$(OutDir)\$(JsonGlibDllPrefix)$(ProjectName)$(JsonGlibDllSuffix).dll"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(ApiVersion).lib"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+#include "jsonglib.sourcefiles"
+ </Filter>
+ <Filter
+ Name="Headers"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ <File RelativePath="..\config.h.win32">
+ <FileConfiguration Name="Debug|Win32">
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Copying config.h from config.h.win32..."
+ CommandLine="$(CopyConfigH)"
+ Outputs="..\..\..\config.h"
+ />
+ </FileConfiguration>
+ <FileConfiguration Name="Release|Win32">
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Copying config.h from config.h.win32..."
+ CommandLine="$(CopyConfigH)"
+ Outputs="..\..\..\config.h"
+ />
+ </FileConfiguration>
+ <FileConfiguration Name="Debug|x64">
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Copying config.h from config.h.win32..."
+ CommandLine="$(CopyConfigH)"
+ Outputs="..\..\..\config.h"
+ />
+ </FileConfiguration>
+ <FileConfiguration Name="Release|x64">
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Copying config.h from config.h.win32..."
+ CommandLine="$(CopyConfigH)"
+ Outputs="..\..\..\config.h"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
--- /dev/null
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="node"
+ ProjectGUID="{04658465-64F9-4F06-B7A7-D40F6EDF26E3}"
+ RootNamespace="node"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ ForcedIncludeFiles=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ ForcedIncludeFiles=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies=""
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File RelativePath="..\..\..\json-glib\tests\node.c" />
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
--- /dev/null
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="object"
+ ProjectGUID="{83A444A0-D80E-40E0-90CF-5876E1AA97DB}"
+ RootNamespace="object"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ ForcedIncludeFiles=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ ForcedIncludeFiles=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies=""
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ >
+ <File RelativePath="..\..\..\json-glib\tests\object.c" />
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
--- /dev/null
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="parser"
+ ProjectGUID="{BDF81D39-F7E1-4B34-80E5-4B979E10629F}"
+ RootNamespace="parser"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ ForcedIncludeFiles=""
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ ForcedIncludeFiles=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies=""
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File RelativePath="..\..\..\json-glib\tests\parser.c" />
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
--- /dev/null
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="path"
+ ProjectGUID="{FF640D73-9BCD-4B75-B63F-75175A3C9F67}"
+ RootNamespace="path"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File RelativePath="..\..\..\json-glib\tests\path.c" />
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
--- /dev/null
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="reader"
+ ProjectGUID="{99FC597F-539A-49BB-9B9A-6C1EF802A17B}"
+ RootNamespace="reader"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ ForcedIncludeFiles=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies=" "
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ ForcedIncludeFiles=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies=""
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File RelativePath="..\..\..\json-glib\tests\reader.c" />
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
--- /dev/null
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="serialize-complex"
+ ProjectGUID="{C3FCC23B-54CC-4447-B9A7-CE095EA60B16}"
+ RootNamespace="serializecomplex"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ ForcedIncludeFiles=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies=""
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File RelativePath="..\..\..\json-glib\tests\serialize-complex.c" />
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
--- /dev/null
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="serialize-full"
+ ProjectGUID="{980282CA-EAEA-4F33-8982-39DAF018978A}"
+ RootNamespace="serializefull"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ ForcedIncludeFiles=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ ForcedIncludeFiles=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies=""
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File RelativePath="..\..\..\json-glib\tests\serialize-full.c" />
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
--- /dev/null
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="serialize-simple"
+ ProjectGUID="{27AFA4CD-917A-4155-9F61-025094A97933}"
+ RootNamespace="serializesimple"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ ForcedIncludeFiles=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ ForcedIncludeFiles=""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ InheritedPropertySheets=".\json-glib-build-defines.vsprops"
+ ConfigurationType="1"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File RelativePath="..\..\..\json-glib\tests\serialize-simple.c" />
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
+++ /dev/null
-#! /bin/sh
-# Wrapper for compilers which do not understand `-c -o'.
-
-scriptversion=2009-10-06.20; # UTC
-
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009 Free Software
-# Foundation, Inc.
-# Written by Tom Tromey <tromey@cygnus.com>.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# This file is maintained in Automake, please report
-# bugs to <bug-automake@gnu.org> or send patches to
-# <automake-patches@gnu.org>.
-
-case $1 in
- '')
- echo "$0: No command. Try \`$0 --help' for more information." 1>&2
- exit 1;
- ;;
- -h | --h*)
- cat <<\EOF
-Usage: compile [--help] [--version] PROGRAM [ARGS]
-
-Wrapper for compilers which do not understand `-c -o'.
-Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
-arguments, and rename the output as expected.
-
-If you are trying to build a whole package this is not the
-right script to run: please start by reading the file `INSTALL'.
-
-Report bugs to <bug-automake@gnu.org>.
-EOF
- exit $?
- ;;
- -v | --v*)
- echo "compile $scriptversion"
- exit $?
- ;;
-esac
-
-ofile=
-cfile=
-eat=
-
-for arg
-do
- if test -n "$eat"; then
- eat=
- else
- case $1 in
- -o)
- # configure might choose to run compile as `compile cc -o foo foo.c'.
- # So we strip `-o arg' only if arg is an object.
- eat=1
- case $2 in
- *.o | *.obj)
- ofile=$2
- ;;
- *)
- set x "$@" -o "$2"
- shift
- ;;
- esac
- ;;
- *.c)
- cfile=$1
- set x "$@" "$1"
- shift
- ;;
- *)
- set x "$@" "$1"
- shift
- ;;
- esac
- fi
- shift
-done
-
-if test -z "$ofile" || test -z "$cfile"; then
- # If no `-o' option was seen then we might have been invoked from a
- # pattern rule where we don't need one. That is ok -- this is a
- # normal compilation that the losing compiler can handle. If no
- # `.c' file was seen then we are probably linking. That is also
- # ok.
- exec "$@"
-fi
-
-# Name of file we expect compiler to create.
-cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
-
-# Create the lock directory.
-# Note: use `[/\\:.-]' here to ensure that we don't use the same name
-# that we are using for the .o file. Also, base the name on the expected
-# object file name, since that is what matters with a parallel build.
-lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
-while true; do
- if mkdir "$lockdir" >/dev/null 2>&1; then
- break
- fi
- sleep 1
-done
-# FIXME: race condition here if user kills between mkdir and trap.
-trap "rmdir '$lockdir'; exit 1" 1 2 15
-
-# Run the compile.
-"$@"
-ret=$?
-
-if test -f "$cofile"; then
- test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
-elif test -f "${cofile}bj"; then
- test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
-fi
-
-rmdir "$lockdir"
-exit $ret
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
+++ /dev/null
-/* config.h.in. Generated from configure.ac by autoheader. */
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#undef HAVE_DLFCN_H
-
-/* Define to 1 if you have the `getpagesize' function. */
-#undef HAVE_GETPAGESIZE
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
- to 0 otherwise. */
-#undef HAVE_MALLOC
-
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define to 1 if you have a working `mmap' system call. */
-#undef HAVE_MMAP
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define to 1 if you have the <sys/param.h> header file. */
-#undef HAVE_SYS_PARAM_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define to the sub-directory in which libtool stores uninstalled libraries.
- */
-#undef LT_OBJDIR
-
-/* Define to 1 if your C compiler doesn't accept -c and -o together. */
-#undef NO_MINUS_C_MINUS_O
-
-/* Name of package */
-#undef PACKAGE
-
-/* Define to the address where bug reports for this package should be sent. */
-#undef PACKAGE_BUGREPORT
-
-/* Define to the full name of this package. */
-#undef PACKAGE_NAME
-
-/* Define to the full name and version of this package. */
-#undef PACKAGE_STRING
-
-/* Define to the one symbol short name of this package. */
-#undef PACKAGE_TARNAME
-
-/* Define to the home page for this package. */
-#undef PACKAGE_URL
-
-/* Define to the version of this package. */
-#undef PACKAGE_VERSION
-
-/* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* Version number of package */
-#undef VERSION
-
-/* Define to empty if `const' does not conform to ANSI C. */
-#undef const
-
-/* Define to rpl_malloc if the replacement function should be used. */
-#undef malloc
# bump micro_version to the next even number for each point release
# bump micro_version to the next odd number after each release
-m4_define([json_major_version], [0])
-m4_define([json_minor_version], [10])
-m4_define([json_micro_version], [4])
+m4_define([json_major_version], [1])
+m4_define([json_minor_version], [0])
+m4_define([json_micro_version], [2])
m4_define([json_version], [json_major_version.json_minor_version.json_micro_version])
# bump up by 1 for every micro release with no API changes, otherwise
# set to 0. after release, bump up by 1
-m4_define([json_interface_age], [3])
+m4_define([json_interface_age], [2])
m4_define([json_binary_age], [m4_eval(100 * json_minor_version + json_micro_version)])
m4_define([lt_current], [m4_eval(100 * json_minor_version + json_micro_version - json_interface_age)])
m4_define([lt_revision], [json_interface_age])
m4_define([lt_age], [m4_eval(json_binary_age - json_interface_age)])
-m4_define([glib_req_version], [2.15])
+m4_define([glib_req_version], [2.37.6])
-AC_PREREQ([2.61])
+AC_PREREQ([2.63])
AC_INIT([json-glib],
[json_version],
[http://bugzilla.gnome.org/enter_bug.cgi?product=json-glib],
- [json-glib])
+ [json-glib],
+ [http://live.gnome.org/JsonGlib])
+AC_CONFIG_HEADER([config.h])
AC_CONFIG_SRCDIR([json-glib/json-glib.h])
+AC_CONFIG_AUX_DIR([build])
AC_CONFIG_MACRO_DIR([build/autotools])
-AM_INIT_AUTOMAKE([1.9])
-AM_CONFIG_HEADER([config.h])
+AM_INIT_AUTOMAKE([1.11 no-define foreign -Wno-portability dist-xz no-dist-gzip tar-ustar])
-AM_DISABLE_STATIC
+AM_SILENT_RULES([yes])
AM_PATH_GLIB_2_0
AM_PROG_CC_C_O
-AM_PROG_LIBTOOL
+
+LT_PREREQ([2.2.6])
+LT_INIT([disable-static])
# Honor aclocal flags
ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
+dnl === Versioning ============================================================
+
JSON_MAJOR_VERSION=json_major_version
JSON_MINOR_VERSION=json_minor_version
JSON_MICRO_VERSION=json_micro_version
JSON_LT_AGE=lt_age
JSON_LT_VERSION="$JSON_LT_CURRENT:$JSON_LT_REVISION:$JSON_LT_AGE"
JSON_LT_LDFLAGS="-version-info $JSON_LT_VERSION"
+
+dnl === Platform checks =======================================================
+
+platform_linux=no
+platform_win32=no
+
+AC_CANONICAL_HOST
+AC_MSG_CHECKING([if building for some Win32 platform])
+AS_CASE([$host],
+
+ [*-*-mingw*|*-*-cygwin*],
+ [
+ JSON_LT_LDFLAGS="$JSON_LT_LDFLAGS -no-undefined"
+ platform_win32=yes
+ ],
+
+ [*-*-linux*],
+ [
+ platform_linux=yes
+ ],
+
+ []
+)
+AC_MSG_RESULT([$platform_win32])
+
+AM_CONDITIONAL(OS_LINUX, [test "$platform_linux" = "yes"])
+AM_CONDITIONAL(OS_WIN32, [test "$platform_win32" = "yes"])
+
+# Check for -Bsymbolic-functions to avoid intra-library PLT jumps
+AC_ARG_ENABLE([Bsymbolic],
+ [AS_HELP_STRING([--disable-Bsymbolic],
+ [Avoid linking with -Bsymbolic])],
+ [],
+ [
+ saved_LDFLAGS="${LDFLAGS}"
+ AC_MSG_CHECKING([for -Bsymbolic-functions linker flag])
+ LDFLAGS=-Wl,-Bsymbolic-functions
+ AC_TRY_LINK([], [int main (void) { return 0; }],
+ [
+ AC_MSG_RESULT([yes])
+ enable_Bsymbolic=yes
+ ],
+ [
+ AC_MSG_RESULT([no])
+ enable_Bsymbolic=no
+ ])
+ LDFLAGS="${saved_LDFLAGS}"
+ ])
+
+AS_IF([test "x$enable_Bsymbolic" = "xyes"], [JSON_LINK_FLAGS=-Wl[,]-Bsymbolic-functions])
+JSON_LT_LDFLAGS="$JSON_LT_LDFLAGS $JSON_LINK_FLAGS"
+
AC_SUBST(JSON_LT_LDFLAGS)
-AC_HEADER_STDC
-AC_CHECK_HEADERS([unistd.h])
-AC_C_CONST
-AC_FUNC_MALLOC
-AC_FUNC_MMAP
+dnl === Visibility ============================================================
+
+JSON_HIDDEN_VISIBILITY_CFLAGS=""
+case "$host" in
+ *-*-mingw*)
+ dnl on mingw32 we do -fvisibility=hidden and __declspec(dllexport)
+ AC_DEFINE([_JSON_EXTERN], [__attribute__((visibility("default"))) __declspec(dllexport) extern],
+ [defines how to decorate public symbols while building])
+ CFLAGS="${CFLAGS} -fvisibility=hidden"
+ ;;
+ *)
+ dnl on other compilers, check if we can do -fvisibility=hidden
+ SAVED_CFLAGS="${CFLAGS}"
+ CFLAGS="-fvisibility=hidden"
+ AC_MSG_CHECKING([for -fvisibility=hidden compiler flag])
+ AC_TRY_COMPILE([], [int main (void) { return 0; }],
+ AC_MSG_RESULT(yes)
+ enable_fvisibility_hidden=yes,
+ AC_MSG_RESULT(no)
+ enable_fvisibility_hidden=no)
+ CFLAGS="${SAVED_CFLAGS}"
+
+ AS_IF([test "${enable_fvisibility_hidden}" = "yes"], [
+ AC_DEFINE([_JSON_EXTERN], [__attribute__((visibility("default"))) extern],
+ [defines how to decorate public symbols while building])
+ JSON_HIDDEN_VISIBILITY_CFLAGS="-fvisibility=hidden"
+ ])
+ ;;
+esac
+AC_SUBST(JSON_HIDDEN_VISIBILITY_CFLAGS)
+
+dnl === Dependencies ==========================================================
GLIB_PREFIX="`$PKG_CONFIG --variable=prefix glib-2.0`"
AC_SUBST(GLIB_PREFIX)
-PKG_CHECK_MODULES(JSON, [gobject-2.0 >= glib_req_version])
-AC_SUBST(JSON_CFLAGS)
-AC_SUBST(JSON_LIBS)
-
-AM_CONDITIONAL(ENABLE_GLIB_TEST, [test "x$enable_glibtest" = "xyes"])
+PKG_CHECK_MODULES(JSON, [gobject-2.0 >= glib_req_version gio-2.0])
-dnl = Enable debug level ===================================================
+dnl === Enable debug level ====================================================
m4_define([debug_default], [m4_if(m4_eval(json_minor_version % 2), [1], [yes], [minimum])])
AC_ARG_ENABLE([debug],
- [AC_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
- [turn on debugging @<:@default=debug_default@:>@])],
+ [AS_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
+ [turn on debugging @<:@default=]debug_default[@:>@])],
[],
[enable_debug=debug_default])
AC_SUBST(JSON_DEBUG_CFLAGS)
-dnl = Enable strict compiler flags =========================================
+dnl === Enable strict compiler flags ==========================================
# use strict compiler flags only on development releases
m4_define([maintainer_flags_default], [m4_if(m4_eval(json_minor_version % 2), [1], [yes], [no])])
AC_ARG_ENABLE([maintainer-flags],
- [AC_HELP_STRING([--enable-maintainer-flags=@<:@no/yes@:>@],
- [Use strict compiler flags @<:@default=maintainer_flags_default@:>@])],
+ [AS_HELP_STRING([--enable-maintainer-flags=@<:@no/yes@:>@],
+ [Use strict compiler flags @<:@default=]maintainer_flags_default[@:>@])],
[],
[enable_maintainer_flags=maintainer_flags_default])
AS_IF([test "x$enable_maintainer_flags" = "xyes" && test "x$GCC" = "xyes"],
[
AS_COMPILER_FLAGS([MAINTAINER_CFLAGS],
- ["-Werror -Wall -Wshadow -Wcast-align
- -Wno-uninitialized -Wformat-security
+ ["-Wall -Wshadow -Wcast-align
+ -Wno-uninitialized -Wformat -Wformat-security
-Wno-strict-aliasing -Winit-self
-Wempty-body -Wdeclaration-after-statement
- -Wno-strict-aliasing -Wno-strict-aliasing"])
+ -Wno-strict-aliasing"])
]
)
+MAINTAINER_CFLAGS="${MAINTAINER_CFLAGS#* }"
AC_SUBST([MAINTAINER_CFLAGS])
-GTK_DOC_CHECK([1.11])
+dnl === Test suite ============================================================
-GOBJECT_INTROSPECTION_CHECK([0.6.4])
+GLIB_TESTS
-m4_ifdef([AM_SILENT_RULES],
- [
- AM_SILENT_RULES([yes])
- use_shave=no
- ],
- [
- SHAVE_INIT([build/autotools], [enable])
- AC_CONFIG_FILES([
- build/autotools/shave-libtool
- build/autotools/shave
- ])
- use_shave=yes
- ])
+dnl === Test coverage =========================================================
-AM_CONDITIONAL([USE_SHAVE], [test "x$use_shave" = "xyes"])
+AC_ARG_ENABLE([gcov],
+ [AS_HELP_STRING([--enable-gcov], [Enable gcov])],
+ [use_gcov=$enableval],
+ [use_gcov=no])
+
+AS_IF([test "x$use_gcov" = "xyes"],
+ [
+ dnl we need gcc:
+ AS_IF([test "$GCC" != "yes"], [AC_MSG_ERROR([GCC is required for --enable-gcov])])
+
+ dnl Check if ccache is being used
+ AC_CHECK_PROG(SHTOOL, shtool, shtool)
+ AS_CASE([`$SHTOOL path $CC`],
+ [*ccache*], [gcc_ccache=yes],
+ [gcc_ccache=no])
+
+ if test "$gcc_ccache" = "yes" && (test -z "$CCACHE_DISABLE" || test "$CCACHE_DISABLE" != "1"); then
+ AC_MSG_ERROR([ccache must be disabled when --enable-gcov option is used. You can disable ccache by setting environment variable CCACHE_DISABLE=1.])
+ fi
+
+ ltp_version_list="1.6 1.7 1.8 1.9 1.10"
+ AC_CHECK_PROG(LTP, lcov, lcov)
+ AC_CHECK_PROG(LTP_GENHTML, genhtml, genhtml)
+
+ if test "$LTP"; then
+ AC_CACHE_CHECK([for ltp version], json_cv_ltp_version,
+ [
+ json_cv_ltp_version=invalid
+ ltp_version=`$LTP -v 2>/dev/null | $SED -e 's/^.* //'`
+ for ltp_check_version in $ltp_version_list; do
+ if test "$ltp_version" = "$ltp_check_version"; then
+ json_cv_ltp_version="$ltp_check_version (ok)"
+ fi
+ done
+ ])
+ else
+ ltp_msg="To enable code coverage reporting you must have one of the following LTP versions installed: $ltp_version_list"
+ AC_MSG_ERROR([$ltp_msg])
+ fi
+
+ case $json_cv_ltp_version in
+ ""|invalid[)]
+ ltp_msg="You must have one of the following versions of LTP: $ltp_version_list (found: $ltp_version)."
+ AC_MSG_ERROR([$ltp_msg])
+ LTP="exit 0;"
+ ;;
+ esac
+
+ if test -z "$LTP_GENHTML"; then
+ AC_MSG_ERROR([Could not find genhtml from the LTP package])
+ fi
+
+ AC_DEFINE(HAVE_GCOV, 1, [Whether you have gcov])
+
+ dnl Remove all optimization flags from CFLAGS
+ changequote({,})
+ CFLAGS=`echo "$CFLAGS" | $SED -e 's/-O[0-9]*//g'`
+ JSON_CFLAGS=`echo "$JSON_CFLAGS" | $SED -e 's/-O[0-9]*//g'`
+ changequote([,])
+
+ dnl Define the special gcc flags
+ JSON_GCOV_CFLAGS="-O0 -fprofile-arcs -ftest-coverage"
+ JSON_GCOV_LDADD="-lgcov"
+
+ AC_SUBST(JSON_GCOV_CFLAGS)
+ AC_SUBST(JSON_GCOV_LDADD)
+
+ JSON_CFLAGS="$JSON_CFLAGS $CLUTTER_GCOV_CFLAGS"
+ JSON_LIBS="$JSON_LIBS $CLUTTER_GCOV_LDADD"
+ ])
+
+AM_CONDITIONAL(ENABLE_GCOV, test "x$use_gcov" = "xyes")
+
+dnl === Documentation =========================================================
+
+# GTK_DOC_CHECK([1.20], [--flavour no-tmpl])
+
+AC_ARG_ENABLE([man,],
+ [AS_HELP_STRING([--enable-man], [generate man pages @<:@default=auto@:>@])],
+ [],
+ [enable_man=maybe])
+
+AS_IF([test "$enable_man" != no], [
+ AC_PATH_PROG([XSLTPROC], [xsltproc])
+ AS_IF([test -z "$XSLTPROC"], [
+ AS_IF([test "$enable_man" = yes], [
+ AC_MSG_ERROR([xsltproc is required for --enable-man])
+ ])
+ enable_man=no
+ ])
+])
+
+AS_IF([ test "$enable_man" != no ], [
+ dnl check for DocBook DTD in the local catalog
+ JH_CHECK_XML_CATALOG([-//OASIS//DTD DocBook XML V4.1.2//EN],
+ [DocBook XML DTD V4.1.2], [have_docbook_dtd=yes], [have_docbook_dtd=no])
+ AS_IF([test "$have_docbook_dtd" != yes], [
+ AS_IF([test "$enable_man" = yes ], [
+ AC_MSG_ERROR([DocBook DTD is required for --enable-man])
+ ])
+ enable_man=no
+ ])
+])
+
+AS_IF([test "$enable_man" != no], [
+ dnl check for DocBook XSL stylesheets in the local catalog
+ JH_CHECK_XML_CATALOG([http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl],
+ [DocBook XSL Stylesheets], [have_docbook_style=yes],[have_docbook_style=no])
+ AS_IF([ test "$have_docbook_dtd" != yes ], [
+ AS_IF([ test "$enable_man" = yes ], [
+ AC_MSG_ERROR([DocBook XSL Stylesheets are required for --enable-man])
+ ])
+ enable_man=no
+ ])
+])
+
+AM_CONDITIONAL(ENABLE_MAN, test "$enable_man" != no)
+
+AC_MSG_CHECKING([whether to generate man pages])
+AS_IF([ test "$enable_man" != no ], [
+ enable_man=yes
+ AC_MSG_RESULT([yes])
+], [
+ AC_MSG_RESULT([no])
+])
+
+dnl === Introspection =========================================================
+
+GOBJECT_INTROSPECTION_CHECK([0.9.5])
+
+dnl === Localization ==========================================================
+
+AM_GNU_GETTEXT_VERSION([0.18])
+AM_GNU_GETTEXT([external])
+
+GETTEXT_PACKAGE="json-glib-1.0"
+AC_SUBST(GETTEXT_PACKAGE)
+AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],
+ ["$GETTEXT_PACKAGE"],
+ [The prefix for our gettext translation domains.])
+AS_ALL_LINGUAS
+
+dnl === Output ================================================================
+
+AC_SUBST(JSON_CFLAGS)
+AC_SUBST(JSON_LIBS)
AC_CONFIG_FILES([
Makefile
+
build/Makefile
build/autotools/Makefile
+ build/win32/Makefile
+ build/win32/config.h.win32
+ build/win32/vs9/Makefile
+ build/win32/vs10/Makefile
+
json-glib/Makefile
+ json-glib/json-glib.pc
json-glib/json-version.h
json-glib/tests/Makefile
- tests/Makefile
- doc/Makefile
- doc/reference/Makefile
- doc/reference/version.xml
- json-glib.pc
+
+ po/Makefile.in
])
AC_OUTPUT
echo " • Prefix: ${prefix}"
echo ""
echo " • Debug level: ${enable_debug}"
-echo " • Compiler flags: ${MAINTAINER_CFLAGS}"
-echo " • Use shave: ${use_shave}"
+echo " • Compiler flags: ${CFLAGS} ${MAINTAINER_CFLAGS}"
echo ""
echo " • API reference: ${enable_gtk_doc}"
+echo " • Manual pages: ${enable_man}"
echo ""
-echo " • Enable test suite: ${enable_glibtest}"
+echo " • Install tests: ${ENABLE_INSTALLED_TESTS}"
echo " • Build introspection data: ${enable_introspection}"
+echo " • Enable test coverage: ${use_gcov}"
echo ""
+++ /dev/null
-Source: libjson-glib
-Section: libs
-Priority: extra
-Maintainer: Moung June Park <mj2004.park@samsung.com>
-Uploaders: Mike McCormack <mj.mccormack@samsung.com>
-Build-Depends: debhelper (>= 5), autotools-dev, libglib2.0-dev (>= 2.21.3), libgnutls-dev
-Standards-Version: 0.10.4
-
-Package: libjson-glib
-Section: libs
-Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: an json-glib api library implementation in C (shared libs)
-
-Package: libjson-glib-dev
-Section: libdevel
-Architecture: any
-Depends: libjson-glib (= ${Source-Version}), libglib2.0-dev (>= 2.21.3), libgnutls-dev
-Description: an json-glib api library implementation in C (development files)
+++ /dev/null
-AUTHOR, COPYRIGHT AND LICENSING
--------------------------------------------------------------------------------
-JSON-GLib has been written by Emmanuele Bassi
-
-JSON-GLib is released under the terms of the GNU Lesser General Public License,
-either version 2.1 or (at your option) any later version.
-
-See the file COPYING for details.
-
-Copyright (C) 2007 OpenedHand Ltd
-Copyright (C) 2009 Intel Corp.
-
-License: LGPL-2.1
- This program is free software; you can redistribute it and/or modify it
- under the terms and conditions of the GNU Lesser General Public License,
- version 2.1, as published by the Free Software Foundation.
-
- This program is distributed in the hope it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
- more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with this program; if not, write to the Free Software Foundation,
- Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
-
- On Debian systems the full text of the GNU Lesser General Public Licnse,
- version 2.1, can be found in the /usr/share/common-licenses/LGPL-2.1 file.
-
+++ /dev/null
-AUTHORS
-README
+++ /dev/null
-@PREFIX@/include/json-glib-1.0/json-glib/*.h
-@PREFIX@/lib/pkgconfig/*.pc
+++ /dev/null
-@PREFIX@/lib/*.so*
+++ /dev/null
-#!/usr/bin/make -f
-# -*- makefile -*-
-# Sample debian/rules that uses debhelper.
-# This file was originally written by Joey Hess and Craig Small.
-# As a special exception, when this file is copied by dh-make into a
-# dh-make output file, you may use that output file without restriction.
-# This special exception was added by Craig Small in version 0.37 of dh-make.
-
-# Uncomment this to turn on verbose mode.
-export DH_VERBOSE=1
-
-
-# These are used for cross-compiling and for saving the configure script
-# from having to guess our platform (since we know it already)
-DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
-DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
-
-CFLAGS ?= -Wall -g
-LDFLAGS ?=
-PREFIX ?= /usr
-DATADIR ?= /opt
-
-ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
- CFLAGS += -O0
-else
- CFLAGS += -O2
-endif
-
-LDFLAGS += -Wl,--rpath=$(PREFIX)/lib -Wl,--as-needed
-
-config.status:
- dh_testdir
- # Add here commands to configure the package.
- CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" ./autogen.sh --prefix=$(PREFIX) --without-gnome --enable-sqllite=yes
-
-build: build-stamp
-
-build-stamp: config.status
- dh_testdir
-
- # Add here commands to compile the package.
- $(MAKE)
- #docbook-to-man debian/ncurses.sgml > ncurses.1
-
- for f in `find $(CURDIR)/debian/ -name "*.in"`; do \
- cat $$f > $${f%.in}; \
- sed -i -e "s#@PREFIX@#$(PREFIX)#g" $${f%.in}; \
- sed -i -e "s#@DATADIR@#$(DATADIR)#g" $${f%.in}; \
- done
-
- touch $@
-
-clean:
- dh_testdir
- dh_testroot
- rm -f build-stamp
-
- # Add here commands to clean up after the build process.
- -$(MAKE) distclean
-ifneq "$(wildcard /usr/share/misc/config.sub)" ""
- cp -f /usr/share/misc/config.sub config.sub
-endif
-ifneq "$(wildcard /usr/share/misc/config.guess)" ""
- cp -f /usr/share/misc/config.guess config.guess
-endif
-
- for f in `find $(CURDIR)/debian/ -name "*.in"`; do \
- rm -f $${f%.in}; \
- done
-
- dh_clean
-
-install: build
- dh_testdir
- dh_testroot
- dh_clean -k
- dh_installdirs
-
- # Add here commands to install the package into debian/ncurses.
- $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install
-
-
-# Build architecture-independent files here.
-binary-indep: build install
-# We have nothing to do by default.
-
-# Build architecture-dependent files here.
-binary-arch: build install
- dh_testdir
- dh_testroot
- dh_installchangelogs
- dh_installdocs
- dh_installexamples
- dh_install --sourcedir=debian/tmp
-# dh_installmenu
-# dh_installdebconf
-# dh_installlogrotate
-# dh_installemacsen
-# dh_installpam
-# dh_installmime
-# dh_python
-# dh_installinit
-# dh_installcron
-# dh_installinfo
- dh_installman
- dh_link
- dh_strip
- dh_compress
- dh_fixperms
-# dh_perl
- dh_makeshlibs
- dh_installdeb
- dh_shlibdeps
- dh_gencontrol
- dh_md5sums
- dh_builddeb
-
-binary: binary-indep binary-arch
-.PHONY: build clean binary-indep binary-arch binary install
+++ /dev/null
-#! /bin/sh
-# depcomp - compile a program generating dependencies as side-effects
-
-scriptversion=2009-04-28.21; # UTC
-
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
-# Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
-
-case $1 in
- '')
- echo "$0: No command. Try \`$0 --help' for more information." 1>&2
- exit 1;
- ;;
- -h | --h*)
- cat <<\EOF
-Usage: depcomp [--help] [--version] PROGRAM [ARGS]
-
-Run PROGRAMS ARGS to compile a file, generating dependencies
-as side-effects.
-
-Environment variables:
- depmode Dependency tracking mode.
- source Source file read by `PROGRAMS ARGS'.
- object Object file output by `PROGRAMS ARGS'.
- DEPDIR directory where to store dependencies.
- depfile Dependency file to output.
- tmpdepfile Temporary file to use when outputing dependencies.
- libtool Whether libtool is used (yes/no).
-
-Report bugs to <bug-automake@gnu.org>.
-EOF
- exit $?
- ;;
- -v | --v*)
- echo "depcomp $scriptversion"
- exit $?
- ;;
-esac
-
-if test -z "$depmode" || test -z "$source" || test -z "$object"; then
- echo "depcomp: Variables source, object and depmode must be set" 1>&2
- exit 1
-fi
-
-# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
-depfile=${depfile-`echo "$object" |
- sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
-tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
-
-rm -f "$tmpdepfile"
-
-# Some modes work just like other modes, but use different flags. We
-# parameterize here, but still list the modes in the big case below,
-# to make depend.m4 easier to write. Note that we *cannot* use a case
-# here, because this file can only contain one case statement.
-if test "$depmode" = hp; then
- # HP compiler uses -M and no extra arg.
- gccflag=-M
- depmode=gcc
-fi
-
-if test "$depmode" = dashXmstdout; then
- # This is just like dashmstdout with a different argument.
- dashmflag=-xM
- depmode=dashmstdout
-fi
-
-cygpath_u="cygpath -u -f -"
-if test "$depmode" = msvcmsys; then
- # This is just like msvisualcpp but w/o cygpath translation.
- # Just convert the backslash-escaped backslashes to single forward
- # slashes to satisfy depend.m4
- cygpath_u="sed s,\\\\\\\\,/,g"
- depmode=msvisualcpp
-fi
-
-case "$depmode" in
-gcc3)
-## gcc 3 implements dependency tracking that does exactly what
-## we want. Yay! Note: for some reason libtool 1.4 doesn't like
-## it if -MD -MP comes after the -MF stuff. Hmm.
-## Unfortunately, FreeBSD c89 acceptance of flags depends upon
-## the command line argument order; so add the flags where they
-## appear in depend2.am. Note that the slowdown incurred here
-## affects only configure: in makefiles, %FASTDEP% shortcuts this.
- for arg
- do
- case $arg in
- -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
- *) set fnord "$@" "$arg" ;;
- esac
- shift # fnord
- shift # $arg
- done
- "$@"
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
- mv "$tmpdepfile" "$depfile"
- ;;
-
-gcc)
-## There are various ways to get dependency output from gcc. Here's
-## why we pick this rather obscure method:
-## - Don't want to use -MD because we'd like the dependencies to end
-## up in a subdir. Having to rename by hand is ugly.
-## (We might end up doing this anyway to support other compilers.)
-## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
-## -MM, not -M (despite what the docs say).
-## - Using -M directly means running the compiler twice (even worse
-## than renaming).
- if test -z "$gccflag"; then
- gccflag=-MD,
- fi
- "$@" -Wp,"$gccflag$tmpdepfile"
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
- rm -f "$depfile"
- echo "$object : \\" > "$depfile"
- alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
-## The second -e expression handles DOS-style file names with drive letters.
- sed -e 's/^[^:]*: / /' \
- -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
-## This next piece of magic avoids the `deleted header file' problem.
-## The problem is that when a header file which appears in a .P file
-## is deleted, the dependency causes make to die (because there is
-## typically no way to rebuild the header). We avoid this by adding
-## dummy dependencies for each header file. Too bad gcc doesn't do
-## this for us directly.
- tr ' ' '
-' < "$tmpdepfile" |
-## Some versions of gcc put a space before the `:'. On the theory
-## that the space means something, we add a space to the output as
-## well.
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-hp)
- # This case exists only to let depend.m4 do its work. It works by
- # looking at the text of this script. This case will never be run,
- # since it is checked for above.
- exit 1
- ;;
-
-sgi)
- if test "$libtool" = yes; then
- "$@" "-Wp,-MDupdate,$tmpdepfile"
- else
- "$@" -MDupdate "$tmpdepfile"
- fi
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
- rm -f "$depfile"
-
- if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
- echo "$object : \\" > "$depfile"
-
- # Clip off the initial element (the dependent). Don't try to be
- # clever and replace this with sed code, as IRIX sed won't handle
- # lines with more than a fixed number of characters (4096 in
- # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
- # the IRIX cc adds comments like `#:fec' to the end of the
- # dependency line.
- tr ' ' '
-' < "$tmpdepfile" \
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
- tr '
-' ' ' >> "$depfile"
- echo >> "$depfile"
-
- # The second pass generates a dummy entry for each header file.
- tr ' ' '
-' < "$tmpdepfile" \
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
- >> "$depfile"
- else
- # The sourcefile does not contain any dependencies, so just
- # store a dummy comment line, to avoid errors with the Makefile
- # "include basename.Plo" scheme.
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile"
- ;;
-
-aix)
- # The C for AIX Compiler uses -M and outputs the dependencies
- # in a .u file. In older versions, this file always lives in the
- # current directory. Also, the AIX compiler puts `$object:' at the
- # start of each line; $object doesn't have directory information.
- # Version 6 uses the directory in both cases.
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
- if test "$libtool" = yes; then
- tmpdepfile1=$dir$base.u
- tmpdepfile2=$base.u
- tmpdepfile3=$dir.libs/$base.u
- "$@" -Wc,-M
- else
- tmpdepfile1=$dir$base.u
- tmpdepfile2=$dir$base.u
- tmpdepfile3=$dir$base.u
- "$@" -M
- fi
- stat=$?
-
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
- exit $stat
- fi
-
- for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
- do
- test -f "$tmpdepfile" && break
- done
- if test -f "$tmpdepfile"; then
- # Each line is of the form `foo.o: dependent.h'.
- # Do two passes, one to just change these to
- # `$object: dependent.h' and one to simply `dependent.h:'.
- sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
- # That's a tab and a space in the [].
- sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
- else
- # The sourcefile does not contain any dependencies, so just
- # store a dummy comment line, to avoid errors with the Makefile
- # "include basename.Plo" scheme.
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile"
- ;;
-
-icc)
- # Intel's C compiler understands `-MD -MF file'. However on
- # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
- # ICC 7.0 will fill foo.d with something like
- # foo.o: sub/foo.c
- # foo.o: sub/foo.h
- # which is wrong. We want:
- # sub/foo.o: sub/foo.c
- # sub/foo.o: sub/foo.h
- # sub/foo.c:
- # sub/foo.h:
- # ICC 7.1 will output
- # foo.o: sub/foo.c sub/foo.h
- # and will wrap long lines using \ :
- # foo.o: sub/foo.c ... \
- # sub/foo.h ... \
- # ...
-
- "$@" -MD -MF "$tmpdepfile"
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
- rm -f "$depfile"
- # Each line is of the form `foo.o: dependent.h',
- # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
- # Do two passes, one to just change these to
- # `$object: dependent.h' and one to simply `dependent.h:'.
- sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
- # Some versions of the HPUX 10.20 sed can't process this invocation
- # correctly. Breaking it into two sed invocations is a workaround.
- sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
- sed -e 's/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-hp2)
- # The "hp" stanza above does not work with aCC (C++) and HP's ia64
- # compilers, which have integrated preprocessors. The correct option
- # to use with these is +Maked; it writes dependencies to a file named
- # 'foo.d', which lands next to the object file, wherever that
- # happens to be.
- # Much of this is similar to the tru64 case; see comments there.
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
- if test "$libtool" = yes; then
- tmpdepfile1=$dir$base.d
- tmpdepfile2=$dir.libs/$base.d
- "$@" -Wc,+Maked
- else
- tmpdepfile1=$dir$base.d
- tmpdepfile2=$dir$base.d
- "$@" +Maked
- fi
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile1" "$tmpdepfile2"
- exit $stat
- fi
-
- for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
- do
- test -f "$tmpdepfile" && break
- done
- if test -f "$tmpdepfile"; then
- sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
- # Add `dependent.h:' lines.
- sed -ne '2,${
- s/^ *//
- s/ \\*$//
- s/$/:/
- p
- }' "$tmpdepfile" >> "$depfile"
- else
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile" "$tmpdepfile2"
- ;;
-
-tru64)
- # The Tru64 compiler uses -MD to generate dependencies as a side
- # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
- # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
- # dependencies in `foo.d' instead, so we check for that too.
- # Subdirectories are respected.
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-
- if test "$libtool" = yes; then
- # With Tru64 cc, shared objects can also be used to make a
- # static library. This mechanism is used in libtool 1.4 series to
- # handle both shared and static libraries in a single compilation.
- # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
- #
- # With libtool 1.5 this exception was removed, and libtool now
- # generates 2 separate objects for the 2 libraries. These two
- # compilations output dependencies in $dir.libs/$base.o.d and
- # in $dir$base.o.d. We have to check for both files, because
- # one of the two compilations can be disabled. We should prefer
- # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
- # automatically cleaned when .libs/ is deleted, while ignoring
- # the former would cause a distcleancheck panic.
- tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
- tmpdepfile2=$dir$base.o.d # libtool 1.5
- tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
- tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
- "$@" -Wc,-MD
- else
- tmpdepfile1=$dir$base.o.d
- tmpdepfile2=$dir$base.d
- tmpdepfile3=$dir$base.d
- tmpdepfile4=$dir$base.d
- "$@" -MD
- fi
-
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
- exit $stat
- fi
-
- for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
- do
- test -f "$tmpdepfile" && break
- done
- if test -f "$tmpdepfile"; then
- sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
- # That's a tab and a space in the [].
- sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
- else
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile"
- ;;
-
-#nosideeffect)
- # This comment above is used by automake to tell side-effect
- # dependency tracking mechanisms from slower ones.
-
-dashmstdout)
- # Important note: in order to support this mode, a compiler *must*
- # always write the preprocessed file to stdout, regardless of -o.
- "$@" || exit $?
-
- # Remove the call to Libtool.
- if test "$libtool" = yes; then
- while test "X$1" != 'X--mode=compile'; do
- shift
- done
- shift
- fi
-
- # Remove `-o $object'.
- IFS=" "
- for arg
- do
- case $arg in
- -o)
- shift
- ;;
- $object)
- shift
- ;;
- *)
- set fnord "$@" "$arg"
- shift # fnord
- shift # $arg
- ;;
- esac
- done
-
- test -z "$dashmflag" && dashmflag=-M
- # Require at least two characters before searching for `:'
- # in the target name. This is to cope with DOS-style filenames:
- # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
- "$@" $dashmflag |
- sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
- rm -f "$depfile"
- cat < "$tmpdepfile" > "$depfile"
- tr ' ' '
-' < "$tmpdepfile" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-dashXmstdout)
- # This case only exists to satisfy depend.m4. It is never actually
- # run, as this mode is specially recognized in the preamble.
- exit 1
- ;;
-
-makedepend)
- "$@" || exit $?
- # Remove any Libtool call
- if test "$libtool" = yes; then
- while test "X$1" != 'X--mode=compile'; do
- shift
- done
- shift
- fi
- # X makedepend
- shift
- cleared=no eat=no
- for arg
- do
- case $cleared in
- no)
- set ""; shift
- cleared=yes ;;
- esac
- if test $eat = yes; then
- eat=no
- continue
- fi
- case "$arg" in
- -D*|-I*)
- set fnord "$@" "$arg"; shift ;;
- # Strip any option that makedepend may not understand. Remove
- # the object too, otherwise makedepend will parse it as a source file.
- -arch)
- eat=yes ;;
- -*|$object)
- ;;
- *)
- set fnord "$@" "$arg"; shift ;;
- esac
- done
- obj_suffix=`echo "$object" | sed 's/^.*\././'`
- touch "$tmpdepfile"
- ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
- rm -f "$depfile"
- cat < "$tmpdepfile" > "$depfile"
- sed '1,2d' "$tmpdepfile" | tr ' ' '
-' | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile" "$tmpdepfile".bak
- ;;
-
-cpp)
- # Important note: in order to support this mode, a compiler *must*
- # always write the preprocessed file to stdout.
- "$@" || exit $?
-
- # Remove the call to Libtool.
- if test "$libtool" = yes; then
- while test "X$1" != 'X--mode=compile'; do
- shift
- done
- shift
- fi
-
- # Remove `-o $object'.
- IFS=" "
- for arg
- do
- case $arg in
- -o)
- shift
- ;;
- $object)
- shift
- ;;
- *)
- set fnord "$@" "$arg"
- shift # fnord
- shift # $arg
- ;;
- esac
- done
-
- "$@" -E |
- sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
- -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
- sed '$ s: \\$::' > "$tmpdepfile"
- rm -f "$depfile"
- echo "$object : \\" > "$depfile"
- cat < "$tmpdepfile" >> "$depfile"
- sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-msvisualcpp)
- # Important note: in order to support this mode, a compiler *must*
- # always write the preprocessed file to stdout.
- "$@" || exit $?
-
- # Remove the call to Libtool.
- if test "$libtool" = yes; then
- while test "X$1" != 'X--mode=compile'; do
- shift
- done
- shift
- fi
-
- IFS=" "
- for arg
- do
- case "$arg" in
- -o)
- shift
- ;;
- $object)
- shift
- ;;
- "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
- set fnord "$@"
- shift
- shift
- ;;
- *)
- set fnord "$@" "$arg"
- shift
- shift
- ;;
- esac
- done
- "$@" -E 2>/dev/null |
- sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
- rm -f "$depfile"
- echo "$object : \\" > "$depfile"
- sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
- echo " " >> "$depfile"
- sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-msvcmsys)
- # This case exists only to let depend.m4 do its work. It works by
- # looking at the text of this script. This case will never be run,
- # since it is checked for above.
- exit 1
- ;;
-
-none)
- exec "$@"
- ;;
-
-*)
- echo "Unknown depmode $depmode" 1>&2
- exit 1
- ;;
-esac
-
-exit 0
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
--- /dev/null
+
+
+
+Internet Engineering Task Force K. Zyp, Ed.
+Internet-Draft SitePen (USA)
+Intended status: Informational March 23, 2010
+Expires: September 24, 2010
+
+
+ A JSON Media Type for Describing the Structure and Meaning of JSON
+ Documents
+ draft-zyp-json-schema-02
+
+Abstract
+
+ JSON (JavaScript Object Notation) Schema defines the media type
+ application/schema+json, a JSON based format for defining the
+ structure of JSON data. JSON Schema provides a contract for what
+ JSON data is required for a given application and how to interact
+ with it. JSON Schema is intended to define validation,
+ documentation, hyperlink navigation, and interaction control of JSON
+ data.
+
+Status of This Memo
+
+ This Internet-Draft is submitted to IETF in full conformance with the
+ provisions of BCP 78 and BCP 79.
+
+ Internet-Drafts are working documents of the Internet Engineering
+ Task Force (IETF), its areas, and its working groups. Note that
+ other groups may also distribute working documents as Internet-
+ Drafts.
+
+ Internet-Drafts are draft documents valid for a maximum of six months
+ and may be updated, replaced, or obsoleted by other documents at any
+ time. It is inappropriate to use Internet-Drafts as reference
+ material or to cite them other than as "work in progress."
+
+ The list of current Internet-Drafts can be accessed at
+ http://www.ietf.org/ietf/1id-abstracts.txt.
+
+ The list of Internet-Draft Shadow Directories can be accessed at
+ http://www.ietf.org/shadow.html.
+
+ This Internet-Draft will expire on September 24, 2010.
+
+Copyright Notice
+
+ Copyright (c) 2010 IETF Trust and the persons identified as the
+ document authors. All rights reserved.
+
+
+
+
+Zyp Expires September 24, 2010 [Page 1]
+\f
+Internet-Draft JSON Schema Media Type March 2010
+
+
+ This document is subject to BCP 78 and the IETF Trust's Legal
+ Provisions Relating to IETF Documents
+ (http://trustee.ietf.org/license-info) in effect on the date of
+ publication of this document. Please review these documents
+ carefully, as they describe your rights and restrictions with respect
+ to this document. Code Components extracted from this document must
+ include Simplified BSD License text as described in Section 4.e of
+ the Trust Legal Provisions and are provided without warranty as
+ described in the BSD License.
+
+Table of Contents
+
+ 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4
+ 2. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . 4
+ 3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
+ 3.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 5
+ 3.2. Design Considerations . . . . . . . . . . . . . . . . . . 6
+ 4. Schema/Instance Association . . . . . . . . . . . . . . . . . 6
+ 4.1. Self-Descriptive Schema . . . . . . . . . . . . . . . . . 7
+ 5. Core Schema Definition . . . . . . . . . . . . . . . . . . . . 7
+ 5.1. type . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
+ 5.2. properties . . . . . . . . . . . . . . . . . . . . . . . . 8
+ 5.3. items . . . . . . . . . . . . . . . . . . . . . . . . . . 9
+ 5.4. optional . . . . . . . . . . . . . . . . . . . . . . . . . 9
+ 5.5. additionalProperties . . . . . . . . . . . . . . . . . . . 9
+ 5.6. requires . . . . . . . . . . . . . . . . . . . . . . . . . 9
+ 5.7. minimum . . . . . . . . . . . . . . . . . . . . . . . . . 10
+ 5.8. maximum . . . . . . . . . . . . . . . . . . . . . . . . . 10
+ 5.9. minimumCanEqual . . . . . . . . . . . . . . . . . . . . . 10
+ 5.10. maximumCanEqual . . . . . . . . . . . . . . . . . . . . . 10
+ 5.11. minItems . . . . . . . . . . . . . . . . . . . . . . . . . 10
+ 5.12. maxItems . . . . . . . . . . . . . . . . . . . . . . . . . 10
+ 5.13. uniqueItems . . . . . . . . . . . . . . . . . . . . . . . 10
+ 5.14. pattern . . . . . . . . . . . . . . . . . . . . . . . . . 10
+ 5.15. maxLength . . . . . . . . . . . . . . . . . . . . . . . . 11
+ 5.16. minLength . . . . . . . . . . . . . . . . . . . . . . . . 11
+ 5.17. enum . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
+ 5.18. title . . . . . . . . . . . . . . . . . . . . . . . . . . 11
+ 5.19. description . . . . . . . . . . . . . . . . . . . . . . . 11
+ 5.20. format . . . . . . . . . . . . . . . . . . . . . . . . . . 11
+ 5.21. contentEncoding . . . . . . . . . . . . . . . . . . . . . 12
+ 5.22. default . . . . . . . . . . . . . . . . . . . . . . . . . 13
+ 5.23. divisibleBy . . . . . . . . . . . . . . . . . . . . . . . 13
+ 5.24. disallow . . . . . . . . . . . . . . . . . . . . . . . . . 13
+ 5.25. extends . . . . . . . . . . . . . . . . . . . . . . . . . 13
+ 6. Hyper Schema . . . . . . . . . . . . . . . . . . . . . . . . . 13
+ 6.1. links . . . . . . . . . . . . . . . . . . . . . . . . . . 13
+ 6.1.1. Link Description Object . . . . . . . . . . . . . . . 14
+
+
+
+Zyp Expires September 24, 2010 [Page 2]
+\f
+Internet-Draft JSON Schema Media Type March 2010
+
+
+ 6.2. fragmentResolution . . . . . . . . . . . . . . . . . . . . 18
+ 6.2.1. dot-delimited fragment resolution . . . . . . . . . . 18
+ 6.2.2. slash-delimited fragment resolution . . . . . . . . . 19
+ 6.3. root . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
+ 6.4. readonly . . . . . . . . . . . . . . . . . . . . . . . . . 19
+ 6.5. pathStart . . . . . . . . . . . . . . . . . . . . . . . . 20
+ 6.6. mediaType . . . . . . . . . . . . . . . . . . . . . . . . 20
+ 6.7. alternate . . . . . . . . . . . . . . . . . . . . . . . . 20
+ 7. Security Considerations . . . . . . . . . . . . . . . . . . . 20
+ 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21
+ 8.1. Registry of Link Relations . . . . . . . . . . . . . . . . 21
+ 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 22
+ 9.1. Normative References . . . . . . . . . . . . . . . . . . . 22
+ 9.2. Informative References . . . . . . . . . . . . . . . . . . 22
+ Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 23
+ Appendix B. Open Issues . . . . . . . . . . . . . . . . . . . . . 24
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zyp Expires September 24, 2010 [Page 3]
+\f
+Internet-Draft JSON Schema Media Type March 2010
+
+
+1. Introduction
+
+ JSON (JavaScript Object Notation) Schema is a JSON media type for
+ defining the structure of JSON data. JSON Schema provides a contract
+ for what JSON data is required for a given application and how to
+ interact with it. JSON Schema is intended to define validation,
+ documentation, hyperlink navigation, and interaction control of JSON
+ data.
+
+2. Conventions
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+ document are to be interpreted as described in RFC 2119.
+
+3. Overview
+
+ JSON Schema defines the media type application/schema+json for
+ describing the structure of other JSON documents. JSON Schema is
+ JSON-based and includes facilities for describing the structure of
+ JSON documents in terms of allowable values, descriptions, and
+ interpreting relations with other resources.
+
+ JSON Schema format is organized into several separate definitions.
+ The first definition is the core schema specification. This
+ definition is primary concerned with describing a JSON structure and
+ specifying valid elements in the structure. The second definition is
+ the Hyper Schema specification which is intended define elements in a
+ structure that can be interpreted as hyperlinks. Hyper Schema builds
+ on JSON Schema to describe the hyperlink structure of other JSON
+ documents. This allows user agents to be able to successfully
+ navigate JSON documents based on their schemas.
+
+ Cumulatively JSON Schema acts as a meta-document that can be used to
+ define the required type and constraints on property values, as well
+ as define the meaning of the property values for the purpose of
+ describing a resource and determining hyperlinks within the
+ representation.
+
+ An example JSON Schema that describes products might look like:
+
+
+
+
+
+
+
+
+
+
+
+Zyp Expires September 24, 2010 [Page 4]
+\f
+Internet-Draft JSON Schema Media Type March 2010
+
+
+ {
+ "name":"Product",
+ "properties":{
+ "id":{
+ "type":"number",
+ "description":"Product identifier"
+ },
+ "name":{
+ "description":"Name of the product",
+ "type":"string"
+ },
+ "price":{
+ "type": "number",
+ "minimum":0
+ },
+ "tags":{
+ "optional":true,
+ "type":"array",
+ "items":{
+ "type":"string"
+ }
+ }
+ },
+ "links":[
+ {
+ "rel":"full",
+ "href":"{id}"
+ },
+ {
+ "rel":"comments",
+ "href":"comments/?id={id}"
+ }
+ ]
+ }
+
+ This schema defines the properties of the instance JSON documents and
+ their required properties (id, name, and price) as well as an
+ optional property (tags). This also defines the link relations of
+ the instance JSON documents.
+
+3.1. Terminology
+
+ For this specification, a schema will be used to denote a JSON Schema
+ definition, and an instance refers to the JSON object or array that
+ the schema will be describing and validating
+
+
+
+
+
+
+Zyp Expires September 24, 2010 [Page 5]
+\f
+Internet-Draft JSON Schema Media Type March 2010
+
+
+3.2. Design Considerations
+
+ The JSON Schema media type does not attempt to dictate the structure
+ of JSON representations that contain data, but rather provides a
+ separate format for flexibly communicating how a JSON representation
+ should be interpreted and validated, such that user agents can
+ properly understand acceptable structures and extrapolate hyperlink
+ information with the JSON document. It is acknowledged that JSON
+ documents come in a variety of structures, and JSON is unique in that
+ the structure of stored data structures often prescribes a non-
+ ambiguous definite JSON representation. Attempting to force a
+ specific structure is generally not viable, and therefore JSON Schema
+ allows for great flexibility in the structure of JSON data that it
+ describes.
+
+ This specification is protocol agnostic. The underlying protocol
+ (such as HTTP) should sufficiently define the semantics of the
+ client-server interface, the retrieval of resource representations
+ linked to by JSON representations, and modification of those
+ resources. The goal of this format is to sufficiently describe JSON
+ structures such that one can utilize existing information available
+ in existing JSON representations from a large variety of services
+ that leverage a representational state transfer architecture using
+ existing protocols.
+
+4. Schema/Instance Association
+
+ JSON Schema instances are correlated to their schema by the
+ "describedby" relation, where the schema is defined to be the target
+ of the relation. Instance representations may be of the application/
+ json media type or any other subtype. Consequently, dictating how an
+ instance representation should specify the relation to the schema is
+ beyond the normative scope of this document (since this document
+ specifically defines the JSON Schema media type, and no other), but
+ it is recommended that instances specify their schema so that user
+ agents can interpret the instance representation and messages may
+ retain the self-descriptive characteristic, avoiding the need for
+ out-of-band information about instance data. Two approaches are
+ recommended for declaring the relation to the schema that describes
+ the meaning of a JSON instance's (or collection of instances)
+ structure. A MIME type parameter named "profile" or a Link header
+ with a relation of "describedby" SHOULD be used:
+
+
+ Content-Type: application/json;
+ profile=http://json.com/my-hyper-schema
+
+ or if the content is being transferred by a protocol (such as HTTP)
+
+
+
+Zyp Expires September 24, 2010 [Page 6]
+\f
+Internet-Draft JSON Schema Media Type March 2010
+
+
+ that provides headers, a Link header can be used:
+
+
+ Link: <http://json.com/my-hyper-schema>; rel="describedby"
+
+ Instances MAY specify multiple schemas, to indicate all the schemas
+ that are applicable to the data. The instance data may have multiple
+ schemas that it is defined by (the instance data should be valid for
+ those schemas). Or if the document is a collection of instances, the
+ collection may contain instances from different schemas. When
+ collections contain heterogeneous instances, the pathStart attribute
+ MAY be specified in the schema to disambiguate which schema should be
+ applied for each item in the collection.
+
+4.1. Self-Descriptive Schema
+
+ JSON Schemas are themselves instances for the schema schemas. A
+ self-describing JSON Schema for the core JSON Schema can be found at
+ http://json-schema.org/schema and the hyper schema self-description
+ can be found at: http://json-schema.org/hyper-schema. All schemas
+ used within a protocol with media type definitions SHOULD include a
+ MIME parameter that refers to the self-descriptive hyper schema or
+ another schema that extends this hyper schema:
+
+
+ Content-Type: application/json;
+ profile=http://www.json-schema.org/hyper-schema
+
+5. Core Schema Definition
+
+ A JSON Schema is a JSON Object that defines various attributes of the
+ instance and defines it's usage and valid values. A JSON Schema is a
+ JSON Object with schema attribute properties. The following is the
+ grammar of a JSON Schema:
+
+ And an example JSON Schema definition could look like:
+
+
+ {"description":"A person",
+ "type":"object",
+
+ "properties":
+ {"name": {"type":"string"},
+ "age" : {"type":"integer",
+ "maximum":125}}
+ }
+
+ A JSON Schema object may have any of the following properties, called
+
+
+
+Zyp Expires September 24, 2010 [Page 7]
+\f
+Internet-Draft JSON Schema Media Type March 2010
+
+
+ schema attributes (all attributes are optional):
+
+5.1. type
+
+ Union type definition - An array with two or more items which
+ indicates a union of type definitions. Each item in the array may
+ be a simple type definition or a schema. The instance value is
+ valid if it is of the same type as one the type definitions in the
+ array or if it is valid by one of the schemas in the array. For
+ example to indicate that a string or number is a valid: {"type":
+ ["string","number"]}
+
+ Simple type definition - A string indicating a primitive or simple
+ type. The following are acceptable strings:
+
+ string - Value must be a string.
+
+ number - Value must be a number, floating point numbers are
+ allowed.
+
+ integer - Value must be an integer, no floating point numbers
+ are allowed. This is a subset of the number type.
+
+ boolean - Value must be a boolean.
+
+ object - Value must be an object.
+
+ array - Value must be an array.
+
+ null - Value must be null. Note this is mainly for purpose of
+ being able use union types to define nullability.
+
+ any - Value may be of any type including null. If the property
+ is not defined or is not in this list, than any type of value
+ is acceptable. Other type values may be used for custom
+ purposes, but minimal validators of the specification
+ implementation can allow any instance value on unknown type
+ values.
+
+5.2. properties
+
+ This should be an object type definition, which is an object with
+ property definitions that correspond to instance object properties.
+ When the instance value is an object, the property values of the
+ instance object must conform to the property definitions in this
+ object. In this object, each property definition's value should be a
+ schema, and the property's name should be the name of the instance
+ property that it defines.
+
+
+
+Zyp Expires September 24, 2010 [Page 8]
+\f
+Internet-Draft JSON Schema Media Type March 2010
+
+
+5.3. items
+
+ This should be a schema or an array of schemas. When this is an
+ object/schema and the instance value is an array, all the items in
+ the array must conform to this schema. When this is an array of
+ schemas and the instance value is an array, each position in the
+ instance array must conform to the schema in the corresponding
+ position for this array. This called tuple typing. When tuple
+ typing is used, additional items are allowed, disallowed, or
+ constrained by the additionalProperties attribute using the same
+ rules as extra properties for objects. The default value is an empty
+ schema which allows any value for items in the instance array.
+
+5.4. optional
+
+ This indicates that the instance property in the instance object is
+ optional. This is false by default.
+
+5.5. additionalProperties
+
+ This provides a default property definition for all properties that
+ are not explicitly defined in an object type definition. The value
+ must be a schema. If false is provided, no additional properties are
+ allowed, and the schema can not be extended. The default value is an
+ empty schema which allows any value for additional properties.
+
+5.6. requires
+
+ This indicates that if this property is present in the containing
+ instance object, the property given by requires attribute must also
+ be present in the containing instance object. The value of this
+ property may be a string, indicating the require property name. Or
+ the value may be a schema, in which case the containing instance must
+ be valid by the schema if the property is present. For example if a
+ object type definition is defined:
+
+
+ {
+ "state":
+ {
+ "optional":true
+ },
+ "town":
+ {
+ "requires":"state",
+ "optional":true
+ }
+ }
+
+
+
+Zyp Expires September 24, 2010 [Page 9]
+\f
+Internet-Draft JSON Schema Media Type March 2010
+
+
+ An instance must include a state property if a town property is
+ included. If a town property is not included, the state property is
+ optional.
+
+5.7. minimum
+
+ This indicates the minimum value for the instance property when the
+ type of the instance value is a number.
+
+5.8. maximum
+
+ This indicates the minimum value for the instance property when the
+ type of the instance value is a number.
+
+5.9. minimumCanEqual
+
+ If the minimum is defined, this indicates whether or not the instance
+ property value can equal the minimum.
+
+5.10. maximumCanEqual
+
+ If the maximum is defined, this indicates whether or not the instance
+ property value can equal the maximum.
+
+5.11. minItems
+
+ This indicates the minimum number of values in an array when an array
+ is the instance value.
+
+5.12. maxItems
+
+ This indicates the maximum number of values in an array when an array
+ is the instance value.
+
+5.13. uniqueItems
+
+ This indicates that all the items in an array must be unique (no two
+ identical values) within that array when an array is the instance
+ value.
+
+5.14. pattern
+
+ When the instance value is a string, this provides a regular
+ expression that a instance string value should match in order to be
+ valid. Regular expressions should follow the regular expression
+ specification from ECMA 262/Perl 5
+
+
+
+
+
+Zyp Expires September 24, 2010 [Page 10]
+\f
+Internet-Draft JSON Schema Media Type March 2010
+
+
+5.15. maxLength
+
+ When the instance value is a string, this indicates maximum length of
+ the string.
+
+5.16. minLength
+
+ When the instance value is a string, this indicates minimum length of
+ the string.
+
+5.17. enum
+
+ This provides an enumeration of possible values that are valid for
+ the instance property. This should be an array, and each item in the
+ array represents a possible value for the instance value. If "enum"
+ is included, the instance value must be one of the values in enum
+ array in order for the schema to be valid.
+
+5.18. title
+
+ This provides a short description of the instance property. The
+ value must be a string.
+
+5.19. description
+
+ This provides a full description of the of purpose the instance
+ property. The value must be a string.
+
+5.20. format
+
+ This property indicates the type of data, content type, or
+ microformat to be expected in the instance property values. A format
+ attribute may be one of the values listed below, and if so, should
+ adhere to the semantics describing for the format. A format should
+ only be used give meaning to primitive types (string, integer,
+ number, or boolean). Validators are not required to validate that
+ the instance values conform to a format. The following formats are
+ defined:
+
+ Any valid MIME media type may be used as a format value, in which
+ case the instance property value must be a string, representing
+ the contents of the MIME file.
+
+ date-time - This should be a date in ISO 8601 format of YYYY-MM-
+ DDThh:mm:ssZ in UTC time. This is the recommended form of date/
+ timestamp.
+
+
+
+
+
+Zyp Expires September 24, 2010 [Page 11]
+\f
+Internet-Draft JSON Schema Media Type March 2010
+
+
+ date - This should be a date in the format of YYYY-MM-DD. It is
+ recommended that you use the "date-time" format instead of "date"
+ unless you need to transfer only the date part.
+
+ time - This should be a time in the format of hh:mm:ss. It is
+ recommended that you use the "date-time" format instead of "time"
+ unless you need to transfer only the time part.
+
+ utc-millisec - This should be the difference, measured in
+ milliseconds, between the specified time and midnight, January 1,
+ 1970 UTC. The value should be a number (integer or float).
+
+ regex - A regular expression.
+
+ color - This is a CSS color (like "#FF0000" or "red").
+
+ style - This is a CSS style definition (like "color: red;
+ background-color:#FFF").
+
+ phone - This should be a phone number (format may follow E.123).
+
+ uri - This value should be a URI..
+
+ email - This should be an email address.
+
+ ip-address - This should be an ip version 4 address.
+
+ ipv6 - This should be an ip version 6 address.
+
+ street-address - This should be a street address.
+
+ locality - This should be a city or town.
+
+ region - This should be a region (a state in the US, province in
+ Canada, etc.)
+
+ postal-code - This should be a postal code (AKA zip code).
+
+ country - This should be the name of a country.
+
+ Additional custom formats may be defined with a URL to a
+ definition of the format.
+
+5.21. contentEncoding
+
+ If the instance property value is a string, this indicates that the
+ string should be interpreted as binary data and decoded using the
+ encoding named by this schema property. RFC 2045, Sec 6.1 lists
+
+
+
+Zyp Expires September 24, 2010 [Page 12]
+\f
+Internet-Draft JSON Schema Media Type March 2010
+
+
+ possible values.
+
+5.22. default
+
+ This indicates the default for the instance property.
+
+5.23. divisibleBy
+
+ This indicates that the instance property value must be divisible by
+ the given schema value when the instance property value is a number.
+
+5.24. disallow
+
+ This attribute may take the same values as the "type" attribute,
+ however if the instance matches the type or if this value is an array
+ and the instance matches any type or schema in the array, than this
+ instance is not valid.
+
+5.25. extends
+
+ The value of this property should be another schema which will
+ provide a base schema which the current schema will inherit from.
+ The inheritance rules are such that any instance that is valid
+ according to the current schema must be valid according to the
+ referenced schema. This may also be an array, in which case, the
+ instance must be valid for all the schemas in the array.
+
+6. Hyper Schema
+
+ This section defines hypermedia definitions of JSON schema. The
+ following attributes are specified in addition to those attributes
+ that already provided by JSON schema with the specific purpose of
+ informing user agents of relations between resources based on JSON
+ data. Just as with JSON schema attributes, all the attributes in
+ hyper-schema are optional. Therefore an empty object is a valid
+ (non-informative) schema, and essentially describes plain JSON (no
+ constraints on the structures). Addition of attributes provides
+ additive information for user agents.
+
+6.1. links
+
+ The value of the links property should be an array, where each item
+ in the array is a link description object which describes the link
+ relations of the instances.
+
+
+
+
+
+
+
+Zyp Expires September 24, 2010 [Page 13]
+\f
+Internet-Draft JSON Schema Media Type March 2010
+
+
+6.1.1. Link Description Object
+
+ A link description object is used to describe the link relations. In
+ the context of a schema, it defines the link relations of the
+ instances of the schema, and can be parameterized by the instance
+ values. The link description format can be used on its own in
+ regular (non-schema documents), and use of this format can be
+ declared by referencing the normative link description schema as the
+ the schema for the data structure that uses the links. The URI of
+ the normative link description schema is:
+ http://json-schema.org/links.
+
+6.1.1.1. href
+
+ The value of the "href" link description property indicates the
+ target URI of the related resource. The value of the instance
+ property should be resolved as a URI-Reference per [RFC3986] and may
+ be a relative URI. The base URI to be used for relative resolution
+ should be the URI used to retrieve the instance object (not the
+ schema) when used in the context of a schema. Also, the URI may be
+ parametrized by the property values of the instance object.
+
+ Instance property values should be substituted into the URIs where
+ matching braces ('{', '}') are found surrounding zero or more
+ characters, creating an expanded URI. Instance property value
+ substitutions are resolved by using the text between the braces to
+ denote the property name from the instance to get the value to
+ substitute. For example, if an href value is defined:
+
+
+ http://somesite.com/{id}
+
+ Then it would be resolved by replace the value of the "id" property
+ value from the instance object. If the value of the "id" property
+ was "45", the expanded URI would be:
+
+
+ http://somesite.com/45
+
+ If matching braces are found with the string "-this" (no quotes)
+ between the braces, than the actual instance value should be used to
+ replace the braces, rather than a property value. This should only
+ be used in situations where the instance is a scalar (string,
+ boolean, or number), and not for objects or arrays.
+
+
+
+
+
+
+
+Zyp Expires September 24, 2010 [Page 14]
+\f
+Internet-Draft JSON Schema Media Type March 2010
+
+
+6.1.1.2. rel
+
+ The value of the "rel" property indicates the name of the relation to
+ the target resource. The relation to the target should be
+ interpreted as specifically from the instance object that the schema
+ (or sub-schema) applies to, not just the top level resource that
+ contains the object within its hierarchy. If a resource JSON
+ representation contains a sub object with a property interpreted as a
+ link, that sub-object holds the relation with the target. A relation
+ to target from the top level resource must be indicated with the
+ schema describing the top level JSON representation.
+
+ Relationship definitions SHOULD NOT be media type dependent, and
+ users are encouraged to utilize existing accepted relation
+ definitions, including those in existing relation registries (see
+ &rfc4287). However, we define these relation here for clarity of
+ normative interpretation within the context of JSON hyper schema
+ defined relations:
+
+ self - If the relation value is "self", when this property is
+ encountered in the instance object, the object represents a
+ resource and the instance object is treated as a full
+ representation of the target resource identified by the specified
+ URI.
+
+ full - This indicates that the target of the link is the full
+ representation for the instance object. The object that contains
+ this link may not be the full representation.
+
+ describedby - This indicates the target of the link is the schema
+ for the instance object. This may be used to specifically denote
+ the schemas of objects within a JSON object hierarchy,
+ facilitating polymorphic type data structures.
+
+ The following relations are applicable for schemas (the schema as
+ the "from" resource in the relation).
+
+ instances - This indicates the target resource that represents
+ collection of instances of a schema.
+
+ create - This indicates a target to use for creating new instances
+ of a schema. This link definition SHOULD be a submission link
+ with a non-safe method (like POST).
+
+ For example, if a schema is defined:
+
+
+
+
+
+
+Zyp Expires September 24, 2010 [Page 15]
+\f
+Internet-Draft JSON Schema Media Type March 2010
+
+
+ {
+ "links": [
+ {
+ "rel": "self"
+ "href": "{id}"
+ },
+ {
+ "rel": "up"
+ "href": "{upId}"
+ },
+ {
+ "rel": "children"
+ "href": "?upId={id}"
+ }
+ ]
+ }
+
+ And if a collection of instance resource's JSON representation was
+ retrieved:
+
+
+ GET /Resource/
+
+ [
+ {
+ "id": "thing",
+ "upId": "parent"
+ },
+ {
+ "id": "thing2",
+ "upId": "parent"
+ }
+ ]
+
+ This would indicate that for the first item in the collection, it's
+ own (self) URI would resolve to "/Resource/thing" and the first
+ item's "up" relation should be resolved to the resource at
+ "/Resource/parent". The "children" collection would be located at
+ "/Resource/?upId=thing".
+
+6.1.1.2.1. targetSchema
+
+ This property value can be a schema that defines the expected
+ structure of the JSON representation of the target of the link.
+
+
+
+
+
+
+
+Zyp Expires September 24, 2010 [Page 16]
+\f
+Internet-Draft JSON Schema Media Type March 2010
+
+
+6.1.1.3. Submission Link Properties
+
+ The following properties also apply to link definition objects, and
+ provide functionality analogous to HTML forms, in providing a means
+ for submitting extra (often user supplied) information to send to a
+ server.
+
+6.1.1.3.1. method
+
+ This indicates which method should be used to access the target
+ resource. In an HTTP environment, this would be "GET" or "POST"
+ (other HTTP methods such as "PUT" and "DELETE" have semantics that
+ are clearly implied by accessed resources, and do not need to be
+ defined here). This defaults to "GET".
+
+6.1.1.3.2. enctype
+
+ If present, this property indicates a query media type format that
+ the server supports for querying or posting to the collection of
+ instances at the target resource. The query can be suffixed to the
+ target URI to query the collection with property-based constraints on
+ the resources that SHOULD be returned from the server or used to post
+ data to the resource (depending on the method). For example, with
+ the following schema:
+
+
+ {
+ "links":[
+ {
+ "enctype": "application/x-www-form-urlencoded",
+ "method": "GET",
+ "href": "/Product/",
+ "properties":{
+ "name":{"description":"name of the product"}
+ }
+ }
+ ]
+ }
+
+ This indicates that the client can query the server for instances
+ that have a specific name:
+
+
+ /Product/?name=Slinky
+
+ If no enctype or method is specified, only the single URI specified
+ by the href property is defined. If the method is POST, application/
+ json is the default media type.
+
+
+
+Zyp Expires September 24, 2010 [Page 17]
+\f
+Internet-Draft JSON Schema Media Type March 2010
+
+
+6.1.1.3.3. properties
+
+ This is inherited from the base JSON schema definition, and can
+ follow the same structure, but its meaning should be used to define
+ the acceptable property names and values for the action (whether it
+ be for the GET query or POST body). If properties are omitted, and
+ this form is the child of a schema, the properties from the parent
+ schema should be used as the basis for the form action.
+
+6.2. fragmentResolution
+
+ This property indicates the fragment resolution protocol to use for
+ resolving fragment identifiers in URIs within the instance
+ representations. This applies to the instance object URIs and all
+ children of the instance object's URIs. The default fragment
+ resolution protocol is "slash-delimited", which is defined below.
+ Other fragment resolution protocols may be used, but are not defined
+ in this document.
+
+ The fragment identifier is based on RFC 2396 Sec 5, and defines the
+ mechanism for resolving references to entities within a document.
+
+6.2.1. dot-delimited fragment resolution
+
+ With the dot-delimited fragment resolution protocol, the fragment
+ identifier is interpreted as a series of property reference tokens
+ that are delimited by the "." character (\x2E). Each property
+ reference token is a series of any legal URI component characters
+ except the "." character. Each property reference token should be
+ interpreted, starting from the beginning of the fragment identifier,
+ as a path reference in the target JSON structure. The final target
+ value of the fragment can be determined by starting with the root of
+ the JSON structure from the representation of the resource identified
+ by the pre-fragment URI. If the target is a JSON object, than the
+ new target is the value of the property with the name identified by
+ the next property reference token in the fragment. If the target is
+ a JSON array, than the target is determined by finding the item in
+ array the array with the index defined by the next property reference
+ token (which MUST be a number). The target is successively updated
+ for each property reference token, until the entire fragment has been
+ traversed.
+
+ Property names SHOULD be URI-encoded. In particular, any "." in a
+ property name MUST be encoded to avoid being interpreted as a
+ property delimiter.
+
+ For example, for the following JSON representation:
+
+
+
+
+Zyp Expires September 24, 2010 [Page 18]
+\f
+Internet-Draft JSON Schema Media Type March 2010
+
+
+ {
+ "foo":{
+ "anArray":[
+ {"prop":44}
+ ],
+ "another prop":{
+ "baz":"A string"
+ }
+ }
+ }
+
+ The following fragment identifiers would be resolved:
+
+
+ fragment identifier resolution
+ ------------------- ----------
+ # self, the root of the resource itself
+ #foo the object referred to by the foo property
+ #foo.another prop the object referred to by the "another prop"
+ property of the object referred to by the
+ "foo" property
+ #foo.another prop.baz the string referred to by the value of "baz"
+ property of the "another prop" property of
+ the object referred to by the "foo" property
+ #foo.anArray.0 the first object in the "anArray" array
+
+6.2.2. slash-delimited fragment resolution
+
+ The slash-delimited fragment resolution protocol is exactly the same
+ as dot-delimited fragment resolution protocol except that the "/"
+ character (\x2F) is used as the delimiter between property names
+ (instead of ".").
+
+6.3. root
+
+ This attribute indicates that the value of the instance property
+ value SHOULD be treated as the root or the body of the representation
+ for the purposes of user agent interaction and fragment resolution
+ (all other properties of the instance objects are can be regarded as
+ meta-data descriptions for the data).
+
+6.4. readonly
+
+ This indicates that the instance property should not be changed.
+ Attempts by a user agent to modify the value of this property are
+ expected to be rejected by a server.
+
+
+
+
+
+Zyp Expires September 24, 2010 [Page 19]
+\f
+Internet-Draft JSON Schema Media Type March 2010
+
+
+6.5. pathStart
+
+ This property value is a URI-Reference that indicates the URI that
+ all the URIs for the instances of the schema should start with. When
+ multiple schemas have been referenced for an instance, the user agent
+ can determine if this schema is applicable for a particular instance
+ by determining if URI of the instance begins with the pathStart's
+ referenced URI. pathStart MUST be resolved as per [RFC3986] section
+ 5. If the URI of the instance does not start with URI indicated by
+ pathStart, or if another schema specifies a starting URI that is
+ longer and also matches the instance, this schema should not be
+ applied to the instance. Any schema that does not have a pathStart
+ attribute should be considered applicable to all the instances for
+ which it is referenced.
+
+6.6. mediaType
+
+ This indicates the media type of the instance representations that
+ this schema is defining.
+
+6.7. alternate
+
+ This is an array of JSON schema definitions that define any other
+ schemas for alternate JSON-based representations of the instance
+ resources.
+
+7. Security Considerations
+
+ This specification is a sub-type of the JSON format, and consequently
+ the security considerations are generally the same as RFC 4627.
+ However, an additional issue is that when link relation of "self" is
+ used to denote a full representation of an object, the user agent
+ SHOULD NOT consider the representation to be the authoritative
+ representation of the resource denoted by the target URI if the
+ target URI is not equivalent to or a sub-path of the the URI used to
+ request the resource representation which contains the target URI
+ with the "self" link. For example, if a hyper schema was defined:
+
+
+ {
+ "links":[
+ {
+ "rel":"self",
+ "href":"{id}"
+ }
+ ]
+ }
+
+
+
+
+Zyp Expires September 24, 2010 [Page 20]
+\f
+Internet-Draft JSON Schema Media Type March 2010
+
+
+ And a resource was requested from somesite.com:
+
+
+ GET /foo/
+
+ With a response of:
+
+
+Content-Type: application/json; profile=/schema-for-this-data
+[
+ {"id":"bar", "name":"This representation can be safely treated \
+ as authoritative "},
+ {"id":"/baz", "name":"This representation should not be treated as \
+ authoritative the user agent should make request the resource\
+ from "/baz" to ensure it has the authoritative representation"},
+ {"id":"http://othersite.com/something", "name":"This representation\
+ should also not be treated as authoritative and the target\
+ resource representation should be retrieved for the\
+ authoritative representation"}
+]
+
+8. IANA Considerations
+
+ The proposed MIME media type for JSON Schema is application/
+ schema+json
+
+ Type name: application
+
+ Subtype name: schema+json
+
+ Required parameters: profile
+
+ The value of the profile parameter should be a URI (relative or
+ absolute) that refers to the schema used to define the structure of
+ this structure (the meta-schema). Normally the value would be
+ http://json-schema.org/hyper-schema, but it is allowable to use other
+ schemas that extend the hyper schema's meta- schema.
+
+ Optional parameters: pretty
+
+ The value of the pretty parameter may be true or false to indicate if
+ additional whitespace has been included to make the JSON
+ representation easier to read.
+
+8.1. Registry of Link Relations
+
+ This registry is maintained by IANA per RFC 4287 and this
+ specification adds three values: "full", "create", "instances". New
+
+
+
+Zyp Expires September 24, 2010 [Page 21]
+\f
+Internet-Draft JSON Schema Media Type March 2010
+
+
+ assignments are subject to IESG Approval, as outlined in [RFC5226].
+ Requests should be made by email to IANA, which will then forward the
+ request to the IESG, requesting approval.
+
+9. References
+
+9.1. Normative References
+
+ [RFC3986] Berners-Lee, T., Fielding, R., and
+ L. Masinter, "Uniform Resource
+ Identifier (URI): Generic Syntax",
+ STD 66, RFC 3986, January 2005.
+
+ [RFC2119] Bradner, S., "Key words for use in
+ RFCs to Indicate Requirement
+ Levels", BCP 14, RFC 2119,
+ March 1997.
+
+ [RFC4287] Nottingham, M., Ed. and R. Sayre,
+ Ed., "The Atom Syndication
+ Format", RFC 4287, December 2005.
+
+ [RFC3339] Klyne, G., Ed. and C. Newman,
+ "Date and Time on the Internet:
+ Timestamps", RFC 3339, July 2002.
+
+ [RFC2045] Freed, N. and N. Borenstein,
+ "Multipurpose Internet Mail
+ Extensions (MIME) Part One: Format
+ of Internet Message Bodies",
+ RFC 2045, November 1996.
+
+9.2. Informative References
+
+ [RFC4627] Crockford, D., "The application/
+ json Media Type for JavaScript
+ Object Notation (JSON)", RFC 4627,
+ July 2006.
+
+ [RFC2616] Fielding, R., Gettys, J., Mogul,
+ J., Frystyk, H., Masinter, L.,
+ Leach, P., and T. Berners-Lee,
+ "Hypertext Transfer Protocol --
+ HTTP/1.1", RFC 2616, June 1999.
+
+ [RFC5226] Narten, T. and H. Alvestrand,
+ "Guidelines for Writing an IANA
+ Considerations Section in RFCs",
+
+
+
+Zyp Expires September 24, 2010 [Page 22]
+\f
+Internet-Draft JSON Schema Media Type March 2010
+
+
+ BCP 26, RFC 5226, May 2008.
+
+ [I-D.hammer-discovery] Hammer-Lahav, E., "LRDD: Link-
+ based Resource Descriptor
+ Discovery",
+ draft-hammer-discovery-04 (work in
+ progress), March 2010.
+
+ [I-D.gregorio-uritemplate] Gregorio, J., Fielding, R.,
+ Hadley, M., and M. Nottingham,
+ "URI Template",
+ draft-gregorio-uritemplate-04
+ (work in progress), March 2010.
+
+ [I-D.nottingham-http-link-header] Nottingham, M., "Web Linking", dra
+ ft-nottingham-http-link-header-08
+ (work in progress), March 2010.
+
+ [W3C.REC-html401-19991224] Hors, A., Jacobs, I., and D.
+ Raggett, "HTML 4.01
+ Specification", World Wide Web
+ Consortium Recommendation REC-
+ html401-19991224, December 1999, <
+ http://www.w3.org/TR/1999/
+ REC-html401-19991224>.
+
+Appendix A. Change Log
+
+ -02
+
+ o Replaced maxDecimal attribute with divisibleBy attribute
+
+ o Added slash-delimited fragment resolution protocol and made it the
+ default.
+
+ o Added language about using links outside of schemas by referencing
+ it's normative URI.
+
+ o Added uniqueItems attribute
+
+ o Added targetSchema attribute to link description object
+
+ -01
+
+ o Fixed category and updates from template
+
+ -00
+
+
+
+
+Zyp Expires September 24, 2010 [Page 23]
+\f
+Internet-Draft JSON Schema Media Type March 2010
+
+
+ o Initial draft
+
+Appendix B. Open Issues
+
+ Should we give a preference to MIME headers over Link headers (or
+ only use one)?
+
+ Should we use "profile" as the media type parameter instead?
+
+ Should "root" be a MIME parameter instead of a schema attribute?
+
+ Should "format" be renamed to "mediaType" or "contentType" to reflect
+ the usage MIME media types that are allowed.
+
+ I still do not like how dates are handled.
+
+ Should "slash-delimited" or "dot-delimited" be the default fragment
+ resolution protocol?
+
+Author's Address
+
+ Kris Zyp (editor)
+ SitePen (USA)
+ 530 Lytton Avenue
+ Palo Alto, CA 94301
+ USA
+
+ Phone: +1 650 968 8787
+ EMail: kris@sitepen.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zyp Expires September 24, 2010 [Page 24]
+\f
+
DOC_SOURCE_DIR = ../../json-glib
# Extra options to pass to gtkdoc-scangobj. Not normally needed.
-SCANGOBJ_OPTIONS = --type-init-func="g_type_init()"
+SCANGOBJ_OPTIONS =
# Extra options to supply to gtkdoc-scan.
# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
# Extra options to supply to gtkdoc-mkdb.
# e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml
-MKDB_OPTIONS = --sgml-mode --output-format=xml --name-space=json
+MKDB_OPTIONS = --output-format=xml --name-space=json
# Extra options to supply to gtkdoc-mktmpl
# e.g. MKTMPL_OPTIONS=--only-section-tmpl
# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
FIXXREF_OPTIONS = \
--extra-dir=$(GLIB_PREFIX)/share/gtk-doc/html/glib \
- --extra-dir=$(GLIB_PREFIX)/share/gtk-doc/html/gobject
+ --extra-dir=$(GLIB_PREFIX)/share/gtk-doc/html/gobject \
+ --extra-dir=$(GLIB_PREFIX)/share/gtk-doc/html/gio
# Used for dependencies. The docs will be rebuilt if any of these change.
# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
json-private.h \
json-marshal.h \
json-glib.h \
- json-enum-types.h
+ json-enum-types.h \
+ json-debug.h
EXTRA_HFILES =
# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
-content_files = version.xml
+content_files = \
+ json-glib-format.xml \
+ json-glib-validate.xml \
+ version.xml
# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
# These files must be listed here *and* in content_files
# e.g. INCLUDES=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
-INCLUDES = -I$(top_srcdir) -I$(top_builddir) $(JSON_CFLAGS)
+AM_CPPFLAGS = -I$(top_srcdir) -I$(top_builddir) $(JSON_CFLAGS)
GTKDOC_LIBS = $(top_builddir)/json-glib/libjson-glib-1.0.la $(JSON_LIBS)
-# needed to avoid including Makefile.am.gtest which redeclares
-# EXTRA_DIST and generates a warning when the gtk-doc.make include
-# below
-test-report:
- @true
-
-test:
- @true
-
-check-local: test
-
# This includes the standard gtk-doc make rules, copied by gtkdocize.
include $(top_srcdir)/gtk-doc.make
-# Other files to distribute
-# e.g. EXTRA_DIST += version.xml.in
EXTRA_DIST += version.xml.in
+
+man_MANS =
+
+if ENABLE_MAN
+man_MANS += \
+ json-glib-format.1 \
+ json-glib-validate.1
+
+XSLTPROC_FLAGS = \
+ --nonet \
+ --stringparam man.output.quietly 1 \
+ --stringparam funcsynopsis.style ansi \
+ --stringparam man.th.extra1.suppress 1 \
+ --stringparam man.authors.section.enabled 0 \
+ --stringparam man.copyright.section.enabled 0
+
+.xml.1:
+ $(AM_V_GEN) $(XSLTPROC) $(XSLTPROC_FLAGS) http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $<
+
+endif
+
+CLEANFILES ?=
+CLEANFILES += $(man_MANS)
+EXTRA_DIST += $(man_MANS)
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>JsonGenerator</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="up" href="ch03.html" title="Generator">
-<link rel="prev" href="ch03.html" title="Generator">
-<link rel="next" href="json-advanced.html" title="Part IV. JSON-GLib Advanced API">
-<meta name="generator" content="GTK-Doc V1.13 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="part" href="json-glib.html" title="Part I. JSON-GLib Overview">
-<link rel="part" href="json-base.html" title="Part II. JSON-GLib Reference">
-<link rel="chapter" href="ch01.html" title="Data Types">
-<link rel="part" href="json-streams.html" title="Part III. Reading and writing">
-<link rel="chapter" href="ch02.html" title="Parser">
-<link rel="chapter" href="ch03.html" title="Generator">
-<link rel="part" href="json-advanced.html" title="Part IV. JSON-GLib Advanced API">
-<link rel="part" href="json-tools.html" title="Part V. JSON-GLib Additional Reference">
-<link rel="chapter" href="ch04.html" title="Object Hierarchy">
-<link rel="index" href="ix01.html" title="Index">
-<link rel="index" href="ix02.html" title="Index of deprecated symbols">
-<link rel="index" href="ix03.html" title="Index of new symbols in 0.4">
-<link rel="index" href="ix04.html" title="Index of new symbols in 0.6">
-<link rel="index" href="ix05.html" title="Index of new symbols in 0.8">
-<link rel="index" href="ix06.html" title="Index of new symbols in 0.10">
-<link rel="glossary" href="annotation-glossary.html" title="Annotation Glossary">
-<link rel="appendix" href="license.html" title="Appendix A. License">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
-<tr valign="middle">
-<td><a accesskey="p" href="ch03.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="ch03.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<th width="100%" align="center">JSON-GLib Reference Manual</th>
-<td><a accesskey="n" href="json-advanced.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-</tr>
-<tr><td colspan="5" class="shortcuts">
-<a href="#JsonGenerator.synopsis" class="shortcut">Top</a>
- |
- <a href="#JsonGenerator.description" class="shortcut">Description</a>
- |
- <a href="#JsonGenerator.object-hierarchy" class="shortcut">Object Hierarchy</a>
- |
- <a href="#JsonGenerator.properties" class="shortcut">Properties</a>
-</td></tr>
-</table>
-<div class="refentry" title="JsonGenerator">
-<a name="JsonGenerator"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle"><a name="JsonGenerator.top_of_page"></a>JsonGenerator</span></h2>
-<p>JsonGenerator — Generates JSON data streams</p>
-</td>
-<td valign="top" align="right"></td>
-</tr></table></div>
-<div class="refsynopsisdiv" title="Synopsis">
-<a name="JsonGenerator.synopsis"></a><h2>Synopsis</h2>
-<pre class="synopsis"> <a class="link" href="JsonGenerator.html#JsonGenerator-struct" title="JsonGenerator">JsonGenerator</a>;
- <a class="link" href="JsonGenerator.html#JsonGeneratorClass" title="JsonGeneratorClass">JsonGeneratorClass</a>;
-<a class="link" href="JsonGenerator.html" title="JsonGenerator"><span class="returnvalue">JsonGenerator</span></a> * <a class="link" href="JsonGenerator.html#json-generator-new" title="json_generator_new ()">json_generator_new</a> (void);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="JsonGenerator.html#json-generator-to-file" title="json_generator_to_file ()">json_generator_to_file</a> (<a class="link" href="JsonGenerator.html" title="JsonGenerator"><span class="returnvalue">JsonGenerator</span></a> *generator,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *filename,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="returnvalue">GError</span></a> **error);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="JsonGenerator.html#json-generator-to-data" title="json_generator_to_data ()">json_generator_to_data</a> (<a class="link" href="JsonGenerator.html" title="JsonGenerator"><span class="returnvalue">JsonGenerator</span></a> *generator,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gsize"><span class="returnvalue">gsize</span></a> *length);
-<span class="returnvalue">void</span> <a class="link" href="JsonGenerator.html#json-generator-set-root" title="json_generator_set_root ()">json_generator_set_root</a> (<a class="link" href="JsonGenerator.html" title="JsonGenerator"><span class="returnvalue">JsonGenerator</span></a> *generator,
- <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);
-</pre>
-</div>
-<div class="refsect1" title="Object Hierarchy">
-<a name="JsonGenerator.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="synopsis">
- <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
- +----JsonGenerator
-</pre>
-</div>
-<div class="refsect1" title="Properties">
-<a name="JsonGenerator.properties"></a><h2>Properties</h2>
-<pre class="synopsis">
- "<a class="link" href="JsonGenerator.html#JsonGenerator--indent" title='The "indent" property'>indent</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read / Write
- "<a class="link" href="JsonGenerator.html#JsonGenerator--indent-char" title='The "indent-char" property'>indent-char</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read / Write
- "<a class="link" href="JsonGenerator.html#JsonGenerator--pretty" title='The "pretty" property'>pretty</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write
- "<a class="link" href="JsonGenerator.html#JsonGenerator--root" title='The "root" property'>root</a>" <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>* : Read / Write
-</pre>
-</div>
-<div class="refsect1" title="Description">
-<a name="JsonGenerator.description"></a><h2>Description</h2>
-<p>
-<a class="link" href="JsonGenerator.html" title="JsonGenerator"><span class="type">JsonGenerator</span></a> provides an object for generating a JSON data stream and
-put it into a buffer or a file.</p>
-</div>
-<div class="refsect1" title="Details">
-<a name="JsonGenerator.details"></a><h2>Details</h2>
-<div class="refsect2" title="JsonGenerator">
-<a name="JsonGenerator-struct"></a><h3>JsonGenerator</h3>
-<pre class="programlisting">typedef struct _JsonGenerator JsonGenerator;</pre>
-<p>
-JSON data streams generator. The contents of the <a class="link" href="JsonGenerator.html" title="JsonGenerator"><span class="type">JsonGenerator</span></a> structure
-are private and should only be accessed via the provided API.</p>
-</div>
-<hr>
-<div class="refsect2" title="JsonGeneratorClass">
-<a name="JsonGeneratorClass"></a><h3>JsonGeneratorClass</h3>
-<pre class="programlisting">typedef struct {
-} JsonGeneratorClass;
-</pre>
-<p>
-<a class="link" href="JsonGenerator.html" title="JsonGenerator"><span class="type">JsonGenerator</span></a> class</p>
-</div>
-<hr>
-<div class="refsect2" title="json_generator_new ()">
-<a name="json-generator-new"></a><h3>json_generator_new ()</h3>
-<pre class="programlisting"><a class="link" href="JsonGenerator.html" title="JsonGenerator"><span class="returnvalue">JsonGenerator</span></a> * json_generator_new (void);</pre>
-<p>
-Creates a new <a class="link" href="JsonGenerator.html" title="JsonGenerator"><span class="type">JsonGenerator</span></a>. You can use this object to generate a
-JSON data stream starting from a data object model composed by
-<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>s.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody><tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> the newly created <a class="link" href="JsonGenerator.html" title="JsonGenerator"><span class="type">JsonGenerator</span></a> instance
-</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_generator_to_file ()">
-<a name="json-generator-to-file"></a><h3>json_generator_to_file ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> json_generator_to_file (<a class="link" href="JsonGenerator.html" title="JsonGenerator"><span class="returnvalue">JsonGenerator</span></a> *generator,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *filename,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="returnvalue">GError</span></a> **error);</pre>
-<p>
-Creates a JSON data stream and puts it inside <em class="parameter"><code>filename</code></em>, overwriting the
-current file contents. This operation is atomic.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>generator</code></em> :</span></p></td>
-<td> a <a class="link" href="JsonGenerator.html" title="JsonGenerator"><span class="type">JsonGenerator</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>filename</code></em> :</span></p></td>
-<td> path to the target file
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
-<td> return location for a <a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a>, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if saving was successful.
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_generator_to_data ()">
-<a name="json-generator-to-data"></a><h3>json_generator_to_data ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * json_generator_to_data (<a class="link" href="JsonGenerator.html" title="JsonGenerator"><span class="returnvalue">JsonGenerator</span></a> *generator,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gsize"><span class="returnvalue">gsize</span></a> *length);</pre>
-<p>
-Generates a JSON data stream from <em class="parameter"><code>generator</code></em> and returns it as a
-buffer.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>generator</code></em> :</span></p></td>
-<td> a <a class="link" href="JsonGenerator.html" title="JsonGenerator"><span class="type">JsonGenerator</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td>
-<td>out. <acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>. </td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> a newly allocated buffer holding a JSON data stream.
- Use <a href="http://library.gnome.org/devel/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> to free the allocated resources.
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_generator_set_root ()">
-<a name="json-generator-set-root"></a><h3>json_generator_set_root ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_generator_set_root (<a class="link" href="JsonGenerator.html" title="JsonGenerator"><span class="returnvalue">JsonGenerator</span></a> *generator,
- <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);</pre>
-<p>
-Sets <em class="parameter"><code>node</code></em> as the root of the JSON data stream to be serialized by
-the <a class="link" href="JsonGenerator.html" title="JsonGenerator"><span class="type">JsonGenerator</span></a>.
-</p>
-<p>
-</p>
-<div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;">
-<h3 class="title">Note</h3>The node is copied by the generator object, so it can be safely
-freed after calling this function.</div>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>generator</code></em> :</span></p></td>
-<td> a <a class="link" href="JsonGenerator.html" title="JsonGenerator"><span class="type">JsonGenerator</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<div class="refsect1" title="Property Details">
-<a name="JsonGenerator.property-details"></a><h2>Property Details</h2>
-<div class="refsect2" title='The "indent" property'>
-<a name="JsonGenerator--indent"></a><h3>The <code class="literal">"indent"</code> property</h3>
-<pre class="programlisting"> "indent" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read / Write</pre>
-<p>
-Number of spaces to be used to indent when pretty printing.</p>
-<p>Default value: 2</p>
-</div>
-<hr>
-<div class="refsect2" title='The "indent-char" property'>
-<a name="JsonGenerator--indent-char"></a><h3>The <code class="literal">"indent-char"</code> property</h3>
-<pre class="programlisting"> "indent-char" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read / Write</pre>
-<p>
-The character that should be used when indenting in pretty print.</p>
-<p>Default value: ' '</p>
-<p class="since">Since 0.6</p>
-</div>
-<hr>
-<div class="refsect2" title='The "pretty" property'>
-<a name="JsonGenerator--pretty"></a><h3>The <code class="literal">"pretty"</code> property</h3>
-<pre class="programlisting"> "pretty" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write</pre>
-<p>
-Whether the output should be "pretty-printed", with indentation and
-newlines. The indentation level can be controlled by using the
-JsonGenerator:indent property</p>
-<p>Default value: FALSE</p>
-</div>
-<hr>
-<div class="refsect2" title='The "root" property'>
-<a name="JsonGenerator--root"></a><h3>The <code class="literal">"root"</code> property</h3>
-<pre class="programlisting"> "root" <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>* : Read / Write</pre>
-<p>
-The root <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> to be used when constructing a JSON data
-stream.</p>
-<p class="since">Since 0.4</p>
-</div>
-</div>
-</div>
-<div class="footer">
-<hr>
- Generated by GTK-Doc V1.13</div>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>JsonParser</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="up" href="ch02.html" title="Parser">
-<link rel="prev" href="ch02.html" title="Parser">
-<link rel="next" href="ch03.html" title="Generator">
-<meta name="generator" content="GTK-Doc V1.13 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="part" href="json-glib.html" title="Part I. JSON-GLib Overview">
-<link rel="part" href="json-base.html" title="Part II. JSON-GLib Reference">
-<link rel="chapter" href="ch01.html" title="Data Types">
-<link rel="part" href="json-streams.html" title="Part III. Reading and writing">
-<link rel="chapter" href="ch02.html" title="Parser">
-<link rel="chapter" href="ch03.html" title="Generator">
-<link rel="part" href="json-advanced.html" title="Part IV. JSON-GLib Advanced API">
-<link rel="part" href="json-tools.html" title="Part V. JSON-GLib Additional Reference">
-<link rel="chapter" href="ch04.html" title="Object Hierarchy">
-<link rel="index" href="ix01.html" title="Index">
-<link rel="index" href="ix02.html" title="Index of deprecated symbols">
-<link rel="index" href="ix03.html" title="Index of new symbols in 0.4">
-<link rel="index" href="ix04.html" title="Index of new symbols in 0.6">
-<link rel="index" href="ix05.html" title="Index of new symbols in 0.8">
-<link rel="index" href="ix06.html" title="Index of new symbols in 0.10">
-<link rel="glossary" href="annotation-glossary.html" title="Annotation Glossary">
-<link rel="appendix" href="license.html" title="Appendix A. License">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
-<tr valign="middle">
-<td><a accesskey="p" href="ch02.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<th width="100%" align="center">JSON-GLib Reference Manual</th>
-<td><a accesskey="n" href="ch03.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-</tr>
-<tr><td colspan="5" class="shortcuts">
-<a href="#JsonParser.synopsis" class="shortcut">Top</a>
- |
- <a href="#JsonParser.description" class="shortcut">Description</a>
- |
- <a href="#JsonParser.object-hierarchy" class="shortcut">Object Hierarchy</a>
- |
- <a href="#JsonParser.signals" class="shortcut">Signals</a>
-</td></tr>
-</table>
-<div class="refentry" title="JsonParser">
-<a name="JsonParser"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle"><a name="JsonParser.top_of_page"></a>JsonParser</span></h2>
-<p>JsonParser — Parse JSON data streams</p>
-</td>
-<td valign="top" align="right"></td>
-</tr></table></div>
-<div class="refsynopsisdiv" title="Synopsis">
-<a name="JsonParser.synopsis"></a><h2>Synopsis</h2>
-<pre class="synopsis">enum <a class="link" href="JsonParser.html#JsonParserError" title="enum JsonParserError">JsonParserError</a>;
-
- <a class="link" href="JsonParser.html#JsonParser-struct" title="JsonParser">JsonParser</a>;
- <a class="link" href="JsonParser.html#JsonParserClass" title="JsonParserClass">JsonParserClass</a>;
-<a class="link" href="JsonParser.html" title="JsonParser"><span class="returnvalue">JsonParser</span></a> * <a class="link" href="JsonParser.html#json-parser-new" title="json_parser_new ()">json_parser_new</a> (void);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="JsonParser.html#json-parser-load-from-file" title="json_parser_load_from_file ()">json_parser_load_from_file</a> (<a class="link" href="JsonParser.html" title="JsonParser"><span class="returnvalue">JsonParser</span></a> *parser,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *filename,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="returnvalue">GError</span></a> **error);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="JsonParser.html#json-parser-load-from-data" title="json_parser_load_from_data ()">json_parser_load_from_data</a> (<a class="link" href="JsonParser.html" title="JsonParser"><span class="returnvalue">JsonParser</span></a> *parser,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *data,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gssize"><span class="returnvalue">gssize</span></a> length,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="returnvalue">GError</span></a> **error);
-
-<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> * <a class="link" href="JsonParser.html#json-parser-get-root" title="json_parser_get_root ()">json_parser_get_root</a> (<a class="link" href="JsonParser.html" title="JsonParser"><span class="returnvalue">JsonParser</span></a> *parser);
-
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> <a class="link" href="JsonParser.html#json-parser-get-current-line" title="json_parser_get_current_line ()">json_parser_get_current_line</a> (<a class="link" href="JsonParser.html" title="JsonParser"><span class="returnvalue">JsonParser</span></a> *parser);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> <a class="link" href="JsonParser.html#json-parser-get-current-pos" title="json_parser_get_current_pos ()">json_parser_get_current_pos</a> (<a class="link" href="JsonParser.html" title="JsonParser"><span class="returnvalue">JsonParser</span></a> *parser);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="JsonParser.html#json-parser-has-assignment" title="json_parser_has_assignment ()">json_parser_has_assignment</a> (<a class="link" href="JsonParser.html" title="JsonParser"><span class="returnvalue">JsonParser</span></a> *parser,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> **variable_name);
-</pre>
-</div>
-<div class="refsect1" title="Object Hierarchy">
-<a name="JsonParser.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="synopsis">
- <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
- +----JsonParser
-</pre>
-</div>
-<div class="refsect1" title="Signals">
-<a name="JsonParser.signals"></a><h2>Signals</h2>
-<pre class="synopsis">
- "<a class="link" href="JsonParser.html#JsonParser-array-element" title='The "array-element" signal'>array-element</a>" : Run Last
- "<a class="link" href="JsonParser.html#JsonParser-array-end" title='The "array-end" signal'>array-end</a>" : Run Last
- "<a class="link" href="JsonParser.html#JsonParser-array-start" title='The "array-start" signal'>array-start</a>" : Run Last
- "<a class="link" href="JsonParser.html#JsonParser-error" title='The "error" signal'>error</a>" : Run Last
- "<a class="link" href="JsonParser.html#JsonParser-object-end" title='The "object-end" signal'>object-end</a>" : Run Last
- "<a class="link" href="JsonParser.html#JsonParser-object-member" title='The "object-member" signal'>object-member</a>" : Run Last
- "<a class="link" href="JsonParser.html#JsonParser-object-start" title='The "object-start" signal'>object-start</a>" : Run Last
- "<a class="link" href="JsonParser.html#JsonParser-parse-end" title='The "parse-end" signal'>parse-end</a>" : Run Last
- "<a class="link" href="JsonParser.html#JsonParser-parse-start" title='The "parse-start" signal'>parse-start</a>" : Run Last
-</pre>
-</div>
-<div class="refsect1" title="Description">
-<a name="JsonParser.description"></a><h2>Description</h2>
-<p>
-<a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a> provides an object for parsing a JSON data stream, either
-inside a file or inside a static buffer.</p>
-</div>
-<div class="refsect1" title="Details">
-<a name="JsonParser.details"></a><h2>Details</h2>
-<div class="refsect2" title="enum JsonParserError">
-<a name="JsonParserError"></a><h3>enum JsonParserError</h3>
-<pre class="programlisting">typedef enum {
- JSON_PARSER_ERROR_PARSE,
-
- JSON_PARSER_ERROR_UNKNOWN
-} JsonParserError;
-</pre>
-<p>
-Error enumeration for <a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><a name="JSON-PARSER-ERROR-PARSE:CAPS"></a><span class="term"><code class="literal">JSON_PARSER_ERROR_PARSE</code></span></p></td>
-<td> parse error
-</td>
-</tr>
-<tr>
-<td><p><a name="JSON-PARSER-ERROR-UNKNOWN:CAPS"></a><span class="term"><code class="literal">JSON_PARSER_ERROR_UNKNOWN</code></span></p></td>
-<td> unknown error
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="JsonParser">
-<a name="JsonParser-struct"></a><h3>JsonParser</h3>
-<pre class="programlisting">typedef struct _JsonParser JsonParser;</pre>
-<p>
-JSON data streams parser. The contents of the <a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a> structure are
-private and should only be accessed via the provided API.</p>
-</div>
-<hr>
-<div class="refsect2" title="JsonParserClass">
-<a name="JsonParserClass"></a><h3>JsonParserClass</h3>
-<pre class="programlisting">typedef struct {
- void (* parse_start) (JsonParser *parser);
-
- void (* object_start) (JsonParser *parser);
- void (* object_member) (JsonParser *parser,
- JsonObject *object,
- const gchar *member_name);
- void (* object_end) (JsonParser *parser,
- JsonObject *object);
-
- void (* array_start) (JsonParser *parser);
- void (* array_element) (JsonParser *parser,
- JsonArray *array,
- gint index_);
- void (* array_end) (JsonParser *parser,
- JsonArray *array);
-
- void (* parse_end) (JsonParser *parser);
-
- void (* error) (JsonParser *parser,
- const GError *error);
-} JsonParserClass;
-</pre>
-<p>
-<a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a> class.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="structfield"><code><a name="JsonParserClass.parse-start"></a>parse_start</code></em> ()</span></p></td>
-<td> class handler for the JsonParser::parse-start signal
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="structfield"><code><a name="JsonParserClass.object-start"></a>object_start</code></em> ()</span></p></td>
-<td> class handler for the JsonParser::object-start signal
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="structfield"><code><a name="JsonParserClass.object-member"></a>object_member</code></em> ()</span></p></td>
-<td> class handler for the JsonParser::object-member signal
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="structfield"><code><a name="JsonParserClass.object-end"></a>object_end</code></em> ()</span></p></td>
-<td> class handler for the JsonParser::object-end signal
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="structfield"><code><a name="JsonParserClass.array-start"></a>array_start</code></em> ()</span></p></td>
-<td> class handler for the JsonParser::array-start signal
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="structfield"><code><a name="JsonParserClass.array-element"></a>array_element</code></em> ()</span></p></td>
-<td> class handler for the JsonParser::array-element signal
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="structfield"><code><a name="JsonParserClass.array-end"></a>array_end</code></em> ()</span></p></td>
-<td> class handler for the JsonParser::array-end signal
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="structfield"><code><a name="JsonParserClass.parse-end"></a>parse_end</code></em> ()</span></p></td>
-<td> class handler for the JsonParser::parse-end signal
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="structfield"><code><a name="JsonParserClass.error"></a>error</code></em> ()</span></p></td>
-<td> class handler for the JsonParser::error signal
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_parser_new ()">
-<a name="json-parser-new"></a><h3>json_parser_new ()</h3>
-<pre class="programlisting"><a class="link" href="JsonParser.html" title="JsonParser"><span class="returnvalue">JsonParser</span></a> * json_parser_new (void);</pre>
-<p>
-Creates a new <a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a> instance. You can use the <a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a> to
-load a JSON stream from either a file or a buffer and then walk the
-hierarchy using the data types API.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody><tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> the newly created <a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a>. Use <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>
- to release all the memory it allocates.
-</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_parser_load_from_file ()">
-<a name="json-parser-load-from-file"></a><h3>json_parser_load_from_file ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> json_parser_load_from_file (<a class="link" href="JsonParser.html" title="JsonParser"><span class="returnvalue">JsonParser</span></a> *parser,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *filename,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="returnvalue">GError</span></a> **error);</pre>
-<p>
-Loads a JSON stream from the content of <em class="parameter"><code>filename</code></em> and parses it. See
-<a class="link" href="JsonParser.html#json-parser-load-from-data" title="json_parser_load_from_data ()"><code class="function">json_parser_load_from_data()</code></a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>parser</code></em> :</span></p></td>
-<td> a <a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>filename</code></em> :</span></p></td>
-<td> the path for the file to parse
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
-<td> return location for a <a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a>, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the file was successfully loaded and parsed.
- In case of error, <em class="parameter"><code>error</code></em> is set accordingly and <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> is returned
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_parser_load_from_data ()">
-<a name="json-parser-load-from-data"></a><h3>json_parser_load_from_data ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> json_parser_load_from_data (<a class="link" href="JsonParser.html" title="JsonParser"><span class="returnvalue">JsonParser</span></a> *parser,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *data,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gssize"><span class="returnvalue">gssize</span></a> length,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="returnvalue">GError</span></a> **error);</pre>
-<p>
-Loads a JSON stream from a buffer and parses it. You can call this function
-multiple times with the same <a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a> object, but the contents of the
-parser will be destroyed each time.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>parser</code></em> :</span></p></td>
-<td> a <a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>data</code></em> :</span></p></td>
-<td> the buffer to parse
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td>
-<td> the length of the buffer, or -1
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
-<td> return location for a <a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a>, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the buffer was succesfully parser. In case
- of error, <em class="parameter"><code>error</code></em> is set accordingly and <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> is returned
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_parser_get_root ()">
-<a name="json-parser-get-root"></a><h3>json_parser_get_root ()</h3>
-<pre class="programlisting"><a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> * json_parser_get_root (<a class="link" href="JsonParser.html" title="JsonParser"><span class="returnvalue">JsonParser</span></a> *parser);</pre>
-<p>
-Retrieves the top level node from the parsed JSON stream.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>parser</code></em> :</span></p></td>
-<td> a <a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>transfer none. <acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>. </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_parser_get_current_line ()">
-<a name="json-parser-get-current-line"></a><h3>json_parser_get_current_line ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> json_parser_get_current_line (<a class="link" href="JsonParser.html" title="JsonParser"><span class="returnvalue">JsonParser</span></a> *parser);</pre>
-<p>
-Retrieves the line currently parsed, starting from 1.
-</p>
-<p>
-This function has defined behaviour only while parsing; calling this
-function from outside the signal handlers emitted by <a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a> will
-yield 0.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>parser</code></em> :</span></p></td>
-<td> a <a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> the currently parsed line, or 0.
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_parser_get_current_pos ()">
-<a name="json-parser-get-current-pos"></a><h3>json_parser_get_current_pos ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> json_parser_get_current_pos (<a class="link" href="JsonParser.html" title="JsonParser"><span class="returnvalue">JsonParser</span></a> *parser);</pre>
-<p>
-Retrieves the current position inside the current line, starting
-from 0.
-</p>
-<p>
-This function has defined behaviour only while parsing; calling this
-function from outside the signal handlers emitted by <a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a> will
-yield 0.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>parser</code></em> :</span></p></td>
-<td> a <a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> the position in the current line, or 0.
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_parser_has_assignment ()">
-<a name="json-parser-has-assignment"></a><h3>json_parser_has_assignment ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> json_parser_has_assignment (<a class="link" href="JsonParser.html" title="JsonParser"><span class="returnvalue">JsonParser</span></a> *parser,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> **variable_name);</pre>
-<p>
-A JSON data stream might sometimes contain an assignment, like:
-</p>
-<p>
-</p>
-<div class="informalexample"><pre class="programlisting">
- var _json_data = { "member_name" : [ ...
-</pre></div>
-<p>
-</p>
-<p>
-even though it would technically constitute a violation of the RFC.
-</p>
-<p>
-<a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a> will ignore the left hand identifier and parse the right
-hand value of the assignment. <a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a> will record, though, the
-existence of the assignment in the data stream and the variable name
-used.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>parser</code></em> :</span></p></td>
-<td> a <a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>variable_name</code></em> :</span></p></td>
-<td>out) (allow-none. <acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>. <acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>. </td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if there was an assignment, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise. If
- <em class="parameter"><code>variable_name</code></em> is not <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> it will be set to the name of the variable
- used in the assignment. The string is owned by <a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a> and should
- never be modified or freed.
-
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.4</p>
-</div>
-</div>
-<div class="refsect1" title="Signal Details">
-<a name="JsonParser.signal-details"></a><h2>Signal Details</h2>
-<div class="refsect2" title='The "array-element" signal'>
-<a name="JsonParser-array-element"></a><h3>The <code class="literal">"array-element"</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a> *parser,
- <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a> *array,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> index_,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : Run Last</pre>
-<p>
-The ::array-element signal is emitted each time the <a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a>
-has successfully parsed a single element of a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>. The
-array and element index are passed to the signal handlers.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>parser</code></em> :</span></p></td>
-<td> the <a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a> that received the signal
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>array</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>index_</code></em> :</span></p></td>
-<td> the index of the newly parsed element
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>user data set when the signal handler was connected.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title='The "array-end" signal'>
-<a name="JsonParser-array-end"></a><h3>The <code class="literal">"array-end"</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a> *parser,
- <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a> *array,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : Run Last</pre>
-<p>
-The ::array-end signal is emitted each time the <a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a>
-has successfully parsed an entire <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>parser</code></em> :</span></p></td>
-<td> the <a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a> that received the signal
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>array</code></em> :</span></p></td>
-<td> the parsed <span class="type">JsonArrary</span>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>user data set when the signal handler was connected.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title='The "array-start" signal'>
-<a name="JsonParser-array-start"></a><h3>The <code class="literal">"array-start"</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a> *parser,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : Run Last</pre>
-<p>
-The ::array-start signal is emitted each time the <a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a>
-starts parsing a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>parser</code></em> :</span></p></td>
-<td> the <a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a> that received the signal
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>user data set when the signal handler was connected.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title='The "error" signal'>
-<a name="JsonParser-error"></a><h3>The <code class="literal">"error"</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a> *parser,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> error,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : Run Last</pre>
-<p>
-The ::error signal is emitted each time a <a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a> encounters
-an error in a JSON stream.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>parser</code></em> :</span></p></td>
-<td> the parser instance that received the signal
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
-<td> a pointer to the <a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>user data set when the signal handler was connected.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title='The "object-end" signal'>
-<a name="JsonParser-object-end"></a><h3>The <code class="literal">"object-end"</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a> *parser,
- <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a> *object,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : Run Last</pre>
-<p>
-The ::object-end signal is emitted each time the <a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a>
-has successfully parsed an entire <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>parser</code></em> :</span></p></td>
-<td> the <a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a> that received the signal
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td> the parsed <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>user data set when the signal handler was connected.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title='The "object-member" signal'>
-<a name="JsonParser-object-member"></a><h3>The <code class="literal">"object-member"</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a> *parser,
- <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a> *object,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *member_name,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : Run Last</pre>
-<p>
-The ::object-member signal is emitted each time the <a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a>
-has successfully parsed a single member of a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>. The
-object and member are passed to the signal handlers.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>parser</code></em> :</span></p></td>
-<td> the <a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a> that received the signal
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>member_name</code></em> :</span></p></td>
-<td> the name of the newly parsed member
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>user data set when the signal handler was connected.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title='The "object-start" signal'>
-<a name="JsonParser-object-start"></a><h3>The <code class="literal">"object-start"</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a> *parser,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : Run Last</pre>
-<p>
-The ::object-start signal is emitted each time the <a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a>
-starts parsing a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>parser</code></em> :</span></p></td>
-<td> the <a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a> that received the signal
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>user data set when the signal handler was connected.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title='The "parse-end" signal'>
-<a name="JsonParser-parse-end"></a><h3>The <code class="literal">"parse-end"</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a> *parser,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : Run Last</pre>
-<p>
-The ::parse-end signal is emitted when the parser successfully
-finished parsing a JSON data stream</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>parser</code></em> :</span></p></td>
-<td> the <a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a> that received the signal
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>user data set when the signal handler was connected.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title='The "parse-start" signal'>
-<a name="JsonParser-parse-start"></a><h3>The <code class="literal">"parse-start"</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a> *parser,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : Run Last</pre>
-<p>
-The ::parse-start signal is emitted when the parser began parsing
-a JSON data stream.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>parser</code></em> :</span></p></td>
-<td> the <a class="link" href="JsonParser.html" title="JsonParser"><span class="type">JsonParser</span></a> that received the signal
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>user data set when the signal handler was connected.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-</div>
-<div class="footer">
-<hr>
- Generated by GTK-Doc V1.13</div>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Annotation Glossary</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="up" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="prev" href="ix06.html" title="Index of new symbols in 0.10">
-<link rel="next" href="license.html" title="Appendix A. License">
-<meta name="generator" content="GTK-Doc V1.13 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="part" href="json-glib.html" title="Part I. JSON-GLib Overview">
-<link rel="part" href="json-base.html" title="Part II. JSON-GLib Reference">
-<link rel="chapter" href="ch01.html" title="Data Types">
-<link rel="part" href="json-streams.html" title="Part III. Reading and writing">
-<link rel="chapter" href="ch02.html" title="Parser">
-<link rel="chapter" href="ch03.html" title="Generator">
-<link rel="part" href="json-advanced.html" title="Part IV. JSON-GLib Advanced API">
-<link rel="part" href="json-tools.html" title="Part V. JSON-GLib Additional Reference">
-<link rel="chapter" href="ch04.html" title="Object Hierarchy">
-<link rel="index" href="ix01.html" title="Index">
-<link rel="index" href="ix02.html" title="Index of deprecated symbols">
-<link rel="index" href="ix03.html" title="Index of new symbols in 0.4">
-<link rel="index" href="ix04.html" title="Index of new symbols in 0.6">
-<link rel="index" href="ix05.html" title="Index of new symbols in 0.8">
-<link rel="index" href="ix06.html" title="Index of new symbols in 0.10">
-<link rel="glossary" href="annotation-glossary.html" title="Annotation Glossary">
-<link rel="appendix" href="license.html" title="Appendix A. License">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
-<tr valign="middle">
-<td><a accesskey="p" href="ix06.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td> </td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<th width="100%" align="center">JSON-GLib Reference Manual</th>
-<td><a accesskey="n" href="license.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-</tr>
-<tr><td colspan="5" class="shortcuts">
-<a class="shortcut" href="#glsO">O</a>
- |
- <a class="shortcut" href="#glsA">A</a>
- |
- <a class="shortcut" href="#glsE">E</a>
- |
- <a class="shortcut" href="#glsT">T</a>
-</td></tr>
-</table>
-<div class="glossary" title="Annotation Glossary">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="annotation-glossary"></a>Annotation Glossary</h2></div></div></div>
-<a name="glsO"></a><h3 class="title">O</h3>
-<dt>
-<a name="annotation-glossterm-out"></a>out</dt>
-<dd><p>Parameter for returning results. Default is <acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>.</p></dd>
-<a name="glsA"></a><h3 class="title">A</h3>
-<dt>
-<a name="annotation-glossterm-allow-none"></a>allow-none</dt>
-<dd><p>NULL is ok, both for passing and for returning.</p></dd>
-<a name="glsE"></a><h3 class="title">E</h3>
-<dt>
-<a name="annotation-glossterm-element-type"></a>element-type</dt>
-<dd><p>Generics and defining elements of containers and arrays.</p></dd>
-<a name="glsT"></a><h3 class="title">T</h3>
-<dt>
-<a name="annotation-glossterm-transfer%20container"></a>transfer container</dt>
-<dd><p>Free data container after the code is done.</p></dd>
-<dt>
-<a name="annotation-glossterm-transfer%20full"></a>transfer full</dt>
-<dd><p>Free data after the code is done.</p></dd>
-<dt>
-<a name="annotation-glossterm-transfer%20none"></a>transfer none</dt>
-<dd><p>Don't free data after the code is done.</p></dd>
-</div>
-<div class="footer">
-<hr>
- Generated by GTK-Doc V1.13</div>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Data Types</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="up" href="json-base.html" title="Part II. JSON-GLib Reference">
-<link rel="prev" href="json-base.html" title="Part II. JSON-GLib Reference">
-<link rel="next" href="json-glib-JSON-Node.html" title="JSON Node">
-<meta name="generator" content="GTK-Doc V1.13 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="part" href="json-glib.html" title="Part I. JSON-GLib Overview">
-<link rel="part" href="json-base.html" title="Part II. JSON-GLib Reference">
-<link rel="chapter" href="ch01.html" title="Data Types">
-<link rel="part" href="json-streams.html" title="Part III. Reading and writing">
-<link rel="chapter" href="ch02.html" title="Parser">
-<link rel="chapter" href="ch03.html" title="Generator">
-<link rel="part" href="json-advanced.html" title="Part IV. JSON-GLib Advanced API">
-<link rel="part" href="json-tools.html" title="Part V. JSON-GLib Additional Reference">
-<link rel="chapter" href="ch04.html" title="Object Hierarchy">
-<link rel="index" href="ix01.html" title="Index">
-<link rel="index" href="ix02.html" title="Index of deprecated symbols">
-<link rel="index" href="ix03.html" title="Index of new symbols in 0.4">
-<link rel="index" href="ix04.html" title="Index of new symbols in 0.6">
-<link rel="index" href="ix05.html" title="Index of new symbols in 0.8">
-<link rel="index" href="ix06.html" title="Index of new symbols in 0.10">
-<link rel="glossary" href="annotation-glossary.html" title="Annotation Glossary">
-<link rel="appendix" href="license.html" title="Appendix A. License">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="json-base.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="json-base.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<th width="100%" align="center">JSON-GLib Reference Manual</th>
-<td><a accesskey="n" href="json-glib-JSON-Node.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="chapter" title="Data Types">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="id3095108"></a>Data Types</h2></div></div></div>
-<div class="toc"><dl>
-<dt>
-<span class="refentrytitle"><a href="json-glib-JSON-Node.html">JSON Node</a></span><span class="refpurpose"> — Node in a JSON object model</span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="json-glib-JSON-Array.html">JSON Array</a></span><span class="refpurpose"> — a JSON array representation</span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="json-glib-JSON-Object.html">JSON Object</a></span><span class="refpurpose"> — a JSON object representation</span>
-</dt>
-</dl></div>
-</div>
-<div class="footer">
-<hr>
- Generated by GTK-Doc V1.13</div>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Parser</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="up" href="json-streams.html" title="Part III. Reading and writing">
-<link rel="prev" href="json-streams.html" title="Part III. Reading and writing">
-<link rel="next" href="JsonParser.html" title="JsonParser">
-<meta name="generator" content="GTK-Doc V1.13 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="part" href="json-glib.html" title="Part I. JSON-GLib Overview">
-<link rel="part" href="json-base.html" title="Part II. JSON-GLib Reference">
-<link rel="chapter" href="ch01.html" title="Data Types">
-<link rel="part" href="json-streams.html" title="Part III. Reading and writing">
-<link rel="chapter" href="ch02.html" title="Parser">
-<link rel="chapter" href="ch03.html" title="Generator">
-<link rel="part" href="json-advanced.html" title="Part IV. JSON-GLib Advanced API">
-<link rel="part" href="json-tools.html" title="Part V. JSON-GLib Additional Reference">
-<link rel="chapter" href="ch04.html" title="Object Hierarchy">
-<link rel="index" href="ix01.html" title="Index">
-<link rel="index" href="ix02.html" title="Index of deprecated symbols">
-<link rel="index" href="ix03.html" title="Index of new symbols in 0.4">
-<link rel="index" href="ix04.html" title="Index of new symbols in 0.6">
-<link rel="index" href="ix05.html" title="Index of new symbols in 0.8">
-<link rel="index" href="ix06.html" title="Index of new symbols in 0.10">
-<link rel="glossary" href="annotation-glossary.html" title="Annotation Glossary">
-<link rel="appendix" href="license.html" title="Appendix A. License">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="json-streams.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="json-streams.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<th width="100%" align="center">JSON-GLib Reference Manual</th>
-<td><a accesskey="n" href="JsonParser.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="chapter" title="Parser">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="id3055767"></a>Parser</h2></div></div></div>
-<div class="toc"><dl><dt>
-<span class="refentrytitle"><a href="JsonParser.html">JsonParser</a></span><span class="refpurpose"> — Parse JSON data streams</span>
-</dt></dl></div>
-</div>
-<div class="footer">
-<hr>
- Generated by GTK-Doc V1.13</div>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Generator</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="up" href="json-streams.html" title="Part III. Reading and writing">
-<link rel="prev" href="JsonParser.html" title="JsonParser">
-<link rel="next" href="JsonGenerator.html" title="JsonGenerator">
-<meta name="generator" content="GTK-Doc V1.13 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="part" href="json-glib.html" title="Part I. JSON-GLib Overview">
-<link rel="part" href="json-base.html" title="Part II. JSON-GLib Reference">
-<link rel="chapter" href="ch01.html" title="Data Types">
-<link rel="part" href="json-streams.html" title="Part III. Reading and writing">
-<link rel="chapter" href="ch02.html" title="Parser">
-<link rel="chapter" href="ch03.html" title="Generator">
-<link rel="part" href="json-advanced.html" title="Part IV. JSON-GLib Advanced API">
-<link rel="part" href="json-tools.html" title="Part V. JSON-GLib Additional Reference">
-<link rel="chapter" href="ch04.html" title="Object Hierarchy">
-<link rel="index" href="ix01.html" title="Index">
-<link rel="index" href="ix02.html" title="Index of deprecated symbols">
-<link rel="index" href="ix03.html" title="Index of new symbols in 0.4">
-<link rel="index" href="ix04.html" title="Index of new symbols in 0.6">
-<link rel="index" href="ix05.html" title="Index of new symbols in 0.8">
-<link rel="index" href="ix06.html" title="Index of new symbols in 0.10">
-<link rel="glossary" href="annotation-glossary.html" title="Annotation Glossary">
-<link rel="appendix" href="license.html" title="Appendix A. License">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="JsonParser.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="json-streams.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<th width="100%" align="center">JSON-GLib Reference Manual</th>
-<td><a accesskey="n" href="JsonGenerator.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="chapter" title="Generator">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="id3055778"></a>Generator</h2></div></div></div>
-<div class="toc"><dl><dt>
-<span class="refentrytitle"><a href="JsonGenerator.html">JsonGenerator</a></span><span class="refpurpose"> — Generates JSON data streams</span>
-</dt></dl></div>
-</div>
-<div class="footer">
-<hr>
- Generated by GTK-Doc V1.13</div>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Object Hierarchy</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="up" href="json-tools.html" title="Part V. JSON-GLib Additional Reference">
-<link rel="prev" href="json-glib-Versioning-information.html" title="Versioning information">
-<link rel="next" href="ix01.html" title="Index">
-<meta name="generator" content="GTK-Doc V1.13 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="part" href="json-glib.html" title="Part I. JSON-GLib Overview">
-<link rel="part" href="json-base.html" title="Part II. JSON-GLib Reference">
-<link rel="chapter" href="ch01.html" title="Data Types">
-<link rel="part" href="json-streams.html" title="Part III. Reading and writing">
-<link rel="chapter" href="ch02.html" title="Parser">
-<link rel="chapter" href="ch03.html" title="Generator">
-<link rel="part" href="json-advanced.html" title="Part IV. JSON-GLib Advanced API">
-<link rel="part" href="json-tools.html" title="Part V. JSON-GLib Additional Reference">
-<link rel="chapter" href="ch04.html" title="Object Hierarchy">
-<link rel="index" href="ix01.html" title="Index">
-<link rel="index" href="ix02.html" title="Index of deprecated symbols">
-<link rel="index" href="ix03.html" title="Index of new symbols in 0.4">
-<link rel="index" href="ix04.html" title="Index of new symbols in 0.6">
-<link rel="index" href="ix05.html" title="Index of new symbols in 0.8">
-<link rel="index" href="ix06.html" title="Index of new symbols in 0.10">
-<link rel="glossary" href="annotation-glossary.html" title="Annotation Glossary">
-<link rel="appendix" href="license.html" title="Appendix A. License">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="json-glib-Versioning-information.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="json-tools.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<th width="100%" align="center">JSON-GLib Reference Manual</th>
-<td><a accesskey="n" href="ix01.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="chapter" title="Object Hierarchy">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="id3055825"></a>Object Hierarchy</h2></div></div></div>
-<pre class="screen">
- <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
- <a class="link" href="JsonGenerator.html" title="JsonGenerator">JsonGenerator</a>
- <a class="link" href="JsonParser.html" title="JsonParser">JsonParser</a>
-</pre>
-</div>
-<div class="footer">
-<hr>
- Generated by GTK-Doc V1.13</div>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>JSON-GLib Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="next" href="json-glib.html" title="Part I. JSON-GLib Overview">
-<meta name="generator" content="GTK-Doc V1.13 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="part" href="json-glib.html" title="Part I. JSON-GLib Overview">
-<link rel="part" href="json-base.html" title="Part II. JSON-GLib Reference">
-<link rel="chapter" href="ch01.html" title="Data Types">
-<link rel="part" href="json-streams.html" title="Part III. Reading and writing">
-<link rel="chapter" href="ch02.html" title="Parser">
-<link rel="chapter" href="ch03.html" title="Generator">
-<link rel="part" href="json-advanced.html" title="Part IV. JSON-GLib Advanced API">
-<link rel="part" href="json-tools.html" title="Part V. JSON-GLib Additional Reference">
-<link rel="chapter" href="ch04.html" title="Object Hierarchy">
-<link rel="index" href="ix01.html" title="Index">
-<link rel="index" href="ix02.html" title="Index of deprecated symbols">
-<link rel="index" href="ix03.html" title="Index of new symbols in 0.4">
-<link rel="index" href="ix04.html" title="Index of new symbols in 0.6">
-<link rel="index" href="ix05.html" title="Index of new symbols in 0.8">
-<link rel="index" href="ix06.html" title="Index of new symbols in 0.10">
-<link rel="glossary" href="annotation-glossary.html" title="Annotation Glossary">
-<link rel="appendix" href="license.html" title="Appendix A. License">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<div class="book" title="JSON-GLib Reference Manual">
-<div class="titlepage">
-<div>
-<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">JSON-GLib Reference Manual</p></th></tr></table></div>
-<div><p class="releaseinfo">for JSON-GLib 0.10.4
-</p></div>
-<div><p class="copyright">Copyright © 2007, 2008 OpenedHand LTD</p></div>
-<div><p class="copyright">Copyright © 2009 Intel Corporation</p></div>
-<div><div class="legalnotice" title="Legal Notice">
-<a name="id3061245"></a><p>
- Permission is granted to copy, distribute and/or modify this
- document under the terms of the <em class="citetitle">GNU Free
- Documentation License</em>, Version 1.1 or any later
- version published by the Free Software Foundation with no
- Invariant Sections, no Front-Cover Texts, and no Back-Cover
- Texts. You may obtain a copy of the <em class="citetitle">GNU Free
- Documentation License</em> from the Free Software
- Foundation by visiting <a class="ulink" href="http://www.fsf.org" target="_top">their Web site</a> or by writing
- to:
-
- </p>
-<div class="address"><p><br>
- The Free Software Foundation, Inc.,<br>
- <span class="street">59 Temple Place</span> - Suite 330,<br>
- <span class="city">Boston</span>, <span class="state">MA</span> <span class="postcode">02111-1307</span>,<br>
- <span class="country">USA</span><br>
- </p></div>
-<p>
- </p>
-</div></div>
-</div>
-<hr>
-</div>
-<div class="toc"><dl>
-<dt><span class="part"><a href="json-glib.html">I. JSON-GLib Overview</a></span></dt>
-<dt><span class="part"><a href="json-base.html">II. JSON-GLib Reference</a></span></dt>
-<dd><dl>
-<dt><span class="chapter"><a href="ch01.html">Data Types</a></span></dt>
-<dd><dl>
-<dt>
-<span class="refentrytitle"><a href="json-glib-JSON-Node.html">JSON Node</a></span><span class="refpurpose"> — Node in a JSON object model</span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="json-glib-JSON-Array.html">JSON Array</a></span><span class="refpurpose"> — a JSON array representation</span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="json-glib-JSON-Object.html">JSON Object</a></span><span class="refpurpose"> — a JSON object representation</span>
-</dt>
-</dl></dd>
-</dl></dd>
-<dt><span class="part"><a href="json-streams.html">III. Reading and writing</a></span></dt>
-<dd><dl>
-<dt><span class="chapter"><a href="ch02.html">Parser</a></span></dt>
-<dd><dl><dt>
-<span class="refentrytitle"><a href="JsonParser.html">JsonParser</a></span><span class="refpurpose"> — Parse JSON data streams</span>
-</dt></dl></dd>
-<dt><span class="chapter"><a href="ch03.html">Generator</a></span></dt>
-<dd><dl><dt>
-<span class="refentrytitle"><a href="JsonGenerator.html">JsonGenerator</a></span><span class="refpurpose"> — Generates JSON data streams</span>
-</dt></dl></dd>
-</dl></dd>
-<dt><span class="part"><a href="json-advanced.html">IV. JSON-GLib Advanced API</a></span></dt>
-<dd><dl>
-<dt>
-<span class="refentrytitle"><a href="json-glib-GObject-Serialization.html">GObject Serialization</a></span><span class="refpurpose"> — Serialize and deserialize GObjects</span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="json-glib-Serializable-Interface.html">Serializable Interface</a></span><span class="refpurpose"> — Interface for serialize and deserialize special GObjects</span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="json-glib-Boxed-Types-Serialization.html">Boxed Types Serialization</a></span><span class="refpurpose"> — Serialize and deserialize GBoxed types</span>
-</dt>
-</dl></dd>
-<dt><span class="part"><a href="json-tools.html">V. JSON-GLib Additional Reference</a></span></dt>
-<dd><dl>
-<dt>
-<span class="refentrytitle"><a href="json-glib-Versioning-information.html">Versioning information</a></span><span class="refpurpose"> — JSON-GLib version checking</span>
-</dt>
-<dt><span class="chapter"><a href="ch04.html">Object Hierarchy</a></span></dt>
-</dl></dd>
-<dt><span class="index"><a href="ix01.html">Index</a></span></dt>
-<dt><span class="index"><a href="ix02.html">Index of deprecated symbols</a></span></dt>
-<dt><span class="index"><a href="ix03.html">Index of new symbols in 0.4</a></span></dt>
-<dt><span class="index"><a href="ix04.html">Index of new symbols in 0.6</a></span></dt>
-<dt><span class="index"><a href="ix05.html">Index of new symbols in 0.8</a></span></dt>
-<dt><span class="index"><a href="ix06.html">Index of new symbols in 0.10</a></span></dt>
-<dt><span class="glossary"><a href="annotation-glossary.html">Annotation Glossary</a></span></dt>
-<dt><span class="appendix"><a href="license.html">A. License</a></span></dt>
-</dl></div>
-</div>
-<div class="footer">
-<hr>
- Generated by GTK-Doc V1.13</div>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<ANCHOR id="json-glib-JSON-Node" href="json-glib/json-glib-JSON-Node.html">
-<ANCHOR id="json-glib-JSON-Node.synopsis" href="json-glib/json-glib-JSON-Node.html#json-glib-JSON-Node.synopsis">
-<ANCHOR id="json-glib-JSON-Node.description" href="json-glib/json-glib-JSON-Node.html#json-glib-JSON-Node.description">
-<ANCHOR id="json-glib-JSON-Node.details" href="json-glib/json-glib-JSON-Node.html#json-glib-JSON-Node.details">
-<ANCHOR id="JsonNodeType" href="json-glib/json-glib-JSON-Node.html#JsonNodeType">
-<ANCHOR id="JSON-NODE-OBJECT:CAPS" href="json-glib/json-glib-JSON-Node.html#JSON-NODE-OBJECT:CAPS">
-<ANCHOR id="JSON-NODE-ARRAY:CAPS" href="json-glib/json-glib-JSON-Node.html#JSON-NODE-ARRAY:CAPS">
-<ANCHOR id="JSON-NODE-VALUE:CAPS" href="json-glib/json-glib-JSON-Node.html#JSON-NODE-VALUE:CAPS">
-<ANCHOR id="JSON-NODE-NULL:CAPS" href="json-glib/json-glib-JSON-Node.html#JSON-NODE-NULL:CAPS">
-<ANCHOR id="JsonNode" href="json-glib/json-glib-JSON-Node.html#JsonNode">
-<ANCHOR id="JSON-NODE-TYPE:CAPS" href="json-glib/json-glib-JSON-Node.html#JSON-NODE-TYPE:CAPS">
-<ANCHOR id="JSON-NODE-HOLDS:CAPS" href="json-glib/json-glib-JSON-Node.html#JSON-NODE-HOLDS:CAPS">
-<ANCHOR id="JSON-NODE-HOLDS-VALUE:CAPS" href="json-glib/json-glib-JSON-Node.html#JSON-NODE-HOLDS-VALUE:CAPS">
-<ANCHOR id="JSON-NODE-HOLDS-OBJECT:CAPS" href="json-glib/json-glib-JSON-Node.html#JSON-NODE-HOLDS-OBJECT:CAPS">
-<ANCHOR id="JSON-NODE-HOLDS-ARRAY:CAPS" href="json-glib/json-glib-JSON-Node.html#JSON-NODE-HOLDS-ARRAY:CAPS">
-<ANCHOR id="JSON-NODE-HOLDS-NULL:CAPS" href="json-glib/json-glib-JSON-Node.html#JSON-NODE-HOLDS-NULL:CAPS">
-<ANCHOR id="json-node-new" href="json-glib/json-glib-JSON-Node.html#json-node-new">
-<ANCHOR id="json-node-copy" href="json-glib/json-glib-JSON-Node.html#json-node-copy">
-<ANCHOR id="json-node-free" href="json-glib/json-glib-JSON-Node.html#json-node-free">
-<ANCHOR id="json-node-set-array" href="json-glib/json-glib-JSON-Node.html#json-node-set-array">
-<ANCHOR id="json-node-take-array" href="json-glib/json-glib-JSON-Node.html#json-node-take-array">
-<ANCHOR id="json-node-get-array" href="json-glib/json-glib-JSON-Node.html#json-node-get-array">
-<ANCHOR id="json-node-dup-array" href="json-glib/json-glib-JSON-Node.html#json-node-dup-array">
-<ANCHOR id="json-node-set-object" href="json-glib/json-glib-JSON-Node.html#json-node-set-object">
-<ANCHOR id="json-node-take-object" href="json-glib/json-glib-JSON-Node.html#json-node-take-object">
-<ANCHOR id="json-node-get-object" href="json-glib/json-glib-JSON-Node.html#json-node-get-object">
-<ANCHOR id="json-node-dup-object" href="json-glib/json-glib-JSON-Node.html#json-node-dup-object">
-<ANCHOR id="json-node-set-value" href="json-glib/json-glib-JSON-Node.html#json-node-set-value">
-<ANCHOR id="json-node-get-value" href="json-glib/json-glib-JSON-Node.html#json-node-get-value">
-<ANCHOR id="json-node-set-boolean" href="json-glib/json-glib-JSON-Node.html#json-node-set-boolean">
-<ANCHOR id="json-node-get-boolean" href="json-glib/json-glib-JSON-Node.html#json-node-get-boolean">
-<ANCHOR id="json-node-set-double" href="json-glib/json-glib-JSON-Node.html#json-node-set-double">
-<ANCHOR id="json-node-get-double" href="json-glib/json-glib-JSON-Node.html#json-node-get-double">
-<ANCHOR id="json-node-set-int" href="json-glib/json-glib-JSON-Node.html#json-node-set-int">
-<ANCHOR id="json-node-get-int" href="json-glib/json-glib-JSON-Node.html#json-node-get-int">
-<ANCHOR id="json-node-set-string" href="json-glib/json-glib-JSON-Node.html#json-node-set-string">
-<ANCHOR id="json-node-get-string" href="json-glib/json-glib-JSON-Node.html#json-node-get-string">
-<ANCHOR id="json-node-dup-string" href="json-glib/json-glib-JSON-Node.html#json-node-dup-string">
-<ANCHOR id="json-node-set-parent" href="json-glib/json-glib-JSON-Node.html#json-node-set-parent">
-<ANCHOR id="json-node-get-parent" href="json-glib/json-glib-JSON-Node.html#json-node-get-parent">
-<ANCHOR id="json-node-type-name" href="json-glib/json-glib-JSON-Node.html#json-node-type-name">
-<ANCHOR id="json-node-get-value-type" href="json-glib/json-glib-JSON-Node.html#json-node-get-value-type">
-<ANCHOR id="json-node-get-node-type" href="json-glib/json-glib-JSON-Node.html#json-node-get-node-type">
-<ANCHOR id="json-node-is-null" href="json-glib/json-glib-JSON-Node.html#json-node-is-null">
-<ANCHOR id="json-glib-JSON-Array" href="json-glib/json-glib-JSON-Array.html">
-<ANCHOR id="json-glib-JSON-Array.synopsis" href="json-glib/json-glib-JSON-Array.html#json-glib-JSON-Array.synopsis">
-<ANCHOR id="json-glib-JSON-Array.description" href="json-glib/json-glib-JSON-Array.html#json-glib-JSON-Array.description">
-<ANCHOR id="json-glib-JSON-Array.details" href="json-glib/json-glib-JSON-Array.html#json-glib-JSON-Array.details">
-<ANCHOR id="JsonArray" href="json-glib/json-glib-JSON-Array.html#JsonArray">
-<ANCHOR id="json-array-new" href="json-glib/json-glib-JSON-Array.html#json-array-new">
-<ANCHOR id="json-array-sized-new" href="json-glib/json-glib-JSON-Array.html#json-array-sized-new">
-<ANCHOR id="json-array-ref" href="json-glib/json-glib-JSON-Array.html#json-array-ref">
-<ANCHOR id="json-array-unref" href="json-glib/json-glib-JSON-Array.html#json-array-unref">
-<ANCHOR id="json-array-add-element" href="json-glib/json-glib-JSON-Array.html#json-array-add-element">
-<ANCHOR id="json-array-get-element" href="json-glib/json-glib-JSON-Array.html#json-array-get-element">
-<ANCHOR id="json-array-dup-element" href="json-glib/json-glib-JSON-Array.html#json-array-dup-element">
-<ANCHOR id="json-array-get-elements" href="json-glib/json-glib-JSON-Array.html#json-array-get-elements">
-<ANCHOR id="json-array-get-length" href="json-glib/json-glib-JSON-Array.html#json-array-get-length">
-<ANCHOR id="json-array-remove-element" href="json-glib/json-glib-JSON-Array.html#json-array-remove-element">
-<ANCHOR id="JsonArrayForeach" href="json-glib/json-glib-JSON-Array.html#JsonArrayForeach">
-<ANCHOR id="json-array-foreach-element" href="json-glib/json-glib-JSON-Array.html#json-array-foreach-element">
-<ANCHOR id="json-array-add-array-element" href="json-glib/json-glib-JSON-Array.html#json-array-add-array-element">
-<ANCHOR id="json-array-get-array-element" href="json-glib/json-glib-JSON-Array.html#json-array-get-array-element">
-<ANCHOR id="json-array-add-boolean-element" href="json-glib/json-glib-JSON-Array.html#json-array-add-boolean-element">
-<ANCHOR id="json-array-get-boolean-element" href="json-glib/json-glib-JSON-Array.html#json-array-get-boolean-element">
-<ANCHOR id="json-array-add-double-element" href="json-glib/json-glib-JSON-Array.html#json-array-add-double-element">
-<ANCHOR id="json-array-get-double-element" href="json-glib/json-glib-JSON-Array.html#json-array-get-double-element">
-<ANCHOR id="json-array-add-int-element" href="json-glib/json-glib-JSON-Array.html#json-array-add-int-element">
-<ANCHOR id="json-array-get-int-element" href="json-glib/json-glib-JSON-Array.html#json-array-get-int-element">
-<ANCHOR id="json-array-add-null-element" href="json-glib/json-glib-JSON-Array.html#json-array-add-null-element">
-<ANCHOR id="json-array-get-null-element" href="json-glib/json-glib-JSON-Array.html#json-array-get-null-element">
-<ANCHOR id="json-array-add-object-element" href="json-glib/json-glib-JSON-Array.html#json-array-add-object-element">
-<ANCHOR id="json-array-get-object-element" href="json-glib/json-glib-JSON-Array.html#json-array-get-object-element">
-<ANCHOR id="json-array-add-string-element" href="json-glib/json-glib-JSON-Array.html#json-array-add-string-element">
-<ANCHOR id="json-array-get-string-element" href="json-glib/json-glib-JSON-Array.html#json-array-get-string-element">
-<ANCHOR id="json-glib-JSON-Object" href="json-glib/json-glib-JSON-Object.html">
-<ANCHOR id="json-glib-JSON-Object.synopsis" href="json-glib/json-glib-JSON-Object.html#json-glib-JSON-Object.synopsis">
-<ANCHOR id="json-glib-JSON-Object.description" href="json-glib/json-glib-JSON-Object.html#json-glib-JSON-Object.description">
-<ANCHOR id="json-glib-JSON-Object.details" href="json-glib/json-glib-JSON-Object.html#json-glib-JSON-Object.details">
-<ANCHOR id="JsonObject" href="json-glib/json-glib-JSON-Object.html#JsonObject">
-<ANCHOR id="json-object-new" href="json-glib/json-glib-JSON-Object.html#json-object-new">
-<ANCHOR id="json-object-ref" href="json-glib/json-glib-JSON-Object.html#json-object-ref">
-<ANCHOR id="json-object-unref" href="json-glib/json-glib-JSON-Object.html#json-object-unref">
-<ANCHOR id="json-object-add-member" href="json-glib/json-glib-JSON-Object.html#json-object-add-member">
-<ANCHOR id="json-object-set-member" href="json-glib/json-glib-JSON-Object.html#json-object-set-member">
-<ANCHOR id="json-object-has-member" href="json-glib/json-glib-JSON-Object.html#json-object-has-member">
-<ANCHOR id="json-object-get-member" href="json-glib/json-glib-JSON-Object.html#json-object-get-member">
-<ANCHOR id="json-object-dup-member" href="json-glib/json-glib-JSON-Object.html#json-object-dup-member">
-<ANCHOR id="json-object-get-members" href="json-glib/json-glib-JSON-Object.html#json-object-get-members">
-<ANCHOR id="json-object-get-values" href="json-glib/json-glib-JSON-Object.html#json-object-get-values">
-<ANCHOR id="json-object-get-size" href="json-glib/json-glib-JSON-Object.html#json-object-get-size">
-<ANCHOR id="json-object-remove-member" href="json-glib/json-glib-JSON-Object.html#json-object-remove-member">
-<ANCHOR id="JsonObjectForeach" href="json-glib/json-glib-JSON-Object.html#JsonObjectForeach">
-<ANCHOR id="json-object-foreach-member" href="json-glib/json-glib-JSON-Object.html#json-object-foreach-member">
-<ANCHOR id="json-object-set-array-member" href="json-glib/json-glib-JSON-Object.html#json-object-set-array-member">
-<ANCHOR id="json-object-get-array-member" href="json-glib/json-glib-JSON-Object.html#json-object-get-array-member">
-<ANCHOR id="json-object-set-boolean-member" href="json-glib/json-glib-JSON-Object.html#json-object-set-boolean-member">
-<ANCHOR id="json-object-get-boolean-member" href="json-glib/json-glib-JSON-Object.html#json-object-get-boolean-member">
-<ANCHOR id="json-object-set-double-member" href="json-glib/json-glib-JSON-Object.html#json-object-set-double-member">
-<ANCHOR id="json-object-get-double-member" href="json-glib/json-glib-JSON-Object.html#json-object-get-double-member">
-<ANCHOR id="json-object-set-int-member" href="json-glib/json-glib-JSON-Object.html#json-object-set-int-member">
-<ANCHOR id="json-object-get-int-member" href="json-glib/json-glib-JSON-Object.html#json-object-get-int-member">
-<ANCHOR id="json-object-set-null-member" href="json-glib/json-glib-JSON-Object.html#json-object-set-null-member">
-<ANCHOR id="json-object-get-null-member" href="json-glib/json-glib-JSON-Object.html#json-object-get-null-member">
-<ANCHOR id="json-object-set-object-member" href="json-glib/json-glib-JSON-Object.html#json-object-set-object-member">
-<ANCHOR id="json-object-get-object-member" href="json-glib/json-glib-JSON-Object.html#json-object-get-object-member">
-<ANCHOR id="json-object-set-string-member" href="json-glib/json-glib-JSON-Object.html#json-object-set-string-member">
-<ANCHOR id="json-object-get-string-member" href="json-glib/json-glib-JSON-Object.html#json-object-get-string-member">
-<ANCHOR id="JsonParser" href="json-glib/JsonParser.html">
-<ANCHOR id="JsonParser.synopsis" href="json-glib/JsonParser.html#JsonParser.synopsis">
-<ANCHOR id="JsonParser.object-hierarchy" href="json-glib/JsonParser.html#JsonParser.object-hierarchy">
-<ANCHOR id="JsonParser.signals" href="json-glib/JsonParser.html#JsonParser.signals">
-<ANCHOR id="JsonParser.description" href="json-glib/JsonParser.html#JsonParser.description">
-<ANCHOR id="JsonParser.details" href="json-glib/JsonParser.html#JsonParser.details">
-<ANCHOR id="JsonParserError" href="json-glib/JsonParser.html#JsonParserError">
-<ANCHOR id="JSON-PARSER-ERROR-PARSE:CAPS" href="json-glib/JsonParser.html#JSON-PARSER-ERROR-PARSE:CAPS">
-<ANCHOR id="JSON-PARSER-ERROR-UNKNOWN:CAPS" href="json-glib/JsonParser.html#JSON-PARSER-ERROR-UNKNOWN:CAPS">
-<ANCHOR id="JsonParser-struct" href="json-glib/JsonParser.html#JsonParser-struct">
-<ANCHOR id="JsonParserClass" href="json-glib/JsonParser.html#JsonParserClass">
-<ANCHOR id="json-parser-new" href="json-glib/JsonParser.html#json-parser-new">
-<ANCHOR id="json-parser-load-from-file" href="json-glib/JsonParser.html#json-parser-load-from-file">
-<ANCHOR id="json-parser-load-from-data" href="json-glib/JsonParser.html#json-parser-load-from-data">
-<ANCHOR id="json-parser-get-root" href="json-glib/JsonParser.html#json-parser-get-root">
-<ANCHOR id="json-parser-get-current-line" href="json-glib/JsonParser.html#json-parser-get-current-line">
-<ANCHOR id="json-parser-get-current-pos" href="json-glib/JsonParser.html#json-parser-get-current-pos">
-<ANCHOR id="json-parser-has-assignment" href="json-glib/JsonParser.html#json-parser-has-assignment">
-<ANCHOR id="JsonParser.signal-details" href="json-glib/JsonParser.html#JsonParser.signal-details">
-<ANCHOR id="JsonParser-array-element" href="json-glib/JsonParser.html#JsonParser-array-element">
-<ANCHOR id="JsonParser-array-end" href="json-glib/JsonParser.html#JsonParser-array-end">
-<ANCHOR id="JsonParser-array-start" href="json-glib/JsonParser.html#JsonParser-array-start">
-<ANCHOR id="JsonParser-error" href="json-glib/JsonParser.html#JsonParser-error">
-<ANCHOR id="JsonParser-object-end" href="json-glib/JsonParser.html#JsonParser-object-end">
-<ANCHOR id="JsonParser-object-member" href="json-glib/JsonParser.html#JsonParser-object-member">
-<ANCHOR id="JsonParser-object-start" href="json-glib/JsonParser.html#JsonParser-object-start">
-<ANCHOR id="JsonParser-parse-end" href="json-glib/JsonParser.html#JsonParser-parse-end">
-<ANCHOR id="JsonParser-parse-start" href="json-glib/JsonParser.html#JsonParser-parse-start">
-<ANCHOR id="JsonGenerator" href="json-glib/JsonGenerator.html">
-<ANCHOR id="JsonGenerator.synopsis" href="json-glib/JsonGenerator.html#JsonGenerator.synopsis">
-<ANCHOR id="JsonGenerator.object-hierarchy" href="json-glib/JsonGenerator.html#JsonGenerator.object-hierarchy">
-<ANCHOR id="JsonGenerator.properties" href="json-glib/JsonGenerator.html#JsonGenerator.properties">
-<ANCHOR id="JsonGenerator.description" href="json-glib/JsonGenerator.html#JsonGenerator.description">
-<ANCHOR id="JsonGenerator.details" href="json-glib/JsonGenerator.html#JsonGenerator.details">
-<ANCHOR id="JsonGenerator-struct" href="json-glib/JsonGenerator.html#JsonGenerator-struct">
-<ANCHOR id="JsonGeneratorClass" href="json-glib/JsonGenerator.html#JsonGeneratorClass">
-<ANCHOR id="json-generator-new" href="json-glib/JsonGenerator.html#json-generator-new">
-<ANCHOR id="json-generator-to-file" href="json-glib/JsonGenerator.html#json-generator-to-file">
-<ANCHOR id="json-generator-to-data" href="json-glib/JsonGenerator.html#json-generator-to-data">
-<ANCHOR id="json-generator-set-root" href="json-glib/JsonGenerator.html#json-generator-set-root">
-<ANCHOR id="JsonGenerator.property-details" href="json-glib/JsonGenerator.html#JsonGenerator.property-details">
-<ANCHOR id="JsonGenerator--indent" href="json-glib/JsonGenerator.html#JsonGenerator--indent">
-<ANCHOR id="JsonGenerator--indent-char" href="json-glib/JsonGenerator.html#JsonGenerator--indent-char">
-<ANCHOR id="JsonGenerator--pretty" href="json-glib/JsonGenerator.html#JsonGenerator--pretty">
-<ANCHOR id="JsonGenerator--root" href="json-glib/JsonGenerator.html#JsonGenerator--root">
-<ANCHOR id="json-glib-GObject-Serialization" href="json-glib/json-glib-GObject-Serialization.html">
-<ANCHOR id="json-glib-GObject-Serialization.synopsis" href="json-glib/json-glib-GObject-Serialization.html#json-glib-GObject-Serialization.synopsis">
-<ANCHOR id="json-glib-GObject-Serialization.description" href="json-glib/json-glib-GObject-Serialization.html#json-glib-GObject-Serialization.description">
-<ANCHOR id="json-glib-GObject-Serialization.details" href="json-glib/json-glib-GObject-Serialization.html#json-glib-GObject-Serialization.details">
-<ANCHOR id="json-gobject-serialize" href="json-glib/json-glib-GObject-Serialization.html#json-gobject-serialize">
-<ANCHOR id="json-gobject-deserialize" href="json-glib/json-glib-GObject-Serialization.html#json-gobject-deserialize">
-<ANCHOR id="json-gobject-to-data" href="json-glib/json-glib-GObject-Serialization.html#json-gobject-to-data">
-<ANCHOR id="json-gobject-from-data" href="json-glib/json-glib-GObject-Serialization.html#json-gobject-from-data">
-<ANCHOR id="json-construct-gobject" href="json-glib/json-glib-GObject-Serialization.html#json-construct-gobject">
-<ANCHOR id="json-serialize-gobject" href="json-glib/json-glib-GObject-Serialization.html#json-serialize-gobject">
-<ANCHOR id="json-glib-Serializable-Interface" href="json-glib/json-glib-Serializable-Interface.html">
-<ANCHOR id="json-glib-Serializable-Interface.synopsis" href="json-glib/json-glib-Serializable-Interface.html#json-glib-Serializable-Interface.synopsis">
-<ANCHOR id="json-glib-Serializable-Interface.description" href="json-glib/json-glib-Serializable-Interface.html#json-glib-Serializable-Interface.description">
-<ANCHOR id="json-glib-Serializable-Interface.details" href="json-glib/json-glib-Serializable-Interface.html#json-glib-Serializable-Interface.details">
-<ANCHOR id="JsonSerializableIface" href="json-glib/json-glib-Serializable-Interface.html#JsonSerializableIface">
-<ANCHOR id="json-serializable-serialize-property" href="json-glib/json-glib-Serializable-Interface.html#json-serializable-serialize-property">
-<ANCHOR id="json-serializable-deserialize-property" href="json-glib/json-glib-Serializable-Interface.html#json-serializable-deserialize-property">
-<ANCHOR id="json-serializable-default-serialize-property" href="json-glib/json-glib-Serializable-Interface.html#json-serializable-default-serialize-property">
-<ANCHOR id="json-serializable-default-deserialize-property" href="json-glib/json-glib-Serializable-Interface.html#json-serializable-default-deserialize-property">
-<ANCHOR id="json-glib-Boxed-Types-Serialization" href="json-glib/json-glib-Boxed-Types-Serialization.html">
-<ANCHOR id="json-glib-Boxed-Types-Serialization.synopsis" href="json-glib/json-glib-Boxed-Types-Serialization.html#json-glib-Boxed-Types-Serialization.synopsis">
-<ANCHOR id="json-glib-Boxed-Types-Serialization.description" href="json-glib/json-glib-Boxed-Types-Serialization.html#json-glib-Boxed-Types-Serialization.description">
-<ANCHOR id="json-glib-Boxed-Types-Serialization.details" href="json-glib/json-glib-Boxed-Types-Serialization.html#json-glib-Boxed-Types-Serialization.details">
-<ANCHOR id="JsonBoxedSerializeFunc" href="json-glib/json-glib-Boxed-Types-Serialization.html#JsonBoxedSerializeFunc">
-<ANCHOR id="JsonBoxedDeserializeFunc" href="json-glib/json-glib-Boxed-Types-Serialization.html#JsonBoxedDeserializeFunc">
-<ANCHOR id="json-boxed-register-serialize-func" href="json-glib/json-glib-Boxed-Types-Serialization.html#json-boxed-register-serialize-func">
-<ANCHOR id="json-boxed-register-deserialize-func" href="json-glib/json-glib-Boxed-Types-Serialization.html#json-boxed-register-deserialize-func">
-<ANCHOR id="json-boxed-can-serialize" href="json-glib/json-glib-Boxed-Types-Serialization.html#json-boxed-can-serialize">
-<ANCHOR id="json-boxed-can-deserialize" href="json-glib/json-glib-Boxed-Types-Serialization.html#json-boxed-can-deserialize">
-<ANCHOR id="json-boxed-serialize" href="json-glib/json-glib-Boxed-Types-Serialization.html#json-boxed-serialize">
-<ANCHOR id="json-boxed-deserialize" href="json-glib/json-glib-Boxed-Types-Serialization.html#json-boxed-deserialize">
-<ANCHOR id="json-glib-Versioning-information" href="json-glib/json-glib-Versioning-information.html">
-<ANCHOR id="json-glib-Versioning-information.synopsis" href="json-glib/json-glib-Versioning-information.html#json-glib-Versioning-information.synopsis">
-<ANCHOR id="json-glib-Versioning-information.description" href="json-glib/json-glib-Versioning-information.html#json-glib-Versioning-information.description">
-<ANCHOR id="json-glib-Versioning-information.details" href="json-glib/json-glib-Versioning-information.html#json-glib-Versioning-information.details">
-<ANCHOR id="JSON-MAJOR-VERSION:CAPS" href="json-glib/json-glib-Versioning-information.html#JSON-MAJOR-VERSION:CAPS">
-<ANCHOR id="JSON-MINOR-VERSION:CAPS" href="json-glib/json-glib-Versioning-information.html#JSON-MINOR-VERSION:CAPS">
-<ANCHOR id="JSON-MICRO-VERSION:CAPS" href="json-glib/json-glib-Versioning-information.html#JSON-MICRO-VERSION:CAPS">
-<ANCHOR id="JSON-VERSION:CAPS" href="json-glib/json-glib-Versioning-information.html#JSON-VERSION:CAPS">
-<ANCHOR id="JSON-VERSION-S:CAPS" href="json-glib/json-glib-Versioning-information.html#JSON-VERSION-S:CAPS">
-<ANCHOR id="JSON-VERSION-HEX:CAPS" href="json-glib/json-glib-Versioning-information.html#JSON-VERSION-HEX:CAPS">
-<ANCHOR id="JSON-CHECK-VERSION:CAPS" href="json-glib/json-glib-Versioning-information.html#JSON-CHECK-VERSION:CAPS">
-<ANCHOR id="annotation-glossterm-out" href="json-glib/annotation-glossary.html#annotation-glossterm-out">
-<ANCHOR id="annotation-glossterm-allow-none" href="json-glib/annotation-glossary.html#annotation-glossterm-allow-none">
-<ANCHOR id="annotation-glossterm-element-type" href="json-glib/annotation-glossary.html#annotation-glossterm-element-type">
-<ANCHOR id="annotation-glossterm-transfer container" href="json-glib/annotation-glossary.html#annotation-glossterm-transfer container">
-<ANCHOR id="annotation-glossterm-transfer full" href="json-glib/annotation-glossary.html#annotation-glossterm-transfer full">
-<ANCHOR id="annotation-glossterm-transfer none" href="json-glib/annotation-glossary.html#annotation-glossterm-transfer none">
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Index</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="up" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="prev" href="ch04.html" title="Object Hierarchy">
-<link rel="next" href="ix02.html" title="Index of deprecated symbols">
-<meta name="generator" content="GTK-Doc V1.13 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="part" href="json-glib.html" title="Part I. JSON-GLib Overview">
-<link rel="part" href="json-base.html" title="Part II. JSON-GLib Reference">
-<link rel="chapter" href="ch01.html" title="Data Types">
-<link rel="part" href="json-streams.html" title="Part III. Reading and writing">
-<link rel="chapter" href="ch02.html" title="Parser">
-<link rel="chapter" href="ch03.html" title="Generator">
-<link rel="part" href="json-advanced.html" title="Part IV. JSON-GLib Advanced API">
-<link rel="part" href="json-tools.html" title="Part V. JSON-GLib Additional Reference">
-<link rel="chapter" href="ch04.html" title="Object Hierarchy">
-<link rel="index" href="ix01.html" title="Index">
-<link rel="index" href="ix02.html" title="Index of deprecated symbols">
-<link rel="index" href="ix03.html" title="Index of new symbols in 0.4">
-<link rel="index" href="ix04.html" title="Index of new symbols in 0.6">
-<link rel="index" href="ix05.html" title="Index of new symbols in 0.8">
-<link rel="index" href="ix06.html" title="Index of new symbols in 0.10">
-<link rel="glossary" href="annotation-glossary.html" title="Annotation Glossary">
-<link rel="appendix" href="license.html" title="Appendix A. License">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
-<tr valign="middle">
-<td><a accesskey="p" href="ch04.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td> </td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<th width="100%" align="center">JSON-GLib Reference Manual</th>
-<td><a accesskey="n" href="ix02.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-</tr>
-<tr><td colspan="5" class="shortcuts">
-<a class="shortcut" href="#idxA">A</a>
- |
- <a class="shortcut" href="#idxB">B</a>
- |
- <a class="shortcut" href="#idxC">C</a>
- |
- <a class="shortcut" href="#idxG">G</a>
- |
- <a class="shortcut" href="#idxM">M</a>
- |
- <a class="shortcut" href="#idxN">N</a>
- |
- <a class="shortcut" href="#idxO">O</a>
- |
- <a class="shortcut" href="#idxP">P</a>
- |
- <a class="shortcut" href="#idxS">S</a>
- |
- <a class="shortcut" href="#idxV">V</a>
-</td></tr>
-</table>
-<div class="index" title="Index">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="id3055837"></a>Index</h2></div></div></div>
-<a name="idx"></a><a name="idxA"></a><h3 class="title">A</h3>
-<dt><a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray">JsonArray</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#JsonArrayForeach" title="JsonArrayForeach ()">JsonArrayForeach</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-add-array-element" title="json_array_add_array_element ()">json_array_add_array_element</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-add-boolean-element" title="json_array_add_boolean_element ()">json_array_add_boolean_element</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-add-double-element" title="json_array_add_double_element ()">json_array_add_double_element</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-add-element" title="json_array_add_element ()">json_array_add_element</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-add-int-element" title="json_array_add_int_element ()">json_array_add_int_element</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-add-null-element" title="json_array_add_null_element ()">json_array_add_null_element</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-add-object-element" title="json_array_add_object_element ()">json_array_add_object_element</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-add-string-element" title="json_array_add_string_element ()">json_array_add_string_element</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-dup-element" title="json_array_dup_element ()">json_array_dup_element</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-foreach-element" title="json_array_foreach_element ()">json_array_foreach_element</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-get-array-element" title="json_array_get_array_element ()">json_array_get_array_element</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-get-boolean-element" title="json_array_get_boolean_element ()">json_array_get_boolean_element</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-get-double-element" title="json_array_get_double_element ()">json_array_get_double_element</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-get-element" title="json_array_get_element ()">json_array_get_element</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-get-elements" title="json_array_get_elements ()">json_array_get_elements</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-get-int-element" title="json_array_get_int_element ()">json_array_get_int_element</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-get-length" title="json_array_get_length ()">json_array_get_length</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-get-null-element" title="json_array_get_null_element ()">json_array_get_null_element</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-get-object-element" title="json_array_get_object_element ()">json_array_get_object_element</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-get-string-element" title="json_array_get_string_element ()">json_array_get_string_element</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-new" title="json_array_new ()">json_array_new</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-ref" title="json_array_ref ()">json_array_ref</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-remove-element" title="json_array_remove_element ()">json_array_remove_element</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-sized-new" title="json_array_sized_new ()">json_array_sized_new</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-unref" title="json_array_unref ()">json_array_unref</a></dt>
-<dd></dd>
-<a name="idxB"></a><h3 class="title">B</h3>
-<dt><a class="link" href="json-glib-Boxed-Types-Serialization.html#JsonBoxedDeserializeFunc" title="JsonBoxedDeserializeFunc ()">JsonBoxedDeserializeFunc</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-Boxed-Types-Serialization.html#JsonBoxedSerializeFunc" title="JsonBoxedSerializeFunc ()">JsonBoxedSerializeFunc</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-Boxed-Types-Serialization.html#json-boxed-can-deserialize" title="json_boxed_can_deserialize ()">json_boxed_can_deserialize</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-Boxed-Types-Serialization.html#json-boxed-can-serialize" title="json_boxed_can_serialize ()">json_boxed_can_serialize</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-Boxed-Types-Serialization.html#json-boxed-deserialize" title="json_boxed_deserialize ()">json_boxed_deserialize</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-Boxed-Types-Serialization.html#json-boxed-register-deserialize-func" title="json_boxed_register_deserialize_func ()">json_boxed_register_deserialize_func</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-Boxed-Types-Serialization.html#json-boxed-register-serialize-func" title="json_boxed_register_serialize_func ()">json_boxed_register_serialize_func</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-Boxed-Types-Serialization.html#json-boxed-serialize" title="json_boxed_serialize ()">json_boxed_serialize</a></dt>
-<dd></dd>
-<a name="idxC"></a><h3 class="title">C</h3>
-<dt><a class="link" href="json-glib-Versioning-information.html#JSON-CHECK-VERSION:CAPS" title="JSON_CHECK_VERSION()">JSON_CHECK_VERSION</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-GObject-Serialization.html#json-construct-gobject" title="json_construct_gobject ()">json_construct_gobject</a></dt>
-<dd></dd>
-<a name="idxG"></a><h3 class="title">G</h3>
-<dt><a class="link" href="JsonGenerator.html#JsonGenerator-struct" title="JsonGenerator">JsonGenerator</a></dt>
-<dd></dd>
-<dt><a class="link" href="JsonGenerator.html#JsonGenerator--indent" title='The "indent" property'>JsonGenerator:indent</a></dt>
-<dd></dd>
-<dt><a class="link" href="JsonGenerator.html#JsonGenerator--indent-char" title='The "indent-char" property'>JsonGenerator:indent-char</a></dt>
-<dd></dd>
-<dt><a class="link" href="JsonGenerator.html#JsonGenerator--pretty" title='The "pretty" property'>JsonGenerator:pretty</a></dt>
-<dd></dd>
-<dt><a class="link" href="JsonGenerator.html#JsonGenerator--root" title='The "root" property'>JsonGenerator:root</a></dt>
-<dd></dd>
-<dt><a class="link" href="JsonGenerator.html#JsonGeneratorClass" title="JsonGeneratorClass">JsonGeneratorClass</a></dt>
-<dd></dd>
-<dt><a class="link" href="JsonGenerator.html#json-generator-new" title="json_generator_new ()">json_generator_new</a></dt>
-<dd></dd>
-<dt><a class="link" href="JsonGenerator.html#json-generator-set-root" title="json_generator_set_root ()">json_generator_set_root</a></dt>
-<dd></dd>
-<dt><a class="link" href="JsonGenerator.html#json-generator-to-data" title="json_generator_to_data ()">json_generator_to_data</a></dt>
-<dd></dd>
-<dt><a class="link" href="JsonGenerator.html#json-generator-to-file" title="json_generator_to_file ()">json_generator_to_file</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-GObject-Serialization.html#json-gobject-deserialize" title="json_gobject_deserialize ()">json_gobject_deserialize</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-GObject-Serialization.html#json-gobject-from-data" title="json_gobject_from_data ()">json_gobject_from_data</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-GObject-Serialization.html#json-gobject-serialize" title="json_gobject_serialize ()">json_gobject_serialize</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-GObject-Serialization.html#json-gobject-to-data" title="json_gobject_to_data ()">json_gobject_to_data</a></dt>
-<dd></dd>
-<a name="idxM"></a><h3 class="title">M</h3>
-<dt><a class="link" href="json-glib-Versioning-information.html#JSON-MAJOR-VERSION:CAPS" title="JSON_MAJOR_VERSION">JSON_MAJOR_VERSION</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-Versioning-information.html#JSON-MICRO-VERSION:CAPS" title="JSON_MICRO_VERSION">JSON_MICRO_VERSION</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-Versioning-information.html#JSON-MINOR-VERSION:CAPS" title="JSON_MINOR_VERSION">JSON_MINOR_VERSION</a></dt>
-<dd></dd>
-<a name="idxN"></a><h3 class="title">N</h3>
-<dt><a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode">JsonNode</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#JsonNodeType" title="enum JsonNodeType">JsonNodeType</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#json-node-copy" title="json_node_copy ()">json_node_copy</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#json-node-dup-array" title="json_node_dup_array ()">json_node_dup_array</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#json-node-dup-object" title="json_node_dup_object ()">json_node_dup_object</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#json-node-dup-string" title="json_node_dup_string ()">json_node_dup_string</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#json-node-free" title="json_node_free ()">json_node_free</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#json-node-get-array" title="json_node_get_array ()">json_node_get_array</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#json-node-get-boolean" title="json_node_get_boolean ()">json_node_get_boolean</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#json-node-get-double" title="json_node_get_double ()">json_node_get_double</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#json-node-get-int" title="json_node_get_int ()">json_node_get_int</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#json-node-get-node-type" title="json_node_get_node_type ()">json_node_get_node_type</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#json-node-get-object" title="json_node_get_object ()">json_node_get_object</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#json-node-get-parent" title="json_node_get_parent ()">json_node_get_parent</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#json-node-get-string" title="json_node_get_string ()">json_node_get_string</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#json-node-get-value" title="json_node_get_value ()">json_node_get_value</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#json-node-get-value-type" title="json_node_get_value_type ()">json_node_get_value_type</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#JSON-NODE-HOLDS:CAPS" title="JSON_NODE_HOLDS()">JSON_NODE_HOLDS</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#JSON-NODE-HOLDS-ARRAY:CAPS" title="JSON_NODE_HOLDS_ARRAY()">JSON_NODE_HOLDS_ARRAY</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#JSON-NODE-HOLDS-NULL:CAPS" title="JSON_NODE_HOLDS_NULL()">JSON_NODE_HOLDS_NULL</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#JSON-NODE-HOLDS-OBJECT:CAPS" title="JSON_NODE_HOLDS_OBJECT()">JSON_NODE_HOLDS_OBJECT</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#JSON-NODE-HOLDS-VALUE:CAPS" title="JSON_NODE_HOLDS_VALUE()">JSON_NODE_HOLDS_VALUE</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#json-node-is-null" title="json_node_is_null ()">json_node_is_null</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#json-node-new" title="json_node_new ()">json_node_new</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#json-node-set-array" title="json_node_set_array ()">json_node_set_array</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#json-node-set-boolean" title="json_node_set_boolean ()">json_node_set_boolean</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#json-node-set-double" title="json_node_set_double ()">json_node_set_double</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#json-node-set-int" title="json_node_set_int ()">json_node_set_int</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#json-node-set-object" title="json_node_set_object ()">json_node_set_object</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#json-node-set-parent" title="json_node_set_parent ()">json_node_set_parent</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#json-node-set-string" title="json_node_set_string ()">json_node_set_string</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#json-node-set-value" title="json_node_set_value ()">json_node_set_value</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#json-node-take-array" title="json_node_take_array ()">json_node_take_array</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#json-node-take-object" title="json_node_take_object ()">json_node_take_object</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#JSON-NODE-TYPE:CAPS" title="JSON_NODE_TYPE()">JSON_NODE_TYPE</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#json-node-type-name" title="json_node_type_name ()">json_node_type_name</a></dt>
-<dd></dd>
-<a name="idxO"></a><h3 class="title">O</h3>
-<dt><a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject">JsonObject</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#JsonObjectForeach" title="JsonObjectForeach ()">JsonObjectForeach</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-add-member" title="json_object_add_member ()">json_object_add_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-dup-member" title="json_object_dup_member ()">json_object_dup_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-foreach-member" title="json_object_foreach_member ()">json_object_foreach_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-get-array-member" title="json_object_get_array_member ()">json_object_get_array_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-get-boolean-member" title="json_object_get_boolean_member ()">json_object_get_boolean_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-get-double-member" title="json_object_get_double_member ()">json_object_get_double_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-get-int-member" title="json_object_get_int_member ()">json_object_get_int_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-get-member" title="json_object_get_member ()">json_object_get_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-get-members" title="json_object_get_members ()">json_object_get_members</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-get-null-member" title="json_object_get_null_member ()">json_object_get_null_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-get-object-member" title="json_object_get_object_member ()">json_object_get_object_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-get-size" title="json_object_get_size ()">json_object_get_size</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-get-string-member" title="json_object_get_string_member ()">json_object_get_string_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-get-values" title="json_object_get_values ()">json_object_get_values</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-has-member" title="json_object_has_member ()">json_object_has_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-new" title="json_object_new ()">json_object_new</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-ref" title="json_object_ref ()">json_object_ref</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-remove-member" title="json_object_remove_member ()">json_object_remove_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-set-array-member" title="json_object_set_array_member ()">json_object_set_array_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-set-boolean-member" title="json_object_set_boolean_member ()">json_object_set_boolean_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-set-double-member" title="json_object_set_double_member ()">json_object_set_double_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-set-int-member" title="json_object_set_int_member ()">json_object_set_int_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-set-member" title="json_object_set_member ()">json_object_set_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-set-null-member" title="json_object_set_null_member ()">json_object_set_null_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-set-object-member" title="json_object_set_object_member ()">json_object_set_object_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-set-string-member" title="json_object_set_string_member ()">json_object_set_string_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-unref" title="json_object_unref ()">json_object_unref</a></dt>
-<dd></dd>
-<a name="idxP"></a><h3 class="title">P</h3>
-<dt><a class="link" href="JsonParser.html#JsonParser-struct" title="JsonParser">JsonParser</a></dt>
-<dd></dd>
-<dt><a class="link" href="JsonParser.html#JsonParser-array-element" title='The "array-element" signal'>JsonParser::array-element</a></dt>
-<dd></dd>
-<dt><a class="link" href="JsonParser.html#JsonParser-array-end" title='The "array-end" signal'>JsonParser::array-end</a></dt>
-<dd></dd>
-<dt><a class="link" href="JsonParser.html#JsonParser-array-start" title='The "array-start" signal'>JsonParser::array-start</a></dt>
-<dd></dd>
-<dt><a class="link" href="JsonParser.html#JsonParser-error" title='The "error" signal'>JsonParser::error</a></dt>
-<dd></dd>
-<dt><a class="link" href="JsonParser.html#JsonParser-object-end" title='The "object-end" signal'>JsonParser::object-end</a></dt>
-<dd></dd>
-<dt><a class="link" href="JsonParser.html#JsonParser-object-member" title='The "object-member" signal'>JsonParser::object-member</a></dt>
-<dd></dd>
-<dt><a class="link" href="JsonParser.html#JsonParser-object-start" title='The "object-start" signal'>JsonParser::object-start</a></dt>
-<dd></dd>
-<dt><a class="link" href="JsonParser.html#JsonParser-parse-end" title='The "parse-end" signal'>JsonParser::parse-end</a></dt>
-<dd></dd>
-<dt><a class="link" href="JsonParser.html#JsonParser-parse-start" title='The "parse-start" signal'>JsonParser::parse-start</a></dt>
-<dd></dd>
-<dt><a class="link" href="JsonParser.html#JsonParserClass" title="JsonParserClass">JsonParserClass</a></dt>
-<dd></dd>
-<dt><a class="link" href="JsonParser.html#JsonParserError" title="enum JsonParserError">JsonParserError</a></dt>
-<dd></dd>
-<dt><a class="link" href="JsonParser.html#json-parser-get-current-line" title="json_parser_get_current_line ()">json_parser_get_current_line</a></dt>
-<dd></dd>
-<dt><a class="link" href="JsonParser.html#json-parser-get-current-pos" title="json_parser_get_current_pos ()">json_parser_get_current_pos</a></dt>
-<dd></dd>
-<dt><a class="link" href="JsonParser.html#json-parser-get-root" title="json_parser_get_root ()">json_parser_get_root</a></dt>
-<dd></dd>
-<dt><a class="link" href="JsonParser.html#json-parser-has-assignment" title="json_parser_has_assignment ()">json_parser_has_assignment</a></dt>
-<dd></dd>
-<dt><a class="link" href="JsonParser.html#json-parser-load-from-data" title="json_parser_load_from_data ()">json_parser_load_from_data</a></dt>
-<dd></dd>
-<dt><a class="link" href="JsonParser.html#json-parser-load-from-file" title="json_parser_load_from_file ()">json_parser_load_from_file</a></dt>
-<dd></dd>
-<dt><a class="link" href="JsonParser.html#json-parser-new" title="json_parser_new ()">json_parser_new</a></dt>
-<dd></dd>
-<a name="idxS"></a><h3 class="title">S</h3>
-<dt><a class="link" href="json-glib-Serializable-Interface.html#JsonSerializableIface" title="JsonSerializableIface">JsonSerializableIface</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-Serializable-Interface.html#json-serializable-default-deserialize-property" title="json_serializable_default_deserialize_property ()">json_serializable_default_deserialize_property</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-Serializable-Interface.html#json-serializable-default-serialize-property" title="json_serializable_default_serialize_property ()">json_serializable_default_serialize_property</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-Serializable-Interface.html#json-serializable-deserialize-property" title="json_serializable_deserialize_property ()">json_serializable_deserialize_property</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-Serializable-Interface.html#json-serializable-serialize-property" title="json_serializable_serialize_property ()">json_serializable_serialize_property</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-GObject-Serialization.html#json-serialize-gobject" title="json_serialize_gobject ()">json_serialize_gobject</a></dt>
-<dd></dd>
-<a name="idxV"></a><h3 class="title">V</h3>
-<dt><a class="link" href="json-glib-Versioning-information.html#JSON-VERSION:CAPS" title="JSON_VERSION">JSON_VERSION</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-Versioning-information.html#JSON-VERSION-HEX:CAPS" title="JSON_VERSION_HEX">JSON_VERSION_HEX</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-Versioning-information.html#JSON-VERSION-S:CAPS" title="JSON_VERSION_S">JSON_VERSION_S</a></dt>
-<dd></dd>
-</div>
-<div class="footer">
-<hr>
- Generated by GTK-Doc V1.13</div>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Index of deprecated symbols</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="up" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="prev" href="ix01.html" title="Index">
-<link rel="next" href="ix03.html" title="Index of new symbols in 0.4">
-<meta name="generator" content="GTK-Doc V1.13 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="part" href="json-glib.html" title="Part I. JSON-GLib Overview">
-<link rel="part" href="json-base.html" title="Part II. JSON-GLib Reference">
-<link rel="chapter" href="ch01.html" title="Data Types">
-<link rel="part" href="json-streams.html" title="Part III. Reading and writing">
-<link rel="chapter" href="ch02.html" title="Parser">
-<link rel="chapter" href="ch03.html" title="Generator">
-<link rel="part" href="json-advanced.html" title="Part IV. JSON-GLib Advanced API">
-<link rel="part" href="json-tools.html" title="Part V. JSON-GLib Additional Reference">
-<link rel="chapter" href="ch04.html" title="Object Hierarchy">
-<link rel="index" href="ix01.html" title="Index">
-<link rel="index" href="ix02.html" title="Index of deprecated symbols">
-<link rel="index" href="ix03.html" title="Index of new symbols in 0.4">
-<link rel="index" href="ix04.html" title="Index of new symbols in 0.6">
-<link rel="index" href="ix05.html" title="Index of new symbols in 0.8">
-<link rel="index" href="ix06.html" title="Index of new symbols in 0.10">
-<link rel="glossary" href="annotation-glossary.html" title="Annotation Glossary">
-<link rel="appendix" href="license.html" title="Appendix A. License">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
-<tr valign="middle">
-<td><a accesskey="p" href="ix01.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td> </td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<th width="100%" align="center">JSON-GLib Reference Manual</th>
-<td><a accesskey="n" href="ix03.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-</tr>
-<tr><td colspan="5" class="shortcuts">
-<a class="shortcut" href="#idxC">C</a>
- |
- <a class="shortcut" href="#idxO">O</a>
- |
- <a class="shortcut" href="#idxS">S</a>
-</td></tr>
-</table>
-<div class="index" title="Index of deprecated symbols">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="id3055849"></a>Index of deprecated symbols</h2></div></div></div>
-<a name="idx"></a><a name="idxC"></a><h3 class="title">C</h3>
-<dt><a class="link" href="json-glib-GObject-Serialization.html#json-construct-gobject" title="json_construct_gobject ()">json_construct_gobject</a></dt>
-<dd></dd>
-<a name="idxO"></a><h3 class="title">O</h3>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-add-member" title="json_object_add_member ()">json_object_add_member</a></dt>
-<dd></dd>
-<a name="idxS"></a><h3 class="title">S</h3>
-<dt><a class="link" href="json-glib-GObject-Serialization.html#json-serialize-gobject" title="json_serialize_gobject ()">json_serialize_gobject</a></dt>
-<dd></dd>
-</div>
-<div class="footer">
-<hr>
- Generated by GTK-Doc V1.13</div>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Index of new symbols in 0.4</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="up" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="prev" href="ix02.html" title="Index of deprecated symbols">
-<link rel="next" href="ix04.html" title="Index of new symbols in 0.6">
-<meta name="generator" content="GTK-Doc V1.13 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="part" href="json-glib.html" title="Part I. JSON-GLib Overview">
-<link rel="part" href="json-base.html" title="Part II. JSON-GLib Reference">
-<link rel="chapter" href="ch01.html" title="Data Types">
-<link rel="part" href="json-streams.html" title="Part III. Reading and writing">
-<link rel="chapter" href="ch02.html" title="Parser">
-<link rel="chapter" href="ch03.html" title="Generator">
-<link rel="part" href="json-advanced.html" title="Part IV. JSON-GLib Advanced API">
-<link rel="part" href="json-tools.html" title="Part V. JSON-GLib Additional Reference">
-<link rel="chapter" href="ch04.html" title="Object Hierarchy">
-<link rel="index" href="ix01.html" title="Index">
-<link rel="index" href="ix02.html" title="Index of deprecated symbols">
-<link rel="index" href="ix03.html" title="Index of new symbols in 0.4">
-<link rel="index" href="ix04.html" title="Index of new symbols in 0.6">
-<link rel="index" href="ix05.html" title="Index of new symbols in 0.8">
-<link rel="index" href="ix06.html" title="Index of new symbols in 0.10">
-<link rel="glossary" href="annotation-glossary.html" title="Annotation Glossary">
-<link rel="appendix" href="license.html" title="Appendix A. License">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
-<tr valign="middle">
-<td><a accesskey="p" href="ix02.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td> </td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<th width="100%" align="center">JSON-GLib Reference Manual</th>
-<td><a accesskey="n" href="ix04.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-</tr>
-<tr><td colspan="5" class="shortcuts">
-<a class="shortcut" href="#idxC">C</a>
- |
- <a class="shortcut" href="#idxG">G</a>
- |
- <a class="shortcut" href="#idxN">N</a>
- |
- <a class="shortcut" href="#idxP">P</a>
-</td></tr>
-</table>
-<div class="index" title="Index of new symbols in 0.4">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="id3055863"></a>Index of new symbols in 0.4</h2></div></div></div>
-<a name="idx"></a><a name="idxC"></a><h3 class="title">C</h3>
-<dt><a class="link" href="json-glib-GObject-Serialization.html#json-construct-gobject" title="json_construct_gobject ()">json_construct_gobject</a></dt>
-<dd></dd>
-<a name="idxG"></a><h3 class="title">G</h3>
-<dt><a class="link" href="JsonGenerator.html#JsonGenerator--root" title='The "root" property'>JsonGenerator:root</a></dt>
-<dd></dd>
-<a name="idxN"></a><h3 class="title">N</h3>
-<dt><a class="link" href="json-glib-JSON-Node.html#json-node-get-value-type" title="json_node_get_value_type ()">json_node_get_value_type</a></dt>
-<dd></dd>
-<a name="idxP"></a><h3 class="title">P</h3>
-<dt><a class="link" href="JsonParser.html#json-parser-has-assignment" title="json_parser_has_assignment ()">json_parser_has_assignment</a></dt>
-<dd></dd>
-</div>
-<div class="footer">
-<hr>
- Generated by GTK-Doc V1.13</div>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Index of new symbols in 0.6</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="up" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="prev" href="ix03.html" title="Index of new symbols in 0.4">
-<link rel="next" href="ix05.html" title="Index of new symbols in 0.8">
-<meta name="generator" content="GTK-Doc V1.13 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="part" href="json-glib.html" title="Part I. JSON-GLib Overview">
-<link rel="part" href="json-base.html" title="Part II. JSON-GLib Reference">
-<link rel="chapter" href="ch01.html" title="Data Types">
-<link rel="part" href="json-streams.html" title="Part III. Reading and writing">
-<link rel="chapter" href="ch02.html" title="Parser">
-<link rel="chapter" href="ch03.html" title="Generator">
-<link rel="part" href="json-advanced.html" title="Part IV. JSON-GLib Advanced API">
-<link rel="part" href="json-tools.html" title="Part V. JSON-GLib Additional Reference">
-<link rel="chapter" href="ch04.html" title="Object Hierarchy">
-<link rel="index" href="ix01.html" title="Index">
-<link rel="index" href="ix02.html" title="Index of deprecated symbols">
-<link rel="index" href="ix03.html" title="Index of new symbols in 0.4">
-<link rel="index" href="ix04.html" title="Index of new symbols in 0.6">
-<link rel="index" href="ix05.html" title="Index of new symbols in 0.8">
-<link rel="index" href="ix06.html" title="Index of new symbols in 0.10">
-<link rel="glossary" href="annotation-glossary.html" title="Annotation Glossary">
-<link rel="appendix" href="license.html" title="Appendix A. License">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
-<tr valign="middle">
-<td><a accesskey="p" href="ix03.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td> </td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<th width="100%" align="center">JSON-GLib Reference Manual</th>
-<td><a accesskey="n" href="ix05.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-</tr>
-<tr><td colspan="5" class="shortcuts">
-<a class="shortcut" href="#idxA">A</a>
- |
- <a class="shortcut" href="#idxG">G</a>
- |
- <a class="shortcut" href="#idxO">O</a>
-</td></tr>
-</table>
-<div class="index" title="Index of new symbols in 0.6">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="id3055877"></a>Index of new symbols in 0.6</h2></div></div></div>
-<a name="idx"></a><a name="idxA"></a><h3 class="title">A</h3>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-dup-element" title="json_array_dup_element ()">json_array_dup_element</a></dt>
-<dd></dd>
-<a name="idxG"></a><h3 class="title">G</h3>
-<dt><a class="link" href="JsonGenerator.html#JsonGenerator--indent-char" title='The "indent-char" property'>JsonGenerator:indent-char</a></dt>
-<dd></dd>
-<a name="idxO"></a><h3 class="title">O</h3>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-dup-member" title="json_object_dup_member ()">json_object_dup_member</a></dt>
-<dd></dd>
-</div>
-<div class="footer">
-<hr>
- Generated by GTK-Doc V1.13</div>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Index of new symbols in 0.8</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="up" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="prev" href="ix04.html" title="Index of new symbols in 0.6">
-<link rel="next" href="ix06.html" title="Index of new symbols in 0.10">
-<meta name="generator" content="GTK-Doc V1.13 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="part" href="json-glib.html" title="Part I. JSON-GLib Overview">
-<link rel="part" href="json-base.html" title="Part II. JSON-GLib Reference">
-<link rel="chapter" href="ch01.html" title="Data Types">
-<link rel="part" href="json-streams.html" title="Part III. Reading and writing">
-<link rel="chapter" href="ch02.html" title="Parser">
-<link rel="chapter" href="ch03.html" title="Generator">
-<link rel="part" href="json-advanced.html" title="Part IV. JSON-GLib Advanced API">
-<link rel="part" href="json-tools.html" title="Part V. JSON-GLib Additional Reference">
-<link rel="chapter" href="ch04.html" title="Object Hierarchy">
-<link rel="index" href="ix01.html" title="Index">
-<link rel="index" href="ix02.html" title="Index of deprecated symbols">
-<link rel="index" href="ix03.html" title="Index of new symbols in 0.4">
-<link rel="index" href="ix04.html" title="Index of new symbols in 0.6">
-<link rel="index" href="ix05.html" title="Index of new symbols in 0.8">
-<link rel="index" href="ix06.html" title="Index of new symbols in 0.10">
-<link rel="glossary" href="annotation-glossary.html" title="Annotation Glossary">
-<link rel="appendix" href="license.html" title="Appendix A. License">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
-<tr valign="middle">
-<td><a accesskey="p" href="ix04.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td> </td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<th width="100%" align="center">JSON-GLib Reference Manual</th>
-<td><a accesskey="n" href="ix06.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-</tr>
-<tr><td colspan="5" class="shortcuts">
-<a class="shortcut" href="#idxA">A</a>
- |
- <a class="shortcut" href="#idxN">N</a>
- |
- <a class="shortcut" href="#idxO">O</a>
-</td></tr>
-</table>
-<div class="index" title="Index of new symbols in 0.8">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="id3055891"></a>Index of new symbols in 0.8</h2></div></div></div>
-<a name="idx"></a><a name="idxA"></a><h3 class="title">A</h3>
-<dt><a class="link" href="json-glib-JSON-Array.html#JsonArrayForeach" title="JsonArrayForeach ()">JsonArrayForeach</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-add-array-element" title="json_array_add_array_element ()">json_array_add_array_element</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-add-boolean-element" title="json_array_add_boolean_element ()">json_array_add_boolean_element</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-add-double-element" title="json_array_add_double_element ()">json_array_add_double_element</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-add-int-element" title="json_array_add_int_element ()">json_array_add_int_element</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-add-null-element" title="json_array_add_null_element ()">json_array_add_null_element</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-add-object-element" title="json_array_add_object_element ()">json_array_add_object_element</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-add-string-element" title="json_array_add_string_element ()">json_array_add_string_element</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-foreach-element" title="json_array_foreach_element ()">json_array_foreach_element</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-get-array-element" title="json_array_get_array_element ()">json_array_get_array_element</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-get-boolean-element" title="json_array_get_boolean_element ()">json_array_get_boolean_element</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-get-double-element" title="json_array_get_double_element ()">json_array_get_double_element</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-get-int-element" title="json_array_get_int_element ()">json_array_get_int_element</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-get-null-element" title="json_array_get_null_element ()">json_array_get_null_element</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-get-object-element" title="json_array_get_object_element ()">json_array_get_object_element</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Array.html#json-array-get-string-element" title="json_array_get_string_element ()">json_array_get_string_element</a></dt>
-<dd></dd>
-<a name="idxN"></a><h3 class="title">N</h3>
-<dt><a class="link" href="json-glib-JSON-Node.html#json-node-get-node-type" title="json_node_get_node_type ()">json_node_get_node_type</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#json-node-is-null" title="json_node_is_null ()">json_node_is_null</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#json-node-set-parent" title="json_node_set_parent ()">json_node_set_parent</a></dt>
-<dd></dd>
-<a name="idxO"></a><h3 class="title">O</h3>
-<dt><a class="link" href="json-glib-JSON-Object.html#JsonObjectForeach" title="JsonObjectForeach ()">JsonObjectForeach</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-foreach-member" title="json_object_foreach_member ()">json_object_foreach_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-get-array-member" title="json_object_get_array_member ()">json_object_get_array_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-get-boolean-member" title="json_object_get_boolean_member ()">json_object_get_boolean_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-get-double-member" title="json_object_get_double_member ()">json_object_get_double_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-get-int-member" title="json_object_get_int_member ()">json_object_get_int_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-get-null-member" title="json_object_get_null_member ()">json_object_get_null_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-get-object-member" title="json_object_get_object_member ()">json_object_get_object_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-get-string-member" title="json_object_get_string_member ()">json_object_get_string_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-set-array-member" title="json_object_set_array_member ()">json_object_set_array_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-set-boolean-member" title="json_object_set_boolean_member ()">json_object_set_boolean_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-set-double-member" title="json_object_set_double_member ()">json_object_set_double_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-set-int-member" title="json_object_set_int_member ()">json_object_set_int_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-set-member" title="json_object_set_member ()">json_object_set_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-set-null-member" title="json_object_set_null_member ()">json_object_set_null_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-set-object-member" title="json_object_set_object_member ()">json_object_set_object_member</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Object.html#json-object-set-string-member" title="json_object_set_string_member ()">json_object_set_string_member</a></dt>
-<dd></dd>
-</div>
-<div class="footer">
-<hr>
- Generated by GTK-Doc V1.13</div>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Index of new symbols in 0.10</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="up" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="prev" href="ix05.html" title="Index of new symbols in 0.8">
-<link rel="next" href="annotation-glossary.html" title="Annotation Glossary">
-<meta name="generator" content="GTK-Doc V1.13 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="part" href="json-glib.html" title="Part I. JSON-GLib Overview">
-<link rel="part" href="json-base.html" title="Part II. JSON-GLib Reference">
-<link rel="chapter" href="ch01.html" title="Data Types">
-<link rel="part" href="json-streams.html" title="Part III. Reading and writing">
-<link rel="chapter" href="ch02.html" title="Parser">
-<link rel="chapter" href="ch03.html" title="Generator">
-<link rel="part" href="json-advanced.html" title="Part IV. JSON-GLib Advanced API">
-<link rel="part" href="json-tools.html" title="Part V. JSON-GLib Additional Reference">
-<link rel="chapter" href="ch04.html" title="Object Hierarchy">
-<link rel="index" href="ix01.html" title="Index">
-<link rel="index" href="ix02.html" title="Index of deprecated symbols">
-<link rel="index" href="ix03.html" title="Index of new symbols in 0.4">
-<link rel="index" href="ix04.html" title="Index of new symbols in 0.6">
-<link rel="index" href="ix05.html" title="Index of new symbols in 0.8">
-<link rel="index" href="ix06.html" title="Index of new symbols in 0.10">
-<link rel="glossary" href="annotation-glossary.html" title="Annotation Glossary">
-<link rel="appendix" href="license.html" title="Appendix A. License">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
-<tr valign="middle">
-<td><a accesskey="p" href="ix05.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td> </td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<th width="100%" align="center">JSON-GLib Reference Manual</th>
-<td><a accesskey="n" href="annotation-glossary.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-</tr>
-<tr><td colspan="5" class="shortcuts">
-<a class="shortcut" href="#idxB">B</a>
- |
- <a class="shortcut" href="#idxG">G</a>
- |
- <a class="shortcut" href="#idxN">N</a>
- |
- <a class="shortcut" href="#idxS">S</a>
-</td></tr>
-</table>
-<div class="index" title="Index of new symbols in 0.10">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="id3055905"></a>Index of new symbols in 0.10</h2></div></div></div>
-<a name="idx"></a><a name="idxB"></a><h3 class="title">B</h3>
-<dt><a class="link" href="json-glib-Boxed-Types-Serialization.html#JsonBoxedDeserializeFunc" title="JsonBoxedDeserializeFunc ()">JsonBoxedDeserializeFunc</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-Boxed-Types-Serialization.html#JsonBoxedSerializeFunc" title="JsonBoxedSerializeFunc ()">JsonBoxedSerializeFunc</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-Boxed-Types-Serialization.html#json-boxed-can-deserialize" title="json_boxed_can_deserialize ()">json_boxed_can_deserialize</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-Boxed-Types-Serialization.html#json-boxed-can-serialize" title="json_boxed_can_serialize ()">json_boxed_can_serialize</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-Boxed-Types-Serialization.html#json-boxed-deserialize" title="json_boxed_deserialize ()">json_boxed_deserialize</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-Boxed-Types-Serialization.html#json-boxed-register-deserialize-func" title="json_boxed_register_deserialize_func ()">json_boxed_register_deserialize_func</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-Boxed-Types-Serialization.html#json-boxed-register-serialize-func" title="json_boxed_register_serialize_func ()">json_boxed_register_serialize_func</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-Boxed-Types-Serialization.html#json-boxed-serialize" title="json_boxed_serialize ()">json_boxed_serialize</a></dt>
-<dd></dd>
-<a name="idxG"></a><h3 class="title">G</h3>
-<dt><a class="link" href="json-glib-GObject-Serialization.html#json-gobject-deserialize" title="json_gobject_deserialize ()">json_gobject_deserialize</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-GObject-Serialization.html#json-gobject-from-data" title="json_gobject_from_data ()">json_gobject_from_data</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-GObject-Serialization.html#json-gobject-serialize" title="json_gobject_serialize ()">json_gobject_serialize</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-GObject-Serialization.html#json-gobject-to-data" title="json_gobject_to_data ()">json_gobject_to_data</a></dt>
-<dd></dd>
-<a name="idxN"></a><h3 class="title">N</h3>
-<dt><a class="link" href="json-glib-JSON-Node.html#JSON-NODE-HOLDS:CAPS" title="JSON_NODE_HOLDS()">JSON_NODE_HOLDS</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#JSON-NODE-HOLDS-ARRAY:CAPS" title="JSON_NODE_HOLDS_ARRAY()">JSON_NODE_HOLDS_ARRAY</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#JSON-NODE-HOLDS-NULL:CAPS" title="JSON_NODE_HOLDS_NULL()">JSON_NODE_HOLDS_NULL</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#JSON-NODE-HOLDS-OBJECT:CAPS" title="JSON_NODE_HOLDS_OBJECT()">JSON_NODE_HOLDS_OBJECT</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-JSON-Node.html#JSON-NODE-HOLDS-VALUE:CAPS" title="JSON_NODE_HOLDS_VALUE()">JSON_NODE_HOLDS_VALUE</a></dt>
-<dd></dd>
-<a name="idxS"></a><h3 class="title">S</h3>
-<dt><a class="link" href="json-glib-Serializable-Interface.html#json-serializable-default-deserialize-property" title="json_serializable_default_deserialize_property ()">json_serializable_default_deserialize_property</a></dt>
-<dd></dd>
-<dt><a class="link" href="json-glib-Serializable-Interface.html#json-serializable-default-serialize-property" title="json_serializable_default_serialize_property ()">json_serializable_default_serialize_property</a></dt>
-<dd></dd>
-</div>
-<div class="footer">
-<hr>
- Generated by GTK-Doc V1.13</div>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Part IV. JSON-GLib Advanced API</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="up" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="prev" href="JsonGenerator.html" title="JsonGenerator">
-<link rel="next" href="json-glib-GObject-Serialization.html" title="GObject Serialization">
-<meta name="generator" content="GTK-Doc V1.13 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="part" href="json-glib.html" title="Part I. JSON-GLib Overview">
-<link rel="part" href="json-base.html" title="Part II. JSON-GLib Reference">
-<link rel="chapter" href="ch01.html" title="Data Types">
-<link rel="part" href="json-streams.html" title="Part III. Reading and writing">
-<link rel="chapter" href="ch02.html" title="Parser">
-<link rel="chapter" href="ch03.html" title="Generator">
-<link rel="part" href="json-advanced.html" title="Part IV. JSON-GLib Advanced API">
-<link rel="part" href="json-tools.html" title="Part V. JSON-GLib Additional Reference">
-<link rel="chapter" href="ch04.html" title="Object Hierarchy">
-<link rel="index" href="ix01.html" title="Index">
-<link rel="index" href="ix02.html" title="Index of deprecated symbols">
-<link rel="index" href="ix03.html" title="Index of new symbols in 0.4">
-<link rel="index" href="ix04.html" title="Index of new symbols in 0.6">
-<link rel="index" href="ix05.html" title="Index of new symbols in 0.8">
-<link rel="index" href="ix06.html" title="Index of new symbols in 0.10">
-<link rel="glossary" href="annotation-glossary.html" title="Annotation Glossary">
-<link rel="appendix" href="license.html" title="Appendix A. License">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="JsonGenerator.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td> </td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<th width="100%" align="center">JSON-GLib Reference Manual</th>
-<td><a accesskey="n" href="json-glib-GObject-Serialization.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="part" title="Part IV. JSON-GLib Advanced API">
-<div class="titlepage"><div><div><h1 class="title">
-<a name="json-advanced"></a>Part IV. JSON-GLib Advanced API</h1></div></div></div>
-<div class="toc">
-<p><b>Table of Contents</b></p>
-<dl>
-<dt>
-<span class="refentrytitle"><a href="json-glib-GObject-Serialization.html">GObject Serialization</a></span><span class="refpurpose"> — Serialize and deserialize GObjects</span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="json-glib-Serializable-Interface.html">Serializable Interface</a></span><span class="refpurpose"> — Interface for serialize and deserialize special GObjects</span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="json-glib-Boxed-Types-Serialization.html">Boxed Types Serialization</a></span><span class="refpurpose"> — Serialize and deserialize GBoxed types</span>
-</dt>
-</dl>
-</div>
-</div>
-<div class="footer">
-<hr>
- Generated by GTK-Doc V1.13</div>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Part II. JSON-GLib Reference</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="up" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="prev" href="json-glib.html" title="Part I. JSON-GLib Overview">
-<link rel="next" href="ch01.html" title="Data Types">
-<meta name="generator" content="GTK-Doc V1.13 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="part" href="json-glib.html" title="Part I. JSON-GLib Overview">
-<link rel="part" href="json-base.html" title="Part II. JSON-GLib Reference">
-<link rel="chapter" href="ch01.html" title="Data Types">
-<link rel="part" href="json-streams.html" title="Part III. Reading and writing">
-<link rel="chapter" href="ch02.html" title="Parser">
-<link rel="chapter" href="ch03.html" title="Generator">
-<link rel="part" href="json-advanced.html" title="Part IV. JSON-GLib Advanced API">
-<link rel="part" href="json-tools.html" title="Part V. JSON-GLib Additional Reference">
-<link rel="chapter" href="ch04.html" title="Object Hierarchy">
-<link rel="index" href="ix01.html" title="Index">
-<link rel="index" href="ix02.html" title="Index of deprecated symbols">
-<link rel="index" href="ix03.html" title="Index of new symbols in 0.4">
-<link rel="index" href="ix04.html" title="Index of new symbols in 0.6">
-<link rel="index" href="ix05.html" title="Index of new symbols in 0.8">
-<link rel="index" href="ix06.html" title="Index of new symbols in 0.10">
-<link rel="glossary" href="annotation-glossary.html" title="Annotation Glossary">
-<link rel="appendix" href="license.html" title="Appendix A. License">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="json-glib.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td> </td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<th width="100%" align="center">JSON-GLib Reference Manual</th>
-<td><a accesskey="n" href="ch01.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="part" title="Part II. JSON-GLib Reference">
-<div class="titlepage"><div><div><h1 class="title">
-<a name="json-base"></a>Part II. JSON-GLib Reference</h1></div></div></div>
-<div class="partintro" title="JSON-GLib Reference">
-<div></div>
-<p>
- JSON-GLib provides wrappers around the complex data types defined
- by the JSON specification. The fundamental types are handled using
- the Generic Value container (GValue) provided by GLib.
- </p>
-<p>
- JSON complex data types are either arrays (a n-tuple of items)
- or objects (a mapping between a string and a value); arrays and
- objects can contain multiple values, including other arrays and
- objects.
- </p>
-<div class="toc">
-<p><b>Table of Contents</b></p>
-<dl>
-<dt><span class="chapter"><a href="ch01.html">Data Types</a></span></dt>
-<dd><dl>
-<dt>
-<span class="refentrytitle"><a href="json-glib-JSON-Node.html">JSON Node</a></span><span class="refpurpose"> — Node in a JSON object model</span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="json-glib-JSON-Array.html">JSON Array</a></span><span class="refpurpose"> — a JSON array representation</span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="json-glib-JSON-Object.html">JSON Object</a></span><span class="refpurpose"> — a JSON object representation</span>
-</dt>
-</dl></dd>
-</dl>
-</div>
-</div>
-</div>
-<div class="footer">
-<hr>
- Generated by GTK-Doc V1.13</div>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Boxed Types Serialization</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="up" href="json-advanced.html" title="Part IV. JSON-GLib Advanced API">
-<link rel="prev" href="json-glib-Serializable-Interface.html" title="Serializable Interface">
-<link rel="next" href="json-tools.html" title="Part V. JSON-GLib Additional Reference">
-<meta name="generator" content="GTK-Doc V1.13 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="part" href="json-glib.html" title="Part I. JSON-GLib Overview">
-<link rel="part" href="json-base.html" title="Part II. JSON-GLib Reference">
-<link rel="chapter" href="ch01.html" title="Data Types">
-<link rel="part" href="json-streams.html" title="Part III. Reading and writing">
-<link rel="chapter" href="ch02.html" title="Parser">
-<link rel="chapter" href="ch03.html" title="Generator">
-<link rel="part" href="json-advanced.html" title="Part IV. JSON-GLib Advanced API">
-<link rel="part" href="json-tools.html" title="Part V. JSON-GLib Additional Reference">
-<link rel="chapter" href="ch04.html" title="Object Hierarchy">
-<link rel="index" href="ix01.html" title="Index">
-<link rel="index" href="ix02.html" title="Index of deprecated symbols">
-<link rel="index" href="ix03.html" title="Index of new symbols in 0.4">
-<link rel="index" href="ix04.html" title="Index of new symbols in 0.6">
-<link rel="index" href="ix05.html" title="Index of new symbols in 0.8">
-<link rel="index" href="ix06.html" title="Index of new symbols in 0.10">
-<link rel="glossary" href="annotation-glossary.html" title="Annotation Glossary">
-<link rel="appendix" href="license.html" title="Appendix A. License">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
-<tr valign="middle">
-<td><a accesskey="p" href="json-glib-Serializable-Interface.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="json-advanced.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<th width="100%" align="center">JSON-GLib Reference Manual</th>
-<td><a accesskey="n" href="json-tools.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-</tr>
-<tr><td colspan="5" class="shortcuts">
-<a href="#json-glib-Boxed-Types-Serialization.synopsis" class="shortcut">Top</a>
- |
- <a href="#json-glib-Boxed-Types-Serialization.description" class="shortcut">Description</a>
-</td></tr>
-</table>
-<div class="refentry" title="Boxed Types Serialization">
-<a name="json-glib-Boxed-Types-Serialization"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle"><a name="json-glib-Boxed-Types-Serialization.top_of_page"></a>Boxed Types Serialization</span></h2>
-<p>Boxed Types Serialization — Serialize and deserialize GBoxed types</p>
-</td>
-<td valign="top" align="right"></td>
-</tr></table></div>
-<div class="refsynopsisdiv" title="Synopsis">
-<a name="json-glib-Boxed-Types-Serialization.synopsis"></a><h2>Synopsis</h2>
-<pre class="synopsis"><a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> * (<a class="link" href="json-glib-Boxed-Types-Serialization.html#JsonBoxedSerializeFunc" title="JsonBoxedSerializeFunc ()">*JsonBoxedSerializeFunc</a>) (<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gconstpointer"><span class="returnvalue">gconstpointer</span></a> boxed);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="returnvalue">gpointer</span></a> (<a class="link" href="json-glib-Boxed-Types-Serialization.html#JsonBoxedDeserializeFunc" title="JsonBoxedDeserializeFunc ()">*JsonBoxedDeserializeFunc</a>) (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);
-<span class="returnvalue">void</span> <a class="link" href="json-glib-Boxed-Types-Serialization.html#json-boxed-register-serialize-func" title="json_boxed_register_serialize_func ()">json_boxed_register_serialize_func</a> (<a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a> gboxed_type,
- <a class="link" href="json-glib-JSON-Node.html#JsonNodeType" title="enum JsonNodeType"><span class="returnvalue">JsonNodeType</span></a> node_type,
- <a class="link" href="json-glib-Boxed-Types-Serialization.html#JsonBoxedSerializeFunc" title="JsonBoxedSerializeFunc ()"><span class="returnvalue">JsonBoxedSerializeFunc</span></a> serialize_func);
-<span class="returnvalue">void</span> <a class="link" href="json-glib-Boxed-Types-Serialization.html#json-boxed-register-deserialize-func" title="json_boxed_register_deserialize_func ()">json_boxed_register_deserialize_func</a>
- (<a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a> gboxed_type,
- <a class="link" href="json-glib-JSON-Node.html#JsonNodeType" title="enum JsonNodeType"><span class="returnvalue">JsonNodeType</span></a> node_type,
- <a class="link" href="json-glib-Boxed-Types-Serialization.html#JsonBoxedDeserializeFunc" title="JsonBoxedDeserializeFunc ()"><span class="returnvalue">JsonBoxedDeserializeFunc</span></a> deserialize_func);
-
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="json-glib-Boxed-Types-Serialization.html#json-boxed-can-serialize" title="json_boxed_can_serialize ()">json_boxed_can_serialize</a> (<a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a> gboxed_type,
- <a class="link" href="json-glib-JSON-Node.html#JsonNodeType" title="enum JsonNodeType"><span class="returnvalue">JsonNodeType</span></a> *node_type);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="json-glib-Boxed-Types-Serialization.html#json-boxed-can-deserialize" title="json_boxed_can_deserialize ()">json_boxed_can_deserialize</a> (<a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a> gboxed_type,
- <a class="link" href="json-glib-JSON-Node.html#JsonNodeType" title="enum JsonNodeType"><span class="returnvalue">JsonNodeType</span></a> node_type);
-<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> * <a class="link" href="json-glib-Boxed-Types-Serialization.html#json-boxed-serialize" title="json_boxed_serialize ()">json_boxed_serialize</a> (<a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a> gboxed_type,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gconstpointer"><span class="returnvalue">gconstpointer</span></a> boxed);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="returnvalue">gpointer</span></a> <a class="link" href="json-glib-Boxed-Types-Serialization.html#json-boxed-deserialize" title="json_boxed_deserialize ()">json_boxed_deserialize</a> (<a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a> gboxed_type,
- <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);
-</pre>
-</div>
-<div class="refsect1" title="Description">
-<a name="json-glib-Boxed-Types-Serialization.description"></a><h2>Description</h2>
-<p>
-GLib's <span class="type">GBoxed</span> type is a generic wrapper for arbitrary C structures.
-</p>
-<p>
-JSON-GLib allows serialization and deserialization of a <span class="type">GBoxed</span> type
-by registering functions mapping a <a class="link" href="json-glib-JSON-Node.html#JsonNodeType" title="enum JsonNodeType"><span class="type">JsonNodeType</span></a> to a specific
-<a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a>.
-</p>
-<p>
-When registering a <span class="type">GBoxed</span> type you should also register the
-corresponding transformation functions, e.g.:
-</p>
-<p>
-</p>
-<div class="informalexample"><pre class="programlisting">
- GType
- my_struct_get_type (void)
- {
- static GType boxed_type = 0;
-
- if (boxed_type == 0)
- {
- boxed_type =
- g_boxed_type_register_static (g_intern_static_string ("MyStruct"),
- (GBoxedCopyFunc) my_struct_copy,
- (GBoxedFreeFunc) my_struct_free);
-
- json_boxed_register_serialize_func (boxed_type, JSON_NODE_OBJECT,
- my_struct_serialize);
- json_boxed_register_deserialize_func (boxed_type, JSON_NODE_OBJECT,
- my_struct_deserialize);
- }
-
- return boxed_type;
- }
-</pre></div>
-<p>
-</p>
-<p>
-The serialization function will be invoked by <a class="link" href="json-glib-Boxed-Types-Serialization.html#json-boxed-serialize" title="json_boxed_serialize ()"><code class="function">json_boxed_serialize()</code></a>:
-it will be passed a pointer to the C structure and it must return a
-<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>. The deserialization function will be invoked by
-<a class="link" href="json-glib-Boxed-Types-Serialization.html#json-boxed-deserialize" title="json_boxed_deserialize ()"><code class="function">json_boxed_deserialize()</code></a>: it will be passed a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> for the
-declared type and it must return a newly allocated C structure.
-</p>
-<p>
-It is possible to check whether a <span class="type">GBoxed</span> type can be deserialized
-from a specific <a class="link" href="json-glib-JSON-Node.html#JsonNodeType" title="enum JsonNodeType"><span class="type">JsonNodeType</span></a>, and whether a <span class="type">GBoxed</span> can be serialized
-and to which specific <a class="link" href="json-glib-JSON-Node.html#JsonNodeType" title="enum JsonNodeType"><span class="type">JsonNodeType</span></a>.</p>
-</div>
-<div class="refsect1" title="Details">
-<a name="json-glib-Boxed-Types-Serialization.details"></a><h2>Details</h2>
-<div class="refsect2" title="JsonBoxedSerializeFunc ()">
-<a name="JsonBoxedSerializeFunc"></a><h3>JsonBoxedSerializeFunc ()</h3>
-<pre class="programlisting"><a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> * (*JsonBoxedSerializeFunc) (<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gconstpointer"><span class="returnvalue">gconstpointer</span></a> boxed);</pre>
-<p>
-Serializes the passed <span class="type">GBoxed</span> and stores it inside a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>boxed</code></em> :</span></p></td>
-<td> a <span class="type">GBoxed</span>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> the newly created <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>
-
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.10</p>
-</div>
-<hr>
-<div class="refsect2" title="JsonBoxedDeserializeFunc ()">
-<a name="JsonBoxedDeserializeFunc"></a><h3>JsonBoxedDeserializeFunc ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="returnvalue">gpointer</span></a> (*JsonBoxedDeserializeFunc) (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);</pre>
-<p>
-Deserializes the contents of the passed <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> into a <span class="type">GBoxed</span></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> the newly created boxed type
-
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.10</p>
-</div>
-<hr>
-<div class="refsect2" title="json_boxed_register_serialize_func ()">
-<a name="json-boxed-register-serialize-func"></a><h3>json_boxed_register_serialize_func ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_boxed_register_serialize_func (<a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a> gboxed_type,
- <a class="link" href="json-glib-JSON-Node.html#JsonNodeType" title="enum JsonNodeType"><span class="returnvalue">JsonNodeType</span></a> node_type,
- <a class="link" href="json-glib-Boxed-Types-Serialization.html#JsonBoxedSerializeFunc" title="JsonBoxedSerializeFunc ()"><span class="returnvalue">JsonBoxedSerializeFunc</span></a> serialize_func);</pre>
-<p>
-Registers a serialization function for a <span class="type">GBoxed</span> of type <em class="parameter"><code>gboxed_type</code></em>
-to a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> of type <em class="parameter"><code>node_type</code></em></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>gboxed_type</code></em> :</span></p></td>
-<td> a boxed type
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node_type</code></em> :</span></p></td>
-<td> a node type
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>serialize_func</code></em> :</span></p></td>
-<td> serialization function for <em class="parameter"><code>boxed_type</code></em> into
- a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> of type <em class="parameter"><code>node_type</code></em>
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.10</p>
-</div>
-<hr>
-<div class="refsect2" title="json_boxed_register_deserialize_func ()">
-<a name="json-boxed-register-deserialize-func"></a><h3>json_boxed_register_deserialize_func ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_boxed_register_deserialize_func
- (<a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a> gboxed_type,
- <a class="link" href="json-glib-JSON-Node.html#JsonNodeType" title="enum JsonNodeType"><span class="returnvalue">JsonNodeType</span></a> node_type,
- <a class="link" href="json-glib-Boxed-Types-Serialization.html#JsonBoxedDeserializeFunc" title="JsonBoxedDeserializeFunc ()"><span class="returnvalue">JsonBoxedDeserializeFunc</span></a> deserialize_func);</pre>
-<p>
-Registers a deserialization function for a <span class="type">GBoxed</span> of type <em class="parameter"><code>gboxed_type</code></em>
-from a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> of type <em class="parameter"><code>node_type</code></em></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>gboxed_type</code></em> :</span></p></td>
-<td> a boxed type
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node_type</code></em> :</span></p></td>
-<td> a node type
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>deserialize_func</code></em> :</span></p></td>
-<td> deserialization function for <em class="parameter"><code>boxed_type</code></em> from
- a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> of type <em class="parameter"><code>node_type</code></em>
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.10</p>
-</div>
-<hr>
-<div class="refsect2" title="json_boxed_can_serialize ()">
-<a name="json-boxed-can-serialize"></a><h3>json_boxed_can_serialize ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> json_boxed_can_serialize (<a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a> gboxed_type,
- <a class="link" href="json-glib-JSON-Node.html#JsonNodeType" title="enum JsonNodeType"><span class="returnvalue">JsonNodeType</span></a> *node_type);</pre>
-<p>
-Checks whether it is possible to serialize a <span class="type">GBoxed</span> of
-type <em class="parameter"><code>gboxed_type</code></em> into a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>. The type of the
-<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> is placed inside <em class="parameter"><code>node_type</code></em> if the function
-returns <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> and it's undefined otherwise.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>gboxed_type</code></em> :</span></p></td>
-<td> a boxed type
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node_type</code></em> :</span></p></td>
-<td>out. <acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>. </td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the type can be serialized,
- and <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.
-
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.10</p>
-</div>
-<hr>
-<div class="refsect2" title="json_boxed_can_deserialize ()">
-<a name="json-boxed-can-deserialize"></a><h3>json_boxed_can_deserialize ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> json_boxed_can_deserialize (<a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a> gboxed_type,
- <a class="link" href="json-glib-JSON-Node.html#JsonNodeType" title="enum JsonNodeType"><span class="returnvalue">JsonNodeType</span></a> node_type);</pre>
-<p>
-Checks whether it is possible to deserialize a <span class="type">GBoxed</span> of
-type <em class="parameter"><code>gboxed_type</code></em> from a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> of type <em class="parameter"><code>node_type</code></em></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>gboxed_type</code></em> :</span></p></td>
-<td> a boxed type
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node_type</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> type
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the type can be deserialized, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise
-
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.10</p>
-</div>
-<hr>
-<div class="refsect2" title="json_boxed_serialize ()">
-<a name="json-boxed-serialize"></a><h3>json_boxed_serialize ()</h3>
-<pre class="programlisting"><a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> * json_boxed_serialize (<a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a> gboxed_type,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gconstpointer"><span class="returnvalue">gconstpointer</span></a> boxed);</pre>
-<p>
-Serializes <em class="parameter"><code>boxed</code></em>, a pointer to a <span class="type">GBoxed</span> of type <em class="parameter"><code>gboxed_type</code></em>,
-into a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>gboxed_type</code></em> :</span></p></td>
-<td> a boxed type
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>boxed</code></em> :</span></p></td>
-<td> a pointer to a <span class="type">GBoxed</span> of type <em class="parameter"><code>gboxed_type</code></em>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> with the serialization of the boxed
- type, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if serialization either failed or was not
- possible
-
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.10</p>
-</div>
-<hr>
-<div class="refsect2" title="json_boxed_deserialize ()">
-<a name="json-boxed-deserialize"></a><h3>json_boxed_deserialize ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="returnvalue">gpointer</span></a> json_boxed_deserialize (<a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a> gboxed_type,
- <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);</pre>
-<p>
-Deserializes <em class="parameter"><code>node</code></em> into a <span class="type">GBoxed</span> of <em class="parameter"><code>gboxed_type</code></em></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>gboxed_type</code></em> :</span></p></td>
-<td> a boxed type
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> the newly allocated <span class="type">GBoxed</span>. Use <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Boxed-Types.html#g-boxed-free"><code class="function">g_boxed_free()</code></a> to
- release the resources allocated by this function
-
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.10</p>
-</div>
-</div>
-</div>
-<div class="footer">
-<hr>
- Generated by GTK-Doc V1.13</div>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GObject Serialization</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="up" href="json-advanced.html" title="Part IV. JSON-GLib Advanced API">
-<link rel="prev" href="json-advanced.html" title="Part IV. JSON-GLib Advanced API">
-<link rel="next" href="json-glib-Serializable-Interface.html" title="Serializable Interface">
-<meta name="generator" content="GTK-Doc V1.13 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="part" href="json-glib.html" title="Part I. JSON-GLib Overview">
-<link rel="part" href="json-base.html" title="Part II. JSON-GLib Reference">
-<link rel="chapter" href="ch01.html" title="Data Types">
-<link rel="part" href="json-streams.html" title="Part III. Reading and writing">
-<link rel="chapter" href="ch02.html" title="Parser">
-<link rel="chapter" href="ch03.html" title="Generator">
-<link rel="part" href="json-advanced.html" title="Part IV. JSON-GLib Advanced API">
-<link rel="part" href="json-tools.html" title="Part V. JSON-GLib Additional Reference">
-<link rel="chapter" href="ch04.html" title="Object Hierarchy">
-<link rel="index" href="ix01.html" title="Index">
-<link rel="index" href="ix02.html" title="Index of deprecated symbols">
-<link rel="index" href="ix03.html" title="Index of new symbols in 0.4">
-<link rel="index" href="ix04.html" title="Index of new symbols in 0.6">
-<link rel="index" href="ix05.html" title="Index of new symbols in 0.8">
-<link rel="index" href="ix06.html" title="Index of new symbols in 0.10">
-<link rel="glossary" href="annotation-glossary.html" title="Annotation Glossary">
-<link rel="appendix" href="license.html" title="Appendix A. License">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
-<tr valign="middle">
-<td><a accesskey="p" href="json-advanced.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="json-advanced.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<th width="100%" align="center">JSON-GLib Reference Manual</th>
-<td><a accesskey="n" href="json-glib-Serializable-Interface.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-</tr>
-<tr><td colspan="5" class="shortcuts">
-<a href="#json-glib-GObject-Serialization.synopsis" class="shortcut">Top</a>
- |
- <a href="#json-glib-GObject-Serialization.description" class="shortcut">Description</a>
-</td></tr>
-</table>
-<div class="refentry" title="GObject Serialization">
-<a name="json-glib-GObject-Serialization"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle"><a name="json-glib-GObject-Serialization.top_of_page"></a>GObject Serialization</span></h2>
-<p>GObject Serialization — Serialize and deserialize GObjects</p>
-</td>
-<td valign="top" align="right"></td>
-</tr></table></div>
-<div class="refsynopsisdiv" title="Synopsis">
-<a name="json-glib-GObject-Serialization.synopsis"></a><h2>Synopsis</h2>
-<pre class="synopsis"><a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> * <a class="link" href="json-glib-GObject-Serialization.html#json-gobject-serialize" title="json_gobject_serialize ()">json_gobject_serialize</a> (<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="returnvalue">GObject</span></a> *gobject);
-<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="returnvalue">GObject</span></a> * <a class="link" href="json-glib-GObject-Serialization.html#json-gobject-deserialize" title="json_gobject_deserialize ()">json_gobject_deserialize</a> (<a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a> gtype,
- <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="json-glib-GObject-Serialization.html#json-gobject-to-data" title="json_gobject_to_data ()">json_gobject_to_data</a> (<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="returnvalue">GObject</span></a> *gobject,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gsize"><span class="returnvalue">gsize</span></a> *length);
-<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="returnvalue">GObject</span></a> * <a class="link" href="json-glib-GObject-Serialization.html#json-gobject-from-data" title="json_gobject_from_data ()">json_gobject_from_data</a> (<a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a> gtype,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *data,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gssize"><span class="returnvalue">gssize</span></a> length,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="returnvalue">GError</span></a> **error);
-
-<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="returnvalue">GObject</span></a> * <a class="link" href="json-glib-GObject-Serialization.html#json-construct-gobject" title="json_construct_gobject ()">json_construct_gobject</a> (<a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a> gtype,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *data,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gsize"><span class="returnvalue">gsize</span></a> length,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="returnvalue">GError</span></a> **error);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="json-glib-GObject-Serialization.html#json-serialize-gobject" title="json_serialize_gobject ()">json_serialize_gobject</a> (<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="returnvalue">GObject</span></a> *gobject,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gsize"><span class="returnvalue">gsize</span></a> *length);
-</pre>
-</div>
-<div class="refsect1" title="Description">
-<a name="json-glib-GObject-Serialization.description"></a><h2>Description</h2>
-<p>
-JSON-GLib provides API for serializing and deserializing <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a>s
-to and from JSON data streams.
-</p>
-<p>
-Simple <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a> classes can be (de)serialized into JSON objects, if the
-properties have compatible types with the native JSON types (integers,
-booleans, strings, string vectors). If the class to be (de)serialized has
-complex data types for properties (like boxed types or other objects)
-then the class should implement the provided <span class="type">JsonSerializable</span> interface
-and its virtual functions.</p>
-</div>
-<div class="refsect1" title="Details">
-<a name="json-glib-GObject-Serialization.details"></a><h2>Details</h2>
-<div class="refsect2" title="json_gobject_serialize ()">
-<a name="json-gobject-serialize"></a><h3>json_gobject_serialize ()</h3>
-<pre class="programlisting"><a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> * json_gobject_serialize (<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="returnvalue">GObject</span></a> *gobject);</pre>
-<p>
-Creates a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> representing the passed <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a>
-instance. Each member of the returned JSON object will
-map to a property of the <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>gobject</code></em> :</span></p></td>
-<td> a <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>transfer full. <acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>. </td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.10</p>
-</div>
-<hr>
-<div class="refsect2" title="json_gobject_deserialize ()">
-<a name="json-gobject-deserialize"></a><h3>json_gobject_deserialize ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="returnvalue">GObject</span></a> * json_gobject_deserialize (<a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a> gtype,
- <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);</pre>
-<p>
-Creates a new <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a> of type <em class="parameter"><code>gtype</code></em>, and constructs it
-using the members of the passed <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>gtype</code></em> :</span></p></td>
-<td> the type of the <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a> to create
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> of type <a class="link" href="json-glib-JSON-Node.html#JSON-NODE-OBJECT:CAPS"><code class="literal">JSON_NODE_OBJECT</code></a> describing the
- instance of type <em class="parameter"><code>gtype</code></em>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>transfer full. <acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>. </td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.10</p>
-</div>
-<hr>
-<div class="refsect2" title="json_gobject_to_data ()">
-<a name="json-gobject-to-data"></a><h3>json_gobject_to_data ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * json_gobject_to_data (<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="returnvalue">GObject</span></a> *gobject,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gsize"><span class="returnvalue">gsize</span></a> *length);</pre>
-<p>
-Serializes a <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a> into a JSON data stream, iterating recursively
-over each property.
-</p>
-<p>
-If <em class="parameter"><code>gobject</code></em> implements the <a class="link" href="json-glib-Serializable-Interface.html#JsonSerializableIface" title="JsonSerializableIface"><span class="type">JsonSerializableIface</span></a> interface, it will
-be asked to serialize all its properties; otherwise, the default
-implementation will be use to translate the compatible types into
-JSON native types.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>gobject</code></em> :</span></p></td>
-<td> a <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td>
-<td> return value for the length of the buffer, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>. </td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> a JSON data stream representing the passed <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a>
-
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.10</p>
-</div>
-<hr>
-<div class="refsect2" title="json_gobject_from_data ()">
-<a name="json-gobject-from-data"></a><h3>json_gobject_from_data ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="returnvalue">GObject</span></a> * json_gobject_from_data (<a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a> gtype,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *data,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gssize"><span class="returnvalue">gssize</span></a> length,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="returnvalue">GError</span></a> **error);</pre>
-<p>
-Deserializes a JSON data stream and creates the corresponding
-<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a> class. If <em class="parameter"><code>gtype</code></em> implements the <a class="link" href="json-glib-Serializable-Interface.html#JsonSerializableIface" title="JsonSerializableIface"><span class="type">JsonSerializableIface</span></a>
-interface, it will be asked to deserialize all the JSON members
-into the respective properties; otherwise, the default implementation
-will be used to translate the compatible JSON native types.
-</p>
-<p>
-Note: the JSON data stream must be an object declaration.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>gtype</code></em> :</span></p></td>
-<td> the <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> of object to construct
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>data</code></em> :</span></p></td>
-<td> a JSON data stream
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td>
-<td> length of the data stream, or -1 if it is NUL-terminated
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
-<td> return location for a <a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a>, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> a <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a> or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>
-
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.10</p>
-</div>
-<hr>
-<div class="refsect2" title="json_construct_gobject ()">
-<a name="json-construct-gobject"></a><h3>json_construct_gobject ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="returnvalue">GObject</span></a> * json_construct_gobject (<a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a> gtype,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *data,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gsize"><span class="returnvalue">gsize</span></a> length,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="returnvalue">GError</span></a> **error);</pre>
-<div class="warning" title="Warning" style="margin-left: 0.5in; margin-right: 0.5in;">
-<h3 class="title">Warning</h3>
-<p><code class="literal">json_construct_gobject</code> has been deprecated since version 0.10 and should not be used in newly-written code. Use <a class="link" href="json-glib-GObject-Serialization.html#json-gobject-from-data" title="json_gobject_from_data ()"><code class="function">json_gobject_from_data()</code></a> instead</p>
-</div>
-<p>
-Deserializes a JSON data stream and creates the corresponding
-<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a> class. If <em class="parameter"><code>gtype</code></em> implements the <a class="link" href="json-glib-Serializable-Interface.html#JsonSerializableIface" title="JsonSerializableIface"><span class="type">JsonSerializableIface</span></a>
-interface, it will be asked to deserialize all the JSON members
-into the respective properties; otherwise, the default implementation
-will be used to translate the compatible JSON native types.
-</p>
-<p>
-Note: the JSON data stream must be an object declaration.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>gtype</code></em> :</span></p></td>
-<td> the <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> of object to construct
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>data</code></em> :</span></p></td>
-<td> a JSON data stream
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td>
-<td> length of the data stream
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
-<td> return location for a <a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a>, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> a <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a> or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>
-
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.4</p>
-</div>
-<hr>
-<div class="refsect2" title="json_serialize_gobject ()">
-<a name="json-serialize-gobject"></a><h3>json_serialize_gobject ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * json_serialize_gobject (<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="returnvalue">GObject</span></a> *gobject,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gsize"><span class="returnvalue">gsize</span></a> *length);</pre>
-<div class="warning" title="Warning" style="margin-left: 0.5in; margin-right: 0.5in;">
-<h3 class="title">Warning</h3>
-<p><code class="literal">json_serialize_gobject</code> has been deprecated since version 0.10 and should not be used in newly-written code. Use <a class="link" href="json-glib-GObject-Serialization.html#json-gobject-to-data" title="json_gobject_to_data ()"><code class="function">json_gobject_to_data()</code></a> instead</p>
-</div>
-<p>
-Serializes a <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a> into a JSON data stream. If <em class="parameter"><code>gobject</code></em> implements
-the <a class="link" href="json-glib-Serializable-Interface.html#JsonSerializableIface" title="JsonSerializableIface"><span class="type">JsonSerializableIface</span></a> interface, it will be asked to serizalize all
-its properties; otherwise, the default implementation will be use to
-translate the compatible types into JSON native types.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>gobject</code></em> :</span></p></td>
-<td> a <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td>
-<td> return value for the length of the buffer, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>. </td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> a JSON data stream representing the passed <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a>
-
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-</div>
-<div class="footer">
-<hr>
- Generated by GTK-Doc V1.13</div>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>JSON Array</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="up" href="ch01.html" title="Data Types">
-<link rel="prev" href="json-glib-JSON-Node.html" title="JSON Node">
-<link rel="next" href="json-glib-JSON-Object.html" title="JSON Object">
-<meta name="generator" content="GTK-Doc V1.13 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="part" href="json-glib.html" title="Part I. JSON-GLib Overview">
-<link rel="part" href="json-base.html" title="Part II. JSON-GLib Reference">
-<link rel="chapter" href="ch01.html" title="Data Types">
-<link rel="part" href="json-streams.html" title="Part III. Reading and writing">
-<link rel="chapter" href="ch02.html" title="Parser">
-<link rel="chapter" href="ch03.html" title="Generator">
-<link rel="part" href="json-advanced.html" title="Part IV. JSON-GLib Advanced API">
-<link rel="part" href="json-tools.html" title="Part V. JSON-GLib Additional Reference">
-<link rel="chapter" href="ch04.html" title="Object Hierarchy">
-<link rel="index" href="ix01.html" title="Index">
-<link rel="index" href="ix02.html" title="Index of deprecated symbols">
-<link rel="index" href="ix03.html" title="Index of new symbols in 0.4">
-<link rel="index" href="ix04.html" title="Index of new symbols in 0.6">
-<link rel="index" href="ix05.html" title="Index of new symbols in 0.8">
-<link rel="index" href="ix06.html" title="Index of new symbols in 0.10">
-<link rel="glossary" href="annotation-glossary.html" title="Annotation Glossary">
-<link rel="appendix" href="license.html" title="Appendix A. License">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
-<tr valign="middle">
-<td><a accesskey="p" href="json-glib-JSON-Node.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<th width="100%" align="center">JSON-GLib Reference Manual</th>
-<td><a accesskey="n" href="json-glib-JSON-Object.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-</tr>
-<tr><td colspan="5" class="shortcuts">
-<a href="#json-glib-JSON-Array.synopsis" class="shortcut">Top</a>
- |
- <a href="#json-glib-JSON-Array.description" class="shortcut">Description</a>
-</td></tr>
-</table>
-<div class="refentry" title="JSON Array">
-<a name="json-glib-JSON-Array"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle"><a name="json-glib-JSON-Array.top_of_page"></a>JSON Array</span></h2>
-<p>JSON Array — a JSON array representation</p>
-</td>
-<td valign="top" align="right"></td>
-</tr></table></div>
-<div class="refsynopsisdiv" title="Synopsis">
-<a name="json-glib-JSON-Array.synopsis"></a><h2>Synopsis</h2>
-<pre class="synopsis"> <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray">JsonArray</a>;
-<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> * <a class="link" href="json-glib-JSON-Array.html#json-array-new" title="json_array_new ()">json_array_new</a> (void);
-<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> * <a class="link" href="json-glib-JSON-Array.html#json-array-sized-new" title="json_array_sized_new ()">json_array_sized_new</a> (<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> n_elements);
-<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> * <a class="link" href="json-glib-JSON-Array.html#json-array-ref" title="json_array_ref ()">json_array_ref</a> (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array);
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Array.html#json-array-unref" title="json_array_unref ()">json_array_unref</a> (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array);
-
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Array.html#json-array-add-element" title="json_array_add_element ()">json_array_add_element</a> (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);
-<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> * <a class="link" href="json-glib-JSON-Array.html#json-array-get-element" title="json_array_get_element ()">json_array_get_element</a> (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> index_);
-<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> * <a class="link" href="json-glib-JSON-Array.html#json-array-dup-element" title="json_array_dup_element ()">json_array_dup_element</a> (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> index_);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="returnvalue">GList</span></a> * <a class="link" href="json-glib-JSON-Array.html#json-array-get-elements" title="json_array_get_elements ()">json_array_get_elements</a> (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> <a class="link" href="json-glib-JSON-Array.html#json-array-get-length" title="json_array_get_length ()">json_array_get_length</a> (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array);
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Array.html#json-array-remove-element" title="json_array_remove_element ()">json_array_remove_element</a> (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> index_);
-<span class="returnvalue">void</span> (<a class="link" href="json-glib-JSON-Array.html#JsonArrayForeach" title="JsonArrayForeach ()">*JsonArrayForeach</a>) (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> index_,
- <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *element_node,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="returnvalue">gpointer</span></a> user_data);
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Array.html#json-array-foreach-element" title="json_array_foreach_element ()">json_array_foreach_element</a> (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a class="link" href="json-glib-JSON-Array.html#JsonArrayForeach" title="JsonArrayForeach ()"><span class="returnvalue">JsonArrayForeach</span></a> func,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="returnvalue">gpointer</span></a> data);
-
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Array.html#json-array-add-array-element" title="json_array_add_array_element ()">json_array_add_array_element</a> (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *value);
-<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> * <a class="link" href="json-glib-JSON-Array.html#json-array-get-array-element" title="json_array_get_array_element ()">json_array_get_array_element</a> (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> index_);
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Array.html#json-array-add-boolean-element" title="json_array_add_boolean_element ()">json_array_add_boolean_element</a> (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> value);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="json-glib-JSON-Array.html#json-array-get-boolean-element" title="json_array_get_boolean_element ()">json_array_get_boolean_element</a> (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> index_);
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Array.html#json-array-add-double-element" title="json_array_add_double_element ()">json_array_add_double_element</a> (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a> value);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a> <a class="link" href="json-glib-JSON-Array.html#json-array-get-double-element" title="json_array_get_double_element ()">json_array_get_double_element</a> (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> index_);
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Array.html#json-array-add-int-element" title="json_array_add_int_element ()">json_array_add_int_element</a> (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint64"><span class="returnvalue">gint64</span></a> value);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint64"><span class="returnvalue">gint64</span></a> <a class="link" href="json-glib-JSON-Array.html#json-array-get-int-element" title="json_array_get_int_element ()">json_array_get_int_element</a> (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> index_);
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Array.html#json-array-add-null-element" title="json_array_add_null_element ()">json_array_add_null_element</a> (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="json-glib-JSON-Array.html#json-array-get-null-element" title="json_array_get_null_element ()">json_array_get_null_element</a> (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> index_);
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Array.html#json-array-add-object-element" title="json_array_add_object_element ()">json_array_add_object_element</a> (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *value);
-<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> * <a class="link" href="json-glib-JSON-Array.html#json-array-get-object-element" title="json_array_get_object_element ()">json_array_get_object_element</a> (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> index_);
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Array.html#json-array-add-string-element" title="json_array_add_string_element ()">json_array_add_string_element</a> (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *value);
-const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="json-glib-JSON-Array.html#json-array-get-string-element" title="json_array_get_string_element ()">json_array_get_string_element</a> (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> index_);
-</pre>
-</div>
-<div class="refsect1" title="Description">
-<a name="json-glib-JSON-Array.description"></a><h2>Description</h2>
-<p>
-<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a> is the representation of the array type inside JSON. It contains
-<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>s, which may contain fundamental types, other arrays or
-objects.
-</p>
-<p>
-Since arrays can be expensive, they are reference counted. You can control
-the lifetime of a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a> using <a class="link" href="json-glib-JSON-Array.html#json-array-ref" title="json_array_ref ()"><code class="function">json_array_ref()</code></a> and <a class="link" href="json-glib-JSON-Array.html#json-array-unref" title="json_array_unref ()"><code class="function">json_array_unref()</code></a>.
-</p>
-<p>
-To append an element, use <a class="link" href="json-glib-JSON-Array.html#json-array-add-element" title="json_array_add_element ()"><code class="function">json_array_add_element()</code></a>.
-To extract an element at a given index, use <a class="link" href="json-glib-JSON-Array.html#json-array-get-element" title="json_array_get_element ()"><code class="function">json_array_get_element()</code></a>.
-To retrieve the entire array in list form, use <a class="link" href="json-glib-JSON-Array.html#json-array-get-elements" title="json_array_get_elements ()"><code class="function">json_array_get_elements()</code></a>.
-To retrieve the length of the array, use <a class="link" href="json-glib-JSON-Array.html#json-array-get-length" title="json_array_get_length ()"><code class="function">json_array_get_length()</code></a>.</p>
-</div>
-<div class="refsect1" title="Details">
-<a name="json-glib-JSON-Array.details"></a><h2>Details</h2>
-<div class="refsect2" title="JsonArray">
-<a name="JsonArray"></a><h3>JsonArray</h3>
-<pre class="programlisting">typedef struct _JsonArray JsonArray;</pre>
-<p>
-A JSON array type. The contents of the <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a> structure are private
-and should only be accessed by the provided API</p>
-</div>
-<hr>
-<div class="refsect2" title="json_array_new ()">
-<a name="json-array-new"></a><h3>json_array_new ()</h3>
-<pre class="programlisting"><a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> * json_array_new (void);</pre>
-<p>
-Creates a new <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody><tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> the newly created <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>
-</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_array_sized_new ()">
-<a name="json-array-sized-new"></a><h3>json_array_sized_new ()</h3>
-<pre class="programlisting"><a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> * json_array_sized_new (<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> n_elements);</pre>
-<p>
-Creates a new <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a> with <em class="parameter"><code>n_elements</code></em> slots already allocated.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>n_elements</code></em> :</span></p></td>
-<td> number of slots to pre-allocate
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> the newly created <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_array_ref ()">
-<a name="json-array-ref"></a><h3>json_array_ref ()</h3>
-<pre class="programlisting"><a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> * json_array_ref (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array);</pre>
-<p>
-Increase by one the reference count of a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>array</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> the passed <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>, with the reference count
- increased by one.
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_array_unref ()">
-<a name="json-array-unref"></a><h3>json_array_unref ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_array_unref (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array);</pre>
-<p>
-Decreases by one the reference count of a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>. If the
-reference count reaches zero, the array is destroyed and all
-its allocated resources are freed.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody><tr>
-<td><p><span class="term"><em class="parameter"><code>array</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>
-</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_array_add_element ()">
-<a name="json-array-add-element"></a><h3>json_array_add_element ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_array_add_element (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);</pre>
-<p>
-Appends <em class="parameter"><code>node</code></em> inside <em class="parameter"><code>array</code></em>. The array will take ownership of the
-<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>array</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_array_get_element ()">
-<a name="json-array-get-element"></a><h3>json_array_get_element ()</h3>
-<pre class="programlisting"><a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> * json_array_get_element (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> index_);</pre>
-<p>
-Retrieves the <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> containing the value of the element at <em class="parameter"><code>index_</code></em>
-inside a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>array</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>index_</code></em> :</span></p></td>
-<td> the index of the element to retrieve
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> a pointer to the <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> at the requested index
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_array_dup_element ()">
-<a name="json-array-dup-element"></a><h3>json_array_dup_element ()</h3>
-<pre class="programlisting"><a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> * json_array_dup_element (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> index_);</pre>
-<p>
-Retrieves a copy of the <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> containing the value of the
-element at <em class="parameter"><code>index_</code></em> inside a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>array</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>index_</code></em> :</span></p></td>
-<td> the index of the element to retrieve
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>transfer full. <acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>. </td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.6</p>
-</div>
-<hr>
-<div class="refsect2" title="json_array_get_elements ()">
-<a name="json-array-get-elements"></a><h3>json_array_get_elements ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="returnvalue">GList</span></a> * json_array_get_elements (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array);</pre>
-<p>
-Gets the elements of a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a> as a list of <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>s.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>array</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>element-type JsonNode) (transfer container. <acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> JsonNode. <acronym title="Free data container after the code is done."><span class="acronym">transfer container</span></acronym> JsonNode. </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_array_get_length ()">
-<a name="json-array-get-length"></a><h3>json_array_get_length ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> json_array_get_length (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array);</pre>
-<p>
-Retrieves the length of a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>array</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> the length of the array
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_array_remove_element ()">
-<a name="json-array-remove-element"></a><h3>json_array_remove_element ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_array_remove_element (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> index_);</pre>
-<p>
-Removes the <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> inside <em class="parameter"><code>array</code></em> at <em class="parameter"><code>index_</code></em> freeing its allocated
-resources.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>array</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>index_</code></em> :</span></p></td>
-<td> the position of the element to be removed
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="JsonArrayForeach ()">
-<a name="JsonArrayForeach"></a><h3>JsonArrayForeach ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> (*JsonArrayForeach) (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> index_,
- <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *element_node,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="returnvalue">gpointer</span></a> user_data);</pre>
-<p>
-The function to be passed to <a class="link" href="json-glib-JSON-Array.html#json-array-foreach-element" title="json_array_foreach_element ()"><code class="function">json_array_foreach_element()</code></a>. You
-should not add or remove elements to and from <em class="parameter"><code>array</code></em> within
-this function. It is safe to change the value of <em class="parameter"><code>element_node</code></em>.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>array</code></em> :</span></p></td>
-<td> the iterated <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>index_</code></em> :</span></p></td>
-<td> the index of the element
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>element_node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> containing the value at <em class="parameter"><code>index_</code></em>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td> data passed to the function
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-<hr>
-<div class="refsect2" title="json_array_foreach_element ()">
-<a name="json-array-foreach-element"></a><h3>json_array_foreach_element ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_array_foreach_element (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a class="link" href="json-glib-JSON-Array.html#JsonArrayForeach" title="JsonArrayForeach ()"><span class="returnvalue">JsonArrayForeach</span></a> func,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="returnvalue">gpointer</span></a> data);</pre>
-<p>
-Iterates over all elements of <em class="parameter"><code>array</code></em> and calls <em class="parameter"><code>func</code></em> on
-each one of them.
-</p>
-<p>
-It is safe to change the value of a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> of the <em class="parameter"><code>array</code></em>
-from within the iterator <em class="parameter"><code>func</code></em>, but it is not safe to add or
-remove elements from the <em class="parameter"><code>array</code></em>.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>array</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>func</code></em> :</span></p></td>
-<td> the function to be called on each element
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>data</code></em> :</span></p></td>
-<td> data to be passed to the function. <acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>. </td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-<hr>
-<div class="refsect2" title="json_array_add_array_element ()">
-<a name="json-array-add-array-element"></a><h3>json_array_add_array_element ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_array_add_array_element (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *value);</pre>
-<p>
-Conveniently adds an array into <em class="parameter"><code>array</code></em>. The <em class="parameter"><code>array</code></em> takes ownership
-of the newly added <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>
-</p>
-<p>
-See also: <a class="link" href="json-glib-JSON-Array.html#json-array-add-element" title="json_array_add_element ()"><code class="function">json_array_add_element()</code></a>, <a class="link" href="json-glib-JSON-Node.html#json-node-take-array" title="json_node_take_array ()"><code class="function">json_node_take_array()</code></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>array</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-<hr>
-<div class="refsect2" title="json_array_get_array_element ()">
-<a name="json-array-get-array-element"></a><h3>json_array_get_array_element ()</h3>
-<pre class="programlisting"><a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> * json_array_get_array_element (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> index_);</pre>
-<p>
-Conveniently retrieves the array from the element at <em class="parameter"><code>index_</code></em>
-inside <em class="parameter"><code>array</code></em>
-</p>
-<p>
-See also: <a class="link" href="json-glib-JSON-Array.html#json-array-get-element" title="json_array_get_element ()"><code class="function">json_array_get_element()</code></a>, <a class="link" href="json-glib-JSON-Node.html#json-node-get-array" title="json_node_get_array ()"><code class="function">json_node_get_array()</code></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>array</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>index_</code></em> :</span></p></td>
-<td> the index of the element to retrieve
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> the array. <acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>. </td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-<hr>
-<div class="refsect2" title="json_array_add_boolean_element ()">
-<a name="json-array-add-boolean-element"></a><h3>json_array_add_boolean_element ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_array_add_boolean_element (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> value);</pre>
-<p>
-Conveniently adds a boolean <em class="parameter"><code>value</code></em> into <em class="parameter"><code>array</code></em>
-</p>
-<p>
-See also: <a class="link" href="json-glib-JSON-Array.html#json-array-add-element" title="json_array_add_element ()"><code class="function">json_array_add_element()</code></a>, <a class="link" href="json-glib-JSON-Node.html#json-node-set-boolean" title="json_node_set_boolean ()"><code class="function">json_node_set_boolean()</code></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>array</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
-<td> a boolean value
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-<hr>
-<div class="refsect2" title="json_array_get_boolean_element ()">
-<a name="json-array-get-boolean-element"></a><h3>json_array_get_boolean_element ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> json_array_get_boolean_element (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> index_);</pre>
-<p>
-Conveniently retrieves the boolean value of the element at <em class="parameter"><code>index_</code></em>
-inside <em class="parameter"><code>array</code></em>
-</p>
-<p>
-See also: <a class="link" href="json-glib-JSON-Array.html#json-array-get-element" title="json_array_get_element ()"><code class="function">json_array_get_element()</code></a>, <a class="link" href="json-glib-JSON-Node.html#json-node-get-boolean" title="json_node_get_boolean ()"><code class="function">json_node_get_boolean()</code></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>array</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>index_</code></em> :</span></p></td>
-<td> the index of the element to retrieve
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> the integer value
-
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-<hr>
-<div class="refsect2" title="json_array_add_double_element ()">
-<a name="json-array-add-double-element"></a><h3>json_array_add_double_element ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_array_add_double_element (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a> value);</pre>
-<p>
-Conveniently adds a floating point <em class="parameter"><code>value</code></em> into <em class="parameter"><code>array</code></em>
-</p>
-<p>
-See also: <a class="link" href="json-glib-JSON-Array.html#json-array-add-element" title="json_array_add_element ()"><code class="function">json_array_add_element()</code></a>, <a class="link" href="json-glib-JSON-Node.html#json-node-set-double" title="json_node_set_double ()"><code class="function">json_node_set_double()</code></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>array</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
-<td> a floating point value
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-<hr>
-<div class="refsect2" title="json_array_get_double_element ()">
-<a name="json-array-get-double-element"></a><h3>json_array_get_double_element ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a> json_array_get_double_element (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> index_);</pre>
-<p>
-Conveniently retrieves the floating point value of the element at
-<em class="parameter"><code>index_</code></em> inside <em class="parameter"><code>array</code></em>
-</p>
-<p>
-See also: <a class="link" href="json-glib-JSON-Array.html#json-array-get-element" title="json_array_get_element ()"><code class="function">json_array_get_element()</code></a>, <a class="link" href="json-glib-JSON-Node.html#json-node-get-double" title="json_node_get_double ()"><code class="function">json_node_get_double()</code></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>array</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>index_</code></em> :</span></p></td>
-<td> the index of the element to retrieve
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> the floating point value
-
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-<hr>
-<div class="refsect2" title="json_array_add_int_element ()">
-<a name="json-array-add-int-element"></a><h3>json_array_add_int_element ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_array_add_int_element (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint64"><span class="returnvalue">gint64</span></a> value);</pre>
-<p>
-Conveniently adds an integer <em class="parameter"><code>value</code></em> into <em class="parameter"><code>array</code></em>
-</p>
-<p>
-See also: <a class="link" href="json-glib-JSON-Array.html#json-array-add-element" title="json_array_add_element ()"><code class="function">json_array_add_element()</code></a>, <a class="link" href="json-glib-JSON-Node.html#json-node-set-int" title="json_node_set_int ()"><code class="function">json_node_set_int()</code></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>array</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
-<td> an integer value
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-<hr>
-<div class="refsect2" title="json_array_get_int_element ()">
-<a name="json-array-get-int-element"></a><h3>json_array_get_int_element ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint64"><span class="returnvalue">gint64</span></a> json_array_get_int_element (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> index_);</pre>
-<p>
-Conveniently retrieves the integer value of the element at <em class="parameter"><code>index_</code></em>
-inside <em class="parameter"><code>array</code></em>
-</p>
-<p>
-See also: <a class="link" href="json-glib-JSON-Array.html#json-array-get-element" title="json_array_get_element ()"><code class="function">json_array_get_element()</code></a>, <a class="link" href="json-glib-JSON-Node.html#json-node-get-int" title="json_node_get_int ()"><code class="function">json_node_get_int()</code></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>array</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>index_</code></em> :</span></p></td>
-<td> the index of the element to retrieve
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> the integer value
-
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-<hr>
-<div class="refsect2" title="json_array_add_null_element ()">
-<a name="json-array-add-null-element"></a><h3>json_array_add_null_element ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_array_add_null_element (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array);</pre>
-<p>
-Conveniently adds a null element into <em class="parameter"><code>array</code></em>
-</p>
-<p>
-See also: <a class="link" href="json-glib-JSON-Array.html#json-array-add-element" title="json_array_add_element ()"><code class="function">json_array_add_element()</code></a>, <a class="link" href="json-glib-JSON-Node.html#JSON-NODE-NULL:CAPS"><code class="literal">JSON_NODE_NULL</code></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody><tr>
-<td><p><span class="term"><em class="parameter"><code>array</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>
-</td>
-</tr></tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-<hr>
-<div class="refsect2" title="json_array_get_null_element ()">
-<a name="json-array-get-null-element"></a><h3>json_array_get_null_element ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> json_array_get_null_element (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> index_);</pre>
-<p>
-Conveniently retrieves whether the element at <em class="parameter"><code>index_</code></em> is set to null
-</p>
-<p>
-See also: <a class="link" href="json-glib-JSON-Array.html#json-array-get-element" title="json_array_get_element ()"><code class="function">json_array_get_element()</code></a>, <a class="link" href="json-glib-JSON-Node.html#JSON-NODE-TYPE:CAPS" title="JSON_NODE_TYPE()"><code class="function">JSON_NODE_TYPE()</code></a>, <a class="link" href="json-glib-JSON-Node.html#JSON-NODE-NULL:CAPS"><code class="literal">JSON_NODE_NULL</code></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>array</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>index_</code></em> :</span></p></td>
-<td> the index of the element to retrieve
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the element is null
-
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-<hr>
-<div class="refsect2" title="json_array_add_object_element ()">
-<a name="json-array-add-object-element"></a><h3>json_array_add_object_element ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_array_add_object_element (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *value);</pre>
-<p>
-Conveniently adds an object into <em class="parameter"><code>array</code></em>. The <em class="parameter"><code>array</code></em> takes ownership
-of the newly added <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</p>
-<p>
-See also: <a class="link" href="json-glib-JSON-Array.html#json-array-add-element" title="json_array_add_element ()"><code class="function">json_array_add_element()</code></a>, <a class="link" href="json-glib-JSON-Node.html#json-node-take-object" title="json_node_take_object ()"><code class="function">json_node_take_object()</code></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>array</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-<hr>
-<div class="refsect2" title="json_array_get_object_element ()">
-<a name="json-array-get-object-element"></a><h3>json_array_get_object_element ()</h3>
-<pre class="programlisting"><a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> * json_array_get_object_element (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> index_);</pre>
-<p>
-Conveniently retrieves the object from the element at <em class="parameter"><code>index_</code></em>
-inside <em class="parameter"><code>array</code></em>
-</p>
-<p>
-See also: <a class="link" href="json-glib-JSON-Array.html#json-array-get-element" title="json_array_get_element ()"><code class="function">json_array_get_element()</code></a>, <a class="link" href="json-glib-JSON-Node.html#json-node-get-object" title="json_node_get_object ()"><code class="function">json_node_get_object()</code></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>array</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>index_</code></em> :</span></p></td>
-<td> the index of the element to retrieve
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> the object. <acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>. </td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-<hr>
-<div class="refsect2" title="json_array_add_string_element ()">
-<a name="json-array-add-string-element"></a><h3>json_array_add_string_element ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_array_add_string_element (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *value);</pre>
-<p>
-Conveniently adds a string <em class="parameter"><code>value</code></em> into <em class="parameter"><code>array</code></em>
-</p>
-<p>
-See also: <a class="link" href="json-glib-JSON-Array.html#json-array-add-element" title="json_array_add_element ()"><code class="function">json_array_add_element()</code></a>, <a class="link" href="json-glib-JSON-Node.html#json-node-set-string" title="json_node_set_string ()"><code class="function">json_node_set_string()</code></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>array</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
-<td> a string value
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-<hr>
-<div class="refsect2" title="json_array_get_string_element ()">
-<a name="json-array-get-string-element"></a><h3>json_array_get_string_element ()</h3>
-<pre class="programlisting">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * json_array_get_string_element (<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> index_);</pre>
-<p>
-Conveniently retrieves the string value of the element at <em class="parameter"><code>index_</code></em>
-inside <em class="parameter"><code>array</code></em>
-</p>
-<p>
-See also: <a class="link" href="json-glib-JSON-Array.html#json-array-get-element" title="json_array_get_element ()"><code class="function">json_array_get_element()</code></a>, <a class="link" href="json-glib-JSON-Node.html#json-node-get-string" title="json_node_get_string ()"><code class="function">json_node_get_string()</code></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>array</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>index_</code></em> :</span></p></td>
-<td> the index of the element to retrieve
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> the string value; the returned string is owned by
- the <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a> and should not be modified or freed
-
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-</div>
-</div>
-<div class="footer">
-<hr>
- Generated by GTK-Doc V1.13</div>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>JSON Node</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="up" href="ch01.html" title="Data Types">
-<link rel="prev" href="ch01.html" title="Data Types">
-<link rel="next" href="json-glib-JSON-Array.html" title="JSON Array">
-<meta name="generator" content="GTK-Doc V1.13 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="part" href="json-glib.html" title="Part I. JSON-GLib Overview">
-<link rel="part" href="json-base.html" title="Part II. JSON-GLib Reference">
-<link rel="chapter" href="ch01.html" title="Data Types">
-<link rel="part" href="json-streams.html" title="Part III. Reading and writing">
-<link rel="chapter" href="ch02.html" title="Parser">
-<link rel="chapter" href="ch03.html" title="Generator">
-<link rel="part" href="json-advanced.html" title="Part IV. JSON-GLib Advanced API">
-<link rel="part" href="json-tools.html" title="Part V. JSON-GLib Additional Reference">
-<link rel="chapter" href="ch04.html" title="Object Hierarchy">
-<link rel="index" href="ix01.html" title="Index">
-<link rel="index" href="ix02.html" title="Index of deprecated symbols">
-<link rel="index" href="ix03.html" title="Index of new symbols in 0.4">
-<link rel="index" href="ix04.html" title="Index of new symbols in 0.6">
-<link rel="index" href="ix05.html" title="Index of new symbols in 0.8">
-<link rel="index" href="ix06.html" title="Index of new symbols in 0.10">
-<link rel="glossary" href="annotation-glossary.html" title="Annotation Glossary">
-<link rel="appendix" href="license.html" title="Appendix A. License">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
-<tr valign="middle">
-<td><a accesskey="p" href="ch01.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<th width="100%" align="center">JSON-GLib Reference Manual</th>
-<td><a accesskey="n" href="json-glib-JSON-Array.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-</tr>
-<tr><td colspan="5" class="shortcuts">
-<a href="#json-glib-JSON-Node.synopsis" class="shortcut">Top</a>
- |
- <a href="#json-glib-JSON-Node.description" class="shortcut">Description</a>
-</td></tr>
-</table>
-<div class="refentry" title="JSON Node">
-<a name="json-glib-JSON-Node"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle"><a name="json-glib-JSON-Node.top_of_page"></a>JSON Node</span></h2>
-<p>JSON Node — Node in a JSON object model</p>
-</td>
-<td valign="top" align="right"></td>
-</tr></table></div>
-<div class="refsynopsisdiv" title="Synopsis">
-<a name="json-glib-JSON-Node.synopsis"></a><h2>Synopsis</h2>
-<pre class="synopsis">enum <a class="link" href="json-glib-JSON-Node.html#JsonNodeType" title="enum JsonNodeType">JsonNodeType</a>;
- <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode">JsonNode</a>;
-#define <a class="link" href="json-glib-JSON-Node.html#JSON-NODE-TYPE:CAPS" title="JSON_NODE_TYPE()">JSON_NODE_TYPE</a> (node)
-#define <a class="link" href="json-glib-JSON-Node.html#JSON-NODE-HOLDS:CAPS" title="JSON_NODE_HOLDS()">JSON_NODE_HOLDS</a> (node,t)
-#define <a class="link" href="json-glib-JSON-Node.html#JSON-NODE-HOLDS-VALUE:CAPS" title="JSON_NODE_HOLDS_VALUE()">JSON_NODE_HOLDS_VALUE</a> (node)
-#define <a class="link" href="json-glib-JSON-Node.html#JSON-NODE-HOLDS-OBJECT:CAPS" title="JSON_NODE_HOLDS_OBJECT()">JSON_NODE_HOLDS_OBJECT</a> (node)
-#define <a class="link" href="json-glib-JSON-Node.html#JSON-NODE-HOLDS-ARRAY:CAPS" title="JSON_NODE_HOLDS_ARRAY()">JSON_NODE_HOLDS_ARRAY</a> (node)
-#define <a class="link" href="json-glib-JSON-Node.html#JSON-NODE-HOLDS-NULL:CAPS" title="JSON_NODE_HOLDS_NULL()">JSON_NODE_HOLDS_NULL</a> (node)
-<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> * <a class="link" href="json-glib-JSON-Node.html#json-node-new" title="json_node_new ()">json_node_new</a> (<a class="link" href="json-glib-JSON-Node.html#JsonNodeType" title="enum JsonNodeType"><span class="returnvalue">JsonNodeType</span></a> type);
-<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> * <a class="link" href="json-glib-JSON-Node.html#json-node-copy" title="json_node_copy ()">json_node_copy</a> (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Node.html#json-node-free" title="json_node_free ()">json_node_free</a> (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);
-
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Node.html#json-node-set-array" title="json_node_set_array ()">json_node_set_array</a> (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node,
- <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array);
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Node.html#json-node-take-array" title="json_node_take_array ()">json_node_take_array</a> (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node,
- <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array);
-<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> * <a class="link" href="json-glib-JSON-Node.html#json-node-get-array" title="json_node_get_array ()">json_node_get_array</a> (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);
-<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> * <a class="link" href="json-glib-JSON-Node.html#json-node-dup-array" title="json_node_dup_array ()">json_node_dup_array</a> (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);
-
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Node.html#json-node-set-object" title="json_node_set_object ()">json_node_set_object</a> (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node,
- <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object);
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Node.html#json-node-take-object" title="json_node_take_object ()">json_node_take_object</a> (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node,
- <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object);
-<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> * <a class="link" href="json-glib-JSON-Node.html#json-node-get-object" title="json_node_get_object ()">json_node_get_object</a> (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);
-<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> * <a class="link" href="json-glib-JSON-Node.html#json-node-dup-object" title="json_node_dup_object ()">json_node_dup_object</a> (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);
-
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Node.html#json-node-set-value" title="json_node_set_value ()">json_node_set_value</a> (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node,
- const <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Generic-values.html#GValue"><span class="returnvalue">GValue</span></a> *value);
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Node.html#json-node-get-value" title="json_node_get_value ()">json_node_get_value</a> (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node,
- <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Generic-values.html#GValue"><span class="returnvalue">GValue</span></a> *value);
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Node.html#json-node-set-boolean" title="json_node_set_boolean ()">json_node_set_boolean</a> (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> value);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="json-glib-JSON-Node.html#json-node-get-boolean" title="json_node_get_boolean ()">json_node_get_boolean</a> (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Node.html#json-node-set-double" title="json_node_set_double ()">json_node_set_double</a> (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a> value);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a> <a class="link" href="json-glib-JSON-Node.html#json-node-get-double" title="json_node_get_double ()">json_node_get_double</a> (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Node.html#json-node-set-int" title="json_node_set_int ()">json_node_set_int</a> (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint64"><span class="returnvalue">gint64</span></a> value);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint64"><span class="returnvalue">gint64</span></a> <a class="link" href="json-glib-JSON-Node.html#json-node-get-int" title="json_node_get_int ()">json_node_get_int</a> (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Node.html#json-node-set-string" title="json_node_set_string ()">json_node_set_string</a> (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *value);
-const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="json-glib-JSON-Node.html#json-node-get-string" title="json_node_get_string ()">json_node_get_string</a> (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="json-glib-JSON-Node.html#json-node-dup-string" title="json_node_dup_string ()">json_node_dup_string</a> (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);
-
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Node.html#json-node-set-parent" title="json_node_set_parent ()">json_node_set_parent</a> (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node,
- <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *parent);
-<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> * <a class="link" href="json-glib-JSON-Node.html#json-node-get-parent" title="json_node_get_parent ()">json_node_get_parent</a> (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);
-const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="json-glib-JSON-Node.html#json-node-type-name" title="json_node_type_name ()">json_node_type_name</a> (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);
-<a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a> <a class="link" href="json-glib-JSON-Node.html#json-node-get-value-type" title="json_node_get_value_type ()">json_node_get_value_type</a> (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);
-<a class="link" href="json-glib-JSON-Node.html#JsonNodeType" title="enum JsonNodeType"><span class="returnvalue">JsonNodeType</span></a> <a class="link" href="json-glib-JSON-Node.html#json-node-get-node-type" title="json_node_get_node_type ()">json_node_get_node_type</a> (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="json-glib-JSON-Node.html#json-node-is-null" title="json_node_is_null ()">json_node_is_null</a> (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);
-</pre>
-</div>
-<div class="refsect1" title="Description">
-<a name="json-glib-JSON-Node.description"></a><h2>Description</h2>
-<p>
-A <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> is a generic container of elements inside a JSON stream.
-It can contain fundamental types (integers, booleans, floating point
-numbers, strings) and complex types (arrays and objects).
-</p>
-<p>
-When parsing a JSON data stream you extract the root node and walk
-the node tree by retrieving the type of data contained inside the
-node with the <a class="link" href="json-glib-JSON-Node.html#JSON-NODE-TYPE:CAPS" title="JSON_NODE_TYPE()"><code class="literal">JSON_NODE_TYPE</code></a> macro. If the node contains a fundamental
-type you can retrieve a copy of the <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> holding it with the
-<a class="link" href="json-glib-JSON-Node.html#json-node-get-value" title="json_node_get_value ()"><code class="function">json_node_get_value()</code></a> function, and then use the <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> API to extract
-the data; if the node contains a complex type you can retrieve the
-<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a> or the <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a> using <a class="link" href="json-glib-JSON-Node.html#json-node-get-object" title="json_node_get_object ()"><code class="function">json_node_get_object()</code></a> or
-<a class="link" href="json-glib-JSON-Node.html#json-node-get-array" title="json_node_get_array ()"><code class="function">json_node_get_array()</code></a> respectively, and then retrieve the nodes
-they contain.</p>
-</div>
-<div class="refsect1" title="Details">
-<a name="json-glib-JSON-Node.details"></a><h2>Details</h2>
-<div class="refsect2" title="enum JsonNodeType">
-<a name="JsonNodeType"></a><h3>enum JsonNodeType</h3>
-<pre class="programlisting">typedef enum {
- JSON_NODE_OBJECT,
- JSON_NODE_ARRAY,
- JSON_NODE_VALUE,
- JSON_NODE_NULL
-} JsonNodeType;
-</pre>
-<p>
-Indicates the content of a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><a name="JSON-NODE-OBJECT:CAPS"></a><span class="term"><code class="literal">JSON_NODE_OBJECT</code></span></p></td>
-<td> The node contains a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</td>
-</tr>
-<tr>
-<td><p><a name="JSON-NODE-ARRAY:CAPS"></a><span class="term"><code class="literal">JSON_NODE_ARRAY</code></span></p></td>
-<td> The node contains a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>
-</td>
-</tr>
-<tr>
-<td><p><a name="JSON-NODE-VALUE:CAPS"></a><span class="term"><code class="literal">JSON_NODE_VALUE</code></span></p></td>
-<td> The node contains a fundamental type
-</td>
-</tr>
-<tr>
-<td><p><a name="JSON-NODE-NULL:CAPS"></a><span class="term"><code class="literal">JSON_NODE_NULL</code></span></p></td>
-<td> Special type, for nodes containing null
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="JsonNode">
-<a name="JsonNode"></a><h3>JsonNode</h3>
-<pre class="programlisting">typedef struct _JsonNode JsonNode;</pre>
-<p>
-A generic container of JSON data types. The contents of the <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>
-structure are private and should only be accessed via the provided
-functions and never directly.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="JSON_NODE_TYPE()">
-<a name="JSON-NODE-TYPE:CAPS"></a><h3>JSON_NODE_TYPE()</h3>
-<pre class="programlisting">#define JSON_NODE_TYPE(node) (json_node_get_node_type ((node)))
-</pre>
-<p>
-Evaluates to the <a class="link" href="json-glib-JSON-Node.html#JsonNodeType" title="enum JsonNodeType"><span class="type">JsonNodeType</span></a> contained by <em class="parameter"><code>node</code></em></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody><tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>
-</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="JSON_NODE_HOLDS()">
-<a name="JSON-NODE-HOLDS:CAPS"></a><h3>JSON_NODE_HOLDS()</h3>
-<pre class="programlisting">#define JSON_NODE_HOLDS(node,t) (json_node_get_node_type ((node)) == (t))
-</pre>
-<p>
-Evaluates to <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the <em class="parameter"><code>node</code></em> holds type <em class="parameter"><code>t</code></em></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>t</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNodeType" title="enum JsonNodeType"><span class="type">JsonNodeType</span></a>
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.10</p>
-</div>
-<hr>
-<div class="refsect2" title="JSON_NODE_HOLDS_VALUE()">
-<a name="JSON-NODE-HOLDS-VALUE:CAPS"></a><h3>JSON_NODE_HOLDS_VALUE()</h3>
-<pre class="programlisting">#define JSON_NODE_HOLDS_VALUE(node) (JSON_NODE_HOLDS ((node), JSON_NODE_VALUE))
-</pre>
-<p>
-Evaluates to <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>node</code></em> holds a <a class="link" href="json-glib-JSON-Node.html#JSON-NODE-VALUE:CAPS"><code class="literal">JSON_NODE_VALUE</code></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody><tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>
-</td>
-</tr></tbody>
-</table></div>
-<p class="since">Since 0.10</p>
-</div>
-<hr>
-<div class="refsect2" title="JSON_NODE_HOLDS_OBJECT()">
-<a name="JSON-NODE-HOLDS-OBJECT:CAPS"></a><h3>JSON_NODE_HOLDS_OBJECT()</h3>
-<pre class="programlisting">#define JSON_NODE_HOLDS_OBJECT(node) (JSON_NODE_HOLDS ((node), JSON_NODE_OBJECT))
-</pre>
-<p>
-Evaluates to <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>node</code></em> holds a <a class="link" href="json-glib-JSON-Node.html#JSON-NODE-OBJECT:CAPS"><code class="literal">JSON_NODE_OBJECT</code></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody><tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>
-</td>
-</tr></tbody>
-</table></div>
-<p class="since">Since 0.10</p>
-</div>
-<hr>
-<div class="refsect2" title="JSON_NODE_HOLDS_ARRAY()">
-<a name="JSON-NODE-HOLDS-ARRAY:CAPS"></a><h3>JSON_NODE_HOLDS_ARRAY()</h3>
-<pre class="programlisting">#define JSON_NODE_HOLDS_ARRAY(node) (JSON_NODE_HOLDS ((node), JSON_NODE_ARRAY))
-</pre>
-<p>
-Evaluates to <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>node</code></em> holds a <a class="link" href="json-glib-JSON-Node.html#JSON-NODE-ARRAY:CAPS"><code class="literal">JSON_NODE_ARRAY</code></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody><tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>
-</td>
-</tr></tbody>
-</table></div>
-<p class="since">Since 0.10</p>
-</div>
-<hr>
-<div class="refsect2" title="JSON_NODE_HOLDS_NULL()">
-<a name="JSON-NODE-HOLDS-NULL:CAPS"></a><h3>JSON_NODE_HOLDS_NULL()</h3>
-<pre class="programlisting">#define JSON_NODE_HOLDS_NULL(node) (JSON_NODE_HOLDS ((node), JSON_NODE_NULL))
-</pre>
-<p>
-Evaluates to <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>node</code></em> holds a <a class="link" href="json-glib-JSON-Node.html#JSON-NODE-NULL:CAPS"><code class="literal">JSON_NODE_NULL</code></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody><tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>
-</td>
-</tr></tbody>
-</table></div>
-<p class="since">Since 0.10</p>
-</div>
-<hr>
-<div class="refsect2" title="json_node_new ()">
-<a name="json-node-new"></a><h3>json_node_new ()</h3>
-<pre class="programlisting"><a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> * json_node_new (<a class="link" href="json-glib-JSON-Node.html#JsonNodeType" title="enum JsonNodeType"><span class="returnvalue">JsonNodeType</span></a> type);</pre>
-<p>
-Creates a new <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> of <em class="parameter"><code>type</code></em>.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNodeType" title="enum JsonNodeType"><span class="type">JsonNodeType</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> the newly created <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_node_copy ()">
-<a name="json-node-copy"></a><h3>json_node_copy ()</h3>
-<pre class="programlisting"><a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> * json_node_copy (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);</pre>
-<p>
-Copies <em class="parameter"><code>node</code></em>. If the node contains complex data types then the reference
-count of the objects is increased.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> the copied <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>. <acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>. </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_node_free ()">
-<a name="json-node-free"></a><h3>json_node_free ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_node_free (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);</pre>
-<p>
-Frees the resources allocated by <em class="parameter"><code>node</code></em>.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody><tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>
-</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_node_set_array ()">
-<a name="json-node-set-array"></a><h3>json_node_set_array ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_node_set_array (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node,
- <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array);</pre>
-<p>
-Sets <em class="parameter"><code>array</code></em> inside <em class="parameter"><code>node</code></em> and increases the <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a> reference count</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>array</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_node_take_array ()">
-<a name="json-node-take-array"></a><h3>json_node_take_array ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_node_take_array (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node,
- <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *array);</pre>
-<p>
-Sets <em class="parameter"><code>array</code></em> into <em class="parameter"><code>node</code></em> without increasing the <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a> reference count.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>array</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_node_get_array ()">
-<a name="json-node-get-array"></a><h3>json_node_get_array ()</h3>
-<pre class="programlisting"><a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> * json_node_get_array (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);</pre>
-<p>
-Retrieves the <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a> stored inside a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> the <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>. <acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>. </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_node_dup_array ()">
-<a name="json-node-dup-array"></a><h3>json_node_dup_array ()</h3>
-<pre class="programlisting"><a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> * json_node_dup_array (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);</pre>
-<p>
-Retrieves the <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a> stored inside a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> and returns it
-with its reference count increased by one.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>transfer full. <acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>. </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_node_set_object ()">
-<a name="json-node-set-object"></a><h3>json_node_set_object ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_node_set_object (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node,
- <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object);</pre>
-<p>
-Sets <em class="parameter"><code>objects</code></em> inside <em class="parameter"><code>node</code></em>. The reference count of <em class="parameter"><code>object</code></em> is increased.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_node_take_object ()">
-<a name="json-node-take-object"></a><h3>json_node_take_object ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_node_take_object (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node,
- <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object);</pre>
-<p>
-Sets <em class="parameter"><code>object</code></em> inside <em class="parameter"><code>node</code></em>. The reference count of <em class="parameter"><code>object</code></em> is not increased.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_node_get_object ()">
-<a name="json-node-get-object"></a><h3>json_node_get_object ()</h3>
-<pre class="programlisting"><a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> * json_node_get_object (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);</pre>
-<p>
-Retrieves the <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a> stored inside a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> the <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>. <acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>. </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_node_dup_object ()">
-<a name="json-node-dup-object"></a><h3>json_node_dup_object ()</h3>
-<pre class="programlisting"><a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> * json_node_dup_object (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);</pre>
-<p>
-Retrieves the <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a> inside <em class="parameter"><code>node</code></em>. The reference count of
-the returned object is increased.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> the <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>. <acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>. </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_node_set_value ()">
-<a name="json-node-set-value"></a><h3>json_node_set_value ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_node_set_value (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node,
- const <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Generic-values.html#GValue"><span class="returnvalue">GValue</span></a> *value);</pre>
-<p>
-Sets <em class="parameter"><code>value</code></em> inside <em class="parameter"><code>node</code></em>. The passed <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> is copied into the <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
-<td> the <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> to set
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_node_get_value ()">
-<a name="json-node-get-value"></a><h3>json_node_get_value ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_node_get_value (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node,
- <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Generic-values.html#GValue"><span class="returnvalue">GValue</span></a> *value);</pre>
-<p>
-Retrieves a value from a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> and copies into <em class="parameter"><code>value</code></em>. When done
-using it, call <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Generic-values.html#g-value-unset"><code class="function">g_value_unset()</code></a> on the <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
-<td> return location for an uninitialized value
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_node_set_boolean ()">
-<a name="json-node-set-boolean"></a><h3>json_node_set_boolean ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_node_set_boolean (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> value);</pre>
-<p>
-Sets <em class="parameter"><code>value</code></em> as the boolean content of the <em class="parameter"><code>node</code></em>, replacing any existing
-content.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> of type <a class="link" href="json-glib-JSON-Node.html#JSON-NODE-VALUE:CAPS"><code class="literal">JSON_NODE_VALUE</code></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
-<td> a boolean value
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_node_get_boolean ()">
-<a name="json-node-get-boolean"></a><h3>json_node_get_boolean ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> json_node_get_boolean (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);</pre>
-<p>
-Gets the boolean value stored inside a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> of type <a class="link" href="json-glib-JSON-Node.html#JSON-NODE-VALUE:CAPS"><code class="literal">JSON_NODE_VALUE</code></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> a boolean value.
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_node_set_double ()">
-<a name="json-node-set-double"></a><h3>json_node_set_double ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_node_set_double (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a> value);</pre>
-<p>
-Sets <em class="parameter"><code>value</code></em> as the double content of the <em class="parameter"><code>node</code></em>, replacing any existing
-content.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> of type <a class="link" href="json-glib-JSON-Node.html#JSON-NODE-VALUE:CAPS"><code class="literal">JSON_NODE_VALUE</code></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
-<td> a double value
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_node_get_double ()">
-<a name="json-node-get-double"></a><h3>json_node_get_double ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a> json_node_get_double (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);</pre>
-<p>
-Gets the double value stored inside a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> of type <a class="link" href="json-glib-JSON-Node.html#JSON-NODE-VALUE:CAPS"><code class="literal">JSON_NODE_VALUE</code></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> a double value.
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_node_set_int ()">
-<a name="json-node-set-int"></a><h3>json_node_set_int ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_node_set_int (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint64"><span class="returnvalue">gint64</span></a> value);</pre>
-<p>
-Sets <em class="parameter"><code>value</code></em> as the integer content of the <em class="parameter"><code>node</code></em>, replacing any existing
-content.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> of type <a class="link" href="json-glib-JSON-Node.html#JSON-NODE-VALUE:CAPS"><code class="literal">JSON_NODE_VALUE</code></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
-<td> an integer value
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_node_get_int ()">
-<a name="json-node-get-int"></a><h3>json_node_get_int ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint64"><span class="returnvalue">gint64</span></a> json_node_get_int (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);</pre>
-<p>
-Gets the integer value stored inside a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> of type <a class="link" href="json-glib-JSON-Node.html#JSON-NODE-VALUE:CAPS"><code class="literal">JSON_NODE_VALUE</code></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> an integer value.
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_node_set_string ()">
-<a name="json-node-set-string"></a><h3>json_node_set_string ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_node_set_string (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *value);</pre>
-<p>
-Sets <em class="parameter"><code>value</code></em> as the string content of the <em class="parameter"><code>node</code></em>, replacing any existing
-content.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> of type <a class="link" href="json-glib-JSON-Node.html#JSON-NODE-VALUE:CAPS"><code class="literal">JSON_NODE_VALUE</code></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
-<td> a string value
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_node_get_string ()">
-<a name="json-node-get-string"></a><h3>json_node_get_string ()</h3>
-<pre class="programlisting">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * json_node_get_string (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);</pre>
-<p>
-Gets the string value stored inside a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> of type <a class="link" href="json-glib-JSON-Node.html#JSON-NODE-VALUE:CAPS"><code class="literal">JSON_NODE_VALUE</code></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> a string value.
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_node_dup_string ()">
-<a name="json-node-dup-string"></a><h3>json_node_dup_string ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * json_node_dup_string (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);</pre>
-<p>
-Gets a copy of the string value stored inside a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> of type <a class="link" href="json-glib-JSON-Node.html#JSON-NODE-VALUE:CAPS"><code class="literal">JSON_NODE_VALUE</code></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>transfer full. <acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>. </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_node_set_parent ()">
-<a name="json-node-set-parent"></a><h3>json_node_set_parent ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_node_set_parent (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node,
- <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *parent);</pre>
-<p>
-Sets the parent <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> of <em class="parameter"><code>node</code></em></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>parent</code></em> :</span></p></td>
-<td> the parent <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> of <em class="parameter"><code>node</code></em>
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-<hr>
-<div class="refsect2" title="json_node_get_parent ()">
-<a name="json-node-get-parent"></a><h3>json_node_get_parent ()</h3>
-<pre class="programlisting"><a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> * json_node_get_parent (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);</pre>
-<p>
-Retrieves the parent <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> of <em class="parameter"><code>node</code></em>.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> the parent node, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if <em class="parameter"><code>node</code></em> is the root node
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_node_type_name ()">
-<a name="json-node-type-name"></a><h3>json_node_type_name ()</h3>
-<pre class="programlisting">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * json_node_type_name (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);</pre>
-<p>
-Retrieves the user readable name of the data type contained by <em class="parameter"><code>node</code></em>.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> a string containing the name of the type. The returned string
- is owned by the node and should never be modified or freed
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_node_get_value_type ()">
-<a name="json-node-get-value-type"></a><h3>json_node_get_value_type ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a> json_node_get_value_type (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);</pre>
-<p>
-Returns the <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> of the payload of the node.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> a <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> for the payload.
-
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.4</p>
-</div>
-<hr>
-<div class="refsect2" title="json_node_get_node_type ()">
-<a name="json-node-get-node-type"></a><h3>json_node_get_node_type ()</h3>
-<pre class="programlisting"><a class="link" href="json-glib-JSON-Node.html#JsonNodeType" title="enum JsonNodeType"><span class="returnvalue">JsonNodeType</span></a> json_node_get_node_type (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);</pre>
-<p>
-Retrieves the <a class="link" href="json-glib-JSON-Node.html#JsonNodeType" title="enum JsonNodeType"><span class="type">JsonNodeType</span></a> of <em class="parameter"><code>node</code></em></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> the type of the node
-
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-<hr>
-<div class="refsect2" title="json_node_is_null ()">
-<a name="json-node-is-null"></a><h3>json_node_is_null ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> json_node_is_null (<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);</pre>
-<p>
-Checks whether <em class="parameter"><code>node</code></em> is a <a class="link" href="json-glib-JSON-Node.html#JSON-NODE-NULL:CAPS"><code class="literal">JSON_NODE_NULL</code></a>
-</p>
-<p>
-</p>
-<div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;">
-<h3 class="title">Note</h3>A null node is not the same as a <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a><a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>
-</div>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the node is null
-
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-</div>
-</div>
-<div class="footer">
-<hr>
- Generated by GTK-Doc V1.13</div>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>JSON Object</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="up" href="ch01.html" title="Data Types">
-<link rel="prev" href="json-glib-JSON-Array.html" title="JSON Array">
-<link rel="next" href="json-streams.html" title="Part III. Reading and writing">
-<meta name="generator" content="GTK-Doc V1.13 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="part" href="json-glib.html" title="Part I. JSON-GLib Overview">
-<link rel="part" href="json-base.html" title="Part II. JSON-GLib Reference">
-<link rel="chapter" href="ch01.html" title="Data Types">
-<link rel="part" href="json-streams.html" title="Part III. Reading and writing">
-<link rel="chapter" href="ch02.html" title="Parser">
-<link rel="chapter" href="ch03.html" title="Generator">
-<link rel="part" href="json-advanced.html" title="Part IV. JSON-GLib Advanced API">
-<link rel="part" href="json-tools.html" title="Part V. JSON-GLib Additional Reference">
-<link rel="chapter" href="ch04.html" title="Object Hierarchy">
-<link rel="index" href="ix01.html" title="Index">
-<link rel="index" href="ix02.html" title="Index of deprecated symbols">
-<link rel="index" href="ix03.html" title="Index of new symbols in 0.4">
-<link rel="index" href="ix04.html" title="Index of new symbols in 0.6">
-<link rel="index" href="ix05.html" title="Index of new symbols in 0.8">
-<link rel="index" href="ix06.html" title="Index of new symbols in 0.10">
-<link rel="glossary" href="annotation-glossary.html" title="Annotation Glossary">
-<link rel="appendix" href="license.html" title="Appendix A. License">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
-<tr valign="middle">
-<td><a accesskey="p" href="json-glib-JSON-Array.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<th width="100%" align="center">JSON-GLib Reference Manual</th>
-<td><a accesskey="n" href="json-streams.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-</tr>
-<tr><td colspan="5" class="shortcuts">
-<a href="#json-glib-JSON-Object.synopsis" class="shortcut">Top</a>
- |
- <a href="#json-glib-JSON-Object.description" class="shortcut">Description</a>
-</td></tr>
-</table>
-<div class="refentry" title="JSON Object">
-<a name="json-glib-JSON-Object"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle"><a name="json-glib-JSON-Object.top_of_page"></a>JSON Object</span></h2>
-<p>JSON Object — a JSON object representation</p>
-</td>
-<td valign="top" align="right"></td>
-</tr></table></div>
-<div class="refsynopsisdiv" title="Synopsis">
-<a name="json-glib-JSON-Object.synopsis"></a><h2>Synopsis</h2>
-<pre class="synopsis"> <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject">JsonObject</a>;
-<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> * <a class="link" href="json-glib-JSON-Object.html#json-object-new" title="json_object_new ()">json_object_new</a> (void);
-<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> * <a class="link" href="json-glib-JSON-Object.html#json-object-ref" title="json_object_ref ()">json_object_ref</a> (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object);
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Object.html#json-object-unref" title="json_object_unref ()">json_object_unref</a> (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object);
-
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Object.html#json-object-add-member" title="json_object_add_member ()">json_object_add_member</a> (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name,
- <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Object.html#json-object-set-member" title="json_object_set_member ()">json_object_set_member</a> (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name,
- <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="json-glib-JSON-Object.html#json-object-has-member" title="json_object_has_member ()">json_object_has_member</a> (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name);
-<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> * <a class="link" href="json-glib-JSON-Object.html#json-object-get-member" title="json_object_get_member ()">json_object_get_member</a> (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name);
-<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> * <a class="link" href="json-glib-JSON-Object.html#json-object-dup-member" title="json_object_dup_member ()">json_object_dup_member</a> (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="returnvalue">GList</span></a> * <a class="link" href="json-glib-JSON-Object.html#json-object-get-members" title="json_object_get_members ()">json_object_get_members</a> (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="returnvalue">GList</span></a> * <a class="link" href="json-glib-JSON-Object.html#json-object-get-values" title="json_object_get_values ()">json_object_get_values</a> (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> <a class="link" href="json-glib-JSON-Object.html#json-object-get-size" title="json_object_get_size ()">json_object_get_size</a> (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object);
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Object.html#json-object-remove-member" title="json_object_remove_member ()">json_object_remove_member</a> (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name);
-<span class="returnvalue">void</span> (<a class="link" href="json-glib-JSON-Object.html#JsonObjectForeach" title="JsonObjectForeach ()">*JsonObjectForeach</a>) (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name,
- <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *member_node,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="returnvalue">gpointer</span></a> user_data);
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Object.html#json-object-foreach-member" title="json_object_foreach_member ()">json_object_foreach_member</a> (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- <a class="link" href="json-glib-JSON-Object.html#JsonObjectForeach" title="JsonObjectForeach ()"><span class="returnvalue">JsonObjectForeach</span></a> func,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="returnvalue">gpointer</span></a> data);
-
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Object.html#json-object-set-array-member" title="json_object_set_array_member ()">json_object_set_array_member</a> (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name,
- <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *value);
-<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> * <a class="link" href="json-glib-JSON-Object.html#json-object-get-array-member" title="json_object_get_array_member ()">json_object_get_array_member</a> (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name);
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Object.html#json-object-set-boolean-member" title="json_object_set_boolean_member ()">json_object_set_boolean_member</a> (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> value);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="json-glib-JSON-Object.html#json-object-get-boolean-member" title="json_object_get_boolean_member ()">json_object_get_boolean_member</a> (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name);
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Object.html#json-object-set-double-member" title="json_object_set_double_member ()">json_object_set_double_member</a> (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a> value);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a> <a class="link" href="json-glib-JSON-Object.html#json-object-get-double-member" title="json_object_get_double_member ()">json_object_get_double_member</a> (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name);
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Object.html#json-object-set-int-member" title="json_object_set_int_member ()">json_object_set_int_member</a> (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint64"><span class="returnvalue">gint64</span></a> value);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint64"><span class="returnvalue">gint64</span></a> <a class="link" href="json-glib-JSON-Object.html#json-object-get-int-member" title="json_object_get_int_member ()">json_object_get_int_member</a> (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name);
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Object.html#json-object-set-null-member" title="json_object_set_null_member ()">json_object_set_null_member</a> (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="json-glib-JSON-Object.html#json-object-get-null-member" title="json_object_get_null_member ()">json_object_get_null_member</a> (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name);
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Object.html#json-object-set-object-member" title="json_object_set_object_member ()">json_object_set_object_member</a> (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name,
- <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *value);
-<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> * <a class="link" href="json-glib-JSON-Object.html#json-object-get-object-member" title="json_object_get_object_member ()">json_object_get_object_member</a> (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name);
-<span class="returnvalue">void</span> <a class="link" href="json-glib-JSON-Object.html#json-object-set-string-member" title="json_object_set_string_member ()">json_object_set_string_member</a> (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *value);
-const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="json-glib-JSON-Object.html#json-object-get-string-member" title="json_object_get_string_member ()">json_object_get_string_member</a> (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name);
-</pre>
-</div>
-<div class="refsect1" title="Description">
-<a name="json-glib-JSON-Object.description"></a><h2>Description</h2>
-<p>
-<a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a> is the representation of the object type inside JSON. It contains
-<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>s, which may contain fundamental types, arrays or other
-objects. Each member of an object is accessed using its name.
-</p>
-<p>
-Since objects can be expensive, they are reference counted. You can control
-the lifetime of a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a> using <a class="link" href="json-glib-JSON-Object.html#json-object-ref" title="json_object_ref ()"><code class="function">json_object_ref()</code></a> and <a class="link" href="json-glib-JSON-Object.html#json-object-unref" title="json_object_unref ()"><code class="function">json_object_unref()</code></a>.
-</p>
-<p>
-To add or overwrite a member with a given name, use <a class="link" href="json-glib-JSON-Object.html#json-object-set-member" title="json_object_set_member ()"><code class="function">json_object_set_member()</code></a>.
-To extract a member with a given name, use <a class="link" href="json-glib-JSON-Object.html#json-object-get-member" title="json_object_get_member ()"><code class="function">json_object_get_member()</code></a>.
-To retrieve the list of members, use <a class="link" href="json-glib-JSON-Object.html#json-object-get-members" title="json_object_get_members ()"><code class="function">json_object_get_members()</code></a>.
-To retrieve the size of the object (that is, the number of members it has),
-use <a class="link" href="json-glib-JSON-Object.html#json-object-get-size" title="json_object_get_size ()"><code class="function">json_object_get_size()</code></a>.</p>
-</div>
-<div class="refsect1" title="Details">
-<a name="json-glib-JSON-Object.details"></a><h2>Details</h2>
-<div class="refsect2" title="JsonObject">
-<a name="JsonObject"></a><h3>JsonObject</h3>
-<pre class="programlisting">typedef struct _JsonObject JsonObject;</pre>
-<p>
-A JSON object type. The contents of the <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a> structure are private
-and should only be accessed by the provided API</p>
-</div>
-<hr>
-<div class="refsect2" title="json_object_new ()">
-<a name="json-object-new"></a><h3>json_object_new ()</h3>
-<pre class="programlisting"><a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> * json_object_new (void);</pre>
-<p>
-Creates a new <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>, an JSON object type representation.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody><tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> the newly created <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_object_ref ()">
-<a name="json-object-ref"></a><h3>json_object_ref ()</h3>
-<pre class="programlisting"><a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> * json_object_ref (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object);</pre>
-<p>
-Increase by one the reference count of a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> the passed <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>, with the reference count
- increased by one.
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_object_unref ()">
-<a name="json-object-unref"></a><h3>json_object_unref ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_object_unref (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object);</pre>
-<p>
-Decreases by one the reference count of a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>. If the
-reference count reaches zero, the object is destroyed and all
-its allocated resources are freed.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody><tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_object_add_member ()">
-<a name="json-object-add-member"></a><h3>json_object_add_member ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_object_add_member (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name,
- <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);</pre>
-<div class="warning" title="Warning" style="margin-left: 0.5in; margin-right: 0.5in;">
-<h3 class="title">Warning</h3>
-<p><code class="literal">json_object_add_member</code> has been deprecated since version 0.8 and should not be used in newly-written code. Use <a class="link" href="json-glib-JSON-Object.html#json-object-set-member" title="json_object_set_member ()"><code class="function">json_object_set_member()</code></a> instead</p>
-</div>
-<p>
-Adds a member named <em class="parameter"><code>member_name</code></em> and containing <em class="parameter"><code>node</code></em> into a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>.
-The object will take ownership of the <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>.
-</p>
-<p>
-This function will return if the <em class="parameter"><code>object</code></em> already contains a member
-<em class="parameter"><code>member_name</code></em>.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>member_name</code></em> :</span></p></td>
-<td> the name of the member
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> the value of the member
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_object_set_member ()">
-<a name="json-object-set-member"></a><h3>json_object_set_member ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_object_set_member (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name,
- <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *node);</pre>
-<p>
-Sets <em class="parameter"><code>node</code></em> as the value of <em class="parameter"><code>member_name</code></em> inside <em class="parameter"><code>object</code></em>.
-</p>
-<p>
-If <em class="parameter"><code>object</code></em> already contains a member called <em class="parameter"><code>member_name</code></em> then
-the member's current value is overwritten. Otherwise, a new
-member is added to <em class="parameter"><code>object</code></em>.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>member_name</code></em> :</span></p></td>
-<td> the name of the member
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
-<td> the value of the member
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-<hr>
-<div class="refsect2" title="json_object_has_member ()">
-<a name="json-object-has-member"></a><h3>json_object_has_member ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> json_object_has_member (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name);</pre>
-<p>
-Checks whether <em class="parameter"><code>object</code></em> has a member named <em class="parameter"><code>member_name</code></em>.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>member_name</code></em> :</span></p></td>
-<td> the name of a JSON object member
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the JSON object has the requested member
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_object_get_member ()">
-<a name="json-object-get-member"></a><h3>json_object_get_member ()</h3>
-<pre class="programlisting"><a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> * json_object_get_member (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name);</pre>
-<p>
-Retrieves the <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> containing the value of <em class="parameter"><code>member_name</code></em> inside
-a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>member_name</code></em> :</span></p></td>
-<td> the name of the JSON object member to access
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> a pointer to the node for the requested object
- member, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_object_dup_member ()">
-<a name="json-object-dup-member"></a><h3>json_object_dup_member ()</h3>
-<pre class="programlisting"><a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> * json_object_dup_member (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name);</pre>
-<p>
-Retrieves a copy of the <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> containing the value of <em class="parameter"><code>member_name</code></em>
-inside a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>member_name</code></em> :</span></p></td>
-<td> the name of the JSON object member to access
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> (transfer full) a copy of the node for the requested
- object member or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. Use <a class="link" href="json-glib-JSON-Node.html#json-node-free" title="json_node_free ()"><code class="function">json_node_free()</code></a> when done.
-
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.6</p>
-</div>
-<hr>
-<div class="refsect2" title="json_object_get_members ()">
-<a name="json-object-get-members"></a><h3>json_object_get_members ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="returnvalue">GList</span></a> * json_object_get_members (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object);</pre>
-<p>
-Retrieves all the names of the members of a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>. You can
-obtain the value for each member using <a class="link" href="json-glib-JSON-Object.html#json-object-get-member" title="json_object_get_member ()"><code class="function">json_object_get_member()</code></a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>element-type utf8) (transfer container. <acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> utf8. <acronym title="Free data container after the code is done."><span class="acronym">transfer container</span></acronym> utf8. </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_object_get_values ()">
-<a name="json-object-get-values"></a><h3>json_object_get_values ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="returnvalue">GList</span></a> * json_object_get_values (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object);</pre>
-<p>
-Retrieves all the values of the members of a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>element-type JsonNode) (transfer container. <acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> JsonNode. <acronym title="Free data container after the code is done."><span class="acronym">transfer container</span></acronym> JsonNode. </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_object_get_size ()">
-<a name="json-object-get-size"></a><h3>json_object_get_size ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> json_object_get_size (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object);</pre>
-<p>
-Retrieves the number of members of a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> the number of members
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_object_remove_member ()">
-<a name="json-object-remove-member"></a><h3>json_object_remove_member ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_object_remove_member (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name);</pre>
-<p>
-Removes <em class="parameter"><code>member_name</code></em> from <em class="parameter"><code>object</code></em>, freeing its allocated resources.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>member_name</code></em> :</span></p></td>
-<td> the name of the member to remove
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="JsonObjectForeach ()">
-<a name="JsonObjectForeach"></a><h3>JsonObjectForeach ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> (*JsonObjectForeach) (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name,
- <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *member_node,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="returnvalue">gpointer</span></a> user_data);</pre>
-<p>
-The function to be passed to <a class="link" href="json-glib-JSON-Object.html#json-object-foreach-member" title="json_object_foreach_member ()"><code class="function">json_object_foreach_member()</code></a>. You
-should not add or remove members to and from <em class="parameter"><code>object</code></em> within
-this function. It is safe to change the value of <em class="parameter"><code>member_node</code></em>.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td> the iterated <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>member_name</code></em> :</span></p></td>
-<td> the name of the member
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>member_node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> containing the <em class="parameter"><code>member_name</code></em> value
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td> data passed to the function
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-<hr>
-<div class="refsect2" title="json_object_foreach_member ()">
-<a name="json-object-foreach-member"></a><h3>json_object_foreach_member ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_object_foreach_member (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- <a class="link" href="json-glib-JSON-Object.html#JsonObjectForeach" title="JsonObjectForeach ()"><span class="returnvalue">JsonObjectForeach</span></a> func,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="returnvalue">gpointer</span></a> data);</pre>
-<p>
-Iterates over all members of <em class="parameter"><code>object</code></em> and calls <em class="parameter"><code>func</code></em> on
-each one of them.
-</p>
-<p>
-It is safe to change the value of a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> of the <em class="parameter"><code>object</code></em>
-from within the iterator <em class="parameter"><code>func</code></em>, but it is not safe to add or
-remove members from the <em class="parameter"><code>object</code></em>.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>func</code></em> :</span></p></td>
-<td> the function to be called on each member
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>data</code></em> :</span></p></td>
-<td> data to be passed to the function
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-<hr>
-<div class="refsect2" title="json_object_set_array_member ()">
-<a name="json-object-set-array-member"></a><h3>json_object_set_array_member ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_object_set_array_member (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name,
- <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> *value);</pre>
-<p>
-Convenience function for setting an array <em class="parameter"><code>value</code></em> of
-<em class="parameter"><code>member_name</code></em> inside <em class="parameter"><code>object</code></em>.
-</p>
-<p>
-The <em class="parameter"><code>object</code></em> will take ownership of the passed <a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="type">JsonArray</span></a>
-</p>
-<p>
-See also: <a class="link" href="json-glib-JSON-Object.html#json-object-set-member" title="json_object_set_member ()"><code class="function">json_object_set_member()</code></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>member_name</code></em> :</span></p></td>
-<td> the name of the member
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
-<td> the value of the member
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-<hr>
-<div class="refsect2" title="json_object_get_array_member ()">
-<a name="json-object-get-array-member"></a><h3>json_object_get_array_member ()</h3>
-<pre class="programlisting"><a class="link" href="json-glib-JSON-Array.html#JsonArray" title="JsonArray"><span class="returnvalue">JsonArray</span></a> * json_object_get_array_member (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name);</pre>
-<p>
-Convenience function that retrieves the array
-stored in <em class="parameter"><code>member_name</code></em> of <em class="parameter"><code>object</code></em>
-</p>
-<p>
-See also: <a class="link" href="json-glib-JSON-Object.html#json-object-get-member" title="json_object_get_member ()"><code class="function">json_object_get_member()</code></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>member_name</code></em> :</span></p></td>
-<td> the name of the member
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> the array inside the object's member. <acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>. </td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-<hr>
-<div class="refsect2" title="json_object_set_boolean_member ()">
-<a name="json-object-set-boolean-member"></a><h3>json_object_set_boolean_member ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_object_set_boolean_member (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> value);</pre>
-<p>
-Convenience function for setting a boolean <em class="parameter"><code>value</code></em> of
-<em class="parameter"><code>member_name</code></em> inside <em class="parameter"><code>object</code></em>.
-</p>
-<p>
-See also: <a class="link" href="json-glib-JSON-Object.html#json-object-set-member" title="json_object_set_member ()"><code class="function">json_object_set_member()</code></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>member_name</code></em> :</span></p></td>
-<td> the name of the member
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
-<td> the value of the member
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-<hr>
-<div class="refsect2" title="json_object_get_boolean_member ()">
-<a name="json-object-get-boolean-member"></a><h3>json_object_get_boolean_member ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> json_object_get_boolean_member (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name);</pre>
-<p>
-Convenience function that retrieves the boolean value
-stored in <em class="parameter"><code>member_name</code></em> of <em class="parameter"><code>object</code></em>
-</p>
-<p>
-See also: <a class="link" href="json-glib-JSON-Object.html#json-object-get-member" title="json_object_get_member ()"><code class="function">json_object_get_member()</code></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>member_name</code></em> :</span></p></td>
-<td> the name of the member
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> the boolean value of the object's member
-
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-<hr>
-<div class="refsect2" title="json_object_set_double_member ()">
-<a name="json-object-set-double-member"></a><h3>json_object_set_double_member ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_object_set_double_member (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a> value);</pre>
-<p>
-Convenience function for setting a floating point <em class="parameter"><code>value</code></em>
-of <em class="parameter"><code>member_name</code></em> inside <em class="parameter"><code>object</code></em>.
-</p>
-<p>
-See also: <a class="link" href="json-glib-JSON-Object.html#json-object-set-member" title="json_object_set_member ()"><code class="function">json_object_set_member()</code></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>member_name</code></em> :</span></p></td>
-<td> the name of the member
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
-<td> the value of the member
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-<hr>
-<div class="refsect2" title="json_object_get_double_member ()">
-<a name="json-object-get-double-member"></a><h3>json_object_get_double_member ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a> json_object_get_double_member (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name);</pre>
-<p>
-Convenience function that retrieves the floating point value
-stored in <em class="parameter"><code>member_name</code></em> of <em class="parameter"><code>object</code></em>
-</p>
-<p>
-See also: <a class="link" href="json-glib-JSON-Object.html#json-object-get-member" title="json_object_get_member ()"><code class="function">json_object_get_member()</code></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>member_name</code></em> :</span></p></td>
-<td> the name of the member
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> the floating point value of the object's member
-
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-<hr>
-<div class="refsect2" title="json_object_set_int_member ()">
-<a name="json-object-set-int-member"></a><h3>json_object_set_int_member ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_object_set_int_member (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint64"><span class="returnvalue">gint64</span></a> value);</pre>
-<p>
-Convenience function for setting an integer <em class="parameter"><code>value</code></em> of
-<em class="parameter"><code>member_name</code></em> inside <em class="parameter"><code>object</code></em>.
-</p>
-<p>
-See also: <a class="link" href="json-glib-JSON-Object.html#json-object-set-member" title="json_object_set_member ()"><code class="function">json_object_set_member()</code></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>member_name</code></em> :</span></p></td>
-<td> the name of the member
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
-<td> the value of the member
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-<hr>
-<div class="refsect2" title="json_object_get_int_member ()">
-<a name="json-object-get-int-member"></a><h3>json_object_get_int_member ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint64"><span class="returnvalue">gint64</span></a> json_object_get_int_member (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name);</pre>
-<p>
-Convenience function that retrieves the integer value
-stored in <em class="parameter"><code>member_name</code></em> of <em class="parameter"><code>object</code></em>
-</p>
-<p>
-See also: <a class="link" href="json-glib-JSON-Object.html#json-object-get-member" title="json_object_get_member ()"><code class="function">json_object_get_member()</code></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>member_name</code></em> :</span></p></td>
-<td> the name of the member
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> the integer value of the object's member
-
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-<hr>
-<div class="refsect2" title="json_object_set_null_member ()">
-<a name="json-object-set-null-member"></a><h3>json_object_set_null_member ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_object_set_null_member (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name);</pre>
-<p>
-Convenience function for setting a null <em class="parameter"><code>value</code></em> of
-<em class="parameter"><code>member_name</code></em> inside <em class="parameter"><code>object</code></em>.
-</p>
-<p>
-See also: <a class="link" href="json-glib-JSON-Object.html#json-object-set-member" title="json_object_set_member ()"><code class="function">json_object_set_member()</code></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>member_name</code></em> :</span></p></td>
-<td> the name of the member
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-<hr>
-<div class="refsect2" title="json_object_get_null_member ()">
-<a name="json-object-get-null-member"></a><h3>json_object_get_null_member ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> json_object_get_null_member (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name);</pre>
-<p>
-Convenience function that checks whether the value
-stored in <em class="parameter"><code>member_name</code></em> of <em class="parameter"><code>object</code></em> is null
-</p>
-<p>
-See also: <a class="link" href="json-glib-JSON-Object.html#json-object-get-member" title="json_object_get_member ()"><code class="function">json_object_get_member()</code></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>member_name</code></em> :</span></p></td>
-<td> the name of the member
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the value is null
-
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-<hr>
-<div class="refsect2" title="json_object_set_object_member ()">
-<a name="json-object-set-object-member"></a><h3>json_object_set_object_member ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_object_set_object_member (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name,
- <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *value);</pre>
-<p>
-Convenience function for setting an object <em class="parameter"><code>value</code></em> of
-<em class="parameter"><code>member_name</code></em> inside <em class="parameter"><code>object</code></em>.
-</p>
-<p>
-The <em class="parameter"><code>object</code></em> will take ownership of the passed <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</p>
-<p>
-See also: <a class="link" href="json-glib-JSON-Object.html#json-object-set-member" title="json_object_set_member ()"><code class="function">json_object_set_member()</code></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>member_name</code></em> :</span></p></td>
-<td> the name of the member
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
-<td> the value of the member
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-<hr>
-<div class="refsect2" title="json_object_get_object_member ()">
-<a name="json-object-get-object-member"></a><h3>json_object_get_object_member ()</h3>
-<pre class="programlisting"><a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> * json_object_get_object_member (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name);</pre>
-<p>
-Convenience function that retrieves the object
-stored in <em class="parameter"><code>member_name</code></em> of <em class="parameter"><code>object</code></em>
-</p>
-<p>
-See also: <a class="link" href="json-glib-JSON-Object.html#json-object-get-member" title="json_object_get_member ()"><code class="function">json_object_get_member()</code></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>member_name</code></em> :</span></p></td>
-<td> the name of the member
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> the object inside the object's member. <acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>. </td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-<hr>
-<div class="refsect2" title="json_object_set_string_member ()">
-<a name="json-object-set-string-member"></a><h3>json_object_set_string_member ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> json_object_set_string_member (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *value);</pre>
-<p>
-Convenience function for setting a string <em class="parameter"><code>value</code></em> of
-<em class="parameter"><code>member_name</code></em> inside <em class="parameter"><code>object</code></em>.
-</p>
-<p>
-See also: <a class="link" href="json-glib-JSON-Object.html#json-object-set-member" title="json_object_set_member ()"><code class="function">json_object_set_member()</code></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>member_name</code></em> :</span></p></td>
-<td> the name of the member
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
-<td> the value of the member
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-<hr>
-<div class="refsect2" title="json_object_get_string_member ()">
-<a name="json-object-get-string-member"></a><h3>json_object_get_string_member ()</h3>
-<pre class="programlisting">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * json_object_get_string_member (<a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="returnvalue">JsonObject</span></a> *object,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *member_name);</pre>
-<p>
-Convenience function that retrieves the string value
-stored in <em class="parameter"><code>member_name</code></em> of <em class="parameter"><code>object</code></em>
-</p>
-<p>
-See also: <a class="link" href="json-glib-JSON-Object.html#json-object-get-member" title="json_object_get_member ()"><code class="function">json_object_get_member()</code></a></p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Object.html#JsonObject" title="JsonObject"><span class="type">JsonObject</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>member_name</code></em> :</span></p></td>
-<td> the name of the member
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> the string value of the object's member
-
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.8</p>
-</div>
-</div>
-</div>
-<div class="footer">
-<hr>
- Generated by GTK-Doc V1.13</div>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Serializable Interface</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="up" href="json-advanced.html" title="Part IV. JSON-GLib Advanced API">
-<link rel="prev" href="json-glib-GObject-Serialization.html" title="GObject Serialization">
-<link rel="next" href="json-glib-Boxed-Types-Serialization.html" title="Boxed Types Serialization">
-<meta name="generator" content="GTK-Doc V1.13 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="part" href="json-glib.html" title="Part I. JSON-GLib Overview">
-<link rel="part" href="json-base.html" title="Part II. JSON-GLib Reference">
-<link rel="chapter" href="ch01.html" title="Data Types">
-<link rel="part" href="json-streams.html" title="Part III. Reading and writing">
-<link rel="chapter" href="ch02.html" title="Parser">
-<link rel="chapter" href="ch03.html" title="Generator">
-<link rel="part" href="json-advanced.html" title="Part IV. JSON-GLib Advanced API">
-<link rel="part" href="json-tools.html" title="Part V. JSON-GLib Additional Reference">
-<link rel="chapter" href="ch04.html" title="Object Hierarchy">
-<link rel="index" href="ix01.html" title="Index">
-<link rel="index" href="ix02.html" title="Index of deprecated symbols">
-<link rel="index" href="ix03.html" title="Index of new symbols in 0.4">
-<link rel="index" href="ix04.html" title="Index of new symbols in 0.6">
-<link rel="index" href="ix05.html" title="Index of new symbols in 0.8">
-<link rel="index" href="ix06.html" title="Index of new symbols in 0.10">
-<link rel="glossary" href="annotation-glossary.html" title="Annotation Glossary">
-<link rel="appendix" href="license.html" title="Appendix A. License">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
-<tr valign="middle">
-<td><a accesskey="p" href="json-glib-GObject-Serialization.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="json-advanced.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<th width="100%" align="center">JSON-GLib Reference Manual</th>
-<td><a accesskey="n" href="json-glib-Boxed-Types-Serialization.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-</tr>
-<tr><td colspan="5" class="shortcuts">
-<a href="#json-glib-Serializable-Interface.synopsis" class="shortcut">Top</a>
- |
- <a href="#json-glib-Serializable-Interface.description" class="shortcut">Description</a>
-</td></tr>
-</table>
-<div class="refentry" title="Serializable Interface">
-<a name="json-glib-Serializable-Interface"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle"><a name="json-glib-Serializable-Interface.top_of_page"></a>Serializable Interface</span></h2>
-<p>Serializable Interface — Interface for serialize and deserialize special GObjects</p>
-</td>
-<td valign="top" align="right"></td>
-</tr></table></div>
-<div class="refsynopsisdiv" title="Synopsis">
-<a name="json-glib-Serializable-Interface.synopsis"></a><h2>Synopsis</h2>
-<pre class="synopsis"> <a class="link" href="json-glib-Serializable-Interface.html#JsonSerializableIface" title="JsonSerializableIface">JsonSerializableIface</a>;
-<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> * <a class="link" href="json-glib-Serializable-Interface.html#json-serializable-serialize-property" title="json_serializable_serialize_property ()">json_serializable_serialize_property</a>
- (<span class="returnvalue">JsonSerializable</span> *serializable,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *property_name,
- const <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Generic-values.html#GValue"><span class="returnvalue">GValue</span></a> *value,
- <a href="http://library.gnome.org/devel/gobject/unstable/gobject-GParamSpec.html#GParamSpec"><span class="returnvalue">GParamSpec</span></a> *pspec);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="json-glib-Serializable-Interface.html#json-serializable-deserialize-property" title="json_serializable_deserialize_property ()">json_serializable_deserialize_property</a>
- (<span class="returnvalue">JsonSerializable</span> *serializable,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *property_name,
- <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Generic-values.html#GValue"><span class="returnvalue">GValue</span></a> *value,
- <a href="http://library.gnome.org/devel/gobject/unstable/gobject-GParamSpec.html#GParamSpec"><span class="returnvalue">GParamSpec</span></a> *pspec,
- <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *property_node);
-
-<a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> * <a class="link" href="json-glib-Serializable-Interface.html#json-serializable-default-serialize-property" title="json_serializable_default_serialize_property ()">json_serializable_default_serialize_property</a>
- (<span class="returnvalue">JsonSerializable</span> *serializable,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *property_name,
- const <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Generic-values.html#GValue"><span class="returnvalue">GValue</span></a> *value,
- <a href="http://library.gnome.org/devel/gobject/unstable/gobject-GParamSpec.html#GParamSpec"><span class="returnvalue">GParamSpec</span></a> *pspec);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="json-glib-Serializable-Interface.html#json-serializable-default-deserialize-property" title="json_serializable_default_deserialize_property ()">json_serializable_default_deserialize_property</a>
- (<span class="returnvalue">JsonSerializable</span> *serializable,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *property_name,
- <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Generic-values.html#GValue"><span class="returnvalue">GValue</span></a> *value,
- <a href="http://library.gnome.org/devel/gobject/unstable/gobject-GParamSpec.html#GParamSpec"><span class="returnvalue">GParamSpec</span></a> *pspec,
- <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *property_node);
-</pre>
-</div>
-<div class="refsect1" title="Description">
-<a name="json-glib-Serializable-Interface.description"></a><h2>Description</h2>
-<p>
-<span class="type">JsonSerializable</span> is an interface for <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a> classes that
-allows controlling how the class is going to be serialized
-or deserialized by <a class="link" href="json-glib-GObject-Serialization.html#json-construct-gobject" title="json_construct_gobject ()"><code class="function">json_construct_gobject()</code></a> and
-<a class="link" href="json-glib-GObject-Serialization.html#json-serialize-gobject" title="json_serialize_gobject ()"><code class="function">json_serialize_gobject()</code></a> respectively.</p>
-</div>
-<div class="refsect1" title="Details">
-<a name="json-glib-Serializable-Interface.details"></a><h2>Details</h2>
-<div class="refsect2" title="JsonSerializableIface">
-<a name="JsonSerializableIface"></a><h3>JsonSerializableIface</h3>
-<pre class="programlisting">typedef struct {
- JsonNode *(* serialize_property) (JsonSerializable *serializable,
- const gchar *property_name,
- const GValue *value,
- GParamSpec *pspec);
- gboolean (* deserialize_property) (JsonSerializable *serializable,
- const gchar *property_name,
- GValue *value,
- GParamSpec *pspec,
- JsonNode *property_node);
-} JsonSerializableIface;
-</pre>
-<p>
-Interface that allows serializing and deserializing <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a>s
-with properties storing complex data types. The <a class="link" href="json-glib-GObject-Serialization.html#json-serialize-gobject" title="json_serialize_gobject ()"><code class="function">json_serialize_gobject()</code></a>
-function will check if the passed <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a> implements this interface,
-so it can also be used to override the default property serialization
-sequence.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="structfield"><code><a name="JsonSerializableIface.serialize-property"></a>serialize_property</code></em> ()</span></p></td>
-<td> virtual function for serializing a <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a> property
- into a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="structfield"><code><a name="JsonSerializableIface.deserialize-property"></a>deserialize_property</code></em> ()</span></p></td>
-<td> virtual function for deserializing a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>
- into a <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a> property
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_serializable_serialize_property ()">
-<a name="json-serializable-serialize-property"></a><h3>json_serializable_serialize_property ()</h3>
-<pre class="programlisting"><a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> * json_serializable_serialize_property
- (<span class="returnvalue">JsonSerializable</span> *serializable,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *property_name,
- const <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Generic-values.html#GValue"><span class="returnvalue">GValue</span></a> *value,
- <a href="http://library.gnome.org/devel/gobject/unstable/gobject-GParamSpec.html#GParamSpec"><span class="returnvalue">GParamSpec</span></a> *pspec);</pre>
-<p>
-Asks a <span class="type">JsonSerializable</span> implementation to serialize a <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a>
-property into a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> object.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>serializable</code></em> :</span></p></td>
-<td> a <span class="type">JsonSerializable</span> object
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>property_name</code></em> :</span></p></td>
-<td> the name of the property
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
-<td> the value of the property
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>pspec</code></em> :</span></p></td>
-<td> a <a href="http://library.gnome.org/devel/gobject/unstable/gobject-GParamSpec.html#GParamSpec"><span class="type">GParamSpec</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> containing the serialized property
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_serializable_deserialize_property ()">
-<a name="json-serializable-deserialize-property"></a><h3>json_serializable_deserialize_property ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> json_serializable_deserialize_property
- (<span class="returnvalue">JsonSerializable</span> *serializable,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *property_name,
- <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Generic-values.html#GValue"><span class="returnvalue">GValue</span></a> *value,
- <a href="http://library.gnome.org/devel/gobject/unstable/gobject-GParamSpec.html#GParamSpec"><span class="returnvalue">GParamSpec</span></a> *pspec,
- <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *property_node);</pre>
-<p>
-Asks a <span class="type">JsonSerializable</span> implementation to deserialize the
-property contained inside <em class="parameter"><code>property_node</code></em> into <em class="parameter"><code>value</code></em>.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>serializable</code></em> :</span></p></td>
-<td> a <span class="type">JsonSerializable</span>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>property_name</code></em> :</span></p></td>
-<td> the name of the property
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
-<td> a pointer to an uninitialized <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>pspec</code></em> :</span></p></td>
-<td> a <a href="http://library.gnome.org/devel/gobject/unstable/gobject-GParamSpec.html#GParamSpec"><span class="type">GParamSpec</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>property_node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> containing the serialized property
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the property was successfully deserialized.
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" title="json_serializable_default_serialize_property ()">
-<a name="json-serializable-default-serialize-property"></a><h3>json_serializable_default_serialize_property ()</h3>
-<pre class="programlisting"><a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> * json_serializable_default_serialize_property
- (<span class="returnvalue">JsonSerializable</span> *serializable,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *property_name,
- const <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Generic-values.html#GValue"><span class="returnvalue">GValue</span></a> *value,
- <a href="http://library.gnome.org/devel/gobject/unstable/gobject-GParamSpec.html#GParamSpec"><span class="returnvalue">GParamSpec</span></a> *pspec);</pre>
-<p>
-Calls the default implementation of the <span class="type">JsonSerializable</span>
-<code class="function">serialize_property()</code> virtual function
-</p>
-<p>
-This function can be used inside a custom implementation
-of the <code class="function">serialize_property()</code> virtual function in lieu of:
-</p>
-<p>
-</p>
-<div class="informalexample"><pre class="programlisting">
- JsonSerializable *iface;
- JsonNode *node;
-
- iface = g_type_default_interface_peek (JSON_TYPE_SERIALIZABLE);
- node = iface->serialize_property (serializable, property_name,
- value,
- pspec);
-</pre></div>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>serializable</code></em> :</span></p></td>
-<td> a <span class="type">JsonSerializable</span> object
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>property_name</code></em> :</span></p></td>
-<td> the name of the property
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
-<td> the value of the property
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>pspec</code></em> :</span></p></td>
-<td> a <a href="http://library.gnome.org/devel/gobject/unstable/gobject-GParamSpec.html#GParamSpec"><span class="type">GParamSpec</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>transfer full. <acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>. </td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.10</p>
-</div>
-<hr>
-<div class="refsect2" title="json_serializable_default_deserialize_property ()">
-<a name="json-serializable-default-deserialize-property"></a><h3>json_serializable_default_deserialize_property ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> json_serializable_default_deserialize_property
- (<span class="returnvalue">JsonSerializable</span> *serializable,
- const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *property_name,
- <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Generic-values.html#GValue"><span class="returnvalue">GValue</span></a> *value,
- <a href="http://library.gnome.org/devel/gobject/unstable/gobject-GParamSpec.html#GParamSpec"><span class="returnvalue">GParamSpec</span></a> *pspec,
- <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> *property_node);</pre>
-<p>
-Calls the default implementation of the <span class="type">JsonSerializable</span>
-<code class="function">deserialize_property()</code> virtual function
-</p>
-<p>
-This function can be used inside a custom implementation
-of the <code class="function">deserialize_property()</code> virtual function in lieu of:
-</p>
-<p>
-</p>
-<div class="informalexample"><pre class="programlisting">
- JsonSerializable *iface;
- gboolean res;
-
- iface = g_type_default_interface_peek (JSON_TYPE_SERIALIZABLE);
- res = iface->deserialize_property (serializable, property_name,
- value,
- pspec,
- property_node);
-</pre></div>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>serializable</code></em> :</span></p></td>
-<td> a <span class="type">JsonSerializable</span>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>property_name</code></em> :</span></p></td>
-<td> the name of the property
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
-<td> a pointer to an uninitialized <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>pspec</code></em> :</span></p></td>
-<td> a <a href="http://library.gnome.org/devel/gobject/unstable/gobject-GParamSpec.html#GParamSpec"><span class="type">GParamSpec</span></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>property_node</code></em> :</span></p></td>
-<td> a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> containing the serialized property
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the property was successfully deserialized.
-
-</td>
-</tr>
-</tbody>
-</table></div>
-<p class="since">Since 0.10</p>
-</div>
-</div>
-</div>
-<div class="footer">
-<hr>
- Generated by GTK-Doc V1.13</div>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Versioning information</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="up" href="json-tools.html" title="Part V. JSON-GLib Additional Reference">
-<link rel="prev" href="json-tools.html" title="Part V. JSON-GLib Additional Reference">
-<link rel="next" href="ch04.html" title="Object Hierarchy">
-<meta name="generator" content="GTK-Doc V1.13 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="part" href="json-glib.html" title="Part I. JSON-GLib Overview">
-<link rel="part" href="json-base.html" title="Part II. JSON-GLib Reference">
-<link rel="chapter" href="ch01.html" title="Data Types">
-<link rel="part" href="json-streams.html" title="Part III. Reading and writing">
-<link rel="chapter" href="ch02.html" title="Parser">
-<link rel="chapter" href="ch03.html" title="Generator">
-<link rel="part" href="json-advanced.html" title="Part IV. JSON-GLib Advanced API">
-<link rel="part" href="json-tools.html" title="Part V. JSON-GLib Additional Reference">
-<link rel="chapter" href="ch04.html" title="Object Hierarchy">
-<link rel="index" href="ix01.html" title="Index">
-<link rel="index" href="ix02.html" title="Index of deprecated symbols">
-<link rel="index" href="ix03.html" title="Index of new symbols in 0.4">
-<link rel="index" href="ix04.html" title="Index of new symbols in 0.6">
-<link rel="index" href="ix05.html" title="Index of new symbols in 0.8">
-<link rel="index" href="ix06.html" title="Index of new symbols in 0.10">
-<link rel="glossary" href="annotation-glossary.html" title="Annotation Glossary">
-<link rel="appendix" href="license.html" title="Appendix A. License">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
-<tr valign="middle">
-<td><a accesskey="p" href="json-tools.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="json-tools.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<th width="100%" align="center">JSON-GLib Reference Manual</th>
-<td><a accesskey="n" href="ch04.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-</tr>
-<tr><td colspan="5" class="shortcuts">
-<a href="#json-glib-Versioning-information.synopsis" class="shortcut">Top</a>
- |
- <a href="#json-glib-Versioning-information.description" class="shortcut">Description</a>
-</td></tr>
-</table>
-<div class="refentry" title="Versioning information">
-<a name="json-glib-Versioning-information"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle"><a name="json-glib-Versioning-information.top_of_page"></a>Versioning information</span></h2>
-<p>Versioning information — JSON-GLib version checking</p>
-</td>
-<td valign="top" align="right"></td>
-</tr></table></div>
-<div class="refsynopsisdiv" title="Synopsis">
-<a name="json-glib-Versioning-information.synopsis"></a><h2>Synopsis</h2>
-<pre class="synopsis">#define <a class="link" href="json-glib-Versioning-information.html#JSON-MAJOR-VERSION:CAPS" title="JSON_MAJOR_VERSION">JSON_MAJOR_VERSION</a>
-#define <a class="link" href="json-glib-Versioning-information.html#JSON-MINOR-VERSION:CAPS" title="JSON_MINOR_VERSION">JSON_MINOR_VERSION</a>
-#define <a class="link" href="json-glib-Versioning-information.html#JSON-MICRO-VERSION:CAPS" title="JSON_MICRO_VERSION">JSON_MICRO_VERSION</a>
-
-#define <a class="link" href="json-glib-Versioning-information.html#JSON-VERSION:CAPS" title="JSON_VERSION">JSON_VERSION</a>
-#define <a class="link" href="json-glib-Versioning-information.html#JSON-VERSION-S:CAPS" title="JSON_VERSION_S">JSON_VERSION_S</a>
-#define <a class="link" href="json-glib-Versioning-information.html#JSON-VERSION-HEX:CAPS" title="JSON_VERSION_HEX">JSON_VERSION_HEX</a>
-
-#define <a class="link" href="json-glib-Versioning-information.html#JSON-CHECK-VERSION:CAPS" title="JSON_CHECK_VERSION()">JSON_CHECK_VERSION</a> (major,minor,micro)
-</pre>
-</div>
-<div class="refsect1" title="Description">
-<a name="json-glib-Versioning-information.description"></a><h2>Description</h2>
-<p>
-JSON-GLib provides macros to check the version of the library
-at compile-time</p>
-</div>
-<div class="refsect1" title="Details">
-<a name="json-glib-Versioning-information.details"></a><h2>Details</h2>
-<div class="refsect2" title="JSON_MAJOR_VERSION">
-<a name="JSON-MAJOR-VERSION:CAPS"></a><h3>JSON_MAJOR_VERSION</h3>
-<pre class="programlisting">#define JSON_MAJOR_VERSION (0)
-</pre>
-<p>
-Json major version component (e.g. 1 if <a class="link" href="json-glib-Versioning-information.html#JSON-VERSION:CAPS" title="JSON_VERSION"><code class="literal">JSON_VERSION</code></a> is 1.2.3)</p>
-</div>
-<hr>
-<div class="refsect2" title="JSON_MINOR_VERSION">
-<a name="JSON-MINOR-VERSION:CAPS"></a><h3>JSON_MINOR_VERSION</h3>
-<pre class="programlisting">#define JSON_MINOR_VERSION (10)
-</pre>
-<p>
-Json minor version component (e.g. 2 if <a class="link" href="json-glib-Versioning-information.html#JSON-VERSION:CAPS" title="JSON_VERSION"><code class="literal">JSON_VERSION</code></a> is 1.2.3)</p>
-</div>
-<hr>
-<div class="refsect2" title="JSON_MICRO_VERSION">
-<a name="JSON-MICRO-VERSION:CAPS"></a><h3>JSON_MICRO_VERSION</h3>
-<pre class="programlisting">#define JSON_MICRO_VERSION (4)
-</pre>
-<p>
-Json micro version component (e.g. 3 if <a class="link" href="json-glib-Versioning-information.html#JSON-VERSION:CAPS" title="JSON_VERSION"><code class="literal">JSON_VERSION</code></a> is 1.2.3)</p>
-</div>
-<hr>
-<div class="refsect2" title="JSON_VERSION">
-<a name="JSON-VERSION:CAPS"></a><h3>JSON_VERSION</h3>
-<pre class="programlisting">#define JSON_VERSION (0.10.4)
-</pre>
-<p>
-Json version.</p>
-</div>
-<hr>
-<div class="refsect2" title="JSON_VERSION_S">
-<a name="JSON-VERSION-S:CAPS"></a><h3>JSON_VERSION_S</h3>
-<pre class="programlisting">#define JSON_VERSION_S "0.10.4"
-</pre>
-<p>
-Json version, encoded as a string, useful for printing and
-concatenation.</p>
-</div>
-<hr>
-<div class="refsect2" title="JSON_VERSION_HEX">
-<a name="JSON-VERSION-HEX:CAPS"></a><h3>JSON_VERSION_HEX</h3>
-<pre class="programlisting">#define JSON_VERSION_HEX</pre>
-<p>
-Json version, encoded as an hexadecimal number, useful for
-integer comparisons.</p>
-</div>
-<hr>
-<div class="refsect2" title="JSON_CHECK_VERSION()">
-<a name="JSON-CHECK-VERSION:CAPS"></a><h3>JSON_CHECK_VERSION()</h3>
-<pre class="programlisting">#define JSON_CHECK_VERSION(major,minor,micro)</pre>
-<p>
-Compile-time version checking. Evaluates to <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the version
-of Json is greater than the required one.</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>major</code></em> :</span></p></td>
-<td> required major version
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>minor</code></em> :</span></p></td>
-<td> required minor version
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>micro</code></em> :</span></p></td>
-<td> required micro version
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-</div>
-<div class="footer">
-<hr>
- Generated by GTK-Doc V1.13</div>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8" standalone="no"?>
-<!DOCTYPE book PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "">
-<book xmlns="http://www.devhelp.net/book" title="JSON-GLib Reference Manual" link="index.html" author="" name="json-glib">
- <chapters>
- <sub name="JSON-GLib Overview" link="json-glib.html"/>
- <sub name="JSON-GLib Reference" link="json-base.html">
- <sub name="Data Types" link="ch01.html">
- <sub name="JSON Node" link="json-glib-JSON-Node.html"/>
- <sub name="JSON Array" link="json-glib-JSON-Array.html"/>
- <sub name="JSON Object" link="json-glib-JSON-Object.html"/>
- </sub>
- </sub>
- <sub name="Reading and writing" link="json-streams.html">
- <sub name="Parser" link="ch02.html">
- <sub name="JsonParser" link="JsonParser.html"/>
- </sub>
- <sub name="Generator" link="ch03.html">
- <sub name="JsonGenerator" link="JsonGenerator.html"/>
- </sub>
- </sub>
- <sub name="JSON-GLib Advanced API" link="json-advanced.html">
- <sub name="GObject Serialization" link="json-glib-GObject-Serialization.html"/>
- <sub name="Serializable Interface" link="json-glib-Serializable-Interface.html"/>
- <sub name="Boxed Types Serialization" link="json-glib-Boxed-Types-Serialization.html"/>
- </sub>
- <sub name="JSON-GLib Additional Reference" link="json-tools.html">
- <sub name="Versioning information" link="json-glib-Versioning-information.html"/>
- <sub name="Object Hierarchy" link="ch04.html"/>
- </sub>
- <sub name="Index" link="ix01.html"/>
- <sub name="Index of deprecated symbols" link="ix02.html"/>
- <sub name="Index of new symbols in 0.4" link="ix03.html"/>
- <sub name="Index of new symbols in 0.6" link="ix04.html"/>
- <sub name="Index of new symbols in 0.8" link="ix05.html"/>
- <sub name="Index of new symbols in 0.10" link="ix06.html"/>
- <sub name="Annotation Glossary" link="annotation-glossary.html"/>
- <sub name="License" link="license.html"/>
- </chapters>
- <functions>
- <function name="enum JsonNodeType" link="json-glib-JSON-Node.html#JsonNodeType"/>
- <function name="JsonNode" link="json-glib-JSON-Node.html#JsonNode"/>
- <function name="JSON_NODE_TYPE()" link="json-glib-JSON-Node.html#JSON-NODE-TYPE:CAPS"/>
- <function name="JSON_NODE_HOLDS()" link="json-glib-JSON-Node.html#JSON-NODE-HOLDS:CAPS"/>
- <function name="JSON_NODE_HOLDS_VALUE()" link="json-glib-JSON-Node.html#JSON-NODE-HOLDS-VALUE:CAPS"/>
- <function name="JSON_NODE_HOLDS_OBJECT()" link="json-glib-JSON-Node.html#JSON-NODE-HOLDS-OBJECT:CAPS"/>
- <function name="JSON_NODE_HOLDS_ARRAY()" link="json-glib-JSON-Node.html#JSON-NODE-HOLDS-ARRAY:CAPS"/>
- <function name="JSON_NODE_HOLDS_NULL()" link="json-glib-JSON-Node.html#JSON-NODE-HOLDS-NULL:CAPS"/>
- <function name="json_node_new ()" link="json-glib-JSON-Node.html#json-node-new"/>
- <function name="json_node_copy ()" link="json-glib-JSON-Node.html#json-node-copy"/>
- <function name="json_node_free ()" link="json-glib-JSON-Node.html#json-node-free"/>
- <function name="json_node_set_array ()" link="json-glib-JSON-Node.html#json-node-set-array"/>
- <function name="json_node_take_array ()" link="json-glib-JSON-Node.html#json-node-take-array"/>
- <function name="json_node_get_array ()" link="json-glib-JSON-Node.html#json-node-get-array"/>
- <function name="json_node_dup_array ()" link="json-glib-JSON-Node.html#json-node-dup-array"/>
- <function name="json_node_set_object ()" link="json-glib-JSON-Node.html#json-node-set-object"/>
- <function name="json_node_take_object ()" link="json-glib-JSON-Node.html#json-node-take-object"/>
- <function name="json_node_get_object ()" link="json-glib-JSON-Node.html#json-node-get-object"/>
- <function name="json_node_dup_object ()" link="json-glib-JSON-Node.html#json-node-dup-object"/>
- <function name="json_node_set_value ()" link="json-glib-JSON-Node.html#json-node-set-value"/>
- <function name="json_node_get_value ()" link="json-glib-JSON-Node.html#json-node-get-value"/>
- <function name="json_node_set_boolean ()" link="json-glib-JSON-Node.html#json-node-set-boolean"/>
- <function name="json_node_get_boolean ()" link="json-glib-JSON-Node.html#json-node-get-boolean"/>
- <function name="json_node_set_double ()" link="json-glib-JSON-Node.html#json-node-set-double"/>
- <function name="json_node_get_double ()" link="json-glib-JSON-Node.html#json-node-get-double"/>
- <function name="json_node_set_int ()" link="json-glib-JSON-Node.html#json-node-set-int"/>
- <function name="json_node_get_int ()" link="json-glib-JSON-Node.html#json-node-get-int"/>
- <function name="json_node_set_string ()" link="json-glib-JSON-Node.html#json-node-set-string"/>
- <function name="json_node_get_string ()" link="json-glib-JSON-Node.html#json-node-get-string"/>
- <function name="json_node_dup_string ()" link="json-glib-JSON-Node.html#json-node-dup-string"/>
- <function name="json_node_set_parent ()" link="json-glib-JSON-Node.html#json-node-set-parent"/>
- <function name="json_node_get_parent ()" link="json-glib-JSON-Node.html#json-node-get-parent"/>
- <function name="json_node_type_name ()" link="json-glib-JSON-Node.html#json-node-type-name"/>
- <function name="json_node_get_value_type ()" link="json-glib-JSON-Node.html#json-node-get-value-type"/>
- <function name="json_node_get_node_type ()" link="json-glib-JSON-Node.html#json-node-get-node-type"/>
- <function name="json_node_is_null ()" link="json-glib-JSON-Node.html#json-node-is-null"/>
- <function name="JsonArray" link="json-glib-JSON-Array.html#JsonArray"/>
- <function name="json_array_new ()" link="json-glib-JSON-Array.html#json-array-new"/>
- <function name="json_array_sized_new ()" link="json-glib-JSON-Array.html#json-array-sized-new"/>
- <function name="json_array_ref ()" link="json-glib-JSON-Array.html#json-array-ref"/>
- <function name="json_array_unref ()" link="json-glib-JSON-Array.html#json-array-unref"/>
- <function name="json_array_add_element ()" link="json-glib-JSON-Array.html#json-array-add-element"/>
- <function name="json_array_get_element ()" link="json-glib-JSON-Array.html#json-array-get-element"/>
- <function name="json_array_dup_element ()" link="json-glib-JSON-Array.html#json-array-dup-element"/>
- <function name="json_array_get_elements ()" link="json-glib-JSON-Array.html#json-array-get-elements"/>
- <function name="json_array_get_length ()" link="json-glib-JSON-Array.html#json-array-get-length"/>
- <function name="json_array_remove_element ()" link="json-glib-JSON-Array.html#json-array-remove-element"/>
- <function name="JsonArrayForeach ()" link="json-glib-JSON-Array.html#JsonArrayForeach"/>
- <function name="json_array_foreach_element ()" link="json-glib-JSON-Array.html#json-array-foreach-element"/>
- <function name="json_array_add_array_element ()" link="json-glib-JSON-Array.html#json-array-add-array-element"/>
- <function name="json_array_get_array_element ()" link="json-glib-JSON-Array.html#json-array-get-array-element"/>
- <function name="json_array_add_boolean_element ()" link="json-glib-JSON-Array.html#json-array-add-boolean-element"/>
- <function name="json_array_get_boolean_element ()" link="json-glib-JSON-Array.html#json-array-get-boolean-element"/>
- <function name="json_array_add_double_element ()" link="json-glib-JSON-Array.html#json-array-add-double-element"/>
- <function name="json_array_get_double_element ()" link="json-glib-JSON-Array.html#json-array-get-double-element"/>
- <function name="json_array_add_int_element ()" link="json-glib-JSON-Array.html#json-array-add-int-element"/>
- <function name="json_array_get_int_element ()" link="json-glib-JSON-Array.html#json-array-get-int-element"/>
- <function name="json_array_add_null_element ()" link="json-glib-JSON-Array.html#json-array-add-null-element"/>
- <function name="json_array_get_null_element ()" link="json-glib-JSON-Array.html#json-array-get-null-element"/>
- <function name="json_array_add_object_element ()" link="json-glib-JSON-Array.html#json-array-add-object-element"/>
- <function name="json_array_get_object_element ()" link="json-glib-JSON-Array.html#json-array-get-object-element"/>
- <function name="json_array_add_string_element ()" link="json-glib-JSON-Array.html#json-array-add-string-element"/>
- <function name="json_array_get_string_element ()" link="json-glib-JSON-Array.html#json-array-get-string-element"/>
- <function name="JsonObject" link="json-glib-JSON-Object.html#JsonObject"/>
- <function name="json_object_new ()" link="json-glib-JSON-Object.html#json-object-new"/>
- <function name="json_object_ref ()" link="json-glib-JSON-Object.html#json-object-ref"/>
- <function name="json_object_unref ()" link="json-glib-JSON-Object.html#json-object-unref"/>
- <function name="json_object_add_member ()" link="json-glib-JSON-Object.html#json-object-add-member"/>
- <function name="json_object_set_member ()" link="json-glib-JSON-Object.html#json-object-set-member"/>
- <function name="json_object_has_member ()" link="json-glib-JSON-Object.html#json-object-has-member"/>
- <function name="json_object_get_member ()" link="json-glib-JSON-Object.html#json-object-get-member"/>
- <function name="json_object_dup_member ()" link="json-glib-JSON-Object.html#json-object-dup-member"/>
- <function name="json_object_get_members ()" link="json-glib-JSON-Object.html#json-object-get-members"/>
- <function name="json_object_get_values ()" link="json-glib-JSON-Object.html#json-object-get-values"/>
- <function name="json_object_get_size ()" link="json-glib-JSON-Object.html#json-object-get-size"/>
- <function name="json_object_remove_member ()" link="json-glib-JSON-Object.html#json-object-remove-member"/>
- <function name="JsonObjectForeach ()" link="json-glib-JSON-Object.html#JsonObjectForeach"/>
- <function name="json_object_foreach_member ()" link="json-glib-JSON-Object.html#json-object-foreach-member"/>
- <function name="json_object_set_array_member ()" link="json-glib-JSON-Object.html#json-object-set-array-member"/>
- <function name="json_object_get_array_member ()" link="json-glib-JSON-Object.html#json-object-get-array-member"/>
- <function name="json_object_set_boolean_member ()" link="json-glib-JSON-Object.html#json-object-set-boolean-member"/>
- <function name="json_object_get_boolean_member ()" link="json-glib-JSON-Object.html#json-object-get-boolean-member"/>
- <function name="json_object_set_double_member ()" link="json-glib-JSON-Object.html#json-object-set-double-member"/>
- <function name="json_object_get_double_member ()" link="json-glib-JSON-Object.html#json-object-get-double-member"/>
- <function name="json_object_set_int_member ()" link="json-glib-JSON-Object.html#json-object-set-int-member"/>
- <function name="json_object_get_int_member ()" link="json-glib-JSON-Object.html#json-object-get-int-member"/>
- <function name="json_object_set_null_member ()" link="json-glib-JSON-Object.html#json-object-set-null-member"/>
- <function name="json_object_get_null_member ()" link="json-glib-JSON-Object.html#json-object-get-null-member"/>
- <function name="json_object_set_object_member ()" link="json-glib-JSON-Object.html#json-object-set-object-member"/>
- <function name="json_object_get_object_member ()" link="json-glib-JSON-Object.html#json-object-get-object-member"/>
- <function name="json_object_set_string_member ()" link="json-glib-JSON-Object.html#json-object-set-string-member"/>
- <function name="json_object_get_string_member ()" link="json-glib-JSON-Object.html#json-object-get-string-member"/>
- <function name="enum JsonParserError" link="JsonParser.html#JsonParserError"/>
- <function name="JsonParser" link="JsonParser.html#JsonParser-struct"/>
- <function name="JsonParserClass" link="JsonParser.html#JsonParserClass"/>
- <function name="json_parser_new ()" link="JsonParser.html#json-parser-new"/>
- <function name="json_parser_load_from_file ()" link="JsonParser.html#json-parser-load-from-file"/>
- <function name="json_parser_load_from_data ()" link="JsonParser.html#json-parser-load-from-data"/>
- <function name="json_parser_get_root ()" link="JsonParser.html#json-parser-get-root"/>
- <function name="json_parser_get_current_line ()" link="JsonParser.html#json-parser-get-current-line"/>
- <function name="json_parser_get_current_pos ()" link="JsonParser.html#json-parser-get-current-pos"/>
- <function name="json_parser_has_assignment ()" link="JsonParser.html#json-parser-has-assignment"/>
- <function name="The "array-element" signal" link="JsonParser.html#JsonParser-array-element"/>
- <function name="The "array-end" signal" link="JsonParser.html#JsonParser-array-end"/>
- <function name="The "array-start" signal" link="JsonParser.html#JsonParser-array-start"/>
- <function name="The "error" signal" link="JsonParser.html#JsonParser-error"/>
- <function name="The "object-end" signal" link="JsonParser.html#JsonParser-object-end"/>
- <function name="The "object-member" signal" link="JsonParser.html#JsonParser-object-member"/>
- <function name="The "object-start" signal" link="JsonParser.html#JsonParser-object-start"/>
- <function name="The "parse-end" signal" link="JsonParser.html#JsonParser-parse-end"/>
- <function name="The "parse-start" signal" link="JsonParser.html#JsonParser-parse-start"/>
- <function name="JsonGenerator" link="JsonGenerator.html#JsonGenerator-struct"/>
- <function name="JsonGeneratorClass" link="JsonGenerator.html#JsonGeneratorClass"/>
- <function name="json_generator_new ()" link="JsonGenerator.html#json-generator-new"/>
- <function name="json_generator_to_file ()" link="JsonGenerator.html#json-generator-to-file"/>
- <function name="json_generator_to_data ()" link="JsonGenerator.html#json-generator-to-data"/>
- <function name="json_generator_set_root ()" link="JsonGenerator.html#json-generator-set-root"/>
- <function name="The "indent" property" link="JsonGenerator.html#JsonGenerator--indent"/>
- <function name="The "indent-char" property" link="JsonGenerator.html#JsonGenerator--indent-char"/>
- <function name="The "pretty" property" link="JsonGenerator.html#JsonGenerator--pretty"/>
- <function name="The "root" property" link="JsonGenerator.html#JsonGenerator--root"/>
- <function name="json_gobject_serialize ()" link="json-glib-GObject-Serialization.html#json-gobject-serialize"/>
- <function name="json_gobject_deserialize ()" link="json-glib-GObject-Serialization.html#json-gobject-deserialize"/>
- <function name="json_gobject_to_data ()" link="json-glib-GObject-Serialization.html#json-gobject-to-data"/>
- <function name="json_gobject_from_data ()" link="json-glib-GObject-Serialization.html#json-gobject-from-data"/>
- <function name="json_construct_gobject ()" link="json-glib-GObject-Serialization.html#json-construct-gobject"/>
- <function name="json_serialize_gobject ()" link="json-glib-GObject-Serialization.html#json-serialize-gobject"/>
- <function name="JsonSerializableIface" link="json-glib-Serializable-Interface.html#JsonSerializableIface"/>
- <function name="json_serializable_serialize_property ()" link="json-glib-Serializable-Interface.html#json-serializable-serialize-property"/>
- <function name="json_serializable_deserialize_property ()" link="json-glib-Serializable-Interface.html#json-serializable-deserialize-property"/>
- <function name="json_serializable_default_serialize_property ()" link="json-glib-Serializable-Interface.html#json-serializable-default-serialize-property"/>
- <function name="json_serializable_default_deserialize_property ()" link="json-glib-Serializable-Interface.html#json-serializable-default-deserialize-property"/>
- <function name="JsonBoxedSerializeFunc ()" link="json-glib-Boxed-Types-Serialization.html#JsonBoxedSerializeFunc"/>
- <function name="JsonBoxedDeserializeFunc ()" link="json-glib-Boxed-Types-Serialization.html#JsonBoxedDeserializeFunc"/>
- <function name="json_boxed_register_serialize_func ()" link="json-glib-Boxed-Types-Serialization.html#json-boxed-register-serialize-func"/>
- <function name="json_boxed_register_deserialize_func ()" link="json-glib-Boxed-Types-Serialization.html#json-boxed-register-deserialize-func"/>
- <function name="json_boxed_can_serialize ()" link="json-glib-Boxed-Types-Serialization.html#json-boxed-can-serialize"/>
- <function name="json_boxed_can_deserialize ()" link="json-glib-Boxed-Types-Serialization.html#json-boxed-can-deserialize"/>
- <function name="json_boxed_serialize ()" link="json-glib-Boxed-Types-Serialization.html#json-boxed-serialize"/>
- <function name="json_boxed_deserialize ()" link="json-glib-Boxed-Types-Serialization.html#json-boxed-deserialize"/>
- <function name="JSON_MAJOR_VERSION" link="json-glib-Versioning-information.html#JSON-MAJOR-VERSION:CAPS"/>
- <function name="JSON_MINOR_VERSION" link="json-glib-Versioning-information.html#JSON-MINOR-VERSION:CAPS"/>
- <function name="JSON_MICRO_VERSION" link="json-glib-Versioning-information.html#JSON-MICRO-VERSION:CAPS"/>
- <function name="JSON_VERSION" link="json-glib-Versioning-information.html#JSON-VERSION:CAPS"/>
- <function name="JSON_VERSION_S" link="json-glib-Versioning-information.html#JSON-VERSION-S:CAPS"/>
- <function name="JSON_VERSION_HEX" link="json-glib-Versioning-information.html#JSON-VERSION-HEX:CAPS"/>
- <function name="JSON_CHECK_VERSION()" link="json-glib-Versioning-information.html#JSON-CHECK-VERSION:CAPS"/>
- </functions>
-</book>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8" standalone="no"?>
-<!DOCTYPE book PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "">
-<book xmlns="http://www.devhelp.net/book" title="JSON-GLib Reference Manual" link="index.html" author="" name="json-glib" version="2" language="c">
- <chapters>
- <sub name="JSON-GLib Overview" link="json-glib.html"/>
- <sub name="JSON-GLib Reference" link="json-base.html">
- <sub name="Data Types" link="ch01.html">
- <sub name="JSON Node" link="json-glib-JSON-Node.html"/>
- <sub name="JSON Array" link="json-glib-JSON-Array.html"/>
- <sub name="JSON Object" link="json-glib-JSON-Object.html"/>
- </sub>
- </sub>
- <sub name="Reading and writing" link="json-streams.html">
- <sub name="Parser" link="ch02.html">
- <sub name="JsonParser" link="JsonParser.html"/>
- </sub>
- <sub name="Generator" link="ch03.html">
- <sub name="JsonGenerator" link="JsonGenerator.html"/>
- </sub>
- </sub>
- <sub name="JSON-GLib Advanced API" link="json-advanced.html">
- <sub name="GObject Serialization" link="json-glib-GObject-Serialization.html"/>
- <sub name="Serializable Interface" link="json-glib-Serializable-Interface.html"/>
- <sub name="Boxed Types Serialization" link="json-glib-Boxed-Types-Serialization.html"/>
- </sub>
- <sub name="JSON-GLib Additional Reference" link="json-tools.html">
- <sub name="Versioning information" link="json-glib-Versioning-information.html"/>
- <sub name="Object Hierarchy" link="ch04.html"/>
- </sub>
- <sub name="Index" link="ix01.html"/>
- <sub name="Index of deprecated symbols" link="ix02.html"/>
- <sub name="Index of new symbols in 0.4" link="ix03.html"/>
- <sub name="Index of new symbols in 0.6" link="ix04.html"/>
- <sub name="Index of new symbols in 0.8" link="ix05.html"/>
- <sub name="Index of new symbols in 0.10" link="ix06.html"/>
- <sub name="Annotation Glossary" link="annotation-glossary.html"/>
- <sub name="License" link="license.html"/>
- </chapters>
- <functions>
- <keyword type="enum" name="enum JsonNodeType" link="json-glib-JSON-Node.html#JsonNodeType"/>
- <keyword type="struct" name="JsonNode" link="json-glib-JSON-Node.html#JsonNode"/>
- <keyword type="macro" name="JSON_NODE_TYPE()" link="json-glib-JSON-Node.html#JSON-NODE-TYPE:CAPS"/>
- <keyword type="macro" name="JSON_NODE_HOLDS()" link="json-glib-JSON-Node.html#JSON-NODE-HOLDS:CAPS" since="0.10"/>
- <keyword type="macro" name="JSON_NODE_HOLDS_VALUE()" link="json-glib-JSON-Node.html#JSON-NODE-HOLDS-VALUE:CAPS" since="0.10"/>
- <keyword type="macro" name="JSON_NODE_HOLDS_OBJECT()" link="json-glib-JSON-Node.html#JSON-NODE-HOLDS-OBJECT:CAPS" since="0.10"/>
- <keyword type="macro" name="JSON_NODE_HOLDS_ARRAY()" link="json-glib-JSON-Node.html#JSON-NODE-HOLDS-ARRAY:CAPS" since="0.10"/>
- <keyword type="macro" name="JSON_NODE_HOLDS_NULL()" link="json-glib-JSON-Node.html#JSON-NODE-HOLDS-NULL:CAPS" since="0.10"/>
- <keyword type="function" name="json_node_new ()" link="json-glib-JSON-Node.html#json-node-new"/>
- <keyword type="function" name="json_node_copy ()" link="json-glib-JSON-Node.html#json-node-copy"/>
- <keyword type="function" name="json_node_free ()" link="json-glib-JSON-Node.html#json-node-free"/>
- <keyword type="function" name="json_node_set_array ()" link="json-glib-JSON-Node.html#json-node-set-array"/>
- <keyword type="function" name="json_node_take_array ()" link="json-glib-JSON-Node.html#json-node-take-array"/>
- <keyword type="function" name="json_node_get_array ()" link="json-glib-JSON-Node.html#json-node-get-array"/>
- <keyword type="function" name="json_node_dup_array ()" link="json-glib-JSON-Node.html#json-node-dup-array"/>
- <keyword type="function" name="json_node_set_object ()" link="json-glib-JSON-Node.html#json-node-set-object"/>
- <keyword type="function" name="json_node_take_object ()" link="json-glib-JSON-Node.html#json-node-take-object"/>
- <keyword type="function" name="json_node_get_object ()" link="json-glib-JSON-Node.html#json-node-get-object"/>
- <keyword type="function" name="json_node_dup_object ()" link="json-glib-JSON-Node.html#json-node-dup-object"/>
- <keyword type="function" name="json_node_set_value ()" link="json-glib-JSON-Node.html#json-node-set-value"/>
- <keyword type="function" name="json_node_get_value ()" link="json-glib-JSON-Node.html#json-node-get-value"/>
- <keyword type="function" name="json_node_set_boolean ()" link="json-glib-JSON-Node.html#json-node-set-boolean"/>
- <keyword type="function" name="json_node_get_boolean ()" link="json-glib-JSON-Node.html#json-node-get-boolean"/>
- <keyword type="function" name="json_node_set_double ()" link="json-glib-JSON-Node.html#json-node-set-double"/>
- <keyword type="function" name="json_node_get_double ()" link="json-glib-JSON-Node.html#json-node-get-double"/>
- <keyword type="function" name="json_node_set_int ()" link="json-glib-JSON-Node.html#json-node-set-int"/>
- <keyword type="function" name="json_node_get_int ()" link="json-glib-JSON-Node.html#json-node-get-int"/>
- <keyword type="function" name="json_node_set_string ()" link="json-glib-JSON-Node.html#json-node-set-string"/>
- <keyword type="function" name="json_node_get_string ()" link="json-glib-JSON-Node.html#json-node-get-string"/>
- <keyword type="function" name="json_node_dup_string ()" link="json-glib-JSON-Node.html#json-node-dup-string"/>
- <keyword type="function" name="json_node_set_parent ()" link="json-glib-JSON-Node.html#json-node-set-parent" since="0.8"/>
- <keyword type="function" name="json_node_get_parent ()" link="json-glib-JSON-Node.html#json-node-get-parent"/>
- <keyword type="function" name="json_node_type_name ()" link="json-glib-JSON-Node.html#json-node-type-name"/>
- <keyword type="function" name="json_node_get_value_type ()" link="json-glib-JSON-Node.html#json-node-get-value-type" since="0.4"/>
- <keyword type="function" name="json_node_get_node_type ()" link="json-glib-JSON-Node.html#json-node-get-node-type" since="0.8"/>
- <keyword type="function" name="json_node_is_null ()" link="json-glib-JSON-Node.html#json-node-is-null" since="0.8"/>
- <keyword type="struct" name="JsonArray" link="json-glib-JSON-Array.html#JsonArray"/>
- <keyword type="function" name="json_array_new ()" link="json-glib-JSON-Array.html#json-array-new"/>
- <keyword type="function" name="json_array_sized_new ()" link="json-glib-JSON-Array.html#json-array-sized-new"/>
- <keyword type="function" name="json_array_ref ()" link="json-glib-JSON-Array.html#json-array-ref"/>
- <keyword type="function" name="json_array_unref ()" link="json-glib-JSON-Array.html#json-array-unref"/>
- <keyword type="function" name="json_array_add_element ()" link="json-glib-JSON-Array.html#json-array-add-element"/>
- <keyword type="function" name="json_array_get_element ()" link="json-glib-JSON-Array.html#json-array-get-element"/>
- <keyword type="function" name="json_array_dup_element ()" link="json-glib-JSON-Array.html#json-array-dup-element" since="0.6"/>
- <keyword type="function" name="json_array_get_elements ()" link="json-glib-JSON-Array.html#json-array-get-elements"/>
- <keyword type="function" name="json_array_get_length ()" link="json-glib-JSON-Array.html#json-array-get-length"/>
- <keyword type="function" name="json_array_remove_element ()" link="json-glib-JSON-Array.html#json-array-remove-element"/>
- <keyword type="function" name="JsonArrayForeach ()" link="json-glib-JSON-Array.html#JsonArrayForeach" since="0.8"/>
- <keyword type="function" name="json_array_foreach_element ()" link="json-glib-JSON-Array.html#json-array-foreach-element" since="0.8"/>
- <keyword type="function" name="json_array_add_array_element ()" link="json-glib-JSON-Array.html#json-array-add-array-element" since="0.8"/>
- <keyword type="function" name="json_array_get_array_element ()" link="json-glib-JSON-Array.html#json-array-get-array-element" since="0.8"/>
- <keyword type="function" name="json_array_add_boolean_element ()" link="json-glib-JSON-Array.html#json-array-add-boolean-element" since="0.8"/>
- <keyword type="function" name="json_array_get_boolean_element ()" link="json-glib-JSON-Array.html#json-array-get-boolean-element" since="0.8"/>
- <keyword type="function" name="json_array_add_double_element ()" link="json-glib-JSON-Array.html#json-array-add-double-element" since="0.8"/>
- <keyword type="function" name="json_array_get_double_element ()" link="json-glib-JSON-Array.html#json-array-get-double-element" since="0.8"/>
- <keyword type="function" name="json_array_add_int_element ()" link="json-glib-JSON-Array.html#json-array-add-int-element" since="0.8"/>
- <keyword type="function" name="json_array_get_int_element ()" link="json-glib-JSON-Array.html#json-array-get-int-element" since="0.8"/>
- <keyword type="function" name="json_array_add_null_element ()" link="json-glib-JSON-Array.html#json-array-add-null-element" since="0.8"/>
- <keyword type="function" name="json_array_get_null_element ()" link="json-glib-JSON-Array.html#json-array-get-null-element" since="0.8"/>
- <keyword type="function" name="json_array_add_object_element ()" link="json-glib-JSON-Array.html#json-array-add-object-element" since="0.8"/>
- <keyword type="function" name="json_array_get_object_element ()" link="json-glib-JSON-Array.html#json-array-get-object-element" since="0.8"/>
- <keyword type="function" name="json_array_add_string_element ()" link="json-glib-JSON-Array.html#json-array-add-string-element" since="0.8"/>
- <keyword type="function" name="json_array_get_string_element ()" link="json-glib-JSON-Array.html#json-array-get-string-element" since="0.8"/>
- <keyword type="struct" name="JsonObject" link="json-glib-JSON-Object.html#JsonObject"/>
- <keyword type="function" name="json_object_new ()" link="json-glib-JSON-Object.html#json-object-new"/>
- <keyword type="function" name="json_object_ref ()" link="json-glib-JSON-Object.html#json-object-ref"/>
- <keyword type="function" name="json_object_unref ()" link="json-glib-JSON-Object.html#json-object-unref"/>
- <keyword type="function" name="json_object_add_member ()" link="json-glib-JSON-Object.html#json-object-add-member" deprecated="0.8: Use json_object_set_member() instead"/>
- <keyword type="function" name="json_object_set_member ()" link="json-glib-JSON-Object.html#json-object-set-member" since="0.8"/>
- <keyword type="function" name="json_object_has_member ()" link="json-glib-JSON-Object.html#json-object-has-member"/>
- <keyword type="function" name="json_object_get_member ()" link="json-glib-JSON-Object.html#json-object-get-member"/>
- <keyword type="function" name="json_object_dup_member ()" link="json-glib-JSON-Object.html#json-object-dup-member" since="0.6"/>
- <keyword type="function" name="json_object_get_members ()" link="json-glib-JSON-Object.html#json-object-get-members"/>
- <keyword type="function" name="json_object_get_values ()" link="json-glib-JSON-Object.html#json-object-get-values"/>
- <keyword type="function" name="json_object_get_size ()" link="json-glib-JSON-Object.html#json-object-get-size"/>
- <keyword type="function" name="json_object_remove_member ()" link="json-glib-JSON-Object.html#json-object-remove-member"/>
- <keyword type="function" name="JsonObjectForeach ()" link="json-glib-JSON-Object.html#JsonObjectForeach" since="0.8"/>
- <keyword type="function" name="json_object_foreach_member ()" link="json-glib-JSON-Object.html#json-object-foreach-member" since="0.8"/>
- <keyword type="function" name="json_object_set_array_member ()" link="json-glib-JSON-Object.html#json-object-set-array-member" since="0.8"/>
- <keyword type="function" name="json_object_get_array_member ()" link="json-glib-JSON-Object.html#json-object-get-array-member" since="0.8"/>
- <keyword type="function" name="json_object_set_boolean_member ()" link="json-glib-JSON-Object.html#json-object-set-boolean-member" since="0.8"/>
- <keyword type="function" name="json_object_get_boolean_member ()" link="json-glib-JSON-Object.html#json-object-get-boolean-member" since="0.8"/>
- <keyword type="function" name="json_object_set_double_member ()" link="json-glib-JSON-Object.html#json-object-set-double-member" since="0.8"/>
- <keyword type="function" name="json_object_get_double_member ()" link="json-glib-JSON-Object.html#json-object-get-double-member" since="0.8"/>
- <keyword type="function" name="json_object_set_int_member ()" link="json-glib-JSON-Object.html#json-object-set-int-member" since="0.8"/>
- <keyword type="function" name="json_object_get_int_member ()" link="json-glib-JSON-Object.html#json-object-get-int-member" since="0.8"/>
- <keyword type="function" name="json_object_set_null_member ()" link="json-glib-JSON-Object.html#json-object-set-null-member" since="0.8"/>
- <keyword type="function" name="json_object_get_null_member ()" link="json-glib-JSON-Object.html#json-object-get-null-member" since="0.8"/>
- <keyword type="function" name="json_object_set_object_member ()" link="json-glib-JSON-Object.html#json-object-set-object-member" since="0.8"/>
- <keyword type="function" name="json_object_get_object_member ()" link="json-glib-JSON-Object.html#json-object-get-object-member" since="0.8"/>
- <keyword type="function" name="json_object_set_string_member ()" link="json-glib-JSON-Object.html#json-object-set-string-member" since="0.8"/>
- <keyword type="function" name="json_object_get_string_member ()" link="json-glib-JSON-Object.html#json-object-get-string-member" since="0.8"/>
- <keyword type="enum" name="enum JsonParserError" link="JsonParser.html#JsonParserError"/>
- <keyword type="struct" name="JsonParser" link="JsonParser.html#JsonParser-struct"/>
- <keyword type="struct" name="JsonParserClass" link="JsonParser.html#JsonParserClass"/>
- <keyword type="function" name="json_parser_new ()" link="JsonParser.html#json-parser-new"/>
- <keyword type="function" name="json_parser_load_from_file ()" link="JsonParser.html#json-parser-load-from-file"/>
- <keyword type="function" name="json_parser_load_from_data ()" link="JsonParser.html#json-parser-load-from-data"/>
- <keyword type="function" name="json_parser_get_root ()" link="JsonParser.html#json-parser-get-root"/>
- <keyword type="function" name="json_parser_get_current_line ()" link="JsonParser.html#json-parser-get-current-line"/>
- <keyword type="function" name="json_parser_get_current_pos ()" link="JsonParser.html#json-parser-get-current-pos"/>
- <keyword type="function" name="json_parser_has_assignment ()" link="JsonParser.html#json-parser-has-assignment" since="0.4"/>
- <keyword type="signal" name="The "array-element" signal" link="JsonParser.html#JsonParser-array-element"/>
- <keyword type="signal" name="The "array-end" signal" link="JsonParser.html#JsonParser-array-end"/>
- <keyword type="signal" name="The "array-start" signal" link="JsonParser.html#JsonParser-array-start"/>
- <keyword type="signal" name="The "error" signal" link="JsonParser.html#JsonParser-error"/>
- <keyword type="signal" name="The "object-end" signal" link="JsonParser.html#JsonParser-object-end"/>
- <keyword type="signal" name="The "object-member" signal" link="JsonParser.html#JsonParser-object-member"/>
- <keyword type="signal" name="The "object-start" signal" link="JsonParser.html#JsonParser-object-start"/>
- <keyword type="signal" name="The "parse-end" signal" link="JsonParser.html#JsonParser-parse-end"/>
- <keyword type="signal" name="The "parse-start" signal" link="JsonParser.html#JsonParser-parse-start"/>
- <keyword type="struct" name="JsonGenerator" link="JsonGenerator.html#JsonGenerator-struct"/>
- <keyword type="struct" name="JsonGeneratorClass" link="JsonGenerator.html#JsonGeneratorClass"/>
- <keyword type="function" name="json_generator_new ()" link="JsonGenerator.html#json-generator-new"/>
- <keyword type="function" name="json_generator_to_file ()" link="JsonGenerator.html#json-generator-to-file"/>
- <keyword type="function" name="json_generator_to_data ()" link="JsonGenerator.html#json-generator-to-data"/>
- <keyword type="function" name="json_generator_set_root ()" link="JsonGenerator.html#json-generator-set-root"/>
- <keyword type="property" name="The "indent" property" link="JsonGenerator.html#JsonGenerator--indent"/>
- <keyword type="property" name="The "indent-char" property" link="JsonGenerator.html#JsonGenerator--indent-char"/>
- <keyword type="property" name="The "pretty" property" link="JsonGenerator.html#JsonGenerator--pretty"/>
- <keyword type="property" name="The "root" property" link="JsonGenerator.html#JsonGenerator--root"/>
- <keyword type="function" name="json_gobject_serialize ()" link="json-glib-GObject-Serialization.html#json-gobject-serialize" since="0.10"/>
- <keyword type="function" name="json_gobject_deserialize ()" link="json-glib-GObject-Serialization.html#json-gobject-deserialize" since="0.10"/>
- <keyword type="function" name="json_gobject_to_data ()" link="json-glib-GObject-Serialization.html#json-gobject-to-data" since="0.10"/>
- <keyword type="function" name="json_gobject_from_data ()" link="json-glib-GObject-Serialization.html#json-gobject-from-data" since="0.10"/>
- <keyword type="function" name="json_construct_gobject ()" link="json-glib-GObject-Serialization.html#json-construct-gobject" deprecated="0.10: Use json_gobject_from_data() instead" since="0.4"/>
- <keyword type="function" name="json_serialize_gobject ()" link="json-glib-GObject-Serialization.html#json-serialize-gobject" deprecated="0.10: Use json_gobject_to_data() instead"/>
- <keyword type="struct" name="JsonSerializableIface" link="json-glib-Serializable-Interface.html#JsonSerializableIface"/>
- <keyword type="function" name="json_serializable_serialize_property ()" link="json-glib-Serializable-Interface.html#json-serializable-serialize-property"/>
- <keyword type="function" name="json_serializable_deserialize_property ()" link="json-glib-Serializable-Interface.html#json-serializable-deserialize-property"/>
- <keyword type="function" name="json_serializable_default_serialize_property ()" link="json-glib-Serializable-Interface.html#json-serializable-default-serialize-property" since="0.10"/>
- <keyword type="function" name="json_serializable_default_deserialize_property ()" link="json-glib-Serializable-Interface.html#json-serializable-default-deserialize-property" since="0.10"/>
- <keyword type="function" name="JsonBoxedSerializeFunc ()" link="json-glib-Boxed-Types-Serialization.html#JsonBoxedSerializeFunc" since="0.10"/>
- <keyword type="function" name="JsonBoxedDeserializeFunc ()" link="json-glib-Boxed-Types-Serialization.html#JsonBoxedDeserializeFunc" since="0.10"/>
- <keyword type="function" name="json_boxed_register_serialize_func ()" link="json-glib-Boxed-Types-Serialization.html#json-boxed-register-serialize-func" since="0.10"/>
- <keyword type="function" name="json_boxed_register_deserialize_func ()" link="json-glib-Boxed-Types-Serialization.html#json-boxed-register-deserialize-func" since="0.10"/>
- <keyword type="function" name="json_boxed_can_serialize ()" link="json-glib-Boxed-Types-Serialization.html#json-boxed-can-serialize" since="0.10"/>
- <keyword type="function" name="json_boxed_can_deserialize ()" link="json-glib-Boxed-Types-Serialization.html#json-boxed-can-deserialize" since="0.10"/>
- <keyword type="function" name="json_boxed_serialize ()" link="json-glib-Boxed-Types-Serialization.html#json-boxed-serialize" since="0.10"/>
- <keyword type="function" name="json_boxed_deserialize ()" link="json-glib-Boxed-Types-Serialization.html#json-boxed-deserialize" since="0.10"/>
- <keyword type="macro" name="JSON_MAJOR_VERSION" link="json-glib-Versioning-information.html#JSON-MAJOR-VERSION:CAPS"/>
- <keyword type="macro" name="JSON_MINOR_VERSION" link="json-glib-Versioning-information.html#JSON-MINOR-VERSION:CAPS"/>
- <keyword type="macro" name="JSON_MICRO_VERSION" link="json-glib-Versioning-information.html#JSON-MICRO-VERSION:CAPS"/>
- <keyword type="macro" name="JSON_VERSION" link="json-glib-Versioning-information.html#JSON-VERSION:CAPS"/>
- <keyword type="macro" name="JSON_VERSION_S" link="json-glib-Versioning-information.html#JSON-VERSION-S:CAPS"/>
- <keyword type="macro" name="JSON_VERSION_HEX" link="json-glib-Versioning-information.html#JSON-VERSION-HEX:CAPS"/>
- <keyword type="macro" name="JSON_CHECK_VERSION()" link="json-glib-Versioning-information.html#JSON-CHECK-VERSION:CAPS"/>
- <keyword type="constant" name="JSON_NODE_OBJECT" link="json-glib-JSON-Node.html#JSON-NODE-OBJECT:CAPS"/>
- <keyword type="constant" name="JSON_NODE_ARRAY" link="json-glib-JSON-Node.html#JSON-NODE-ARRAY:CAPS"/>
- <keyword type="constant" name="JSON_NODE_VALUE" link="json-glib-JSON-Node.html#JSON-NODE-VALUE:CAPS"/>
- <keyword type="constant" name="JSON_NODE_NULL" link="json-glib-JSON-Node.html#JSON-NODE-NULL:CAPS"/>
- <keyword type="constant" name="JSON_PARSER_ERROR_PARSE" link="JsonParser.html#JSON-PARSER-ERROR-PARSE:CAPS"/>
- <keyword type="constant" name="JSON_PARSER_ERROR_UNKNOWN" link="JsonParser.html#JSON-PARSER-ERROR-UNKNOWN:CAPS"/>
- </functions>
-</book>
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Part I. JSON-GLib Overview</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="up" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="prev" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="next" href="json-base.html" title="Part II. JSON-GLib Reference">
-<meta name="generator" content="GTK-Doc V1.13 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="part" href="json-glib.html" title="Part I. JSON-GLib Overview">
-<link rel="part" href="json-base.html" title="Part II. JSON-GLib Reference">
-<link rel="chapter" href="ch01.html" title="Data Types">
-<link rel="part" href="json-streams.html" title="Part III. Reading and writing">
-<link rel="chapter" href="ch02.html" title="Parser">
-<link rel="chapter" href="ch03.html" title="Generator">
-<link rel="part" href="json-advanced.html" title="Part IV. JSON-GLib Advanced API">
-<link rel="part" href="json-tools.html" title="Part V. JSON-GLib Additional Reference">
-<link rel="chapter" href="ch04.html" title="Object Hierarchy">
-<link rel="index" href="ix01.html" title="Index">
-<link rel="index" href="ix02.html" title="Index of deprecated symbols">
-<link rel="index" href="ix03.html" title="Index of new symbols in 0.4">
-<link rel="index" href="ix04.html" title="Index of new symbols in 0.6">
-<link rel="index" href="ix05.html" title="Index of new symbols in 0.8">
-<link rel="index" href="ix06.html" title="Index of new symbols in 0.10">
-<link rel="glossary" href="annotation-glossary.html" title="Annotation Glossary">
-<link rel="appendix" href="license.html" title="Appendix A. License">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="index.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td> </td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<th width="100%" align="center">JSON-GLib Reference Manual</th>
-<td><a accesskey="n" href="json-base.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="part" title="Part I. JSON-GLib Overview">
-<div class="titlepage"><div><div><h1 class="title">
-<a name="json-glib"></a>Part I. JSON-GLib Overview</h1></div></div></div>
-<div class="partintro" title="JSON-GLib Overview">
-<div></div>
-<p>
- JSON-GLib is a library aimed at providing an API for efficient parsing
- and writing of JSON (JavaScript Object Notation) streams, using GLib's
- data types and API.
- </p>
-</div>
-</div>
-<div class="footer">
-<hr>
- Generated by GTK-Doc V1.13</div>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Part III. Reading and writing</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="up" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="prev" href="json-glib-JSON-Object.html" title="JSON Object">
-<link rel="next" href="ch02.html" title="Parser">
-<meta name="generator" content="GTK-Doc V1.13 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="part" href="json-glib.html" title="Part I. JSON-GLib Overview">
-<link rel="part" href="json-base.html" title="Part II. JSON-GLib Reference">
-<link rel="chapter" href="ch01.html" title="Data Types">
-<link rel="part" href="json-streams.html" title="Part III. Reading and writing">
-<link rel="chapter" href="ch02.html" title="Parser">
-<link rel="chapter" href="ch03.html" title="Generator">
-<link rel="part" href="json-advanced.html" title="Part IV. JSON-GLib Advanced API">
-<link rel="part" href="json-tools.html" title="Part V. JSON-GLib Additional Reference">
-<link rel="chapter" href="ch04.html" title="Object Hierarchy">
-<link rel="index" href="ix01.html" title="Index">
-<link rel="index" href="ix02.html" title="Index of deprecated symbols">
-<link rel="index" href="ix03.html" title="Index of new symbols in 0.4">
-<link rel="index" href="ix04.html" title="Index of new symbols in 0.6">
-<link rel="index" href="ix05.html" title="Index of new symbols in 0.8">
-<link rel="index" href="ix06.html" title="Index of new symbols in 0.10">
-<link rel="glossary" href="annotation-glossary.html" title="Annotation Glossary">
-<link rel="appendix" href="license.html" title="Appendix A. License">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="json-glib-JSON-Object.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td> </td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<th width="100%" align="center">JSON-GLib Reference Manual</th>
-<td><a accesskey="n" href="ch02.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="part" title="Part III. Reading and writing">
-<div class="titlepage"><div><div><h1 class="title">
-<a name="json-streams"></a>Part III. Reading and writing</h1></div></div></div>
-<div class="partintro" title="Reading and writing">
-<div></div>
-<p>
- JSON-GLib provides a parser object to read any valid JSON data
- stream and build the data object model in memory.
- </p>
-<div class="toc">
-<p><b>Table of Contents</b></p>
-<dl>
-<dt><span class="chapter"><a href="ch02.html">Parser</a></span></dt>
-<dd><dl><dt>
-<span class="refentrytitle"><a href="JsonParser.html">JsonParser</a></span><span class="refpurpose"> — Parse JSON data streams</span>
-</dt></dl></dd>
-<dt><span class="chapter"><a href="ch03.html">Generator</a></span></dt>
-<dd><dl><dt>
-<span class="refentrytitle"><a href="JsonGenerator.html">JsonGenerator</a></span><span class="refpurpose"> — Generates JSON data streams</span>
-</dt></dl></dd>
-</dl>
-</div>
-</div>
-</div>
-<div class="footer">
-<hr>
- Generated by GTK-Doc V1.13</div>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Part V. JSON-GLib Additional Reference</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="up" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="prev" href="json-glib-Boxed-Types-Serialization.html" title="Boxed Types Serialization">
-<link rel="next" href="json-glib-Versioning-information.html" title="Versioning information">
-<meta name="generator" content="GTK-Doc V1.13 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="part" href="json-glib.html" title="Part I. JSON-GLib Overview">
-<link rel="part" href="json-base.html" title="Part II. JSON-GLib Reference">
-<link rel="chapter" href="ch01.html" title="Data Types">
-<link rel="part" href="json-streams.html" title="Part III. Reading and writing">
-<link rel="chapter" href="ch02.html" title="Parser">
-<link rel="chapter" href="ch03.html" title="Generator">
-<link rel="part" href="json-advanced.html" title="Part IV. JSON-GLib Advanced API">
-<link rel="part" href="json-tools.html" title="Part V. JSON-GLib Additional Reference">
-<link rel="chapter" href="ch04.html" title="Object Hierarchy">
-<link rel="index" href="ix01.html" title="Index">
-<link rel="index" href="ix02.html" title="Index of deprecated symbols">
-<link rel="index" href="ix03.html" title="Index of new symbols in 0.4">
-<link rel="index" href="ix04.html" title="Index of new symbols in 0.6">
-<link rel="index" href="ix05.html" title="Index of new symbols in 0.8">
-<link rel="index" href="ix06.html" title="Index of new symbols in 0.10">
-<link rel="glossary" href="annotation-glossary.html" title="Annotation Glossary">
-<link rel="appendix" href="license.html" title="Appendix A. License">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="json-glib-Boxed-Types-Serialization.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td> </td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<th width="100%" align="center">JSON-GLib Reference Manual</th>
-<td><a accesskey="n" href="json-glib-Versioning-information.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="part" title="Part V. JSON-GLib Additional Reference">
-<div class="titlepage"><div><div><h1 class="title">
-<a name="json-tools"></a>Part V. JSON-GLib Additional Reference</h1></div></div></div>
-<div class="toc">
-<p><b>Table of Contents</b></p>
-<dl>
-<dt>
-<span class="refentrytitle"><a href="json-glib-Versioning-information.html">Versioning information</a></span><span class="refpurpose"> — JSON-GLib version checking</span>
-</dt>
-<dt><span class="chapter"><a href="ch04.html">Object Hierarchy</a></span></dt>
-</dl>
-</div>
-</div>
-<div class="footer">
-<hr>
- Generated by GTK-Doc V1.13</div>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Appendix A. License</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="up" href="index.html" title="JSON-GLib Reference Manual">
-<link rel="prev" href="annotation-glossary.html" title="Annotation Glossary">
-<meta name="generator" content="GTK-Doc V1.13 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="part" href="json-glib.html" title="Part I. JSON-GLib Overview">
-<link rel="part" href="json-base.html" title="Part II. JSON-GLib Reference">
-<link rel="chapter" href="ch01.html" title="Data Types">
-<link rel="part" href="json-streams.html" title="Part III. Reading and writing">
-<link rel="chapter" href="ch02.html" title="Parser">
-<link rel="chapter" href="ch03.html" title="Generator">
-<link rel="part" href="json-advanced.html" title="Part IV. JSON-GLib Advanced API">
-<link rel="part" href="json-tools.html" title="Part V. JSON-GLib Additional Reference">
-<link rel="chapter" href="ch04.html" title="Object Hierarchy">
-<link rel="index" href="ix01.html" title="Index">
-<link rel="index" href="ix02.html" title="Index of deprecated symbols">
-<link rel="index" href="ix03.html" title="Index of new symbols in 0.4">
-<link rel="index" href="ix04.html" title="Index of new symbols in 0.6">
-<link rel="index" href="ix05.html" title="Index of new symbols in 0.8">
-<link rel="index" href="ix06.html" title="Index of new symbols in 0.10">
-<link rel="glossary" href="annotation-glossary.html" title="Annotation Glossary">
-<link rel="appendix" href="license.html" title="Appendix A. License">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="annotation-glossary.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td> </td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<th width="100%" align="center">JSON-GLib Reference Manual</th>
-<td> </td>
-</tr></table>
-<div class="appendix" title="Appendix A. License">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="license"></a>Appendix A. License</h2></div></div></div>
-<p>
- This library is free software; you can redistribute it and/or
- modify it under the terms of the <em class="citetitle">GNU Library General
- Public License</em> as published by the Free Software
- Foundation; either version 2 of the License, or (at your option)
- any later version.
- </p>
-<p>
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- <em class="citetitle">GNU Library General Public License</em> for
- more details.
- </p>
-<p>
- You may obtain a copy of the <em class="citetitle">GNU Library General
- Public License</em> from the Free Software Foundation by
- visiting <a class="ulink" href="http://www.fsf.org" target="_top">their Web
- site</a> or by writing to:
-
- </p>
-<div class="address"><p><br>
- Free Software Foundation, Inc.<br>
- <span class="street">59 Temple Place</span> - Suite 330<br>
- <span class="city">Boston</span>, <span class="state">MA</span> <span class="postcode">02111-1307</span><br>
- <span class="country">USA</span><br>
- </p></div>
-<p>
- </p>
-</div>
-<div class="footer">
-<hr>
- Generated by GTK-Doc V1.13</div>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-.synopsis, .classsynopsis
-{
- /* tango:aluminium 1/2 */
- background: #eeeeec;
- border: solid 1px #d3d7cf;
- padding: 0.5em;
-}
-.programlisting
-{
- /* tango:sky blue 0/1 */
- background: #e6f3ff;
- border: solid 1px #729fcf;
- padding: 0.5em;
-}
-.variablelist
-{
- padding: 4px;
- margin-left: 3em;
-}
-.variablelist td:first-child
-{
- vertical-align: top;
-}
-
-@media screen {
- sup a.footnote
- {
- position: relative;
- top: 0em ! important;
-
- }
- /* this is needed so that the local anchors are displayed below the naviagtion */
- div.footnote a[name], div.refnamediv a[name], div.refsect1 a[name], div.refsect2 a[name], div.index a[name], div.glossary a[name], div.sect1 a[name]
- {
- position: relative;
- padding-top:4.5em;
- }
- /* this seems to be a bug in the xsl style sheets when generating indexes */
- div.index div.index
- {
- top: 0em;
- }
- /* make space for the fixed navigation bar and add space at the bottom so that
- * link targets appear somewhat close to top
- */
- body
- {
- padding-top: 3.2em;
- padding-bottom: 20em;
- }
- /* style and size the navigation bar */
- table.navigation#top
- {
- position: fixed;
- /* tango:scarlet red 0/1 */
- background: #ffe6e6;
- border: solid 1px #ef2929;
- margin-top: 0;
- margin-bottom: 0;
- top: 0;
- left: 0;
- height: 3em;
- z-index: 10;
- }
- .navigation a, .navigation a:visited
- {
- /* tango:scarlet red 3 */
- color: #a40000;
- }
- .navigation a:hover
- {
- /* tango:scarlet red 1 */
- color: #ef2929;
- }
- td.shortcuts
- {
- /* tango:scarlet red 1 */
- color: #ef2929;
- font-size: 80%;
- white-space: nowrap;
- }
-}
-@media print {
- table.navigation {
- visibility: collapse;
- display: none;
- }
- div.titlepage table.navigation {
- visibility: visible;
- display: table;
- /* tango:scarlet red 0/1 */
- background: #ffe6e6;
- border: solid 1px #ef2929;
- margin-top: 0;
- margin-bottom: 0;
- top: 0;
- left: 0;
- height: 3em;
- }
-}
-
-.navigation .title
-{
- font-size: 200%;
-}
-
-div.gallery-float
-{
- float: left;
- padding: 10px;
-}
-div.gallery-float img
-{
- border-style: none;
-}
-div.gallery-spacer
-{
- clear: both;
-}
-
-a, a:visited
-{
- text-decoration: none;
- /* tango:sky blue 2 */
- color: #3465a4;
-}
-a:hover
-{
- text-decoration: underline;
- /* tango:sky blue 1 */
- color: #729fcf;
-}
-
-div.table table
-{
- border-collapse: collapse;
- border-spacing: 0px;
- /* tango:aluminium 3 */
- border: solid 1px #babdb6;
-}
-
-div.table table td, div.table table th
-{
- /* tango:aluminium 3 */
- border: solid 1px #babdb6;
- padding: 3px;
- vertical-align: top;
-}
-
-div.table table th
-{
- /* tango:aluminium 2 */
- background-color: #d3d7cf;
-}
-
-hr
-{
- /* tango:aluminium 3 */
- color: #babdb6;
- background: #babdb6;
- border: none 0px;
- height: 1px;
- clear: both;
-}
-
-.footer
-{
- padding-top: 3.5em;
- /* tango:aluminium 3 */
- color: #babdb6;
- text-align: center;
- font-size: 80%;
-}
-
-.warning
-{
- /* tango:orange 0/1 */
- background: #ffeed9;
- border-color: #ffb04f;
-}
-.note
-{
- /* tango:chameleon 0/0.5 */
- background: #d8ffb2;
- border-color: #abf562;
-}
-.note, .warning
-{
- padding: 0.5em;
- border-width: 1px;
- border-style: solid;
-}
-.note h3, .warning h3
-{
- margin-top: 0.0em
-}
-.note p, .warning p
-{
- margin-bottom: 0.0em
-}
-
-/* blob links */
-h2 .extralinks, h3 .extralinks
-{
- float: right;
- /* tango:aluminium 3 */
- color: #babdb6;
- font-size: 80%;
- font-weight: normal;
-}
-
-/* code listings */
-
-.programlisting .cbracket { color: #a40000; } /* tango: scarlet red 3 */
-.programlisting .comment { color: #a1a39d; } /* tango: aluminium 4 */
-.programlisting .function { color: #000000; font-weight: bold; }
-.programlisting .function a { color: #11326b; font-weight: bold; } /* tango: sky blue 4 */
-.programlisting .keyword { color: #4e9a06; } /* tango: chameleon 3 */
-.programlisting .linenum { color: #babdb6; } /* tango: aluminium 3 */
-.programlisting .normal { color: #000000; }
-.programlisting .number { color: #75507b; } /* tango: plum 2 */
-.programlisting .preproc { color: #204a87; } /* tango: sky blue 3 */
-.programlisting .string { color: #c17d11; } /* tango: chocolate 2 */
-.programlisting .type { color: #000000; }
-.programlisting .type a { color: #11326b; } /* tango: sky blue 4 */
-.programlisting .symbol { color: #ce5c00; } /* tango: orange 3 */
-
-.listing_frame {
- /* tango:sky blue 1 */
- border: solid 1px #729fcf;
- padding: 0px;
-}
-
-.listing_lines, .listing_code {
- margin-top: 0px;
- margin-bottom: 0px;
- padding: 0.5em;
-}
-.listing_lines {
- /* tango:sky blue 0.5 */
- background: #a6c5e3;
- /* tango:aluminium 6 */
- color: #2e3436;
-}
-.listing_code {
- /* tango:sky blue 0 */
- background: #e6f3ff;
-}
-.listing_code .programlisting {
- /* override from previous */
- border: none 0px;
- padding: 0px;
-}
-.listing_lines pre, .listing_code pre {
- margin: 0px;
-}
-
</copyright>
<copyright>
- <year>2009</year>
+ <year>2009, 2010, 2011</year>
<holder>Intel Corporation</holder>
</copyright>
<chapter>
<title>Parser</title>
<xi:include href="xml/json-parser.xml"/>
+ <xi:include href="xml/json-reader.xml"/>
+ <xi:include href="xml/json-path.xml"/>
</chapter>
<chapter>
<title>Generator</title>
<xi:include href="xml/json-generator.xml"/>
+ <xi:include href="xml/json-builder.xml"/>
</chapter>
</part>
<xi:include href="xml/json-gobject.xml"/>
<xi:include href="xml/json-serializable.xml"/>
<xi:include href="xml/json-gboxed.xml"/>
+ <xi:include href="xml/json-gvariant.xml"/>
+ <xi:include href="xml/json-version.xml"/>
</part>
<part id="json-tools">
<title>JSON-GLib Additional Reference</title>
- <xi:include href="xml/json-version.xml"/>
+ <chapter id="tools">
+ <title>JSON-GLib Tools</title>
+ <xi:include href="json-glib-format.xml"/>
+ <xi:include href="json-glib-validate.xml"/>
+ </chapter>
<chapter>
<title>Object Hierarchy</title>
<xi:include href="xml/api-index-0.10.xml"><xi:fallback/></xi:include>
</index>
- <xi:include href="xml/annotation-glossary.xml"/>
+ <index role="0.12">
+ <title>Index of new symbols in 0.12</title>
+ <xi:include href="xml/api-index-0.12.xml"><xi:fallback/></xi:include>
+ </index>
+
+ <index role="0.14">
+ <title>Index of new symbols in 0.14</title>
+ <xi:include href="xml/api-index-0.14.xml"><xi:fallback/></xi:include>
+ </index>
+
+ <xi:include href="xml/annotation-glossary.xml"><xi:fallback/></xi:include>
<appendix id="license">
<title>License</title>
--- /dev/null
+<refentry id="json-format-tool" lang="en">
+
+<refentryinfo>
+ <title>json-glib-format</title>
+ <productname>JSON-GLib</productname>
+ <authorgroup>
+ <author>
+ <contrib>Developer</contrib>
+ <firstname>Emmanuele</firstname>
+ <surname>Bassi</surname>
+ </author>
+ </authorgroup>
+</refentryinfo>
+
+<refmeta>
+ <refentrytitle>json-glib-format</refentrytitle>
+ <manvolnum>1</manvolnum>
+ <refmiscinfo class="manual">User Commands</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+ <refname>json-glib-format</refname>
+ <refpurpose>JSON-GLib formatting tool</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <cmdsynopsis>
+ <command>json-glib-format</command>
+ <arg><option>-h</option>, <option>--help</option></arg>
+ <arg><option>--prettify</option></arg>
+ <arg><option>--indent-spaces</option> <replaceable>SPACES</replaceable></arg>
+ <arg choice="plain">URI</arg>
+ <arg>
+ <arg choice="plain" rep="repeat">URI</arg>
+ </arg>
+ </cmdsynopsis>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+<para><command>json-glib-format</command> offers a simple command line
+interface to format JSON data. It reads a list or URIs, applies the
+spacified formatting rules on the JSON data, and outputs the formatted
+JSON to the standard output.</para>
+
+<para>
+The resources to operate on are specified by the <replaceable>URI</replaceable>
+argument.
+</para>
+
+</refsect1>
+
+<refsect1><title>Commands</title>
+<variablelist>
+
+<varlistentry>
+<term><option>-h</option>, <option>--help</option></term>
+<listitem><para>
+Prints help and exits.
+</para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><option>-p</option>, <option>--prettify</option></term>
+<listitem><para>
+Prettifies the output, by adding spaces and indentation. This argument is
+useful to improve the readability of JSON data, at the expense of its size.
+</para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><option>--indent-spaces</option> <replaceable>SPACES</replaceable></term>
+<listitem><para>
+Changes the number of spaces using to indent the JSON data from the default of 2.
+This argument is only considered if <option>--prettify</option> is used.
+</para></listitem>
+</varlistentry>
+
+</variablelist>
+
+</refsect1>
+</refentry>
JSON_NODE_HOLDS_OBJECT
JSON_NODE_HOLDS_ARRAY
JSON_NODE_HOLDS_NULL
+json_node_alloc
+json_node_init
+json_node_init_int
+json_node_init_double
+json_node_init_boolean
+json_node_init_string
+json_node_init_null
+json_node_init_object
+json_node_init_array
json_node_new
json_node_copy
json_node_free
json_node_is_null
<SUBSECTION Private>
+JSON_DEPRECATED
+JSON_DEPRECATED_FOR
JSON_TYPE_NODE
json_node_get_type
</SECTION>
json_parser_new
json_parser_load_from_file
json_parser_load_from_data
+json_parser_load_from_stream
+json_parser_load_from_stream_async
+json_parser_load_from_stream_finish
<SUBSECTION>
json_parser_get_root
JsonGenerator
JsonGeneratorClass
json_generator_new
+json_generator_set_root
+json_generator_get_root
+json_generator_set_pretty
+json_generator_get_pretty
+json_generator_set_indent
+json_generator_get_indent
+json_generator_set_indent_char
+json_generator_get_indent_char
+
+<SUBSECTION>
json_generator_to_file
json_generator_to_data
-json_generator_set_root
+json_generator_to_stream
<SUBSECTION Standard>
JSON_TYPE_GENERATOR
JsonSerializableIface
json_serializable_serialize_property
json_serializable_deserialize_property
+json_serializable_find_property
+json_serializable_get_property
+json_serializable_list_properties
+json_serializable_set_property
<SUBSECTION>
json_serializable_default_serialize_property
</SECTION>
<SECTION>
+<FILE>json-gvariant</FILE>
+
+<SUBSECTION>
+json_gvariant_serialize
+json_gvariant_serialize_data
+json_gvariant_deserialize
+json_gvariant_deserialize_data
+</SECTION>
+
+<SECTION>
<FILE>json-version</FILE>
<TITLE>Versioning information</TITLE>
JSON_MAJOR_VERSION
<SUBSECTION>
JSON_CHECK_VERSION
+JSON_VERSION_MIN_REQUIRED
+JSON_VERSION_MAX_ALLOWED
+
+<SUBSECTION Standard>
+JSON_VERSION_1_0
+JSON_VERSION_CUR_STABLE
+JSON_VERSION_PREV_STABLE
+JSON_AVAILABLE_IN_1_0
+JSON_DEPRECATED_IN_1_0
+JSON_DEPRECATED_IN_1_0_FOR
+
+<SUBSECTION Private>
+JSON_ENCODE_VERSION
+JSON_DEPRECATED
+JSON_DEPRECATED_FOR
+JSON_UNAVAILABLE
+_JSON_EXTERN
+</SECTION>
+
+<SECTION>
+<FILE>json-builder</FILE>
+JsonBuilder
+JsonBuilderClass
+json_builder_new
+json_builder_get_root
+json_builder_reset
+<SUBSECTION>
+json_builder_begin_array
+json_builder_end_array
+json_builder_begin_object
+json_builder_set_member_name
+json_builder_end_object
+<SUBSECTION>
+json_builder_add_value
+json_builder_add_int_value
+json_builder_add_double_value
+json_builder_add_boolean_value
+json_builder_add_string_value
+json_builder_add_null_value
+<SUBSECTION Standard>
+JSON_TYPE_BUILDER
+JSON_BUILDER
+JSON_BUILDER_CLASS
+JSON_IS_BUILDER
+JSON_IS_BUILDER_CLASS
+JSON_BUILDER_GET_CLASS
+<SUBSECTION Private>
+JsonBuilderPrivate
+json_builder_get_type
+</SECTION>
+
+<SECTION>
+<FILE>json-reader</FILE>
+JsonReader
+JsonReaderClass
+json_reader_new
+json_reader_set_root
+<SUBSECTION>
+json_reader_read_element
+json_reader_end_element
+json_reader_is_array
+json_reader_count_elements
+<SUBSECTION>
+json_reader_read_member
+json_reader_end_member
+json_reader_is_object
+json_reader_count_members
+json_reader_list_members
+json_reader_get_member_name
+<SUBSECTION>
+json_reader_is_value
+json_reader_get_value
+json_reader_get_int_value
+json_reader_get_double_value
+json_reader_get_string_value
+json_reader_get_boolean_value
+json_reader_get_null_value
+<SUBSECTION>
+JsonReaderError
+JSON_READER_ERROR
+json_reader_get_error
+<SUBSECTION Standard>
+JSON_READER
+JSON_READER_CLASS
+JSON_IS_READER
+JSON_IS_READER_CLASS
+JSON_READER_GET_CLASS
+JSON_TYPE_READER
+<SUBSECTION Private>
+JsonReaderPrivate
+json_reader_get_type
+json_reader_error_quark
+</SECTION>
+
+<SECTION>
+<FILE>json-path</FILE>
+JsonPath
+JsonPathClass
+json_path_new
+JSON_PATH_ERROR
+JsonPathError
+json_path_compile
+json_path_match
+<SUBSECTION>
+json_path_query
+<SUBSECTION Standard>
+JSON_TYPE_PATH
+JSON_PATH
+JSON_IS_PATH
+<SUBSECTION Private>
+json_path_get_type
+json_path_error_quark
</SECTION>
--- /dev/null
+<refentry id="json-validate-tool" lang="en">
+
+<refentryinfo>
+ <title>json-glib-validate</title>
+ <productname>JSON-GLib</productname>
+ <authorgroup>
+ <author>
+ <contrib>Developer</contrib>
+ <firstname>Emmanuele</firstname>
+ <surname>Bassi</surname>
+ </author>
+ </authorgroup>
+</refentryinfo>
+
+<refmeta>
+ <refentrytitle>json-glib-validate</refentrytitle>
+ <manvolnum>1</manvolnum>
+ <refmiscinfo class="manual">User Commands</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+ <refname>json-glib-validate</refname>
+ <refpurpose>JSON-GLib validation tool</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <cmdsynopsis>
+ <command>json-glib-validate</command>
+ <arg><option>-h</option>, <option>--help</option></arg>
+ <arg choice="plain">URI</arg>
+ <arg>
+ <arg choice="plain" rep="repeat">URI</arg>
+ </arg>
+ </cmdsynopsis>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+<para><command>json-glib-validate</command> offers a simple command line
+interface to validate JSON data. It lets you list URIs that point to JSON
+data and checks that the data conforms to the JSON syntax.</para>
+
+<para>
+The resources to operate on are specified by the <replaceable>URI</replaceable>
+argument.
+</para>
+
+<para>
+If the JSON data is valid, <command>json-glib-validate</command> will terminate
+with an exit code of 0; if the data is invalid, an error will be printed on
+<replaceable>stderr</replaceable> and <command>json-glib-validate</command> will
+terminate with a nonzero exit code.</para>
+</refsect1>
+
+<refsect1><title>Commands</title>
+<variablelist>
+
+<varlistentry>
+<term><option>-h</option>, <option>--help</option></term>
+<listitem><para>
+Prints help and exits.
+</para></listitem>
+</varlistentry>
+
+</variablelist>
+
+</refsect1>
+</refentry>
+#include <json-glib/json-glib.h>
+json_builder_get_type
json_generator_get_type
json_parser_get_type
+json_path_get_type
+json_reader_get_type
+json_serializable_get_type
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-JSON Array
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### STRUCT JsonArray ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION json_array_new ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-
-<!-- ##### FUNCTION json_array_sized_new ##### -->
-<para>
-
-</para>
-
-@n_elements:
-@Returns:
-
-
-<!-- ##### FUNCTION json_array_ref ##### -->
-<para>
-
-</para>
-
-@array:
-@Returns:
-
-
-<!-- ##### FUNCTION json_array_unref ##### -->
-<para>
-
-</para>
-
-@array:
-
-
-<!-- ##### FUNCTION json_array_add_element ##### -->
-<para>
-
-</para>
-
-@array:
-@node:
-
-
-<!-- ##### FUNCTION json_array_get_element ##### -->
-<para>
-
-</para>
-
-@array:
-@index_:
-@Returns:
-
-
-<!-- ##### FUNCTION json_array_dup_element ##### -->
-<para>
-
-</para>
-
-@array:
-@index_:
-@Returns:
-
-
-<!-- ##### FUNCTION json_array_get_elements ##### -->
-<para>
-
-</para>
-
-@array:
-@Returns:
-
-
-<!-- ##### FUNCTION json_array_get_length ##### -->
-<para>
-
-</para>
-
-@array:
-@Returns:
-
-
-<!-- ##### FUNCTION json_array_remove_element ##### -->
-<para>
-
-</para>
-
-@array:
-@index_:
-
-
-<!-- ##### USER_FUNCTION JsonArrayForeach ##### -->
-<para>
-
-</para>
-
-@array:
-@index_:
-@element_node:
-@user_data:
-
-
-<!-- ##### FUNCTION json_array_foreach_element ##### -->
-<para>
-
-</para>
-
-@array:
-@func:
-@data:
-
-
-<!-- ##### FUNCTION json_array_add_array_element ##### -->
-<para>
-
-</para>
-
-@array:
-@value:
-
-
-<!-- ##### FUNCTION json_array_get_array_element ##### -->
-<para>
-
-</para>
-
-@array:
-@index_:
-@Returns:
-
-
-<!-- ##### FUNCTION json_array_add_boolean_element ##### -->
-<para>
-
-</para>
-
-@array:
-@value:
-
-
-<!-- ##### FUNCTION json_array_get_boolean_element ##### -->
-<para>
-
-</para>
-
-@array:
-@index_:
-@Returns:
-
-
-<!-- ##### FUNCTION json_array_add_double_element ##### -->
-<para>
-
-</para>
-
-@array:
-@value:
-
-
-<!-- ##### FUNCTION json_array_get_double_element ##### -->
-<para>
-
-</para>
-
-@array:
-@index_:
-@Returns:
-
-
-<!-- ##### FUNCTION json_array_add_int_element ##### -->
-<para>
-
-</para>
-
-@array:
-@value:
-
-
-<!-- ##### FUNCTION json_array_get_int_element ##### -->
-<para>
-
-</para>
-
-@array:
-@index_:
-@Returns:
-
-
-<!-- ##### FUNCTION json_array_add_null_element ##### -->
-<para>
-
-</para>
-
-@array:
-
-
-<!-- ##### FUNCTION json_array_get_null_element ##### -->
-<para>
-
-</para>
-
-@array:
-@index_:
-@Returns:
-
-
-<!-- ##### FUNCTION json_array_add_object_element ##### -->
-<para>
-
-</para>
-
-@array:
-@value:
-
-
-<!-- ##### FUNCTION json_array_get_object_element ##### -->
-<para>
-
-</para>
-
-@array:
-@index_:
-@Returns:
-
-
-<!-- ##### FUNCTION json_array_add_string_element ##### -->
-<para>
-
-</para>
-
-@array:
-@value:
-
-
-<!-- ##### FUNCTION json_array_get_string_element ##### -->
-<para>
-
-</para>
-
-@array:
-@index_:
-@Returns:
-
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-Boxed Types Serialization
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### USER_FUNCTION JsonBoxedSerializeFunc ##### -->
-<para>
-
-</para>
-
-@boxed:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION JsonBoxedDeserializeFunc ##### -->
-<para>
-
-</para>
-
-@node:
-@Returns:
-
-
-<!-- ##### FUNCTION json_boxed_register_serialize_func ##### -->
-<para>
-
-</para>
-
-@gboxed_type:
-@node_type:
-@serialize_func:
-
-
-<!-- ##### FUNCTION json_boxed_register_deserialize_func ##### -->
-<para>
-
-</para>
-
-@gboxed_type:
-@node_type:
-@deserialize_func:
-
-
-<!-- ##### FUNCTION json_boxed_can_serialize ##### -->
-<para>
-
-</para>
-
-@gboxed_type:
-@node_type:
-@Returns:
-
-
-<!-- ##### FUNCTION json_boxed_can_deserialize ##### -->
-<para>
-
-</para>
-
-@gboxed_type:
-@node_type:
-@Returns:
-
-
-<!-- ##### FUNCTION json_boxed_serialize ##### -->
-<para>
-
-</para>
-
-@gboxed_type:
-@boxed:
-@Returns:
-
-
-<!-- ##### FUNCTION json_boxed_deserialize ##### -->
-<para>
-
-</para>
-
-@gboxed_type:
-@node:
-@Returns:
-
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-JsonGenerator
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### STRUCT JsonGenerator ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG JsonGenerator:indent ##### -->
-<para>
-
-</para>
-
-<!-- ##### ARG JsonGenerator:indent-char ##### -->
-<para>
-
-</para>
-
-<!-- ##### ARG JsonGenerator:pretty ##### -->
-<para>
-
-</para>
-
-<!-- ##### ARG JsonGenerator:root ##### -->
-<para>
-
-</para>
-
-<!-- ##### STRUCT JsonGeneratorClass ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION json_generator_new ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-
-<!-- ##### FUNCTION json_generator_to_file ##### -->
-<para>
-
-</para>
-
-@generator:
-@filename:
-@error:
-@Returns:
-
-
-<!-- ##### FUNCTION json_generator_to_data ##### -->
-<para>
-
-</para>
-
-@generator:
-@length:
-@Returns:
-
-
-<!-- ##### FUNCTION json_generator_set_root ##### -->
-<para>
-
-</para>
-
-@generator:
-@node:
-
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-GObject Serialization
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### FUNCTION json_gobject_serialize ##### -->
-<para>
-
-</para>
-
-@gobject:
-@Returns:
-
-
-<!-- ##### FUNCTION json_gobject_deserialize ##### -->
-<para>
-
-</para>
-
-@gtype:
-@node:
-@Returns:
-
-
-<!-- ##### FUNCTION json_gobject_to_data ##### -->
-<para>
-
-</para>
-
-@gobject:
-@length:
-@Returns:
-
-
-<!-- ##### FUNCTION json_gobject_from_data ##### -->
-<para>
-
-</para>
-
-@gtype:
-@data:
-@length:
-@error:
-@Returns:
-
-
-<!-- ##### FUNCTION json_construct_gobject ##### -->
-<para>
-
-</para>
-
-@gtype:
-@data:
-@length:
-@error:
-@Returns:
-
-
-<!-- ##### FUNCTION json_serialize_gobject ##### -->
-<para>
-
-</para>
-
-@gobject:
-@length:
-@Returns:
-
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-JSON Node
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### ENUM JsonNodeType ##### -->
-<para>
-
-</para>
-
-@JSON_NODE_OBJECT:
-@JSON_NODE_ARRAY:
-@JSON_NODE_VALUE:
-@JSON_NODE_NULL:
-
-<!-- ##### STRUCT JsonNode ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO JSON_NODE_TYPE ##### -->
-<para>
-
-</para>
-
-@node:
-
-
-<!-- ##### MACRO JSON_NODE_HOLDS ##### -->
-<para>
-
-</para>
-
-@node:
-@t:
-
-
-<!-- ##### MACRO JSON_NODE_HOLDS_VALUE ##### -->
-<para>
-
-</para>
-
-@node:
-
-
-<!-- ##### MACRO JSON_NODE_HOLDS_OBJECT ##### -->
-<para>
-
-</para>
-
-@node:
-
-
-<!-- ##### MACRO JSON_NODE_HOLDS_ARRAY ##### -->
-<para>
-
-</para>
-
-@node:
-
-
-<!-- ##### MACRO JSON_NODE_HOLDS_NULL ##### -->
-<para>
-
-</para>
-
-@node:
-
-
-<!-- ##### FUNCTION json_node_new ##### -->
-<para>
-
-</para>
-
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION json_node_copy ##### -->
-<para>
-
-</para>
-
-@node:
-@Returns:
-
-
-<!-- ##### FUNCTION json_node_free ##### -->
-<para>
-
-</para>
-
-@node:
-
-
-<!-- ##### FUNCTION json_node_set_array ##### -->
-<para>
-
-</para>
-
-@node:
-@array:
-
-
-<!-- ##### FUNCTION json_node_take_array ##### -->
-<para>
-
-</para>
-
-@node:
-@array:
-
-
-<!-- ##### FUNCTION json_node_get_array ##### -->
-<para>
-
-</para>
-
-@node:
-@Returns:
-
-
-<!-- ##### FUNCTION json_node_dup_array ##### -->
-<para>
-
-</para>
-
-@node:
-@Returns:
-
-
-<!-- ##### FUNCTION json_node_set_object ##### -->
-<para>
-
-</para>
-
-@node:
-@object:
-
-
-<!-- ##### FUNCTION json_node_take_object ##### -->
-<para>
-
-</para>
-
-@node:
-@object:
-
-
-<!-- ##### FUNCTION json_node_get_object ##### -->
-<para>
-
-</para>
-
-@node:
-@Returns:
-
-
-<!-- ##### FUNCTION json_node_dup_object ##### -->
-<para>
-
-</para>
-
-@node:
-@Returns:
-
-
-<!-- ##### FUNCTION json_node_set_value ##### -->
-<para>
-
-</para>
-
-@node:
-@value:
-
-
-<!-- ##### FUNCTION json_node_get_value ##### -->
-<para>
-
-</para>
-
-@node:
-@value:
-
-
-<!-- ##### FUNCTION json_node_set_boolean ##### -->
-<para>
-
-</para>
-
-@node:
-@value:
-
-
-<!-- ##### FUNCTION json_node_get_boolean ##### -->
-<para>
-
-</para>
-
-@node:
-@Returns:
-
-
-<!-- ##### FUNCTION json_node_set_double ##### -->
-<para>
-
-</para>
-
-@node:
-@value:
-
-
-<!-- ##### FUNCTION json_node_get_double ##### -->
-<para>
-
-</para>
-
-@node:
-@Returns:
-
-
-<!-- ##### FUNCTION json_node_set_int ##### -->
-<para>
-
-</para>
-
-@node:
-@value:
-
-
-<!-- ##### FUNCTION json_node_get_int ##### -->
-<para>
-
-</para>
-
-@node:
-@Returns:
-
-
-<!-- ##### FUNCTION json_node_set_string ##### -->
-<para>
-
-</para>
-
-@node:
-@value:
-
-
-<!-- ##### FUNCTION json_node_get_string ##### -->
-<para>
-
-</para>
-
-@node:
-@Returns:
-
-
-<!-- ##### FUNCTION json_node_dup_string ##### -->
-<para>
-
-</para>
-
-@node:
-@Returns:
-
-
-<!-- ##### FUNCTION json_node_set_parent ##### -->
-<para>
-
-</para>
-
-@node:
-@parent:
-
-
-<!-- ##### FUNCTION json_node_get_parent ##### -->
-<para>
-
-</para>
-
-@node:
-@Returns:
-
-
-<!-- ##### FUNCTION json_node_type_name ##### -->
-<para>
-
-</para>
-
-@node:
-@Returns:
-
-
-<!-- ##### FUNCTION json_node_get_value_type ##### -->
-<para>
-
-</para>
-
-@node:
-@Returns:
-
-
-<!-- ##### FUNCTION json_node_get_node_type ##### -->
-<para>
-
-</para>
-
-@node:
-@Returns:
-
-
-<!-- ##### FUNCTION json_node_is_null ##### -->
-<para>
-
-</para>
-
-@node:
-@Returns:
-
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-JSON Object
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### STRUCT JsonObject ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION json_object_new ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-
-<!-- ##### FUNCTION json_object_ref ##### -->
-<para>
-
-</para>
-
-@object:
-@Returns:
-
-
-<!-- ##### FUNCTION json_object_unref ##### -->
-<para>
-
-</para>
-
-@object:
-
-
-<!-- ##### FUNCTION json_object_add_member ##### -->
-<para>
-
-</para>
-
-@object:
-@member_name:
-@node:
-
-
-<!-- ##### FUNCTION json_object_set_member ##### -->
-<para>
-
-</para>
-
-@object:
-@member_name:
-@node:
-
-
-<!-- ##### FUNCTION json_object_has_member ##### -->
-<para>
-
-</para>
-
-@object:
-@member_name:
-@Returns:
-
-
-<!-- ##### FUNCTION json_object_get_member ##### -->
-<para>
-
-</para>
-
-@object:
-@member_name:
-@Returns:
-
-
-<!-- ##### FUNCTION json_object_dup_member ##### -->
-<para>
-
-</para>
-
-@object:
-@member_name:
-@Returns:
-
-
-<!-- ##### FUNCTION json_object_get_members ##### -->
-<para>
-
-</para>
-
-@object:
-@Returns:
-
-
-<!-- ##### FUNCTION json_object_get_values ##### -->
-<para>
-
-</para>
-
-@object:
-@Returns:
-
-
-<!-- ##### FUNCTION json_object_get_size ##### -->
-<para>
-
-</para>
-
-@object:
-@Returns:
-
-
-<!-- ##### FUNCTION json_object_remove_member ##### -->
-<para>
-
-</para>
-
-@object:
-@member_name:
-
-
-<!-- ##### USER_FUNCTION JsonObjectForeach ##### -->
-<para>
-
-</para>
-
-@object:
-@member_name:
-@member_node:
-@user_data:
-
-
-<!-- ##### FUNCTION json_object_foreach_member ##### -->
-<para>
-
-</para>
-
-@object:
-@func:
-@data:
-
-
-<!-- ##### FUNCTION json_object_set_array_member ##### -->
-<para>
-
-</para>
-
-@object:
-@member_name:
-@value:
-
-
-<!-- ##### FUNCTION json_object_get_array_member ##### -->
-<para>
-
-</para>
-
-@object:
-@member_name:
-@Returns:
-
-
-<!-- ##### FUNCTION json_object_set_boolean_member ##### -->
-<para>
-
-</para>
-
-@object:
-@member_name:
-@value:
-
-
-<!-- ##### FUNCTION json_object_get_boolean_member ##### -->
-<para>
-
-</para>
-
-@object:
-@member_name:
-@Returns:
-
-
-<!-- ##### FUNCTION json_object_set_double_member ##### -->
-<para>
-
-</para>
-
-@object:
-@member_name:
-@value:
-
-
-<!-- ##### FUNCTION json_object_get_double_member ##### -->
-<para>
-
-</para>
-
-@object:
-@member_name:
-@Returns:
-
-
-<!-- ##### FUNCTION json_object_set_int_member ##### -->
-<para>
-
-</para>
-
-@object:
-@member_name:
-@value:
-
-
-<!-- ##### FUNCTION json_object_get_int_member ##### -->
-<para>
-
-</para>
-
-@object:
-@member_name:
-@Returns:
-
-
-<!-- ##### FUNCTION json_object_set_null_member ##### -->
-<para>
-
-</para>
-
-@object:
-@member_name:
-
-
-<!-- ##### FUNCTION json_object_get_null_member ##### -->
-<para>
-
-</para>
-
-@object:
-@member_name:
-@Returns:
-
-
-<!-- ##### FUNCTION json_object_set_object_member ##### -->
-<para>
-
-</para>
-
-@object:
-@member_name:
-@value:
-
-
-<!-- ##### FUNCTION json_object_get_object_member ##### -->
-<para>
-
-</para>
-
-@object:
-@member_name:
-@Returns:
-
-
-<!-- ##### FUNCTION json_object_set_string_member ##### -->
-<para>
-
-</para>
-
-@object:
-@member_name:
-@value:
-
-
-<!-- ##### FUNCTION json_object_get_string_member ##### -->
-<para>
-
-</para>
-
-@object:
-@member_name:
-@Returns:
-
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-JsonParser
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### ENUM JsonParserError ##### -->
-<para>
-
-</para>
-
-@JSON_PARSER_ERROR_PARSE:
-@JSON_PARSER_ERROR_UNKNOWN:
-
-<!-- ##### STRUCT JsonParser ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SIGNAL JsonParser::array-element ##### -->
-<para>
-
-</para>
-
-@jsonparser: the object which received the signal.
-@arg1:
-@arg2:
-
-<!-- ##### SIGNAL JsonParser::array-end ##### -->
-<para>
-
-</para>
-
-@jsonparser: the object which received the signal.
-@arg1:
-
-<!-- ##### SIGNAL JsonParser::array-start ##### -->
-<para>
-
-</para>
-
-@jsonparser: the object which received the signal.
-
-<!-- ##### SIGNAL JsonParser::error ##### -->
-<para>
-
-</para>
-
-@jsonparser: the object which received the signal.
-@arg1:
-
-<!-- ##### SIGNAL JsonParser::object-end ##### -->
-<para>
-
-</para>
-
-@jsonparser: the object which received the signal.
-@arg1:
-
-<!-- ##### SIGNAL JsonParser::object-member ##### -->
-<para>
-
-</para>
-
-@jsonparser: the object which received the signal.
-@arg1:
-@arg2:
-
-<!-- ##### SIGNAL JsonParser::object-start ##### -->
-<para>
-
-</para>
-
-@jsonparser: the object which received the signal.
-
-<!-- ##### SIGNAL JsonParser::parse-end ##### -->
-<para>
-
-</para>
-
-@jsonparser: the object which received the signal.
-
-<!-- ##### SIGNAL JsonParser::parse-start ##### -->
-<para>
-
-</para>
-
-@jsonparser: the object which received the signal.
-
-<!-- ##### STRUCT JsonParserClass ##### -->
-<para>
-
-</para>
-
-@parse_start:
-@object_start:
-@object_member:
-@object_end:
-@array_start:
-@array_element:
-@array_end:
-@parse_end:
-@error:
-
-<!-- ##### FUNCTION json_parser_new ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-
-<!-- ##### FUNCTION json_parser_load_from_file ##### -->
-<para>
-
-</para>
-
-@parser:
-@filename:
-@error:
-@Returns:
-
-
-<!-- ##### FUNCTION json_parser_load_from_data ##### -->
-<para>
-
-</para>
-
-@parser:
-@data:
-@length:
-@error:
-@Returns:
-
-
-<!-- ##### FUNCTION json_parser_get_root ##### -->
-<para>
-
-</para>
-
-@parser:
-@Returns:
-
-
-<!-- ##### FUNCTION json_parser_get_current_line ##### -->
-<para>
-
-</para>
-
-@parser:
-@Returns:
-
-
-<!-- ##### FUNCTION json_parser_get_current_pos ##### -->
-<para>
-
-</para>
-
-@parser:
-@Returns:
-
-
-<!-- ##### FUNCTION json_parser_has_assignment ##### -->
-<para>
-
-</para>
-
-@parser:
-@variable_name:
-@Returns:
-
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-Serializable Interface
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### STRUCT JsonSerializableIface ##### -->
-<para>
-
-</para>
-
-@serialize_property:
-@deserialize_property:
-
-<!-- ##### FUNCTION json_serializable_serialize_property ##### -->
-<para>
-
-</para>
-
-@serializable:
-@property_name:
-@value:
-@pspec:
-@Returns:
-
-
-<!-- ##### FUNCTION json_serializable_deserialize_property ##### -->
-<para>
-
-</para>
-
-@serializable:
-@property_name:
-@value:
-@pspec:
-@property_node:
-@Returns:
-
-
-<!-- ##### FUNCTION json_serializable_default_serialize_property ##### -->
-<para>
-
-</para>
-
-@serializable:
-@property_name:
-@value:
-@pspec:
-@Returns:
-
-
-<!-- ##### FUNCTION json_serializable_default_deserialize_property ##### -->
-<para>
-
-</para>
-
-@serializable:
-@property_name:
-@value:
-@pspec:
-@property_node:
-@Returns:
-
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-Versioning information
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### MACRO JSON_MAJOR_VERSION ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO JSON_MINOR_VERSION ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO JSON_MICRO_VERSION ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO JSON_VERSION ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO JSON_VERSION_S ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO JSON_VERSION_HEX ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO JSON_CHECK_VERSION ##### -->
-<para>
-
-</para>
-
-@major:
-@minor:
-@micro:
-
-
--- /dev/null
+
+
+
+
+
+
+Network Working Group D. Crockford
+Request for Comments: 4627 JSON.org
+Category: Informational July 2006
+
+
+ The application/json Media Type for JavaScript Object Notation (JSON)
+
+Status of This Memo
+
+ This memo provides information for the Internet community. It does
+ not specify an Internet standard of any kind. Distribution of this
+ memo is unlimited.
+
+Copyright Notice
+
+ Copyright (C) The Internet Society (2006).
+
+Abstract
+
+ JavaScript Object Notation (JSON) is a lightweight, text-based,
+ language-independent data interchange format. It was derived from
+ the ECMAScript Programming Language Standard. JSON defines a small
+ set of formatting rules for the portable representation of structured
+ data.
+
+1. Introduction
+
+ JavaScript Object Notation (JSON) is a text format for the
+ serialization of structured data. It is derived from the object
+ literals of JavaScript, as defined in the ECMAScript Programming
+ Language Standard, Third Edition [ECMA].
+
+ JSON can represent four primitive types (strings, numbers, booleans,
+ and null) and two structured types (objects and arrays).
+
+ A string is a sequence of zero or more Unicode characters [UNICODE].
+
+ An object is an unordered collection of zero or more name/value
+ pairs, where a name is a string and a value is a string, number,
+ boolean, null, object, or array.
+
+ An array is an ordered sequence of zero or more values.
+
+ The terms "object" and "array" come from the conventions of
+ JavaScript.
+
+ JSON's design goals were for it to be minimal, portable, textual, and
+ a subset of JavaScript.
+
+
+
+Crockford Informational [Page 1]
+\f
+RFC 4627 JSON July 2006
+
+
+1.1. Conventions Used in This Document
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+ document are to be interpreted as described in [RFC2119].
+
+ The grammatical rules in this document are to be interpreted as
+ described in [RFC4234].
+
+2. JSON Grammar
+
+ A JSON text is a sequence of tokens. The set of tokens includes six
+ structural characters, strings, numbers, and three literal names.
+
+ A JSON text is a serialized object or array.
+
+ JSON-text = object / array
+
+ These are the six structural characters:
+
+ begin-array = ws %x5B ws ; [ left square bracket
+
+ begin-object = ws %x7B ws ; { left curly bracket
+
+ end-array = ws %x5D ws ; ] right square bracket
+
+ end-object = ws %x7D ws ; } right curly bracket
+
+ name-separator = ws %x3A ws ; : colon
+
+ value-separator = ws %x2C ws ; , comma
+
+ Insignificant whitespace is allowed before or after any of the six
+ structural characters.
+
+ ws = *(
+ %x20 / ; Space
+ %x09 / ; Horizontal tab
+ %x0A / ; Line feed or New line
+ %x0D ; Carriage return
+ )
+
+2.1. Values
+
+ A JSON value MUST be an object, array, number, or string, or one of
+ the following three literal names:
+
+ false null true
+
+
+
+Crockford Informational [Page 2]
+\f
+RFC 4627 JSON July 2006
+
+
+ The literal names MUST be lowercase. No other literal names are
+ allowed.
+
+ value = false / null / true / object / array / number / string
+
+ false = %x66.61.6c.73.65 ; false
+
+ null = %x6e.75.6c.6c ; null
+
+ true = %x74.72.75.65 ; true
+
+2.2. Objects
+
+ An object structure is represented as a pair of curly brackets
+ surrounding zero or more name/value pairs (or members). A name is a
+ string. A single colon comes after each name, separating the name
+ from the value. A single comma separates a value from a following
+ name. The names within an object SHOULD be unique.
+
+ object = begin-object [ member *( value-separator member ) ]
+ end-object
+
+ member = string name-separator value
+
+2.3. Arrays
+
+ An array structure is represented as square brackets surrounding zero
+ or more values (or elements). Elements are separated by commas.
+
+ array = begin-array [ value *( value-separator value ) ] end-array
+
+2.4. Numbers
+
+ The representation of numbers is similar to that used in most
+ programming languages. A number contains an integer component that
+ may be prefixed with an optional minus sign, which may be followed by
+ a fraction part and/or an exponent part.
+
+ Octal and hex forms are not allowed. Leading zeros are not allowed.
+
+ A fraction part is a decimal point followed by one or more digits.
+
+ An exponent part begins with the letter E in upper or lowercase,
+ which may be followed by a plus or minus sign. The E and optional
+ sign are followed by one or more digits.
+
+ Numeric values that cannot be represented as sequences of digits
+ (such as Infinity and NaN) are not permitted.
+
+
+
+Crockford Informational [Page 3]
+\f
+RFC 4627 JSON July 2006
+
+
+ number = [ minus ] int [ frac ] [ exp ]
+
+ decimal-point = %x2E ; .
+
+ digit1-9 = %x31-39 ; 1-9
+
+ e = %x65 / %x45 ; e E
+
+ exp = e [ minus / plus ] 1*DIGIT
+
+ frac = decimal-point 1*DIGIT
+
+ int = zero / ( digit1-9 *DIGIT )
+
+ minus = %x2D ; -
+
+ plus = %x2B ; +
+
+ zero = %x30 ; 0
+
+2.5. Strings
+
+ The representation of strings is similar to conventions used in the C
+ family of programming languages. A string begins and ends with
+ quotation marks. All Unicode characters may be placed within the
+ quotation marks except for the characters that must be escaped:
+ quotation mark, reverse solidus, and the control characters (U+0000
+ through U+001F).
+
+ Any character may be escaped. If the character is in the Basic
+ Multilingual Plane (U+0000 through U+FFFF), then it may be
+ represented as a six-character sequence: a reverse solidus, followed
+ by the lowercase letter u, followed by four hexadecimal digits that
+ encode the character's code point. The hexadecimal letters A though
+ F can be upper or lowercase. So, for example, a string containing
+ only a single reverse solidus character may be represented as
+ "\u005C".
+
+ Alternatively, there are two-character sequence escape
+ representations of some popular characters. So, for example, a
+ string containing only a single reverse solidus character may be
+ represented more compactly as "\\".
+
+ To escape an extended character that is not in the Basic Multilingual
+ Plane, the character is represented as a twelve-character sequence,
+ encoding the UTF-16 surrogate pair. So, for example, a string
+ containing only the G clef character (U+1D11E) may be represented as
+ "\uD834\uDD1E".
+
+
+
+Crockford Informational [Page 4]
+\f
+RFC 4627 JSON July 2006
+
+
+ string = quotation-mark *char quotation-mark
+
+ char = unescaped /
+ escape (
+ %x22 / ; " quotation mark U+0022
+ %x5C / ; \ reverse solidus U+005C
+ %x2F / ; / solidus U+002F
+ %x62 / ; b backspace U+0008
+ %x66 / ; f form feed U+000C
+ %x6E / ; n line feed U+000A
+ %x72 / ; r carriage return U+000D
+ %x74 / ; t tab U+0009
+ %x75 4HEXDIG ) ; uXXXX U+XXXX
+
+ escape = %x5C ; \
+
+ quotation-mark = %x22 ; "
+
+ unescaped = %x20-21 / %x23-5B / %x5D-10FFFF
+
+3. Encoding
+
+ JSON text SHALL be encoded in Unicode. The default encoding is
+ UTF-8.
+
+ Since the first two characters of a JSON text will always be ASCII
+ characters [RFC0020], it is possible to determine whether an octet
+ stream is UTF-8, UTF-16 (BE or LE), or UTF-32 (BE or LE) by looking
+ at the pattern of nulls in the first four octets.
+
+ 00 00 00 xx UTF-32BE
+ 00 xx 00 xx UTF-16BE
+ xx 00 00 00 UTF-32LE
+ xx 00 xx 00 UTF-16LE
+ xx xx xx xx UTF-8
+
+4. Parsers
+
+ A JSON parser transforms a JSON text into another representation. A
+ JSON parser MUST accept all texts that conform to the JSON grammar.
+ A JSON parser MAY accept non-JSON forms or extensions.
+
+ An implementation may set limits on the size of texts that it
+ accepts. An implementation may set limits on the maximum depth of
+ nesting. An implementation may set limits on the range of numbers.
+ An implementation may set limits on the length and character contents
+ of strings.
+
+
+
+
+Crockford Informational [Page 5]
+\f
+RFC 4627 JSON July 2006
+
+
+5. Generators
+
+ A JSON generator produces JSON text. The resulting text MUST
+ strictly conform to the JSON grammar.
+
+6. IANA Considerations
+
+ The MIME media type for JSON text is application/json.
+
+ Type name: application
+
+ Subtype name: json
+
+ Required parameters: n/a
+
+ Optional parameters: n/a
+
+ Encoding considerations: 8bit if UTF-8; binary if UTF-16 or UTF-32
+
+ JSON may be represented using UTF-8, UTF-16, or UTF-32. When JSON
+ is written in UTF-8, JSON is 8bit compatible. When JSON is
+ written in UTF-16 or UTF-32, the binary content-transfer-encoding
+ must be used.
+
+ Security considerations:
+
+ Generally there are security issues with scripting languages. JSON
+ is a subset of JavaScript, but it is a safe subset that excludes
+ assignment and invocation.
+
+ A JSON text can be safely passed into JavaScript's eval() function
+ (which compiles and executes a string) if all the characters not
+ enclosed in strings are in the set of characters that form JSON
+ tokens. This can be quickly determined in JavaScript with two
+ regular expressions and calls to the test and replace methods.
+
+ var my_JSON_object = !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(
+ text.replace(/"(\\.|[^"\\])*"/g, ''))) &&
+ eval('(' + text + ')');
+
+ Interoperability considerations: n/a
+
+ Published specification: RFC 4627
+
+
+
+
+
+
+
+
+Crockford Informational [Page 6]
+\f
+RFC 4627 JSON July 2006
+
+
+ Applications that use this media type:
+
+ JSON has been used to exchange data between applications written
+ in all of these programming languages: ActionScript, C, C#,
+ ColdFusion, Common Lisp, E, Erlang, Java, JavaScript, Lua,
+ Objective CAML, Perl, PHP, Python, Rebol, Ruby, and Scheme.
+
+ Additional information:
+
+ Magic number(s): n/a
+ File extension(s): .json
+ Macintosh file type code(s): TEXT
+
+ Person & email address to contact for further information:
+ Douglas Crockford
+ douglas@crockford.com
+
+ Intended usage: COMMON
+
+ Restrictions on usage: none
+
+ Author:
+ Douglas Crockford
+ douglas@crockford.com
+
+ Change controller:
+ Douglas Crockford
+ douglas@crockford.com
+
+7. Security Considerations
+
+ See Security Considerations in Section 6.
+
+8. Examples
+
+ This is a JSON object:
+
+ {
+ "Image": {
+ "Width": 800,
+ "Height": 600,
+ "Title": "View from 15th Floor",
+ "Thumbnail": {
+ "Url": "http://www.example.com/image/481989943",
+ "Height": 125,
+ "Width": "100"
+ },
+ "IDs": [116, 943, 234, 38793]
+
+
+
+Crockford Informational [Page 7]
+\f
+RFC 4627 JSON July 2006
+
+
+ }
+ }
+
+ Its Image member is an object whose Thumbnail member is an object
+ and whose IDs member is an array of numbers.
+
+ This is a JSON array containing two objects:
+
+ [
+ {
+ "precision": "zip",
+ "Latitude": 37.7668,
+ "Longitude": -122.3959,
+ "Address": "",
+ "City": "SAN FRANCISCO",
+ "State": "CA",
+ "Zip": "94107",
+ "Country": "US"
+ },
+ {
+ "precision": "zip",
+ "Latitude": 37.371991,
+ "Longitude": -122.026020,
+ "Address": "",
+ "City": "SUNNYVALE",
+ "State": "CA",
+ "Zip": "94085",
+ "Country": "US"
+ }
+ ]
+
+9. References
+
+9.1. Normative References
+
+ [ECMA] European Computer Manufacturers Association, "ECMAScript
+ Language Specification 3rd Edition", December 1999,
+ <http://www.ecma-international.org/publications/files/
+ ecma-st/ECMA-262.pdf>.
+
+ [RFC0020] Cerf, V., "ASCII format for network interchange", RFC 20,
+ October 1969.
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+ [RFC4234] Crocker, D. and P. Overell, "Augmented BNF for Syntax
+ Specifications: ABNF", RFC 4234, October 2005.
+
+
+
+Crockford Informational [Page 8]
+\f
+RFC 4627 JSON July 2006
+
+
+ [UNICODE] The Unicode Consortium, "The Unicode Standard Version 4.0",
+ 2003, <http://www.unicode.org/versions/Unicode4.1.0/>.
+
+Author's Address
+
+ Douglas Crockford
+ JSON.org
+ EMail: douglas@crockford.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Crockford Informational [Page 9]
+\f
+RFC 4627 JSON July 2006
+
+
+Full Copyright Statement
+
+ Copyright (C) The Internet Society (2006).
+
+ This document is subject to the rights, licenses and restrictions
+ contained in BCP 78, and except as set forth therein, the authors
+ retain all their rights.
+
+ This document and the information contained herein are provided on an
+ "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+ OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+ ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+ INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+ INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+ WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+ The IETF takes no position regarding the validity or scope of any
+ Intellectual Property Rights or other rights that might be claimed to
+ pertain to the implementation or use of the technology described in
+ this document or the extent to which any license under such rights
+ might or might not be available; nor does it represent that it has
+ made any independent effort to identify any such rights. Information
+ on the procedures with respect to rights in RFC documents can be
+ found in BCP 78 and BCP 79.
+
+ Copies of IPR disclosures made to the IETF Secretariat and any
+ assurances of licenses to be made available, or the result of an
+ attempt made to obtain a general license or permission for the use of
+ such proprietary rights by implementers or users of this
+ specification can be obtained from the IETF on-line IPR repository at
+ http://www.ietf.org/ipr.
+
+ The IETF invites any interested party to bring to its attention any
+ copyrights, patents or patent applications, or other proprietary
+ rights that may cover technology that may be required to implement
+ this standard. Please address the information to the IETF at
+ ietf-ipr@ietf.org.
+
+Acknowledgement
+
+ Funding for the RFC Editor function is provided by the IETF
+ Administrative Support Activity (IASA).
+
+
+
+
+
+
+
+Crockford Informational [Page 10]
+\f
+++ /dev/null
-# -*- mode: makefile -*-
-
-####################################
-# Everything below here is generic #
-####################################
-
-if GTK_DOC_USE_LIBTOOL
-GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
-GTKDOC_RUN = $(LIBTOOL) --mode=execute
-else
-GTKDOC_CC = $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-GTKDOC_LD = $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
-GTKDOC_RUN =
-endif
-
-# We set GPATH here; this gives us semantics for GNU make
-# which are more like other make's VPATH, when it comes to
-# whether a source that is a target of one rule is then
-# searched for in VPATH/GPATH.
-#
-GPATH = $(srcdir)
-
-TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE)
-
-EXTRA_DIST = \
- $(content_files) \
- $(HTML_IMAGES) \
- $(DOC_MAIN_SGML_FILE) \
- $(DOC_MODULE)-sections.txt \
- $(DOC_MODULE)-overrides.txt
-
-DOC_STAMPS=scan-build.stamp tmpl-build.stamp sgml-build.stamp html-build.stamp \
- pdf-build.stamp \
- $(srcdir)/tmpl.stamp $(srcdir)/sgml.stamp $(srcdir)/html.stamp \
- $(srcdir)/pdf.stamp
-
-SCANOBJ_FILES = \
- $(DOC_MODULE).args \
- $(DOC_MODULE).hierarchy \
- $(DOC_MODULE).interfaces \
- $(DOC_MODULE).prerequisites \
- $(DOC_MODULE).signals
-
-REPORT_FILES = \
- $(DOC_MODULE)-undocumented.txt \
- $(DOC_MODULE)-undeclared.txt \
- $(DOC_MODULE)-unused.txt
-
-CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS)
-
-if ENABLE_GTK_DOC
-if GTK_DOC_BUILD_HTML
-HTML_BUILD_STAMP=html-build.stamp
-else
-HTML_BUILD_STAMP=
-endif
-if GTK_DOC_BUILD_PDF
-PDF_BUILD_STAMP=pdf-build.stamp
-else
-PDF_BUILD_STAMP=
-endif
-
-all-local: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP)
-else
-all-local:
-endif
-
-docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP)
-
-$(REPORT_FILES): sgml-build.stamp
-
-#### scan ####
-
-scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB)
- @echo 'gtk-doc: Scanning header files'
- @-chmod -R u+w $(srcdir)
- @_source_dir='' ; for i in $(DOC_SOURCE_DIR) ; do \
- _source_dir="$${_source_dir} --source-dir=$$i" ; \
- done ; \
- cd $(srcdir) && \
- gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES)
- @if grep -l '^..*$$' $(srcdir)/$(DOC_MODULE).types > /dev/null 2>&1 ; then \
- CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" gtkdoc-scangobj $(SCANGOBJ_OPTIONS) --module=$(DOC_MODULE) --output-dir=$(srcdir) ; \
- else \
- cd $(srcdir) ; \
- for i in $(SCANOBJ_FILES) ; do \
- test -f $$i || touch $$i ; \
- done \
- fi
- @touch scan-build.stamp
-
-$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp
- @true
-
-#### templates ####
-
-tmpl-build.stamp: $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt
- @echo 'gtk-doc: Rebuilding template files'
- @-chmod -R u+w $(srcdir)
- @cd $(srcdir) && gtkdoc-mktmpl --module=$(DOC_MODULE) $(MKTMPL_OPTIONS)
- @touch tmpl-build.stamp
-
-tmpl.stamp: tmpl-build.stamp
- @true
-
-$(srcdir)/tmpl/*.sgml:
- @true
-
-#### xml ####
-
-sgml-build.stamp: tmpl.stamp $(DOC_MODULE)-sections.txt $(srcdir)/tmpl/*.sgml $(expand_content_files)
- @echo 'gtk-doc: Building XML'
- @-chmod -R u+w $(srcdir)
- @_source_dir='' ; for i in $(DOC_SOURCE_DIR) ; do \
- _source_dir="$${_source_dir} --source-dir=$$i" ; \
- done ; \
- cd $(srcdir) && \
- gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS)
- @touch sgml-build.stamp
-
-sgml.stamp: sgml-build.stamp
- @true
-
-#### html ####
-
-html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
- @echo 'gtk-doc: Building HTML'
- @-chmod -R u+w $(srcdir)
- @rm -rf $(srcdir)/html
- @mkdir $(srcdir)/html
- @mkhtml_options=""; \
- gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \
- if test "$(?)" = "0"; then \
- mkhtml_options=--path="$(srcdir)"; \
- fi; \
- cd $(srcdir)/html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
- @test "x$(HTML_IMAGES)" = "x" || ( cd $(srcdir) && cp $(HTML_IMAGES) html )
- @echo 'gtk-doc: Fixing cross-references'
- @cd $(srcdir) && gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
- @touch html-build.stamp
-
-#### pdf ####
-
-pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
- @echo 'gtk-doc: Building PDF'
- @-chmod -R u+w $(srcdir)
- @rm -rf $(srcdir)/$(DOC_MODULE).pdf
- @mkpdf_imgdirs=""; \
- if test "x$(HTML_IMAGES)" != "x"; then \
- for img in $(HTML_IMAGES); do \
- part=`dirname $$img`; \
- echo $$mkpdf_imgdirs | grep >/dev/null "\-\-imgdir=$$part "; \
- if test $$? != 0; then \
- mkpdf_imgdirs="$$mkpdf_imgdirs --imgdir=$$part"; \
- fi; \
- done; \
- fi; \
- cd $(srcdir) && gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_imgdirs $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS)
- @touch pdf-build.stamp
-
-##############
-
-clean-local:
- rm -f *~ *.bak
- rm -rf .libs
-
-distclean-local:
- cd $(srcdir) && \
- rm -rf xml $(REPORT_FILES) $(DOC_MODULE).pdf \
- $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
-
-maintainer-clean-local: clean
- cd $(srcdir) && rm -rf xml html
-
-install-data-local:
- @installfiles=`echo $(srcdir)/html/*`; \
- if test "$$installfiles" = '$(srcdir)/html/*'; \
- then echo '-- Nothing to install' ; \
- else \
- if test -n "$(DOC_MODULE_VERSION)"; then \
- installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
- else \
- installdir="$(DESTDIR)$(TARGET_DIR)"; \
- fi; \
- $(mkinstalldirs) $${installdir} ; \
- for i in $$installfiles; do \
- echo '-- Installing '$$i ; \
- $(INSTALL_DATA) $$i $${installdir}; \
- done; \
- if test -n "$(DOC_MODULE_VERSION)"; then \
- mv -f $${installdir}/$(DOC_MODULE).devhelp2 \
- $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \
- mv -f $${installdir}/$(DOC_MODULE).devhelp \
- $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp; \
- fi; \
- $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \
- fi
-
-uninstall-local:
- @if test -n "$(DOC_MODULE_VERSION)"; then \
- installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
- else \
- installdir="$(DESTDIR)$(TARGET_DIR)"; \
- fi; \
- rm -rf $${installdir}
-
-#
-# Require gtk-doc when making dist
-#
-if ENABLE_GTK_DOC
-dist-check-gtkdoc:
-else
-dist-check-gtkdoc:
- @echo "*** gtk-doc must be installed and enabled in order to make dist"
- @false
-endif
-
-dist-hook: dist-check-gtkdoc dist-hook-local
- mkdir $(distdir)/tmpl
- mkdir $(distdir)/html
- -cp $(srcdir)/tmpl/*.sgml $(distdir)/tmpl
- cp $(srcdir)/html/* $(distdir)/html
- -cp $(srcdir)/$(DOC_MODULE).pdf $(distdir)/
- -cp $(srcdir)/$(DOC_MODULE).types $(distdir)/
- -cp $(srcdir)/$(DOC_MODULE)-sections.txt $(distdir)/
- cd $(distdir) && rm -f $(DISTCLEANFILES)
- $(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html
-
-.PHONY : dist-hook-local docs
+++ /dev/null
-#!/bin/sh
-# install - install a program, script, or datafile
-
-scriptversion=2009-04-28.21; # UTC
-
-# This originates from X11R5 (mit/util/scripts/install.sh), which was
-# later released in X11R6 (xc/config/util/install.sh) with the
-# following copyright and license.
-#
-# Copyright (C) 1994 X Consortium
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to
-# deal in the Software without restriction, including without limitation the
-# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-# sell copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
-# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-# Except as contained in this notice, the name of the X Consortium shall not
-# be used in advertising or otherwise to promote the sale, use or other deal-
-# ings in this Software without prior written authorization from the X Consor-
-# tium.
-#
-#
-# FSF changes to this file are in the public domain.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.
-
-nl='
-'
-IFS=" "" $nl"
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit=${DOITPROG-}
-if test -z "$doit"; then
- doit_exec=exec
-else
- doit_exec=$doit
-fi
-
-# Put in absolute file names if you don't have them in your path;
-# or use environment vars.
-
-chgrpprog=${CHGRPPROG-chgrp}
-chmodprog=${CHMODPROG-chmod}
-chownprog=${CHOWNPROG-chown}
-cmpprog=${CMPPROG-cmp}
-cpprog=${CPPROG-cp}
-mkdirprog=${MKDIRPROG-mkdir}
-mvprog=${MVPROG-mv}
-rmprog=${RMPROG-rm}
-stripprog=${STRIPPROG-strip}
-
-posix_glob='?'
-initialize_posix_glob='
- test "$posix_glob" != "?" || {
- if (set -f) 2>/dev/null; then
- posix_glob=
- else
- posix_glob=:
- fi
- }
-'
-
-posix_mkdir=
-
-# Desired mode of installed file.
-mode=0755
-
-chgrpcmd=
-chmodcmd=$chmodprog
-chowncmd=
-mvcmd=$mvprog
-rmcmd="$rmprog -f"
-stripcmd=
-
-src=
-dst=
-dir_arg=
-dst_arg=
-
-copy_on_change=false
-no_target_directory=
-
-usage="\
-Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
- or: $0 [OPTION]... SRCFILES... DIRECTORY
- or: $0 [OPTION]... -t DIRECTORY SRCFILES...
- or: $0 [OPTION]... -d DIRECTORIES...
-
-In the 1st form, copy SRCFILE to DSTFILE.
-In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
-In the 4th, create DIRECTORIES.
-
-Options:
- --help display this help and exit.
- --version display version info and exit.
-
- -c (ignored)
- -C install only if different (preserve the last data modification time)
- -d create directories instead of installing files.
- -g GROUP $chgrpprog installed files to GROUP.
- -m MODE $chmodprog installed files to MODE.
- -o USER $chownprog installed files to USER.
- -s $stripprog installed files.
- -t DIRECTORY install into DIRECTORY.
- -T report an error if DSTFILE is a directory.
-
-Environment variables override the default commands:
- CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
- RMPROG STRIPPROG
-"
-
-while test $# -ne 0; do
- case $1 in
- -c) ;;
-
- -C) copy_on_change=true;;
-
- -d) dir_arg=true;;
-
- -g) chgrpcmd="$chgrpprog $2"
- shift;;
-
- --help) echo "$usage"; exit $?;;
-
- -m) mode=$2
- case $mode in
- *' '* | *' '* | *'
-'* | *'*'* | *'?'* | *'['*)
- echo "$0: invalid mode: $mode" >&2
- exit 1;;
- esac
- shift;;
-
- -o) chowncmd="$chownprog $2"
- shift;;
-
- -s) stripcmd=$stripprog;;
-
- -t) dst_arg=$2
- shift;;
-
- -T) no_target_directory=true;;
-
- --version) echo "$0 $scriptversion"; exit $?;;
-
- --) shift
- break;;
-
- -*) echo "$0: invalid option: $1" >&2
- exit 1;;
-
- *) break;;
- esac
- shift
-done
-
-if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
- # When -d is used, all remaining arguments are directories to create.
- # When -t is used, the destination is already specified.
- # Otherwise, the last argument is the destination. Remove it from $@.
- for arg
- do
- if test -n "$dst_arg"; then
- # $@ is not empty: it contains at least $arg.
- set fnord "$@" "$dst_arg"
- shift # fnord
- fi
- shift # arg
- dst_arg=$arg
- done
-fi
-
-if test $# -eq 0; then
- if test -z "$dir_arg"; then
- echo "$0: no input file specified." >&2
- exit 1
- fi
- # It's OK to call `install-sh -d' without argument.
- # This can happen when creating conditional directories.
- exit 0
-fi
-
-if test -z "$dir_arg"; then
- trap '(exit $?); exit' 1 2 13 15
-
- # Set umask so as not to create temps with too-generous modes.
- # However, 'strip' requires both read and write access to temps.
- case $mode in
- # Optimize common cases.
- *644) cp_umask=133;;
- *755) cp_umask=22;;
-
- *[0-7])
- if test -z "$stripcmd"; then
- u_plus_rw=
- else
- u_plus_rw='% 200'
- fi
- cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
- *)
- if test -z "$stripcmd"; then
- u_plus_rw=
- else
- u_plus_rw=,u+rw
- fi
- cp_umask=$mode$u_plus_rw;;
- esac
-fi
-
-for src
-do
- # Protect names starting with `-'.
- case $src in
- -*) src=./$src;;
- esac
-
- if test -n "$dir_arg"; then
- dst=$src
- dstdir=$dst
- test -d "$dstdir"
- dstdir_status=$?
- else
-
- # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
- # might cause directories to be created, which would be especially bad
- # if $src (and thus $dsttmp) contains '*'.
- if test ! -f "$src" && test ! -d "$src"; then
- echo "$0: $src does not exist." >&2
- exit 1
- fi
-
- if test -z "$dst_arg"; then
- echo "$0: no destination specified." >&2
- exit 1
- fi
-
- dst=$dst_arg
- # Protect names starting with `-'.
- case $dst in
- -*) dst=./$dst;;
- esac
-
- # If destination is a directory, append the input filename; won't work
- # if double slashes aren't ignored.
- if test -d "$dst"; then
- if test -n "$no_target_directory"; then
- echo "$0: $dst_arg: Is a directory" >&2
- exit 1
- fi
- dstdir=$dst
- dst=$dstdir/`basename "$src"`
- dstdir_status=0
- else
- # Prefer dirname, but fall back on a substitute if dirname fails.
- dstdir=`
- (dirname "$dst") 2>/dev/null ||
- expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$dst" : 'X\(//\)[^/]' \| \
- X"$dst" : 'X\(//\)$' \| \
- X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
- echo X"$dst" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'
- `
-
- test -d "$dstdir"
- dstdir_status=$?
- fi
- fi
-
- obsolete_mkdir_used=false
-
- if test $dstdir_status != 0; then
- case $posix_mkdir in
- '')
- # Create intermediate dirs using mode 755 as modified by the umask.
- # This is like FreeBSD 'install' as of 1997-10-28.
- umask=`umask`
- case $stripcmd.$umask in
- # Optimize common cases.
- *[2367][2367]) mkdir_umask=$umask;;
- .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
-
- *[0-7])
- mkdir_umask=`expr $umask + 22 \
- - $umask % 100 % 40 + $umask % 20 \
- - $umask % 10 % 4 + $umask % 2
- `;;
- *) mkdir_umask=$umask,go-w;;
- esac
-
- # With -d, create the new directory with the user-specified mode.
- # Otherwise, rely on $mkdir_umask.
- if test -n "$dir_arg"; then
- mkdir_mode=-m$mode
- else
- mkdir_mode=
- fi
-
- posix_mkdir=false
- case $umask in
- *[123567][0-7][0-7])
- # POSIX mkdir -p sets u+wx bits regardless of umask, which
- # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
- ;;
- *)
- tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
- trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
-
- if (umask $mkdir_umask &&
- exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
- then
- if test -z "$dir_arg" || {
- # Check for POSIX incompatibilities with -m.
- # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
- # other-writeable bit of parent directory when it shouldn't.
- # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
- ls_ld_tmpdir=`ls -ld "$tmpdir"`
- case $ls_ld_tmpdir in
- d????-?r-*) different_mode=700;;
- d????-?--*) different_mode=755;;
- *) false;;
- esac &&
- $mkdirprog -m$different_mode -p -- "$tmpdir" && {
- ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
- test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
- }
- }
- then posix_mkdir=:
- fi
- rmdir "$tmpdir/d" "$tmpdir"
- else
- # Remove any dirs left behind by ancient mkdir implementations.
- rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
- fi
- trap '' 0;;
- esac;;
- esac
-
- if
- $posix_mkdir && (
- umask $mkdir_umask &&
- $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
- )
- then :
- else
-
- # The umask is ridiculous, or mkdir does not conform to POSIX,
- # or it failed possibly due to a race condition. Create the
- # directory the slow way, step by step, checking for races as we go.
-
- case $dstdir in
- /*) prefix='/';;
- -*) prefix='./';;
- *) prefix='';;
- esac
-
- eval "$initialize_posix_glob"
-
- oIFS=$IFS
- IFS=/
- $posix_glob set -f
- set fnord $dstdir
- shift
- $posix_glob set +f
- IFS=$oIFS
-
- prefixes=
-
- for d
- do
- test -z "$d" && continue
-
- prefix=$prefix$d
- if test -d "$prefix"; then
- prefixes=
- else
- if $posix_mkdir; then
- (umask=$mkdir_umask &&
- $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
- # Don't fail if two instances are running concurrently.
- test -d "$prefix" || exit 1
- else
- case $prefix in
- *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
- *) qprefix=$prefix;;
- esac
- prefixes="$prefixes '$qprefix'"
- fi
- fi
- prefix=$prefix/
- done
-
- if test -n "$prefixes"; then
- # Don't fail if two instances are running concurrently.
- (umask $mkdir_umask &&
- eval "\$doit_exec \$mkdirprog $prefixes") ||
- test -d "$dstdir" || exit 1
- obsolete_mkdir_used=true
- fi
- fi
- fi
-
- if test -n "$dir_arg"; then
- { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
- { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
- { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
- test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
- else
-
- # Make a couple of temp file names in the proper directory.
- dsttmp=$dstdir/_inst.$$_
- rmtmp=$dstdir/_rm.$$_
-
- # Trap to clean up those temp files at exit.
- trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
-
- # Copy the file name to the temp name.
- (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
-
- # and set any options; do chmod last to preserve setuid bits.
- #
- # If any of these fail, we abort the whole thing. If we want to
- # ignore errors from any of these, just make sure not to ignore
- # errors from the above "$doit $cpprog $src $dsttmp" command.
- #
- { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
- { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
- { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
- { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
-
- # If -C, don't bother to copy if it wouldn't change the file.
- if $copy_on_change &&
- old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
- new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
-
- eval "$initialize_posix_glob" &&
- $posix_glob set -f &&
- set X $old && old=:$2:$4:$5:$6 &&
- set X $new && new=:$2:$4:$5:$6 &&
- $posix_glob set +f &&
-
- test "$old" = "$new" &&
- $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
- then
- rm -f "$dsttmp"
- else
- # Rename the file to the real destination.
- $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
-
- # The rename failed, perhaps because mv can't rename something else
- # to itself, or perhaps because mv is so ancient that it does not
- # support -f.
- {
- # Now remove or move aside any old file at destination location.
- # We try this two ways since rm can't unlink itself on some
- # systems and the destination file might be busy for other
- # reasons. In this case, the final cleanup might fail but the new
- # file should still install successfully.
- {
- test ! -f "$dst" ||
- $doit $rmcmd -f "$dst" 2>/dev/null ||
- { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
- { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
- } ||
- { echo "$0: cannot unlink or rename $dst" >&2
- (exit 1); exit 1
- }
- } &&
-
- # Now rename the file to the real destination.
- $doit $mvcmd "$dsttmp" "$dst"
- }
- fi || exit 1
-
- trap '' 0
- fi
-done
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<Project xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+ xmlns:foaf="http://xmlns.com/foaf/0.1/"
+ xmlns:gnome="http://api.gnome.org/doap-extensions#"
+ xmlns="http://usefulinc.com/ns/doap#">
+ <name>JSON-GLib</name>
+ <shortname>json-glib</shortname>
+ <shortdesc>GLib-based JSON manipulation library</shortdesc>
+ <description>JSON-GLib implements a full JSON parser using GLib and GObject. Use JSON-GLib it is possible to parse and generate valid JSON data structures, using a DOM-like API. JSON-GLib also offers GObject integration, providing the ability to serialize and deserialize GObject instances to and from JSON data types.</description>
+
+ <homepage rdf:resource="https://wiki.gnome.org/Projects/JsonGlib"/>
+ <license rdf:resource="http://usefulinc.com/doap/licenses/lgpl"/>
+ <download-page rdf:resource="http://download.gnome.org/sources/json-glib/" />
+ <bug-database rdf:resource="https://bugzilla.gnome.org/enter_bug.cgi?product=json-glib"/>
+
+ <category rdf:resource="http://api.gnome.org/doap-extensions#development"/>
+
+ <programming-language>C</programming-language>
+
+ <maintainer>
+ <foaf:Person>
+ <foaf:name>Emmanuele Bassi</foaf:name>
+ <foaf:mbox rdf:resource="mailto:ebassi@gnome.org"/>
+ <gnome:userid>ebassi</gnome:userid>
+ </foaf:Person>
+ </maintainer>
+
+ <author>
+ <foaf:Person>
+ <foaf:name>Emmanuele Bassi</foaf:name>
+ <foaf:mbox rdf:resource="mailto:ebassi@gnome.org"/>
+ <gnome:userid>ebassi</gnome:userid>
+ </foaf:Person>
+ </author>
+
+</Project>
+++ /dev/null
-prefix=@prefix@
-exec_prefix=${prefix}
-libdir=${exec_prefix}/lib
-includedir=${exec_prefix}/include/json-glib-1.0
-
-Name: JSON-GLib
-Description: JSON Parser for GLib
-Version: @VERSION@
-Libs: -L${libdir} -ljson-glib-1.0
-Cflags: -I${includedir} -I${includedir}/json-glib/
-Requires: gobject-2.0
-include $(top_srcdir)/build/autotools/Makefile.am.gtest
-include $(top_srcdir)/build/autotools/Makefile.am.silent
-
-if ENABLE_GLIB_TEST
-# build this directory *before* the tests/
-SUBDIRS = . tests
-endif
-
-DIST_SUBDIRS = tests
+# preamble
NULL =
-
-INCLUDES = -I$(top_srcdir)
-
-AM_CPPFLAGS = \
- -DPREFIX=\""$(prefix)"\" \
- -DLIBDIR=\""$(libdir)"\" \
- -DJSON_COMPILATION=1 \
- -DG_DISABLE_DEPRECATED \
- -DJSON_DISABLE_DEPRECATED \
- -DG_LOG_DOMAIN=\"Json\" \
- $(JSON_DEBUG_CFLAGS) \
- $(NULL)
-
-AM_CFLAGS = $(JSON_CFLAGS) $(MAINTAINER_CFLAGS)
-
+AM_CPPFLAGS =
+AM_CFLAGS =
BUILT_SOURCES =
-
CLEANFILES =
-DISTCLEANFILES = json-version.h
+EXTRA_DIST =
+DISTCLEANFILES =
+lib_LTLIBRARIES =
+bin_PROGRAMS =
+
+# build the tests last
+SUBDIRS = . tests
+# main library
source_h = \
+ $(top_srcdir)/json-glib/json-builder.h \
$(top_srcdir)/json-glib/json-generator.h \
$(top_srcdir)/json-glib/json-gobject.h \
+ $(top_srcdir)/json-glib/json-gvariant.h \
$(top_srcdir)/json-glib/json-parser.h \
+ $(top_srcdir)/json-glib/json-path.h \
+ $(top_srcdir)/json-glib/json-reader.h \
$(top_srcdir)/json-glib/json-types.h \
+ $(top_srcdir)/json-glib/json-version-macros.h \
$(NULL)
source_h_private = \
- $(top_srcdir)/json-glib/json-scanner.h \
+ $(top_srcdir)/json-glib/json-debug.h \
$(top_srcdir)/json-glib/json-gobject-private.h \
+ $(top_srcdir)/json-glib/json-scanner.h \
$(top_srcdir)/json-glib/json-types-private.h \
$(NULL)
source_c = \
$(srcdir)/json-array.c \
+ $(srcdir)/json-builder.c \
+ $(srcdir)/json-debug.c \
$(srcdir)/json-gboxed.c \
$(srcdir)/json-generator.c \
$(srcdir)/json-gobject.c \
+ $(srcdir)/json-gvariant.c \
$(srcdir)/json-node.c \
$(srcdir)/json-object.c \
$(srcdir)/json-parser.c \
+ $(srcdir)/json-path.c \
+ $(srcdir)/json-reader.c \
$(srcdir)/json-scanner.c \
$(srcdir)/json-serializable.c \
+ $(srcdir)/json-value.c \
$(NULL)
+DISTCLEANFILES += json-version.h
+
# glib-mkenums rules
glib_enum_h = json-enum-types.h
glib_enum_c = json-enum-types.c
glib_marshal_prefix = _json_marshal
include $(top_srcdir)/build/autotools/Makefile.am.marshal
-lib_LTLIBRARIES = libjson-glib-1.0.la
-
+lib_LTLIBRARIES += libjson-glib-1.0.la
+
+libjson_glib_1_0_la_CPPFLAGS = \
+ -DPREFIX=\""$(prefix)"\" \
+ -DLIBDIR=\""$(libdir)"\" \
+ -DJSON_LOCALEDIR=\""$(localedir)"\" \
+ -DJSON_COMPILATION=1 \
+ -DG_LOG_DOMAIN=\"Json\" \
+ -I$(top_srcdir) \
+ -I$(top_builddir) \
+ $(JSON_DEBUG_CFLAGS) \
+ $(NULL)
+libjson_glib_1_0_la_CFLAGS = $(JSON_CFLAGS) $(JSON_HIDDEN_VISIBILITY_CFLAG) $(MAINTAINER_CFLAGS) $(JSON_GCOV_CFLAGS)
libjson_glib_1_0_la_LIBADD = $(JSON_LIBS)
libjson_glib_1_0_la_SOURCES = $(source_c) $(source_h) $(source_h_private) $(BUILT_SOURCES)
-libjson_glib_1_0_la_LDFLAGS = $(JSON_LT_LDFLAGS) -export-dynamic -export-symbols-regex "^json.*" -rpath $(libdir)
+libjson_glib_1_0_la_LDFLAGS = $(JSON_LT_LDFLAGS) $(JSON_GCOV_LDADD) -export-dynamic
jsonincludedir = $(includedir)/json-glib-1.0/json-glib
jsoninclude_DATA = \
$(top_srcdir)/json-glib/json-glib.h \
$(NULL)
-EXTRA_DIST += json-version.h.in json-glib.h
+EXTRA_DIST += json-version.h.in json-glib.h json-version.h
+
+pcfiles = json-glib-1.0.pc
+
+json-glib-1.0.pc: json-glib.pc
+ $(AM_V_GEN)cp -f $< $@
+
+pkgconfig_DATA = $(pcfiles)
+pkgconfigdir = $(libdir)/pkgconfig
+CLEANFILES += $(pcfiles)
+EXTRA_DIST += json-glib.pc.in
+
+# tools
+bin_PROGRAMS += json-glib-validate
+json_glib_validate_CPPFLAGS = -I$(top_srcdir) -I$(top_builddir) -DJSON_LOCALEDIR=\""$(localedir)"\"
+json_glib_validate_CFLAGS = $(JSON_CFLAGS) $(MAINTAINER_CFLAGS)
+json_glib_validate_SOURCES = json-glib-validate.c
+json_glib_validate_LDADD = $(JSON_LIBS) libjson-glib-1.0.la
+
+bin_PROGRAMS += json-glib-format
+json_glib_format_CPPFLAGS = -I$(top_srcdir) -I$(top_builddir) -DJSON_LOCALEDIR=\""$(localedir)"\"
+json_glib_format_CFLAGS = $(JSON_CFLAGS) $(MAINTAINER_CFLAGS)
+json_glib_format_SOURCES = json-glib-format.c
+json_glib_format_LDADD = $(JSON_LIBS) libjson-glib-1.0.la
-TESTS_ENVIRONMENT = srcdir="$(srcdir)" json_all_c_sources="$(source_c)"
+# intospection
+-include $(INTROSPECTION_MAKEFILE)
if HAVE_INTROSPECTION
-BUILT_GIRSOURCES =
-
-Json-1.0.gir: $(INTROSPECTION_SCANNER) libjson-glib-1.0.la
- $(QUIET_GEN)$(INTROSPECTION_SCANNER) \
- -v --namespace Json --nsversion=1.0 \
- $(INCLUDES) \
- $(AM_CPPFLAGS) \
- --c-include='json-glib/json-gobject.h' \
- --include=GObject-2.0 \
- --library=libjson-glib-1.0.la \
- --libtool="$(top_builddir)/libtool" \
- --pkg gobject-2.0 \
- --output $@ \
- $(source_h) \
- $(source_c)
-
-BUILT_GIRSOURCES += Json-1.0.gir
-
-# INTROSPECTION_GIRDIR/INTROSPECTION_TYPELIBDIR aren't the right place to
-# install anything - we need to install inside our prefix.
+INTROSPECTION_GIRS = Json-1.0.gir
+
+introspection_source = \
+ $(source_c) \
+ $(source_h) \
+ $(top_builddir)/json-glib/json-enum-types.h \
+ $(top_builddir)/json-glib/json-enum-types.c \
+ $(top_builddir)/json-glib/json-version.h
+
+Json-1.0.gir: libjson-glib-1.0.la Makefile
+
+Json_1_0_gir_NAMESPACE = Json
+Json_1_0_gir_VERSION = 1.0
+Json_1_0_gir_LIBS = libjson-glib-1.0.la
+Json_1_0_gir_FILES = $(introspection_source)
+Json_1_0_gir_CFLAGS = -DJSON_COMPILATION=1 -I$(top_srcdir) -I$(top_builddir) $(JSON_CFLAGS)
+Json_1_0_gir_INCLUDES = GObject-2.0 Gio-2.0
+Json_1_0_gir_SCANNERFLAGS = --warn-all --pkg-export json-glib-1.0 --c-include "json-glib/json-glib.h"
+
girdir = $(datadir)/gir-1.0
-gir_DATA = $(BUILT_GIRSOURCES)
+dist_gir_DATA = Json-1.0.gir
typelibsdir = $(libdir)/girepository-1.0/
-typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
-
-%.typelib: %.gir $(INTROSPECTION_COMPILER)
- $(QUIET_GEN)\
- $(DEBUG) $(INTROSPECTION_COMPILER) \
- --includedir=$(srcdir) \
- --includedir=. \
- $(INTROSPECTION_COMPILER_OPTS) $< \
- -o $(@F)
+typelibs_DATA = Json-1.0.typelib
-CLEANFILES += $(BUILT_GIRSOURCES) $(typelibs_DATA)
+CLEANFILES += $(dist_gir_DATA) $(typelibs_DATA)
endif # HAVE_INTROSPECTION
+
+# visual studio
+dist-hook: ../build/win32/vs9/json-glib.vcproj ../build/win32/vs10/json-glib.vcxproj ../build/win32/vs10/json-glib.vcxproj.filters
+
+../build/win32/vs9/json-glib.vcproj: $(top_srcdir)/build/win32/vs9/json-glib.vcprojin
+ for F in $(libjson_glib_1_0_la_SOURCES); do \
+ case $$F in \
+ *.c) echo ' <File RelativePath="..\..\..\json-glib\'$$F'" />' \
+ ;; \
+ esac; \
+ done >jsonglib.sourcefiles
+ $(CPP) -P - <$(top_srcdir)/build/win32/vs9/json-glib.vcprojin >$@
+ rm jsonglib.sourcefiles
+
+../build/win32/vs10/json-glib.vcxproj: $(top_srcdir)/build/win32/vs10/json-glib.vcxprojin
+ for F in $(libjson_glib_1_0_la_SOURCES); do \
+ case $$F in \
+ *.c) echo ' <ClCompile Include="..\..\..\json-glib\'$$F'" />' \
+ ;; \
+ esac; \
+ done >jsonglib.vs10.sourcefiles
+ $(CPP) -P - <$(top_srcdir)/build/win32/vs10/json-glib.vcxprojin >$@
+ rm jsonglib.vs10.sourcefiles
+
+../build/win32/vs10/json-glib.vcxproj.filters: $(top_srcdir)/build/win32/vs10/json-glib.vcxproj.filtersin
+ for F in $(libjson_glib_1_0_la_SOURCES); do \
+ case $$F in \
+ *.c) echo ' <ClCompile Include="..\..\..\json-glib\'$$F'"><Filter>Sources</Filter></ClCompile>' \
+ ;; \
+ esac; \
+ done >jsonglib.vs10.sourcefiles.filters
+ $(CPP) -P - <$(top_srcdir)/build/win32/vs10/json-glib.vcxproj.filtersin >$@
+ rm jsonglib.vs10.sourcefiles.filters
+
+# Let the VS9/VS10 Project files be cleared out before they are re-expanded...
+DISTCLEANFILES += ../build/win32/vs9/json-glib.vcproj \
+ ../build/win32/vs10/json-glib.vcxproj \
+ ../build/win32/vs10/json-glib.vcxproj.filters
* Emmanuele Bassi <ebassi@linux.intel.com>
*/
-#ifdef HAVE_CONFIG_H
#include "config.h"
-#endif
#include "json-types-private.h"
* @short_description: a JSON array representation
*
* #JsonArray is the representation of the array type inside JSON. It contains
- * #JsonNode<!-- -->s, which may contain fundamental types, other arrays or
+ * #JsonNode elements, which may contain fundamental types, other arrays or
* objects.
*
* Since arrays can be expensive, they are reference counted. You can control
* To retrieve the length of the array, use json_array_get_length().
*/
-GType
-json_array_get_type (void)
-{
- static GType array_type = 0;
-
- if (G_UNLIKELY (!array_type))
- array_type = g_boxed_type_register_static (g_intern_static_string ("JsonArray"),
- (GBoxedCopyFunc) json_array_ref,
- (GBoxedFreeFunc) json_array_unref);
-
- return array_type;
-}
+G_DEFINE_BOXED_TYPE (JsonArray, json_array, json_array_ref, json_array_unref);
/**
- * json_array_new:
+ * json_array_new: (constructor)
*
* Creates a new #JsonArray.
*
- * Return value: the newly created #JsonArray
+ * Return value: (transfer full): the newly created #JsonArray
*/
JsonArray *
json_array_new (void)
}
/**
- * json_array_sized_new:
+ * json_array_sized_new: (constructor)
* @n_elements: number of slots to pre-allocate
*
* Creates a new #JsonArray with @n_elements slots already allocated.
*
- * Return value: the newly created #JsonArray
+ * Return value: (transfer full): the newly created #JsonArray
*/
JsonArray *
json_array_sized_new (guint n_elements)
*
* Increase by one the reference count of a #JsonArray.
*
- * Return value: the passed #JsonArray, with the reference count
+ * Return value: (transfer none): the passed #JsonArray, with the reference count
* increased by one.
*/
JsonArray *
g_return_val_if_fail (array != NULL, NULL);
g_return_val_if_fail (array->ref_count > 0, NULL);
-#if !GLIB_CHECK_VERSION(2, 31, 0)
- g_atomic_int_exchange_and_add (&array->ref_count, 1);
-#else
g_atomic_int_add (&array->ref_count, 1);
-#endif
+
return array;
}
void
json_array_unref (JsonArray *array)
{
- gint old_ref;
-
g_return_if_fail (array != NULL);
g_return_if_fail (array->ref_count > 0);
- old_ref = g_atomic_int_get (&array->ref_count);
- if (old_ref > 1)
- g_atomic_int_compare_and_exchange (&array->ref_count, old_ref, old_ref - 1);
- else
+ if (g_atomic_int_dec_and_test (&array->ref_count))
{
guint i;
* json_array_get_elements:
* @array: a #JsonArray
*
- * Gets the elements of a #JsonArray as a list of #JsonNode<!-- -->s.
+ * Gets the elements of a #JsonArray as a list of #JsonNode instances.
*
* Return value: (element-type JsonNode) (transfer container): a #GList
* containing the elements of the array. The contents of the list are
* Retrieves the #JsonNode containing the value of the element at @index_
* inside a #JsonArray.
*
- * Return value: a pointer to the #JsonNode at the requested index
+ * Return value: (transfer none): a pointer to the #JsonNode at the requested index
*/
JsonNode *
json_array_get_element (JsonArray *array,
*
* Since: 0.8
*/
-#if !GLIB_CHECK_VERSION(2, 31, 0)
-G_CONST_RETURN gchar *
-json_array_get_string_element (JsonArray *array,
- guint index_)
-#else
const gchar *
json_array_get_string_element (JsonArray *array,
guint index_)
-#endif
{
JsonNode *node;
node = g_ptr_array_index (array->elements, index_);
g_return_val_if_fail (node != NULL, NULL);
- g_return_val_if_fail (JSON_NODE_TYPE (node) == JSON_NODE_VALUE, NULL);
+ g_return_val_if_fail (JSON_NODE_HOLDS_VALUE (node) || JSON_NODE_HOLDS_NULL (node), NULL);
+
+ if (JSON_NODE_HOLDS_NULL (node))
+ return NULL;
return json_node_get_string (node);
}
node = g_ptr_array_index (array->elements, index_);
g_return_val_if_fail (node != NULL, FALSE);
- return JSON_NODE_TYPE (node) == JSON_NODE_NULL;
+ if (JSON_NODE_HOLDS_NULL (node))
+ return TRUE;
+
+ if (JSON_NODE_HOLDS_ARRAY (node))
+ return json_node_get_array (node) == NULL;
+
+ if (JSON_NODE_HOLDS_OBJECT (node))
+ return json_node_get_object (node) == NULL;
+
+ return FALSE;
}
/**
node = g_ptr_array_index (array->elements, index_);
g_return_val_if_fail (node != NULL, NULL);
- g_return_val_if_fail (JSON_NODE_TYPE (node) == JSON_NODE_ARRAY, NULL);
+ g_return_val_if_fail (JSON_NODE_HOLDS_ARRAY (node) || JSON_NODE_HOLDS_NULL (node), NULL);
+
+ if (JSON_NODE_HOLDS_NULL (node))
+ return NULL;
return json_node_get_array (node);
}
node = g_ptr_array_index (array->elements, index_);
g_return_val_if_fail (node != NULL, NULL);
- g_return_val_if_fail (JSON_NODE_TYPE (node) == JSON_NODE_OBJECT, NULL);
+ g_return_val_if_fail (JSON_NODE_HOLDS_OBJECT (node) || JSON_NODE_HOLDS_NULL (node), NULL);
+
+ if (JSON_NODE_HOLDS_NULL (node))
+ return NULL;
return json_node_get_object (node);
}
/**
* json_array_add_element:
* @array: a #JsonArray
- * @node: a #JsonNode
+ * @node: (transfer full): a #JsonNode
*
* Appends @node inside @array. The array will take ownership of the
* #JsonNode.
json_array_add_int_element (JsonArray *array,
gint64 value)
{
- JsonNode *node;
-
g_return_if_fail (array != NULL);
- node = json_node_new (JSON_NODE_VALUE);
- json_node_set_int (node, value);
-
- g_ptr_array_add (array->elements, node);
+ g_ptr_array_add (array->elements, json_node_init_int (json_node_alloc (), value));
}
/**
json_array_add_double_element (JsonArray *array,
gdouble value)
{
- JsonNode *node;
-
g_return_if_fail (array != NULL);
- node = json_node_new (JSON_NODE_VALUE);
- json_node_set_double (node, value);
-
- g_ptr_array_add (array->elements, node);
+ g_ptr_array_add (array->elements, json_node_init_double (json_node_alloc (), value));
}
/**
json_array_add_boolean_element (JsonArray *array,
gboolean value)
{
- JsonNode *node;
-
g_return_if_fail (array != NULL);
- node = json_node_new (JSON_NODE_VALUE);
- json_node_set_boolean (node, value);
-
- g_ptr_array_add (array->elements, node);
+ g_ptr_array_add (array->elements, json_node_init_boolean (json_node_alloc (), value));
}
/**
JsonNode *node;
g_return_if_fail (array != NULL);
- g_return_if_fail (value != NULL);
- node = json_node_new (JSON_NODE_VALUE);
- json_node_set_string (node, value);
+ node = json_node_alloc ();
+
+ if (value != NULL && *value != '\0')
+ json_node_init_string (node, value);
+ else
+ json_node_init_null (node);
g_ptr_array_add (array->elements, node);
}
void
json_array_add_null_element (JsonArray *array)
{
- JsonNode *node;
-
g_return_if_fail (array != NULL);
- node = json_node_new (JSON_NODE_NULL);
-
- g_ptr_array_add (array->elements, node);
+ g_ptr_array_add (array->elements, json_node_init_null (json_node_alloc ()));
}
/**
* json_array_add_array_element:
* @array: a #JsonArray
- * @value: a #JsonArray
+ * @value: (allow-none) (transfer full): a #JsonArray
*
* Conveniently adds an array into @array. The @array takes ownership
* of the newly added #JsonArray
JsonNode *node;
g_return_if_fail (array != NULL);
- g_return_if_fail (value != NULL);
- node = json_node_new (JSON_NODE_ARRAY);
- json_node_take_array (node, value);
+ node = json_node_alloc ();
+
+ if (value != NULL)
+ {
+ json_node_init_array (node, value);
+ json_array_unref (value);
+ }
+ else
+ json_node_init_null (node);
g_ptr_array_add (array->elements, node);
}
/**
* json_array_add_object_element:
* @array: a #JsonArray
- * @value: a #JsonObject
+ * @value: (transfer full): a #JsonObject
*
* Conveniently adds an object into @array. The @array takes ownership
* of the newly added #JsonObject
JsonNode *node;
g_return_if_fail (array != NULL);
- g_return_if_fail (value != NULL);
- node = json_node_new (JSON_NODE_OBJECT);
- json_node_take_object (node, value);
+ node = json_node_alloc ();
+
+ if (value != NULL)
+ {
+ json_node_init_object (node, value);
+ json_object_unref (value);
+ }
+ else
+ json_node_init_null (node);
g_ptr_array_add (array->elements, node);
}
/**
* json_array_foreach_element:
* @array: a #JsonArray
- * @func: the function to be called on each element
- * @data: (allow-none): data to be passed to the function
+ * @func: (scope call): the function to be called on each element
+ * @data: (closure): data to be passed to the function
*
* Iterates over all elements of @array and calls @func on
* each one of them.
--- /dev/null
+/* json-generator.c - JSON tree builder
+ *
+ * This file is part of JSON-GLib
+ * Copyright (C) 2010 Luca Bruno <lethalman88@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Author:
+ * Luca Bruno <lethalman88@gmail.com>
+ */
+
+/**
+ * SECTION:json-builder
+ * @Title: JsonBuilder
+ * @short_description: Generates JSON trees
+ * @See_Also: JsonGenerator
+ *
+ * #JsonBuilder provides an object for generating a JSON tree.
+ * You can generate only one tree with one #JsonBuilder instance.
+ *
+ * The root of the JSON tree can be either a #JsonObject or a #JsonArray.
+ * Thus the first call must necessarily be either
+ * json_builder_begin_object() or json_builder_begin_array().
+ *
+ * For convenience to language bindings, #JsonBuilder returns itself from
+ * most of functions, making it easy to chain function calls.
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "json-types-private.h"
+
+#include "json-builder.h"
+
+struct _JsonBuilderPrivate
+{
+ GQueue *stack;
+ JsonNode *root;
+};
+
+typedef enum
+{
+ JSON_BUILDER_MODE_OBJECT,
+ JSON_BUILDER_MODE_ARRAY,
+ JSON_BUILDER_MODE_MEMBER
+} JsonBuilderMode;
+
+typedef struct
+{
+ JsonBuilderMode mode;
+
+ union
+ {
+ JsonObject *object;
+ JsonArray *array;
+ } data;
+ gchar *member_name;
+} JsonBuilderState;
+
+static void
+json_builder_state_free (JsonBuilderState *state)
+{
+ if (G_LIKELY (state))
+ {
+ switch (state->mode)
+ {
+ case JSON_BUILDER_MODE_OBJECT:
+ case JSON_BUILDER_MODE_MEMBER:
+ json_object_unref (state->data.object);
+ g_free (state->member_name);
+ state->data.object = NULL;
+ state->member_name = NULL;
+ break;
+
+ case JSON_BUILDER_MODE_ARRAY:
+ json_array_unref (state->data.array);
+ state->data.array = NULL;
+ break;
+
+ default:
+ g_assert_not_reached ();
+ }
+
+ g_slice_free (JsonBuilderState, state);
+ }
+}
+
+G_DEFINE_TYPE_WITH_PRIVATE (JsonBuilder, json_builder, G_TYPE_OBJECT)
+
+static void
+json_builder_free_all_state (JsonBuilder *builder)
+{
+ JsonBuilderState *state;
+
+ while (!g_queue_is_empty (builder->priv->stack))
+ {
+ state = g_queue_pop_head (builder->priv->stack);
+ json_builder_state_free (state);
+ }
+
+ if (builder->priv->root)
+ {
+ json_node_free (builder->priv->root);
+ builder->priv->root = NULL;
+ }
+}
+
+static void
+json_builder_finalize (GObject *gobject)
+{
+ JsonBuilderPrivate *priv = json_builder_get_instance_private ((JsonBuilder *) gobject);
+
+ json_builder_free_all_state (JSON_BUILDER (gobject));
+
+ g_queue_free (priv->stack);
+ priv->stack = NULL;
+
+ G_OBJECT_CLASS (json_builder_parent_class)->finalize (gobject);
+}
+
+static void
+json_builder_class_init (JsonBuilderClass *klass)
+{
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+ gobject_class->finalize = json_builder_finalize;
+}
+
+static void
+json_builder_init (JsonBuilder *builder)
+{
+ JsonBuilderPrivate *priv = json_builder_get_instance_private (builder);
+
+ builder->priv = priv;
+
+ priv->stack = g_queue_new ();
+ priv->root = NULL;
+}
+
+static inline JsonBuilderMode
+json_builder_current_mode (JsonBuilder *builder)
+{
+ JsonBuilderState *state = g_queue_peek_head (builder->priv->stack);
+ return state->mode;
+}
+
+static inline gboolean
+json_builder_is_valid_add_mode (JsonBuilder *builder)
+{
+ JsonBuilderMode mode = json_builder_current_mode (builder);
+ return mode == JSON_BUILDER_MODE_MEMBER || mode == JSON_BUILDER_MODE_ARRAY;
+}
+
+/**
+ * json_builder_new:
+ *
+ * Creates a new #JsonBuilder. You can use this object to generate a
+ * JSON tree and obtain the root #JsonNode.
+ *
+ * Return value: the newly created #JsonBuilder instance
+ */
+JsonBuilder *
+json_builder_new (void)
+{
+ return g_object_new (JSON_TYPE_BUILDER, NULL);
+}
+
+/**
+ * json_builder_get_root:
+ * @builder: a #JsonBuilder
+ *
+ * Returns the root of the current constructed tree, if the build is complete
+ * (ie: all opened objects, object members and arrays are being closed).
+ *
+ * Return value: (transfer full): the #JsonNode, or %NULL if the build is not complete.
+ * Free the returned value with json_node_free().
+ */
+JsonNode *
+json_builder_get_root (JsonBuilder *builder)
+{
+ JsonNode *root = NULL;
+
+ g_return_val_if_fail (JSON_IS_BUILDER (builder), NULL);
+
+ if (builder->priv->root)
+ root = json_node_copy (builder->priv->root);
+
+ return root;
+}
+
+/**
+ * json_builder_reset:
+ * @builder: a #JsonBuilder
+ *
+ * Resets the state of the @builder back to its initial state.
+ */
+void
+json_builder_reset (JsonBuilder *builder)
+{
+ g_return_if_fail (JSON_IS_BUILDER (builder));
+
+ json_builder_free_all_state (builder);
+}
+
+/**
+ * json_builder_begin_object:
+ * @builder: a #JsonBuilder
+ *
+ * Opens a subobject inside the given @builder. When done adding members to
+ * the subobject, json_builder_end_object() must be called.
+ *
+ * Can be called for first or only if the call is associated to an object member
+ * or an array element.
+ *
+ * Return value: (transfer none): the #JsonBuilder, or %NULL if the call was inconsistent
+ */
+JsonBuilder *
+json_builder_begin_object (JsonBuilder *builder)
+{
+ JsonObject *object;
+ JsonBuilderState *state;
+ JsonBuilderState *cur_state;
+
+ g_return_val_if_fail (JSON_IS_BUILDER (builder), NULL);
+ g_return_val_if_fail (builder->priv->root == NULL, NULL);
+ g_return_val_if_fail (g_queue_is_empty (builder->priv->stack) || json_builder_is_valid_add_mode (builder), NULL);
+
+ object = json_object_new ();
+ cur_state = g_queue_peek_head (builder->priv->stack);
+ if (cur_state)
+ {
+ switch (cur_state->mode)
+ {
+ case JSON_BUILDER_MODE_ARRAY:
+ json_array_add_object_element (cur_state->data.array, json_object_ref (object));
+ break;
+
+ case JSON_BUILDER_MODE_MEMBER:
+ json_object_set_object_member (cur_state->data.object, cur_state->member_name, json_object_ref (object));
+ g_free (cur_state->member_name);
+ cur_state->member_name = NULL;
+ cur_state->mode = JSON_BUILDER_MODE_OBJECT;
+ break;
+
+ default:
+ g_assert_not_reached ();
+ }
+ }
+
+ state = g_slice_new (JsonBuilderState);
+ state->data.object = object;
+ state->member_name = NULL;
+ state->mode = JSON_BUILDER_MODE_OBJECT;
+ g_queue_push_head (builder->priv->stack, state);
+
+ return builder;
+}
+
+/**
+ * json_builder_end_object:
+ * @builder: a #JsonBuilder
+ *
+ * Closes the subobject inside the given @builder that was opened by the most
+ * recent call to json_builder_begin_object().
+ *
+ * Cannot be called after json_builder_set_member_name().
+ *
+ * Return value: (transfer none): the #JsonBuilder, or %NULL if the call was inconsistent
+ */
+JsonBuilder *
+json_builder_end_object (JsonBuilder *builder)
+{
+ JsonBuilderState *state;
+
+ g_return_val_if_fail (JSON_IS_BUILDER (builder), NULL);
+ g_return_val_if_fail (!g_queue_is_empty (builder->priv->stack), NULL);
+ g_return_val_if_fail (json_builder_current_mode (builder) == JSON_BUILDER_MODE_OBJECT, NULL);
+
+ state = g_queue_pop_head (builder->priv->stack);
+
+ if (g_queue_is_empty (builder->priv->stack))
+ {
+ builder->priv->root = json_node_new (JSON_NODE_OBJECT);
+ json_node_take_object (builder->priv->root, json_object_ref (state->data.object));
+ }
+
+ json_builder_state_free (state);
+
+ return builder;
+}
+
+/**
+ * json_builder_begin_array:
+ * @builder: a #JsonBuilder
+ *
+ * Opens a subarray inside the given @builder. When done adding members to
+ * the subarray, json_builder_end_array() must be called.
+ *
+ * Can be called for first or only if the call is associated to an object member
+ * or an array element.
+ *
+ * Return value: (transfer none): the #JsonBuilder, or %NULL if the call was inconsistent
+ */
+JsonBuilder *
+json_builder_begin_array (JsonBuilder *builder)
+{
+ JsonArray *array;
+ JsonBuilderState *state;
+ JsonBuilderState *cur_state;
+
+ g_return_val_if_fail (JSON_IS_BUILDER (builder), NULL);
+ g_return_val_if_fail (builder->priv->root == NULL, NULL);
+ g_return_val_if_fail (g_queue_is_empty (builder->priv->stack) || json_builder_is_valid_add_mode (builder), NULL);
+
+ array = json_array_new ();
+ cur_state = g_queue_peek_head (builder->priv->stack);
+ if (cur_state)
+ {
+ switch (cur_state->mode)
+ {
+ case JSON_BUILDER_MODE_ARRAY:
+ json_array_add_array_element (cur_state->data.array, json_array_ref (array));
+ break;
+
+ case JSON_BUILDER_MODE_MEMBER:
+ json_object_set_array_member (cur_state->data.object, cur_state->member_name, json_array_ref (array));
+ g_free (cur_state->member_name);
+ cur_state->member_name = NULL;
+ cur_state->mode = JSON_BUILDER_MODE_OBJECT;
+ break;
+
+ default:
+ g_assert_not_reached ();
+ }
+ }
+
+ state = g_slice_new (JsonBuilderState);
+ state->data.array = array;
+ state->mode = JSON_BUILDER_MODE_ARRAY;
+ g_queue_push_head (builder->priv->stack, state);
+
+ return builder;
+}
+
+/**
+ * json_builder_end_array:
+ * @builder: a #JsonBuilder
+ *
+ * Closes the subarray inside the given @builder that was opened by the most
+ * recent call to json_builder_begin_array().
+ *
+ * Cannot be called after json_builder_set_member_name().
+ *
+ * Return value: (transfer none): the #JsonBuilder, or %NULL if the call was inconsistent
+ */
+JsonBuilder *
+json_builder_end_array (JsonBuilder *builder)
+{
+ JsonBuilderState *state;
+
+ g_return_val_if_fail (JSON_IS_BUILDER (builder), NULL);
+ g_return_val_if_fail (!g_queue_is_empty (builder->priv->stack), NULL);
+ g_return_val_if_fail (json_builder_current_mode (builder) == JSON_BUILDER_MODE_ARRAY, NULL);
+
+ state = g_queue_pop_head (builder->priv->stack);
+
+ if (g_queue_is_empty (builder->priv->stack))
+ {
+ builder->priv->root = json_node_new (JSON_NODE_ARRAY);
+ json_node_take_array (builder->priv->root, json_array_ref (state->data.array));
+ }
+
+ json_builder_state_free (state);
+
+ return builder;
+}
+
+/**
+ * json_builder_set_member_name:
+ * @builder: a #JsonBuilder
+ * @member_name: the name of the member
+ *
+ * Set the name of the next member in an object. The next call must add a value,
+ * open an object or an array.
+ *
+ * Can be called only if the call is associated to an object.
+ *
+ * Return value: (transfer none): the #JsonBuilder, or %NULL if the call was inconsistent
+ */
+JsonBuilder *
+json_builder_set_member_name (JsonBuilder *builder,
+ const gchar *member_name)
+{
+ JsonBuilderState *state;
+
+ g_return_val_if_fail (JSON_IS_BUILDER (builder), NULL);
+ g_return_val_if_fail (member_name != NULL, NULL);
+ g_return_val_if_fail (!g_queue_is_empty (builder->priv->stack), NULL);
+ g_return_val_if_fail (json_builder_current_mode (builder) == JSON_BUILDER_MODE_OBJECT, NULL);
+
+ state = g_queue_peek_head (builder->priv->stack);
+ state->member_name = g_strdup (member_name);
+ state->mode = JSON_BUILDER_MODE_MEMBER;
+
+ return builder;
+}
+
+/**
+ * json_builder_add_value:
+ * @builder: a #JsonBuilder
+ * @node: the value of the member or element
+ *
+ * If called after json_builder_set_member_name(), sets @node as member of the
+ * most recent opened object, otherwise @node is added as element of the most
+ * recent opened array.
+ *
+ * Return value: (transfer none): the #JsonBuilder, or %NULL if the call was inconsistent
+ */
+JsonBuilder *
+json_builder_add_value (JsonBuilder *builder,
+ JsonNode *node)
+{
+ JsonBuilderState *state;
+
+ g_return_val_if_fail (JSON_IS_BUILDER (builder), NULL);
+ g_return_val_if_fail (node != NULL, NULL);
+ g_return_val_if_fail (!g_queue_is_empty (builder->priv->stack), NULL);
+ g_return_val_if_fail (json_builder_is_valid_add_mode (builder), NULL);
+
+ state = g_queue_peek_head (builder->priv->stack);
+ switch (state->mode)
+ {
+ case JSON_BUILDER_MODE_MEMBER:
+ json_object_set_member (state->data.object, state->member_name, node);
+ g_free (state->member_name);
+ state->member_name = NULL;
+ state->mode = JSON_BUILDER_MODE_OBJECT;
+ break;
+
+ case JSON_BUILDER_MODE_ARRAY:
+ json_array_add_element (state->data.array, node);
+ break;
+
+ default:
+ g_assert_not_reached ();
+ }
+
+ return builder;
+}
+
+/**
+ * json_builder_add_int_value:
+ * @builder: a #JsonBuilder
+ * @value: the value of the member or element
+ *
+ * If called after json_builder_set_member_name(), sets @value as member of the
+ * most recent opened object, otherwise @value is added as element of the most
+ * recent opened array.
+ *
+ * See also: json_builder_add_value()
+ *
+ * Return value: (transfer none): the #JsonBuilder, or %NULL if the call was inconsistent
+ */
+JsonBuilder *
+json_builder_add_int_value (JsonBuilder *builder,
+ gint64 value)
+{
+ JsonBuilderState *state;
+
+ g_return_val_if_fail (JSON_IS_BUILDER (builder), NULL);
+ g_return_val_if_fail (!g_queue_is_empty (builder->priv->stack), NULL);
+ g_return_val_if_fail (json_builder_is_valid_add_mode (builder), NULL);
+
+ state = g_queue_peek_head (builder->priv->stack);
+ switch (state->mode)
+ {
+ case JSON_BUILDER_MODE_MEMBER:
+ json_object_set_int_member (state->data.object, state->member_name, value);
+ g_free (state->member_name);
+ state->member_name = NULL;
+ state->mode = JSON_BUILDER_MODE_OBJECT;
+ break;
+
+ case JSON_BUILDER_MODE_ARRAY:
+ json_array_add_int_element (state->data.array, value);
+ break;
+
+ default:
+ g_assert_not_reached ();
+ }
+
+ return builder;
+}
+
+/**
+ * json_builder_add_double_value:
+ * @builder: a #JsonBuilder
+ * @value: the value of the member or element
+ *
+ * If called after json_builder_set_member_name(), sets @value as member of the
+ * most recent opened object, otherwise @value is added as element of the most
+ * recent opened array.
+ *
+ * See also: json_builder_add_value()
+ *
+ * Return value: (transfer none): the #JsonBuilder, or %NULL if the call was inconsistent
+ */
+JsonBuilder *
+json_builder_add_double_value (JsonBuilder *builder,
+ gdouble value)
+{
+ JsonBuilderState *state;
+
+ g_return_val_if_fail (JSON_IS_BUILDER (builder), NULL);
+ g_return_val_if_fail (!g_queue_is_empty (builder->priv->stack), NULL);
+ g_return_val_if_fail (json_builder_is_valid_add_mode (builder), NULL);
+
+ state = g_queue_peek_head (builder->priv->stack);
+
+ switch (state->mode)
+ {
+ case JSON_BUILDER_MODE_MEMBER:
+ json_object_set_double_member (state->data.object, state->member_name, value);
+ g_free (state->member_name);
+ state->member_name = NULL;
+ state->mode = JSON_BUILDER_MODE_OBJECT;
+ break;
+
+ case JSON_BUILDER_MODE_ARRAY:
+ json_array_add_double_element (state->data.array, value);
+ break;
+
+ default:
+ g_assert_not_reached ();
+ }
+
+ return builder;
+}
+
+/**
+ * json_builder_add_boolean_value:
+ * @builder: a #JsonBuilder
+ * @value: the value of the member or element
+ *
+ * If called after json_builder_set_member_name(), sets @value as member of the
+ * most recent opened object, otherwise @value is added as element of the most
+ * recent opened array.
+ *
+ * See also: json_builder_add_value()
+ *
+ * Return value: (transfer none): the #JsonBuilder, or %NULL if the call was inconsistent
+ */
+JsonBuilder *
+json_builder_add_boolean_value (JsonBuilder *builder,
+ gboolean value)
+{
+ JsonBuilderState *state;
+
+ g_return_val_if_fail (JSON_IS_BUILDER (builder), NULL);
+ g_return_val_if_fail (!g_queue_is_empty (builder->priv->stack), NULL);
+ g_return_val_if_fail (json_builder_is_valid_add_mode (builder), NULL);
+
+ state = g_queue_peek_head (builder->priv->stack);
+
+ switch (state->mode)
+ {
+ case JSON_BUILDER_MODE_MEMBER:
+ json_object_set_boolean_member (state->data.object, state->member_name, value);
+ g_free (state->member_name);
+ state->member_name = NULL;
+ state->mode = JSON_BUILDER_MODE_OBJECT;
+ break;
+
+ case JSON_BUILDER_MODE_ARRAY:
+ json_array_add_boolean_element (state->data.array, value);
+ break;
+
+ default:
+ g_assert_not_reached ();
+ }
+
+ return builder;
+}
+
+/**
+ * json_builder_add_string_value:
+ * @builder: a #JsonBuilder
+ * @value: the value of the member or element
+ *
+ * If called after json_builder_set_member_name(), sets @value as member of the
+ * most recent opened object, otherwise @value is added as element of the most
+ * recent opened array.
+ *
+ * See also: json_builder_add_value()
+ *
+ * Return value: (transfer none): the #JsonBuilder, or %NULL if the call was inconsistent
+ */
+JsonBuilder *
+json_builder_add_string_value (JsonBuilder *builder,
+ const gchar *value)
+{
+ JsonBuilderState *state;
+
+ g_return_val_if_fail (JSON_IS_BUILDER (builder), NULL);
+ g_return_val_if_fail (!g_queue_is_empty (builder->priv->stack), NULL);
+ g_return_val_if_fail (json_builder_is_valid_add_mode (builder), NULL);
+
+ state = g_queue_peek_head (builder->priv->stack);
+
+ switch (state->mode)
+ {
+ case JSON_BUILDER_MODE_MEMBER:
+ json_object_set_string_member (state->data.object, state->member_name, value);
+ g_free (state->member_name);
+ state->member_name = NULL;
+ state->mode = JSON_BUILDER_MODE_OBJECT;
+ break;
+
+ case JSON_BUILDER_MODE_ARRAY:
+ json_array_add_string_element (state->data.array, value);
+ break;
+
+ default:
+ g_assert_not_reached ();
+ }
+
+ return builder;
+}
+
+/**
+ * json_builder_add_null_value:
+ * @builder: a #JsonBuilder
+ *
+ * If called after json_builder_set_member_name(), sets null as member of the
+ * most recent opened object, otherwise null is added as element of the most
+ * recent opened array.
+ *
+ * See also: json_builder_add_value()
+ *
+ * Return value: (transfer none): the #JsonBuilder, or %NULL if the call was inconsistent
+ */
+JsonBuilder *
+json_builder_add_null_value (JsonBuilder *builder)
+{
+ JsonBuilderState *state;
+
+ g_return_val_if_fail (JSON_IS_BUILDER (builder), NULL);
+ g_return_val_if_fail (!g_queue_is_empty (builder->priv->stack), NULL);
+ g_return_val_if_fail (json_builder_is_valid_add_mode (builder), NULL);
+
+ state = g_queue_peek_head (builder->priv->stack);
+
+ switch (state->mode)
+ {
+ case JSON_BUILDER_MODE_MEMBER:
+ json_object_set_null_member (state->data.object, state->member_name);
+ g_free (state->member_name);
+ state->member_name = NULL;
+ state->mode = JSON_BUILDER_MODE_OBJECT;
+ break;
+
+ case JSON_BUILDER_MODE_ARRAY:
+ json_array_add_null_element (state->data.array);
+ break;
+
+ default:
+ g_assert_not_reached ();
+ }
+
+ return builder;
+}
--- /dev/null
+/* json-builder.h: JSON tree builder
+ *
+ * This file is part of JSON-GLib
+ * Copyright (C) 2010 Luca Bruno <lethalman88@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Author:
+ * Luca Bruno <lethalman88@gmail.com>
+ */
+
+#ifndef __JSON_BUILDER_H__
+#define __JSON_BUILDER_H__
+
+#if !defined(__JSON_GLIB_INSIDE__) && !defined(JSON_COMPILATION)
+#error "Only <json-glib/json-glib.h> can be included directly."
+#endif
+
+#include <json-glib/json-types.h>
+
+G_BEGIN_DECLS
+
+#define JSON_TYPE_BUILDER (json_builder_get_type ())
+#define JSON_BUILDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), JSON_TYPE_BUILDER, JsonBuilder))
+#define JSON_IS_BUILDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), JSON_TYPE_BUILDER))
+#define JSON_BUILDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), JSON_TYPE_BUILDER, JsonBuilderClass))
+#define JSON_IS_BUILDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), JSON_TYPE_BUILDER))
+#define JSON_BUILDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), JSON_TYPE_BUILDER, JsonBuilderClass))
+
+typedef struct _JsonBuilder JsonBuilder;
+typedef struct _JsonBuilderPrivate JsonBuilderPrivate;
+typedef struct _JsonBuilderClass JsonBuilderClass;
+
+/**
+ * JsonBuilder:
+ *
+ * The `JsonBuilder` structure contains only private data and should be
+ * accessed using the provided API
+ *
+ * Since: 0.12
+ */
+struct _JsonBuilder
+{
+ /*< private >*/
+ GObject parent_instance;
+
+ JsonBuilderPrivate *priv;
+};
+
+/**
+ * JsonBuilderClass:
+ *
+ * The `JsonBuilderClass` structure contains only private data
+ *
+ * Since: 0.12
+ */
+struct _JsonBuilderClass
+{
+ /*< private >*/
+ GObjectClass parent_class;
+
+ /* padding, for future expansion */
+ void (* _json_reserved1) (void);
+ void (* _json_reserved2) (void);
+};
+
+JSON_AVAILABLE_IN_1_0
+GType json_builder_get_type (void) G_GNUC_CONST;
+
+JSON_AVAILABLE_IN_1_0
+JsonBuilder *json_builder_new (void);
+JSON_AVAILABLE_IN_1_0
+JsonNode *json_builder_get_root (JsonBuilder *builder);
+JSON_AVAILABLE_IN_1_0
+void json_builder_reset (JsonBuilder *builder);
+
+JSON_AVAILABLE_IN_1_0
+JsonBuilder *json_builder_begin_array (JsonBuilder *builder);
+JSON_AVAILABLE_IN_1_0
+JsonBuilder *json_builder_end_array (JsonBuilder *builder);
+JSON_AVAILABLE_IN_1_0
+JsonBuilder *json_builder_begin_object (JsonBuilder *builder);
+JSON_AVAILABLE_IN_1_0
+JsonBuilder *json_builder_end_object (JsonBuilder *builder);
+
+JSON_AVAILABLE_IN_1_0
+JsonBuilder *json_builder_set_member_name (JsonBuilder *builder,
+ const gchar *member_name);
+JSON_AVAILABLE_IN_1_0
+JsonBuilder *json_builder_add_value (JsonBuilder *builder,
+ JsonNode *node);
+JSON_AVAILABLE_IN_1_0
+JsonBuilder *json_builder_add_int_value (JsonBuilder *builder,
+ gint64 value);
+JSON_AVAILABLE_IN_1_0
+JsonBuilder *json_builder_add_double_value (JsonBuilder *builder,
+ gdouble value);
+JSON_AVAILABLE_IN_1_0
+JsonBuilder *json_builder_add_boolean_value (JsonBuilder *builder,
+ gboolean value);
+JSON_AVAILABLE_IN_1_0
+JsonBuilder *json_builder_add_string_value (JsonBuilder *builder,
+ const gchar *value);
+JSON_AVAILABLE_IN_1_0
+JsonBuilder *json_builder_add_null_value (JsonBuilder *builder);
+
+G_END_DECLS
+
+#endif /* __JSON_BUILDER_H__ */
--- /dev/null
+#include "config.h"
+
+#include "json-debug.h"
+
+static unsigned int json_debug_flags = 0;
+
+#ifdef JSON_ENABLE_DEBUG
+static const GDebugKey json_debug_keys[] = {
+ { "parser", JSON_DEBUG_PARSER },
+ { "gobject", JSON_DEBUG_GOBJECT },
+ { "path", JSON_DEBUG_PATH }
+};
+#endif /* JSON_ENABLE_DEBUG */
+
+JsonDebugFlags
+json_get_debug_flags (void)
+{
+#ifdef JSON_ENABLE_DEBUG
+ static gboolean json_debug_flags_set;
+ const gchar *env_str;
+
+ if (G_LIKELY (json_debug_flags_set))
+ return json_debug_flags;
+
+ env_str = g_getenv ("JSON_DEBUG");
+ if (env_str != NULL && *env_str != '\0')
+ {
+ json_debug_flags |= g_parse_debug_string (env_str,
+ json_debug_keys,
+ G_N_ELEMENTS (json_debug_keys));
+ }
+
+ json_debug_flags_set = TRUE;
+#endif /* JSON_ENABLE_DEBUG */
+
+ return json_debug_flags;
+}
--- /dev/null
+#ifndef __JSON_DEBUG_H__
+#define __JSON_DEBUG_H__
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+typedef enum {
+ JSON_DEBUG_PARSER = 1 << 0,
+ JSON_DEBUG_GOBJECT = 1 << 1,
+ JSON_DEBUG_PATH = 1 << 2
+} JsonDebugFlags;
+
+#define JSON_HAS_DEBUG(flag) (json_get_debug_flags () & JSON_DEBUG_##flag)
+
+#ifdef JSON_ENABLE_DEBUG
+
+# ifdef __GNUC__
+
+# define JSON_NOTE(type,x,a...) G_STMT_START { \
+ if (JSON_HAS_DEBUG (type)) { \
+ g_message ("[" #type "] " G_STRLOC ": " x, ##a); \
+ } } G_STMT_END
+
+# else
+/* Try the C99 version; unfortunately, this does not allow us to pass
+ * empty arguments to the macro, which means we have to
+ * do an intemediate printf.
+ */
+# define JSON_NOTE(type,...) G_STMT_START { \
+ if (JSON_HAS_DEBUG (type)) { \
+ gchar * _fmt = g_strdup_printf (__VA_ARGS__); \
+ g_message ("[" #type "] " G_STRLOC ": %s",_fmt); \
+ g_free (_fmt); \
+ } } G_STMT_END
+
+# endif /* __GNUC__ */
+
+#else
+
+#define JSON_NOTE(type,...) G_STMT_START { } G_STMT_END
+
+#endif /* JSON_ENABLE_DEBUG */
+
+G_GNUC_INTERNAL
+JsonDebugFlags json_get_debug_flags (void);
+
+G_END_DECLS
+
+#endif /* __JSON_DEBUG_H__ */
/*** BEGIN file-header ***/
+#ifndef __JSON_ENUM_TYPES_H__
+#define __JSON_ENUM_TYPES_H__
+
#if !defined(__JSON_GLIB_INSIDE__) && !defined(JSON_COMPILATION)
#error "Only <json-glib/json-glib.h> can be included directly."
#endif
-#ifndef __JSON_ENUM_TYPES_H__
-#define __JSON_ENUM_TYPES_H__
-
#include <glib-object.h>
+#include <json-glib/json-version-macros.h>
G_BEGIN_DECLS
/*** END file-tail ***/
/*** BEGIN value-header ***/
+JSON_AVAILABLE_IN_1_0
GType @enum_name@_get_type (void) G_GNUC_CONST;
#define JSON_TYPE_@ENUMSHORT@ (@enum_name@_get_type())
* When registering a #GBoxed type you should also register the
* corresponding transformation functions, e.g.:
*
- * |[
+ * |[<!-- language="C" -->
* GType
* my_struct_get_type (void)
* {
* and to which specific #JsonNodeType.
*/
-#ifdef HAVE_CONFIG_H
#include "config.h"
-#endif
#include <string.h>
#include <stdlib.h>
}
/**
- * json_boxed_register_serialize_func:
+ * json_boxed_register_serialize_func: (skip)
* @gboxed_type: a boxed type
* @node_type: a node type
* @serialize_func: serialization function for @boxed_type into
}
/**
- * json_boxed_register_deserialize_func:
+ * json_boxed_register_deserialize_func: (skip)
* @gboxed_type: a boxed type
* @node_type: a node type
* @deserialize_func: deserialization function for @boxed_type from
* Serializes @boxed, a pointer to a #GBoxed of type @gboxed_type,
* into a #JsonNode
*
- * Return value: a #JsonNode with the serialization of the boxed
- * type, or %NULL if serialization either failed or was not
- * possible
+ * Return value: (transfer full): a #JsonNode with the serialization of the
+ * boxed type, or %NULL if serialization either failed or was not possible
*
* Since: 0.10
*/
*
* Deserializes @node into a #GBoxed of @gboxed_type
*
- * Return value: the newly allocated #GBoxed. Use g_boxed_free() to
- * release the resources allocated by this function
+ * Return value: (transfer full): the newly allocated #GBoxed. Use
+ * g_boxed_free() to release the resources allocated by this
+ * function
*
* Since: 0.10
*/
* put it into a buffer or a file.
*/
-#ifdef HAVE_CONFIG_H
#include "config.h"
-#endif
#include <stdlib.h>
#include <string.h>
#include "json-marshal.h"
#include "json-generator.h"
-#define JSON_GENERATOR_GET_PRIVATE(obj) \
- (G_TYPE_INSTANCE_GET_PRIVATE ((obj), JSON_TYPE_GENERATOR, JsonGeneratorPrivate))
-
struct _JsonGeneratorPrivate
{
JsonNode *root;
PROP_PRETTY,
PROP_INDENT,
PROP_ROOT,
- PROP_INDENT_CHAR
+ PROP_INDENT_CHAR,
+
+ PROP_LAST
};
static gchar *dump_value (JsonGenerator *generator,
gint level,
const gchar *name,
- JsonNode *node);
+ JsonNode *node,
+ gsize *length);
static gchar *dump_array (JsonGenerator *generator,
gint level,
const gchar *name,
JsonObject *object,
gsize *length);
-/* non-ASCII characters can't be escaped, otherwise UTF-8
- * chars will break, so we just pregenerate this table of
- * high characters and then we feed it to g_strescape()
- */
-static const char json_exceptions[] = {
- 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86,
- 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e,
- 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
- 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e,
- 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
- 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae,
- 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6,
- 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe,
- 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6,
- 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce,
- 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
- 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde,
- 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
- 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee,
- 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6,
- 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe,
- 0xff,
- '\0' /* g_strescape() expects a NUL-terminated string */
-};
+static GParamSpec *generator_props[PROP_LAST] = { NULL, };
-G_DEFINE_TYPE (JsonGenerator, json_generator, G_TYPE_OBJECT);
+G_DEFINE_TYPE_WITH_PRIVATE (JsonGenerator, json_generator, G_TYPE_OBJECT)
static gchar *
json_strescape (const gchar *str)
{
- return g_strescape (str, json_exceptions);
+ const gchar *p;
+ const gchar *end;
+ GString *output;
+ gsize len;
+
+ len = strlen (str);
+ end = str + len;
+ output = g_string_sized_new (len);
+
+ for (p = str; p < end; p++)
+ {
+ if (*p == '\\' || *p == '"')
+ {
+ g_string_append_c (output, '\\');
+ g_string_append_c (output, *p);
+ }
+ else if ((*p > 0 && *p < 0x1f) || *p == 0x7f)
+ {
+ switch (*p)
+ {
+ case '\b':
+ g_string_append (output, "\\b");
+ break;
+ case '\f':
+ g_string_append (output, "\\f");
+ break;
+ case '\n':
+ g_string_append (output, "\\n");
+ break;
+ case '\r':
+ g_string_append (output, "\\r");
+ break;
+ case '\t':
+ g_string_append (output, "\\t");
+ break;
+ default:
+ g_string_append_printf (output, "\\u00%02x", (guint)*p);
+ break;
+ }
+ }
+ else
+ {
+ g_string_append_c (output, *p);
+ }
+ }
+
+ return g_string_free (output, FALSE);
}
static void
json_generator_finalize (GObject *gobject)
{
- JsonGeneratorPrivate *priv = JSON_GENERATOR_GET_PRIVATE (gobject);
+ JsonGeneratorPrivate *priv;
- if (priv->root)
+ priv = json_generator_get_instance_private ((JsonGenerator *) gobject);
+ if (priv->root != NULL)
json_node_free (priv->root);
G_OBJECT_CLASS (json_generator_parent_class)->finalize (gobject);
const GValue *value,
GParamSpec *pspec)
{
- JsonGeneratorPrivate *priv = JSON_GENERATOR_GET_PRIVATE (gobject);
+ JsonGenerator *generator = JSON_GENERATOR (gobject);
switch (prop_id)
{
case PROP_PRETTY:
- priv->pretty = g_value_get_boolean (value);
+ json_generator_set_pretty (generator, g_value_get_boolean (value));
break;
+
case PROP_INDENT:
- priv->indent = g_value_get_uint (value);
+ json_generator_set_indent (generator, g_value_get_uint (value));
break;
+
case PROP_INDENT_CHAR:
- priv->indent_char = g_value_get_uint (value);
+ json_generator_set_indent_char (generator, g_value_get_uint (value));
break;
+
case PROP_ROOT:
- json_generator_set_root (JSON_GENERATOR (gobject),
- g_value_get_boxed (value));
+ json_generator_set_root (generator, g_value_get_boxed (value));
break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
break;
GValue *value,
GParamSpec *pspec)
{
- JsonGeneratorPrivate *priv = JSON_GENERATOR_GET_PRIVATE (gobject);
+ JsonGeneratorPrivate *priv = JSON_GENERATOR (gobject)->priv;
switch (prop_id)
{
{
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
- g_type_class_add_private (klass, sizeof (JsonGeneratorPrivate));
-
- gobject_class->set_property = json_generator_set_property;
- gobject_class->get_property = json_generator_get_property;
- gobject_class->finalize = json_generator_finalize;
-
/**
* JsonGenerator:pretty:
*
* newlines. The indentation level can be controlled by using the
* JsonGenerator:indent property
*/
- g_object_class_install_property (gobject_class,
- PROP_PRETTY,
- g_param_spec_boolean ("pretty",
- "Pretty",
- "Pretty-print the output",
- FALSE,
- G_PARAM_READWRITE));
+ generator_props[PROP_PRETTY] =
+ g_param_spec_boolean ("pretty",
+ "Pretty",
+ "Pretty-print the output",
+ FALSE,
+ G_PARAM_READWRITE);
+
/**
* JsonGenerator:indent:
*
* Number of spaces to be used to indent when pretty printing.
*/
- g_object_class_install_property (gobject_class,
- PROP_INDENT,
- g_param_spec_uint ("indent",
- "Indent",
- "Number of indentation spaces",
- 0, G_MAXUINT,
- 2,
- G_PARAM_READWRITE));
+ generator_props[PROP_INDENT] =
+ g_param_spec_uint ("indent",
+ "Indent",
+ "Number of indentation spaces",
+ 0, G_MAXUINT,
+ 2,
+ G_PARAM_READWRITE);
+
/**
* JsonGenerator:root:
*
*
* Since: 0.4
*/
- g_object_class_install_property (gobject_class,
- PROP_ROOT,
- g_param_spec_boxed ("root",
- "Root",
- "Root of the JSON data tree",
- JSON_TYPE_NODE,
- G_PARAM_READWRITE));
+ generator_props[PROP_ROOT] =
+ g_param_spec_boxed ("root",
+ "Root",
+ "Root of the JSON data tree",
+ JSON_TYPE_NODE,
+ G_PARAM_READWRITE);
+
/**
* JsonGenerator:indent-char:
*
*
* Since: 0.6
*/
- g_object_class_install_property (gobject_class,
- PROP_INDENT_CHAR,
- g_param_spec_unichar ("indent-char",
- "Indent Char",
- "Character that should be used when indenting",
- ' ',
- G_PARAM_READWRITE));
+ generator_props[PROP_INDENT_CHAR] =
+ g_param_spec_unichar ("indent-char",
+ "Indent Char",
+ "Character that should be used when indenting",
+ ' ',
+ G_PARAM_READWRITE);
+
+ gobject_class->set_property = json_generator_set_property;
+ gobject_class->get_property = json_generator_get_property;
+ gobject_class->finalize = json_generator_finalize;
+ g_object_class_install_properties (gobject_class, PROP_LAST, generator_props);
}
static void
json_generator_init (JsonGenerator *generator)
{
- JsonGeneratorPrivate *priv;
+ JsonGeneratorPrivate *priv = json_generator_get_instance_private (generator);
- generator->priv = priv = JSON_GENERATOR_GET_PRIVATE (generator);
+ generator->priv = priv;
priv->pretty = FALSE;
priv->indent = 2;
dump_value (JsonGenerator *generator,
gint level,
const gchar *name,
- JsonNode *node)
+ JsonNode *node,
+ gsize *length)
{
JsonGeneratorPrivate *priv = generator->priv;
gboolean pretty = priv->pretty;
guint indent = priv->indent;
- GValue value = { 0, };
+ const JsonValue *value;
GString *buffer;
buffer = g_string_new ("");
g_string_append_c (buffer, priv->indent_char);
}
- if (name && name[0] != '\0')
- g_string_append_printf (buffer, "\"%s\" : ", name);
+ if (name)
+ {
+ if (pretty)
+ g_string_append_printf (buffer, "\"%s\" : ", name);
+ else
+ g_string_append_printf (buffer, "\"%s\":", name);
+ }
- json_node_get_value (node, &value);
+ value = node->data.value;
- switch (G_VALUE_TYPE (&value))
+ switch (value->type)
{
- case G_TYPE_INT64:
- g_string_append_printf (buffer, "%" G_GINT64_FORMAT, g_value_get_int64 (&value));
+ case JSON_VALUE_INT:
+ g_string_append_printf (buffer, "%" G_GINT64_FORMAT, json_value_get_int (value));
break;
- case G_TYPE_STRING:
+ case JSON_VALUE_STRING:
{
gchar *tmp;
- tmp = json_strescape (g_value_get_string (&value));
- g_string_append_printf (buffer, "\"%s\"", tmp);
+ tmp = json_strescape (json_value_get_string (value));
+ g_string_append_c (buffer, '"');
+ g_string_append (buffer, tmp);
+ g_string_append_c (buffer, '"');
g_free (tmp);
}
break;
- case G_TYPE_DOUBLE:
+ case JSON_VALUE_DOUBLE:
{
- gchar buf[65];
+ gchar buf[G_ASCII_DTOSTR_BUF_SIZE];
- g_ascii_formatd (buf, 65, "%g", g_value_get_double (&value));
- g_string_append (buffer, buf);
+ g_string_append (buffer,
+ g_ascii_dtostr (buf, sizeof (buf),
+ json_value_get_double (value)));
}
break;
- case G_TYPE_BOOLEAN:
- g_string_append_printf (buffer, "%s",
- g_value_get_boolean (&value) ? "true" : "false");
+ case JSON_VALUE_BOOLEAN:
+ g_string_append (buffer, json_value_get_boolean (value) ? "true" : "false");
+ break;
+
+ case JSON_VALUE_NULL:
+ g_string_append (buffer, "null");
break;
default:
break;
}
- g_value_unset (&value);
+ if (length)
+ *length = buffer->len;
return g_string_free (buffer, FALSE);
}
g_string_append_c (buffer, priv->indent_char);
}
- if (name && name[0] != '\0')
- g_string_append_printf (buffer, "\"%s\" : ", name);
+ if (name)
+ {
+ if (pretty)
+ g_string_append_printf (buffer, "\"%s\" : ", name);
+ else
+ g_string_append_printf (buffer, "\"%s\":", name);
+ }
g_string_append_c (buffer, '[');
if (pretty)
g_string_append_c (buffer, '\n');
- else
- g_string_append_c (buffer, ' ');
for (i = 0; i < array_len; i++)
{
break;
case JSON_NODE_VALUE:
- value = dump_value (generator, sub_level, NULL, cur);
+ value = dump_value (generator, sub_level, NULL, cur, NULL);
g_string_append (buffer, value);
g_free (value);
break;
if (pretty)
g_string_append_c (buffer, '\n');
- else
- g_string_append_c (buffer, ' ');
}
if (pretty)
g_string_append_c (buffer, priv->indent_char);
}
- if (name && name[0] != '\0')
- g_string_append_printf (buffer, "\"%s\" : ", name);
+ if (name)
+ {
+ if (pretty)
+ g_string_append_printf (buffer, "\"%s\" : ", name);
+ else
+ g_string_append_printf (buffer, "\"%s\":", name);
+ }
g_string_append_c (buffer, '{');
if (pretty)
g_string_append_c (buffer, '\n');
- else
- g_string_append_c (buffer, ' ');
members = json_object_get_members (object);
for (l = members; l != NULL; l = l->next)
{
const gchar *member_name = l->data;
+ gchar *escaped_name = json_strescape (member_name);
JsonNode *cur = json_object_get_member (object, member_name);
guint sub_level = level + 1;
guint j;
{
for (j = 0; j < (sub_level * indent); j++)
g_string_append_c (buffer, priv->indent_char);
+ g_string_append_printf (buffer, "\"%s\" : null", escaped_name);
+ }
+ else
+ {
+ g_string_append_printf (buffer, "\"%s\":null", escaped_name);
}
- g_string_append_printf (buffer, "\"%s\" : null", member_name);
break;
case JSON_NODE_VALUE:
- value = dump_value (generator, sub_level, member_name, cur);
+ value = dump_value (generator, sub_level, escaped_name, cur, NULL);
g_string_append (buffer, value);
g_free (value);
break;
case JSON_NODE_ARRAY:
- value = dump_array (generator, sub_level, member_name,
+ value = dump_array (generator, sub_level, escaped_name,
json_node_get_array (cur), NULL);
g_string_append (buffer, value);
g_free (value);
break;
case JSON_NODE_OBJECT:
- value = dump_object (generator, sub_level, member_name,
+ value = dump_object (generator, sub_level, escaped_name,
json_node_get_object (cur), NULL);
g_string_append (buffer, value);
g_free (value);
if (pretty)
g_string_append_c (buffer, '\n');
- else
- g_string_append_c (buffer, ' ');
+
+ g_free (escaped_name);
}
g_list_free (members);
*
* Creates a new #JsonGenerator. You can use this object to generate a
* JSON data stream starting from a data object model composed by
- * #JsonNode<!-- -->s.
+ * #JsonNodes.
*
* Return value: the newly created #JsonGenerator instance
*/
break;
case JSON_NODE_VALUE:
- retval = NULL;
+ retval = dump_value (generator, 0, NULL, root, length);
break;
}
}
/**
+ * json_generator_to_stream:
+ * @generator: a #JsonGenerator
+ * @stream: a #GOutputStream
+ * @cancellable: (allow-none): a #GCancellable, or %NULL
+ * @error: return location for a #GError, or %NULL
+ *
+ * Outputs JSON data and streams it (synchronously) to @stream.
+ *
+ * Return value: %TRUE if the write operation was successful, and %FALSE
+ * on failure. In case of error, the #GError will be filled accordingly
+ *
+ * Since: 0.12
+ */
+gboolean
+json_generator_to_stream (JsonGenerator *generator,
+ GOutputStream *stream,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean retval;
+ gchar *buffer;
+ gsize len;
+
+ g_return_val_if_fail (JSON_IS_GENERATOR (generator), FALSE);
+ g_return_val_if_fail (G_IS_OUTPUT_STREAM (stream), FALSE);
+
+ if (g_cancellable_set_error_if_cancelled (cancellable, error))
+ return FALSE;
+
+ buffer = json_generator_to_data (generator, &len);
+ retval = g_output_stream_write (stream, buffer, len, cancellable, error);
+ g_free (buffer);
+
+ return retval;
+}
+
+/**
* json_generator_set_root:
* @generator: a #JsonGenerator
* @node: a #JsonNode
* Sets @node as the root of the JSON data stream to be serialized by
* the #JsonGenerator.
*
- * <note>The node is copied by the generator object, so it can be safely
- * freed after calling this function.</note>
+ * The passed @node is copied by the generator object, so it can be
+ * safely freed after calling this function.
*/
void
json_generator_set_root (JsonGenerator *generator,
{
g_return_if_fail (JSON_IS_GENERATOR (generator));
- if (generator->priv->root)
+ if (generator->priv->root == node)
+ return;
+
+ if (generator->priv->root != NULL)
{
json_node_free (generator->priv->root);
generator->priv->root = NULL;
}
- if (node)
+ if (node != NULL)
generator->priv->root = json_node_copy (node);
+
+ g_object_notify_by_pspec (G_OBJECT (generator), generator_props[PROP_ROOT]);
+}
+
+/**
+ * json_generator_get_root:
+ * @generator: a #JsonGenerator
+ *
+ * Retrieves a pointer to the root #JsonNode set using
+ * json_generator_set_root().
+ *
+ * Return value: (transfer none): a #JsonNode, or %NULL. The returned node
+ * is owned by the #JsonGenerator and it should not be freed
+ *
+ * Since: 0.14
+ */
+JsonNode *
+json_generator_get_root (JsonGenerator *generator)
+{
+ g_return_val_if_fail (JSON_IS_GENERATOR (generator), NULL);
+
+ return generator->priv->root;
+}
+
+/**
+ * json_generator_set_pretty:
+ * @generator: a #JsonGenerator
+ * @is_pretty: whether the generated string should be pretty printed
+ *
+ * Sets whether the generated JSON should be pretty printed, using the
+ * indentation character specified in the #JsonGenerator:indent-char
+ * property and the spacing specified in #JsonGenerator:indent property.
+ *
+ * Since: 0.14
+ */
+void
+json_generator_set_pretty (JsonGenerator *generator,
+ gboolean is_pretty)
+{
+ JsonGeneratorPrivate *priv;
+
+ g_return_if_fail (JSON_IS_GENERATOR (generator));
+
+ priv = generator->priv;
+
+ is_pretty = !!is_pretty;
+
+ if (priv->pretty != is_pretty)
+ {
+ priv->pretty = is_pretty;
+
+ g_object_notify_by_pspec (G_OBJECT (generator), generator_props[PROP_PRETTY]);
+ }
+}
+
+/**
+ * json_generator_get_pretty:
+ * @generator: a #JsonGenerator
+ *
+ * Retrieves the value set using json_generator_set_pretty().
+ *
+ * Return value: %TRUE if the generated JSON should be pretty-printed, and
+ * %FALSE otherwise
+ *
+ * Since: 0.14
+ */
+gboolean
+json_generator_get_pretty (JsonGenerator *generator)
+{
+ g_return_val_if_fail (JSON_IS_GENERATOR (generator), FALSE);
+
+ return generator->priv->pretty;
+}
+
+/**
+ * json_generator_set_indent:
+ * @generator: a #JsonGenerator
+ * @indent_level: the number of repetitions of the indentation character
+ * that should be applied when pretty printing
+ *
+ * Sets the number of repetitions for each indentation level.
+ *
+ * Since: 0.14
+ */
+void
+json_generator_set_indent (JsonGenerator *generator,
+ guint indent_level)
+{
+ JsonGeneratorPrivate *priv;
+
+ g_return_if_fail (JSON_IS_GENERATOR (generator));
+
+ priv = generator->priv;
+
+ if (priv->indent != indent_level)
+ {
+ priv->indent = indent_level;
+
+ g_object_notify_by_pspec (G_OBJECT (generator), generator_props[PROP_INDENT]);
+ }
+}
+
+/**
+ * json_generator_get_indent:
+ * @generator: a #JsonGenerator
+ *
+ * Retrieves the value set using json_generator_set_indent().
+ *
+ * Return value: the number of repetitions per indentation level
+ *
+ * Since: 0.14
+ */
+guint
+json_generator_get_indent (JsonGenerator *generator)
+{
+ g_return_val_if_fail (JSON_IS_GENERATOR (generator), FALSE);
+
+ return generator->priv->indent;
+}
+
+/**
+ * json_generator_set_indent_char:
+ * @generator: a #JsonGenerator
+ * @indent_char: a Unicode character to be used when indenting
+ *
+ * Sets the character to be used when indenting
+ *
+ * Since: 0.14
+ */
+void
+json_generator_set_indent_char (JsonGenerator *generator,
+ gunichar indent_char)
+{
+ JsonGeneratorPrivate *priv;
+
+ g_return_if_fail (JSON_IS_GENERATOR (generator));
+
+ priv = generator->priv;
+
+ if (priv->indent_char != indent_char)
+ {
+ priv->indent_char = indent_char;
+
+ g_object_notify_by_pspec (G_OBJECT (generator), generator_props[PROP_INDENT_CHAR]);
+ }
+}
+
+/**
+ * json_generator_get_indent_char:
+ * @generator: a #JsonGenerator
+ *
+ * Retrieves the value set using json_generator_set_indent_char().
+ *
+ * Return value: the character to be used when indenting
+ *
+ * Since: 0.14
+ */
+gunichar
+json_generator_get_indent_char (JsonGenerator *generator)
+{
+ g_return_val_if_fail (JSON_IS_GENERATOR (generator), FALSE);
+
+ return generator->priv->indent_char;
}
* Emmanuele Bassi <ebassi@linux.intel.com>
*/
+#ifndef __JSON_GENERATOR_H__
+#define __JSON_GENERATOR_H__
+
#if !defined(__JSON_GLIB_INSIDE__) && !defined(JSON_COMPILATION)
#error "Only <json-glib/json-glib.h> can be included directly."
#endif
-#ifndef __JSON_GENERATOR_H__
-#define __JSON_GENERATOR_H__
-
#include <json-glib/json-types.h>
+#include <gio/gio.h>
G_BEGIN_DECLS
void (* _json_reserved4) (void);
};
+JSON_AVAILABLE_IN_1_0
GType json_generator_get_type (void) G_GNUC_CONST;
-JsonGenerator *json_generator_new (void);
-gchar * json_generator_to_data (JsonGenerator *generator,
- gsize *length);
-gboolean json_generator_to_file (JsonGenerator *generator,
- const gchar *filename,
- GError **error);
-void json_generator_set_root (JsonGenerator *generator,
- JsonNode *node);
+JSON_AVAILABLE_IN_1_0
+JsonGenerator * json_generator_new (void);
+
+JSON_AVAILABLE_IN_1_0
+void json_generator_set_pretty (JsonGenerator *generator,
+ gboolean is_pretty);
+JSON_AVAILABLE_IN_1_0
+gboolean json_generator_get_pretty (JsonGenerator *generator);
+JSON_AVAILABLE_IN_1_0
+void json_generator_set_indent (JsonGenerator *generator,
+ guint indent_level);
+JSON_AVAILABLE_IN_1_0
+guint json_generator_get_indent (JsonGenerator *generator);
+JSON_AVAILABLE_IN_1_0
+void json_generator_set_indent_char (JsonGenerator *generator,
+ gunichar indent_char);
+JSON_AVAILABLE_IN_1_0
+gunichar json_generator_get_indent_char (JsonGenerator *generator);
+JSON_AVAILABLE_IN_1_0
+void json_generator_set_root (JsonGenerator *generator,
+ JsonNode *node);
+JSON_AVAILABLE_IN_1_0
+JsonNode * json_generator_get_root (JsonGenerator *generator);
+
+JSON_AVAILABLE_IN_1_0
+gchar * json_generator_to_data (JsonGenerator *generator,
+ gsize *length);
+JSON_AVAILABLE_IN_1_0
+gboolean json_generator_to_file (JsonGenerator *generator,
+ const gchar *filename,
+ GError **error);
+JSON_AVAILABLE_IN_1_0
+gboolean json_generator_to_stream (JsonGenerator *generator,
+ GOutputStream *stream,
+ GCancellable *cancellable,
+ GError **error);
G_END_DECLS
--- /dev/null
+/* json-glib-format - Formats JSON data
+ *
+ * This file is part of JSON-GLib
+ *
+ * Copyright © 2013 Emmanuele Bassi
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Author:
+ * Emmanuele Bassi <ebassi@gnome.org>
+ */
+
+#include "config.h"
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <locale.h>
+#include <errno.h>
+
+#include <glib.h>
+#include <glib/gi18n.h>
+#include <json-glib/json-glib.h>
+
+#if defined (G_OS_WIN32) && !defined (HAVE_UNISTD_H)
+#include <io.h>
+
+#define STDOUT_FILENO 1
+#endif
+
+static char **files = NULL;
+static gboolean prettify = FALSE;
+static int indent_spaces = 2;
+
+static GOptionEntry entries[] = {
+ { "prettify", 'p', 0, G_OPTION_ARG_NONE, &prettify, N_("Prettify output"), NULL },
+ { "indent-spaces", 'i', 0, G_OPTION_ARG_INT, &indent_spaces, N_("Indentation spaces"), NULL },
+ { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &files, NULL, NULL },
+ { NULL },
+};
+
+static gboolean
+format (JsonParser *parser,
+ JsonGenerator *generator,
+ GFile *file)
+{
+ GInputStream *in;
+ GError *error;
+ gboolean res = TRUE;
+ gboolean parse_res;
+ gboolean close_res;
+ char *data, *p;
+ gsize len;
+
+ error = NULL;
+
+ in = (GInputStream *) g_file_read (file, NULL, &error);
+ if (in == NULL)
+ {
+ /* Translators: the first %s is the program name, the second one
+ * is the URI of the file, the third is the error message.
+ */
+ g_printerr (_("%s: %s: error opening file: %s\n"),
+ g_get_prgname (), g_file_get_uri (file), error->message);
+ g_error_free (error);
+ return FALSE;
+ }
+
+ parse_res = json_parser_load_from_stream (parser, in, NULL, &error);
+ if (!parse_res)
+ {
+ /* Translators: the first %s is the program name, the second one
+ * is the URI of the file, the third is the error message.
+ */
+ g_printerr (_("%s: %s: error parsing file: %s\n"),
+ g_get_prgname (), g_file_get_uri (file), error->message);
+ g_clear_error (&error);
+ res = FALSE;
+ goto out;
+ }
+
+ json_generator_set_root (generator, json_parser_get_root (parser));
+ data = json_generator_to_data (generator, &len);
+ p = data;
+ while (len > 0)
+ {
+ gssize written = write (STDOUT_FILENO, p, len);
+
+ if (written == -1 && errno != EINTR)
+ {
+ /* Translators: the first %s is the program name, the
+ * second one is the URI of the file.
+ */
+ g_printerr (_("%s: %s: error writing to stdout"), g_get_prgname (), g_file_get_uri (file));
+ res = FALSE;
+ goto out;
+ }
+
+ len -= written;
+ p += written;
+ }
+
+ write (STDOUT_FILENO, "\n", 1);
+
+ g_free (data);
+
+out:
+ close_res = g_input_stream_close (in, NULL, &error);
+ if (!close_res)
+ {
+ /* Translators: the first %s is the program name, the second one
+ * is the URI of the file, the third is the error message.
+ */
+ g_printerr (_("%s: %s: error closing: %s\n"),
+ g_get_prgname (), g_file_get_uri (file), error->message);
+ g_clear_error (&error);
+ res = FALSE;
+ }
+
+ return res;
+}
+
+int
+main (int argc,
+ char *argv[])
+{
+ GOptionContext *context = NULL;
+ GError *error = NULL;
+ const char *description;
+ const char *summary;
+ gchar *param;
+ JsonParser *parser;
+ JsonGenerator *generator;
+ gboolean res;
+ int i;
+
+ setlocale (LC_ALL, "");
+
+ bindtextdomain (GETTEXT_PACKAGE, JSON_LOCALEDIR);
+ bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+ textdomain (GETTEXT_PACKAGE);
+
+ param = g_strdup_printf (("%s..."), _("FILE"));
+ /* Translators: this message will appear after the usage string */
+ /* and before the list of options. */
+ summary = _("Format JSON files.");
+ description = _("json-glib-format formats JSON resources.");
+
+ context = g_option_context_new (param);
+ g_option_context_set_summary (context, summary);
+ g_option_context_set_description (context, description);
+ g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE);
+ g_option_context_parse (context, &argc, &argv, &error);
+ g_option_context_free (context);
+
+ g_free (param);
+
+ if (error != NULL)
+ {
+ /* Translators: the %s is the program name. This error message
+ * means the user is calling json-glib-validate without any
+ * argument.
+ */
+ g_printerr (_("Error parsing commandline options: %s\n"), error->message);
+ g_printerr ("\n");
+ g_printerr (_("Try \"%s --help\" for more information."), g_get_prgname ());
+ g_printerr ("\n");
+ g_error_free (error);
+ return 1;
+ }
+
+ if (files == NULL)
+ {
+ /* Translators: the %s is the program name. This error message
+ * means the user is calling json-glib-validate without any
+ * argument.
+ */
+ g_printerr (_("%s: missing files"), g_get_prgname ());
+ g_printerr ("\n");
+ g_printerr (_("Try \"%s --help\" for more information."), g_get_prgname ());
+ g_printerr ("\n");
+ return 1;
+ }
+
+ generator = json_generator_new ();
+ json_generator_set_pretty (generator, prettify);
+ json_generator_set_indent (generator, indent_spaces);
+
+ parser = json_parser_new ();
+ res = TRUE;
+ i = 0;
+
+ do
+ {
+ GFile *file = g_file_new_for_commandline_arg (files[i]);
+
+ res = format (parser, generator, file) && res;
+ g_object_unref (file);
+ }
+ while (files[++i] != NULL);
+
+ g_object_unref (parser);
+ g_object_unref (generator);
+
+ return res ? EXIT_SUCCESS : EXIT_FAILURE;
+}
--- /dev/null
+/* json-glib-validate - Checks JSON data for errors
+ *
+ * This file is part of JSON-GLib
+ *
+ * Copyright © 2013 Emmanuele Bassi
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Author:
+ * Emmanuele Bassi <ebassi@gnome.org>
+ */
+
+#include "config.h"
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include <stdlib.h>
+#include <stdio.h>
+#include <locale.h>
+#include <errno.h>
+
+#include <glib.h>
+#include <glib/gi18n.h>
+#include <json-glib/json-glib.h>
+
+static char **files = NULL;
+
+static GOptionEntry entries[] = {
+ { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &files, NULL, NULL },
+ { NULL },
+};
+
+static gboolean
+validate (JsonParser *parser,
+ GFile *file)
+{
+ GInputStream *in;
+ GError *error;
+ gboolean res = TRUE;
+ gboolean parse_res;
+ gboolean close_res;
+
+ error = NULL;
+
+ in = (GInputStream *) g_file_read (file, NULL, &error);
+ if (in == NULL)
+ {
+ /* Translators: the first %s is the program name, the second one
+ * is the URI of the file, the third is the error message.
+ */
+ g_printerr (_("%s: %s: error opening file: %s\n"),
+ g_get_prgname (), g_file_get_uri (file), error->message);
+ g_error_free (error);
+ return FALSE;
+ }
+
+ parse_res = json_parser_load_from_stream (parser, in, NULL, &error);
+ if (!parse_res)
+ {
+ /* Translators: the first %s is the program name, the second one
+ * is the URI of the file, the third is the error message.
+ */
+ g_printerr (_("%s: %s: error parsing file: %s\n"),
+ g_get_prgname (), g_file_get_uri (file), error->message);
+ g_clear_error (&error);
+ res = FALSE;
+ }
+
+ close_res = g_input_stream_close (in, NULL, &error);
+ if (!close_res)
+ {
+ /* Translators: the first %s is the program name, the second one
+ * is the URI of the file, the third is the error message.
+ */
+ g_printerr (_("%s: %s: error closing: %s\n"),
+ g_get_prgname (), g_file_get_uri (file), error->message);
+ g_clear_error (&error);
+ res = FALSE;
+ }
+
+ return res;
+}
+
+int
+main (int argc,
+ char *argv[])
+{
+ GOptionContext *context = NULL;
+ GError *error = NULL;
+ const char *description;
+ const char *summary;
+ gchar *param;
+ JsonParser *parser;
+ gboolean res;
+ int i;
+
+ setlocale (LC_ALL, "");
+
+ bindtextdomain (GETTEXT_PACKAGE, JSON_LOCALEDIR);
+ bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+ textdomain (GETTEXT_PACKAGE);
+
+ param = g_strdup_printf (("%s..."), _("FILE"));
+ /* Translators: this message will appear after the usage string */
+ /* and before the list of options. */
+ summary = _("Validate JSON files.");
+ description = _("json-glib-validate validates JSON data at the given URI.");
+
+ context = g_option_context_new (param);
+ g_option_context_set_summary (context, summary);
+ g_option_context_set_description (context, description);
+ g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE);
+ g_option_context_parse (context, &argc, &argv, &error);
+ g_option_context_free (context);
+
+ g_free (param);
+
+ if (error != NULL)
+ {
+ /* Translators: the %s is the program name. This error message
+ * means the user is calling json-glib-validate without any
+ * argument.
+ */
+ g_printerr (_("Error parsing commandline options: %s\n"), error->message);
+ g_printerr ("\n");
+ g_printerr (_("Try \"%s --help\" for more information."), g_get_prgname ());
+ g_printerr ("\n");
+ g_error_free (error);
+ return 1;
+ }
+
+ if (files == NULL)
+ {
+ /* Translators: the %s is the program name. This error message
+ * means the user is calling json-glib-validate without any
+ * argument.
+ */
+ g_printerr (_("%s: missing files"), g_get_prgname ());
+ g_printerr ("\n");
+ g_printerr (_("Try \"%s --help\" for more information."), g_get_prgname ());
+ g_printerr ("\n");
+ return 1;
+ }
+
+ parser = json_parser_new ();
+ res = TRUE;
+ i = 0;
+
+ do
+ {
+ GFile *file = g_file_new_for_commandline_arg (files[i]);
+
+ res = validate (parser, file) && res;
+ g_object_unref (file);
+ }
+ while (files[++i] != NULL);
+
+ g_object_unref (parser);
+
+ return res ? EXIT_SUCCESS : EXIT_FAILURE;
+}
#define __JSON_GLIB_INSIDE__
#include <json-glib/json-types.h>
+
+#include <json-glib/json-builder.h>
#include <json-glib/json-generator.h>
#include <json-glib/json-parser.h>
+#include <json-glib/json-path.h>
+#include <json-glib/json-reader.h>
#include <json-glib/json-version.h>
+#include <json-glib/json-version-macros.h>
+
#include <json-glib/json-enum-types.h>
#include <json-glib/json-gobject.h>
+#include <json-glib/json-gvariant.h>
+
#undef __JSON_GLIB_INSIDE__
#endif /* __JSON_GLIB_H__ */
--- /dev/null
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: JSON-GLib
+Description: JSON Parser for GLib
+Version: @VERSION@
+Libs: -L${libdir} -ljson-glib-1.0
+Cflags: -I${includedir}/json-glib-1.0
+Requires: gobject-2.0 gio-2.0
* SECTION:json-gobject
* @short_description: Serialize and deserialize GObjects
*
- * JSON-GLib provides API for serializing and deserializing #GObject<!-- -->s
- * to and from JSON data streams.
+ * JSON-GLib provides API for serializing and deserializing #GObject
+ * instances to and from JSON data streams.
*
* Simple #GObject classes can be (de)serialized into JSON objects, if the
* properties have compatible types with the native JSON types (integers,
* and its virtual functions.
*/
-#ifdef HAVE_CONFIG_H
#include "config.h"
-#endif
#include <string.h>
#include <stdlib.h>
+#include <glib/gi18n-lib.h>
+
#include "json-types-private.h"
#include "json-gobject-private.h"
+#include "json-debug.h"
#include "json-parser.h"
#include "json-generator.h"
{
JsonSerializableIface *iface = NULL;
JsonSerializable *serializable = NULL;
+ gboolean find_property;
gboolean deserialize_property;
+ gboolean set_property;
GList *members, *members_left, *l;
guint n_members;
GObjectClass *klass;
members = json_object_get_members (object);
members_left = NULL;
- /* first pass: construct and construct-only properties; here
- * we cannot use Serializable because we don't have an
- * instance yet; we use the default implementation of
- * json_deserialize_pspec() to deserialize known types
+ /* first pass: construct-only properties; here we cannot use Serializable
+ * because we don't have an instance yet; we use the default implementation
+ * of json_deserialize_pspec() to deserialize known types
*
- * FIXME - find a way to allow deserialization for these
- * properties
+ * FIXME - find a way to allow deserialization for these properties
*/
construct_params = g_array_sized_new (FALSE, FALSE, sizeof (GParameter), n_members);
if (!pspec)
goto next_member;
- if (!(pspec->flags & G_PARAM_CONSTRUCT_ONLY) ||
- !(pspec->flags & G_PARAM_CONSTRUCT_ONLY))
+ /* we only apply construct-only properties here */
+ if ((pspec->flags & G_PARAM_CONSTRUCT_ONLY) == 0)
goto next_member;
if (!(pspec->flags & G_PARAM_WRITABLE))
val = json_object_get_member (object, member_name);
res = json_deserialize_pspec (¶m.value, pspec, val);
if (!res)
- g_value_unset (¶m.value);
+ {
+ g_warning ("Failed to deserialize \"%s\" property of type \"%s\" for an object of type \"%s\"",
+ pspec->name, G_VALUE_TYPE_NAME (¶m.value), g_type_name (gtype));
+
+ g_value_unset (¶m.value);
+ }
else
{
param.name = g_strdup (pspec->name);
{
serializable = JSON_SERIALIZABLE (retval);
iface = JSON_SERIALIZABLE_GET_IFACE (serializable);
+ find_property = (iface->find_property != NULL);
deserialize_property = (iface->deserialize_property != NULL);
+ set_property = (iface->set_property != NULL);
}
else
- deserialize_property = FALSE;
+ {
+ find_property = FALSE;
+ deserialize_property = FALSE;
+ set_property = FALSE;
+ }
g_object_freeze_notify (retval);
GValue value = { 0, };
gboolean res = FALSE;
- pspec = g_object_class_find_property (klass, member_name);
- if (!pspec)
+ if (find_property)
+ pspec = json_serializable_find_property (serializable, member_name);
+ else
+ pspec = g_object_class_find_property (klass, member_name);
+
+ if (pspec == NULL)
continue;
/* we should have dealt with these above */
- if ((pspec->flags & G_PARAM_CONSTRUCT_ONLY) ||
- (pspec->flags & G_PARAM_CONSTRUCT))
+ if (pspec->flags & G_PARAM_CONSTRUCT_ONLY)
continue;
if (!(pspec->flags & G_PARAM_WRITABLE))
if (deserialize_property)
{
- res = iface->deserialize_property (serializable, pspec->name,
- &value,
- pspec,
- val);
+ JSON_NOTE (GOBJECT, "Using JsonSerializable for property '%s'", pspec->name);
+ res = json_serializable_deserialize_property (serializable,
+ pspec->name,
+ &value,
+ pspec,
+ val);
}
if (!res)
- res = json_deserialize_pspec (&value, pspec, val);
+ {
+ JSON_NOTE (GOBJECT, "Using json_deserialize_pspec for property '%s'", pspec->name);
+ res = json_deserialize_pspec (&value, pspec, val);
+ }
- /* FIXME - we probably want to be able to have a custom
- * set_property() for Serializable implementations
- */
if (res)
- g_object_set_property (retval, pspec->name, &value);
+ {
+ JSON_NOTE (GOBJECT, "Calling set_property('%s', '%s')",
+ pspec->name,
+ g_type_name (G_VALUE_TYPE (&value)));
+
+ if (set_property)
+ json_serializable_set_property (serializable, pspec, &value);
+ else
+ g_object_set_property (retval, pspec->name, &value);
+ }
+ else
+ g_warning ("Failed to deserialize \"%s\" property of type \"%s\" for an object of type \"%s\"",
+ pspec->name, g_type_name (G_VALUE_TYPE (&value)), g_type_name (gtype));
g_value_unset (&value);
}
{
JsonSerializableIface *iface = NULL;
JsonSerializable *serializable = NULL;
+ gboolean list_properties = FALSE;
gboolean serialize_property = FALSE;
+ gboolean get_property = FALSE;
JsonObject *object;
GParamSpec **pspecs;
guint n_pspecs, i;
{
serializable = JSON_SERIALIZABLE (gobject);
iface = JSON_SERIALIZABLE_GET_IFACE (gobject);
+ list_properties = (iface->list_properties != NULL);
serialize_property = (iface->serialize_property != NULL);
+ get_property = (iface->get_property != NULL);
}
object = json_object_new ();
- pspecs = g_object_class_list_properties (G_OBJECT_GET_CLASS (gobject), &n_pspecs);
+ if (list_properties)
+ pspecs = json_serializable_list_properties (serializable, &n_pspecs);
+ else
+ pspecs = g_object_class_list_properties (G_OBJECT_GET_CLASS (gobject), &n_pspecs);
+
for (i = 0; i < n_pspecs; i++)
{
GParamSpec *pspec = pspecs[i];
continue;
g_value_init (&value, G_PARAM_SPEC_VALUE_TYPE (pspec));
- g_object_get_property (gobject, pspec->name, &value);
+
+ if (get_property)
+ json_serializable_get_property (serializable, pspec, &value);
+ else
+ g_object_get_property (gobject, pspec->name, &value);
/* if there is a serialization vfunc, then it is completely responsible
* for serializing the property, possibly by calling the implementation
*/
if (serialize_property)
{
- node = iface->serialize_property (serializable, pspec->name,
- &value,
- pspec);
+ node = json_serializable_serialize_property (serializable,
+ pspec->name,
+ &value,
+ pspec);
}
- else
+ /* skip if the value is the default for the property */
+ else if (!g_param_value_defaults (pspec, &value))
node = json_serialize_pspec (&value, pspec);
if (node)
{
case G_TYPE_BOOLEAN:
case G_TYPE_INT64:
- case G_TYPE_DOUBLE:
case G_TYPE_STRING:
- g_value_copy (&node_value, value);
- retval = TRUE;
+ if (G_VALUE_HOLDS (&node_value, G_VALUE_TYPE (value)))
+ {
+ g_value_copy (&node_value, value);
+ retval = TRUE;
+ }
break;
case G_TYPE_INT:
- g_value_set_int (value, (gint) g_value_get_int64 (&node_value));
- retval = TRUE;
+ if (G_VALUE_HOLDS (&node_value, G_TYPE_INT64))
+ {
+ g_value_set_int (value, (gint) g_value_get_int64 (&node_value));
+ retval = TRUE;
+ }
break;
case G_TYPE_CHAR:
- g_value_set_char (value, (gchar) g_value_get_int64 (&node_value));
- retval = TRUE;
+ if (G_VALUE_HOLDS (&node_value, G_TYPE_INT64))
+ {
+ g_value_set_schar (value, (gchar) g_value_get_int64 (&node_value));
+ retval = TRUE;
+ }
break;
case G_TYPE_UINT:
- g_value_set_uint (value, (guint) g_value_get_int64 (&node_value));
- retval = TRUE;
+ if (G_VALUE_HOLDS (&node_value, G_TYPE_INT64))
+ {
+ g_value_set_uint (value, (guint) g_value_get_int64 (&node_value));
+ retval = TRUE;
+ }
break;
case G_TYPE_UCHAR:
- g_value_set_uchar (value, (guchar) g_value_get_int64 (&node_value));
- retval = TRUE;
+ if (G_VALUE_HOLDS (&node_value, G_TYPE_INT64))
+ {
+ g_value_set_uchar (value, (guchar) g_value_get_int64 (&node_value));
+ retval = TRUE;
+ }
+ break;
+
+ case G_TYPE_DOUBLE:
+
+ if (G_VALUE_HOLDS (&node_value, G_TYPE_DOUBLE))
+ {
+ g_value_set_double (value, g_value_get_double (&node_value));
+ retval = TRUE;
+ }
+ else if (G_VALUE_HOLDS (&node_value, G_TYPE_INT64))
+ {
+ g_value_set_double (value, (gdouble) g_value_get_int64 (&node_value));
+ retval = TRUE;
+ }
+
break;
case G_TYPE_FLOAT:
- g_value_set_float (value, (gfloat) g_value_get_double (&node_value));
- retval = TRUE;
+ if (G_VALUE_HOLDS (&node_value, G_TYPE_DOUBLE))
+ {
+ g_value_set_float (value, (gfloat) g_value_get_double (&node_value));
+ retval = TRUE;
+ }
+ else if (G_VALUE_HOLDS (&node_value, G_TYPE_INT64))
+ {
+ g_value_set_float (value, (gfloat) g_value_get_int64 (&node_value));
+ retval = TRUE;
+ }
+
break;
case G_TYPE_ENUM:
break;
case JSON_NODE_NULL:
- retval = FALSE;
+ if (G_TYPE_FUNDAMENTAL (G_VALUE_TYPE (value)) == G_TYPE_STRING)
+ {
+ g_value_set_string (value, NULL);
+ retval = TRUE;
+ }
+ else if (G_TYPE_FUNDAMENTAL (G_VALUE_TYPE (value)) == G_TYPE_OBJECT)
+ {
+ g_value_set_object (value, NULL);
+ retval = TRUE;
+ }
+ else
+ retval = FALSE;
+
break;
}
GParamSpec *pspec)
{
JsonNode *retval = NULL;
- GValue value = { 0, };
JsonNodeType node_type;
switch (G_TYPE_FUNDAMENTAL (G_VALUE_TYPE (real_value)))
{
+ /* JSON native types */
case G_TYPE_INT64:
+ retval = json_node_init_int (json_node_alloc (), g_value_get_int64 (real_value));
+ break;
+
case G_TYPE_BOOLEAN:
+ retval = json_node_init_boolean (json_node_alloc (), g_value_get_boolean (real_value));
+ break;
+
case G_TYPE_DOUBLE:
- /* JSON native types */
- retval = json_node_new (JSON_NODE_VALUE);
- g_value_init (&value, G_VALUE_TYPE (real_value));
- g_value_copy (real_value, &value);
- json_node_set_value (retval, &value);
- g_value_unset (&value);
+ retval = json_node_init_double (json_node_alloc (), g_value_get_double (real_value));
break;
case G_TYPE_STRING:
- /* strings might be NULL, so we handle it differently */
- if (!g_value_get_string (real_value))
- retval = json_node_new (JSON_NODE_NULL);
- else
- {
- retval = json_node_new (JSON_NODE_VALUE);
- json_node_set_string (retval, g_value_get_string (real_value));
- break;
- }
+ retval = json_node_init_string (json_node_alloc (), g_value_get_string (real_value));
break;
+ /* auto-promoted types */
case G_TYPE_INT:
- retval = json_node_new (JSON_NODE_VALUE);
- json_node_set_int (retval, g_value_get_int (real_value));
+ retval = json_node_init_int (json_node_alloc (), g_value_get_int (real_value));
+ break;
+
+ case G_TYPE_UINT:
+ retval = json_node_init_int (json_node_alloc (), g_value_get_uint (real_value));
+ break;
+
+ case G_TYPE_LONG:
+ retval = json_node_init_int (json_node_alloc (), g_value_get_long (real_value));
+ break;
+
+ case G_TYPE_ULONG:
+ retval = json_node_init_int (json_node_alloc (), g_value_get_ulong (real_value));
break;
case G_TYPE_FLOAT:
- retval = json_node_new (JSON_NODE_VALUE);
- json_node_set_double (retval, g_value_get_float (real_value));
+ retval = json_node_init_double (json_node_alloc (), g_value_get_float (real_value));
+ break;
+
+ case G_TYPE_CHAR:
+ retval = json_node_alloc ();
+ json_node_init_int (retval, g_value_get_schar (real_value));
+ break;
+
+ case G_TYPE_UCHAR:
+ retval = json_node_init_int (json_node_alloc (), g_value_get_uchar (real_value));
break;
+ case G_TYPE_ENUM:
+ retval = json_node_init_int (json_node_alloc (), g_value_get_enum (real_value));
+ break;
+
+ case G_TYPE_FLAGS:
+ retval = json_node_init_int (json_node_alloc (), g_value_get_flags (real_value));
+ break;
+
+ /* complex types */
case G_TYPE_BOXED:
if (G_VALUE_HOLDS (real_value, G_TYPE_STRV))
{
json_array_add_element (array, str);
}
- retval = json_node_new (JSON_NODE_ARRAY);
- json_node_take_array (retval, array);
+ retval = json_node_init_array (json_node_alloc (), array);
+ json_array_unref (array);
}
else if (json_boxed_can_serialize (G_VALUE_TYPE (real_value), &node_type))
{
g_type_name (G_VALUE_TYPE (real_value)));
break;
- case G_TYPE_UINT:
- retval = json_node_new (JSON_NODE_VALUE);
- json_node_set_int (retval, g_value_get_uint (real_value));
- break;
-
- case G_TYPE_LONG:
- retval = json_node_new (JSON_NODE_VALUE);
- json_node_set_int (retval, g_value_get_long (real_value));
- break;
-
- case G_TYPE_ULONG:
- retval = json_node_new (JSON_NODE_VALUE);
- json_node_set_int (retval, g_value_get_long (real_value));
- break;
-
- case G_TYPE_CHAR:
- retval = json_node_new (JSON_NODE_VALUE);
- json_node_set_int (retval, g_value_get_char (real_value));
- break;
-
- case G_TYPE_UCHAR:
- retval = json_node_new (JSON_NODE_VALUE);
- json_node_set_int (retval, g_value_get_uchar (real_value));
- break;
-
- case G_TYPE_ENUM:
- retval = json_node_new (JSON_NODE_VALUE);
- json_node_set_int (retval, g_value_get_enum (real_value));
- break;
-
- case G_TYPE_FLAGS:
- retval = json_node_new (JSON_NODE_VALUE);
- json_node_set_int (retval, g_value_get_flags (real_value));
- break;
-
case G_TYPE_OBJECT:
{
GObject *object = g_value_get_object (real_value);
+ retval = json_node_alloc ();
+
if (object != NULL)
{
- retval = json_node_new (JSON_NODE_OBJECT);
+ json_node_init (retval, JSON_NODE_OBJECT);
json_node_take_object (retval, json_gobject_dump (object));
}
else
- retval = json_node_new (JSON_NODE_NULL);
+ json_node_init_null (retval);
}
break;
*
* Note: the JSON data stream must be an object declaration.
*
- * Return value: a #GObject or %NULL
+ * Return value: (transfer full): a #GObject or %NULL
*
* Since: 0.4
*
*
* Note: the JSON data stream must be an object declaration.
*
- * Return value: a #GObject or %NULL
+ * Return value: (transfer full): a #GObject or %NULL
*
* Since: 0.10
*/
root = json_parser_get_root (parser);
if (root == NULL || JSON_NODE_TYPE (root) != JSON_NODE_OBJECT)
{
+ /* translators: the %s is the name of the data structure */
g_set_error (error, JSON_PARSER_ERROR,
JSON_PARSER_ERROR_PARSE,
- "Expecting a JSON object, but the root node "
- "is of type `%s'",
+ _("Expecting a JSON object, but the root node is of type `%s'"),
json_node_type_name (root));
g_object_unref (parser);
return NULL;
#define __JSON_GOBJECT_H__
#include <json-glib/json-types.h>
-#include <glib-object.h>
G_BEGIN_DECLS
* into a #JsonNode
* @deserialize_property: virtual function for deserializing a #JsonNode
* into a #GObject property
+ * @find_property: virtual function for finding a property definition using
+ * its name
+ * @list_properties: virtual function for listing the installed property
+ * definitions
+ * @set_property: virtual function for setting a property
+ * @get_property: virtual function for getting a property
*
- * Interface that allows serializing and deserializing #GObject<!-- -->s
+ * Interface that allows serializing and deserializing #GObject instances
* with properties storing complex data types. The json_serialize_gobject()
* function will check if the passed #GObject implements this interface,
* so it can also be used to override the default property serialization
GValue *value,
GParamSpec *pspec,
JsonNode *property_node);
+
+ GParamSpec * (* find_property) (JsonSerializable *serializable,
+ const char *name);
+ GParamSpec **(* list_properties) (JsonSerializable *serializable,
+ guint *n_pspecs);
+ void (* set_property) (JsonSerializable *serializable,
+ GParamSpec *pspec,
+ const GValue *value);
+ void (* get_property) (JsonSerializable *serializable,
+ GParamSpec *pspec,
+ GValue *value);
};
-GType json_serializable_get_type (void) G_GNUC_CONST;
+JSON_AVAILABLE_IN_1_0
+GType json_serializable_get_type (void) G_GNUC_CONST;
+JSON_AVAILABLE_IN_1_0
JsonNode *json_serializable_serialize_property (JsonSerializable *serializable,
const gchar *property_name,
const GValue *value,
GParamSpec *pspec);
+JSON_AVAILABLE_IN_1_0
gboolean json_serializable_deserialize_property (JsonSerializable *serializable,
const gchar *property_name,
GValue *value,
GParamSpec *pspec,
JsonNode *property_node);
+JSON_AVAILABLE_IN_1_0
+GParamSpec * json_serializable_find_property (JsonSerializable *serializable,
+ const char *name);
+JSON_AVAILABLE_IN_1_0
+GParamSpec ** json_serializable_list_properties (JsonSerializable *serializable,
+ guint *n_pspecs);
+JSON_AVAILABLE_IN_1_0
+void json_serializable_set_property (JsonSerializable *serializable,
+ GParamSpec *pspec,
+ const GValue *value);
+JSON_AVAILABLE_IN_1_0
+void json_serializable_get_property (JsonSerializable *serializable,
+ GParamSpec *pspec,
+ GValue *value);
+
+JSON_AVAILABLE_IN_1_0
JsonNode *json_serializable_default_serialize_property (JsonSerializable *serializable,
const gchar *property_name,
const GValue *value,
GParamSpec *pspec);
+JSON_AVAILABLE_IN_1_0
gboolean json_serializable_default_deserialize_property (JsonSerializable *serializable,
const gchar *property_name,
GValue *value,
*/
typedef gpointer (* JsonBoxedDeserializeFunc) (JsonNode *node);
+JSON_AVAILABLE_IN_1_0
void json_boxed_register_serialize_func (GType gboxed_type,
JsonNodeType node_type,
JsonBoxedSerializeFunc serialize_func);
+JSON_AVAILABLE_IN_1_0
void json_boxed_register_deserialize_func (GType gboxed_type,
JsonNodeType node_type,
JsonBoxedDeserializeFunc deserialize_func);
+JSON_AVAILABLE_IN_1_0
gboolean json_boxed_can_serialize (GType gboxed_type,
JsonNodeType *node_type);
+JSON_AVAILABLE_IN_1_0
gboolean json_boxed_can_deserialize (GType gboxed_type,
JsonNodeType node_type);
+JSON_AVAILABLE_IN_1_0
JsonNode *json_boxed_serialize (GType gboxed_type,
gconstpointer boxed);
+JSON_AVAILABLE_IN_1_0
gpointer json_boxed_deserialize (GType gboxed_type,
JsonNode *node);
+JSON_AVAILABLE_IN_1_0
JsonNode *json_gobject_serialize (GObject *gobject);
+JSON_AVAILABLE_IN_1_0
GObject * json_gobject_deserialize (GType gtype,
JsonNode *node);
+JSON_AVAILABLE_IN_1_0
GObject * json_gobject_from_data (GType gtype,
const gchar *data,
gssize length,
GError **error);
+JSON_AVAILABLE_IN_1_0
gchar * json_gobject_to_data (GObject *gobject,
gsize *length);
-#ifndef JSON_DISABLE_DEPRECATED
+JSON_DEPRECATED_IN_1_0_FOR(json_gobject_from_data)
GObject * json_construct_gobject (GType gtype,
const gchar *data,
gsize length,
- GError **error) G_GNUC_DEPRECATED;
+ GError **error);
+JSON_DEPRECATED_IN_1_0_FOR(json_gobject_to_data)
gchar * json_serialize_gobject (GObject *gobject,
- gsize *length) G_GNUC_MALLOC G_GNUC_DEPRECATED;
-#endif /* JSON_DISABLE_DEPRECATED */
-
+ gsize *length) G_GNUC_MALLOC;
G_END_DECLS
--- /dev/null
+/* json-gvariant.c - JSON GVariant integration
+ *
+ * This file is part of JSON-GLib
+ * Copyright (C) 2007 OpenedHand Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * Author:
+ * Eduardo Lima Mitev <elima@igalia.com>
+ */
+
+#include "config.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+
+#include <glib/gi18n-lib.h>
+
+#include <gio/gio.h>
+
+#include "json-gvariant.h"
+
+#include "json-generator.h"
+#include "json-parser.h"
+
+/**
+ * SECTION:json-gvariant
+ * @short_description: Serialize and deserialize GVariant types
+ * @Title: JSON GVariant Integration
+ *
+ * Use json_gvariant_serialize() and json_gvariant_serialize_data() to
+ * convert from any #GVariant value to a #JsonNode tree or its string
+ * representation.
+ *
+ * Use json_gvariant_deserialize() and json_gvariant_deserialize_data() to
+ * obtain the #GVariant value from a #JsonNode tree or directly from a JSON
+ * string.
+ *
+ * Since many #GVariant data types cannot be directly represented as
+ * JSON, a #GVariant type string (signature) should be provided to these
+ * methods in order to obtain a correct, type-contrained result.
+ * If no signature is provided, conversion can still be done, but the
+ * resulting #GVariant value will be "guessed" from the JSON data types
+ * using the following rules:
+ *
+ * ## Strings
+ * JSON strings map to GVariant `(s)`.
+ *
+ * ## Integers
+ * JSON integers map to GVariant int64 `(x)`.
+ *
+ * ## Booleans
+ * JSON booleans map to GVariant boolean `(b)`.
+ *
+ * ## Numbers
+ * JSON numbers map to GVariant double `(d)`.
+ *
+ * ## Arrays
+ * JSON arrays map to GVariant arrays of variants `(av)`.
+ *
+ * ## Objects
+ * JSON objects map to GVariant dictionaries of string to variants `(a{sv})`.
+ *
+ * ## Null values
+ * JSON null values map to GVariant maybe variants `(mv)`.
+ */
+
+/* custom extension to the GVariantClass enumeration to differentiate
+ * a single dictionary entry from an array of dictionary entries
+ */
+#define JSON_G_VARIANT_CLASS_DICTIONARY 'c'
+
+typedef void (* GVariantForeachFunc) (GVariant *variant_child,
+ gpointer user_data);
+
+static GVariant * json_to_gvariant_recurse (JsonNode *json_node,
+ const gchar **signature,
+ GError **error);
+
+/* ========================================================================== */
+/* GVariant to JSON */
+/* ========================================================================== */
+
+static void
+gvariant_foreach (GVariant *variant,
+ GVariantForeachFunc func,
+ gpointer user_data)
+{
+ GVariantIter iter;
+ GVariant *variant_child;
+
+ g_variant_iter_init (&iter, variant);
+ while ((variant_child = g_variant_iter_next_value (&iter)) != NULL)
+ {
+ func (variant_child, user_data);
+ g_variant_unref (variant_child);
+ }
+}
+
+static void
+gvariant_to_json_array_foreach (GVariant *variant_child,
+ gpointer user_data)
+{
+ JsonArray *array = user_data;
+ JsonNode *json_child;
+
+ json_child = json_gvariant_serialize (variant_child);
+ json_array_add_element (array, json_child);
+}
+
+static JsonNode *
+gvariant_to_json_array (GVariant *variant)
+{
+ JsonArray *array;
+ JsonNode *json_node;
+
+ array = json_array_new ();
+ json_node = json_node_new (JSON_NODE_ARRAY);
+ json_node_set_array (json_node, array);
+ json_array_unref (array);
+
+ gvariant_foreach (variant,
+ gvariant_to_json_array_foreach,
+ array);
+
+ return json_node;
+}
+
+static gchar *
+gvariant_simple_to_string (GVariant *variant)
+{
+ GVariantClass class;
+ gchar *str;
+
+ class = g_variant_classify (variant);
+ switch (class)
+ {
+ case G_VARIANT_CLASS_BOOLEAN:
+ if (g_variant_get_boolean (variant))
+ str = g_strdup ("true");
+ else
+ str = g_strdup ("false");
+ break;
+
+ case G_VARIANT_CLASS_BYTE:
+ str = g_strdup_printf ("%u", g_variant_get_byte (variant));
+ break;
+ case G_VARIANT_CLASS_INT16:
+ str = g_strdup_printf ("%d", g_variant_get_int16 (variant));
+ break;
+ case G_VARIANT_CLASS_UINT16:
+ str = g_strdup_printf ("%u", g_variant_get_uint16 (variant));
+ break;
+ case G_VARIANT_CLASS_INT32:
+ str = g_strdup_printf ("%d", g_variant_get_int32 (variant));
+ break;
+ case G_VARIANT_CLASS_UINT32:
+ str = g_strdup_printf ("%u", g_variant_get_uint32 (variant));
+ break;
+ case G_VARIANT_CLASS_INT64:
+ str = g_strdup_printf ("%" G_GINT64_FORMAT,
+ g_variant_get_int64 (variant));
+ break;
+ case G_VARIANT_CLASS_UINT64:
+ str = g_strdup_printf ("%" G_GUINT64_FORMAT,
+ g_variant_get_uint64 (variant));
+ break;
+ case G_VARIANT_CLASS_HANDLE:
+ str = g_strdup_printf ("%d", g_variant_get_handle (variant));
+ break;
+
+ case G_VARIANT_CLASS_DOUBLE:
+ {
+ gchar buf[G_ASCII_DTOSTR_BUF_SIZE];
+
+ g_ascii_formatd (buf,
+ G_ASCII_DTOSTR_BUF_SIZE,
+ "%f",
+ g_variant_get_double (variant));
+
+ str = g_strdup (buf);
+ break;
+ }
+
+ case G_VARIANT_CLASS_STRING:
+ case G_VARIANT_CLASS_OBJECT_PATH:
+ case G_VARIANT_CLASS_SIGNATURE:
+ str = g_strdup (g_variant_get_string (variant, NULL));
+ break;
+
+ default:
+ g_assert_not_reached ();
+ break;
+ }
+
+ return str;
+}
+
+static JsonNode *
+gvariant_dict_entry_to_json (GVariant *variant, gchar **member_name)
+{
+ GVariant *member;
+ GVariant *value;
+ JsonNode *json_node;
+
+ member = g_variant_get_child_value (variant, 0);
+ *member_name = gvariant_simple_to_string (member);
+
+ value = g_variant_get_child_value (variant, 1);
+ json_node = json_gvariant_serialize (value);
+
+ g_variant_unref (member);
+ g_variant_unref (value);
+
+ return json_node;
+}
+
+static void
+gvariant_to_json_object_foreach (GVariant *variant_child, gpointer user_data)
+{
+ gchar *member_name;
+ JsonNode *json_child;
+ JsonObject *object = (JsonObject *) user_data;
+
+ json_child = gvariant_dict_entry_to_json (variant_child, &member_name);
+ json_object_set_member (object, member_name, json_child);
+ g_free (member_name);
+}
+
+static JsonNode *
+gvariant_to_json_object (GVariant *variant)
+{
+ JsonNode *json_node;
+ JsonObject *object;
+
+ json_node = json_node_new (JSON_NODE_OBJECT);
+ object = json_object_new ();
+ json_node_set_object (json_node, object);
+ json_object_unref (object);
+
+ gvariant_foreach (variant,
+ gvariant_to_json_object_foreach,
+ object);
+
+ return json_node;
+}
+
+/**
+ * json_gvariant_serialize:
+ * @variant: A #GVariant to convert
+ *
+ * Converts @variant to a JSON tree.
+ *
+ * Return value: (transfer full): A #JsonNode representing the root of the
+ * JSON data structure obtained from @variant
+ *
+ * Since: 0.14
+ */
+JsonNode *
+json_gvariant_serialize (GVariant *variant)
+{
+ JsonNode *json_node = NULL;
+ GVariantClass class;
+
+ g_return_val_if_fail (variant != NULL, NULL);
+
+ class = g_variant_classify (variant);
+
+ if (! g_variant_is_container (variant))
+ {
+ json_node = json_node_new (JSON_NODE_VALUE);
+
+ switch (class)
+ {
+ case G_VARIANT_CLASS_BOOLEAN:
+ json_node_set_boolean (json_node, g_variant_get_boolean (variant));
+ break;
+
+ case G_VARIANT_CLASS_BYTE:
+ json_node_set_int (json_node, g_variant_get_byte (variant));
+ break;
+ case G_VARIANT_CLASS_INT16:
+ json_node_set_int (json_node, g_variant_get_int16 (variant));
+ break;
+ case G_VARIANT_CLASS_UINT16:
+ json_node_set_int (json_node, g_variant_get_uint16 (variant));
+ break;
+ case G_VARIANT_CLASS_INT32:
+ json_node_set_int (json_node, g_variant_get_int32 (variant));
+ break;
+ case G_VARIANT_CLASS_UINT32:
+ json_node_set_int (json_node, g_variant_get_uint32 (variant));
+ break;
+ case G_VARIANT_CLASS_INT64:
+ json_node_set_int (json_node, g_variant_get_int64 (variant));
+ break;
+ case G_VARIANT_CLASS_UINT64:
+ json_node_set_int (json_node, g_variant_get_uint64 (variant));
+ break;
+ case G_VARIANT_CLASS_HANDLE:
+ json_node_set_int (json_node, g_variant_get_handle (variant));
+ break;
+
+ case G_VARIANT_CLASS_DOUBLE:
+ json_node_set_double (json_node, g_variant_get_double (variant));
+ break;
+
+ case G_VARIANT_CLASS_STRING:
+ case G_VARIANT_CLASS_OBJECT_PATH:
+ case G_VARIANT_CLASS_SIGNATURE:
+ json_node_set_string (json_node, g_variant_get_string (variant, NULL));
+ break;
+
+ default:
+ break;
+ }
+ }
+ else
+ {
+ switch (class)
+ {
+ case G_VARIANT_CLASS_MAYBE:
+ {
+ GVariant *value;
+
+ value = g_variant_get_maybe (variant);
+ if (value == NULL)
+ {
+ json_node = json_node_new (JSON_NODE_NULL);
+ }
+ else
+ {
+ json_node = json_gvariant_serialize (value);
+ g_variant_unref (value);
+ }
+
+ break;
+ }
+
+ case G_VARIANT_CLASS_VARIANT:
+ {
+ GVariant *value;
+
+ value = g_variant_get_variant (variant);
+ json_node = json_gvariant_serialize (value);
+ g_variant_unref (value);
+
+ break;
+ }
+
+ case G_VARIANT_CLASS_ARRAY:
+ {
+ const gchar *type;
+
+ type = g_variant_get_type_string (variant);
+
+ if (type[1] == G_VARIANT_CLASS_DICT_ENTRY)
+ {
+ /* array of dictionary entries => JsonObject */
+ json_node = gvariant_to_json_object (variant);
+ }
+ else
+ {
+ /* array of anything else => JsonArray */
+ json_node = gvariant_to_json_array (variant);
+ }
+
+ break;
+ }
+
+ case G_VARIANT_CLASS_DICT_ENTRY:
+ {
+ gchar *member_name;
+ JsonObject *object;
+ JsonNode *child;
+
+ /* a single dictionary entry => JsonObject */
+ json_node = json_node_new (JSON_NODE_OBJECT);
+ object = json_object_new ();
+ json_node_set_object (json_node, object);
+ json_object_unref (object);
+
+ child = gvariant_dict_entry_to_json (variant, &member_name);
+
+ json_object_set_member (object, member_name, child);
+ g_free (member_name);
+
+ break;
+ }
+
+ case G_VARIANT_CLASS_TUPLE:
+ json_node = gvariant_to_json_array (variant);
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ return json_node;
+}
+
+/**
+ * json_gvariant_serialize_data:
+ * @variant: A #GVariant to convert
+ * @length: (out) (allow-none): Return location for the length of the returned
+ * string, or %NULL
+ *
+ * Converts @variant to its JSON encoded string representation. This method
+ * is actually a helper function. It uses json_gvariant_serialize() to obtain the
+ * JSON tree, and then #JsonGenerator to stringify it.
+ *
+ * Return value: (transfer full): The JSON encoded string corresponding to
+ * @variant
+ *
+ * Since: 0.14
+ */
+gchar *
+json_gvariant_serialize_data (GVariant *variant, gsize *length)
+{
+ JsonNode *json_node;
+ JsonGenerator *generator;
+ gchar *json;
+
+ json_node = json_gvariant_serialize (variant);
+
+ generator = json_generator_new ();
+
+ json_generator_set_root (generator, json_node);
+ json = json_generator_to_data (generator, length);
+
+ g_object_unref (generator);
+
+ json_node_free (json_node);
+
+ return json;
+}
+
+/* ========================================================================== */
+/* JSON to GVariant */
+/* ========================================================================== */
+
+static GVariantClass
+json_to_gvariant_get_next_class (JsonNode *json_node,
+ const gchar **signature)
+{
+ if (signature == NULL)
+ {
+ GVariantClass class = 0;
+
+ switch (json_node_get_node_type (json_node))
+ {
+ case JSON_NODE_VALUE:
+ switch (json_node_get_value_type (json_node))
+ {
+ case G_TYPE_BOOLEAN:
+ class = G_VARIANT_CLASS_BOOLEAN;
+ break;
+
+ case G_TYPE_INT64:
+ class = G_VARIANT_CLASS_INT64;
+ break;
+
+ case G_TYPE_DOUBLE:
+ class = G_VARIANT_CLASS_DOUBLE;
+ break;
+
+ case G_TYPE_STRING:
+ class = G_VARIANT_CLASS_STRING;
+ break;
+ }
+
+ break;
+
+ case JSON_NODE_ARRAY:
+ class = G_VARIANT_CLASS_ARRAY;
+ break;
+
+ case JSON_NODE_OBJECT:
+ class = JSON_G_VARIANT_CLASS_DICTIONARY;
+ break;
+
+ case JSON_NODE_NULL:
+ class = G_VARIANT_CLASS_MAYBE;
+ break;
+ }
+
+ return class;
+ }
+ else
+ {
+ if ((*signature)[0] == G_VARIANT_CLASS_ARRAY &&
+ (*signature)[1] == G_VARIANT_CLASS_DICT_ENTRY)
+ return JSON_G_VARIANT_CLASS_DICTIONARY;
+ else
+ return (*signature)[0];
+ }
+}
+
+static gboolean
+json_node_assert_type (JsonNode *json_node,
+ JsonNodeType type,
+ GType sub_type,
+ GError **error)
+{
+ if (JSON_NODE_TYPE (json_node) != type ||
+ (type == JSON_NODE_VALUE &&
+ (json_node_get_value_type (json_node) != sub_type)))
+ {
+ /* translators: the '%s' is the type name */
+ g_set_error (error,
+ G_IO_ERROR,
+ G_IO_ERROR_INVALID_DATA,
+ _("Unexpected type '%s' in JSON node"),
+ g_type_name (json_node_get_value_type (json_node)));
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+}
+
+static void
+json_to_gvariant_foreach_add (gpointer data, gpointer user_data)
+{
+ GVariantBuilder *builder = (GVariantBuilder *) user_data;
+ GVariant *child = (GVariant *) data;
+
+ g_variant_builder_add_value (builder, child);
+}
+
+static void
+json_to_gvariant_foreach_free (gpointer data, gpointer user_data)
+{
+ GVariant *child = (GVariant *) data;
+
+ g_variant_unref (child);
+}
+
+static GVariant *
+json_to_gvariant_build_from_glist (GList *list, const gchar *signature)
+{
+ GVariantBuilder *builder;
+ GVariant *result;
+
+ builder = g_variant_builder_new (G_VARIANT_TYPE (signature));
+
+ g_list_foreach (list, json_to_gvariant_foreach_add, builder);
+ result = g_variant_builder_end (builder);
+
+ g_variant_builder_unref (builder);
+
+ return result;
+}
+
+static GVariant *
+json_to_gvariant_tuple (JsonNode *json_node,
+ const gchar **signature,
+ GError **error)
+{
+ GVariant *variant = NULL;
+ JsonArray *array;
+ gint i;
+ GList *children = NULL;
+ gboolean roll_back = FALSE;
+ const gchar *initial_signature;
+
+ array = json_node_get_array (json_node);
+
+ initial_signature = *signature;
+ (*signature)++;
+ i = 1;
+ while ((*signature)[0] != ')' && (*signature)[0] != '\0')
+ {
+ JsonNode *json_child;
+ GVariant *variant_child;
+
+ if (i - 1 >= json_array_get_length (array))
+ {
+ g_set_error_literal (error,
+ G_IO_ERROR,
+ G_IO_ERROR_INVALID_DATA,
+ _("Missing elements in JSON array to conform to a tuple"));
+ roll_back = TRUE;
+ break;
+ }
+
+ json_child = json_array_get_element (array, i - 1);
+
+ variant_child = json_to_gvariant_recurse (json_child, signature, error);
+ if (variant_child != NULL)
+ {
+ children = g_list_append (children, variant_child);
+ }
+ else
+ {
+ roll_back = TRUE;
+ break;
+ }
+
+ i++;
+ }
+
+ if (! roll_back)
+ {
+ if ( (*signature)[0] != ')')
+ {
+ g_set_error_literal (error,
+ G_IO_ERROR,
+ G_IO_ERROR_INVALID_DATA,
+ _("Missing closing symbol ')' in the GVariant tuple type"));
+ roll_back = TRUE;
+ }
+ else if (json_array_get_length (array) >= i)
+ {
+ g_set_error_literal (error,
+ G_IO_ERROR,
+ G_IO_ERROR_INVALID_DATA,
+ _("Unexpected extra elements in JSON array"));
+ roll_back = TRUE;
+ }
+ else
+ {
+ gchar *tuple_type;
+
+ tuple_type = g_strndup (initial_signature,
+ (*signature) - initial_signature + 1);
+
+ variant = json_to_gvariant_build_from_glist (children, tuple_type);
+
+ g_free (tuple_type);
+ }
+ }
+
+ if (roll_back)
+ g_list_foreach (children, json_to_gvariant_foreach_free, NULL);
+
+ g_list_free (children);
+
+ return variant;
+}
+
+static gchar *
+signature_get_next_complete_type (const gchar **signature)
+{
+ GVariantClass class;
+ const gchar *initial_signature;
+ gchar *result;
+
+ /* here it is assumed that 'signature' is a valid type string */
+
+ initial_signature = *signature;
+ class = (*signature)[0];
+
+ if (class == G_VARIANT_CLASS_TUPLE || class == G_VARIANT_CLASS_DICT_ENTRY)
+ {
+ gchar stack[256] = {0};
+ guint stack_len = 0;
+
+ do
+ {
+ if ( (*signature)[0] == G_VARIANT_CLASS_TUPLE)
+ {
+ stack[stack_len] = ')';
+ stack_len++;
+ }
+ else if ( (*signature)[0] == G_VARIANT_CLASS_DICT_ENTRY)
+ {
+ stack[stack_len] = '}';
+ stack_len++;
+ }
+
+ (*signature)++;
+
+ if ( (*signature)[0] == stack[stack_len - 1])
+ stack_len--;
+ }
+ while (stack_len > 0);
+
+ (*signature)++;
+ }
+ else if (class == G_VARIANT_CLASS_ARRAY || class == G_VARIANT_CLASS_MAYBE)
+ {
+ gchar *tmp_sig;
+
+ (*signature)++;
+ tmp_sig = signature_get_next_complete_type (signature);
+ g_free (tmp_sig);
+ }
+ else
+ {
+ (*signature)++;
+ }
+
+ result = g_strndup (initial_signature, (*signature) - initial_signature);
+
+ return result;
+}
+
+static GVariant *
+json_to_gvariant_maybe (JsonNode *json_node,
+ const gchar **signature,
+ GError **error)
+{
+ GVariant *variant = NULL;
+ GVariant *value;
+ gchar *maybe_signature;
+
+ if (signature)
+ {
+ (*signature)++;
+ maybe_signature = signature_get_next_complete_type (signature);
+ }
+ else
+ {
+ maybe_signature = g_strdup ("v");
+ }
+
+ if (json_node_get_node_type (json_node) == JSON_NODE_NULL)
+ {
+ variant = g_variant_new_maybe (G_VARIANT_TYPE (maybe_signature), NULL);
+ }
+ else
+ {
+ const gchar *tmp_signature;
+
+ tmp_signature = maybe_signature;
+ value = json_to_gvariant_recurse (json_node,
+ &tmp_signature,
+ error);
+
+ if (value != NULL)
+ variant = g_variant_new_maybe (G_VARIANT_TYPE (maybe_signature), value);
+ }
+
+ g_free (maybe_signature);
+
+ /* compensate the (*signature)++ call at the end of 'recurse()' */
+ if (signature)
+ (*signature)--;
+
+ return variant;
+}
+
+static GVariant *
+json_to_gvariant_array (JsonNode *json_node,
+ const gchar **signature,
+ GError **error)
+{
+ GVariant *variant = NULL;
+ JsonArray *array;
+ GList *children = NULL;
+ gboolean roll_back = FALSE;
+ const gchar *orig_signature;
+ gchar *child_signature;
+
+ array = json_node_get_array (json_node);
+
+ if (signature != NULL)
+ {
+ orig_signature = *signature;
+
+ (*signature)++;
+ child_signature = signature_get_next_complete_type (signature);
+ }
+ else
+ child_signature = g_strdup ("v");
+
+ if (json_array_get_length (array) > 0)
+ {
+ gint i;
+ guint len;
+
+ len = json_array_get_length (array);
+ for (i = 0; i < len; i++)
+ {
+ JsonNode *json_child;
+ GVariant *variant_child;
+ const gchar *tmp_signature;
+
+ json_child = json_array_get_element (array, i);
+
+ tmp_signature = child_signature;
+ variant_child = json_to_gvariant_recurse (json_child,
+ &tmp_signature,
+ error);
+ if (variant_child != NULL)
+ {
+ children = g_list_append (children, variant_child);
+ }
+ else
+ {
+ roll_back = TRUE;
+ break;
+ }
+ }
+ }
+
+ if (!roll_back)
+ {
+ gchar *array_signature;
+
+ if (signature)
+ array_signature = g_strndup (orig_signature, (*signature) - orig_signature);
+ else
+ array_signature = g_strdup ("av");
+
+ variant = json_to_gvariant_build_from_glist (children, array_signature);
+
+ g_free (array_signature);
+
+ /* compensate the (*signature)++ call at the end of 'recurse()' */
+ if (signature)
+ (*signature)--;
+ }
+ else
+ g_list_foreach (children, json_to_gvariant_foreach_free, NULL);
+
+ g_list_free (children);
+ g_free (child_signature);
+
+ return variant;
+}
+
+static GVariant *
+gvariant_simple_from_string (const gchar *st,
+ GVariantClass class,
+ GError **error)
+{
+ GVariant *variant = NULL;
+ gchar *nptr = NULL;
+
+ errno = 0;
+
+ switch (class)
+ {
+ case G_VARIANT_CLASS_BOOLEAN:
+ if (g_strcmp0 (st, "true") == 0)
+ variant = g_variant_new_boolean (TRUE);
+ else if (g_strcmp0 (st, "false") == 0)
+ variant = g_variant_new_boolean (FALSE);
+ else
+ errno = 1;
+ break;
+
+ case G_VARIANT_CLASS_BYTE:
+ variant = g_variant_new_byte (g_ascii_strtoll (st, &nptr, 10));
+ break;
+
+ case G_VARIANT_CLASS_INT16:
+ variant = g_variant_new_int16 (g_ascii_strtoll (st, &nptr, 10));
+ break;
+
+ case G_VARIANT_CLASS_UINT16:
+ variant = g_variant_new_uint16 (g_ascii_strtoll (st, &nptr, 10));
+ break;
+
+ case G_VARIANT_CLASS_INT32:
+ variant = g_variant_new_int32 (g_ascii_strtoll (st, &nptr, 10));
+ break;
+
+ case G_VARIANT_CLASS_UINT32:
+ variant = g_variant_new_uint32 (g_ascii_strtoull (st, &nptr, 10));
+ break;
+
+ case G_VARIANT_CLASS_INT64:
+ variant = g_variant_new_int64 (g_ascii_strtoll (st, &nptr, 10));
+ break;
+
+ case G_VARIANT_CLASS_UINT64:
+ variant = g_variant_new_uint64 (g_ascii_strtoull (st, &nptr, 10));
+ break;
+
+ case G_VARIANT_CLASS_HANDLE:
+ variant = g_variant_new_handle (strtol (st, &nptr, 10));
+ break;
+
+ case G_VARIANT_CLASS_DOUBLE:
+ variant = g_variant_new_double (g_ascii_strtod (st, &nptr));
+ break;
+
+ case G_VARIANT_CLASS_STRING:
+ case G_VARIANT_CLASS_OBJECT_PATH:
+ case G_VARIANT_CLASS_SIGNATURE:
+ variant = g_variant_new_string (st);
+ break;
+
+ default:
+ g_assert_not_reached ();
+ break;
+ }
+
+ if (errno != 0 || nptr == st)
+ {
+ g_set_error_literal (error,
+ G_IO_ERROR,
+ G_IO_ERROR_INVALID_DATA,
+ _("Invalid string value converting to GVariant"));
+ if (variant != NULL)
+ {
+ g_variant_unref (variant);
+ variant = NULL;
+ }
+ }
+
+ return variant;
+}
+
+static void
+parse_dict_entry_signature (const gchar **signature,
+ gchar **entry_signature,
+ gchar **key_signature,
+ gchar **value_signature)
+{
+ const gchar *tmp_sig;
+
+ if (signature != NULL)
+ *entry_signature = signature_get_next_complete_type (signature);
+ else
+ *entry_signature = g_strdup ("{sv}");
+
+ tmp_sig = (*entry_signature) + 1;
+ *key_signature = signature_get_next_complete_type (&tmp_sig);
+ *value_signature = signature_get_next_complete_type (&tmp_sig);
+}
+
+static GVariant *
+json_to_gvariant_dict_entry (JsonNode *json_node,
+ const gchar **signature,
+ GError **error)
+{
+ GVariant *variant = NULL;
+ JsonObject *obj;
+
+ gchar *entry_signature;
+ gchar *key_signature;
+ gchar *value_signature;
+ const gchar *tmp_signature;
+
+ GList *member;
+
+ const gchar *json_member;
+ JsonNode *json_value;
+ GVariant *variant_member;
+ GVariant *variant_value;
+
+ obj = json_node_get_object (json_node);
+
+ if (json_object_get_size (obj) != 1)
+ {
+ g_set_error_literal (error,
+ G_IO_ERROR,
+ G_IO_ERROR_INVALID_DATA,
+ _("A GVariant dictionary entry expects a JSON object with exactly one member"));
+ return NULL;
+ }
+
+ parse_dict_entry_signature (signature,
+ &entry_signature,
+ &key_signature,
+ &value_signature);
+
+ member = json_object_get_members (obj);
+
+ json_member = (const gchar *) member->data;
+ variant_member = gvariant_simple_from_string (json_member,
+ key_signature[0],
+ error);
+ if (variant_member != NULL)
+ {
+ json_value = json_object_get_member (obj, json_member);
+
+ tmp_signature = value_signature;
+ variant_value = json_to_gvariant_recurse (json_value,
+ &tmp_signature,
+ error);
+
+ if (variant_value != NULL)
+ {
+ GVariantBuilder *builder;
+
+ builder = g_variant_builder_new (G_VARIANT_TYPE (entry_signature));
+ g_variant_builder_add_value (builder, variant_member);
+ g_variant_builder_add_value (builder, variant_value);
+ variant = g_variant_builder_end (builder);
+
+ g_variant_builder_unref (builder);
+ }
+ }
+
+ g_list_free (member);
+ g_free (value_signature);
+ g_free (key_signature);
+ g_free (entry_signature);
+
+ /* compensate the (*signature)++ call at the end of 'recurse()' */
+ if (signature)
+ (*signature)--;
+
+ return variant;
+}
+
+static GVariant *
+json_to_gvariant_dictionary (JsonNode *json_node,
+ const gchar **signature,
+ GError **error)
+{
+ GVariant *variant = NULL;
+ JsonObject *obj;
+ gboolean roll_back = FALSE;
+
+ gchar *dict_signature;
+ gchar *entry_signature;
+ gchar *key_signature;
+ gchar *value_signature;
+ const gchar *tmp_signature;
+
+ GVariantBuilder *builder;
+ GList *members;
+ GList *member;
+
+ obj = json_node_get_object (json_node);
+
+ if (signature != NULL)
+ (*signature)++;
+
+ parse_dict_entry_signature (signature,
+ &entry_signature,
+ &key_signature,
+ &value_signature);
+
+ dict_signature = g_strdup_printf ("a%s", entry_signature);
+
+ builder = g_variant_builder_new (G_VARIANT_TYPE (dict_signature));
+
+ members = json_object_get_members (obj);
+
+ member = members;
+ while (member != NULL)
+ {
+ const gchar *json_member;
+ JsonNode *json_value;
+ GVariant *variant_member;
+ GVariant *variant_value;
+
+ json_member = (const gchar *) member->data;
+ variant_member = gvariant_simple_from_string (json_member,
+ key_signature[0],
+ error);
+ if (variant_member == NULL)
+ {
+ roll_back = TRUE;
+ break;
+ }
+
+ json_value = json_object_get_member (obj, json_member);
+
+ tmp_signature = value_signature;
+ variant_value = json_to_gvariant_recurse (json_value,
+ &tmp_signature,
+ error);
+
+ if (variant_value != NULL)
+ {
+ g_variant_builder_open (builder, G_VARIANT_TYPE (entry_signature));
+ g_variant_builder_add_value (builder, variant_member);
+ g_variant_builder_add_value (builder, variant_value);
+ g_variant_builder_close (builder);
+ }
+ else
+ {
+ roll_back = TRUE;
+ break;
+ }
+
+ member = member->next;
+ }
+
+ if (! roll_back)
+ variant = g_variant_builder_end (builder);
+
+ g_variant_builder_unref (builder);
+ g_list_free (members);
+ g_free (value_signature);
+ g_free (key_signature);
+ g_free (entry_signature);
+ g_free (dict_signature);
+
+ /* compensate the (*signature)++ call at the end of 'recurse()' */
+ if (signature != NULL)
+ (*signature)--;
+
+ return variant;
+}
+
+static GVariant *
+json_to_gvariant_recurse (JsonNode *json_node,
+ const gchar **signature,
+ GError **error)
+{
+ GVariant *variant = NULL;
+ GVariantClass class;
+
+ class = json_to_gvariant_get_next_class (json_node, signature);
+
+ if (class == JSON_G_VARIANT_CLASS_DICTIONARY)
+ {
+ if (json_node_assert_type (json_node, JSON_NODE_OBJECT, 0, error))
+ variant = json_to_gvariant_dictionary (json_node, signature, error);
+
+ goto out;
+ }
+
+ if (JSON_NODE_TYPE (json_node) == JSON_NODE_VALUE &&
+ json_node_get_value_type (json_node) == G_TYPE_STRING)
+ {
+ const gchar* str = json_node_get_string (json_node);
+ switch (class)
+ {
+ case G_VARIANT_CLASS_BOOLEAN:
+ case G_VARIANT_CLASS_BYTE:
+ case G_VARIANT_CLASS_INT16:
+ case G_VARIANT_CLASS_UINT16:
+ case G_VARIANT_CLASS_INT32:
+ case G_VARIANT_CLASS_UINT32:
+ case G_VARIANT_CLASS_INT64:
+ case G_VARIANT_CLASS_UINT64:
+ case G_VARIANT_CLASS_HANDLE:
+ case G_VARIANT_CLASS_DOUBLE:
+ case G_VARIANT_CLASS_STRING:
+ variant = gvariant_simple_from_string (str, class, error);
+ goto out;
+ default:
+ break;
+ }
+ }
+
+ switch (class)
+ {
+ case G_VARIANT_CLASS_BOOLEAN:
+ if (json_node_assert_type (json_node, JSON_NODE_VALUE, G_TYPE_BOOLEAN, error))
+ variant = g_variant_new_boolean (json_node_get_boolean (json_node));
+ break;
+
+ case G_VARIANT_CLASS_BYTE:
+ if (json_node_assert_type (json_node, JSON_NODE_VALUE, G_TYPE_INT64, error))
+ variant = g_variant_new_byte (json_node_get_int (json_node));
+ break;
+
+ case G_VARIANT_CLASS_INT16:
+ if (json_node_assert_type (json_node, JSON_NODE_VALUE, G_TYPE_INT64, error))
+ variant = g_variant_new_int16 (json_node_get_int (json_node));
+ break;
+
+ case G_VARIANT_CLASS_UINT16:
+ if (json_node_assert_type (json_node, JSON_NODE_VALUE, G_TYPE_INT64, error))
+ variant = g_variant_new_uint16 (json_node_get_int (json_node));
+ break;
+
+ case G_VARIANT_CLASS_INT32:
+ if (json_node_assert_type (json_node, JSON_NODE_VALUE, G_TYPE_INT64, error))
+ variant = g_variant_new_int32 (json_node_get_int (json_node));
+ break;
+
+ case G_VARIANT_CLASS_UINT32:
+ if (json_node_assert_type (json_node, JSON_NODE_VALUE, G_TYPE_INT64, error))
+ variant = g_variant_new_uint32 (json_node_get_int (json_node));
+ break;
+
+ case G_VARIANT_CLASS_INT64:
+ if (json_node_assert_type (json_node, JSON_NODE_VALUE, G_TYPE_INT64, error))
+ variant = g_variant_new_int64 (json_node_get_int (json_node));
+ break;
+
+ case G_VARIANT_CLASS_UINT64:
+ if (json_node_assert_type (json_node, JSON_NODE_VALUE, G_TYPE_INT64, error))
+ variant = g_variant_new_uint64 (json_node_get_int (json_node));
+ break;
+
+ case G_VARIANT_CLASS_HANDLE:
+ if (json_node_assert_type (json_node, JSON_NODE_VALUE, G_TYPE_INT64, error))
+ variant = g_variant_new_handle (json_node_get_int (json_node));
+ break;
+
+ case G_VARIANT_CLASS_DOUBLE:
+ if (json_node_assert_type (json_node, JSON_NODE_VALUE, G_TYPE_DOUBLE, error))
+ variant = g_variant_new_double (json_node_get_double (json_node));
+ break;
+
+ case G_VARIANT_CLASS_STRING:
+ if (json_node_assert_type (json_node, JSON_NODE_VALUE, G_TYPE_STRING, error))
+ variant = g_variant_new_string (json_node_get_string (json_node));
+ break;
+
+ case G_VARIANT_CLASS_OBJECT_PATH:
+ if (json_node_assert_type (json_node, JSON_NODE_VALUE, G_TYPE_STRING, error))
+ variant = g_variant_new_object_path (json_node_get_string (json_node));
+ break;
+
+ case G_VARIANT_CLASS_SIGNATURE:
+ if (json_node_assert_type (json_node, JSON_NODE_VALUE, G_TYPE_STRING, error))
+ variant = g_variant_new_signature (json_node_get_string (json_node));
+ break;
+
+ case G_VARIANT_CLASS_VARIANT:
+ variant = g_variant_new_variant (json_to_gvariant_recurse (json_node,
+ NULL,
+ error));
+ break;
+
+ case G_VARIANT_CLASS_MAYBE:
+ variant = json_to_gvariant_maybe (json_node, signature, error);
+ break;
+
+ case G_VARIANT_CLASS_ARRAY:
+ if (json_node_assert_type (json_node, JSON_NODE_ARRAY, 0, error))
+ variant = json_to_gvariant_array (json_node, signature, error);
+ break;
+
+ case G_VARIANT_CLASS_TUPLE:
+ if (json_node_assert_type (json_node, JSON_NODE_ARRAY, 0, error))
+ variant = json_to_gvariant_tuple (json_node, signature, error);
+ break;
+
+ case G_VARIANT_CLASS_DICT_ENTRY:
+ if (json_node_assert_type (json_node, JSON_NODE_OBJECT, 0, error))
+ variant = json_to_gvariant_dict_entry (json_node, signature, error);
+ break;
+
+ default:
+ g_set_error (error,
+ G_IO_ERROR,
+ G_IO_ERROR_INVALID_DATA,
+ _("GVariant class '%c' not supported"), class);
+ break;
+ }
+
+out:
+ if (signature)
+ (*signature)++;
+
+ return variant;
+}
+
+/**
+ * json_gvariant_deserialize:
+ * @json_node: A #JsonNode to convert
+ * @signature: (allow-none): A valid #GVariant type string, or %NULL
+ * @error: A pointer to a #GError
+ *
+ * Converts a JSON data structure to a GVariant value using @signature to
+ * resolve ambiguous data types. If no error occurs, the resulting #GVariant
+ * is guaranteed to conform to @signature.
+ *
+ * If @signature is not %NULL but does not represent a valid GVariant type
+ * string, %NULL is returned and error is set to %G_IO_ERROR_INVALID_ARGUMENT.
+ * If a @signature is provided but the JSON structure cannot be mapped to it,
+ * %NULL is returned and error is set to %G_IO_ERROR_INVALID_DATA.
+ * If @signature is %NULL, the conversion is done based strictly on the types
+ * in the JSON nodes.
+ *
+ * The returned variant has a floating reference that will need to be sunk
+ * by the caller code.
+ *
+ * Return value: (transfer none): A newly created, floating #GVariant
+ * compliant with @signature, or %NULL on error
+ *
+ * Since: 0.14
+ */
+GVariant *
+json_gvariant_deserialize (JsonNode *json_node,
+ const gchar *signature,
+ GError **error)
+{
+ g_return_val_if_fail (json_node != NULL, NULL);
+
+ if (signature != NULL && ! g_variant_type_string_is_valid (signature))
+ {
+ g_set_error_literal (error,
+ G_IO_ERROR,
+ G_IO_ERROR_INVALID_ARGUMENT,
+ _("Invalid GVariant signature"));
+ return NULL;
+ }
+
+ return json_to_gvariant_recurse (json_node, signature ? &signature : NULL, error);
+}
+
+/**
+ * json_gvariant_deserialize_data:
+ * @json: A JSON data string
+ * @length: The length of @json, or -1 if %NULL-terminated
+ * @signature: (allow-none): A valid #GVariant type string, or %NULL
+ * @error: A pointer to a #GError
+ *
+ * Converts a JSON string to a #GVariant value. This method works exactly
+ * like json_gvariant_deserialize(), but takes a JSON encoded string instead.
+ * The string is first converted to a #JsonNode using #JsonParser, and then
+ * json_gvariant_deserialize() is called.
+ *
+ * The returned variant has a floating reference that will need to be sunk
+ * by the caller code.
+ *
+ * Returns: (transfer none): A newly created, floating #GVariant compliant
+ * with @signature, or %NULL on error
+ *
+ * Since: 0.14
+ */
+GVariant *
+json_gvariant_deserialize_data (const gchar *json,
+ gssize length,
+ const gchar *signature,
+ GError **error)
+{
+ JsonParser *parser;
+ GVariant *variant = NULL;
+ JsonNode *root;
+
+ parser = json_parser_new ();
+
+ if (! json_parser_load_from_data (parser, json, length, error))
+ return NULL;
+
+ root = json_parser_get_root (parser);
+ if (root == NULL)
+ {
+ g_set_error_literal (error,
+ G_IO_ERROR,
+ G_IO_ERROR_INVALID_DATA,
+ _("JSON data is empty"));
+ }
+ else
+ {
+ variant =
+ json_gvariant_deserialize (json_parser_get_root (parser), signature, error);
+ }
+
+ g_object_unref (parser);
+
+ return variant;
+}
--- /dev/null
+/* json-gvariant.h - JSON GVariant integration
+ *
+ * This file is part of JSON-GLib
+ * Copyright (C) 2007 OpenedHand Ltd.
+ * Copyright (C) 2009 Intel Corp.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Author:
+ * Eduardo Lima Mitev <elima@igalia.com>
+ */
+
+#ifndef __JSON_GVARIANT_H__
+#define __JSON_GVARIANT_H__
+
+#if !defined(__JSON_GLIB_INSIDE__) && !defined(JSON_COMPILATION)
+#error "Only <json-glib/json-glib.h> can be included directly."
+#endif
+
+#include <json-glib/json-types.h>
+
+G_BEGIN_DECLS
+
+JSON_AVAILABLE_IN_1_0
+JsonNode * json_gvariant_serialize (GVariant *variant);
+JSON_AVAILABLE_IN_1_0
+gchar * json_gvariant_serialize_data (GVariant *variant,
+ gsize *length);
+
+JSON_AVAILABLE_IN_1_0
+GVariant * json_gvariant_deserialize (JsonNode *json_node,
+ const gchar *signature,
+ GError **error);
+JSON_AVAILABLE_IN_1_0
+GVariant * json_gvariant_deserialize_data (const gchar *json,
+ gssize length,
+ const gchar *signature,
+ GError **error);
+
+G_END_DECLS
+
+#endif /* __JSON_GVARIANT_H__ */
* Emmanuele Bassi <ebassi@linux.intel.com>
*/
-#ifdef HAVE_CONFIG_H
#include "config.h"
-#endif
#include <glib.h>
* they contain.
*/
-GType
-json_node_get_type (void)
-{
- static GType node_type = 0;
-
- if (G_UNLIKELY (node_type == 0))
- node_type = g_boxed_type_register_static (g_intern_static_string ("JsonNode"),
- (GBoxedCopyFunc) json_node_copy,
- (GBoxedFreeFunc) json_node_free);
-
- return node_type;
-}
+G_DEFINE_BOXED_TYPE (JsonNode, json_node, json_node_copy, json_node_free);
/**
* json_node_get_value_type:
return G_TYPE_INVALID;
case JSON_NODE_VALUE:
- return G_VALUE_TYPE (&(node->data.value));
+ if (node->data.value)
+ return JSON_VALUE_TYPE (node->data.value);
+ else
+ return G_TYPE_INVALID;
default:
g_assert_not_reached ();
}
/**
- * json_node_new:
+ * json_node_alloc: (constructor)
+ *
+ * Allocates a new #JsonNode. Use json_node_init() and its variants
+ * to initialize the returned value.
+ *
+ * Return value: (transfer full): the newly allocated #JsonNode. Use
+ * json_node_free() to free the resources allocated by this function
+ *
+ * Since: 0.16
+ */
+JsonNode *
+json_node_alloc (void)
+{
+ return g_slice_new0 (JsonNode);
+}
+
+static void
+json_node_unset (JsonNode *node)
+{
+ g_assert (node != NULL);
+
+ switch (node->type)
+ {
+ case JSON_NODE_OBJECT:
+ if (node->data.object)
+ json_object_unref (node->data.object);
+ break;
+
+ case JSON_NODE_ARRAY:
+ if (node->data.array)
+ json_array_unref (node->data.array);
+ break;
+
+ case JSON_NODE_VALUE:
+ if (node->data.value)
+ json_value_unref (node->data.value);
+ break;
+
+ case JSON_NODE_NULL:
+ break;
+ }
+}
+
+/**
+ * json_node_init:
+ * @node: the #JsonNode to initialize
+ * @type: the type of JSON node to initialize @node to
+ *
+ * Initializes a @node to a specific @type.
+ *
+ * If the node has already been initialized once, it will be reset to
+ * the given type, and any data contained will be cleared.
+ *
+ * Return value: (transfer none): the initialized #JsonNode
+ *
+ * Since: 0.16
+ */
+JsonNode *
+json_node_init (JsonNode *node,
+ JsonNodeType type)
+{
+ g_return_val_if_fail (type >= JSON_NODE_OBJECT &&
+ type <= JSON_NODE_NULL, NULL);
+
+ json_node_unset (node);
+
+ node->type = type;
+
+ return node;
+}
+
+/**
+ * json_node_init_object:
+ * @node: the #JsonNode to initialize
+ * @object: (allow-none): the #JsonObject to initialize @node with, or %NULL
+ *
+ * Initializes @node to %JSON_NODE_OBJECT and sets @object into it.
+ *
+ * This function will take a reference on @object.
+ *
+ * If the node has already been initialized once, it will be reset to
+ * the given type, and any data contained will be cleared.
+ *
+ * Return value: (transfer none): the initialized #JsonNode
+ *
+ * Since: 0.16
+ */
+JsonNode *
+json_node_init_object (JsonNode *node,
+ JsonObject *object)
+{
+ g_return_val_if_fail (node != NULL, NULL);
+
+ json_node_init (node, JSON_NODE_OBJECT);
+ json_node_set_object (node, object);
+
+ return node;
+}
+
+/**
+ * json_node_init_array:
+ * @node: the #JsonNode to initialize
+ * @array: (allow-none): the #JsonArray to initialize @node with, or %NULL
+ *
+ * Initializes @node to %JSON_NODE_ARRAY and sets @array into it.
+ *
+ * This function will take a reference on @array.
+ *
+ * If the node has already been initialized once, it will be reset to
+ * the given type, and any data contained will be cleared.
+ *
+ * Return value: (transfer none): the initialized #JsonNode
+ *
+ * Since: 0.16
+ */
+JsonNode *
+json_node_init_array (JsonNode *node,
+ JsonArray *array)
+{
+ g_return_val_if_fail (node != NULL, NULL);
+
+ json_node_init (node, JSON_NODE_ARRAY);
+ json_node_set_array (node, array);
+
+ return node;
+}
+
+/**
+ * json_node_init_int:
+ * @node: the #JsonNode to initialize
+ * @value: an integer
+ *
+ * Initializes @node to %JSON_NODE_VALUE and sets @value into it.
+ *
+ * If the node has already been initialized once, it will be reset to
+ * the given type, and any data contained will be cleared.
+ *
+ * Return value: (transfer none): the initialized #JsonNode
+ *
+ * Since: 0.16
+ */
+JsonNode *
+json_node_init_int (JsonNode *node,
+ gint64 value)
+{
+ g_return_val_if_fail (node != NULL, NULL);
+
+ json_node_init (node, JSON_NODE_VALUE);
+ json_node_set_int (node, value);
+
+ return node;
+}
+
+/**
+ * json_node_init_double:
+ * @node: the #JsonNode to initialize
+ * @value: a floating point value
+ *
+ * Initializes @node to %JSON_NODE_VALUE and sets @value into it.
+ *
+ * If the node has already been initialized once, it will be reset to
+ * the given type, and any data contained will be cleared.
+ *
+ * Return value: (transfer none): the initialized #JsonNode
+ *
+ * Since: 0.16
+ */
+JsonNode *
+json_node_init_double (JsonNode *node,
+ gdouble value)
+{
+ g_return_val_if_fail (node != NULL, NULL);
+
+ json_node_init (node, JSON_NODE_VALUE);
+ json_node_set_double (node, value);
+
+ return node;
+}
+
+/**
+ * json_node_init_boolean:
+ * @node: the #JsonNode to initialize
+ * @value: a boolean value
+ *
+ * Initializes @node to %JSON_NODE_VALUE and sets @value into it.
+ *
+ * If the node has already been initialized once, it will be reset to
+ * the given type, and any data contained will be cleared.
+ *
+ * Return value: (transfer none): the initialized #JsonNode
+ *
+ * Since: 0.16
+ */
+JsonNode *
+json_node_init_boolean (JsonNode *node,
+ gboolean value)
+{
+ g_return_val_if_fail (node != NULL, NULL);
+
+ json_node_init (node, JSON_NODE_VALUE);
+ json_node_set_boolean (node, value);
+
+ return node;
+}
+
+/**
+ * json_node_init_string:
+ * @node: the #JsonNode to initialize
+ * @value: (allow-none): a string value
+ *
+ * Initializes @node to %JSON_NODE_VALUE and sets @value into it.
+ *
+ * If the node has already been initialized once, it will be reset to
+ * the given type, and any data contained will be cleared.
+ *
+ * Return value: (transfer none): the initialized #JsonNode
+ *
+ * Since: 0.16
+ */
+JsonNode *
+json_node_init_string (JsonNode *node,
+ const char *value)
+{
+ g_return_val_if_fail (node != NULL, NULL);
+
+ json_node_init (node, JSON_NODE_VALUE);
+ json_node_set_string (node, value);
+
+ return node;
+}
+
+/**
+ * json_node_init_null:
+ * @node: the #JsonNode to initialize
+ *
+ * Initializes @node to %JSON_NODE_NULL.
+ *
+ * If the node has already been initialized once, it will be reset to
+ * the given type, and any data contained will be cleared.
+ *
+ * Return value: (transfer none): the initialized #JsonNode
+ *
+ * Since: 0.16
+ */
+JsonNode *
+json_node_init_null (JsonNode *node)
+{
+ g_return_val_if_fail (node != NULL, NULL);
+
+ return json_node_init (node, JSON_NODE_NULL);
+}
+
+/**
+ * json_node_new: (constructor)
* @type: a #JsonNodeType
*
* Creates a new #JsonNode of @type.
*
- * Return value: the newly created #JsonNode
+ * This is a convenience function for json_node_alloc() and json_node_init(),
+ * and it's the equivalent of:
+ *
+ * |[<!-- language="C" -->
+ json_node_init (json_node_alloc (), type);
+ * ]|
+ *
+ * Return value: (transfer full): the newly created #JsonNode
*/
JsonNode *
json_node_new (JsonNodeType type)
{
- JsonNode *data;
-
g_return_val_if_fail (type >= JSON_NODE_OBJECT &&
type <= JSON_NODE_NULL, NULL);
- data = g_slice_new0 (JsonNode);
- data->type = type;
-
- return data;
+ return json_node_init (json_node_alloc (), type);
}
/**
switch (copy->type)
{
case JSON_NODE_OBJECT:
- if (node->data.object)
- copy->data.object = json_object_ref (node->data.object);
+ copy->data.object = json_node_dup_object (node);
break;
case JSON_NODE_ARRAY:
- if (node->data.array)
- copy->data.array = json_array_ref (node->data.array);
+ copy->data.array = json_node_dup_array (node);
break;
case JSON_NODE_VALUE:
- if (G_VALUE_TYPE (&(node->data.value)) != G_TYPE_INVALID)
- {
- g_value_init (&(copy->data.value), G_VALUE_TYPE (&(node->data.value)));
- g_value_copy (&(node->data.value), &(copy->data.value));
- }
+ if (node->data.value)
+ copy->data.value = json_value_ref (node->data.value);
break;
case JSON_NODE_NULL:
/**
* json_node_set_object:
- * @node: a #JsonNode
+ * @node: a #JsonNode initialized to %JSON_NODE_OBJECT
* @object: a #JsonObject
*
* Sets @objects inside @node. The reference count of @object is increased.
g_return_if_fail (node != NULL);
g_return_if_fail (JSON_NODE_TYPE (node) == JSON_NODE_OBJECT);
- if (node->data.object)
+ if (node->data.object != NULL)
json_object_unref (node->data.object);
if (object)
/**
* json_node_take_object:
- * @node: a #JsonNode
- * @object: a #JsonObject
+ * @node: a #JsonNode initialized to %JSON_NODE_OBJECT
+ * @object: (transfer full): a #JsonObject
*
* Sets @object inside @node. The reference count of @object is not increased.
*/
/**
* json_node_set_array:
- * @node: a #JsonNode
+ * @node: a #JsonNode initialized to %JSON_NODE_ARRAY
* @array: a #JsonArray
*
* Sets @array inside @node and increases the #JsonArray reference count
/**
* json_node_take_array:
- * @node: a #JsonNode
- * @array: a #JsonArray
+ * @node: a #JsonNode initialized to %JSON_NODE_ARRAY
+ * @array: (transfer full): a #JsonArray
*
* Sets @array into @node without increasing the #JsonArray reference count.
*/
}
/**
- * json_node_dup_array
+ * json_node_dup_array:
* @node: a #JsonNode
*
* Retrieves the #JsonArray stored inside a #JsonNode and returns it
/**
* json_node_get_value:
* @node: a #JsonNode
- * @value: return location for an uninitialized value
+ * @value: (out caller-allocates): return location for an uninitialized value
*
* Retrieves a value from a #JsonNode and copies into @value. When done
* using it, call g_value_unset() on the #GValue.
g_return_if_fail (node != NULL);
g_return_if_fail (JSON_NODE_TYPE (node) == JSON_NODE_VALUE);
- if (G_VALUE_TYPE (&(node->data.value)) != G_TYPE_INVALID)
+ if (node->data.value)
{
- g_value_init (value, G_VALUE_TYPE (&(node->data.value)));
- g_value_copy (&(node->data.value), value);
- }
-}
+ g_value_init (value, JSON_VALUE_TYPE (node->data.value));
+ switch (JSON_VALUE_TYPE (node->data.value))
+ {
+ case G_TYPE_INT64:
+ g_value_set_int64 (value, json_value_get_int (node->data.value));
+ break;
-static void inline
-node_value_unset (JsonNode *node)
-{
- if (G_VALUE_TYPE (&(node->data.value)) != G_TYPE_INVALID)
- g_value_unset (&(node->data.value));
+ case G_TYPE_DOUBLE:
+ g_value_set_double (value, json_value_get_double (node->data.value));
+ break;
+
+ case G_TYPE_BOOLEAN:
+ g_value_set_boolean (value, json_value_get_boolean (node->data.value));
+ break;
+
+ case G_TYPE_STRING:
+ g_value_set_string (value, json_value_get_string (node->data.value));
+ break;
+
+ default:
+ break;
+ }
+ }
}
/**
* json_node_set_value:
- * @node: a #JsonNode
+ * @node: a #JsonNode initialized to %JSON_NODE_VALUE
* @value: the #GValue to set
*
* Sets @value inside @node. The passed #GValue is copied into the #JsonNode
g_return_if_fail (JSON_NODE_TYPE (node) == JSON_NODE_VALUE);
g_return_if_fail (G_VALUE_TYPE (value) != G_TYPE_INVALID);
+ if (node->data.value == NULL)
+ node->data.value = json_value_alloc ();
+
switch (G_VALUE_TYPE (value))
{
- /* direct copy for the types we use */
+ /* auto-promote machine integers to 64 bit integers */
case G_TYPE_INT64:
- case G_TYPE_BOOLEAN:
- case G_TYPE_DOUBLE:
- case G_TYPE_STRING:
- node_value_unset (node);
- g_value_init (&(node->data.value), G_VALUE_TYPE (value));
- g_value_copy (value, &(node->data.value));
+ case G_TYPE_INT:
+ json_value_init (node->data.value, JSON_VALUE_INT);
+ if (G_VALUE_TYPE (value) == G_TYPE_INT64)
+ json_value_set_int (node->data.value, g_value_get_int64 (value));
+ else
+ json_value_set_int (node->data.value, g_value_get_int (value));
break;
- /* auto-promote ints to long longs */
- case G_TYPE_INT:
- node_value_unset (node);
- g_value_init (&(node->data.value), G_TYPE_INT64);
- g_value_set_int64 (&(node->data.value),
- g_value_get_int (value));
+ case G_TYPE_BOOLEAN:
+ json_value_init (node->data.value, JSON_VALUE_BOOLEAN);
+ json_value_set_boolean (node->data.value, g_value_get_boolean (value));
break;
- /* auto-promote single precision to double precision */
+ /* auto-promote single-precision floats to double precision floats */
+ case G_TYPE_DOUBLE:
case G_TYPE_FLOAT:
- node_value_unset (node);
- g_value_init (&(node->data.value), G_TYPE_DOUBLE);
- g_value_set_double (&(node->data.value),
- g_value_get_float (value));
+ json_value_init (node->data.value, JSON_VALUE_DOUBLE);
+ if (G_VALUE_TYPE (value) == G_TYPE_DOUBLE)
+ json_value_set_double (node->data.value, g_value_get_double (value));
+ else
+ json_value_set_double (node->data.value, g_value_get_float (value));
+ break;
+
+ case G_TYPE_STRING:
+ json_value_init (node->data.value, JSON_VALUE_STRING);
+ json_value_set_string (node->data.value, g_value_get_string (value));
break;
default:
{
if (G_LIKELY (node))
{
- switch (node->type)
- {
- case JSON_NODE_OBJECT:
- if (node->data.object)
- json_object_unref (node->data.object);
- break;
-
- case JSON_NODE_ARRAY:
- if (node->data.array)
- json_array_unref (node->data.array);
- break;
-
- case JSON_NODE_VALUE:
- g_value_unset (&(node->data.value));
- break;
-
- case JSON_NODE_NULL:
- break;
- }
-
+ json_node_unset (node);
g_slice_free (JsonNode, node);
}
}
* Return value: a string containing the name of the type. The returned string
* is owned by the node and should never be modified or freed
*/
-#if !GLIB_CHECK_VERSION(2, 31, 0)
-G_CONST_RETURN gchar *
-json_node_type_name (JsonNode *node)
-#else
const gchar *
json_node_type_name (JsonNode *node)
-#endif
{
g_return_val_if_fail (node != NULL, "(null)");
return json_node_type_get_name (node->type);
case JSON_NODE_VALUE:
- return g_type_name (G_VALUE_TYPE (&(node->data.value)));
+ if (node->data.value)
+ return json_value_type_get_name (node->data.value->type);
}
return "unknown";
}
-#if !GLIB_CHECK_VERSION(2, 31, 0)
-G_CONST_RETURN gchar *
-json_node_type_get_name (JsonNodeType node_type)
-#else
const gchar *
json_node_type_get_name (JsonNodeType node_type)
-#endif
{
switch (node_type)
{
/**
* json_node_set_parent:
* @node: a #JsonNode
- * @parent: the parent #JsonNode of @node
+ * @parent: (transfer none): the parent #JsonNode of @node
*
* Sets the parent #JsonNode of @node
*
*
* Retrieves the parent #JsonNode of @node.
*
- * Return value: the parent node, or %NULL if @node is the root node
+ * Return value: (transfer none): the parent node, or %NULL if @node is
+ * the root node
*/
JsonNode *
json_node_get_parent (JsonNode *node)
/**
* json_node_set_string:
- * @node: a #JsonNode of type %JSON_NODE_VALUE
+ * @node: a #JsonNode initialized to %JSON_NODE_VALUE
* @value: a string value
*
* Sets @value as the string content of the @node, replacing any existing
g_return_if_fail (node != NULL);
g_return_if_fail (JSON_NODE_TYPE (node) == JSON_NODE_VALUE);
- if (G_VALUE_TYPE (&(node->data.value)) == G_TYPE_STRING)
- g_value_set_string (&(node->data.value), value);
+ if (node->data.value == NULL)
+ node->data.value = json_value_init (json_value_alloc (), JSON_VALUE_STRING);
else
- {
- GValue copy = { 0, };
-
- g_value_init (©, G_TYPE_STRING);
- g_value_set_string (©, value);
+ json_value_init (node->data.value, JSON_VALUE_STRING);
- json_node_set_value (node, ©);
-
- g_value_unset (©);
- }
+ json_value_set_string (node->data.value, value);
}
/**
*
* Return value: a string value.
*/
-#if !GLIB_CHECK_VERSION(2, 31, 0)
-G_CONST_RETURN gchar *
-json_node_get_string (JsonNode *node)
-#else
const gchar *
json_node_get_string (JsonNode *node)
-#endif
{
g_return_val_if_fail (node != NULL, NULL);
if (JSON_NODE_TYPE (node) == JSON_NODE_NULL)
return NULL;
- if (G_VALUE_TYPE (&(node->data.value)) == G_TYPE_STRING)
- return g_value_get_string (&(node->data.value));
+ if (JSON_VALUE_HOLDS_STRING (node->data.value))
+ return json_value_get_string (node->data.value);
return NULL;
}
{
g_return_val_if_fail (node != NULL, NULL);
- if (JSON_NODE_TYPE (node) == JSON_NODE_NULL)
- return NULL;
-
- if (G_VALUE_TYPE (&(node->data.value)) == G_TYPE_STRING)
- return g_value_dup_string (&(node->data.value));
-
- return NULL;
+ return g_strdup (json_node_get_string (node));
}
/**
g_return_if_fail (node != NULL);
g_return_if_fail (JSON_NODE_TYPE (node) == JSON_NODE_VALUE);
- if (G_VALUE_TYPE (&(node->data.value)) == G_TYPE_INT64)
- g_value_set_int64 (&(node->data.value), value);
+ if (node->data.value == NULL)
+ node->data.value = json_value_init (json_value_alloc (), JSON_VALUE_INT);
else
- {
- GValue copy = { 0, };
+ json_value_init (node->data.value, JSON_VALUE_INT);
- g_value_init (©, G_TYPE_INT64);
- g_value_set_int64 (©, value);
-
- json_node_set_value (node, ©);
-
- g_value_unset (©);
- }
+ json_value_set_int (node->data.value, value);
}
/**
if (JSON_NODE_TYPE (node) == JSON_NODE_NULL)
return 0;
- if (G_VALUE_TYPE (&(node->data.value)) == G_TYPE_INT64)
- return g_value_get_int64 (&(node->data.value));
+ if (JSON_VALUE_HOLDS_INT (node->data.value))
+ return json_value_get_int (node->data.value);
+
+ if (JSON_VALUE_HOLDS_DOUBLE (node->data.value))
+ return json_value_get_double (node->data.value);
+
+ if (JSON_VALUE_HOLDS_BOOLEAN (node->data.value))
+ return json_value_get_boolean (node->data.value);
return 0;
}
g_return_if_fail (node != NULL);
g_return_if_fail (JSON_NODE_TYPE (node) == JSON_NODE_VALUE);
- if (G_VALUE_TYPE (&(node->data.value)) == G_TYPE_DOUBLE)
- g_value_set_double (&(node->data.value), value);
+ if (node->data.value == NULL)
+ node->data.value = json_value_init (json_value_alloc (), JSON_VALUE_DOUBLE);
else
- {
- GValue copy = { 0, };
-
- g_value_init (©, G_TYPE_DOUBLE);
- g_value_set_double (©, value);
+ json_value_init (node->data.value, JSON_VALUE_DOUBLE);
- json_node_set_value (node, ©);
-
- g_value_unset (©);
- }
+ json_value_set_double (node->data.value, value);
}
/**
if (JSON_NODE_TYPE (node) == JSON_NODE_NULL)
return 0;
- if (G_VALUE_TYPE (&(node->data.value)) == G_TYPE_DOUBLE)
- return g_value_get_double (&(node->data.value));
+ if (JSON_VALUE_HOLDS_DOUBLE (node->data.value))
+ return json_value_get_double (node->data.value);
+
+ if (JSON_VALUE_HOLDS_INT (node->data.value))
+ return (gdouble) json_value_get_int (node->data.value);
+
+ if (JSON_VALUE_HOLDS_BOOLEAN (node->data.value))
+ return (gdouble) json_value_get_boolean (node->data.value);
return 0.0;
}
g_return_if_fail (node != NULL);
g_return_if_fail (JSON_NODE_TYPE (node) == JSON_NODE_VALUE);
- if (G_VALUE_TYPE (&(node->data.value)) == G_TYPE_BOOLEAN)
- g_value_set_boolean (&(node->data.value), value);
+ if (node->data.value == NULL)
+ node->data.value = json_value_init (json_value_alloc (), JSON_VALUE_BOOLEAN);
else
- {
- GValue copy = { 0, };
-
- g_value_init (©, G_TYPE_BOOLEAN);
- g_value_set_boolean (©, value);
-
- json_node_set_value (node, ©);
+ json_value_init (node->data.value, JSON_VALUE_BOOLEAN);
- g_value_unset (©);
- }
+ json_value_set_boolean (node->data.value, value);
}
/**
if (JSON_NODE_TYPE (node) == JSON_NODE_NULL)
return FALSE;
- if (G_VALUE_TYPE (&(node->data.value)) == G_TYPE_BOOLEAN)
- return g_value_get_boolean (&(node->data.value));
+ if (JSON_VALUE_HOLDS_BOOLEAN (node->data.value))
+ return json_value_get_boolean (node->data.value);
+
+ if (JSON_VALUE_HOLDS_INT (node->data.value))
+ return json_value_get_int (node->data.value) != 0;
+
+ if (JSON_VALUE_HOLDS_DOUBLE (node->data.value))
+ return json_value_get_double (node->data.value) != 0.0;
return FALSE;
}
* json_node_is_null:
* @node: a #JsonNode
*
- * Checks whether @node is a %JSON_NODE_NULL
+ * Checks whether @node is a %JSON_NODE_NULL.
*
- * <note>A null node is not the same as a %NULL #JsonNode</note>
+ * A %JSON_NODE_NULL node is not the same as a %NULL #JsonNode; a
+ * %JSON_NODE_NULL represents a 'null' value in the JSON tree.
*
* Return value: %TRUE if the node is null
*
* Emmanuele Bassi <ebassi@linux.intel.com>
*/
-#ifdef HAVE_CONFIG_H
#include "config.h"
-#endif
+#include <string.h>
#include <glib.h>
#include "json-types-private.h"
* SECTION:json-object
* @short_description: a JSON object representation
*
- * #JsonArray is the representation of the object type inside JSON. It contains
- * #JsonNode<!-- -->s, which may contain fundamental types, arrays or other
- * objects. Each member of an object is accessed using its name.
+ * #JsonObject is the representation of the object type inside JSON. It
+ * contains #JsonNodes, which may contain fundamental types, arrays or other
+ * objects; each node inside an object, or "member", is accessed using a
+ * unique string, or "name".
*
* Since objects can be expensive, they are reference counted. You can control
* the lifetime of a #JsonObject using json_object_ref() and json_object_unref().
* use json_object_get_size().
*/
-GType
-json_object_get_type (void)
-{
- static GType object_type = 0;
-
- if (G_UNLIKELY (!object_type))
- object_type = g_boxed_type_register_static (g_intern_static_string ("JsonObject"),
- (GBoxedCopyFunc) json_object_ref,
- (GBoxedFreeFunc) json_object_unref);
-
- return object_type;
-}
+G_DEFINE_BOXED_TYPE (JsonObject, json_object, json_object_ref, json_object_unref);
/**
- * json_object_new:
+ * json_object_new: (constructor)
*
* Creates a new #JsonObject, an JSON object type representation.
*
- * Return value: the newly created #JsonObject
+ * Return value: (transfer full): the newly created #JsonObject
*/
JsonObject *
json_object_new (void)
*
* Increase by one the reference count of a #JsonObject.
*
- * Return value: the passed #JsonObject, with the reference count
+ * Return value: (transfer none): the passed #JsonObject, with the reference count
* increased by one.
*/
JsonObject *
g_return_val_if_fail (object != NULL, NULL);
g_return_val_if_fail (object->ref_count > 0, NULL);
-#if !GLIB_CHECK_VERSION(2, 31, 0)
- g_atomic_int_exchange_and_add (&object->ref_count, 1);
-#else
g_atomic_int_add (&object->ref_count, 1);
-#endif
+
return object;
}
void
json_object_unref (JsonObject *object)
{
- gint old_ref;
-
g_return_if_fail (object != NULL);
g_return_if_fail (object->ref_count > 0);
- old_ref = g_atomic_int_get (&object->ref_count);
- if (old_ref > 1)
- g_atomic_int_compare_and_exchange (&object->ref_count, old_ref, old_ref - 1);
- else
+ if (g_atomic_int_dec_and_test (&object->ref_count))
{
g_list_free (object->members_ordered);
g_hash_table_destroy (object->members);
if (g_hash_table_lookup (object->members, name) == NULL)
object->members_ordered = g_list_prepend (object->members_ordered, name);
+ else
+ {
+ GList *l;
+
+ /* if the member already exists then we need to replace the
+ * pointer to its name, to avoid keeping invalid pointers
+ * once we replace the key in the hash table
+ */
+ l = g_list_find_custom (object->members_ordered, name, (GCompareFunc) strcmp);
+ if (l != NULL)
+ l->data = name;
+ }
g_hash_table_replace (object->members, name, node);
}
* json_object_add_member:
* @object: a #JsonObject
* @member_name: the name of the member
- * @node: the value of the member
+ * @node: (transfer full): the value of the member
*
* Adds a member named @member_name and containing @node into a #JsonObject.
* The object will take ownership of the #JsonNode.
* json_object_set_member:
* @object: a #JsonObject
* @member_name: the name of the member
- * @node: the value of the member
+ * @node: (transfer full): the value of the member
*
* Sets @node as the value of @member_name inside @object.
*
const gchar *member_name,
JsonNode *node)
{
+ JsonNode *old_node;
+
g_return_if_fail (object != NULL);
g_return_if_fail (member_name != NULL);
g_return_if_fail (node != NULL);
+ old_node = g_hash_table_lookup (object->members, member_name);
+ if (old_node == NULL)
+ goto set_member;
+
+ if (old_node == node)
+ return;
+
+set_member:
object_set_member_internal (object, member_name, node);
}
const gchar *member_name,
gint64 value)
{
- JsonNode *node;
-
g_return_if_fail (object != NULL);
g_return_if_fail (member_name != NULL);
- node = json_node_new (JSON_NODE_VALUE);
- json_node_set_int (node, value);
- object_set_member_internal (object, member_name, node);
+ object_set_member_internal (object, member_name, json_node_init_int (json_node_alloc (), value));
}
/**
const gchar *member_name,
gdouble value)
{
- JsonNode *node;
-
g_return_if_fail (object != NULL);
g_return_if_fail (member_name != NULL);
- node = json_node_new (JSON_NODE_VALUE);
- json_node_set_double (node, value);
- object_set_member_internal (object, member_name, node);
+ object_set_member_internal (object, member_name, json_node_init_double (json_node_alloc (), value));
}
/**
const gchar *member_name,
gboolean value)
{
- JsonNode *node;
-
g_return_if_fail (object != NULL);
g_return_if_fail (member_name != NULL);
- node = json_node_new (JSON_NODE_VALUE);
- json_node_set_boolean (node, value);
- object_set_member_internal (object, member_name, node);
+ object_set_member_internal (object, member_name, json_node_init_boolean (json_node_alloc (), value));
}
/**
g_return_if_fail (object != NULL);
g_return_if_fail (member_name != NULL);
- node = json_node_new (JSON_NODE_VALUE);
- json_node_set_string (node, value);
+ node = json_node_alloc ();
+
+ if (value != NULL)
+ json_node_init_string (node, value);
+ else
+ json_node_init_null (node);
+
object_set_member_internal (object, member_name, node);
}
json_object_set_null_member (JsonObject *object,
const gchar *member_name)
{
- JsonNode *node;
-
g_return_if_fail (object != NULL);
g_return_if_fail (member_name != NULL);
- node = json_node_new (JSON_NODE_NULL);
- object_set_member_internal (object, member_name, node);
+ object_set_member_internal (object, member_name, json_node_init_null (json_node_alloc ()));
}
/**
* json_object_set_array_member:
* @object: a #JsonObject
* @member_name: the name of the member
- * @value: the value of the member
+ * @value: (transfer full): the value of the member
*
* Convenience function for setting an array @value of
* @member_name inside @object.
g_return_if_fail (object != NULL);
g_return_if_fail (member_name != NULL);
- node = json_node_new (JSON_NODE_ARRAY);
- json_node_take_array (node, value);
+ node = json_node_alloc ();
+
+ if (value != NULL)
+ {
+ json_node_init_array (node, value);
+ json_array_unref (value);
+ }
+ else
+ json_node_init_null (node);
+
object_set_member_internal (object, member_name, node);
}
* json_object_set_object_member:
* @object: a #JsonObject
* @member_name: the name of the member
- * @value: the value of the member
+ * @value: (transfer full): the value of the member
*
* Convenience function for setting an object @value of
* @member_name inside @object.
g_return_if_fail (object != NULL);
g_return_if_fail (member_name != NULL);
- node = json_node_new (JSON_NODE_OBJECT);
- json_node_take_object (node, value);
+ node = json_node_alloc ();
+
+ if (value != NULL)
+ {
+ json_node_init_object (node, value);
+ json_object_unref (value);
+ }
+ else
+ json_node_init_null (node);
+
object_set_member_internal (object, member_name, node);
}
* Retrieves all the values of the members of a #JsonObject.
*
* Return value: (element-type JsonNode) (transfer container): a #GList of
- * #JsonNode<!-- -->s. The content of the list is owned by the #JsonObject
+ * #JsonNodes. The content of the list is owned by the #JsonObject
* and should never be modified or freed. When you have finished using the
* returned list, use g_list_free() to free the resources it has allocated.
*/
* Retrieves a copy of the #JsonNode containing the value of @member_name
* inside a #JsonObject
*
- * Return value: (transfer full) a copy of the node for the requested
+ * Return value: (transfer full): a copy of the node for the requested
* object member or %NULL. Use json_node_free() when done.
*
* Since: 0.6
* Retrieves the #JsonNode containing the value of @member_name inside
* a #JsonObject.
*
- * Return value: a pointer to the node for the requested object
+ * Return value: (transfer none): a pointer to the node for the requested object
* member, or %NULL
*/
JsonNode *
node = object_get_member_internal (object, member_name);
g_return_val_if_fail (node != NULL, FALSE);
- return JSON_NODE_TYPE (node) == JSON_NODE_NULL;
+ if (JSON_NODE_HOLDS_NULL (node))
+ return TRUE;
+
+ if (JSON_NODE_HOLDS_OBJECT (node))
+ return json_node_get_object (node) == NULL;
+
+ if (JSON_NODE_HOLDS_ARRAY (node))
+ return json_node_get_array (node) == NULL;
+
+ return FALSE;
}
/**
*
* Since: 0.8
*/
-#if !GLIB_CHECK_VERSION(2, 31, 0)
-G_CONST_RETURN gchar *
-json_object_get_string_member (JsonObject *object,
- const gchar *member_name)
-#else
const gchar *
json_object_get_string_member (JsonObject *object,
const gchar *member_name)
-#endif
{
JsonNode *node;
node = object_get_member_internal (object, member_name);
g_return_val_if_fail (node != NULL, NULL);
- g_return_val_if_fail (JSON_NODE_TYPE (node) == JSON_NODE_VALUE, NULL);
+ g_return_val_if_fail (JSON_NODE_HOLDS_VALUE (node) || JSON_NODE_HOLDS_NULL (node), NULL);
+
+ if (JSON_NODE_HOLDS_NULL (node))
+ return NULL;
return json_node_get_string (node);
}
node = object_get_member_internal (object, member_name);
g_return_val_if_fail (node != NULL, NULL);
- g_return_val_if_fail (JSON_NODE_TYPE (node) == JSON_NODE_ARRAY, NULL);
+ g_return_val_if_fail (JSON_NODE_HOLDS_ARRAY (node) || JSON_NODE_HOLDS_NULL (node), NULL);
+
+ if (JSON_NODE_HOLDS_NULL (node))
+ return NULL;
return json_node_get_array (node);
}
node = object_get_member_internal (object, member_name);
g_return_val_if_fail (node != NULL, NULL);
- g_return_val_if_fail (JSON_NODE_TYPE (node) == JSON_NODE_OBJECT, NULL);
+ g_return_val_if_fail (JSON_NODE_HOLDS_OBJECT (node) || JSON_NODE_HOLDS_NULL (node), NULL);
+
+ if (JSON_NODE_HOLDS_NULL (node))
+ return NULL;
return json_node_get_object (node);
}
/**
* json_object_foreach_member:
* @object: a #JsonObject
- * @func: the function to be called on each member
- * @data: data to be passed to the function
+ * @func: (scope call): the function to be called on each member
+ * @data: (closure): data to be passed to the function
*
* Iterates over all members of @object and calls @func on
* each one of them.
/* json-parser.c - JSON streams parser
*
* This file is part of JSON-GLib
- * Copyright (C) 2007 OpenedHand Ltd.
- * Copyright (C) 2009 Intel Corp.
+ *
+ * Copyright © 2007, 2008, 2009 OpenedHand Ltd
+ * Copyright © 2009, 2010 Intel Corp.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* inside a file or inside a static buffer.
*/
-#ifdef HAVE_CONFIG_H
#include "config.h"
-#endif
#include <string.h>
+#include <glib/gi18n-lib.h>
+
#include "json-types-private.h"
+#include "json-debug.h"
#include "json-marshal.h"
#include "json-parser.h"
#include "json-scanner.h"
-GQuark
-json_parser_error_quark (void)
-{
- return g_quark_from_static_string ("json-parser-error");
-}
-
-#define JSON_PARSER_GET_PRIVATE(obj) \
- (G_TYPE_INSTANCE_GET_PRIVATE ((obj), JSON_TYPE_PARSER, JsonParserPrivate))
-
struct _JsonParserPrivate
{
JsonNode *root;
JsonScanner *scanner;
+ JsonParserError error_code;
GError *last_error;
gchar *variable_name;
static guint parser_signals[LAST_SIGNAL] = { 0, };
-G_DEFINE_TYPE (JsonParser, json_parser, G_TYPE_OBJECT);
+G_DEFINE_QUARK (json-parser-error-quark, json_parser_error)
+
+G_DEFINE_TYPE_WITH_PRIVATE (JsonParser, json_parser, G_TYPE_OBJECT)
static guint json_parse_array (JsonParser *parser,
JsonScanner *scanner,
{
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
- g_type_class_add_private (klass, sizeof (JsonParserPrivate));
-
gobject_class->dispose = json_parser_dispose;
gobject_class->finalize = json_parser_finalize;
/**
* JsonParser::array-end:
* @parser: the #JsonParser that received the signal
- * @array: the parsed #JsonArrary
+ * @array: the parsed #JsonArray
*
* The ::array-end signal is emitted each time the #JsonParser
* has successfully parsed an entire #JsonArray
static void
json_parser_init (JsonParser *parser)
{
- JsonParserPrivate *priv;
+ JsonParserPrivate *priv = json_parser_get_instance_private (parser);
- parser->priv = priv = JSON_PARSER_GET_PRIVATE (parser);
+ parser->priv = priv;
priv->root = NULL;
priv->current_node = NULL;
+ priv->error_code = JSON_PARSER_ERROR_PARSE;
+ priv->last_error = NULL;
+
priv->has_assignment = FALSE;
priv->variable_name = NULL;
guint token,
JsonNode **node)
{
- JsonNode *current_node = parser->priv->current_node;
+ JsonParserPrivate *priv = parser->priv;
+ JsonNode *current_node = priv->current_node;
gboolean is_negative = FALSE;
if (token == '-')
switch (token)
{
case G_TOKEN_INT:
- *node = json_node_new (JSON_NODE_VALUE);
- json_node_set_int (*node, is_negative ? scanner->value.v_int64 * -1
- : scanner->value.v_int64);
+ JSON_NOTE (PARSER, "abs(node): %" G_GINT64_FORMAT " (sign: %s)",
+ scanner->value.v_int64,
+ is_negative ? "negative" : "positive");
+ *node = json_node_init_int (json_node_alloc (),
+ is_negative ? scanner->value.v_int64 * -1
+ : scanner->value.v_int64);
break;
case G_TOKEN_FLOAT:
- *node = json_node_new (JSON_NODE_VALUE);
- json_node_set_double (*node, is_negative ? scanner->value.v_float * -1.0
- : scanner->value.v_float);
+ JSON_NOTE (PARSER, "abs(node): %.6f (sign: %s)",
+ scanner->value.v_float,
+ is_negative ? "negative" : "positive");
+ *node = json_node_init_double (json_node_alloc (),
+ is_negative ? scanner->value.v_float * -1.0
+ : scanner->value.v_float);
break;
case G_TOKEN_STRING:
- *node = json_node_new (JSON_NODE_VALUE);
- json_node_set_string (*node, scanner->value.v_string);
+ JSON_NOTE (PARSER, "node: '%s'",
+ scanner->value.v_string);
+ *node = json_node_init_string (json_node_alloc (), scanner->value.v_string);
break;
case JSON_TOKEN_TRUE:
case JSON_TOKEN_FALSE:
- *node = json_node_new (JSON_NODE_VALUE);
- json_node_set_boolean (*node, token == JSON_TOKEN_TRUE ? TRUE : FALSE);
+ JSON_NOTE (PARSER, "node: '%s'",
+ JSON_TOKEN_TRUE ? "<true>" : "<false>");
+ *node = json_node_init_boolean (json_node_alloc (), token == JSON_TOKEN_TRUE ? TRUE : FALSE);
break;
case JSON_TOKEN_NULL:
- *node = json_node_new (JSON_NODE_NULL);
+ JSON_NOTE (PARSER, "node: <null>");
+ *node = json_node_init_null (json_node_alloc ());
break;
+ case G_TOKEN_IDENTIFIER:
+ JSON_NOTE (PARSER, "node: identifier '%s'", scanner->value.v_identifier);
+ priv->error_code = JSON_PARSER_ERROR_INVALID_BAREWORD;
+ *node = NULL;
+ return G_TOKEN_SYMBOL;
+
default:
{
JsonNodeType cur_type;
*node = NULL;
+ JSON_NOTE (PARSER, "node: invalid token");
+
cur_type = json_node_get_node_type (current_node);
if (cur_type == JSON_NODE_ARRAY)
- return G_TOKEN_RIGHT_BRACE;
+ {
+ priv->error_code = JSON_PARSER_ERROR_PARSE;
+ return G_TOKEN_RIGHT_BRACE;
+ }
else if (cur_type == JSON_NODE_OBJECT)
- return G_TOKEN_RIGHT_CURLY;
+ {
+ priv->error_code = JSON_PARSER_ERROR_PARSE;
+ return G_TOKEN_RIGHT_CURLY;
+ }
else
- return G_TOKEN_SYMBOL;
+ {
+ priv->error_code = JSON_PARSER_ERROR_INVALID_BAREWORD;
+ return G_TOKEN_SYMBOL;
+ }
}
+ break;
}
return G_TOKEN_NONE;
gint idx;
old_current = priv->current_node;
- priv->current_node = json_node_new (JSON_NODE_ARRAY);
+ priv->current_node = json_node_init_array (json_node_alloc (), NULL);
array = json_array_new ();
switch (next_token)
{
case G_TOKEN_LEFT_BRACE:
+ JSON_NOTE (PARSER, "Nested array at index %d", idx);
token = json_parse_array (parser, scanner, &element);
break;
case G_TOKEN_LEFT_CURLY:
+ JSON_NOTE (PARSER, "Nested object at index %d", idx);
token = json_parse_object (parser, scanner, &element);
break;
- case G_TOKEN_INT:
- case G_TOKEN_FLOAT:
- case G_TOKEN_STRING:
- case '-':
- case JSON_TOKEN_TRUE:
- case JSON_TOKEN_FALSE:
- case JSON_TOKEN_NULL:
- token = json_scanner_get_next_token (scanner);
- token = json_parse_value (parser, scanner, token, &element);
- break;
-
case G_TOKEN_RIGHT_BRACE:
goto array_done;
default:
- if (next_token != G_TOKEN_RIGHT_BRACE)
- token = G_TOKEN_RIGHT_BRACE;
+ token = json_scanner_get_next_token (scanner);
+ token = json_parse_value (parser, scanner, token, &element);
break;
}
/* look for trailing commas */
if (next_token == G_TOKEN_RIGHT_BRACE)
{
+ priv->error_code = JSON_PARSER_ERROR_TRAILING_COMMA;
+
json_array_unref (array);
json_node_free (priv->current_node);
json_node_free (element);
}
}
+ JSON_NOTE (PARSER, "Array element %d completed", idx + 1);
json_node_set_parent (element, priv->current_node);
json_array_add_element (array, element);
guint token;
old_current = priv->current_node;
- priv->current_node = json_node_new (JSON_NODE_OBJECT);
+ priv->current_node = json_node_init_object (json_node_alloc (), NULL);
object = json_object_new ();
/* parse the member's name */
if (next_token != G_TOKEN_STRING)
{
+ JSON_NOTE (PARSER, "Missing object member name");
+
+ priv->error_code = JSON_PARSER_ERROR_INVALID_BAREWORD;
+
json_object_unref (object);
json_node_free (priv->current_node);
priv->current_node = old_current;
/* member name */
token = json_scanner_get_next_token (scanner);
name = g_strdup (scanner->value.v_string);
+ if (name == NULL || *name == '\0')
+ {
+ JSON_NOTE (PARSER, "Empty object member name");
+
+ priv->error_code = JSON_PARSER_ERROR_EMPTY_MEMBER_NAME;
+
+ json_object_unref (object);
+ json_node_free (priv->current_node);
+ priv->current_node = old_current;
+
+ return G_TOKEN_STRING;
+ }
+
+ JSON_NOTE (PARSER, "Object member '%s'", name);
/* a colon separates names from values */
next_token = json_scanner_peek_next_token (scanner);
if (next_token != ':')
{
+ JSON_NOTE (PARSER, "Missing object member name separator");
+
+ priv->error_code = JSON_PARSER_ERROR_MISSING_COLON;
+
g_free (name);
json_object_unref (object);
json_node_free (priv->current_node);
switch (next_token)
{
case G_TOKEN_LEFT_BRACE:
+ JSON_NOTE (PARSER, "Nested array at member %s", name);
token = json_parse_array (parser, scanner, &member);
break;
case G_TOKEN_LEFT_CURLY:
+ JSON_NOTE (PARSER, "Nested object at member %s", name);
token = json_parse_object (parser, scanner, &member);
break;
- case G_TOKEN_INT:
- case G_TOKEN_FLOAT:
- case G_TOKEN_STRING:
- case '-':
- case JSON_TOKEN_TRUE:
- case JSON_TOKEN_FALSE:
- case JSON_TOKEN_NULL:
- token = json_scanner_get_next_token (scanner);
- token = json_parse_value (parser, scanner, token, &member);
- break;
-
default:
/* once a member name is defined we need a value */
- token = G_TOKEN_SYMBOL;
+ token = json_scanner_get_next_token (scanner);
+ token = json_parse_value (parser, scanner, token, &member);
break;
}
/* look for trailing commas */
if (next_token == G_TOKEN_RIGHT_CURLY)
{
+ priv->error_code = JSON_PARSER_ERROR_TRAILING_COMMA;
+
json_object_unref (object);
json_node_free (member);
json_node_free (priv->current_node);
}
else if (next_token == G_TOKEN_STRING)
{
+ priv->error_code = JSON_PARSER_ERROR_MISSING_COMMA;
+
json_object_unref (object);
json_node_free (member);
json_node_free (priv->current_node);
return G_TOKEN_COMMA;
}
+ JSON_NOTE (PARSER, "Object member '%s' completed", name);
json_node_set_parent (member, priv->current_node);
json_object_set_member (object, name, member);
switch (token)
{
case G_TOKEN_LEFT_CURLY:
+ JSON_NOTE (PARSER, "Statement is object declaration");
return json_parse_object (parser, scanner, &priv->root);
case G_TOKEN_LEFT_BRACE:
+ JSON_NOTE (PARSER, "Statement is array declaration");
return json_parse_array (parser, scanner, &priv->root);
/* some web APIs are not only passing the data structures: they are
guint next_token;
gchar *name;
+ JSON_NOTE (PARSER, "Statement is an assignment");
+
/* swallow the 'var' token... */
token = json_scanner_get_next_token (scanner);
/* ... swallow the variable name... */
next_token = json_scanner_get_next_token (scanner);
if (next_token != G_TOKEN_IDENTIFIER)
- return G_TOKEN_IDENTIFIER;
+ {
+ priv->error_code = JSON_PARSER_ERROR_INVALID_BAREWORD;
+ return G_TOKEN_IDENTIFIER;
+ }
name = g_strdup (scanner->value.v_identifier);
/* ... and finally swallow the '=' */
next_token = json_scanner_get_next_token (scanner);
if (next_token != '=')
- return '=';
+ {
+ priv->error_code = JSON_PARSER_ERROR_INVALID_BAREWORD;
+ g_free (name);
+ return '=';
+ }
priv->has_assignment = TRUE;
priv->variable_name = name;
break;
case JSON_TOKEN_NULL:
- priv->root = priv->current_node = json_node_new (JSON_NODE_NULL);
- json_scanner_get_next_token (scanner);
- return G_TOKEN_NONE;
-
case JSON_TOKEN_TRUE:
case JSON_TOKEN_FALSE:
- priv->root = priv->current_node = json_node_new (JSON_NODE_VALUE);
- json_node_set_boolean (priv->current_node,
- token == JSON_TOKEN_TRUE ? TRUE : FALSE);
- json_scanner_get_next_token (scanner);
- return G_TOKEN_NONE;
-
case '-':
- {
- guint next_token;
-
- token = json_scanner_get_next_token (scanner);
- next_token = json_scanner_peek_next_token (scanner);
-
- if (next_token == G_TOKEN_INT || next_token == G_TOKEN_FLOAT)
- {
- priv->root = priv->current_node = json_node_new (JSON_NODE_VALUE);
-
- token = json_scanner_get_next_token (scanner);
- switch (token)
- {
- case G_TOKEN_INT:
- json_node_set_int (priv->current_node,
- scanner->value.v_int64 * -1);
- break;
- case G_TOKEN_FLOAT:
- json_node_set_double (priv->current_node,
- scanner->value.v_float * -1.0);
- break;
- default:
- return G_TOKEN_INT;
- }
-
- json_scanner_get_next_token (scanner);
- return G_TOKEN_NONE;
- }
- else
- return G_TOKEN_INT;
- }
- break;
-
case G_TOKEN_INT:
case G_TOKEN_FLOAT:
case G_TOKEN_STRING:
+ case G_TOKEN_IDENTIFIER:
+ JSON_NOTE (PARSER, "Statement is a value");
token = json_scanner_get_next_token (scanner);
return json_parse_value (parser, scanner, token, &priv->root);
default:
+ JSON_NOTE (PARSER, "Unknown statement");
json_scanner_get_next_token (scanner);
+ priv->error_code = JSON_PARSER_ERROR_INVALID_BAREWORD;
return G_TOKEN_SYMBOL;
}
}
static void
json_scanner_msg_handler (JsonScanner *scanner,
- gchar *message,
- gboolean is_error)
+ gchar *message)
{
JsonParser *parser = scanner->user_data;
JsonParserPrivate *priv = parser->priv;
+ GError *error = NULL;
- if (is_error)
- {
- GError *error = NULL;
-
- g_set_error (&error, JSON_PARSER_ERROR,
- JSON_PARSER_ERROR_PARSE,
- "%s:%d: Parse error: %s",
- priv->is_filename ? priv->filename : "<none>",
- scanner->line,
- message);
-
- parser->priv->last_error = error;
- g_signal_emit (parser, parser_signals[ERROR], 0, error);
- }
- else
- g_warning ("%s:%d: Parse error: %s",
- priv->is_filename ? priv->filename : "<none>",
+ /* translators: %s: is the file name, the first %d is the line
+ * number, the second %d is the position on the line, and %s is
+ * the error message
+ */
+ g_set_error (&error, JSON_PARSER_ERROR,
+ priv->error_code,
+ _("%s:%d:%d: Parse error: %s"),
+ priv->is_filename ? priv->filename : "<data>",
scanner->line,
+ scanner->position,
message);
+
+ parser->priv->last_error = error;
+ g_signal_emit (parser, parser_signals[ERROR], 0, error);
}
static JsonScanner *
scanner->msg_handler = json_scanner_msg_handler;
scanner->user_data = parser;
+ /* XXX: this is eminently stupid, but we use the symbols later on, so
+ * we cannot move them into JsonScanner without moving a bunch of code
+ * as well
+ */
for (i = 0; i < n_symbols; i++)
{
json_scanner_scope_add_symbol (scanner, 0,
json_parser_clear (parser);
+ if (!g_utf8_validate (data, length, NULL))
+ {
+ g_set_error_literal (error, JSON_PARSER_ERROR,
+ JSON_PARSER_ERROR_INVALID_DATA,
+ _("JSON data must be UTF-8 encoded"));
+ g_signal_emit (parser, parser_signals[ERROR], 0, *error);
+ return FALSE;
+ }
+
scanner = json_scanner_create (parser);
json_scanner_input_text (scanner, data, length);
else
{
guint expected_token;
+ gint cur_token;
/* we try to show the expected token, if possible */
expected_token = json_parse_statement (parser, scanner);
const gchar *symbol_name;
gchar *msg;
+ cur_token = scanner->token;
msg = NULL;
symbol_name = NULL;
+
if (scanner->scope_id == 0)
{
if (expected_token > JSON_TOKEN_INVALID &&
msg = g_strconcat ("e.g. '", symbol_name, "'", NULL);
}
- if (scanner->token > JSON_TOKEN_INVALID &&
- scanner->token < JSON_TOKEN_LAST)
+ if (cur_token > JSON_TOKEN_INVALID &&
+ cur_token < JSON_TOKEN_LAST)
{
symbol_name = "???";
for (i = 0; i < n_symbols; i++)
- if (symbols[i].token == scanner->token)
+ if (symbols[i].token == cur_token)
symbol_name = symbol_names + symbols[i].name_offset;
}
}
*/
json_scanner_unexp_token (scanner, expected_token,
NULL, "value",
- symbol_name, msg,
- TRUE);
+ symbol_name, msg);
/* and this will propagate the error we create in the
* same message handler
{
g_return_val_if_fail (JSON_IS_PARSER (parser), 0);
- if (parser->priv->scanner)
- return json_scanner_cur_line (parser->priv->scanner);
+ if (parser->priv->scanner != NULL)
+ return parser->priv->scanner->line;
return 0;
}
{
g_return_val_if_fail (JSON_IS_PARSER (parser), 0);
- if (parser->priv->scanner)
- return json_scanner_cur_line (parser->priv->scanner);
+ if (parser->priv->scanner != NULL)
+ return parser->priv->scanner->position;
return 0;
}
/**
* json_parser_has_assignment:
* @parser: a #JsonParser
- * @variable_name: (out) (allow-none): Return location for the variable
+ * @variable_name: (out) (allow-none) (transfer none): Return location for the variable
* name, or %NULL
*
* A JSON data stream might sometimes contain an assignment, like:
return priv->has_assignment;
}
+
+#define GET_DATA_BLOCK_SIZE 8192
+
+/**
+ * json_parser_load_from_stream:
+ * @parser: a #JsonParser
+ * @stream: an open #GInputStream
+ * @cancellable: (allow-none): a #GCancellable, or %NULL
+ * @error: the return location for a #GError, or %NULL
+ *
+ * Loads the contents of an input stream and parses them.
+ *
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the @cancellable object from another thread. If the
+ * operation was cancelled, the error %G_IO_ERROR_CANCELLED will be set
+ * on the passed @error.
+ *
+ * Return value: %TRUE if the data stream was successfully read and
+ * parsed, and %FALSE otherwise
+ *
+ * Since: 0.12
+ */
+gboolean
+json_parser_load_from_stream (JsonParser *parser,
+ GInputStream *stream,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GByteArray *content;
+ gsize pos;
+ gssize res;
+ gboolean retval = FALSE;
+ GError *internal_error;
+
+ g_return_val_if_fail (JSON_IS_PARSER (parser), FALSE);
+ g_return_val_if_fail (G_IS_INPUT_STREAM (stream), FALSE);
+ g_return_val_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable), FALSE);
+
+ if (g_cancellable_set_error_if_cancelled (cancellable, error))
+ return FALSE;
+
+ content = g_byte_array_new ();
+ pos = 0;
+
+ g_byte_array_set_size (content, pos + GET_DATA_BLOCK_SIZE + 1);
+ while ((res = g_input_stream_read (stream, content->data + pos,
+ GET_DATA_BLOCK_SIZE,
+ cancellable, error)) > 0)
+ {
+ pos += res;
+ g_byte_array_set_size (content, pos + GET_DATA_BLOCK_SIZE + 1);
+ }
+
+ if (res < 0)
+ {
+ /* error has already been set */
+ retval = FALSE;
+ goto out;
+ }
+
+ /* zero-terminate the content; we allocated an extra byte for this */
+ content->data[pos] = 0;
+
+ internal_error = NULL;
+ retval = json_parser_load (parser, (const gchar *) content->data, pos, &internal_error);
+
+ if (internal_error != NULL)
+ g_propagate_error (error, internal_error);
+
+out:
+ g_byte_array_free (content, TRUE);
+
+ return retval;
+}
+
+typedef struct _LoadStreamData
+{
+ JsonParser *parser;
+ GError *error;
+ GCancellable *cancellable;
+ GAsyncReadyCallback callback;
+ gpointer user_data;
+ GByteArray *content;
+ gsize pos;
+} LoadStreamData;
+
+static void
+load_stream_data_free (gpointer data)
+{
+ LoadStreamData *closure;
+
+ if (G_UNLIKELY (data == NULL))
+ return;
+
+ closure = data;
+
+ if (closure->error)
+ g_error_free (closure->error);
+
+ if (closure->cancellable)
+ g_object_unref (closure->cancellable);
+
+ if (closure->content)
+ g_byte_array_free (closure->content, TRUE);
+
+ g_object_unref (closure->parser);
+
+ g_free (closure);
+}
+
+static void
+load_stream_data_read_callback (GObject *object,
+ GAsyncResult *read_res,
+ gpointer user_data)
+{
+ GInputStream *stream = G_INPUT_STREAM (object);
+ LoadStreamData *data = user_data;
+ GError *error = NULL;
+ gssize read_size;
+
+ read_size = g_input_stream_read_finish (stream, read_res, &error);
+ if (read_size < 0)
+ {
+ if (error != NULL)
+ data->error = error;
+ else
+ {
+ GSimpleAsyncResult *res;
+
+ /* EOF */
+ res = g_simple_async_result_new (G_OBJECT (data->parser),
+ data->callback,
+ data->user_data,
+ json_parser_load_from_stream_async);
+ g_simple_async_result_set_op_res_gpointer (res, data, load_stream_data_free);
+ g_simple_async_result_complete (res);
+ g_object_unref (res);
+ }
+ }
+ else if (read_size > 0)
+ {
+ data->pos += read_size;
+
+ g_byte_array_set_size (data->content, data->pos + GET_DATA_BLOCK_SIZE);
+
+ g_input_stream_read_async (stream, data->content->data + data->pos,
+ GET_DATA_BLOCK_SIZE,
+ 0,
+ data->cancellable,
+ load_stream_data_read_callback,
+ data);
+ }
+ else
+ {
+ GSimpleAsyncResult *res;
+
+ res = g_simple_async_result_new (G_OBJECT (data->parser),
+ data->callback,
+ data->user_data,
+ json_parser_load_from_stream_async);
+ g_simple_async_result_set_op_res_gpointer (res, data, load_stream_data_free);
+ g_simple_async_result_complete (res);
+ g_object_unref (res);
+ }
+}
+
+/**
+ * json_parser_load_from_stream_finish:
+ * @parser: a #JsonParser
+ * @result: a #GAsyncResult
+ * @error: the return location for a #GError or %NULL
+ *
+ * Finishes an asynchronous stream loading started with
+ * json_parser_load_from_stream_async().
+ *
+ * Return value: %TRUE if the content of the stream was successfully retrieves
+ * and parsed, and %FALSE otherwise. In case of error, the #GError will be
+ * filled accordingly.
+ *
+ * Since: 0.12
+ */
+gboolean
+json_parser_load_from_stream_finish (JsonParser *parser,
+ GAsyncResult *result,
+ GError **error)
+{
+ GSimpleAsyncResult *simple;
+ GError *internal_error;
+ LoadStreamData *data;
+ gboolean res;
+
+ g_return_val_if_fail (JSON_IS_PARSER (parser), FALSE);
+ g_return_val_if_fail (G_IS_SIMPLE_ASYNC_RESULT (result), FALSE);
+
+ simple = G_SIMPLE_ASYNC_RESULT (result);
+
+ if (g_simple_async_result_propagate_error (simple, error))
+ return FALSE;
+
+ g_warn_if_fail (g_simple_async_result_get_source_tag (simple) == json_parser_load_from_stream_async);
+
+ data = g_simple_async_result_get_op_res_gpointer (simple);
+
+ if (data->error)
+ {
+ g_propagate_error (error, data->error);
+ data->error = NULL;
+ return FALSE;
+ }
+
+ g_byte_array_set_size (data->content, data->pos + 1);
+ data->content->data[data->pos] = 0;
+
+ internal_error = NULL;
+ res = json_parser_load (parser, (const gchar *) data->content->data, data->pos, &internal_error);
+
+ if (internal_error != NULL)
+ g_propagate_error (error, internal_error);
+
+ return res;
+}
+
+/**
+ * json_parser_load_from_stream_async:
+ * @parser: a #JsonParser
+ * @stream: a #GInputStream
+ * @cancellable: (allow-none): a #GCancellable, or %NULL
+ * @callback: a #GAsyncReadyCallback to call when the request is satisfied
+ * @user_data: the data to pass to @callback
+ *
+ * Asynchronously reads the contents of @stream.
+ *
+ * For more details, see json_parser_load_from_stream() which is the
+ * synchronous version of this call.
+ *
+ * When the operation is finished, @callback will be called. You should
+ * then call json_parser_load_from_stream_finish() to get the result
+ * of the operation.
+ *
+ * Since: 0.12
+ */
+void
+json_parser_load_from_stream_async (JsonParser *parser,
+ GInputStream *stream,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ LoadStreamData *data;
+
+ g_return_if_fail (JSON_IS_PARSER (parser));
+ g_return_if_fail (G_IS_INPUT_STREAM (stream));
+ g_return_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable));
+
+ data = g_new0 (LoadStreamData, 1);
+
+ if (cancellable != NULL)
+ data->cancellable = g_object_ref (cancellable);
+
+ data->callback = callback;
+ data->user_data = user_data;
+ data->content = g_byte_array_new ();
+ data->parser = g_object_ref (parser);
+
+ g_byte_array_set_size (data->content, data->pos + GET_DATA_BLOCK_SIZE);
+ g_input_stream_read_async (stream, data->content->data + data->pos,
+ GET_DATA_BLOCK_SIZE, 0,
+ data->cancellable,
+ load_stream_data_read_callback,
+ data);
+}
* Emmanuele Bassi <ebassi@linux.intel.com>
*/
+#ifndef __JSON_PARSER_H__
+#define __JSON_PARSER_H__
+
#if !defined(__JSON_GLIB_INSIDE__) && !defined(JSON_COMPILATION)
#error "Only <json-glib/json-glib.h> can be included directly."
#endif
-#ifndef __JSON_PARSER_H__
-#define __JSON_PARSER_H__
-
-#include <glib-object.h>
-#include "json-types.h"
+#include <gio/gio.h>
+#include <json-glib/json-types.h>
G_BEGIN_DECLS
/**
* JsonParserError:
* @JSON_PARSER_ERROR_PARSE: parse error
+ * @JSON_PARSER_ERROR_TRAILING_COMMA: unexpected trailing comma
+ * @JSON_PARSER_ERROR_MISSING_COMMA: expected comma
+ * @JSON_PARSER_ERROR_MISSING_COLON: expected colon
+ * @JSON_PARSER_ERROR_INVALID_BAREWORD: invalid bareword
+ * @JSON_PARSER_ERROR_EMPTY_MEMBER_NAME: empty member name (Since: 0.16)
+ * @JSON_PARSER_ERROR_INVALID_DATA: invalid data (Since: 0.18)
* @JSON_PARSER_ERROR_UNKNOWN: unknown error
*
* Error enumeration for #JsonParser
+ *
+ * This enumeration can be extended at later date
*/
typedef enum {
JSON_PARSER_ERROR_PARSE,
-
+ JSON_PARSER_ERROR_TRAILING_COMMA,
+ JSON_PARSER_ERROR_MISSING_COMMA,
+ JSON_PARSER_ERROR_MISSING_COLON,
+ JSON_PARSER_ERROR_INVALID_BAREWORD,
+ JSON_PARSER_ERROR_EMPTY_MEMBER_NAME,
+ JSON_PARSER_ERROR_INVALID_DATA,
+
JSON_PARSER_ERROR_UNKNOWN
} JsonParserError;
void (* _json_reserved8) (void);
};
-GQuark json_parser_error_quark (void);
-GType json_parser_get_type (void) G_GNUC_CONST;
-
-JsonParser *json_parser_new (void);
-gboolean json_parser_load_from_file (JsonParser *parser,
- const gchar *filename,
- GError **error);
-gboolean json_parser_load_from_data (JsonParser *parser,
- const gchar *data,
- gssize length,
- GError **error);
-
-JsonNode * json_parser_get_root (JsonParser *parser);
-
-guint json_parser_get_current_line (JsonParser *parser);
-guint json_parser_get_current_pos (JsonParser *parser);
-gboolean json_parser_has_assignment (JsonParser *parser,
- gchar **variable_name);
+JSON_AVAILABLE_IN_1_0
+GQuark json_parser_error_quark (void);
+JSON_AVAILABLE_IN_1_0
+GType json_parser_get_type (void) G_GNUC_CONST;
+
+JSON_AVAILABLE_IN_1_0
+JsonParser *json_parser_new (void);
+JSON_AVAILABLE_IN_1_0
+gboolean json_parser_load_from_file (JsonParser *parser,
+ const gchar *filename,
+ GError **error);
+JSON_AVAILABLE_IN_1_0
+gboolean json_parser_load_from_data (JsonParser *parser,
+ const gchar *data,
+ gssize length,
+ GError **error);
+JSON_AVAILABLE_IN_1_0
+gboolean json_parser_load_from_stream (JsonParser *parser,
+ GInputStream *stream,
+ GCancellable *cancellable,
+ GError **error);
+JSON_AVAILABLE_IN_1_0
+void json_parser_load_from_stream_async (JsonParser *parser,
+ GInputStream *stream,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+JSON_AVAILABLE_IN_1_0
+gboolean json_parser_load_from_stream_finish (JsonParser *parser,
+ GAsyncResult *result,
+ GError **error);
+
+JSON_AVAILABLE_IN_1_0
+JsonNode * json_parser_get_root (JsonParser *parser);
+
+JSON_AVAILABLE_IN_1_0
+guint json_parser_get_current_line (JsonParser *parser);
+JSON_AVAILABLE_IN_1_0
+guint json_parser_get_current_pos (JsonParser *parser);
+JSON_AVAILABLE_IN_1_0
+gboolean json_parser_has_assignment (JsonParser *parser,
+ gchar **variable_name);
G_END_DECLS
--- /dev/null
+/* json-path.h - JSONPath implementation
+ *
+ * This file is part of JSON-GLib
+ * Copyright © 2011 Intel Corp.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Author:
+ * Emmanuele Bassi <ebassi@linux.intel.com>
+ */
+
+/**
+ * SECTION:json-path
+ * @Title: JsonPath
+ * @short_description: JSONPath implementation
+ *
+ * #JsonPath is a simple class implementing the JSONPath syntax for extracting
+ * data out of a JSON tree. While the semantics of the JSONPath expressions are
+ * heavily borrowed by the XPath specification for XML, the syntax follows the
+ * ECMAScript origins of JSON.
+ *
+ * Once a #JsonPath instance has been created, it has to compile a JSONPath
+ * expression using json_path_compile() before being able to match it to a
+ * JSON tree; the same #JsonPath instance can be used to match multiple JSON
+ * trees. It it also possible to compile a new JSONPath expression using the
+ * same #JsonPath instance; the previous expression will be discarded only if
+ * the compilation of the new expression is successful.
+ *
+ * The simple convenience function json_path_query() can be used for one-off
+ * matching.
+ *
+ * ## Syntax of the JSONPath expressions ##
+ *
+ * A JSONPath expression is composed by path indices and operators.
+ * Each path index can either be a member name or an element index inside
+ * a JSON tree. A JSONPath expression must start with the '$' operator; each
+ * path index is separated using either the dot notation or the bracket
+ * notation, e.g.:
+ *
+ * |[
+ * // dot notation
+ * $.store.book[0].title
+ *
+ * // bracket notation
+ * $['store']['book'][0]['title']
+ * ]|
+ *
+ * The available operators are:
+ *
+ * * Root node
+ * The '$' character represents the root node of the JSON tree, and
+ * matches the entire document.
+ *
+ * * Child nodes can either be matched using '.' or '[]'. For instance,
+ * both `$.store.book` and `$['store']['book'] match the contents of
+ * the book member of the store object.
+ *
+ * * Child nodes can be reached without specifying the whole tree structure
+ * through the recursive descent operator, or '..'. For instance,
+ * `$..author` matches all author member in every object.
+ *
+ * * Child nodes can grouped through the wildcard operator, or '*'. For
+ * instance, `$.store.book[*].author` matches all author members of any
+ * object element contained in the book array of the store object.
+ *
+ * * Element nodes can be accessed using their index (starting from zero)
+ * in the subscript operator '[]'. For instance, `$.store.book[0]` matches
+ * the first element of the book array of the store object.
+ *
+ * * Subsets of element nodes can be accessed using the set notation
+ * operator '[start,end]'. For instance, `$.store.book[0,2]` matches the
+ * first, second, and third elements of the book array of the store
+ * object.
+ *
+ * * Slices of element nodes can be accessed using the slice notation
+ * operation '[start:end:step]'. If start is omitted, the starting index
+ * of the slice is implied to be zero; if end is omitted, the ending index
+ * of the slice is implied to be the length of the array; if step is
+ * omitted, the step of the slice is implied to be 1. For instance,
+ * `$.store.book[:2]` matches the first two elements of the book array
+ * of the store object.
+ *
+ * More information about JSONPath is available on Stefan Gössner's
+ * [JSONPath website](http://goessner.net/articles/JsonPath/).
+ *
+ * ## Example of JSONPath matches
+ * The following example shows some of the results of using #JsonPath
+ * on a JSON tree. We use the following JSON description of a bookstore:
+ * |[
+ * { "store": {
+ * "book": [
+ * { "category": "reference", "author": "Nigel Rees",
+ * "title": "Sayings of the Century", "price": "8.95" },
+ * { "category": "fiction", "author": "Evelyn Waugh",
+ * "title": "Sword of Honour", "price": "12.99" },
+ * { "category": "fiction", "author": "Herman Melville",
+ * "title": "Moby Dick", "isbn": "0-553-21311-3",
+ * "price": "8.99" },
+ * { "category": "fiction", "author": "J. R. R. Tolkien",
+ * "title": "The Lord of the Rings", "isbn": "0-395-19395-8",
+ * "price": "22.99" }
+ * ],
+ * "bicycle": { "color": "red", "price": "19.95" }
+ * }
+ * }
+ * ]|
+ *
+ * We can parse the JSON using #JsonParser:
+ *
+ * |[<!-- language="C" -->
+ * JsonParser *parser = json_parser_new ();
+ * json_parser_load_from_data (parser, json_data, -1, NULL);
+ * ]|
+ *
+ * If we run the following code:
+ *
+ * |[<!-- language="C" -->
+ * JsonNode *result;
+ * JsonPath *path = json_path_new ();
+ * json_path_compile (path, "$.store..author", NULL);
+ * result = json_path_match (path, json_parser_get_root (parser));
+ * ]|
+ *
+ * The result #JsonNode will contain an array with all values of the
+ * author member of the objects in the JSON tree. If we use a
+ * #JsonGenerator to convert the #JsonNode to a string and print it:
+ *
+ * |[<!-- language="C" -->
+ * JsonGenerator *generator = json_generator_new ();
+ * json_generator_set_root (generator, result);
+ * char *str = json_generator_to_data (generator, NULL);
+ * g_print ("Results: %s\n", str);
+ * ]|
+ *
+ * The output will be:
+ *
+ * |[
+ * ["Nigel Rees","Evelyn Waugh","Herman Melville","J. R. R. Tolkien"]
+ * ]|
+ *
+ * #JsonPath is available since JSON-GLib 0.14
+ */
+
+#include "config.h"
+
+#include <string.h>
+
+#include <glib/gi18n-lib.h>
+
+#include "json-path.h"
+
+#include "json-debug.h"
+#include "json-types-private.h"
+
+typedef enum {
+ JSON_PATH_NODE_ROOT,
+ JSON_PATH_NODE_CHILD_MEMBER,
+ JSON_PATH_NODE_CHILD_ELEMENT,
+ JSON_PATH_NODE_RECURSIVE_DESCENT,
+ JSON_PATH_NODE_WILDCARD_MEMBER,
+ JSON_PATH_NODE_WILDCARD_ELEMENT,
+ JSON_PATH_NODE_ELEMENT_SET,
+ JSON_PATH_NODE_ELEMENT_SLICE
+} PathNodeType;
+
+typedef struct _PathNode PathNode;
+
+struct _JsonPath
+{
+ GObject parent_instance;
+
+ /* the compiled path */
+ GList *nodes;
+
+ guint is_compiled : 1;
+};
+
+struct _JsonPathClass
+{
+ GObjectClass parent_class;
+};
+
+struct _PathNode
+{
+ PathNodeType node_type;
+
+ union {
+ /* JSON_PATH_NODE_CHILD_ELEMENT */
+ int element_index;
+
+ /* JSON_PATH_NODE_CHILD_MEMBER */
+ char *member_name;
+
+ /* JSON_PATH_NODE_ELEMENT_SET */
+ struct { int n_indices; int *indices; } set;
+
+ /* JSON_PATH_NODE_ELEMENT_SLICE */
+ struct { int start, end, step; } slice;
+ } data;
+};
+
+G_DEFINE_QUARK (json-path-error-quark, json_path_error)
+
+G_DEFINE_TYPE (JsonPath, json_path, G_TYPE_OBJECT)
+
+static void
+path_node_free (gpointer data)
+{
+ if (data != NULL)
+ {
+ PathNode *node = data;
+
+ switch (node->node_type)
+ {
+ case JSON_PATH_NODE_CHILD_MEMBER:
+ g_free (node->data.member_name);
+ break;
+
+ case JSON_PATH_NODE_ELEMENT_SET:
+ g_free (node->data.set.indices);
+ break;
+
+ default:
+ break;
+ }
+
+ g_free (node);
+ }
+}
+
+static void
+json_path_finalize (GObject *gobject)
+{
+ JsonPath *self = JSON_PATH (gobject);
+
+ g_list_free_full (self->nodes, path_node_free);
+
+ G_OBJECT_CLASS (json_path_parent_class)->finalize (gobject);
+}
+
+static void
+json_path_class_init (JsonPathClass *klass)
+{
+ G_OBJECT_CLASS (klass)->finalize = json_path_finalize;
+}
+
+static void
+json_path_init (JsonPath *self)
+{
+}
+
+/**
+ * json_path_new:
+ *
+ * Creates a new #JsonPath instance.
+ *
+ * Once created, the #JsonPath object should be used with json_path_compile()
+ * and json_path_match().
+ *
+ * Return value: (transfer full): the newly created #JsonPath instance. Use
+ * g_object_unref() to free the allocated resources when done
+ *
+ * Since: 0.14
+ */
+JsonPath *
+json_path_new (void)
+{
+ return g_object_new (JSON_TYPE_PATH, NULL);
+}
+
+#ifdef JSON_ENABLE_DEBUG
+/* used as the function for a g_list_foreach() on a list of PathNode; needs
+ * a GString as the payload to build the output string
+ */
+static void
+json_path_foreach_print (gpointer data,
+ gpointer user_data)
+{
+ PathNode *cur_node = data;
+ GString *buf = user_data;
+
+ switch (cur_node->node_type)
+ {
+ case JSON_PATH_NODE_ROOT:
+ g_string_append (buf, "<root");
+ break;
+
+ case JSON_PATH_NODE_CHILD_MEMBER:
+ g_string_append_printf (buf, "<member '%s'", cur_node->data.member_name);
+ break;
+
+ case JSON_PATH_NODE_CHILD_ELEMENT:
+ g_string_append_printf (buf, "<element '%d'", cur_node->data.element_index);
+ break;
+
+ case JSON_PATH_NODE_RECURSIVE_DESCENT:
+ g_string_append (buf, "<recursive descent");
+ break;
+
+ case JSON_PATH_NODE_WILDCARD_MEMBER:
+ g_string_append (buf, "<wildcard member");
+ break;
+
+ case JSON_PATH_NODE_WILDCARD_ELEMENT:
+ g_string_append (buf, "<wildcard element");
+ break;
+
+ case JSON_PATH_NODE_ELEMENT_SET:
+ {
+ int i;
+
+ g_string_append (buf, "<element set ");
+ for (i = 0; i < cur_node->data.set.n_indices - 1; i++)
+ g_string_append_printf (buf, "'%d', ", cur_node->data.set.indices[i]);
+
+ g_string_append_printf (buf, "'%d'", cur_node->data.set.indices[i]);
+ }
+ break;
+
+ case JSON_PATH_NODE_ELEMENT_SLICE:
+ g_string_append_printf (buf, "<slice start '%d', end '%d', step '%d'",
+ cur_node->data.slice.start,
+ cur_node->data.slice.end,
+ cur_node->data.slice.step);
+ break;
+
+ default:
+ g_string_append (buf, "<unknown node");
+ break;
+ }
+
+ g_string_append (buf, ">");
+}
+#endif /* JSON_ENABLE_DEBUG */
+
+/**
+ * json_path_compile:
+ * @path: a #JsonPath
+ * @expression: a JSONPath expression
+ * @error: return location for a #GError, or %NULL
+ *
+ * Validates and decomposes @expression.
+ *
+ * A JSONPath expression must be compiled before calling json_path_match().
+ *
+ * Return value: %TRUE on success; on error, @error will be set with
+ * the %JSON_PATH_ERROR domain and a code from the #JsonPathError
+ * enumeration, and %FALSE will be returned
+ *
+ * Since: 0.14
+ */
+gboolean
+json_path_compile (JsonPath *path,
+ const char *expression,
+ GError **error)
+{
+ const char *p, *end_p;
+ PathNode *root = NULL;
+ GList *nodes = NULL;
+
+ g_return_val_if_fail (expression != NULL, FALSE);
+
+ p = expression;
+
+ while (*p != '\0')
+ {
+ switch (*p)
+ {
+ case '$':
+ {
+ PathNode *node;
+
+ if (root != NULL)
+ {
+ g_set_error_literal (error, JSON_PATH_ERROR,
+ JSON_PATH_ERROR_INVALID_QUERY,
+ _("Only one root node is allowed in a JSONPath expression"));
+ return FALSE;
+ }
+
+ if (!(*(p + 1) == '.' || *(p + 1) == '[' || *(p + 1) == '\0'))
+ {
+ /* translators: the %c is the invalid character */
+ g_set_error (error, JSON_PATH_ERROR,
+ JSON_PATH_ERROR_INVALID_QUERY,
+ _("Root node followed by invalid character '%c'"),
+ *(p + 1));
+ return FALSE;
+ }
+
+ node = g_new0 (PathNode, 1);
+ node->node_type = JSON_PATH_NODE_ROOT;
+
+ root = node;
+ nodes = g_list_prepend (NULL, root);
+ }
+ break;
+
+ case '.':
+ case '[':
+ {
+ PathNode *node = NULL;
+
+ if (*p == '.' && *(p + 1) == '.')
+ {
+ node = g_new0 (PathNode, 1);
+ node->node_type = JSON_PATH_NODE_RECURSIVE_DESCENT;
+ }
+ else if (*p == '.' && *(p + 1) == '*')
+ {
+ node = g_new0 (PathNode, 1);
+ node->node_type = JSON_PATH_NODE_WILDCARD_MEMBER;
+
+ p += 1;
+ }
+ else if (*p == '.')
+ {
+ end_p = p + 1;
+ while (!(*end_p == '.' || *end_p == '[' || *end_p == '\0'))
+ end_p += 1;
+
+ if (end_p == p + 1)
+ {
+ g_set_error_literal (error, JSON_PATH_ERROR,
+ JSON_PATH_ERROR_INVALID_QUERY,
+ _("Missing member name or wildcard after . character"));
+ goto fail;
+ }
+
+ node = g_new0 (PathNode, 1);
+ node->node_type = JSON_PATH_NODE_CHILD_MEMBER;
+ node->data.member_name = g_strndup (p + 1, end_p - p - 1);
+
+ p = end_p - 1;
+ }
+ else if (*p == '[' && *(p + 1) == '\'')
+ {
+ if (*(p + 2) == '*' && *(p + 3) == '\'' && *(p + 4) == ']')
+ {
+ node = g_new0 (PathNode, 1);
+ node->node_type = JSON_PATH_NODE_WILDCARD_MEMBER;
+
+ p += 4;
+ }
+ else
+ {
+ node = g_new0 (PathNode, 1);
+ node->node_type = JSON_PATH_NODE_CHILD_MEMBER;
+
+ end_p = strchr (p + 2, '\'');
+ node->data.member_name = g_strndup (p + 2, end_p - p - 2);
+
+ p = end_p + 1;
+ }
+ }
+ else if (*p == '[' && *(p + 1) == '*' && *(p + 2) == ']')
+ {
+ node = g_new0 (PathNode, 1);
+ node->node_type = JSON_PATH_NODE_WILDCARD_ELEMENT;
+
+ p += 1;
+ }
+ else if (*p == '[')
+ {
+ int sign = 1;
+ int idx;
+
+ end_p = p + 1;
+
+ if (*end_p == '-')
+ {
+ sign = -1;
+ end_p += 1;
+ }
+
+ /* slice with missing start */
+ if (*end_p == ':')
+ {
+ int slice_end = g_ascii_strtoll (end_p + 1, (char **) &end_p, 10) * sign;
+ int slice_step = 1;
+
+ if (*end_p == ':')
+ {
+ end_p += 1;
+
+ if (*end_p == '-')
+ {
+ sign = -1;
+ end_p += 1;
+ }
+ else
+ sign = 1;
+
+ slice_step = g_ascii_strtoll (end_p, (char **) &end_p, 10) * sign;
+
+ if (*end_p != ']')
+ {
+ g_set_error (error, JSON_PATH_ERROR,
+ JSON_PATH_ERROR_INVALID_QUERY,
+ _("Malformed slice expression '%*s'"),
+ (int)(end_p - p),
+ p + 1);
+ goto fail;
+ }
+ }
+
+ node = g_new0 (PathNode, 1);
+ node->node_type = JSON_PATH_NODE_ELEMENT_SLICE;
+ node->data.slice.start = 0;
+ node->data.slice.end = slice_end;
+ node->data.slice.step = slice_step;
+
+ nodes = g_list_prepend (nodes, node);
+ p = end_p;
+ break;
+ }
+
+ idx = g_ascii_strtoll (end_p, (char **) &end_p, 10) * sign;
+
+ if (*end_p == ',')
+ {
+ GArray *indices = g_array_new (FALSE, TRUE, sizeof (int));
+
+ g_array_append_val (indices, idx);
+
+ while (*end_p != ']')
+ {
+ end_p += 1;
+
+ if (*end_p == '-')
+ {
+ sign = -1;
+ end_p += 1;
+ }
+ else
+ sign = 1;
+
+ idx = g_ascii_strtoll (end_p, (char **) &end_p, 10) * sign;
+ if (!(*end_p == ',' || *end_p == ']'))
+ {
+ g_array_unref (indices);
+ g_set_error (error, JSON_PATH_ERROR,
+ JSON_PATH_ERROR_INVALID_QUERY,
+ _("Invalid set definition '%*s'"),
+ (int)(end_p - p),
+ p + 1);
+ goto fail;
+ }
+
+ g_array_append_val (indices, idx);
+ }
+
+ node = g_new0 (PathNode, 1);
+ node->node_type = JSON_PATH_NODE_ELEMENT_SET;
+ node->data.set.n_indices = indices->len;
+ node->data.set.indices = (int *) g_array_free (indices, FALSE);
+ nodes = g_list_prepend (nodes, node);
+ p = end_p;
+ break;
+ }
+ else if (*end_p == ':')
+ {
+ int slice_start = idx;
+ int slice_end = 0;
+ int slice_step = 1;
+
+ end_p += 1;
+
+ if (*end_p == '-')
+ {
+ sign = -1;
+ end_p += 1;
+ }
+ else
+ sign = 1;
+
+ slice_end = g_ascii_strtoll (end_p, (char **) &end_p, 10) * sign;
+ if (*end_p == ':')
+ {
+ end_p += 1;
+
+ if (*end_p == '-')
+ {
+ sign = -1;
+ end_p += 1;
+ }
+ else
+ sign = 1;
+
+ slice_step = g_ascii_strtoll (end_p + 1, (char **) &end_p, 10) * sign;
+ }
+
+ if (*end_p != ']')
+ {
+ g_set_error (error, JSON_PATH_ERROR,
+ JSON_PATH_ERROR_INVALID_QUERY,
+ _("Invalid slice definition '%*s'"),
+ (int)(end_p - p),
+ p + 1);
+ goto fail;
+ }
+
+ node = g_new0 (PathNode, 1);
+ node->node_type = JSON_PATH_NODE_ELEMENT_SLICE;
+ node->data.slice.start = slice_start;
+ node->data.slice.end = slice_end;
+ node->data.slice.step = slice_step;
+ nodes = g_list_prepend (nodes, node);
+ p = end_p;
+ break;
+ }
+ else if (*end_p == ']')
+ {
+ node = g_new0 (PathNode, 1);
+ node->node_type = JSON_PATH_NODE_CHILD_ELEMENT;
+ node->data.element_index = idx;
+ nodes = g_list_prepend (nodes, node);
+ p = end_p;
+ break;
+ }
+ else
+ {
+ g_set_error (error, JSON_PATH_ERROR,
+ JSON_PATH_ERROR_INVALID_QUERY,
+ _("Invalid array index definition '%*s'"),
+ (int)(end_p - p),
+ p + 1);
+ goto fail;
+ }
+ }
+ else
+ break;
+
+ if (node != NULL)
+ nodes = g_list_prepend (nodes, node);
+ }
+ break;
+
+ default:
+ if (nodes == NULL)
+ {
+ g_set_error(error, JSON_PATH_ERROR,
+ JSON_PATH_ERROR_INVALID_QUERY,
+ _("Invalid first character '%c'"),
+ *p);
+ return FALSE;
+ }
+ break;
+ }
+
+ p += 1;
+ }
+
+ nodes = g_list_reverse (nodes);
+
+#ifdef JSON_ENABLE_DEBUG
+ if (JSON_HAS_DEBUG (PATH))
+ {
+ GString *buf = g_string_new (NULL);
+
+ g_list_foreach (nodes, json_path_foreach_print, buf);
+
+ g_message ("[PATH] " G_STRLOC ": expression '%s' => '%s'", expression, buf->str);
+ g_string_free (buf, TRUE);
+ }
+#endif /* JSON_ENABLE_DEBUG */
+
+ g_list_free_full (path->nodes, path_node_free);
+
+ path->nodes = nodes;
+ path->is_compiled = (path->nodes != NULL);
+
+ return path->nodes != NULL;
+
+fail:
+ g_list_free_full (nodes, path_node_free);
+
+ return FALSE;
+}
+
+static void
+walk_path_node (GList *path,
+ JsonNode *root,
+ JsonArray *results)
+{
+ PathNode *node = path->data;
+
+ switch (node->node_type)
+ {
+ case JSON_PATH_NODE_ROOT:
+ if (path->next != NULL)
+ walk_path_node (path->next, root, results);
+ else
+ json_array_add_element (results, json_node_copy (root));
+ break;
+
+ case JSON_PATH_NODE_CHILD_MEMBER:
+ if (JSON_NODE_HOLDS_OBJECT (root))
+ {
+ JsonObject *object = json_node_get_object (root);
+
+ if (json_object_has_member (object, node->data.member_name))
+ {
+ JsonNode *member = json_object_get_member (object, node->data.member_name);
+
+ if (path->next == NULL)
+ {
+ JSON_NOTE (PATH, "end of path at member '%s'", node->data.member_name);
+ json_array_add_element (results, json_node_copy (member));
+ }
+ else
+ walk_path_node (path->next, member, results);
+ }
+ }
+ break;
+
+ case JSON_PATH_NODE_CHILD_ELEMENT:
+ if (JSON_NODE_HOLDS_ARRAY (root))
+ {
+ JsonArray *array = json_node_get_array (root);
+
+ if (json_array_get_length (array) >= node->data.element_index)
+ {
+ JsonNode *element = json_array_get_element (array, node->data.element_index);
+
+ if (path->next == NULL)
+ {
+ JSON_NOTE (PATH, "end of path at element '%d'", node->data.element_index);
+ json_array_add_element (results, json_node_copy (element));
+ }
+ else
+ walk_path_node (path->next, element, results);
+ }
+ }
+ break;
+
+ case JSON_PATH_NODE_RECURSIVE_DESCENT:
+ {
+ PathNode *tmp = path->next->data;
+
+ switch (json_node_get_node_type (root))
+ {
+ case JSON_NODE_OBJECT:
+ {
+ JsonObject *object = json_node_get_object (root);
+ GList *members, *l;
+
+ members = json_object_get_members (object);
+ for (l = members; l != NULL; l = l->next)
+ {
+ JsonNode *m = json_object_get_member (object, l->data);
+
+ if (tmp->node_type == JSON_PATH_NODE_CHILD_MEMBER &&
+ strcmp (tmp->data.member_name, l->data) == 0)
+ {
+ JSON_NOTE (PATH, "entering '%s'", tmp->data.member_name);
+ walk_path_node (path->next, root, results);
+ }
+ else
+ {
+ JSON_NOTE (PATH, "recursing into '%s'", (char *) l->data);
+ walk_path_node (path, m, results);
+ }
+ }
+ g_list_free (members);
+ }
+ break;
+
+ case JSON_NODE_ARRAY:
+ {
+ JsonArray *array = json_node_get_array (root);
+ GList *members, *l;
+ int i;
+
+ members = json_array_get_elements (array);
+ for (l = members, i = 0; l != NULL; l = l->next, i += 1)
+ {
+ JsonNode *m = l->data;
+
+ if (tmp->node_type == JSON_PATH_NODE_CHILD_ELEMENT &&
+ tmp->data.element_index == i)
+ {
+ JSON_NOTE (PATH, "entering '%d'", tmp->data.element_index);
+ walk_path_node (path->next, root, results);
+ }
+ else
+ {
+ JSON_NOTE (PATH, "recursing into '%d'", i);
+ walk_path_node (path, m, results);
+ }
+ }
+ g_list_free (members);
+ }
+ break;
+
+ default:
+ break;
+ }
+ }
+ break;
+
+ case JSON_PATH_NODE_WILDCARD_MEMBER:
+ if (JSON_NODE_HOLDS_OBJECT (root))
+ {
+ JsonObject *object = json_node_get_object (root);
+ GList *members, *l;
+
+ members = json_object_get_members (object);
+ for (l = members; l != NULL; l = l->next)
+ {
+ JsonNode *member = json_object_get_member (object, l->data);
+
+ if (path->next != NULL)
+ walk_path_node (path->next, member, results);
+ else
+ {
+ JSON_NOTE (PATH, "glob match member '%s'", (char *) l->data);
+ json_array_add_element (results, json_node_copy (member));
+ }
+ }
+ g_list_free (members);
+ }
+ else
+ json_array_add_element (results, json_node_copy (root));
+ break;
+
+ case JSON_PATH_NODE_WILDCARD_ELEMENT:
+ if (JSON_NODE_HOLDS_ARRAY (root))
+ {
+ JsonArray *array = json_node_get_array (root);
+ GList *elements, *l;
+ int i;
+
+ elements = json_array_get_elements (array);
+ for (l = elements, i = 0; l != NULL; l = l->next, i += 1)
+ {
+ JsonNode *element = l->data;
+
+ if (path->next != NULL)
+ walk_path_node (path->next, element, results);
+ else
+ {
+ JSON_NOTE (PATH, "glob match element '%d'", i);
+ json_array_add_element (results, json_node_copy (element));
+ }
+ }
+ g_list_free (elements);
+ }
+ else
+ json_array_add_element (results, json_node_copy (root));
+ break;
+
+ case JSON_PATH_NODE_ELEMENT_SET:
+ if (JSON_NODE_HOLDS_ARRAY (root))
+ {
+ JsonArray *array = json_node_get_array (root);
+ int i;
+
+ for (i = 0; i < node->data.set.n_indices; i += 1)
+ {
+ int idx = node->data.set.indices[i];
+ JsonNode *element = json_array_get_element (array, idx);
+
+ if (path->next != NULL)
+ walk_path_node (path->next, element, results);
+ else
+ {
+ JSON_NOTE (PATH, "set element '%d'", idx);
+ json_array_add_element (results, json_node_copy (element));
+ }
+ }
+ }
+ break;
+
+ case JSON_PATH_NODE_ELEMENT_SLICE:
+ if (JSON_NODE_HOLDS_ARRAY (root))
+ {
+ JsonArray *array = json_node_get_array (root);
+ int i, start, end;
+
+ if (node->data.slice.start < 0)
+ {
+ start = json_array_get_length (array)
+ + node->data.slice.start;
+
+ end = json_array_get_length (array)
+ + node->data.slice.end;
+ }
+ else
+ {
+ start = node->data.slice.start;
+ end = node->data.slice.end;
+ }
+
+ for (i = start; i < end; i += node->data.slice.step)
+ {
+ JsonNode *element = json_array_get_element (array, i);
+
+ if (path->next != NULL)
+ walk_path_node (path->next, element, results);
+ else
+ {
+ JSON_NOTE (PATH, "slice element '%d'", i);
+ json_array_add_element (results, json_node_copy (element));
+ }
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+/**
+ * json_path_match:
+ * @path: a compiled #JsonPath
+ * @root: a #JsonNode
+ *
+ * Matches the JSON tree pointed by @root using the expression compiled
+ * into the #JsonPath.
+ *
+ * The matching #JsonNodes will be copied into a #JsonArray and
+ * returned wrapped in a #JsonNode.
+ *
+ * Return value: (transfer full): a newly-created #JsonNode of type
+ * %JSON_NODE_ARRAY containing an array of matching #JsonNodes.
+ * Use json_node_free() when done
+ *
+ * Since: 0.14
+ */
+JsonNode *
+json_path_match (JsonPath *path,
+ JsonNode *root)
+{
+ JsonArray *results;
+ JsonNode *retval;
+
+ g_return_val_if_fail (JSON_IS_PATH (path), NULL);
+ g_return_val_if_fail (path->is_compiled, NULL);
+ g_return_val_if_fail (root != NULL, NULL);
+
+ results = json_array_new ();
+
+ walk_path_node (path->nodes, root, results);
+
+ retval = json_node_new (JSON_NODE_ARRAY);
+ json_node_take_array (retval, results);
+
+ return retval;
+}
+
+/**
+ * json_path_query:
+ * @expression: a JSONPath expression
+ * @root: the root of a JSON tree
+ * @error: return location for a #GError, or %NULL
+ *
+ * Queries a JSON tree using a JSONPath expression.
+ *
+ * This function is a simple wrapper around json_path_new(),
+ * json_path_compile() and json_path_match(). It implicitly
+ * creates a #JsonPath instance, compiles @expression and
+ * matches it against the JSON tree pointed by @root.
+ *
+ * Return value: (transfer full): a newly-created #JsonNode of type
+ * %JSON_NODE_ARRAY containing an array of matching #JsonNodes.
+ * Use json_node_free() when done
+ *
+ * Since: 0.14
+ */
+JsonNode *
+json_path_query (const char *expression,
+ JsonNode *root,
+ GError **error)
+{
+ JsonPath *path = json_path_new ();
+ JsonNode *retval;
+
+ if (!json_path_compile (path, expression, error))
+ {
+ g_object_unref (path);
+ return NULL;
+ }
+
+ retval = json_path_match (path, root);
+
+ g_object_unref (path);
+
+ return retval;
+}
--- /dev/null
+/* json-path.h - JSONPath implementation
+ *
+ * This file is part of JSON-GLib
+ * Copyright © 2011 Intel Corp.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Author:
+ * Emmanuele Bassi <ebassi@linux.intel.com>
+ */
+
+#ifndef __JSON_PATH_H__
+#define __JSON_PATH_H__
+
+#if !defined(__JSON_GLIB_INSIDE__) && !defined(JSON_COMPILATION)
+#error "Only <json-glib/json-glib.h> can be included directly."
+#endif
+
+#include <json-glib/json-types.h>
+
+G_BEGIN_DECLS
+
+#define JSON_TYPE_PATH (json_path_get_type ())
+#define JSON_PATH(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), JSON_TYPE_PATH, JsonPath))
+#define JSON_IS_PATH(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), JSON_TYPE_PATH))
+
+/**
+ * JSON_PATH_ERROR:
+ *
+ * Error domain for #JsonPath errors
+ *
+ * Since: 0.14
+ */
+#define JSON_PATH_ERROR (json_path_error_quark ())
+
+/**
+ * JsonPathError:
+ * @JSON_PATH_ERROR_INVALID_QUERY: Invalid query
+ *
+ * Error code enumeration for the %JSON_PATH_ERROR domain.
+ *
+ * Since: 0.14
+ */
+typedef enum {
+ JSON_PATH_ERROR_INVALID_QUERY
+} JsonPathError;
+
+/**
+ * JsonPath:
+ *
+ * The `JsonPath` structure is an opaque object whose members cannot be
+ * directly accessed except through the provided API.
+ *
+ * Since: 0.14
+ */
+typedef struct _JsonPath JsonPath;
+
+/**
+ * JsonPathClass:
+ *
+ * The `JsonPathClass` structure is an opaque object class whose members
+ * cannot be directly accessed.
+ *
+ * Since: 0.14
+ */
+typedef struct _JsonPathClass JsonPathClass;
+
+JSON_AVAILABLE_IN_1_0
+GType json_path_get_type (void) G_GNUC_CONST;
+JSON_AVAILABLE_IN_1_0
+GQuark json_path_error_quark (void);
+
+JSON_AVAILABLE_IN_1_0
+JsonPath * json_path_new (void);
+
+JSON_AVAILABLE_IN_1_0
+gboolean json_path_compile (JsonPath *path,
+ const char *expression,
+ GError **error);
+JSON_AVAILABLE_IN_1_0
+JsonNode * json_path_match (JsonPath *path,
+ JsonNode *root);
+
+JSON_AVAILABLE_IN_1_0
+JsonNode * json_path_query (const char *expression,
+ JsonNode *root,
+ GError **error);
+
+G_END_DECLS
+
+#endif /* __JSON_PATH_H__ */
--- /dev/null
+/* json-reader.h - JSON cursor parser
+ *
+ * This file is part of JSON-GLib
+ * Copyright (C) 2010 Intel Corp.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Author:
+ * Emmanuele Bassi <ebassi@linux.intel.com>
+ */
+
+/**
+ * SECTION:json-reader
+ * @Title: JsonReader
+ * @short_description: A cursor-based parser
+ *
+ * #JsonReader provides a simple, cursor-based API for parsing a JSON DOM. It
+ * is similar, in spirit, to the XML Reader API.
+ *
+ * In case of error, #JsonReader will be set in an error state; all subsequent
+ * calls will simply be ignored until a function that resets the error state is
+ * called, e.g.:
+ *
+ * |[
+ * // ask for the 7th element; if the element does not exist, the
+ * // reader will be put in an error state
+ * json_reader_read_element (reader, 6);
+ *
+ * // in case of error, this will return NULL, otherwise it will
+ * // return the value of the element
+ * str = json_reader_get_string_value (value);
+ *
+ * // this function resets the error state if any was set
+ * json_reader_end_element (reader);
+ * ]|
+ *
+ * If you want to detect the error state as soon as possible, you can use
+ * json_reader_get_error():
+ *
+ * |[<!-- language="C" -->
+ * // like the example above, but in this case we print out the
+ * // error immediately
+ * if (!json_reader_read_element (reader, 6))
+ * {
+ * const GError *error = json_reader_get_error (reader);
+ * g_print ("Unable to read the element: %s", error->message);
+ * }
+ * ]|
+ *
+ * #JsonReader is available since JSON-GLib 0.12.
+ */
+
+#include "config.h"
+
+#include <string.h>
+
+#include <glib/gi18n-lib.h>
+
+#include "json-reader.h"
+#include "json-types-private.h"
+#include "json-debug.h"
+
+#define json_reader_return_if_error_set(r) G_STMT_START { \
+ if (((JsonReader *) (r))->priv->error != NULL) \
+ return; } G_STMT_END
+
+#define json_reader_return_val_if_error_set(r,v) G_STMT_START { \
+ if (((JsonReader *) (r))->priv->error != NULL) \
+ return (v); } G_STMT_END
+
+struct _JsonReaderPrivate
+{
+ JsonNode *root;
+
+ JsonNode *current_node;
+ JsonNode *previous_node;
+
+ gchar *current_member;
+
+ GError *error;
+};
+
+enum
+{
+ PROP_0,
+
+ PROP_ROOT,
+
+ PROP_LAST
+};
+
+static GParamSpec *reader_properties[PROP_LAST] = { NULL, };
+
+G_DEFINE_TYPE_WITH_PRIVATE (JsonReader, json_reader, G_TYPE_OBJECT)
+
+G_DEFINE_QUARK (json-reader-error-quark, json_reader_error)
+
+static void
+json_reader_finalize (GObject *gobject)
+{
+ JsonReaderPrivate *priv = JSON_READER (gobject)->priv;
+
+ if (priv->root != NULL)
+ json_node_free (priv->root);
+
+ if (priv->error != NULL)
+ g_clear_error (&priv->error);
+
+ g_free (priv->current_member);
+
+ G_OBJECT_CLASS (json_reader_parent_class)->finalize (gobject);
+}
+
+static void
+json_reader_set_property (GObject *gobject,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ switch (prop_id)
+ {
+ case PROP_ROOT:
+ json_reader_set_root (JSON_READER (gobject), g_value_get_boxed (value));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+json_reader_get_property (GObject *gobject,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ switch (prop_id)
+ {
+ case PROP_ROOT:
+ g_value_set_boxed (value, JSON_READER (gobject)->priv->root);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+json_reader_class_init (JsonReaderClass *klass)
+{
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+ /**
+ * JsonReader:root:
+ *
+ * The root of the JSON tree that the #JsonReader should read.
+ *
+ * Since: 0.12
+ */
+ reader_properties[PROP_ROOT] =
+ g_param_spec_boxed ("root",
+ "Root Node",
+ "The root of the tree to read",
+ JSON_TYPE_NODE,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT |
+ G_PARAM_STATIC_STRINGS);
+
+ gobject_class->finalize = json_reader_finalize;
+ gobject_class->set_property = json_reader_set_property;
+ gobject_class->get_property = json_reader_get_property;
+ g_object_class_install_properties (gobject_class, PROP_LAST, reader_properties);
+}
+
+static void
+json_reader_init (JsonReader *self)
+{
+ self->priv = json_reader_get_instance_private (self);
+}
+
+/**
+ * json_reader_new:
+ * @node: (allow-none): a #JsonNode, or %NULL
+ *
+ * Creates a new #JsonReader. You can use this object to read the contents of
+ * the JSON tree starting from @node
+ *
+ * Return value: the newly created #JsonReader. Use g_object_unref() to
+ * release the allocated resources when done
+ *
+ * Since: 0.12
+ */
+JsonReader *
+json_reader_new (JsonNode *node)
+{
+ return g_object_new (JSON_TYPE_READER, "root", node, NULL);
+}
+
+/*
+ * json_reader_unset_error:
+ * @reader: a #JsonReader
+ *
+ * Unsets the error state of @reader, if set
+ *
+ * Return value: TRUE if an error was set.
+ */
+static inline gboolean
+json_reader_unset_error (JsonReader *reader)
+{
+ if (reader->priv->error != NULL)
+ {
+ g_clear_error (&(reader->priv->error));
+ return TRUE;
+ }
+ return FALSE;
+}
+
+/**
+ * json_reader_set_root:
+ * @reader: a #JsonReader
+ * @root: (allow-none): a #JsonNode
+ *
+ * Sets the root #JsonNode to be read by @reader. The @reader will take
+ * a copy of @root
+ *
+ * If another #JsonNode is currently set as root, it will be replaced.
+ *
+ * Since: 0.12
+ */
+void
+json_reader_set_root (JsonReader *reader,
+ JsonNode *root)
+{
+ JsonReaderPrivate *priv;
+
+ g_return_if_fail (JSON_IS_READER (reader));
+
+ priv = reader->priv;
+
+ if (priv->root == root)
+ return;
+
+ if (priv->root != NULL)
+ {
+ json_node_free (priv->root);
+ priv->root = NULL;
+ priv->current_node = NULL;
+ priv->previous_node = NULL;
+ }
+
+ if (root != NULL)
+ {
+ priv->root = json_node_copy (root);
+ priv->current_node = priv->root;
+ priv->previous_node = NULL;
+ }
+
+ g_object_notify_by_pspec (G_OBJECT (reader), reader_properties[PROP_ROOT]);
+}
+
+/*
+ * json_reader_ser_error:
+ * @reader: a #JsonReader
+ * @error_code: the #JsonReaderError code for the error
+ * @error_fmt: format string
+ * @Varargs: list of arguments for the @error_fmt string
+ *
+ * Sets the error state of @reader using the given error code
+ * and string
+ *
+ * Return value: %FALSE, to be used to return immediately from
+ * the caller function
+ */
+static gboolean
+json_reader_set_error (JsonReader *reader,
+ JsonReaderError error_code,
+ const gchar *error_fmt,
+ ...)
+{
+ JsonReaderPrivate *priv = reader->priv;
+ va_list args;
+ gchar *error_msg;
+
+ if (priv->error != NULL)
+ g_clear_error (&priv->error);
+
+ va_start (args, error_fmt);
+ error_msg = g_strdup_vprintf (error_fmt, args);
+ va_end (args);
+
+ g_set_error_literal (&priv->error, JSON_READER_ERROR,
+ error_code,
+ error_msg);
+
+ g_free (error_msg);
+
+ return FALSE;
+}
+
+/**
+ * json_reader_get_error:
+ * @reader: a #JsonReader
+ *
+ * Retrieves the #GError currently set on @reader, if the #JsonReader
+ * is in error state
+ *
+ * Return value: (transfer none): the pointer to the error, or %NULL
+ *
+ * Since: 0.12
+ */
+const GError *
+json_reader_get_error (JsonReader *reader)
+{
+ g_return_val_if_fail (JSON_IS_READER (reader), FALSE);
+
+ return reader->priv->error;
+}
+
+/**
+ * json_reader_is_array:
+ * @reader: a #JsonReader
+ *
+ * Checks whether the @reader is currently on an array
+ *
+ * Return value: %TRUE if the #JsonReader is on an array, and %FALSE
+ * otherwise
+ *
+ * Since: 0.12
+ */
+gboolean
+json_reader_is_array (JsonReader *reader)
+{
+ g_return_val_if_fail (JSON_IS_READER (reader), FALSE);
+ json_reader_return_val_if_error_set (reader, FALSE);
+
+ if (reader->priv->current_node == NULL)
+ return FALSE;
+
+ return JSON_NODE_HOLDS_ARRAY (reader->priv->current_node);
+}
+
+/**
+ * json_reader_is_object:
+ * @reader: a #JsonReader
+ *
+ * Checks whether the @reader is currently on an object
+ *
+ * Return value: %TRUE if the #JsonReader is on an object, and %FALSE
+ * otherwise
+ *
+ * Since: 0.12
+ */
+gboolean
+json_reader_is_object (JsonReader *reader)
+{
+ g_return_val_if_fail (JSON_IS_READER (reader), FALSE);
+ json_reader_return_val_if_error_set (reader, FALSE);
+
+ if (reader->priv->current_node == NULL)
+ return FALSE;
+
+ return JSON_NODE_HOLDS_OBJECT (reader->priv->current_node);
+}
+
+/**
+ * json_reader_is_value:
+ * @reader: a #JsonReader
+ *
+ * Checks whether the @reader is currently on a value
+ *
+ * Return value: %TRUE if the #JsonReader is on a value, and %FALSE
+ * otherwise
+ *
+ * Since: 0.12
+ */
+gboolean
+json_reader_is_value (JsonReader *reader)
+{
+ g_return_val_if_fail (JSON_IS_READER (reader), FALSE);
+ json_reader_return_val_if_error_set (reader, FALSE);
+
+ if (reader->priv->current_node == NULL)
+ return FALSE;
+
+ return JSON_NODE_HOLDS_VALUE (reader->priv->current_node) ||
+ JSON_NODE_HOLDS_NULL (reader->priv->current_node);
+}
+
+/**
+ * json_reader_read_element:
+ * @reader: a #JsonReader
+ * @index_: the index of the element
+ *
+ * Advances the cursor of @reader to the element @index_ of the array
+ * or the object at the current position.
+ *
+ * You can use the json_reader_get_value* family of functions to retrieve
+ * the value of the element; for instance:
+ *
+ * |[
+ * json_reader_read_element (reader, 0);
+ * int_value = json_reader_get_int_value (reader);
+ * ]|
+ *
+ * After reading the value, json_reader_end_element() should be called to
+ * reposition the cursor inside the #JsonReader, e.g.:
+ *
+ * |[
+ * json_reader_read_element (reader, 1);
+ * str_value = json_reader_get_string_value (reader);
+ * json_reader_end_element (reader);
+ *
+ * json_reader_read_element (reader, 2);
+ * str_value = json_reader_get_string_value (reader);
+ * json_reader_end_element (reader);
+ * ]|
+ *
+ * If @reader is not currently on an array or an object, or if the @index_ is
+ * bigger than the size of the array or the object, the #JsonReader will be
+ * put in an error state until json_reader_end_element() is called.
+ *
+ * Return value: %TRUE on success, and %FALSE otherwise
+ *
+ * Since: 0.12
+ */
+gboolean
+json_reader_read_element (JsonReader *reader,
+ guint index_)
+{
+ JsonReaderPrivate *priv;
+
+ g_return_val_if_fail (JSON_READER (reader), FALSE);
+ json_reader_return_val_if_error_set (reader, FALSE);
+
+ priv = reader->priv;
+
+ if (priv->current_node == NULL)
+ priv->current_node = priv->root;
+
+ if (!(JSON_NODE_HOLDS_ARRAY (priv->current_node) ||
+ JSON_NODE_HOLDS_OBJECT (priv->current_node)))
+ return json_reader_set_error (reader, JSON_READER_ERROR_NO_ARRAY,
+ _("The current node is of type '%s', but "
+ "an array or an object was expected."),
+ json_node_type_name (priv->current_node));
+
+ switch (json_node_get_node_type (priv->current_node))
+ {
+ case JSON_NODE_ARRAY:
+ {
+ JsonArray *array = json_node_get_array (priv->current_node);
+
+ if (index_ >= json_array_get_length (array))
+ return json_reader_set_error (reader, JSON_READER_ERROR_INVALID_INDEX,
+ _("The index '%d' is greater than the size "
+ "of the array at the current position."),
+ index_);
+
+ priv->previous_node = priv->current_node;
+ priv->current_node = json_array_get_element (array, index_);
+ }
+ break;
+
+ case JSON_NODE_OBJECT:
+ {
+ JsonObject *object = json_node_get_object (priv->current_node);
+ GList *members;
+ const gchar *name;
+
+ if (index_ >= json_object_get_size (object))
+ return json_reader_set_error (reader, JSON_READER_ERROR_INVALID_INDEX,
+ _("The index '%d' is greater than the size "
+ "of the object at the current position."),
+ index_);
+
+ priv->previous_node = priv->current_node;
+ g_free (priv->current_member);
+
+ members = json_object_get_members (object);
+ name = g_list_nth_data (members, index_);
+
+ priv->current_node = json_object_get_member (object, name);
+ priv->current_member = g_strdup (name);
+
+ g_list_free (members);
+ }
+ break;
+
+ default:
+ g_assert_not_reached ();
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+/**
+ * json_reader_end_element:
+ * @reader: a #JsonReader
+ *
+ * Moves the cursor back to the previous node after being positioned
+ * inside an array
+ *
+ * This function resets the error state of @reader, if any was set
+ *
+ * Since: 0.12
+ */
+void
+json_reader_end_element (JsonReader *reader)
+{
+ JsonReaderPrivate *priv;
+ JsonNode *tmp;
+
+ g_return_if_fail (JSON_IS_READER (reader));
+
+ if (json_reader_unset_error (reader))
+ return;
+
+ priv = reader->priv;
+
+ if (priv->previous_node != NULL)
+ tmp = json_node_get_parent (priv->previous_node);
+ else
+ tmp = NULL;
+
+ g_free (priv->current_member);
+ priv->current_member = NULL;
+
+ priv->current_node = priv->previous_node;
+ priv->previous_node = tmp;
+}
+
+/**
+ * json_reader_count_elements:
+ * @reader: a #JsonReader
+ *
+ * Counts the elements of the current position, if @reader is
+ * positioned on an array
+ *
+ * Return value: the number of elements, or -1. In case of failure
+ * the #JsonReader is set in an error state
+ *
+ * Since: 0.12
+ */
+gint
+json_reader_count_elements (JsonReader *reader)
+{
+ JsonReaderPrivate *priv;
+
+ g_return_val_if_fail (JSON_IS_READER (reader), -1);
+
+ priv = reader->priv;
+
+ if (priv->current_node == NULL)
+ {
+ json_reader_set_error (reader, JSON_READER_ERROR_INVALID_NODE,
+ _("No node available at the current position"));
+ return -1;
+ }
+
+ if (!JSON_NODE_HOLDS_ARRAY (priv->current_node))
+ {
+ json_reader_set_error (reader, JSON_READER_ERROR_NO_ARRAY,
+ _("The current position holds a '%s' and not an array"),
+ json_node_type_get_name (JSON_NODE_TYPE (priv->current_node)));
+ return -1;
+ }
+
+ return json_array_get_length (json_node_get_array (priv->current_node));
+}
+
+/**
+ * json_reader_read_member:
+ * @reader: a #JsonReader
+ * @member_name: the name of the member to read
+ *
+ * Advances the cursor of @reader to the @member_name of the object at the
+ * current position.
+ *
+ * You can use the json_reader_get_value* family of functions to retrieve
+ * the value of the member; for instance:
+ *
+ * |[
+ * json_reader_read_member (reader, "width");
+ * width = json_reader_get_int_value (reader);
+ * ]|
+ *
+ * After reading the value, json_reader_end_member() should be called to
+ * reposition the cursor inside the #JsonReader, e.g.:
+ *
+ * |[
+ * json_reader_read_member (reader, "author");
+ * author = json_reader_get_string_value (reader);
+ * json_reader_end_member (reader);
+ *
+ * json_reader_read_member (reader, "title");
+ * title = json_reader_get_string_value (reader);
+ * json_reader_end_member (reader);
+ * ]|
+ *
+ * If @reader is not currently on an object, or if the @member_name is not
+ * defined in the object, the #JsonReader will be put in an error state until
+ * json_reader_end_member() is called.
+ *
+ * Return value: %TRUE on success, and %FALSE otherwise
+ *
+ * Since: 0.12
+ */
+gboolean
+json_reader_read_member (JsonReader *reader,
+ const gchar *member_name)
+{
+ JsonReaderPrivate *priv;
+ JsonObject *object;
+
+ g_return_val_if_fail (JSON_READER (reader), FALSE);
+ g_return_val_if_fail (member_name != NULL, FALSE);
+ json_reader_return_val_if_error_set (reader, FALSE);
+
+ priv = reader->priv;
+
+ if (priv->current_node == NULL)
+ priv->current_node = priv->root;
+
+ if (!JSON_NODE_HOLDS_OBJECT (priv->current_node))
+ return json_reader_set_error (reader, JSON_READER_ERROR_NO_OBJECT,
+ _("The current node is of type '%s', but "
+ "an object was expected."),
+ json_node_type_name (priv->current_node));
+
+ object = json_node_get_object (priv->current_node);
+ if (!json_object_has_member (object, member_name))
+ return json_reader_set_error (reader, JSON_READER_ERROR_INVALID_MEMBER,
+ _("The member '%s' is not defined in the "
+ "object at the current position."),
+ member_name);
+
+ g_free (priv->current_member);
+
+ priv->previous_node = priv->current_node;
+ priv->current_node = json_object_get_member (object, member_name);
+ priv->current_member = g_strdup (member_name);
+
+ return TRUE;
+}
+
+/**
+ * json_reader_end_member:
+ * @reader: a #JsonReader
+ *
+ * Moves the cursor back to the previous node after being positioned
+ * inside an object
+ *
+ * This function resets the error state of @reader, if any was set
+ *
+ * Since: 0.12
+ */
+void
+json_reader_end_member (JsonReader *reader)
+{
+ JsonReaderPrivate *priv;
+ JsonNode *tmp;
+
+ g_return_if_fail (JSON_IS_READER (reader));
+
+ if (json_reader_unset_error (reader))
+ return;
+
+ priv = reader->priv;
+
+ if (priv->previous_node != NULL)
+ tmp = json_node_get_parent (priv->previous_node);
+ else
+ tmp = NULL;
+
+ g_free (priv->current_member);
+ priv->current_member = NULL;
+
+ priv->current_node = priv->previous_node;
+ priv->previous_node = tmp;
+}
+
+/**
+ * json_reader_list_members:
+ * @reader: a #JsonReader
+ *
+ * Retrieves a list of member names from the current position, if @reader
+ * is positioned on an object.
+ *
+ * Return value: (transfer full): a newly allocated, %NULL-terminated
+ * array of strings holding the members name. Use g_strfreev() when
+ * done.
+ *
+ * Since: 0.14
+ */
+gchar **
+json_reader_list_members (JsonReader *reader)
+{
+ JsonReaderPrivate *priv;
+ GList *members, *l;
+ gchar **retval;
+ gint i;
+
+ g_return_val_if_fail (JSON_IS_READER (reader), NULL);
+
+ priv = reader->priv;
+
+ if (priv->current_node == NULL)
+ {
+ json_reader_set_error (reader, JSON_READER_ERROR_INVALID_NODE,
+ _("No node available at the current position"));
+ return NULL;
+ }
+
+ if (!JSON_NODE_HOLDS_OBJECT (priv->current_node))
+ {
+ json_reader_set_error (reader, JSON_READER_ERROR_NO_OBJECT,
+ _("The current position holds a '%s' and not an object"),
+ json_node_type_get_name (JSON_NODE_TYPE (priv->current_node)));
+ return NULL;
+ }
+
+ members = json_object_get_members (json_node_get_object (priv->current_node));
+ if (members == NULL)
+ return NULL;
+
+ retval = g_new (gchar*, g_list_length (members) + 1);
+ for (l = members, i = 0; l != NULL; l = l->next, i += 1)
+ retval[i] = g_strdup (l->data);
+
+ retval[i] = NULL;
+
+ g_list_free (members);
+
+ return retval;
+}
+
+/**
+ * json_reader_count_members:
+ * @reader: a #JsonReader
+ *
+ * Counts the members of the current position, if @reader is
+ * positioned on an object
+ *
+ * Return value: the number of members, or -1. In case of failure
+ * the #JsonReader is set in an error state
+ *
+ * Since: 0.12
+ */
+gint
+json_reader_count_members (JsonReader *reader)
+{
+ JsonReaderPrivate *priv;
+
+ g_return_val_if_fail (JSON_IS_READER (reader), -1);
+
+ priv = reader->priv;
+
+ if (priv->current_node == NULL)
+ {
+ json_reader_set_error (reader, JSON_READER_ERROR_INVALID_NODE,
+ _("No node available at the current position"));
+ return -1;
+ }
+
+ if (!JSON_NODE_HOLDS_OBJECT (priv->current_node))
+ {
+ json_reader_set_error (reader, JSON_READER_ERROR_NO_OBJECT,
+ _("The current position holds a '%s' and not an object"),
+ json_node_type_get_name (JSON_NODE_TYPE (priv->current_node)));
+ return -1;
+ }
+
+ return json_object_get_size (json_node_get_object (priv->current_node));
+}
+
+/**
+ * json_reader_get_value:
+ * @reader: a #JsonReader
+ *
+ * Retrieves the #JsonNode of the current position of @reader
+ *
+ * Return value: (transfer none): a #JsonNode, or %NULL. The returned node
+ * is owned by the #JsonReader and it should not be modified or freed
+ * directly
+ *
+ * Since: 0.12
+ */
+JsonNode *
+json_reader_get_value (JsonReader *reader)
+{
+ JsonNode *node;
+
+ g_return_val_if_fail (JSON_IS_READER (reader), NULL);
+ json_reader_return_val_if_error_set (reader, NULL);
+
+ if (reader->priv->current_node == NULL)
+ {
+ json_reader_set_error (reader, JSON_READER_ERROR_INVALID_NODE,
+ _("No node available at the current position"));
+ return NULL;
+ }
+
+ node = reader->priv->current_node;
+
+ if (!JSON_NODE_HOLDS_VALUE (node))
+ {
+ json_reader_set_error (reader, JSON_READER_ERROR_NO_VALUE,
+ _("The current position holds a '%s' and not a value"),
+ json_node_type_get_name (JSON_NODE_TYPE (node)));
+ return NULL;
+ }
+
+ return reader->priv->current_node;
+}
+
+/**
+ * json_reader_get_int_value:
+ * @reader: a #JsonReader
+ *
+ * Retrieves the integer value of the current position of @reader
+ *
+ * Return value: the integer value
+ *
+ * Since: 0.12
+ */
+gint64
+json_reader_get_int_value (JsonReader *reader)
+{
+ JsonNode *node;
+
+ g_return_val_if_fail (JSON_IS_READER (reader), 0);
+ json_reader_return_val_if_error_set (reader, 0);
+
+ if (reader->priv->current_node == NULL)
+ {
+ json_reader_set_error (reader, JSON_READER_ERROR_INVALID_NODE,
+ _("No node available at the current position"));
+ return 0;
+ }
+
+ node = reader->priv->current_node;
+
+ if (!JSON_NODE_HOLDS_VALUE (node))
+ {
+ json_reader_set_error (reader, JSON_READER_ERROR_NO_VALUE,
+ _("The current position holds a '%s' and not a value"),
+ json_node_type_get_name (JSON_NODE_TYPE (node)));
+ return 0;
+ }
+
+ return json_node_get_int (reader->priv->current_node);
+}
+
+/**
+ * json_reader_get_double_value:
+ * @reader: a #JsonReader
+ *
+ * Retrieves the floating point value of the current position of @reader
+ *
+ * Return value: the floating point value
+ *
+ * Since: 0.12
+ */
+gdouble
+json_reader_get_double_value (JsonReader *reader)
+{
+ JsonNode *node;
+
+ g_return_val_if_fail (JSON_IS_READER (reader), 0.0);
+ json_reader_return_val_if_error_set (reader, 0.0);
+
+ if (reader->priv->current_node == NULL)
+ {
+ json_reader_set_error (reader, JSON_READER_ERROR_INVALID_NODE,
+ _("No node available at the current position"));
+ return 0.0;
+ }
+
+ node = reader->priv->current_node;
+
+ if (!JSON_NODE_HOLDS_VALUE (node))
+ {
+ json_reader_set_error (reader, JSON_READER_ERROR_NO_VALUE,
+ _("The current position holds a '%s' and not a value"),
+ json_node_type_get_name (JSON_NODE_TYPE (node)));
+ return 0.0;
+ }
+
+ return json_node_get_double (reader->priv->current_node);
+}
+
+/**
+ * json_reader_get_string_value:
+ * @reader: a #JsonReader
+ *
+ * Retrieves the string value of the current position of @reader
+ *
+ * Return value: the string value
+ *
+ * Since: 0.12
+ */
+const gchar *
+json_reader_get_string_value (JsonReader *reader)
+{
+ JsonNode *node;
+
+ g_return_val_if_fail (JSON_IS_READER (reader), NULL);
+ json_reader_return_val_if_error_set (reader, NULL);
+
+ if (reader->priv->current_node == NULL)
+ {
+ json_reader_set_error (reader, JSON_READER_ERROR_INVALID_NODE,
+ _("No node available at the current position"));
+ return NULL;
+ }
+
+ node = reader->priv->current_node;
+
+ if (!JSON_NODE_HOLDS_VALUE (node))
+ {
+ json_reader_set_error (reader, JSON_READER_ERROR_NO_VALUE,
+ _("The current position holds a '%s' and not a value"),
+ json_node_type_get_name (JSON_NODE_TYPE (node)));
+ return NULL;
+ }
+
+ if (json_node_get_value_type (node) != G_TYPE_STRING)
+ {
+ json_reader_set_error (reader, JSON_READER_ERROR_INVALID_TYPE,
+ _("The current position does not hold a string type"));
+ return NULL;
+ }
+
+ return json_node_get_string (reader->priv->current_node);
+}
+
+/**
+ * json_reader_get_boolean_value:
+ * @reader: a #JsonReader
+ *
+ * Retrieves the boolean value of the current position of @reader
+ *
+ * Return value: the boolean value
+ *
+ * Since: 0.12
+ */
+gboolean
+json_reader_get_boolean_value (JsonReader *reader)
+{
+ JsonNode *node;
+
+ g_return_val_if_fail (JSON_IS_READER (reader), FALSE);
+ json_reader_return_val_if_error_set (reader, FALSE);
+
+ if (reader->priv->current_node == NULL)
+ {
+ json_reader_set_error (reader, JSON_READER_ERROR_INVALID_NODE,
+ _("No node available at the current position"));
+ return FALSE;
+ }
+
+ node = reader->priv->current_node;
+
+ if (!JSON_NODE_HOLDS_VALUE (node))
+ {
+ json_reader_set_error (reader, JSON_READER_ERROR_NO_VALUE,
+ _("The current position holds a '%s' and not a value"),
+ json_node_type_get_name (JSON_NODE_TYPE (node)));
+ return FALSE;
+ }
+
+ return json_node_get_boolean (node);
+}
+
+/**
+ * json_reader_get_null_value:
+ * @reader: a #JsonReader
+ *
+ * Checks whether the value of the current position of @reader is 'null'
+ *
+ * Return value: %TRUE if 'null' is set, and %FALSE otherwise
+ *
+ * Since: 0.12
+ */
+gboolean
+json_reader_get_null_value (JsonReader *reader)
+{
+ g_return_val_if_fail (JSON_IS_READER (reader), FALSE);
+ json_reader_return_val_if_error_set (reader, FALSE);
+
+ if (reader->priv->current_node == NULL)
+ {
+ json_reader_set_error (reader, JSON_READER_ERROR_INVALID_NODE,
+ _("No node available at the current position"));
+ return FALSE;
+ }
+
+ return JSON_NODE_HOLDS_NULL (reader->priv->current_node);
+}
+
+/**
+ * json_reader_get_member_name:
+ * @reader: a #JsonReader
+ *
+ * Retrieves the name of the current member.
+ *
+ * Return value: (transfer none): the name of the member, or %NULL
+ *
+ * Since: 0.14
+ */
+const gchar *
+json_reader_get_member_name (JsonReader *reader)
+{
+ g_return_val_if_fail (JSON_IS_READER (reader), NULL);
+ json_reader_return_val_if_error_set (reader, NULL);
+
+ if (reader->priv->current_node == NULL)
+ {
+ json_reader_set_error (reader, JSON_READER_ERROR_INVALID_NODE,
+ _("No node available at the current position"));
+ return FALSE;
+ }
+
+ return reader->priv->current_member;
+}
--- /dev/null
+/* json-reader.h - JSON cursor parser
+ *
+ * This file is part of JSON-GLib
+ * Copyright (C) 2010 Intel Corp.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Author:
+ * Emmanuele Bassi <ebassi@linux.intel.com>
+ */
+
+#ifndef __JSON_READER_H__
+#define __JSON_READER_H__
+
+#if !defined(__JSON_GLIB_INSIDE__) && !defined(JSON_COMPILATION)
+#error "Only <json-glib/json-glib.h> can be included directly."
+#endif
+
+#include <json-glib/json-types.h>
+
+G_BEGIN_DECLS
+
+#define JSON_TYPE_READER (json_reader_get_type ())
+#define JSON_READER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), JSON_TYPE_READER, JsonReader))
+#define JSON_IS_READER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), JSON_TYPE_READER))
+#define JSON_READER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), JSON_TYPE_READER, JsonReaderClass))
+#define JSON_IS_READER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), JSON_TYPE_READER))
+#define JSON_READER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), JSON_TYPE_READER, JsonReaderClass))
+
+/**
+ * JSON_READER_ERROR:
+ *
+ * Error domain for #JsonReader errors
+ *
+ * Since: 0.12
+ */
+#define JSON_READER_ERROR (json_reader_error_quark ())
+
+typedef struct _JsonReader JsonReader;
+typedef struct _JsonReaderPrivate JsonReaderPrivate;
+typedef struct _JsonReaderClass JsonReaderClass;
+
+/**
+ * JsonReaderError:
+ * @JSON_READER_ERROR_NO_ARRAY: No array found at the current position
+ * @JSON_READER_ERROR_INVALID_INDEX: Index out of bounds
+ * @JSON_READER_ERROR_NO_OBJECT: No object found at the current position
+ * @JSON_READER_ERROR_INVALID_MEMBER: Member not found
+ * @JSON_READER_ERROR_INVALID_NODE: No valid node found at the current position
+ * @JSON_READER_ERROR_NO_VALUE: The node at the current position does not
+ * hold a value
+ * @JSON_READER_ERROR_INVALID_TYPE: The node at the current position does not
+ * hold a value of the desired type
+ *
+ * Error codes enumeration for #JsonReader errors
+ *
+ * Since: 0.12
+ */
+typedef enum {
+ JSON_READER_ERROR_NO_ARRAY,
+ JSON_READER_ERROR_INVALID_INDEX,
+ JSON_READER_ERROR_NO_OBJECT,
+ JSON_READER_ERROR_INVALID_MEMBER,
+ JSON_READER_ERROR_INVALID_NODE,
+ JSON_READER_ERROR_NO_VALUE,
+ JSON_READER_ERROR_INVALID_TYPE
+} JsonReaderError;
+
+/**
+ * JsonReader:
+ *
+ * The `JsonReader` structure contains only private data and should
+ * be accessed using the provided API
+ *
+ * Since: 0.12
+ */
+struct _JsonReader
+{
+ /*< private >*/
+ GObject parent_instance;
+
+ JsonReaderPrivate *priv;
+};
+
+/**
+ * JsonReaderClass:
+ *
+ * The `JsonReaderClass` structure contains only private data
+ *
+ * Since: 0.12
+ */
+struct _JsonReaderClass
+{
+ /*< private >*/
+ GObjectClass parent_class;
+
+ void (*_json_padding0) (void);
+ void (*_json_padding1) (void);
+ void (*_json_padding2) (void);
+ void (*_json_padding3) (void);
+ void (*_json_padding4) (void);
+};
+
+JSON_AVAILABLE_IN_1_0
+GQuark json_reader_error_quark (void);
+JSON_AVAILABLE_IN_1_0
+GType json_reader_get_type (void) G_GNUC_CONST;
+
+JSON_AVAILABLE_IN_1_0
+JsonReader * json_reader_new (JsonNode *node);
+
+JSON_AVAILABLE_IN_1_0
+void json_reader_set_root (JsonReader *reader,
+ JsonNode *root);
+
+JSON_AVAILABLE_IN_1_0
+const GError * json_reader_get_error (JsonReader *reader);
+
+JSON_AVAILABLE_IN_1_0
+gboolean json_reader_is_array (JsonReader *reader);
+JSON_AVAILABLE_IN_1_0
+gboolean json_reader_read_element (JsonReader *reader,
+ guint index_);
+JSON_AVAILABLE_IN_1_0
+void json_reader_end_element (JsonReader *reader);
+JSON_AVAILABLE_IN_1_0
+gint json_reader_count_elements (JsonReader *reader);
+
+JSON_AVAILABLE_IN_1_0
+gboolean json_reader_is_object (JsonReader *reader);
+JSON_AVAILABLE_IN_1_0
+gboolean json_reader_read_member (JsonReader *reader,
+ const gchar *member_name);
+JSON_AVAILABLE_IN_1_0
+void json_reader_end_member (JsonReader *reader);
+JSON_AVAILABLE_IN_1_0
+gint json_reader_count_members (JsonReader *reader);
+JSON_AVAILABLE_IN_1_0
+gchar ** json_reader_list_members (JsonReader *reader);
+JSON_AVAILABLE_IN_1_0
+const gchar * json_reader_get_member_name (JsonReader *reader);
+
+JSON_AVAILABLE_IN_1_0
+gboolean json_reader_is_value (JsonReader *reader);
+JSON_AVAILABLE_IN_1_0
+JsonNode * json_reader_get_value (JsonReader *reader);
+JSON_AVAILABLE_IN_1_0
+gint64 json_reader_get_int_value (JsonReader *reader);
+JSON_AVAILABLE_IN_1_0
+gdouble json_reader_get_double_value (JsonReader *reader);
+JSON_AVAILABLE_IN_1_0
+const gchar * json_reader_get_string_value (JsonReader *reader);
+JSON_AVAILABLE_IN_1_0
+gboolean json_reader_get_boolean_value (JsonReader *reader);
+JSON_AVAILABLE_IN_1_0
+gboolean json_reader_get_null_value (JsonReader *reader);
+
+G_END_DECLS
+
+#endif /* __JSON_READER_H__ */
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.
*/
-#ifdef HAVE_CONFIG_H
#include "config.h"
-#endif
#include <errno.h>
#include <stdlib.h>
static gunichar json_scanner_get_unichar (JsonScanner *scanner,
guint *line_p,
guint *position_p);
-static void json_scanner_msg_handler (JsonScanner *scanner,
- gchar *message,
- gboolean is_error);
/* --- functions --- */
static inline gint
scanner->symbol_table = g_hash_table_new (json_scanner_key_hash,
json_scanner_key_equal);
- scanner->input_fd = -1;
scanner->text = NULL;
scanner->text_end = NULL;
scanner->buffer = NULL;
scanner->scope_id = 0;
- scanner->msg_handler = json_scanner_msg_handler;
-
return scanner;
}
g_free (scanner);
}
-static void
-json_scanner_msg_handler (JsonScanner *scanner,
- gchar *message,
- gboolean is_error)
-{
- g_return_if_fail (scanner != NULL);
-
- g_fprintf (stderr, "%s:%d: ",
- scanner->input_name ? scanner->input_name : "<memory>",
- scanner->line);
- if (is_error)
- g_fprintf (stderr, "error: ");
-
- g_fprintf (stderr, "%s\n", message);
-}
-
void
json_scanner_error (JsonScanner *scanner,
const gchar *format,
string = g_strdup_vprintf (format, args);
va_end (args);
- scanner->msg_handler (scanner, string, TRUE);
-
- g_free (string);
- }
-}
-
-void
-json_scanner_warn (JsonScanner *scanner,
- const gchar *format,
- ...)
-{
- g_return_if_fail (scanner != NULL);
- g_return_if_fail (format != NULL);
-
- if (scanner->msg_handler)
- {
- va_list args;
- gchar *string;
-
- va_start (args, format);
- string = g_strdup_vprintf (format, args);
- va_end (args);
-
- scanner->msg_handler (scanner, string, FALSE);
+ scanner->msg_handler (scanner, string);
g_free (string);
}
key->value = value;
}
-void
-json_scanner_scope_remove_symbol (JsonScanner *scanner,
- guint scope_id,
- const gchar *symbol)
-{
- JsonScannerKey *key;
-
- g_return_if_fail (scanner != NULL);
- g_return_if_fail (symbol != NULL);
-
- key = json_scanner_lookup_internal (scanner, scope_id, symbol);
- if (key)
- {
- g_hash_table_remove (scanner->symbol_table, key);
- g_free (key->symbol);
- g_slice_free (JsonScannerKey, key);
- }
-}
-
-gpointer
-json_scanner_lookup_symbol (JsonScanner *scanner,
- const gchar *symbol)
-{
- JsonScannerKey *key;
- guint scope_id;
-
- g_return_val_if_fail (scanner != NULL, NULL);
-
- if (!symbol)
- return NULL;
-
- scope_id = scanner->scope_id;
- key = json_scanner_lookup_internal (scanner, scope_id, symbol);
- if (!key && scope_id && scanner->config->scope_0_fallback)
- key = json_scanner_lookup_internal (scanner, 0, symbol);
-
- if (key)
- return key->value;
- else
- return NULL;
-}
-
-gpointer
-json_scanner_scope_lookup_symbol (JsonScanner *scanner,
- guint scope_id,
- const gchar *symbol)
-{
- JsonScannerKey *key;
-
- g_return_val_if_fail (scanner != NULL, NULL);
-
- if (!symbol)
- return NULL;
-
- key = json_scanner_lookup_internal (scanner, scope_id, symbol);
-
- if (key)
- return key->value;
- else
- return NULL;
-}
-
-guint
-json_scanner_set_scope (JsonScanner *scanner,
- guint scope_id)
-{
- guint old_scope_id;
-
- g_return_val_if_fail (scanner != NULL, 0);
-
- old_scope_id = scanner->scope_id;
- scanner->scope_id = scope_id;
-
- return old_scope_id;
-}
-
-typedef struct {
- GHFunc func;
- gpointer data;
- guint scope_id;
-} ForeachClosure;
-
-static void
-json_scanner_foreach_internal (gpointer _key,
- gpointer _value,
- gpointer _user_data)
-{
- JsonScannerKey *key = _value;
- ForeachClosure *closure = _user_data;
-
- if (key->scope_id == closure->scope_id)
- closure->func (key->symbol, key->value, closure->data);
-}
-
-void
-json_scanner_scope_foreach_symbol (JsonScanner *scanner,
- guint scope_id,
- GHFunc func,
- gpointer user_data)
-{
- ForeachClosure closure;
-
- g_return_if_fail (scanner != NULL);
- g_return_if_fail (func != NULL);
-
- closure.func = func;
- closure.data = user_data;
- closure.scope_id = scope_id;
-
- g_hash_table_foreach (scanner->symbol_table,
- json_scanner_foreach_internal,
- &closure);
-}
-
GTokenType
json_scanner_peek_next_token (JsonScanner *scanner)
{
return scanner->token;
}
-GTokenType
-json_scanner_cur_token (JsonScanner *scanner)
-{
- g_return_val_if_fail (scanner != NULL, G_TOKEN_EOF);
-
- return scanner->token;
-}
-
-GTokenValue
-json_scanner_cur_value (JsonScanner *scanner)
-{
- GTokenValue v;
-
- v.v_int64 = 0;
-
- g_return_val_if_fail (scanner != NULL, v);
-
- /* MSC isn't capable of handling return scanner->value; ? */
-
- v = scanner->value;
-
- return v;
-}
-
-guint
-json_scanner_cur_line (JsonScanner *scanner)
-{
- g_return_val_if_fail (scanner != NULL, 0);
-
- return scanner->line;
-}
-
-guint
-json_scanner_cur_position (JsonScanner *scanner)
-{
- g_return_val_if_fail (scanner != NULL, 0);
-
- return scanner->position;
-}
-
-gboolean
-json_scanner_eof (JsonScanner *scanner)
-{
- g_return_val_if_fail (scanner != NULL, TRUE);
-
- return scanner->token == G_TOKEN_EOF || scanner->token == G_TOKEN_ERROR;
-}
-
-void
-json_scanner_input_file (JsonScanner *scanner,
- gint input_fd)
-{
- g_return_if_fail (scanner != NULL);
- g_return_if_fail (input_fd >= 0);
-
- if (scanner->input_fd >= 0)
- json_scanner_sync_file_offset (scanner);
-
- scanner->token = G_TOKEN_NONE;
- scanner->value.v_int64 = 0;
- scanner->line = 1;
- scanner->position = 0;
- scanner->next_token = G_TOKEN_NONE;
-
- scanner->input_fd = input_fd;
- scanner->text = NULL;
- scanner->text_end = NULL;
-
- if (!scanner->buffer)
- scanner->buffer = g_new (gchar, READ_BUFFER_SIZE + 1);
-}
-
void
json_scanner_input_text (JsonScanner *scanner,
const gchar *text,
else
text = NULL;
- if (scanner->input_fd >= 0)
- json_scanner_sync_file_offset (scanner);
-
scanner->token = G_TOKEN_NONE;
scanner->value.v_int64 = 0;
scanner->line = 1;
scanner->position = 0;
scanner->next_token = G_TOKEN_NONE;
- scanner->input_fd = -1;
scanner->text = text;
scanner->text_end = text + text_len;
{
if (scanner->text < scanner->text_end)
return *scanner->text;
- else if (scanner->input_fd >= 0)
- {
- gint count;
- gchar *buffer;
-
- buffer = scanner->buffer;
- do
- {
- count = read (scanner->input_fd, buffer, READ_BUFFER_SIZE);
- }
- while (count == -1 && (errno == EINTR || errno == EAGAIN));
-
- if (count < 1)
- {
- scanner->input_fd = -1;
-
- return 0;
- }
- else
- {
- scanner->text = buffer;
- scanner->text_end = buffer + count;
-
- return *buffer;
- }
- }
else
return 0;
}
-void
-json_scanner_sync_file_offset (JsonScanner *scanner)
-{
- g_return_if_fail (scanner != NULL);
-
- /* for file input, rewind the filedescriptor to the current
- * buffer position and blow the file read ahead buffer. useful
- * for third party uses of our file descriptor, which hooks
- * onto the current scanning position.
- */
-
- if (scanner->input_fd >= 0 && scanner->text_end > scanner->text)
- {
- gint buffered;
-
- buffered = scanner->text_end - scanner->text;
- if (lseek (scanner->input_fd, - buffered, SEEK_CUR) >= 0)
- {
- /* we succeeded, blow our buffer's contents now */
- scanner->text = NULL;
- scanner->text_end = NULL;
- }
- else
- errno = 0;
- }
-}
-
static guchar
json_scanner_get_char (JsonScanner *scanner,
guint *line_p,
if (scanner->text < scanner->text_end)
fchar = *(scanner->text++);
- else if (scanner->input_fd >= 0)
- {
- gint count;
- gchar *buffer;
-
- buffer = scanner->buffer;
- do
- {
- count = read (scanner->input_fd, buffer, READ_BUFFER_SIZE);
- }
- while (count == -1 && (errno == EINTR || errno == EAGAIN));
-
- if (count < 1)
- {
- scanner->input_fd = -1;
- fchar = 0;
- }
- else
- {
- scanner->text = buffer + 1;
- scanner->text_end = buffer + count;
- fchar = *buffer;
- if (!fchar)
- {
- json_scanner_sync_file_offset (scanner);
- scanner->text_end = scanner->text;
- scanner->input_fd = -1;
- }
- }
- }
else
fchar = 0;
break;
}
- g_assert (g_unichar_validate (uchar));
+ g_assert (g_unichar_validate (uchar) || g_unichar_type (uchar) == G_UNICODE_SURROGATE);
return uchar;
}
+/*
+ * decode_utf16_surrogate_pair:
+ * @units: (array length=2): a pair of UTF-16 code points
+ *
+ * Decodes a surrogate pair of UTF-16 code points into the equivalent
+ * Unicode code point.
+ *
+ * Returns: the Unicode code point equivalent to the surrogate pair
+ */
+static inline gunichar
+decode_utf16_surrogate_pair (const gunichar units[2])
+{
+ gunichar ucs;
+
+ g_assert (0xd800 <= units[0] && units[0] <= 0xdbff);
+ g_assert (0xdc00 <= units[1] && units[1] <= 0xdfff);
+
+ ucs = 0x10000;
+ ucs += (units[0] & 0x3ff) << 10;
+ ucs += (units[1] & 0x3ff);
+
+ return ucs;
+}
+
void
json_scanner_unexp_token (JsonScanner *scanner,
GTokenType expected_token,
const gchar *identifier_spec,
const gchar *symbol_spec,
const gchar *symbol_name,
- const gchar *message,
- gint is_error)
+ const gchar *message)
{
gchar *token_string;
guint token_string_len;
guint expected_string_len;
gchar *message_prefix;
gboolean print_unexp;
- void (*msg_handler) (JsonScanner*, const gchar*, ...);
g_return_if_fail (scanner != NULL);
- if (is_error)
- msg_handler = json_scanner_error;
- else
- msg_handler = json_scanner_warn;
-
if (!identifier_spec)
identifier_spec = "identifier";
if (!symbol_spec)
}
if (expected_token == G_TOKEN_ERROR)
{
- msg_handler (scanner,
- "failure around %s%s%s",
- token_string,
- message_prefix,
- message);
+ json_scanner_error (scanner,
+ "failure around %s%s%s",
+ token_string,
+ message_prefix,
+ message);
}
else if (expected_token == G_TOKEN_NONE)
{
if (print_unexp)
- msg_handler (scanner,
- "unexpected %s%s%s",
- token_string,
- message_prefix,
- message);
+ json_scanner_error (scanner,
+ "unexpected %s%s%s",
+ token_string,
+ message_prefix,
+ message);
else
- msg_handler (scanner,
- "%s%s%s",
- token_string,
- message_prefix,
- message);
+ json_scanner_error (scanner,
+ "%s%s%s",
+ token_string,
+ message_prefix,
+ message);
}
else
{
if (print_unexp)
- msg_handler (scanner,
- "unexpected %s, expected %s%s%s",
- token_string,
- expected_string,
- message_prefix,
- message);
+ json_scanner_error (scanner,
+ "unexpected %s, expected %s%s%s",
+ token_string,
+ expected_string,
+ message_prefix,
+ message);
else
- msg_handler (scanner,
- "%s, expected %s%s%s",
- token_string,
- expected_string,
- message_prefix,
- message);
+ json_scanner_error (scanner,
+ "%s, expected %s%s%s",
+ token_string,
+ expected_string,
+ message_prefix,
+ message);
}
g_free (token_string);
static void
json_scanner_get_token_i (JsonScanner *scanner,
- GTokenType *token_p,
- GTokenValue *value_p,
- guint *line_p,
- guint *position_p)
+ GTokenType *token_p,
+ GTokenValue *value_p,
+ guint *line_p,
+ guint *position_p)
{
do
{
config = scanner->config;
(*value_p).v_int64 = 0;
- if ((scanner->text >= scanner->text_end && scanner->input_fd < 0) ||
+ if (scanner->text >= scanner->text_end ||
scanner->token == G_TOKEN_EOF)
{
*token_p = G_TOKEN_EOF;
gunichar ucs;
ucs = json_scanner_get_unichar (scanner, line_p, position_p);
+
+ /* resolve UTF-16 surrogates for Unicode characters not in the BMP,
+ * as per ECMA 404, § 9, "String"
+ */
+ if (g_unichar_type (ucs) == G_UNICODE_SURROGATE)
+ {
+ /* read next surrogate */
+ if ('\\' == json_scanner_get_char (scanner, line_p, position_p) &&
+ 'u' == json_scanner_get_char (scanner, line_p, position_p))
+ {
+ gunichar units[2];
+
+ units[0] = ucs;
+ units[1] = json_scanner_get_unichar (scanner, line_p, position_p);
+
+ ucs = decode_utf16_surrogate_pair (units);
+ g_assert (g_unichar_validate (ucs));
+ }
+ }
+
gstring = g_string_append_unichar (gstring, ucs);
}
break;
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.
*/
/*
#ifndef __JSON_SCANNER_H__
#define __JSON_SCANNER_H__
-#if !GLIB_CHECK_VERSION(2, 31, 0)
-#include <glib/gdataset.h>
-#include <glib/ghash.h>
-#include <glib/gscanner.h>
-#else
#include <glib.h>
-#endif
+
G_BEGIN_DECLS
typedef struct _JsonScanner JsonScanner;
typedef struct _JsonScannerConfig JsonScannerConfig;
typedef void (* JsonScannerMsgFunc) (JsonScanner *scanner,
- gchar *message,
- gboolean is_error);
+ gchar *message);
/**
* JsonTokenType:
/* to be considered private */
GHashTable *symbol_table;
- gint input_fd;
const gchar *text;
const gchar *text_end;
gchar *buffer;
JsonScannerMsgFunc msg_handler;
};
+G_GNUC_INTERNAL
JsonScanner *json_scanner_new (void);
+G_GNUC_INTERNAL
void json_scanner_destroy (JsonScanner *scanner);
-void json_scanner_input_file (JsonScanner *scanner,
- gint input_fd);
-void json_scanner_sync_file_offset (JsonScanner *scanner);
+G_GNUC_INTERNAL
void json_scanner_input_text (JsonScanner *scanner,
const gchar *text,
guint text_len);
+G_GNUC_INTERNAL
GTokenType json_scanner_get_next_token (JsonScanner *scanner);
+G_GNUC_INTERNAL
GTokenType json_scanner_peek_next_token (JsonScanner *scanner);
-GTokenType json_scanner_cur_token (JsonScanner *scanner);
-GTokenValue json_scanner_cur_value (JsonScanner *scanner);
-guint json_scanner_cur_line (JsonScanner *scanner);
-guint json_scanner_cur_position (JsonScanner *scanner);
-gboolean json_scanner_eof (JsonScanner *scanner);
-guint json_scanner_set_scope (JsonScanner *scanner,
- guint scope_id);
+G_GNUC_INTERNAL
void json_scanner_scope_add_symbol (JsonScanner *scanner,
guint scope_id,
const gchar *symbol,
gpointer value);
-void json_scanner_scope_remove_symbol (JsonScanner *scanner,
- guint scope_id,
- const gchar *symbol);
-gpointer json_scanner_scope_lookup_symbol (JsonScanner *scanner,
- guint scope_id,
- const gchar *symbol);
-void json_scanner_scope_foreach_symbol (JsonScanner *scanner,
- guint scope_id,
- GHFunc func,
- gpointer user_data);
-gpointer json_scanner_lookup_symbol (JsonScanner *scanner,
- const gchar *symbol);
+G_GNUC_INTERNAL
void json_scanner_unexp_token (JsonScanner *scanner,
GTokenType expected_token,
const gchar *identifier_spec,
const gchar *symbol_spec,
const gchar *symbol_name,
- const gchar *message,
- gint is_error);
+ const gchar *message);
+G_GNUC_INTERNAL
void json_scanner_error (JsonScanner *scanner,
const gchar *format,
...) G_GNUC_PRINTF (2,3);
-void json_scanner_warn (JsonScanner *scanner,
- const gchar *format,
- ...) G_GNUC_PRINTF (2,3);
G_END_DECLS
* json_serialize_gobject() respectively.
*/
-#ifdef HAVE_CONFIG_H
#include "config.h"
-#endif
#include <string.h>
#include <stdlib.h>
#include "json-types-private.h"
#include "json-gobject-private.h"
+#include "json-debug.h"
/**
* json_serializable_serialize_property:
* json_serializable_deserialize_property:
* @serializable: a #JsonSerializable
* @property_name: the name of the property
- * @value: a pointer to an uninitialized #GValue
+ * @value: (out): a pointer to an uninitialized #GValue
* @pspec: a #GParamSpec
* @property_node: a #JsonNode containing the serialized property
*
GParamSpec *pspec,
JsonNode *node)
{
+ JSON_NOTE (GOBJECT, "Default deserialization for property '%s'", pspec->name);
return json_deserialize_pspec (value, pspec, node);
}
const GValue *value,
GParamSpec *pspec)
{
+ JSON_NOTE (GOBJECT, "Default serialization for property '%s'", pspec->name);
+
+ if (g_param_value_defaults (pspec, (GValue *)value))
+ return NULL;
+
return json_serialize_pspec (value, pspec);
}
-static void
-json_serializable_base_init (gpointer g_class,
- gpointer data)
+static GParamSpec *
+json_serializable_real_find_property (JsonSerializable *serializable,
+ const char *name)
{
- static gboolean is_initialized = FALSE;
-
- if (G_UNLIKELY (!is_initialized))
- {
- JsonSerializableIface *iface = g_class;
+ return g_object_class_find_property (G_OBJECT_GET_CLASS (serializable), name);
+}
- iface->serialize_property = json_serializable_real_serialize;
- iface->deserialize_property = json_serializable_real_deserialize;
+static GParamSpec **
+json_serializable_real_list_properties (JsonSerializable *serializable,
+ guint *n_pspecs)
+{
+ return g_object_class_list_properties (G_OBJECT_GET_CLASS (serializable), n_pspecs);
+}
- is_initialized = TRUE;
- }
+static void
+json_serializable_real_set_property (JsonSerializable *serializable,
+ GParamSpec *pspec,
+ const GValue *value)
+{
+ g_object_set_property (G_OBJECT (serializable), pspec->name, value);
}
-GType
-json_serializable_get_type (void)
+static void
+json_serializable_real_get_property (JsonSerializable *serializable,
+ GParamSpec *pspec,
+ GValue *value)
{
- static GType iface_type = 0;
+ g_object_get_property (G_OBJECT (serializable), pspec->name, value);
+}
- if (!iface_type)
- iface_type =
- g_type_register_static_simple (G_TYPE_INTERFACE,
- g_intern_static_string ("JsonSerializable"),
- sizeof (JsonSerializableIface),
- json_serializable_base_init,
- 0, NULL, 0);
+/* typedef to satisfy G_DEFINE_INTERFACE's naming */
+typedef JsonSerializableIface JsonSerializableInterface;
- return iface_type;
+static void
+json_serializable_default_init (JsonSerializableInterface *iface)
+{
+ iface->serialize_property = json_serializable_real_serialize;
+ iface->deserialize_property = json_serializable_real_deserialize;
+ iface->find_property = json_serializable_real_find_property;
+ iface->list_properties = json_serializable_real_list_properties;
+ iface->set_property = json_serializable_real_set_property;
+ iface->get_property = json_serializable_real_get_property;
}
+G_DEFINE_INTERFACE (JsonSerializable, json_serializable, G_TYPE_OBJECT);
+
/**
* json_serializable_default_serialize_property:
* @serializable: a #JsonSerializable object
* @pspec: a #GParamSpec
*
* Calls the default implementation of the #JsonSerializable
- * serialize_property() virtual function
+ * #JsonSerializableIface.serialize_property() virtual function.
*
* This function can be used inside a custom implementation
- * of the serialize_property() virtual function in lieu of:
+ * of the #JsonSerializableIface.serialize_property() virtual
+ * function in lieu of calling the default implementation
+ * through g_type_default_interface_peek():
*
- * |[
+ * |[<!-- language="C" -->
* JsonSerializable *iface;
* JsonNode *node;
*
* This function can be used inside a custom implementation
* of the deserialize_property() virtual function in lieu of:
*
- * |[
+ * |[<!-- language="C" -->
* JsonSerializable *iface;
* gboolean res;
*
value, pspec,
property_node);
}
+
+/**
+ * json_serializable_find_property:
+ * @serializable: a #JsonSerializable
+ * @name: the name of the property
+ *
+ * FIXME
+ *
+ * Return value: (transfer none): the #GParamSpec for the property
+ * or %NULL if no property was found
+ *
+ * Since: 0.14
+ */
+GParamSpec *
+json_serializable_find_property (JsonSerializable *serializable,
+ const char *name)
+{
+ g_return_val_if_fail (JSON_IS_SERIALIZABLE (serializable), NULL);
+ g_return_val_if_fail (name != NULL, NULL);
+
+ return JSON_SERIALIZABLE_GET_IFACE (serializable)->find_property (serializable, name);
+}
+
+/**
+ * json_serializable_list_properties:
+ * @serializable: a #JsonSerializable
+ * @n_pspecs: (out): return location for the length of the array
+ * of #GParamSpec returned by the function
+ *
+ * FIXME
+ *
+ * Return value: (array length=n_pspecs) (transfer container): an array
+ * of #GParamSpec. Use g_free() to free the array when done.
+ *
+ * Since: 0.14
+ */
+GParamSpec **
+json_serializable_list_properties (JsonSerializable *serializable,
+ guint *n_pspecs)
+{
+ g_return_val_if_fail (JSON_IS_SERIALIZABLE (serializable), NULL);
+
+ return JSON_SERIALIZABLE_GET_IFACE (serializable)->list_properties (serializable, n_pspecs);
+}
+
+void
+json_serializable_set_property (JsonSerializable *serializable,
+ GParamSpec *pspec,
+ const GValue *value)
+{
+ g_return_if_fail (JSON_IS_SERIALIZABLE (serializable));
+ g_return_if_fail (G_IS_PARAM_SPEC (pspec));
+ g_return_if_fail (value != NULL);
+
+ JSON_SERIALIZABLE_GET_IFACE (serializable)->set_property (serializable,
+ pspec,
+ value);
+}
+
+void
+json_serializable_get_property (JsonSerializable *serializable,
+ GParamSpec *pspec,
+ GValue *value)
+{
+ g_return_if_fail (JSON_IS_SERIALIZABLE (serializable));
+ g_return_if_fail (G_IS_PARAM_SPEC (pspec));
+ g_return_if_fail (value != NULL);
+
+ JSON_SERIALIZABLE_GET_IFACE (serializable)->get_property (serializable,
+ pspec,
+ value);
+}
G_BEGIN_DECLS
+typedef struct _JsonValue JsonValue;
+
+typedef enum {
+ JSON_VALUE_INVALID = 0,
+ JSON_VALUE_INT,
+ JSON_VALUE_DOUBLE,
+ JSON_VALUE_BOOLEAN,
+ JSON_VALUE_STRING,
+ JSON_VALUE_NULL
+} JsonValueType;
+
struct _JsonNode
{
/*< private >*/
union {
JsonObject *object;
JsonArray *array;
- GValue value;
+ JsonValue *value;
} data;
JsonNode *parent;
};
+#define JSON_VALUE_INIT { JSON_VALUE_INVALID, 1, { 0 } }
+#define JSON_VALUE_INIT_TYPE(t) { (t), 1, { 0 } }
+#define JSON_VALUE_IS_VALID(v) ((v) != NULL && (v)->type != JSON_VALUE_INVALID)
+#define JSON_VALUE_HOLDS(v,t) ((v) != NULL && (v)->type == (t))
+#define JSON_VALUE_HOLDS_INT(v) (JSON_VALUE_HOLDS((v), JSON_VALUE_INT))
+#define JSON_VALUE_HOLDS_DOUBLE(v) (JSON_VALUE_HOLDS((v), JSON_VALUE_DOUBLE))
+#define JSON_VALUE_HOLDS_BOOLEAN(v) (JSON_VALUE_HOLDS((v), JSON_VALUE_BOOLEAN))
+#define JSON_VALUE_HOLDS_STRING(v) (JSON_VALUE_HOLDS((v), JSON_VALUE_STRING))
+#define JSON_VALUE_HOLDS_NULL(v) (JSON_VALUE_HOLDS((v), JSON_VALUE_NULL))
+#define JSON_VALUE_TYPE(v) (json_value_type((v)))
+
+struct _JsonValue
+{
+ JsonValueType type;
+
+ volatile gint ref_count;
+
+ union {
+ gint64 v_int;
+ gdouble v_double;
+ gboolean v_bool;
+ gchar *v_str;
+ } data;
+};
+
struct _JsonArray
{
GPtrArray *elements;
volatile gint ref_count;
};
-#if !GLIB_CHECK_VERSION(2, 31, 0)
-G_CONST_RETURN gchar *json_node_type_get_name (JsonNodeType node_type);
-#else
-const gchar *json_node_type_get_name (JsonNodeType node_type);
-#endif
+G_GNUC_INTERNAL
+const gchar * json_node_type_get_name (JsonNodeType node_type);
+G_GNUC_INTERNAL
+const gchar * json_value_type_get_name (JsonValueType value_type);
+
+G_GNUC_INTERNAL
+GType json_value_type (const JsonValue *value);
+
+G_GNUC_INTERNAL
+JsonValue * json_value_alloc (void);
+G_GNUC_INTERNAL
+JsonValue * json_value_init (JsonValue *value,
+ JsonValueType value_type);
+G_GNUC_INTERNAL
+JsonValue * json_value_ref (JsonValue *value);
+G_GNUC_INTERNAL
+void json_value_unref (JsonValue *value);
+G_GNUC_INTERNAL
+void json_value_unset (JsonValue *value);
+G_GNUC_INTERNAL
+void json_value_free (JsonValue *value);
+G_GNUC_INTERNAL
+void json_value_set_int (JsonValue *value,
+ gint64 v_int);
+G_GNUC_INTERNAL
+gint64 json_value_get_int (const JsonValue *value);
+G_GNUC_INTERNAL
+void json_value_set_double (JsonValue *value,
+ gdouble v_double);
+G_GNUC_INTERNAL
+gdouble json_value_get_double (const JsonValue *value);
+G_GNUC_INTERNAL
+void json_value_set_boolean (JsonValue *value,
+ gboolean v_bool);
+G_GNUC_INTERNAL
+gboolean json_value_get_boolean (const JsonValue *value);
+G_GNUC_INTERNAL
+void json_value_set_string (JsonValue *value,
+ const gchar *v_str);
+G_GNUC_INTERNAL
+const gchar * json_value_get_string (const JsonValue *value);
G_END_DECLS
* Emmanuele Bassi <ebassi@linux.intel.com>
*/
+#ifndef __JSON_TYPES_H__
+#define __JSON_TYPES_H__
+
#if !defined(__JSON_GLIB_INSIDE__) && !defined(JSON_COMPILATION)
#error "Only <json-glib/json-glib.h> can be included directly."
#endif
-#ifndef __JSON_TYPES_H__
-#define __JSON_TYPES_H__
-
#include <glib-object.h>
+#include <json-glib/json-version-macros.h>
G_BEGIN_DECLS
/**
* JsonNode:
- * @type: the type of node
*
* A generic container of JSON data types. The contents of the #JsonNode
* structure are private and should only be accessed via the provided
JsonNode *element_node,
gpointer user_data);
-
-
/*
* JsonNode
*/
+
+JSON_AVAILABLE_IN_1_0
GType json_node_get_type (void) G_GNUC_CONST;
+JSON_AVAILABLE_IN_1_0
JsonNode * json_node_new (JsonNodeType type);
+
+JSON_AVAILABLE_IN_1_0
+JsonNode * json_node_alloc (void);
+JSON_AVAILABLE_IN_1_0
+JsonNode * json_node_init (JsonNode *node,
+ JsonNodeType type);
+JSON_AVAILABLE_IN_1_0
+JsonNode * json_node_init_object (JsonNode *node,
+ JsonObject *object);
+JSON_AVAILABLE_IN_1_0
+JsonNode * json_node_init_array (JsonNode *node,
+ JsonArray *array);
+JSON_AVAILABLE_IN_1_0
+JsonNode * json_node_init_int (JsonNode *node,
+ gint64 value);
+JSON_AVAILABLE_IN_1_0
+JsonNode * json_node_init_double (JsonNode *node,
+ gdouble value);
+JSON_AVAILABLE_IN_1_0
+JsonNode * json_node_init_boolean (JsonNode *node,
+ gboolean value);
+JSON_AVAILABLE_IN_1_0
+JsonNode * json_node_init_string (JsonNode *node,
+ const char *value);
+JSON_AVAILABLE_IN_1_0
+JsonNode * json_node_init_null (JsonNode *node);
+
+JSON_AVAILABLE_IN_1_0
JsonNode * json_node_copy (JsonNode *node);
+JSON_AVAILABLE_IN_1_0
void json_node_free (JsonNode *node);
+
+JSON_AVAILABLE_IN_1_0
JsonNodeType json_node_get_node_type (JsonNode *node);
+JSON_AVAILABLE_IN_1_0
GType json_node_get_value_type (JsonNode *node);
+JSON_AVAILABLE_IN_1_0
void json_node_set_parent (JsonNode *node,
JsonNode *parent);
+JSON_AVAILABLE_IN_1_0
JsonNode * json_node_get_parent (JsonNode *node);
-#if !GLIB_CHECK_VERSION(2,31,0)
-G_CONST_RETURN gchar *json_node_type_name (JsonNode *node);
-#else
-const gchar *json_node_type_name (JsonNode *node);
-#endif
+JSON_AVAILABLE_IN_1_0
+const gchar * json_node_type_name (JsonNode *node);
+
+JSON_AVAILABLE_IN_1_0
void json_node_set_object (JsonNode *node,
JsonObject *object);
+JSON_AVAILABLE_IN_1_0
void json_node_take_object (JsonNode *node,
JsonObject *object);
+JSON_AVAILABLE_IN_1_0
JsonObject * json_node_get_object (JsonNode *node);
+JSON_AVAILABLE_IN_1_0
JsonObject * json_node_dup_object (JsonNode *node);
+JSON_AVAILABLE_IN_1_0
void json_node_set_array (JsonNode *node,
JsonArray *array);
+JSON_AVAILABLE_IN_1_0
void json_node_take_array (JsonNode *node,
JsonArray *array);
+JSON_AVAILABLE_IN_1_0
JsonArray * json_node_get_array (JsonNode *node);
+JSON_AVAILABLE_IN_1_0
JsonArray * json_node_dup_array (JsonNode *node);
+JSON_AVAILABLE_IN_1_0
void json_node_set_value (JsonNode *node,
const GValue *value);
+JSON_AVAILABLE_IN_1_0
void json_node_get_value (JsonNode *node,
GValue *value);
+JSON_AVAILABLE_IN_1_0
void json_node_set_string (JsonNode *node,
const gchar *value);
-#if !GLIB_CHECK_VERSION(2,31,0)
-G_CONST_RETURN gchar *json_node_get_string (JsonNode *node);
-#else
-const gchar *json_node_get_string (JsonNode *node);
-#endif
+JSON_AVAILABLE_IN_1_0
+const gchar * json_node_get_string (JsonNode *node);
+JSON_AVAILABLE_IN_1_0
gchar * json_node_dup_string (JsonNode *node);
+JSON_AVAILABLE_IN_1_0
void json_node_set_int (JsonNode *node,
gint64 value);
+JSON_AVAILABLE_IN_1_0
gint64 json_node_get_int (JsonNode *node);
+JSON_AVAILABLE_IN_1_0
void json_node_set_double (JsonNode *node,
gdouble value);
+JSON_AVAILABLE_IN_1_0
gdouble json_node_get_double (JsonNode *node);
+JSON_AVAILABLE_IN_1_0
void json_node_set_boolean (JsonNode *node,
gboolean value);
+JSON_AVAILABLE_IN_1_0
gboolean json_node_get_boolean (JsonNode *node);
+JSON_AVAILABLE_IN_1_0
gboolean json_node_is_null (JsonNode *node);
/*
* JsonObject
*/
+JSON_AVAILABLE_IN_1_0
GType json_object_get_type (void) G_GNUC_CONST;
+JSON_AVAILABLE_IN_1_0
JsonObject * json_object_new (void);
+JSON_AVAILABLE_IN_1_0
JsonObject * json_object_ref (JsonObject *object);
+JSON_AVAILABLE_IN_1_0
void json_object_unref (JsonObject *object);
-#ifndef JSON_DISABLE_DEPRECATED
+JSON_DEPRECATED_IN_1_0_FOR(json_object_set_member)
void json_object_add_member (JsonObject *object,
const gchar *member_name,
- JsonNode *node) G_GNUC_DEPRECATED;
-#endif /* JSON_DISABLE_DEPRECATED */
+ JsonNode *node);
+JSON_AVAILABLE_IN_1_0
void json_object_set_member (JsonObject *object,
const gchar *member_name,
JsonNode *node);
+JSON_AVAILABLE_IN_1_0
void json_object_set_int_member (JsonObject *object,
const gchar *member_name,
gint64 value);
+JSON_AVAILABLE_IN_1_0
void json_object_set_double_member (JsonObject *object,
const gchar *member_name,
gdouble value);
+JSON_AVAILABLE_IN_1_0
void json_object_set_boolean_member (JsonObject *object,
const gchar *member_name,
gboolean value);
+JSON_AVAILABLE_IN_1_0
void json_object_set_string_member (JsonObject *object,
const gchar *member_name,
const gchar *value);
+JSON_AVAILABLE_IN_1_0
void json_object_set_null_member (JsonObject *object,
const gchar *member_name);
+JSON_AVAILABLE_IN_1_0
void json_object_set_array_member (JsonObject *object,
const gchar *member_name,
JsonArray *value);
+JSON_AVAILABLE_IN_1_0
void json_object_set_object_member (JsonObject *object,
const gchar *member_name,
JsonObject *value);
+JSON_AVAILABLE_IN_1_0
GList * json_object_get_members (JsonObject *object);
+JSON_AVAILABLE_IN_1_0
JsonNode * json_object_get_member (JsonObject *object,
const gchar *member_name);
+JSON_AVAILABLE_IN_1_0
JsonNode * json_object_dup_member (JsonObject *object,
const gchar *member_name);
+JSON_AVAILABLE_IN_1_0
gint64 json_object_get_int_member (JsonObject *object,
const gchar *member_name);
+JSON_AVAILABLE_IN_1_0
gdouble json_object_get_double_member (JsonObject *object,
const gchar *member_name);
+JSON_AVAILABLE_IN_1_0
gboolean json_object_get_boolean_member (JsonObject *object,
const gchar *member_name);
-#if !GLIB_CHECK_VERSION(2,31,0)
-G_CONST_RETURN gchar *json_object_get_string_member (JsonObject *object,
- const gchar *member_name);
-#else
-const gchar *json_object_get_string_member (JsonObject *object,
+JSON_AVAILABLE_IN_1_0
+const gchar * json_object_get_string_member (JsonObject *object,
const gchar *member_name);
-#endif
+JSON_AVAILABLE_IN_1_0
gboolean json_object_get_null_member (JsonObject *object,
const gchar *member_name);
+JSON_AVAILABLE_IN_1_0
JsonArray * json_object_get_array_member (JsonObject *object,
const gchar *member_name);
+JSON_AVAILABLE_IN_1_0
JsonObject * json_object_get_object_member (JsonObject *object,
const gchar *member_name);
+JSON_AVAILABLE_IN_1_0
gboolean json_object_has_member (JsonObject *object,
const gchar *member_name);
+JSON_AVAILABLE_IN_1_0
void json_object_remove_member (JsonObject *object,
const gchar *member_name);
+JSON_AVAILABLE_IN_1_0
GList * json_object_get_values (JsonObject *object);
+JSON_AVAILABLE_IN_1_0
guint json_object_get_size (JsonObject *object);
+JSON_AVAILABLE_IN_1_0
void json_object_foreach_member (JsonObject *object,
JsonObjectForeach func,
gpointer data);
+JSON_AVAILABLE_IN_1_0
GType json_array_get_type (void) G_GNUC_CONST;
+JSON_AVAILABLE_IN_1_0
JsonArray * json_array_new (void);
+JSON_AVAILABLE_IN_1_0
JsonArray * json_array_sized_new (guint n_elements);
+JSON_AVAILABLE_IN_1_0
JsonArray * json_array_ref (JsonArray *array);
+JSON_AVAILABLE_IN_1_0
void json_array_unref (JsonArray *array);
+JSON_AVAILABLE_IN_1_0
void json_array_add_element (JsonArray *array,
JsonNode *node);
+JSON_AVAILABLE_IN_1_0
void json_array_add_int_element (JsonArray *array,
gint64 value);
+JSON_AVAILABLE_IN_1_0
void json_array_add_double_element (JsonArray *array,
gdouble value);
+JSON_AVAILABLE_IN_1_0
void json_array_add_boolean_element (JsonArray *array,
gboolean value);
+JSON_AVAILABLE_IN_1_0
void json_array_add_string_element (JsonArray *array,
const gchar *value);
+JSON_AVAILABLE_IN_1_0
void json_array_add_null_element (JsonArray *array);
+JSON_AVAILABLE_IN_1_0
void json_array_add_array_element (JsonArray *array,
JsonArray *value);
+JSON_AVAILABLE_IN_1_0
void json_array_add_object_element (JsonArray *array,
JsonObject *value);
+JSON_AVAILABLE_IN_1_0
GList * json_array_get_elements (JsonArray *array);
+JSON_AVAILABLE_IN_1_0
JsonNode * json_array_get_element (JsonArray *array,
guint index_);
+JSON_AVAILABLE_IN_1_0
gint64 json_array_get_int_element (JsonArray *array,
guint index_);
+JSON_AVAILABLE_IN_1_0
gdouble json_array_get_double_element (JsonArray *array,
guint index_);
+JSON_AVAILABLE_IN_1_0
gboolean json_array_get_boolean_element (JsonArray *array,
guint index_);
-#if !GLIB_CHECK_VERSION(2,31,0)
-G_CONST_RETURN gchar *json_array_get_string_element (JsonArray *array,
- guint index_);
-#else
-const gchar *json_array_get_string_element (JsonArray *array,
+JSON_AVAILABLE_IN_1_0
+const gchar * json_array_get_string_element (JsonArray *array,
guint index_);
-#endif
+JSON_AVAILABLE_IN_1_0
gboolean json_array_get_null_element (JsonArray *array,
guint index_);
+JSON_AVAILABLE_IN_1_0
JsonArray * json_array_get_array_element (JsonArray *array,
guint index_);
+JSON_AVAILABLE_IN_1_0
JsonObject * json_array_get_object_element (JsonArray *array,
guint index_);
+JSON_AVAILABLE_IN_1_0
JsonNode * json_array_dup_element (JsonArray *array,
guint index_);
+JSON_AVAILABLE_IN_1_0
void json_array_remove_element (JsonArray *array,
guint index_);
+JSON_AVAILABLE_IN_1_0
guint json_array_get_length (JsonArray *array);
+JSON_AVAILABLE_IN_1_0
void json_array_foreach_element (JsonArray *array,
JsonArrayForeach func,
gpointer data);
--- /dev/null
+/* json-value.c - JSON value container
+ *
+ * This file is part of JSON-GLib
+ * Copyright (C) 2012 Emmanuele Bassi <ebassi@gnome.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Author:
+ * Emmanuele Bassi <ebassi@linux.intel.com>
+ */
+
+#include "config.h"
+
+#include <glib.h>
+
+#include "json-types-private.h"
+
+const gchar *
+json_value_type_get_name (JsonValueType value_type)
+{
+ switch (value_type)
+ {
+ case JSON_VALUE_INVALID:
+ return "Unset";
+
+ case JSON_VALUE_INT:
+ return "Integer";
+
+ case JSON_VALUE_DOUBLE:
+ return "Floating Point";
+
+ case JSON_VALUE_BOOLEAN:
+ return "Boolean";
+
+ case JSON_VALUE_STRING:
+ return "String";
+
+ case JSON_VALUE_NULL:
+ return "Null";
+ }
+
+ return "Undefined";
+}
+
+GType
+json_value_type (const JsonValue *value)
+{
+ switch (value->type)
+ {
+ case JSON_VALUE_INVALID:
+ return G_TYPE_INVALID;
+
+ case JSON_VALUE_INT:
+ return G_TYPE_INT64;
+
+ case JSON_VALUE_DOUBLE:
+ return G_TYPE_DOUBLE;
+
+ case JSON_VALUE_BOOLEAN:
+ return G_TYPE_BOOLEAN;
+
+ case JSON_VALUE_STRING:
+ return G_TYPE_STRING;
+
+ case JSON_VALUE_NULL:
+ return G_TYPE_INVALID;
+ }
+
+ return G_TYPE_INVALID;
+}
+
+JsonValue *
+json_value_alloc (void)
+{
+ JsonValue *res = g_slice_new0 (JsonValue);
+
+ res->ref_count = 1;
+
+ return res;
+}
+
+JsonValue *
+json_value_init (JsonValue *value,
+ JsonValueType value_type)
+{
+ g_return_val_if_fail (value != NULL, NULL);
+
+ if (value->type != JSON_VALUE_INVALID)
+ json_value_unset (value);
+
+ value->type = value_type;
+
+ return value;
+}
+
+JsonValue *
+json_value_ref (JsonValue *value)
+{
+ g_return_val_if_fail (value != NULL, NULL);
+
+ g_atomic_int_add (&value->ref_count, 1);
+
+ return value;
+}
+
+void
+json_value_unref (JsonValue *value)
+{
+ g_return_if_fail (value != NULL);
+
+ if (g_atomic_int_dec_and_test (&value->ref_count))
+ json_value_free (value);
+}
+
+void
+json_value_unset (JsonValue *value)
+{
+ g_return_if_fail (value != NULL);
+
+ switch (value->type)
+ {
+ case JSON_VALUE_INVALID:
+ break;
+
+ case JSON_VALUE_INT:
+ value->data.v_int = 0;
+ break;
+
+ case JSON_VALUE_DOUBLE:
+ value->data.v_double = 0.0;
+ break;
+
+ case JSON_VALUE_BOOLEAN:
+ value->data.v_bool = FALSE;
+ break;
+
+ case JSON_VALUE_STRING:
+ g_free (value->data.v_str);
+ value->data.v_str = NULL;
+ break;
+
+ case JSON_VALUE_NULL:
+ break;
+ }
+}
+
+void
+json_value_free (JsonValue *value)
+{
+ if (G_LIKELY (value != NULL))
+ {
+ json_value_unset (value);
+ g_slice_free (JsonValue, value);
+ }
+}
+
+#define _JSON_VALUE_DEFINE_SET(Type,EType,CType,VField) \
+void \
+json_value_set_##Type (JsonValue *value, CType VField) \
+{ \
+ g_return_if_fail (JSON_VALUE_IS_VALID (value)); \
+ g_return_if_fail (JSON_VALUE_HOLDS (value, JSON_VALUE_##EType)); \
+\
+ value->data.VField = VField; \
+\
+}
+
+#define _JSON_VALUE_DEFINE_GET(Type,EType,CType,VField) \
+CType \
+json_value_get_##Type (const JsonValue *value) \
+{ \
+ g_return_val_if_fail (JSON_VALUE_IS_VALID (value), 0); \
+ g_return_val_if_fail (JSON_VALUE_HOLDS (value, JSON_VALUE_##EType), 0); \
+\
+ return value->data.VField; \
+}
+
+#define _JSON_VALUE_DEFINE_SET_GET(Type,EType,CType,VField) \
+_JSON_VALUE_DEFINE_SET(Type,EType,CType,VField) \
+_JSON_VALUE_DEFINE_GET(Type,EType,CType,VField)
+
+_JSON_VALUE_DEFINE_SET_GET(int, INT, gint64, v_int)
+
+_JSON_VALUE_DEFINE_SET_GET(double, DOUBLE, gdouble, v_double)
+
+_JSON_VALUE_DEFINE_SET_GET(boolean, BOOLEAN, gboolean, v_bool)
+
+void
+json_value_set_string (JsonValue *value,
+ const gchar *v_str)
+{
+ g_return_if_fail (JSON_VALUE_IS_VALID (value));
+ g_return_if_fail (JSON_VALUE_HOLDS_STRING (value));
+
+ g_free (value->data.v_str);
+ value->data.v_str = g_strdup (v_str);
+}
+
+_JSON_VALUE_DEFINE_GET(string, STRING, const gchar *, v_str)
+
+#undef _JSON_VALUE_DEFINE_SET_GET
+#undef _JSON_VALUE_DEFINE_GET
+#undef _JSON_VALUE_DEFINE_SET
--- /dev/null
+/* json-version-macros.h - JSON-GLib symbol versioning macros
+ *
+ * This file is part of JSON-GLib
+ * Copyright © 2014 Emmanuele Bassi
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __JSON_VERSION_MACROS_H__
+#define __JSON_VERSION_MACROS_H__
+
+#if !defined(__JSON_GLIB_INSIDE__) && !defined(JSON_COMPILATION)
+#error "Only <json-glib/json-glib.h> can be included directly."
+#endif
+
+#include "json-version.h"
+
+#ifndef _JSON_EXTERN
+#define _JSON_EXTERN extern
+#endif
+
+#ifdef JSON_DISABLE_DEPRECATION_WARNINGS
+#define JSON_DEPRECATED _JSON_EXTERN
+#define JSON_DEPRECATED_FOR(f) _JSON_EXTERN
+#define JSON_UNAVAILABLE(maj,min) _JSON_EXTERN
+#else
+#define JSON_DEPRECATED G_DEPRECATED _JSON_EXTERN
+#define JSON_DEPRECATED_FOR(f) G_DEPRECATED_FOR(f) _JSON_EXTERN
+#define JSON_UNAVAILABLE(maj,min) G_UNAVAILABLE(maj,min) _JSON_EXTERN
+#endif
+
+/* XXX: Each new cycle should add a new version symbol here */
+#define JSON_VERSION_1_0 (G_ENCODE_VERSION (1, 0))
+
+/* evaluates to the current stable version; for development cycles,
+ * this means the next stable target
+ */
+#if (JSON_MINOR_VERSION == 99)
+#define JSON_VERSION_CUR_STABLE (G_ENCODE_VERSION (JSON_MAJOR_VERSION + 1, 0))
+#elif (JSON_MINOR_VERSION % 2)
+#define JSON_VERSION_CUR_STABLE (G_ENCODE_VERSION (JSON_MAJOR_VERSION, JSON_MINOR_VERSION + 1))
+#else
+#define JSON_VERSION_CUR_STABLE (G_ENCODE_VERSION (JSON_MAJOR_VERSION, JSON_MINOR_VERSION))
+#endif
+
+/* evaluates to the previous stable version */
+#if (JSON_MINOR_VERSION == 99)
+#define JSON_VERSION_PREV_STABLE (G_ENCODE_VERSION (JSON_MAJOR_VERSION + 1, 0))
+#elif (JSON_MINOR_VERSION % 2)
+#define JSON_VERSION_PREV_STABLE (G_ENCODE_VERSION (JSON_MAJOR_VERSION, JSON_MINOR_VERSION - 1))
+#else
+#define JSON_VERSION_PREV_STABLE (G_ENCODE_VERSION (JSON_MAJOR_VERSION, JSON_MINOR_VERSION - 2))
+#endif
+
+/**
+ * JSON_VERSION_MIN_REQUIRED:
+ *
+ * A macro that should be defined by the user prior to including
+ * the gdk.h header.
+ * The definition should be one of the predefined JSON version
+ * macros: %JSON_VERSION_1_0, %JSON_VERSION_1_2,...
+ *
+ * This macro defines the lower bound for the JSON-GLib API to use.
+ *
+ * If a function has been deprecated in a newer version of JSON-GLib,
+ * it is possible to use this symbol to avoid the compiler warnings
+ * without disabling warning for every deprecated function.
+ *
+ * Since: 1.0
+ */
+#ifndef JSON_VERSION_MIN_REQUIRED
+# define JSON_VERSION_MIN_REQUIRED (JSON_VERSION_CUR_STABLE)
+#endif
+
+/**
+ * JSON_VERSION_MAX_ALLOWED:
+ *
+ * A macro that should be defined by the user prior to including
+ * the json-glib.h header.
+
+ * The definition should be one of the predefined JSON-GLib version
+ * macros: %JSON_VERSION_1_0, %JSON_VERSION_1_2,...
+ *
+ * This macro defines the upper bound for the JSON API-GLib to use.
+ *
+ * If a function has been introduced in a newer version of JSON-GLib,
+ * it is possible to use this symbol to get compiler warnings when
+ * trying to use that function.
+ *
+ * Since: 1.0
+ */
+#ifndef JSON_VERSION_MAX_ALLOWED
+# if JSON_VERSION_MIN_REQUIRED > JSON_VERSION_PREV_STABLE
+# define JSON_VERSION_MAX_ALLOWED (JSON_VERSION_MIN_REQUIRED)
+# else
+# define JSON_VERSION_MAX_ALLOWED (JSON_VERSION_CUR_STABLE)
+# endif
+#endif
+
+/* sanity checks */
+#if JSON_VERSION_MAX_ALLOWED < JSON_VERSION_MIN_REQUIRED
+#error "JSON_VERSION_MAX_ALLOWED must be >= JSON_VERSION_MIN_REQUIRED"
+#endif
+#if JSON_VERSION_MIN_REQUIRED < JSON_VERSION_1_0
+#error "JSON_VERSION_MIN_REQUIRED must be >= JSON_VERSION_1_0"
+#endif
+
+/* XXX: Every new stable minor release should add a set of macros here */
+
+#if JSON_VERSION_MIN_REQUIRED >= JSON_VERSION_1_0
+# define JSON_DEPRECATED_IN_1_0 JSON_DEPRECATED
+# define JSON_DEPRECATED_IN_1_0_FOR(f) JSON_DEPRECATED_FOR(f)
+#else
+# define JSON_DEPRECATED_IN_1_0 _JSON_EXTERN
+# define JSON_DEPRECATED_IN_1_0_FOR(f) _JSON_EXTERN
+#endif
+
+#if JSON_VERSION_MAX_ALLOWED < JSON_VERSION_1_0
+# define JSON_AVAILABLE_IN_1_0 JSON_UNAVAILABLE(1, 0)
+#else
+# define JSON_AVAILABLE_IN_1_0 _JSON_EXTERN
+#endif
+
+#endif /* __JSON_VERSION_MACROS_H__ */
* Emmanuele Bassi <ebassi@linux.intel.com>
*/
+#ifndef __JSON_VERSION_H__
+#define __JSON_VERSION_H__
+
#if !defined(__JSON_GLIB_INSIDE__) && !defined(JSON_COMPILATION)
#error "Only <json-glib/json-glib.h> can be included directly."
#endif
-#ifndef __JSON_VERSION_H__
-#define __JSON_VERSION_H__
-
/**
* SECTION:json-version
* @short_description: JSON-GLib version checking
/**
* JSON_VERSION_S:
*
- * Json version, encoded as a string, useful for printing and
+ * JSON-GLib version, encoded as a string, useful for printing and
* concatenation.
*/
#define JSON_VERSION_S "@JSON_VERSION@"
+#define JSON_ENCODE_VERSION(major,minor,micro) \
+ ((major) << 24 | (minor) << 16 | (micro) << 8)
+
/**
* JSON_VERSION_HEX:
*
- * Json version, encoded as an hexadecimal number, useful for
+ * JSON-GLib version, encoded as an hexadecimal number, useful for
* integer comparisons.
*/
-#define JSON_VERSION_HEX (JSON_MAJOR_VERSION << 24 | \
- JSON_MINOR_VERSION << 16 | \
- JSON_MICRO_VERSION << 8)
+#define JSON_VERSION_HEX \
+ (JSON_ENCODE_VERSION (JSON_MAJOR_VERSION, JSON_MINOR_VERSION, JSON_MICRO_VERSION))
/**
* JSON_CHECK_VERSION:
-include $(top_srcdir)/build/autotools/Makefile.am.gtest
-include $(top_srcdir)/build/autotools/Makefile.am.silent
-
-NULL =
-
-INCLUDES = \
- -I$(top_srcdir) \
- -I$(top_srcdir)/json-glib \
+include $(top_srcdir)/build/autotools/glib-tap.mk
+
+AM_CFLAGS = -g $(JSON_CFLAGS) $(MAINTAINER_CFLAGS)
+LDADD = $(top_builddir)/json-glib//libjson-glib-1.0.la $(JSON_LIBS)
+AM_CPPFLAGS = \
+ $(JSON_DEBUG_CFLAGS) \
+ -DG_LOG_DOMAIN=\"Json\" \
+ -I$(top_srcdir) \
+ -I$(top_builddir) \
+ -I$(top_srcdir)/json-glib \
+ -I$(top_builddir)/json-glib \
$(NULL)
-AM_CPPFLAGS = $(JSON_DEBUG_CFLAGS)
-AM_CFLAGS = -g $(JSON_CFLAGS)
-AM_LDFLAGS = $(JSON_LIBS)
-
-noinst_PROGRAMS = $(TEST_PROGS)
-progs_ldadd = $(top_builddir)/json-glib/libjson-glib-1.0.la
-
-TEST_PROGS += array-test
-array_test_SOURCES = array-test.c
-array_test_LDADD = $(progs_ldadd)
-
-TEST_PROGS += object-test
-object_test_SOURCES = object-test.c
-object_test_LDADD = $(progs_ldadd)
+dist_test_data = \
+ stream-load.json \
+ $(NULL)
-TEST_PROGS += node-test
-node_test_SOURCES = node-test.c
-node_test_LDADD = $(progs_ldadd)
+test_programs = \
+ array \
+ boxed \
+ builder \
+ generator \
+ gvariant \
+ invalid \
+ node \
+ object \
+ parser \
+ path \
+ reader \
+ serialize-simple \
+ serialize-complex \
+ serialize-full \
+ $(NULL)
+include $(top_srcdir)/build/autotools/Makefile.am.gitignore
node = json_array_get_element (array, 0);
g_assert_cmpint (JSON_NODE_TYPE (node), ==, JSON_NODE_NULL);
+ g_assert (json_array_get_null_element (array, 0));
+
+ json_array_add_int_element (array, 42);
+ g_assert_cmpint (json_array_get_length (array), ==, 2);
+ g_assert_cmpint (json_array_get_int_element (array, 1), ==, 42);
+
+ json_array_add_double_element (array, 3.14);
+ g_assert_cmpint (json_array_get_length (array), ==, 3);
+ g_assert_cmpfloat (json_array_get_double_element (array, 2), ==, 3.14);
+
+ json_array_add_boolean_element (array, TRUE);
+ g_assert_cmpint (json_array_get_length (array), ==, 4);
+ g_assert (json_array_get_boolean_element (array, 3));
+
+ json_array_add_string_element (array, "Hello");
+ g_assert_cmpint (json_array_get_length (array), ==, 5);
+ g_assert_cmpstr (json_array_get_string_element (array, 4), ==, "Hello");
+
+ json_array_add_string_element (array, NULL);
+ g_assert_cmpint (json_array_get_length (array), ==, 6);
+ g_assert (json_array_get_string_element (array, 5) == NULL);
+ g_assert (json_array_get_element (array, 5) != NULL);
+ g_assert (json_array_get_null_element (array, 5));
+
+ json_array_add_array_element (array, NULL);
+ g_assert (json_array_get_array_element (array, 6) == NULL);
+ g_assert (json_array_get_null_element (array, 6));
+
+ json_array_add_object_element (array, json_object_new ());
+ g_assert (json_array_get_object_element (array, 7) != NULL);
+
+ json_array_add_object_element (array, NULL);
+ g_assert (json_array_get_object_element (array, 8) == NULL);
+ g_assert (json_array_get_null_element (array, 8));
json_array_unref (array);
}
typedef struct _TestForeachFixture
{
+ GList *elements;
gint n_elements;
+ gint iterations;
} TestForeachFixture;
static const struct {
JsonNodeType element_type;
GType element_gtype;
} type_verify[] = {
- { JSON_NODE_VALUE, G_TYPE_INT64 },
+ { JSON_NODE_VALUE, G_TYPE_INT64 },
{ JSON_NODE_VALUE, G_TYPE_BOOLEAN },
- { JSON_NODE_VALUE, G_TYPE_STRING },
- { JSON_NODE_NULL, G_TYPE_INVALID }
+ { JSON_NODE_VALUE, G_TYPE_STRING },
+ { JSON_NODE_NULL, G_TYPE_INVALID }
};
static void
{
TestForeachFixture *fixture = user_data;
+ g_assert (g_list_find (fixture->elements, element_node));
g_assert (json_node_get_node_type (element_node) == type_verify[index_].element_type);
g_assert (json_node_get_value_type (element_node) == type_verify[index_].element_gtype);
- fixture->n_elements += 1;
+ fixture->iterations += 1;
}
static void
json_array_add_string_element (array, "hello");
json_array_add_null_element (array);
+ fixture.elements = json_array_get_elements (array);
+ g_assert (fixture.elements != NULL);
+
+ fixture.n_elements = json_array_get_length (array);
+ g_assert_cmpint (fixture.n_elements, ==, g_list_length (fixture.elements));
+
+ fixture.iterations = 0;
+
json_array_foreach_element (array, verify_foreach, &fixture);
- g_assert_cmpint (fixture.n_elements, ==, json_array_get_length (array));
+ g_assert_cmpint (fixture.iterations, ==, fixture.n_elements);
+ g_list_free (fixture.elements);
json_array_unref (array);
}
main (int argc,
char *argv[])
{
- g_type_init ();
g_test_init (&argc, &argv, NULL);
g_test_add_func ("/array/empty-array", test_empty_array);
main (int argc,
char *argv[])
{
- g_type_init ();
g_test_init (&argc, &argv, NULL);
g_test_add_func ("/boxed/serialize-property", test_serialize_boxed);
--- /dev/null
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include <glib-object.h>
+
+#include <json-glib/json-glib.h>
+
+static const gchar *complex_object = "{\"depth1\":[1,{\"depth2\":[3,[null,false],\"after array\"],\"value2\":true}],\"object1\":{},\"value3\":null,\"value4\":42}";
+
+static const gchar *empty_object = "{\"a\":{}}";
+
+static const gchar *reset_object = "{\"test\":\"reset\"}";
+static const gchar *reset_array = "[\"reset\"]";
+
+static void
+test_builder_complex (void)
+{
+ JsonBuilder *builder = json_builder_new ();
+ JsonNode *node;
+ JsonGenerator *generator;
+ gsize length;
+ gchar *data;
+
+ json_builder_begin_object (builder);
+
+ json_builder_set_member_name (builder, "depth1");
+ json_builder_begin_array (builder);
+ json_builder_add_int_value (builder, 1);
+
+ json_builder_begin_object (builder);
+
+ json_builder_set_member_name (builder, "depth2");
+ json_builder_begin_array (builder);
+ json_builder_add_int_value (builder, 3);
+
+ json_builder_begin_array (builder);
+ json_builder_add_null_value (builder);
+ json_builder_add_boolean_value (builder, FALSE);
+ json_builder_end_array (builder);
+
+ json_builder_add_string_value (builder, "after array");
+ json_builder_end_array (builder); /* depth2 */
+
+ json_builder_set_member_name (builder, "value2");
+ json_builder_add_boolean_value (builder, TRUE);
+ json_builder_end_object (builder);
+
+ json_builder_end_array (builder); /* depth1 */
+
+ json_builder_set_member_name (builder, "object1");
+ json_builder_begin_object (builder);
+ json_builder_end_object (builder);
+
+ json_builder_set_member_name (builder, "value3");
+ json_builder_add_null_value (builder);
+
+ json_builder_set_member_name (builder, "value4");
+ json_builder_add_int_value (builder, 42);
+
+ json_builder_end_object (builder);
+
+ node = json_builder_get_root (builder);
+ g_object_unref (builder);
+
+ generator = json_generator_new ();
+ json_generator_set_root (generator, node);
+ data = json_generator_to_data (generator, &length);
+
+ if (g_test_verbose ())
+ g_print ("Builder complex: '%*s'\n", (int)length, data);
+
+ g_assert_cmpint (length, ==, strlen (complex_object));
+ g_assert_cmpstr (data, ==, complex_object);
+
+ g_free (data);
+ json_node_free (node);
+ g_object_unref (generator);
+}
+
+static void
+test_builder_empty (void)
+{
+ JsonBuilder *builder = json_builder_new ();
+ JsonNode *node;
+ JsonGenerator *generator;
+ gsize length;
+ gchar *data;
+
+ json_builder_begin_object (builder);
+
+ json_builder_set_member_name (builder, "a");
+
+ json_builder_begin_object (builder);
+ json_builder_end_object (builder);
+
+ json_builder_end_object (builder);
+
+ node = json_builder_get_root (builder);
+ g_object_unref (builder);
+
+ generator = json_generator_new ();
+ json_generator_set_root (generator, node);
+ data = json_generator_to_data (generator, &length);
+
+ if (g_test_verbose ())
+ g_print ("Builder empty: '%*s'\n", (int)length, data);
+
+ g_assert_cmpint (length, ==, strlen (empty_object));
+ g_assert_cmpstr (data, ==, empty_object);
+
+ g_free (data);
+ json_node_free (node);
+ g_object_unref (generator);
+}
+
+static void
+test_builder_reset (void)
+{
+ JsonBuilder *builder = json_builder_new ();
+ JsonGenerator *generator = json_generator_new ();
+ JsonNode *node;
+ gsize length;
+ gchar *data;
+
+ json_builder_begin_object (builder);
+ json_builder_set_member_name (builder, "test");
+ json_builder_add_string_value (builder, "reset");
+ json_builder_end_object (builder);
+
+ node = json_builder_get_root (builder);
+ json_generator_set_root (generator, node);
+ data = json_generator_to_data (generator, &length);
+ g_assert (strncmp (data, reset_object, length) == 0);
+
+ g_free (data);
+ json_node_free (node);
+
+ json_builder_reset (builder);
+
+ json_builder_begin_array (builder);
+ json_builder_add_string_value (builder, "reset");
+ json_builder_end_array (builder);
+
+ node = json_builder_get_root (builder);
+ json_generator_set_root (generator, node);
+ data = json_generator_to_data (generator, &length);
+ g_assert (strncmp (data, reset_array, length) == 0);
+
+ g_free (data);
+ json_node_free (node);
+ g_object_unref (builder);
+ g_object_unref (generator);
+}
+
+int
+main (int argc,
+ char *argv[])
+{
+ g_test_init (&argc, &argv, NULL);
+
+ g_test_add_func ("/builder/complex", test_builder_complex);
+ g_test_add_func ("/builder/complex", test_builder_empty);
+ g_test_add_func ("/builder/reset", test_builder_reset);
+
+ return g_test_run ();
+}
--- /dev/null
+#include "config.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include <glib.h>
+
+#include <json-glib/json-glib.h>
+
+#include <locale.h>
+
+static const gchar *empty_array = "[]";
+static const gchar *empty_object = "{}";
+
+static const gchar *simple_array = "[true,false,null,42,\"foo\"]";
+static const gchar *nested_array = "[true,[false,null],42]";
+
+static const gchar *simple_object = "{\"Bool1\":true,\"Bool2\":false,\"Null\":null,\"Int\":42,\"String\":\"foo\"}";
+/* taken from the RFC 4627, Examples section */
+static const gchar *nested_object =
+"{"
+ "\"Image\":{"
+ "\"Width\":800,"
+ "\"Height\":600,"
+ "\"Title\":\"View from 15th Floor\","
+ "\"Thumbnail\":{"
+ "\"Url\":\"http://www.example.com/image/481989943\","
+ "\"Height\":125,"
+ "\"Width\":\"100\""
+ "},"
+ "\"IDs\":[116,943,234,38793]"
+ "}"
+"}";
+
+static const char *pretty_examples[] = {
+ "[\n]",
+
+ "{\n}",
+
+ "[\n"
+ "\ttrue,\n"
+ "\tfalse,\n"
+ "\tnull,\n"
+ "\t\"hello\"\n"
+ "]",
+
+ "{\n"
+ "\t\"foo\" : 42,\n"
+ "\t\"bar\" : true,\n"
+ "\t\"baz\" : null\n"
+ "}",
+};
+
+static const int n_pretty_examples = G_N_ELEMENTS (pretty_examples);
+
+static const struct {
+ const gchar *lang;
+ const gchar *sep;
+ guint matches : 1;
+} decimal_separator[] = {
+ { "C", ".", TRUE },
+ { "de", ",", FALSE },
+ { "en", ".", TRUE },
+ { "fr", ",", FALSE }
+};
+
+static void
+test_empty_array (void)
+{
+ JsonGenerator *gen = json_generator_new ();
+ JsonNode *root;
+ gchar *data;
+ gsize len;
+
+ root = json_node_new (JSON_NODE_ARRAY);
+ json_node_take_array (root, json_array_new ());
+
+ json_generator_set_root (gen, root);
+ g_object_set (gen, "pretty", FALSE, "indent", 0, "indent-char", ' ', NULL);
+
+ data = json_generator_to_data (gen, &len);
+
+ g_assert_cmpint (len, ==, strlen (empty_array));
+ g_assert_cmpstr (data, ==, empty_array);
+
+ g_assert (json_generator_get_pretty (gen) == FALSE);
+ g_assert_cmpint (json_generator_get_indent (gen), ==, 0);
+ g_assert_cmpint (json_generator_get_indent_char (gen), ==, ' ');
+
+ g_free (data);
+ json_node_free (root);
+ g_object_unref (gen);
+}
+
+static void
+test_empty_object (void)
+{
+ JsonGenerator *gen = json_generator_new ();
+ JsonNode *root;
+ gchar *data;
+ gsize len;
+
+ root = json_node_new (JSON_NODE_OBJECT);
+ json_node_take_object (root, json_object_new ());
+
+ json_generator_set_root (gen, root);
+ g_object_set (gen, "pretty", FALSE, NULL);
+
+ data = json_generator_to_data (gen, &len);
+
+ g_assert_cmpint (len, ==, strlen (empty_object));
+ g_assert_cmpstr (data, ==, empty_object);
+
+ g_free (data);
+ json_node_free (root);
+ g_object_unref (gen);
+}
+
+static void
+test_simple_array (void)
+{
+ JsonGenerator *generator = json_generator_new ();
+ JsonNode *root;
+ JsonArray *array;
+ gchar *data;
+ gsize len;
+
+ root = json_node_new (JSON_NODE_ARRAY);
+ array = json_array_sized_new (5);
+
+ json_array_add_boolean_element (array, TRUE);
+ json_array_add_boolean_element (array, FALSE);
+ json_array_add_null_element (array);
+ json_array_add_int_element (array, 42);
+ json_array_add_string_element (array, "foo");
+
+ json_node_take_array (root, array);
+ json_generator_set_root (generator, root);
+
+ g_object_set (generator, "pretty", FALSE, NULL);
+ data = json_generator_to_data (generator, &len);
+
+ if (g_test_verbose ())
+ g_print ("checking simple array `%s' (expected: %s)\n",
+ data,
+ simple_array);
+
+ g_assert_cmpint (len, ==, strlen (simple_array));
+ g_assert_cmpstr (data, ==, simple_array);
+
+ g_free (data);
+ json_node_free (root);
+ g_object_unref (generator);
+}
+
+static void
+test_nested_array (void)
+{
+ JsonGenerator *generator = json_generator_new ();
+ JsonNode *root;
+ JsonArray *array, *nested;
+ gchar *data;
+ gsize len;
+
+ root = json_node_new (JSON_NODE_ARRAY);
+ array = json_array_sized_new (3);
+
+ json_array_add_boolean_element (array, TRUE);
+
+ {
+ nested = json_array_sized_new (2);
+
+ json_array_add_boolean_element (nested, FALSE);
+ json_array_add_null_element (nested);
+
+ json_array_add_array_element (array, nested);
+ }
+
+ json_array_add_int_element (array, 42);
+
+ json_node_take_array (root, array);
+ json_generator_set_root (generator, root);
+
+ g_object_set (generator, "pretty", FALSE, NULL);
+ data = json_generator_to_data (generator, &len);
+
+ g_assert_cmpint (len, ==, strlen (nested_array));
+ g_assert_cmpstr (data, ==, nested_array);
+
+ g_free (data);
+ json_node_free (root);
+ g_object_unref (generator);
+}
+
+static void
+test_simple_object (void)
+{
+ JsonGenerator *generator = json_generator_new ();
+ JsonNode *root;
+ JsonObject *object;
+ gchar *data;
+ gsize len;
+
+ root = json_node_new (JSON_NODE_OBJECT);
+ object = json_object_new ();
+
+ json_object_set_boolean_member (object, "Bool1", TRUE);
+ json_object_set_boolean_member (object, "Bool2", FALSE);
+ json_object_set_null_member (object, "Null");
+ json_object_set_int_member (object, "Int", 42);
+ json_object_set_string_member (object, "String", "foo");
+
+ json_node_take_object (root, object);
+ json_generator_set_root (generator, root);
+
+ g_object_set (generator, "pretty", FALSE, NULL);
+ data = json_generator_to_data (generator, &len);
+
+ if (g_test_verbose ())
+ g_print ("checking simple object `%s' (expected: %s)\n",
+ data,
+ simple_object);
+
+ g_assert_cmpint (len, ==, strlen (simple_object));
+ g_assert_cmpstr (data, ==, simple_object);
+
+ g_free (data);
+ json_node_free (root);
+ g_object_unref (generator);
+}
+
+static void
+test_nested_object (void)
+{
+ JsonGenerator *generator = json_generator_new ();
+ JsonNode *root;
+ JsonObject *object, *nested;
+ JsonArray *array;
+ gchar *data;
+ gsize len;
+
+ root = json_node_new (JSON_NODE_OBJECT);
+ object = json_object_new ();
+
+ json_object_set_int_member (object, "Width", 800);
+ json_object_set_int_member (object, "Height", 600);
+ json_object_set_string_member (object, "Title", "View from 15th Floor");
+
+ {
+ nested = json_object_new ();
+
+ json_object_set_string_member (nested, "Url", "http://www.example.com/image/481989943");
+ json_object_set_int_member (nested, "Height", 125);
+ json_object_set_string_member (nested, "Width", "100");
+
+ json_object_set_object_member (object, "Thumbnail", nested);
+ }
+
+ {
+ array = json_array_new ();
+
+ json_array_add_int_element (array, 116);
+ json_array_add_int_element (array, 943);
+ json_array_add_int_element (array, 234);
+ json_array_add_int_element (array, 38793);
+
+ json_object_set_array_member (object, "IDs", array);
+ }
+
+ nested = json_object_new ();
+ json_object_set_object_member (nested, "Image", object);
+
+ json_node_take_object (root, nested);
+ json_generator_set_root (generator, root);
+
+ g_object_set (generator, "pretty", FALSE, NULL);
+ data = json_generator_to_data (generator, &len);
+
+ if (g_test_verbose ())
+ g_print ("checking nested object `%s' (expected: %s)\n",
+ data,
+ nested_object);
+
+ g_assert_cmpint (len, ==, strlen (nested_object));
+ g_assert_cmpstr (data, ==, nested_object);
+
+ g_free (data);
+ json_node_free (root);
+ g_object_unref (generator);
+}
+
+static void
+test_decimal_separator (void)
+{
+ JsonNode *node = json_node_new (JSON_NODE_VALUE);
+ JsonGenerator *generator = json_generator_new ();
+ gchar *old_locale;
+ gint i;
+
+ json_node_set_double (node, 3.14);
+
+ json_generator_set_root (generator, node);
+
+ old_locale = setlocale (LC_NUMERIC, NULL);
+
+ for (i = 0; i < G_N_ELEMENTS (decimal_separator); i++)
+ {
+ gchar *str, *expected;
+
+ setlocale (LC_NUMERIC, decimal_separator[i].lang);
+
+ str = json_generator_to_data (generator, NULL);
+
+ if (g_test_verbose ())
+ g_print ("%s: value: %.2f - string: '%s'\n",
+ G_STRFUNC,
+ json_node_get_double (node),
+ str);
+
+ g_assert (str != NULL);
+ expected = strstr (str, decimal_separator[i].sep);
+ if (decimal_separator[i].matches)
+ g_assert (expected != NULL);
+ else
+ g_assert (expected == NULL);
+
+ g_free (str);
+ }
+
+ setlocale (LC_NUMERIC, old_locale);
+
+ g_object_unref (generator);
+ json_node_free (node);
+}
+
+static void
+test_pretty (void)
+{
+ JsonParser *parser = json_parser_new ();
+ JsonGenerator *generator = json_generator_new ();
+ int i;
+
+ json_generator_set_pretty (generator, TRUE);
+ json_generator_set_indent (generator, 1);
+ json_generator_set_indent_char (generator, '\t');
+
+ for (i = 0; i < n_pretty_examples; i++)
+ {
+ JsonNode *root;
+ char *data;
+ gsize len;
+
+ g_assert (json_parser_load_from_data (parser, pretty_examples[i], -1, NULL));
+
+ root = json_parser_get_root (parser);
+ g_assert (root != NULL);
+
+ json_generator_set_root (generator, root);
+
+ data = json_generator_to_data (generator, &len);
+
+ if (g_test_verbose ())
+ g_print ("** checking pretty printing:\n%s\n** expected:\n%s\n",
+ data,
+ pretty_examples[i]);
+
+ g_assert_cmpint (len, ==, strlen (pretty_examples[i]));
+ g_assert_cmpstr (data, ==, pretty_examples[i]);
+
+ g_free (data);
+ }
+
+ g_object_unref (generator);
+ g_object_unref (parser);
+}
+
+typedef struct {
+ const gchar *str;
+ const gchar *expect;
+} FixtureString;
+
+static const FixtureString string_fixtures[] = {
+ { "abc", "\"abc\"" },
+ { "a\x7fxc", "\"a\\u007fxc\"" },
+ { "a\033xc", "\"a\\u001bxc\"" },
+ { "a\nxc", "\"a\\nxc\"" },
+ { "a\\xc", "\"a\\\\xc\"" },
+ { "Barney B\303\244r", "\"Barney B\303\244r\"" },
+};
+
+static void
+test_string_encode (gconstpointer data)
+{
+ const FixtureString *fixture = data;
+ JsonGenerator *generator = json_generator_new ();
+ JsonNode *node;
+ gsize length;
+ gchar *output;
+
+ node = json_node_init_string (json_node_alloc (), fixture->str);\
+ json_generator_set_root (generator, node);
+
+ output = json_generator_to_data (generator, &length);
+ g_assert_cmpstr (output, ==, fixture->expect);
+ g_assert_cmpuint (length, ==, strlen (fixture->expect));
+ g_free (output);
+ json_node_free (node);
+
+ g_object_unref (generator);
+}
+int
+main (int argc,
+ char *argv[])
+{
+ gchar *escaped;
+ gchar *name;
+ gint i;
+
+ g_test_init (&argc, &argv, NULL);
+
+ g_test_add_func ("/generator/empty-array", test_empty_array);
+ g_test_add_func ("/generator/empty-object", test_empty_object);
+ g_test_add_func ("/generator/simple-array", test_simple_array);
+ g_test_add_func ("/generator/nested-array", test_nested_array);
+ g_test_add_func ("/generator/simple-object", test_simple_object);
+ g_test_add_func ("/generator/nested-object", test_nested_object);
+ g_test_add_func ("/generator/decimal-separator", test_decimal_separator);
+ g_test_add_func ("/generator/pretty", test_pretty);
+
+ for (i = 0; i < G_N_ELEMENTS (string_fixtures); i++)
+ {
+ escaped = g_strescape (string_fixtures[i].str, NULL);
+ name = g_strdup_printf ("/generator/string/%s", escaped);
+ g_test_add_data_func (name, string_fixtures + i, test_string_encode);
+ g_free (escaped);
+ g_free (name);
+ }
+
+ return g_test_run ();
+}
--- /dev/null
+#include <glib.h>
+#include <json-glib/json-glib.h>
+#include <string.h>
+
+typedef struct
+{
+ gchar *test_name;
+ gchar *signature;
+ gchar *variant_data;
+ gchar *json_data;
+} TestCase;
+
+/* each entry in this list spawns to a GVariant-to-JSON and
+ JSON-to-GVariant test */
+static const TestCase two_way_test_cases[] =
+ {
+ /* boolean */
+ { "/boolean", "(b)", "(true,)", "[true]" },
+
+ /* byte */
+ { "/byte", "(y)", "(byte 0xff,)", "[255]" },
+
+ /* int16 */
+ { "/int16", "(n)", "(int16 -12345,)", "[-12345]" },
+
+ /* uint16 */
+ { "/uint16", "(q)", "(uint16 40001,)", "[40001]" },
+
+ /* int32 */
+ { "/int32", "(i)", "(-7654321,)", "[-7654321]" },
+
+ /* uint32 */
+ { "/uint32", "(u)", "(uint32 12345678,)", "[12345678]" },
+
+ /* int64 */
+ { "/int64", "(x)", "(int64 -666999666999,)", "[-666999666999]" },
+
+ /* uint64 */
+ { "/uint64", "(t)", "(uint64 1999999999999999,)", "[1999999999999999]" },
+
+ /* handle */
+ { "/handle", "(h)", "(handle 1,)", "[1]" },
+
+ /* double */
+ { "/double", "(d)", "(1.23,)", "[1.23]" },
+
+ /* string */
+ { "/string", "(s)", "('hello world!',)", "[\"hello world!\"]" },
+
+ /* object-path */
+ { "/object-path", "(o)", "(objectpath '/org/gtk/json_glib',)", "[\"/org/gtk/json_glib\"]" },
+
+ /* signature */
+ { "/signature", "(g)", "(signature '(asna{sv}i)',)", "[\"(asna{sv}i)\"]" },
+
+ /* maybe - null string */
+ { "/maybe/simple/null", "(ms)", "(@ms nothing,)", "[null]" },
+
+ /* maybe - simple string */
+ { "/maybe/simple/string", "(ms)", "(@ms 'maybe string',)", "[\"maybe string\"]" },
+
+ /* maybe - null container */
+ { "/maybe/container/null", "(m(sn))", "(@m(sn) nothing,)", "[null]" },
+
+ /* maybe - tuple container */
+ { "/maybe/container/tuple", "(m(sn))", "(@m(sn) ('foo', 0),)", "[[\"foo\",0]]" },
+
+ /* maybe - variant boolean */
+ { "/maybe/variant/boolean", "(mv)", "(@mv <true>,)", "[true]" },
+
+ /* empty array */
+ { "/array/empty", "as", "@as []", "[]" },
+
+ /* array of bytes */
+ { "/array/byte", "ay", "[byte 0x01, 0x0a, 0x03, 0xff]", "[1,10,3,255]" },
+
+ /* array of strings */
+ { "/array/string", "as", "['a', 'b', 'ab', 'ba']", "[\"a\",\"b\",\"ab\",\"ba\"]" },
+
+ /* array of array of int32 */
+ { "/array/array/int32", "aai", "[[1, 2], [3, 4], [5, 6]]", "[[1,2],[3,4],[5,6]]" },
+
+ /* array of variants */
+ { "/array/variant", "av", "[<true>, <int64 1>, <'oops'>, <int64 -2>, <0.5>]", "[true,1,\"oops\",-2,0.5]" },
+
+ /* tuple */
+ { "/tuple", "(bynqiuxthds)",
+ "(false, byte 0x00, int16 -1, uint16 1, -2, uint32 2, int64 429496729, uint64 3, handle 16, 2.48, 'end')",
+ "[false,0,-1,1,-2,2,429496729,3,16,2.48,\"end\"]" },
+
+ /* empty dictionary */
+ { "/dictionary/empty", "a{sv}", "@a{sv} {}", "{}" },
+
+ /* single dictionary entry */
+ { "/dictionary/single-entry", "{ss}", "{'hello', 'world'}", "{\"hello\":\"world\"}" },
+
+ /* dictionary - string : int32 */
+ { "/dictionary/string-int32", "a{si}", "{'foo': 1, 'bar': 2}", "{\"foo\":1,\"bar\":2}" },
+
+ /* dictionary - string : variant */
+ { "/dictionary/string-variant", "a{sv}", "{'str': <'hi!'>, 'bool': <true>}", "{\"str\":\"hi!\",\"bool\":true}" },
+
+ /* dictionary - int64 : variant */
+ { "/dictionary/int64-variant", "a{xv}",
+ "{int64 -5: <'minus five'>, 10: <'ten'>}", "{\"-5\":\"minus five\",\"10\":\"ten\"}" },
+
+ /* dictionary - uint64 : variant */
+ { "/dictionary/uint64-boolean", "a{tb}",
+ "{uint64 999888777666: true, 0: false}", "{\"999888777666\":true,\"0\":false}" },
+
+ /* dictionary - boolean : variant */
+ { "/dictionary/boolean-variant", "a{by}", "{true: byte 0x01, false: 0x00}", "{\"true\":1,\"false\":0}" },
+
+ /* dictionary - double : string */
+ { "/dictionary/double-string", "a{ds}", "{1.0: 'one point zero'}", "{\"1.000000\":\"one point zero\"}" },
+
+ /* variant - string */
+ { "/variant/string", "(v)", "(<'string within variant'>,)", "[\"string within variant\"]" },
+
+ /* variant - maybe null */
+ { "/variant/maybe/null", "(v)", "(<@mv nothing>,)", "[null]" },
+
+ /* variant - dictionary */
+ { "/variant/dictionary", "v", "<{'foo': <'bar'>, 'hi': <int64 1024>}>", "{\"foo\":\"bar\",\"hi\":1024}" },
+
+ /* variant - variant - array */
+ { "/variant/variant/array", "v", "<[<'any'>, <'thing'>, <int64 0>, <int64 -1>]>", "[\"any\",\"thing\",0,-1]" },
+
+ /* deep-nesting */
+ { "/deep-nesting",
+ "a(a(a(a(a(a(a(a(a(a(s))))))))))",
+ "[([([([([([([([([([('sorprise',)],)],)],)],)],)],)],)],)],)]",
+ "[[[[[[[[[[[[[[[[[[[[\"sorprise\"]]]]]]]]]]]]]]]]]]]]" },
+
+ /* mixed1 */
+ { "/mixed1",
+ "a{s(syba(od))}",
+ "{'foo': ('bar', byte 0x64, true, [(objectpath '/baz', 1.3), ('/cat', -2.5)])}",
+ "{\"foo\":[\"bar\",100,true,[[\"/baz\",1.3],[\"/cat\",-2.5]]]}" },
+
+ /* mixed2 */
+ { "/mixed2",
+ "(a{by}amsvmaba{qm(sg)})",
+ "({true: byte 0x01, false: 0x00}, [@ms 'do', nothing, 'did'], <@av []>, @mab nothing, {uint16 10000: @m(sg) ('yes', 'august'), 0: nothing})",
+ "[{\"true\":1,\"false\":0},[\"do\",null,\"did\"],[],null,{\"10000\":[\"yes\",\"august\"],\"0\":null}]" },
+ };
+
+static const TestCase json_to_gvariant_test_cases[] =
+ {
+ { "/string-to-boolean", "(b)", "(true,)", "[\"true\"]" },
+ { "/string-to-byte", "(y)", "(byte 0xff,)", "[\"255\"]" },
+ { "/string-to-int16", "(n)", "(int16 -12345,)", "[\"-12345\"]" },
+ { "/string-to-uint16", "(q)", "(uint16 40001,)", "[\"40001\"]" },
+ { "/string-to-int32", "(i)", "(-7654321,)", "[\"-7654321\"]" },
+ { "/string-to-int64", "(x)", "(int64 -666999666999,)", "[\"-666999666999\"]" },
+ { "/string-to-uint64", "(t)", "(uint64 1999999999999999,)", "[\"1999999999999999\"]" },
+ { "/string-to-double", "(d)", "(1.23,)", "[\"1.23\"]" },
+ };
+
+static void
+test_gvariant_to_json (gconstpointer test_data)
+{
+ TestCase *test_case = (TestCase *) test_data;
+ GVariant *variant;
+ gchar *json_data;
+ gsize len;
+
+ variant = g_variant_parse (G_VARIANT_TYPE (test_case->signature),
+ test_case->variant_data,
+ NULL,
+ NULL,
+ NULL);
+
+ json_data = json_gvariant_serialize_data (variant, &len);
+ g_assert (json_data != NULL);
+
+ g_assert_cmpstr (test_case->json_data, ==, json_data);
+
+ g_free (json_data);
+ g_variant_unref (variant);
+}
+
+static void
+test_json_to_gvariant (gconstpointer test_data)
+{
+ TestCase *test_case = (TestCase *) test_data;
+ GVariant *variant;
+ gchar *variant_data;
+ GError *error = NULL;
+
+ variant = json_gvariant_deserialize_data (test_case->json_data,
+ -1,
+ test_case->signature,
+ &error);
+
+ if (variant == NULL)
+ {
+ g_assert_no_error (error);
+ g_error_free (error);
+ }
+ else
+ {
+ variant_data = g_variant_print (variant, TRUE);
+
+ g_assert_cmpstr (test_case->variant_data, ==, variant_data);
+
+ g_free (variant_data);
+ g_variant_unref (variant);
+ }
+}
+
+gint
+main (gint argc, gchar *argv[])
+{
+ gint i;
+ TestCase test_case;
+ gchar *test_name;
+
+ g_test_init (&argc, &argv, NULL);
+
+ /* GVariant to JSON */
+ for (i = 0; i < G_N_ELEMENTS (two_way_test_cases); i++)
+ {
+ test_case = two_way_test_cases[i];
+ test_name = g_strdup_printf ("/gvariant/to-json/%s", test_case.test_name);
+
+ g_test_add_data_func (test_name, &two_way_test_cases[i], test_gvariant_to_json);
+
+ g_free (test_name);
+ }
+
+ /* JSON to GVariant */
+ for (i = 0; i < G_N_ELEMENTS (two_way_test_cases); i++)
+ {
+ test_case = two_way_test_cases[i];
+ test_name = g_strdup_printf ("/gvariant/from-json/%s", test_case.test_name);
+
+ g_test_add_data_func (test_name, &two_way_test_cases[i], test_json_to_gvariant);
+
+ g_free (test_name);
+ }
+
+ /* JSON to GVariant one way tests */
+ for (i = 0; i < G_N_ELEMENTS (json_to_gvariant_test_cases); i++)
+ {
+ test_case = json_to_gvariant_test_cases[i];
+ test_name = g_strdup_printf ("/gvariant/from-json/%s", test_case.test_name);
+
+ g_test_add_data_func (test_name, &json_to_gvariant_test_cases[i], test_json_to_gvariant);
+
+ g_free (test_name);
+ }
+
+ return g_test_run ();
+}
--- /dev/null
+#include "config.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <glib.h>
+
+#include <json-glib/json-glib.h>
+
+static void
+test_invalid_bareword (gconstpointer user_data)
+{
+ const char *json = user_data;
+ GError *error = NULL;
+ JsonParser *parser;
+ gboolean res;
+
+ parser = json_parser_new ();
+ g_assert (JSON_IS_PARSER (parser));
+
+ if (g_test_verbose ())
+ g_print ("invalid data: '%s'...", json);
+
+ res = json_parser_load_from_data (parser, json, -1, &error);
+
+ g_assert (!res);
+ g_assert_error (error, JSON_PARSER_ERROR, JSON_PARSER_ERROR_INVALID_BAREWORD);
+
+ if (g_test_verbose ())
+ g_print ("expected error: %s\n", error->message);
+
+ g_clear_error (&error);
+
+ g_object_unref (parser);
+}
+
+static void
+test_invalid_assignment (gconstpointer user_data)
+{
+ const char *json = user_data;
+ GError *error = NULL;
+ JsonParser *parser;
+ gboolean res;
+
+ parser = json_parser_new ();
+ g_assert (JSON_IS_PARSER (parser));
+
+ if (g_test_verbose ())
+ g_print ("invalid data: '%s'...", json);
+
+ res = json_parser_load_from_data (parser, json, -1, &error);
+
+ g_assert (!res);
+ g_assert (error != NULL);
+
+ if (g_test_verbose ())
+ g_print ("expected error: %s\n", error->message);
+
+ g_clear_error (&error);
+
+ g_object_unref (parser);
+}
+
+static void
+test_invalid_value (gconstpointer user_data)
+{
+ const char *json = user_data;
+ GError *error = NULL;
+ JsonParser *parser;
+ gboolean res;
+
+ parser = json_parser_new ();
+ g_assert (JSON_IS_PARSER (parser));
+
+ if (g_test_verbose ())
+ g_print ("invalid data: '%s'...", json);
+
+ res = json_parser_load_from_data (parser, json, -1, &error);
+
+ g_assert (!res);
+ g_assert (error != NULL);
+
+ if (g_test_verbose ())
+ g_print ("expected error: %s\n", error->message);
+
+ g_clear_error (&error);
+
+ g_object_unref (parser);
+}
+
+static void
+test_invalid_array (gconstpointer user_data)
+{
+ const char *json = user_data;
+ GError *error = NULL;
+ JsonParser *parser;
+ gboolean res;
+
+ parser = json_parser_new ();
+ g_assert (JSON_IS_PARSER (parser));
+
+ if (g_test_verbose ())
+ g_print ("invalid data: '%s'...", json);
+
+ res = json_parser_load_from_data (parser, json, -1, &error);
+
+ g_assert (!res);
+ g_assert (error != NULL);
+
+ if (g_test_verbose ())
+ g_print ("expected error: %s\n", error->message);
+
+ g_clear_error (&error);
+
+ g_object_unref (parser);
+}
+
+static void
+test_invalid_object (gconstpointer user_data)
+{
+ const char *json = user_data;
+ GError *error = NULL;
+ JsonParser *parser;
+ gboolean res;
+
+ parser = json_parser_new ();
+ g_assert (JSON_IS_PARSER (parser));
+
+ if (g_test_verbose ())
+ g_print ("invalid data: '%s'...", json);
+
+ res = json_parser_load_from_data (parser, json, -1, &error);
+
+ g_assert (!res);
+ g_assert (error != NULL);
+
+ if (g_test_verbose ())
+ g_print ("expected error: %s\n", error->message);
+
+ g_clear_error (&error);
+
+ g_object_unref (parser);
+}
+
+static void
+test_trailing_comma (gconstpointer user_data)
+{
+ const char *json = user_data;
+ GError *error = NULL;
+ JsonParser *parser;
+ gboolean res;
+
+ parser = json_parser_new ();
+ g_assert (JSON_IS_PARSER (parser));
+
+ if (g_test_verbose ())
+ g_print ("invalid data: '%s'...", json);
+
+ res = json_parser_load_from_data (parser, json, -1, &error);
+
+ g_assert (!res);
+ g_assert_error (error, JSON_PARSER_ERROR, JSON_PARSER_ERROR_TRAILING_COMMA);
+
+ if (g_test_verbose ())
+ g_print ("expected error: %s\n", error->message);
+
+ g_clear_error (&error);
+
+ g_object_unref (parser);
+}
+
+static const struct
+{
+ const char *path;
+ const char *json;
+ gpointer func;
+} test_invalid[] = {
+ /* bareword */
+ { "bareword-1", "rainbows", test_invalid_bareword },
+ { "bareword-2", "[ unicorns ]", test_invalid_bareword },
+ { "bareword-3", "{ \"foo\" : ponies }", test_invalid_bareword },
+ { "bareword-4", "[ 3, 2, 1, lift_off ]", test_invalid_bareword },
+ { "bareword-5", "{ foo : 42 }", test_invalid_bareword },
+
+ /* values */
+ { "values-1", "[ -false ]", test_invalid_value },
+
+ /* assignment */
+ { "assignment-1", "var foo", test_invalid_assignment },
+ { "assignment-2", "var foo = no", test_invalid_assignment },
+ { "assignment-3", "var = true", test_invalid_assignment },
+ { "assignment-4", "var blah = 42:", test_invalid_assignment },
+ { "assignment-5", "let foo = true;", test_invalid_assignment },
+
+ /* arrays */
+ { "array-1", "[ true, false", test_invalid_array },
+ { "array-2", "[ true }", test_invalid_array },
+ { "array-3", "[ \"foo\" : 42 ]", test_invalid_array },
+
+ /* objects */
+ { "object-1", "{ foo : 42 }", test_invalid_object },
+ { "object-2", "{ 42 : \"foo\" }", test_invalid_object },
+ { "object-3", "{ \"foo\", 42 }", test_invalid_object },
+ { "object-4", "{ \"foo\" : 42 ]", test_invalid_object },
+ { "object-5", "{ \"blah\" }", test_invalid_object },
+ { "object-6", "{ \"a\" : 0 \"b\" : 1 }", test_invalid_object },
+ { "object-7", "{ \"\" : false }", test_invalid_object },
+
+ /* trailing commas */
+ { "trailing-comma-1", "[ true, ]", test_trailing_comma },
+ { "trailing-comma-2", "{ \"foo\" : 42, }", test_trailing_comma },
+};
+
+static guint n_test_invalid = G_N_ELEMENTS (test_invalid);
+
+int
+main (int argc,
+ char *argv[])
+{
+ int i;
+
+ g_test_init (&argc, &argv, NULL);
+
+ for (i = 0; i < n_test_invalid; i++)
+ {
+ char *test_path = g_strconcat ("/invalid/json/", test_invalid[i].path, NULL);
+
+ g_test_add_data_func_full (test_path,
+ (gpointer) test_invalid[i].json,
+ test_invalid[i].func,
+ NULL);
+
+ g_free (test_path);
+ }
+
+ return g_test_run ();
+}
+++ /dev/null
-
-#include <json-glib/json-glib.h>
-#include <string.h>
-
-#if !GLIB_CHECK_VERSION (2, 31, 0)
-#include <glib/gtestutils.h>
-#else
-#include <glib.h>
-#endif
-
-
-static void
-test_copy_null (void)
-{
- JsonNode *node = json_node_new (JSON_NODE_NULL);
- JsonNode *copy = json_node_copy (node);
-
- g_assert_cmpint (json_node_get_node_type (node), ==, json_node_get_node_type (copy));
- g_assert_cmpint (json_node_get_value_type (node), ==, json_node_get_value_type (copy));
- g_assert_cmpstr (json_node_type_name (node), ==, json_node_type_name (copy));
-
- json_node_free (copy);
- json_node_free (node);
-}
-
-static void
-test_copy_value (void)
-{
- JsonNode *node = json_node_new (JSON_NODE_VALUE);
- JsonNode *copy;
-
- json_node_set_string (node, "hello");
-
- copy = json_node_copy (node);
- g_assert_cmpint (json_node_get_node_type (node), ==, json_node_get_node_type (copy));
- g_assert_cmpstr (json_node_type_name (node), ==, json_node_type_name (copy));
- g_assert_cmpstr (json_node_get_string (node), ==, json_node_get_string (copy));
-
- json_node_free (copy);
- json_node_free (node);
-}
-
-static void
-test_copy_object (void)
-{
- JsonObject *obj = json_object_new ();
- JsonNode *node = json_node_new (JSON_NODE_OBJECT);
- JsonNode *value = json_node_new (JSON_NODE_VALUE);
- JsonNode *copy;
-
- json_node_set_int (value, 42);
- json_object_set_member (obj, "answer", value);
-
- json_node_take_object (node, obj);
-
- copy = json_node_copy (node);
-
- g_assert_cmpint (json_node_get_node_type (node), ==, json_node_get_node_type (copy));
- g_assert (json_node_get_object (node) == json_node_get_object (copy));
-
- json_node_free (copy);
- json_node_free (node);
-}
-
-static void
-test_null (void)
-{
- JsonNode *node = json_node_new (JSON_NODE_NULL);
-
- g_assert (JSON_NODE_HOLDS_NULL (node));
- g_assert_cmpint (json_node_get_value_type (node), ==, G_TYPE_INVALID);
- g_assert_cmpstr (json_node_type_name (node), ==, "NULL");
-
- json_node_free (node);
-}
-
-static void
-test_value (void)
-{
- JsonNode *node = json_node_new (JSON_NODE_VALUE);
- GValue value = { 0, };
- GValue check = { 0, };
-
- g_assert_cmpint (JSON_NODE_TYPE (node), ==, JSON_NODE_VALUE);
-
- g_value_init (&value, G_TYPE_INT64);
- g_value_set_int64 (&value, 42);
-
- g_assert_cmpint (G_VALUE_TYPE (&value), ==, G_TYPE_INT64);
- g_assert_cmpint (g_value_get_int64 (&value), ==, 42);
-
- json_node_set_value (node, &value);
- json_node_get_value (node, &check);
-
- g_assert_cmpint (G_VALUE_TYPE (&value), ==, G_VALUE_TYPE (&check));
- g_assert_cmpint (g_value_get_int64 (&value), ==, g_value_get_int64 (&check));
- g_assert_cmpint (G_VALUE_TYPE (&check), ==, G_TYPE_INT64);
- g_assert_cmpint (g_value_get_int64 (&check), ==, 42);
-
- g_value_unset (&value);
- g_value_unset (&check);
- json_node_free (node);
-}
-
-int
-main (int argc,
- char *argv[])
-{
- g_type_init ();
- g_test_init (&argc, &argv, NULL);
-
- g_test_add_func ("/nodes/null-node", test_null);
- g_test_add_func ("/nodes/copy-null", test_copy_null);
- g_test_add_func ("/nodes/copy-value", test_copy_value);
- g_test_add_func ("/nodes/copy-object", test_copy_object);
- g_test_add_func ("/nodes/value", test_value);
-
- return g_test_run ();
-}
--- /dev/null
+#include <glib.h>
+#include <json-glib/json-glib.h>
+#include <string.h>
+
+static void
+test_init_int (void)
+{
+ JsonNode *node = json_node_new (JSON_NODE_VALUE);
+
+ json_node_set_int (node, 42);
+ g_assert_cmpint (json_node_get_int (node), ==, 42);
+
+ json_node_free (node);
+}
+
+static void
+test_init_double (void)
+{
+ JsonNode *node = json_node_new (JSON_NODE_VALUE);
+
+ json_node_set_double (node, 3.14159);
+ g_assert_cmpfloat (json_node_get_double (node), ==, 3.14159);
+
+ json_node_free (node);
+}
+
+static void
+test_init_boolean (void)
+{
+ JsonNode *node = json_node_new (JSON_NODE_VALUE);
+
+ json_node_set_boolean (node, TRUE);
+ g_assert (json_node_get_boolean (node));
+
+ json_node_free (node);
+}
+
+static void
+test_init_string (void)
+{
+ JsonNode *node = json_node_new (JSON_NODE_VALUE);
+
+ json_node_set_string (node, "Hello, World");
+ g_assert_cmpstr (json_node_get_string (node), ==, "Hello, World");
+
+ json_node_free (node);
+}
+
+static void
+test_copy_null (void)
+{
+ JsonNode *node = json_node_new (JSON_NODE_NULL);
+ JsonNode *copy = json_node_copy (node);
+
+ g_assert_cmpint (json_node_get_node_type (node), ==, json_node_get_node_type (copy));
+ g_assert_cmpint (json_node_get_value_type (node), ==, json_node_get_value_type (copy));
+ g_assert_cmpstr (json_node_type_name (node), ==, json_node_type_name (copy));
+
+ json_node_free (copy);
+ json_node_free (node);
+}
+
+static void
+test_copy_value (void)
+{
+ JsonNode *node = json_node_new (JSON_NODE_VALUE);
+ JsonNode *copy;
+
+ json_node_set_string (node, "hello");
+
+ copy = json_node_copy (node);
+ g_assert_cmpint (json_node_get_node_type (node), ==, json_node_get_node_type (copy));
+ g_assert_cmpstr (json_node_type_name (node), ==, json_node_type_name (copy));
+ g_assert_cmpstr (json_node_get_string (node), ==, json_node_get_string (copy));
+
+ json_node_free (copy);
+ json_node_free (node);
+}
+
+static void
+test_copy_object (void)
+{
+ JsonObject *obj = json_object_new ();
+ JsonNode *node = json_node_new (JSON_NODE_OBJECT);
+ JsonNode *value = json_node_new (JSON_NODE_VALUE);
+ JsonNode *copy;
+
+ json_node_set_int (value, 42);
+ json_object_set_member (obj, "answer", value);
+
+ json_node_take_object (node, obj);
+
+ copy = json_node_copy (node);
+
+ g_assert_cmpint (json_node_get_node_type (node), ==, json_node_get_node_type (copy));
+ g_assert (json_node_get_object (node) == json_node_get_object (copy));
+
+ json_node_free (copy);
+ json_node_free (node);
+}
+
+static void
+test_null (void)
+{
+ JsonNode *node = json_node_new (JSON_NODE_NULL);
+
+ g_assert (JSON_NODE_HOLDS_NULL (node));
+ g_assert (json_node_is_null (node));
+ g_assert_cmpint (json_node_get_value_type (node), ==, G_TYPE_INVALID);
+ g_assert_cmpstr (json_node_type_name (node), ==, "NULL");
+
+ json_node_free (node);
+}
+
+static void
+test_get_int (void)
+{
+ JsonNode *node = json_node_new (JSON_NODE_VALUE);
+
+ json_node_set_int (node, 0);
+ g_assert_cmpint (json_node_get_int (node), ==, 0);
+ g_assert_cmpfloat (json_node_get_double (node), ==, 0.0);
+ g_assert (!json_node_get_boolean (node));
+ g_assert (!json_node_is_null (node));
+
+ json_node_set_int (node, 42);
+ g_assert_cmpint (json_node_get_int (node), ==, 42);
+ g_assert_cmpfloat (json_node_get_double (node), ==, 42.0);
+ g_assert (json_node_get_boolean (node));
+ g_assert (!json_node_is_null (node));
+
+ json_node_free (node);
+}
+
+static void
+test_get_double (void)
+{
+ JsonNode *node = json_node_new (JSON_NODE_VALUE);
+
+ json_node_set_double (node, 3.14);
+ g_assert_cmpfloat (json_node_get_double (node), ==, 3.14);
+ g_assert_cmpint (json_node_get_int (node), ==, 3);
+ g_assert (json_node_get_boolean (node));
+
+ json_node_free (node);
+}
+
+static void
+test_gvalue (void)
+{
+ JsonNode *node = json_node_new (JSON_NODE_VALUE);
+ GValue value = { 0, };
+ GValue check = { 0, };
+
+ g_assert_cmpint (JSON_NODE_TYPE (node), ==, JSON_NODE_VALUE);
+
+ g_value_init (&value, G_TYPE_INT64);
+ g_value_set_int64 (&value, 42);
+
+ g_assert_cmpint (G_VALUE_TYPE (&value), ==, G_TYPE_INT64);
+ g_assert_cmpint (g_value_get_int64 (&value), ==, 42);
+
+ json_node_set_value (node, &value);
+ json_node_get_value (node, &check);
+
+ g_assert_cmpint (G_VALUE_TYPE (&value), ==, G_VALUE_TYPE (&check));
+ g_assert_cmpint (g_value_get_int64 (&value), ==, g_value_get_int64 (&check));
+ g_assert_cmpint (G_VALUE_TYPE (&check), ==, G_TYPE_INT64);
+ g_assert_cmpint (g_value_get_int64 (&check), ==, 42);
+
+ g_value_unset (&value);
+ g_value_unset (&check);
+
+ g_value_init (&value, G_TYPE_STRING);
+ g_value_set_string (&value, "Hello, World!");
+
+ g_assert_cmpint (G_VALUE_TYPE (&value), ==, G_TYPE_STRING);
+ g_assert_cmpstr (g_value_get_string (&value), ==, "Hello, World!");
+
+ json_node_set_value (node, &value);
+ json_node_get_value (node, &check);
+
+ g_assert_cmpint (G_VALUE_TYPE (&value), ==, G_VALUE_TYPE (&check));
+ g_assert_cmpstr (g_value_get_string (&value), ==, g_value_get_string (&check));
+ g_assert_cmpint (G_VALUE_TYPE (&check), ==, G_TYPE_STRING);
+ g_assert_cmpstr (g_value_get_string (&check), ==, "Hello, World!");
+
+ g_value_unset (&value);
+ g_value_unset (&check);
+ json_node_free (node);
+}
+
+static void
+test_gvalue_autopromotion (void)
+{
+ JsonNode *node = json_node_new (JSON_NODE_VALUE);
+ GValue value = { 0, };
+ GValue check = { 0, };
+
+ g_assert_cmpint (JSON_NODE_TYPE (node), ==, JSON_NODE_VALUE);
+
+ if (g_test_verbose ())
+ g_print ("Autopromotion of int to int64\n");
+
+ g_value_init (&value, G_TYPE_INT);
+ g_value_set_int (&value, 42);
+
+ json_node_set_value (node, &value);
+ json_node_get_value (node, &check);
+
+ if (g_test_verbose ())
+ g_print ("Expecting an gint64, got a %s\n", g_type_name (G_VALUE_TYPE (&check)));
+
+ g_assert_cmpint (G_VALUE_TYPE (&check), ==, G_TYPE_INT64);
+ g_assert_cmpint (g_value_get_int64 (&check), ==, 42);
+ g_assert_cmpint (G_VALUE_TYPE (&value), !=, G_VALUE_TYPE (&check));
+ g_assert_cmpint ((gint64) g_value_get_int (&value), ==, g_value_get_int64 (&check));
+
+ g_value_unset (&value);
+ g_value_unset (&check);
+
+ if (g_test_verbose ())
+ g_print ("Autopromotion of float to double\n");
+
+ g_value_init (&value, G_TYPE_FLOAT);
+ g_value_set_float (&value, 3.14159f);
+
+ json_node_set_value (node, &value);
+ json_node_get_value (node, &check);
+
+ if (g_test_verbose ())
+ g_print ("Expecting a gdouble, got a %s\n", g_type_name (G_VALUE_TYPE (&check)));
+
+ g_assert_cmpint (G_VALUE_TYPE (&check), ==, G_TYPE_DOUBLE);
+ g_assert_cmpfloat ((float) g_value_get_double (&check), ==, 3.14159f);
+ g_assert_cmpint (G_VALUE_TYPE (&value), !=, G_VALUE_TYPE (&check));
+ g_assert_cmpfloat ((gdouble) g_value_get_float (&value), ==, g_value_get_double (&check));
+
+ g_value_unset (&value);
+ g_value_unset (&check);
+
+ json_node_free (node);
+}
+
+int
+main (int argc,
+ char *argv[])
+{
+ g_test_init (&argc, &argv, NULL);
+
+ g_test_add_func ("/nodes/init/int", test_init_int);
+ g_test_add_func ("/nodes/init/double", test_init_double);
+ g_test_add_func ("/nodes/init/boolean", test_init_boolean);
+ g_test_add_func ("/nodes/init/string", test_init_string);
+ g_test_add_func ("/nodes/init/null", test_null);
+ g_test_add_func ("/nodes/copy/null", test_copy_null);
+ g_test_add_func ("/nodes/copy/value", test_copy_value);
+ g_test_add_func ("/nodes/copy/object", test_copy_object);
+ g_test_add_func ("/nodes/get/int", test_get_int);
+ g_test_add_func ("/nodes/get/double", test_get_double);
+ g_test_add_func ("/nodes/gvalue", test_gvalue);
+ g_test_add_func ("/nodes/gvalue/autopromotion", test_gvalue_autopromotion);
+
+ return g_test_run ();
+}
}
static void
+test_set_member (void)
+{
+ JsonNode *node = json_node_new (JSON_NODE_VALUE);
+ JsonObject *object = json_object_new ();
+
+ g_assert_cmpint (json_object_get_size (object), ==, 0);
+
+ json_node_set_string (node, "Hello");
+
+ json_object_set_member (object, "String", node);
+ g_assert_cmpint (json_object_get_size (object), ==, 1);
+
+ node = json_object_get_member (object, "String");
+ g_assert_cmpint (JSON_NODE_TYPE (node), ==, JSON_NODE_VALUE);
+ g_assert_cmpstr (json_node_get_string (node), ==, "Hello");
+
+ json_object_set_string_member (object, "String", "World");
+ node = json_object_get_member (object, "String");
+ g_assert_cmpint (JSON_NODE_TYPE (node), ==, JSON_NODE_VALUE);
+ g_assert_cmpstr (json_node_get_string (node), ==, "World");
+
+ json_object_set_string_member (object, "String", "Goodbye");
+ g_assert_cmpstr (json_object_get_string_member (object, "String"), ==, "Goodbye");
+
+ json_object_set_array_member (object, "Array", NULL);
+ g_assert_cmpint (JSON_NODE_TYPE (json_object_get_member (object, "Array")), ==, JSON_NODE_NULL);
+
+ json_object_set_object_member (object, "Object", NULL);
+ g_assert (json_object_get_null_member (object, "Object") == TRUE);
+
+ json_object_unref (object);
+}
+
+static void
test_remove_member (void)
{
JsonObject *object = json_object_new ();
{ "integer", JSON_NODE_VALUE, G_TYPE_INT64 },
{ "boolean", JSON_NODE_VALUE, G_TYPE_BOOLEAN },
{ "string", JSON_NODE_VALUE, G_TYPE_STRING },
+ { "double", JSON_NODE_VALUE, G_TYPE_DOUBLE },
{ "null", JSON_NODE_NULL, G_TYPE_INVALID }
};
json_object_set_int_member (object, "integer", 42);
json_object_set_boolean_member (object, "boolean", TRUE);
json_object_set_string_member (object, "string", "hello");
+ json_object_set_double_member (object, "double", 3.14159);
json_object_set_null_member (object, "null");
json_object_foreach_member (object, verify_foreach, &fixture);
g_assert (json_object_has_member (object, "string"));
g_assert_cmpstr (json_object_get_string_member (object, "string"), ==, "");
+ json_object_set_string_member (object, "null", NULL);
+ g_assert (json_object_has_member (object, "null"));
+ g_assert (json_object_get_string_member (object, "null") == NULL);
+
+ json_object_set_null_member (object, "array");
+ g_assert (json_object_get_array_member (object, "array") == NULL);
+
+ json_object_set_object_member (object, "object", NULL);
+ g_assert (json_object_get_member (object, "object") != NULL);
+ g_assert (json_object_get_object_member (object, "object") == NULL);
+
json_object_unref (object);
}
main (int argc,
char *argv[])
{
- g_type_init ();
g_test_init (&argc, &argv, NULL);
g_test_add_func ("/object/empty-object", test_empty_object);
g_test_add_func ("/object/add-member", test_add_member);
+ g_test_add_func ("/object/set-member", test_set_member);
g_test_add_func ("/object/remove-member", test_remove_member);
g_test_add_func ("/object/foreach-member", test_foreach_member);
g_test_add_func ("/object/empty-member", test_empty_member);
-#ifdef HAVE_CONFIG_H
#include "config.h"
-#endif
#include <stdlib.h>
#include <stdio.h>
}
static void
+verify_negative_int_value (JsonNode *node)
+{
+ g_assert_cmpint (-1, ==, json_node_get_int (node));
+}
+
+static void
verify_boolean_value (JsonNode *node)
{
g_assert_cmpint (TRUE, ==, json_node_get_boolean (node));
g_assert_cmpfloat (10.2e3, ==, json_node_get_double (node));
}
+static void
+verify_negative_double_value (JsonNode *node)
+{
+ g_assert_cmpfloat (-3.14, ==, json_node_get_double (node));
+}
+
static const struct {
const gchar *str;
JsonNodeType type;
{ "42", JSON_NODE_VALUE, G_TYPE_INT64, verify_int_value },
{ "true", JSON_NODE_VALUE, G_TYPE_BOOLEAN, verify_boolean_value },
{ "\"string\"", JSON_NODE_VALUE, G_TYPE_STRING, verify_string_value },
- { "10.2e3", JSON_NODE_VALUE, G_TYPE_DOUBLE, verify_double_value }
+ { "10.2e3", JSON_NODE_VALUE, G_TYPE_DOUBLE, verify_double_value },
+ { "-1", JSON_NODE_VALUE, G_TYPE_INT64, verify_negative_int_value },
+ { "-3.14", JSON_NODE_VALUE, G_TYPE_DOUBLE, verify_negative_double_value },
};
static const struct {
{ "{ \"test\" : 42 }", 1, "test", JSON_NODE_VALUE, G_TYPE_INT64 },
{ "{ \"name\" : \"\", \"state\" : 1 }", 2, "name", JSON_NODE_VALUE, G_TYPE_STRING },
{ "{ \"foo\" : \"bar\", \"baz\" : null }", 2, "baz", JSON_NODE_NULL, G_TYPE_INVALID },
- { "{ \"channel\" : \"/meta/connect\" }", 1, "channel", JSON_NODE_VALUE, G_TYPE_STRING }
+ { "{ \"channel\" : \"/meta/connect\" }", 1, "channel", JSON_NODE_VALUE, G_TYPE_STRING },
+ { "{ \"halign\":0.5, \"valign\":0.5 }", 2, "valign", JSON_NODE_VALUE, G_TYPE_DOUBLE }
};
static const gchar *test_nested_objects[] = {
- "{ \"array\" : [ false, \"foo\" ], \"object\" : { \"foo\" : true } }"
+ "{ \"array\" : [ false, \"foo\" ], \"object\" : { \"foo\" : true } }",
+ "{ "
+ "\"type\" : \"ClutterGroup\", "
+ "\"width\" : 1, "
+ "\"children\" : [ "
+ "{ "
+ "\"type\" : \"ClutterRectangle\", "
+ "\"children\" : [ "
+ "{ \"type\" : \"ClutterText\", \"text\" : \"hello there\" }"
+ "] "
+ "}, "
+ "{ "
+ "\"type\" : \"ClutterGroup\", "
+ "\"width\" : 1, "
+ "\"children\" : [ "
+ "{ \"type\" : \"ClutterText\", \"text\" : \"hello\" }"
+ "] "
+ "} "
+ "] "
+ "}"
};
static const struct {
{ "{ \"test\" : \"foo \\u00e8\" }", "test", "foo è" }
};
-static const struct
-{
- const gchar *str;
-} test_invalid[] = {
- { "test" },
- { "[ foo, ]" },
- { "[ true, ]" },
- { "{ \"foo\" : true \"bar\" : false }" },
- { "[ true, [ false, ] ]" },
- { "{ \"foo\" : { \"bar\" : false, } }" },
- { "[ { }, { }, { }, ]" }
-};
-
static guint n_test_base_values = G_N_ELEMENTS (test_base_values);
static guint n_test_simple_arrays = G_N_ELEMENTS (test_simple_arrays);
static guint n_test_nested_arrays = G_N_ELEMENTS (test_nested_arrays);
static guint n_test_nested_objects = G_N_ELEMENTS (test_nested_objects);
static guint n_test_assignments = G_N_ELEMENTS (test_assignments);
static guint n_test_unicode = G_N_ELEMENTS (test_unicode);
-static guint n_test_invalid = G_N_ELEMENTS (test_invalid);
static void
test_empty (void)
}
static void
-test_invalid_json (void)
+test_stream_sync (void)
{
JsonParser *parser;
+ GFile *file;
+ GFileInputStream *stream;
GError *error = NULL;
- gint i;
+ JsonNode *root;
+ JsonArray *array;
+ char *path;
parser = json_parser_new ();
- g_assert (JSON_IS_PARSER (parser));
- if (g_test_verbose ())
- g_print ("checking json_parser_load_from_data with invalid data...\n");
+ path = g_test_build_filename (G_TEST_DIST, "stream-load.json", NULL);
+ file = g_file_new_for_path (path);
+ stream = g_file_read (file, NULL, &error);
+ g_assert_no_error (error);
+ g_assert (stream != NULL);
- for (i = 0; i < n_test_invalid; i++)
- {
- gboolean res;
+ json_parser_load_from_stream (parser, G_INPUT_STREAM (stream), NULL, &error);
+ g_assert_no_error (error);
- if (g_test_verbose ())
- g_print ("Parsing: '%s'\n", test_invalid[i].str);
+ root = json_parser_get_root (parser);
+ g_assert (root != NULL);
+ g_assert (JSON_NODE_HOLDS_ARRAY (root));
+
+ array = json_node_get_array (root);
+ g_assert_cmpint (json_array_get_length (array), ==, 1);
+ g_assert (JSON_NODE_HOLDS_OBJECT (json_array_get_element (array, 0)));
+ g_assert (json_object_has_member (json_array_get_object_element (array, 0), "hello"));
- res = json_parser_load_from_data (parser, test_invalid[i].str, -1,
- &error);
+ g_object_unref (stream);
+ g_object_unref (file);
+ g_object_unref (parser);
+ g_free (path);
+}
+
+static void
+on_load_complete (GObject *gobject,
+ GAsyncResult *result,
+ gpointer user_data)
+{
+ JsonParser *parser = JSON_PARSER (gobject);
+ GMainLoop *main_loop = user_data;
+ GError *error = NULL;
+ JsonNode *root;
+ JsonArray *array;
- g_assert (!res);
- g_assert (error != NULL);
- g_assert (error->domain == JSON_PARSER_ERROR);
+ json_parser_load_from_stream_finish (parser, result, &error);
+ g_assert_no_error (error);
- if (g_test_verbose ())
- g_print ("Error: %s\n", error->message);
+ root = json_parser_get_root (parser);
+ g_assert (root != NULL);
+ g_assert (JSON_NODE_HOLDS_ARRAY (root));
- g_clear_error (&error);
- }
+ array = json_node_get_array (root);
+ g_assert_cmpint (json_array_get_length (array), ==, 1);
+ g_assert (JSON_NODE_HOLDS_OBJECT (json_array_get_element (array, 0)));
+ g_assert (json_object_has_member (json_array_get_object_element (array, 0), "hello"));
+
+ g_main_loop_quit (main_loop);
+}
+
+static void
+test_stream_async (void)
+{
+ GMainLoop *main_loop;
+ GError *error = NULL;
+ JsonParser *parser = json_parser_new ();
+ GFile *file;
+ GFileInputStream *stream;
+ char *path;
+
+ path = g_test_build_filename (G_TEST_DIST, "stream-load.json", NULL);
+ file = g_file_new_for_path (path);
+ stream = g_file_read (file, NULL, &error);
+ g_assert (error == NULL);
+ g_assert (stream != NULL);
+
+ main_loop = g_main_loop_new (NULL, FALSE);
+
+ json_parser_load_from_stream_async (parser, G_INPUT_STREAM (stream), NULL,
+ on_load_complete,
+ main_loop);
+
+ g_main_loop_run (main_loop);
+ g_main_loop_unref (main_loop);
+ g_object_unref (stream);
+ g_object_unref (file);
g_object_unref (parser);
+ g_free (path);
}
int
main (int argc,
char *argv[])
{
- g_type_init ();
g_test_init (&argc, &argv, NULL);
g_test_add_func ("/parser/empty-string", test_empty);
g_test_add_func ("/parser/nested-object", test_nested_object);
g_test_add_func ("/parser/assignment", test_assignment);
g_test_add_func ("/parser/unicode-escape", test_unicode_escape);
- g_test_add_func ("/parser/invalid-json", test_invalid_json);
+ g_test_add_func ("/parser/stream-sync", test_stream_sync);
+ g_test_add_func ("/parser/stream-async", test_stream_async);
return g_test_run ();
}
--- /dev/null
+#include <string.h>
+#include <glib.h>
+#include <json-glib/json-glib.h>
+
+static const char *test_json =
+"{ \"store\": {"
+" \"book\": [ "
+" { \"category\": \"reference\","
+" \"author\": \"Nigel Rees\","
+" \"title\": \"Sayings of the Century\","
+" \"price\": \"8.95\""
+" },"
+" { \"category\": \"fiction\","
+" \"author\": \"Evelyn Waugh\","
+" \"title\": \"Sword of Honour\","
+" \"price\": \"12.99\""
+" },"
+" { \"category\": \"fiction\","
+" \"author\": \"Herman Melville\","
+" \"title\": \"Moby Dick\","
+" \"isbn\": \"0-553-21311-3\","
+" \"price\": \"8.99\""
+" },"
+" { \"category\": \"fiction\","
+" \"author\": \"J. R. R. Tolkien\","
+" \"title\": \"The Lord of the Rings\","
+" \"isbn\": \"0-395-19395-8\","
+" \"price\": \"22.99\""
+" }"
+" ],"
+" \"bicycle\": {"
+" \"color\": \"red\","
+" \"price\": \"19.95\""
+" }"
+" }"
+"}";
+
+static const struct {
+ const char *desc;
+ const char *expr;
+ const char *res;
+
+ guint is_valid : 1;
+
+ JsonPathError error_code;
+} test_expressions[] = {
+ {
+ "INVALID: invalid first character",
+ "/",
+ NULL,
+ FALSE,
+ JSON_PATH_ERROR_INVALID_QUERY,
+ },
+ {
+ "INVALID: Invalid character following root",
+ "$ponies",
+ NULL,
+ FALSE,
+ JSON_PATH_ERROR_INVALID_QUERY,
+ },
+ {
+ "INVALID: missing member name or wildcard after dot",
+ "$.store.",
+ NULL,
+ FALSE,
+ JSON_PATH_ERROR_INVALID_QUERY,
+ },
+ {
+ "INVALID: Malformed slice (missing step)",
+ "$.store.book[0:1:]",
+ NULL,
+ FALSE,
+ JSON_PATH_ERROR_INVALID_QUERY,
+ },
+ {
+ "INVALID: Malformed set",
+ "$.store.book[0,1~2]",
+ NULL,
+ FALSE,
+ JSON_PATH_ERROR_INVALID_QUERY,
+ },
+ {
+ "INVALID: Malformed array notation",
+ "${'store'}",
+ NULL,
+ FALSE,
+ JSON_PATH_ERROR_INVALID_QUERY,
+ },
+ {
+ "INVALID: Malformed slice (invalid separator)",
+ "$.store.book[0~2]",
+ NULL,
+ FALSE,
+ JSON_PATH_ERROR_INVALID_QUERY,
+ },
+ {
+ "Title of the first book in the store, using objct notation.",
+ "$.store.book[0].title",
+ "[\"Sayings of the Century\"]",
+ TRUE,
+ },
+ {
+ "Title of the first book in the store, using array notation.",
+ "$['store']['book'][0]['title']",
+ "[\"Sayings of the Century\"]",
+ TRUE,
+ },
+ {
+ "All the authors from the every book.",
+ "$.store.book[*].author",
+ "[\"Nigel Rees\",\"Evelyn Waugh\",\"Herman Melville\",\"J. R. R. Tolkien\"]",
+ TRUE,
+ },
+ {
+ "All the authors.",
+ "$..author",
+ "[\"Nigel Rees\",\"Evelyn Waugh\",\"Herman Melville\",\"J. R. R. Tolkien\"]",
+ TRUE,
+ },
+ {
+ "Everything inside the store.",
+ "$.store.*",
+ NULL,
+ TRUE,
+ },
+ {
+ "All the prices in the store.",
+ "$.store..price",
+ "[\"8.95\",\"12.99\",\"8.99\",\"22.99\",\"19.95\"]",
+ TRUE,
+ },
+ {
+ "The third book.",
+ "$..book[2]",
+ "[{\"category\":\"fiction\",\"author\":\"Herman Melville\",\"title\":\"Moby Dick\",\"isbn\":\"0-553-21311-3\",\"price\":\"8.99\"}]",
+ TRUE,
+ },
+ {
+ "The last book.",
+ "$..book[-1:]",
+ "[{\"category\":\"fiction\",\"author\":\"J. R. R. Tolkien\",\"title\":\"The Lord of the Rings\",\"isbn\":\"0-395-19395-8\",\"price\":\"22.99\"}]",
+ TRUE,
+ },
+ {
+ "The first two books.",
+ "$..book[0,1]",
+ "[{\"category\":\"reference\",\"author\":\"Nigel Rees\",\"title\":\"Sayings of the Century\",\"price\":\"8.95\"},{\"category\":\"fiction\",\"author\":\"Evelyn Waugh\",\"title\":\"Sword of Honour\",\"price\":\"12.99\"}]",
+ TRUE,
+ },
+ {
+ "The first two books, using a slice.",
+ "$..book[:2]",
+ "[{\"category\":\"reference\",\"author\":\"Nigel Rees\",\"title\":\"Sayings of the Century\",\"price\":\"8.95\"},{\"category\":\"fiction\",\"author\":\"Evelyn Waugh\",\"title\":\"Sword of Honour\",\"price\":\"12.99\"}]",
+ TRUE,
+ },
+ {
+ "All the books.",
+ "$['store']['book'][*]",
+ "[{\"category\":\"reference\",\"author\":\"Nigel Rees\",\"title\":\"Sayings of the Century\",\"price\":\"8.95\"},{\"category\":\"fiction\",\"author\":\"Evelyn Waugh\",\"title\":\"Sword of Honour\",\"price\":\"12.99\"},{\"category\":\"fiction\",\"author\":\"Herman Melville\",\"title\":\"Moby Dick\",\"isbn\":\"0-553-21311-3\",\"price\":\"8.99\"},{\"category\":\"fiction\",\"author\":\"J. R. R. Tolkien\",\"title\":\"The Lord of the Rings\",\"isbn\":\"0-395-19395-8\",\"price\":\"22.99\"}]",
+ TRUE,
+ },
+ {
+ "All the members of the bicycle object.",
+ "$.store.bicycle.*",
+ "[\"red\",\"19.95\"]",
+ TRUE,
+ },
+ {
+ "The root node.",
+ "$",
+ "[{\"store\":{\"book\":[{\"category\":\"reference\",\"author\":\"Nigel Rees\",\"title\":\"Sayings of the Century\",\"price\":\"8.95\"},"
+ "{\"category\":\"fiction\",\"author\":\"Evelyn Waugh\",\"title\":\"Sword of Honour\",\"price\":\"12.99\"},"
+ "{\"category\":\"fiction\",\"author\":\"Herman Melville\",\"title\":\"Moby Dick\",\"isbn\":\"0-553-21311-3\",\"price\":\"8.99\"},"
+ "{\"category\":\"fiction\",\"author\":\"J. R. R. Tolkien\",\"title\":\"The Lord of the Rings\",\"isbn\":\"0-395-19395-8\",\"price\":\"22.99\"}],"
+ "\"bicycle\":{\"color\":\"red\",\"price\":\"19.95\"}}}]",
+ TRUE,
+ }
+};
+
+static void
+path_expressions_valid (gconstpointer data)
+{
+ const int index_ = GPOINTER_TO_INT (data);
+ const char *expr = test_expressions[index_].expr;
+ const char *desc = test_expressions[index_].desc;
+
+ JsonPath *path = json_path_new ();
+ GError *error = NULL;
+
+ if (g_test_verbose ())
+ g_print ("* %s ('%s')\n", desc, expr);
+
+ g_assert (json_path_compile (path, expr, &error));
+ g_assert_no_error (error);
+
+ g_object_unref (path);
+}
+
+static void
+path_expressions_invalid (gconstpointer data)
+{
+ const int index_ = GPOINTER_TO_INT (data);
+ const char *expr = test_expressions[index_].expr;
+ const char *desc = test_expressions[index_].desc;
+ const JsonPathError code = test_expressions[index_].error_code;
+
+ JsonPath *path = json_path_new ();
+ GError *error = NULL;
+
+ if (g_test_verbose ())
+ g_print ("* %s ('%s')\n", desc, expr);
+
+
+ g_assert (!json_path_compile (path, expr, &error));
+ g_assert_error (error, JSON_PATH_ERROR, code);
+
+ g_object_unref (path);
+}
+
+static void
+path_match (gconstpointer data)
+{
+ const int index_ = GPOINTER_TO_INT (data);
+ const char *desc = test_expressions[index_].desc;
+ const char *expr = test_expressions[index_].expr;
+ const char *res = test_expressions[index_].res;
+
+ JsonParser *parser = json_parser_new ();
+ JsonGenerator *gen = json_generator_new ();
+ JsonPath *path = json_path_new ();
+ JsonNode *root;
+ JsonNode *matches;
+ char *str;
+
+ json_parser_load_from_data (parser, test_json, -1, NULL);
+ root = json_parser_get_root (parser);
+
+ g_assert (json_path_compile (path, expr, NULL));
+
+ matches = json_path_match (path, root);
+ g_assert (JSON_NODE_HOLDS_ARRAY (matches));
+
+ json_generator_set_root (gen, matches);
+ str = json_generator_to_data (gen, NULL);
+
+ if (g_test_verbose ())
+ {
+ g_print ("* %s ('%s') =>\n"
+ "- result: %s\n"
+ "- expected: %s\n",
+ desc, expr,
+ str,
+ res);
+ }
+
+ g_assert_cmpstr (str, ==, res);
+
+ g_free (str);
+ json_node_free (matches);
+
+ g_object_unref (parser);
+ g_object_unref (path);
+ g_object_unref (gen);
+}
+
+int
+main (int argc,
+ char *argv[])
+{
+ int i, j;
+
+ g_test_init (&argc, &argv, NULL);
+ g_test_bug_base ("http://bugzilla.gnome.org/show_bug.cgi?id=");
+
+ for (i = 0, j = 1; i < G_N_ELEMENTS (test_expressions); i++)
+ {
+ char *path;
+
+ if (!test_expressions[i].is_valid)
+ continue;
+
+ path = g_strdup_printf ("/path/expressions/valid/%d", j++);
+
+ g_test_add_data_func (path, GINT_TO_POINTER (i), path_expressions_valid);
+
+ g_free (path);
+ }
+
+ for (i = 0, j = 1; i < G_N_ELEMENTS (test_expressions); i++)
+ {
+ char *path;
+
+ if (test_expressions[i].is_valid)
+ continue;
+
+ path = g_strdup_printf ("/path/expressions/invalid/%d", j++);
+
+ g_test_add_data_func (path, GINT_TO_POINTER (i), path_expressions_invalid);
+
+ g_free (path);
+ }
+
+ for (i = 0, j = 1; i < G_N_ELEMENTS (test_expressions); i++)
+ {
+ char *path;
+
+ if (!test_expressions[i].is_valid || test_expressions[i].res == NULL)
+ continue;
+
+ path = g_strdup_printf ("/path/match/%d", j++);
+
+ g_test_add_data_func (path, GINT_TO_POINTER (i), path_match);
+
+ g_free (path);
+ }
+
+ return g_test_run ();
+}
--- /dev/null
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <glib.h>
+
+#include <json-glib/json-glib.h>
+
+static const gchar *test_base_array_data =
+"[ 0, true, null, \"foo\", 3.14, [ false ], { \"bar\" : 42 } ]";
+
+static const gchar *test_base_object_data =
+"{ \"text\" : \"hello, world!\", \"foo\" : null, \"blah\" : 47, \"double\" : 42.47 }";
+
+static const gchar *test_reader_level_data =
+" { \"list\": { \"181195771\": { \"given_url\": \"http://www.gnome.org/json-glib-test\" } } }";
+
+static const gchar *expected_member_name[] = {
+ "text",
+ "foo",
+ "blah",
+ "double",
+};
+
+static void
+test_base_object (void)
+{
+ JsonParser *parser = json_parser_new ();
+ JsonReader *reader = json_reader_new (NULL);
+ GError *error = NULL;
+ gchar **members;
+ gsize n_members, i;
+
+ json_parser_load_from_data (parser, test_base_object_data, -1, &error);
+ g_assert (error == NULL);
+
+ json_reader_set_root (reader, json_parser_get_root (parser));
+
+ g_assert (json_reader_is_object (reader));
+ g_assert_cmpint (json_reader_count_members (reader), ==, 4);
+
+ members = json_reader_list_members (reader);
+ g_assert (members != NULL);
+
+ n_members = g_strv_length (members);
+ g_assert_cmpint (n_members, ==, json_reader_count_members (reader));
+
+ for (i = 0; i < n_members; i++)
+ g_assert_cmpstr (members[i], ==, expected_member_name[i]);
+
+ g_strfreev (members);
+
+ g_assert (json_reader_read_member (reader, "text"));
+ g_assert (json_reader_is_value (reader));
+ g_assert_cmpstr (json_reader_get_string_value (reader), ==, "hello, world!");
+ json_reader_end_member (reader);
+
+ g_assert (json_reader_read_member (reader, "foo"));
+ g_assert (json_reader_get_null_value (reader));
+ json_reader_end_member (reader);
+
+ g_assert (!json_reader_read_member (reader, "bar"));
+ g_assert (json_reader_get_error (reader) != NULL);
+ g_assert_error ((GError *) json_reader_get_error (reader),
+ JSON_READER_ERROR,
+ JSON_READER_ERROR_INVALID_MEMBER);
+ json_reader_end_member (reader);
+ g_assert (json_reader_get_error (reader) == NULL);
+
+ g_assert (json_reader_read_element (reader, 2));
+ g_assert_cmpstr (json_reader_get_member_name (reader), ==, "blah");
+ g_assert (json_reader_is_value (reader));
+ g_assert_cmpint (json_reader_get_int_value (reader), ==, 47);
+ json_reader_end_element (reader);
+ g_assert (json_reader_get_error (reader) == NULL);
+
+ json_reader_read_member (reader, "double");
+ g_assert_cmpfloat (json_reader_get_double_value (reader), ==, 42.47);
+ json_reader_end_element (reader);
+
+ g_object_unref (reader);
+ g_object_unref (parser);
+}
+
+static void
+test_base_array (void)
+{
+ JsonParser *parser = json_parser_new ();
+ JsonReader *reader = json_reader_new (NULL);
+ GError *error = NULL;
+
+ json_parser_load_from_data (parser, test_base_array_data, -1, &error);
+ g_assert (error == NULL);
+
+ json_reader_set_root (reader, json_parser_get_root (parser));
+
+ g_assert (json_reader_is_array (reader));
+ g_assert_cmpint (json_reader_count_elements (reader), ==, 7);
+
+ json_reader_read_element (reader, 0);
+ g_assert (json_reader_is_value (reader));
+ g_assert_cmpint (json_reader_get_int_value (reader), ==, 0);
+ json_reader_end_element (reader);
+
+ json_reader_read_element (reader, 1);
+ g_assert (json_reader_is_value (reader));
+ g_assert (json_reader_get_boolean_value (reader));
+ json_reader_end_element (reader);
+
+ json_reader_read_element (reader, 3);
+ g_assert (json_reader_is_value (reader));
+ g_assert_cmpstr (json_reader_get_string_value (reader), ==, "foo");
+ json_reader_end_element (reader);
+
+ json_reader_read_element (reader, 5);
+ g_assert (!json_reader_is_value (reader));
+ g_assert (json_reader_is_array (reader));
+ json_reader_end_element (reader);
+
+ json_reader_read_element (reader, 6);
+ g_assert (json_reader_is_object (reader));
+
+ json_reader_read_member (reader, "bar");
+ g_assert (json_reader_is_value (reader));
+ g_assert_cmpint (json_reader_get_int_value (reader), ==, 42);
+ json_reader_end_member (reader);
+
+ json_reader_end_element (reader);
+
+ g_assert (!json_reader_read_element (reader, 7));
+ g_assert_error ((GError *) json_reader_get_error (reader),
+ JSON_READER_ERROR,
+ JSON_READER_ERROR_INVALID_INDEX);
+ json_reader_end_element (reader);
+ g_assert (json_reader_get_error (reader) == NULL);
+
+ g_object_unref (reader);
+}
+
+static void
+test_reader_level (void)
+{
+ JsonParser *parser = json_parser_new ();
+ JsonReader *reader = json_reader_new (NULL);
+ GError *error = NULL;
+ char **members;
+
+ json_parser_load_from_data (parser, test_reader_level_data, -1, &error);
+ g_assert (error == NULL);
+
+ json_reader_set_root (reader, json_parser_get_root (parser));
+
+ g_assert (json_reader_count_members (reader) > 0);
+
+ /* Grab the list */
+ g_assert (json_reader_read_member (reader, "list"));
+
+ members = json_reader_list_members (reader);
+ g_assert (members != NULL);
+ g_strfreev (members);
+
+ g_assert (json_reader_read_member (reader, "181195771"));
+
+ g_assert (!json_reader_read_member (reader, "resolved_url"));
+ g_assert (json_reader_get_error (reader) != NULL);
+ json_reader_end_member (reader);
+
+ g_assert (json_reader_read_member (reader, "given_url"));
+ g_assert_cmpstr (json_reader_get_string_value (reader), ==, "http://www.gnome.org/json-glib-test");
+ json_reader_end_member (reader);
+
+ json_reader_end_member (reader);
+
+ json_reader_end_member (reader);
+ g_clear_object (&reader);
+ g_clear_object (&parser);
+}
+
+int
+main (int argc,
+ char *argv[])
+{
+ g_test_init (&argc, &argv, NULL);
+ g_test_bug_base ("http://bugzilla.gnome.org/show_bug.cgi?id=");
+
+ g_test_add_func ("/reader/base-array", test_base_array);
+ g_test_add_func ("/reader/base-object", test_base_object);
+ g_test_add_func ("/reader/level", test_reader_level);
+
+ return g_test_run ();
+}
gboolean bar;
gchar *baz;
TestBoxed blah;
+ gdouble meh;
};
struct _TestObjectClass
PROP_FOO,
PROP_BAR,
PROP_BAZ,
- PROP_BLAH
+ PROP_BLAH,
+ PROP_MEH
};
static JsonSerializableIface *serializable_iface = NULL;
g_free (TEST_OBJECT (gobject)->baz);
TEST_OBJECT (gobject)->baz = g_value_dup_string (value);
break;
+ case PROP_MEH:
+ TEST_OBJECT (gobject)->meh = g_value_get_double (value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
}
case PROP_BLAH:
g_value_set_boxed (value, &(TEST_OBJECT (gobject)->blah));
break;
+ case PROP_MEH:
+ g_value_set_double (value, TEST_OBJECT (gobject)->meh);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
}
g_object_class_install_property (gobject_class,
PROP_BAR,
g_param_spec_boolean ("bar", "Bar", "Bar",
- FALSE,
+ TRUE,
G_PARAM_READWRITE));
g_object_class_install_property (gobject_class,
PROP_BAZ,
g_param_spec_boxed ("blah", "Blah", "Blah",
TEST_TYPE_BOXED,
G_PARAM_READABLE));
+ g_object_class_install_property (gobject_class,
+ PROP_MEH,
+ g_param_spec_double ("meh", "Meh", "Meh",
+ 0.0, 1.0, 0.0,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT));
}
static void
object->foo = 42;
object->bar = TRUE;
object->baz = g_strdup ("Test");
+ object->meh = 0.0;
object->blah.foo = object->foo;
object->blah.bar = object->bar;
static void
test_serialize (void)
{
- TestObject *obj = g_object_new (TEST_TYPE_OBJECT, NULL);
+ TestObject *obj = g_object_new (TEST_TYPE_OBJECT,
+ "foo", 47,
+ "bar", FALSE,
+ "baz", "Hello, World!",
+ "meh", 0.5,
+ NULL);
JsonParser *parser = json_parser_new ();
GError *error = NULL;
JsonObject *object;
g_assert (json_node_get_node_type (node) == JSON_NODE_OBJECT);
object = json_node_get_object (node);
- g_assert_cmpint (json_object_get_int_member (object, "foo"), ==, 42);
- g_assert (json_object_get_boolean_member (object, "bar"));
- g_assert_cmpstr (json_object_get_string_member (object, "baz"), ==, "Test");
+ g_assert_cmpint (json_object_get_int_member (object, "foo"), ==, 47);
+ g_assert (!json_object_get_boolean_member (object, "bar"));
+ g_assert_cmpstr (json_object_get_string_member (object, "baz"), ==, "Hello, World!");
+ g_assert_cmpfloat (json_object_get_double_member (object, "meh"), ==, 0.5);
- node = json_object_get_member (object, "blah");
- g_assert (json_node_get_node_type (node) == JSON_NODE_OBJECT);
-
- object = json_node_get_object (node);
- g_assert_cmpint (json_object_get_int_member (object, "foo"), ==, 42);
- g_assert (json_object_get_boolean_member (object, "bar"));
+ /* blah is read-only */
+ g_assert (json_object_has_member (object, "blah"));
g_free (data);
g_object_unref (parser);
main (int argc,
char *argv[])
{
- g_type_init ();
g_test_init (&argc, &argv, NULL);
g_test_add_func ("/serialize/gobject-boxed", test_serialize);
#include <json-glib/json-gobject.h>
#define TEST_TYPE_ENUM (test_enum_get_type ())
+#define TEST_TYPE_FLAGS (test_flags_get_type ())
#define TEST_TYPE_BOXED (test_boxed_get_type ())
#define TEST_TYPE_OBJECT (test_object_get_type ())
#define TEST_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TEST_TYPE_OBJECT, TestObject))
TEST_ENUM_BAZ
} TestEnum;
+typedef enum {
+ TEST_FLAGS_NONE = 0,
+ TEST_FLAGS_FOO = 1 << 0,
+ TEST_FLAGS_BAR = 1 << 1,
+ TEST_FLAGS_BAZ = 1 << 2
+} TestFlags;
+
typedef struct _TestBoxed TestBoxed;
typedef struct _TestObject TestObject;
typedef struct _TestObjectClass TestObjectClass;
{
GObject parent_instance;
- gint foo;
- gboolean bar;
- gchar *baz;
- TestBoxed blah;
- TestEnum meh;
- gchar **mah;
+ gint m_int;
+ gboolean m_bool;
+ gchar *m_str;
+ TestBoxed m_boxed;
+ TestEnum m_enum;
+ gchar **m_strv;
+ TestFlags m_flags;
- TestObject *test;
+ TestObject *m_obj;
};
struct _TestObjectClass
return e_type;
}
+GType
+test_flags_get_type (void)
+{
+ static GType e_type = 0;
+
+ if (G_UNLIKELY (e_type == 0))
+ {
+ static const GFlagsValue values[] = {
+ { TEST_FLAGS_NONE, "TEST_FLAGS_NONE", "none" },
+ { TEST_FLAGS_FOO, "TEST_FLAGS_FOO", "foo" },
+ { TEST_FLAGS_BAR, "TEST_FLAGS_BAR", "bar" },
+ { TEST_FLAGS_BAZ, "TEST_FLAGS_BAZ", "baz" },
+ { 0, NULL, NULL }
+ };
+
+ e_type = g_flags_register_static ("TestFlags", values);
+ }
+
+ return e_type;
+}
+
enum
{
PROP_0,
PROP_BLAH,
PROP_MEH,
PROP_MAH,
+ PROP_FLAGS,
PROP_TEST
};
G_IMPLEMENT_INTERFACE (JSON_TYPE_SERIALIZABLE,
json_serializable_iface_init));
-static gboolean
-test_object_deserialize_property (JsonSerializable *serializable,
- const gchar *name,
- GValue *value,
- GParamSpec *pspec,
- JsonNode *node)
-{
- gboolean retval = FALSE;
-
- return retval;
-}
-
static JsonNode *
test_object_serialize_property (JsonSerializable *serializable,
const gchar *name,
JsonSerializableIface *iface = g_iface;
iface->serialize_property = test_object_serialize_property;
- iface->deserialize_property = test_object_deserialize_property;
}
static void
test_object_finalize (GObject *gobject)
{
- g_free (TEST_OBJECT (gobject)->baz);
- g_strfreev (TEST_OBJECT (gobject)->mah);
+ g_free (TEST_OBJECT (gobject)->m_str);
+ g_strfreev (TEST_OBJECT (gobject)->m_strv);
- if (TEST_OBJECT (gobject)->test != NULL)
- g_object_unref (TEST_OBJECT (gobject)->test);
+ if (TEST_OBJECT (gobject)->m_obj != NULL)
+ g_object_unref (TEST_OBJECT (gobject)->m_obj);
G_OBJECT_CLASS (test_object_parent_class)->finalize (gobject);
}
switch (prop_id)
{
case PROP_FOO:
- TEST_OBJECT (gobject)->foo = g_value_get_int (value);
+ TEST_OBJECT (gobject)->m_int = g_value_get_int (value);
break;
case PROP_BAR:
- TEST_OBJECT (gobject)->bar = g_value_get_boolean (value);
+ TEST_OBJECT (gobject)->m_bool = g_value_get_boolean (value);
break;
case PROP_BAZ:
- g_free (TEST_OBJECT (gobject)->baz);
- TEST_OBJECT (gobject)->baz = g_value_dup_string (value);
+ g_free (TEST_OBJECT (gobject)->m_str);
+ TEST_OBJECT (gobject)->m_str = g_value_dup_string (value);
break;
case PROP_MEH:
- TEST_OBJECT (gobject)->meh = g_value_get_enum (value);
+ TEST_OBJECT (gobject)->m_enum = g_value_get_enum (value);
break;
case PROP_MAH:
- TEST_OBJECT (gobject)->mah = g_strdupv (g_value_get_boxed (value));
+ g_strfreev (TEST_OBJECT (gobject)->m_strv);
+ TEST_OBJECT (gobject)->m_strv = g_strdupv (g_value_get_boxed (value));
+ break;
+
+ case PROP_FLAGS:
+ TEST_OBJECT (gobject)->m_flags = g_value_get_flags (value);
break;
case PROP_TEST:
- TEST_OBJECT (gobject)->test = g_value_dup_object (value);
+ g_clear_object (&(TEST_OBJECT (gobject)->m_obj));
+ TEST_OBJECT (gobject)->m_obj = g_value_dup_object (value);
break;
default:
switch (prop_id)
{
case PROP_FOO:
- g_value_set_int (value, TEST_OBJECT (gobject)->foo);
+ g_value_set_int (value, TEST_OBJECT (gobject)->m_int);
break;
case PROP_BAR:
- g_value_set_boolean (value, TEST_OBJECT (gobject)->bar);
+ g_value_set_boolean (value, TEST_OBJECT (gobject)->m_bool);
break;
case PROP_BAZ:
- g_value_set_string (value, TEST_OBJECT (gobject)->baz);
+ g_value_set_string (value, TEST_OBJECT (gobject)->m_str);
break;
case PROP_BLAH:
- g_value_set_boxed (value, &(TEST_OBJECT (gobject)->blah));
+ g_value_set_boxed (value, &(TEST_OBJECT (gobject)->m_boxed));
break;
case PROP_MEH:
- g_value_set_enum (value, TEST_OBJECT (gobject)->meh);
+ g_value_set_enum (value, TEST_OBJECT (gobject)->m_enum);
break;
case PROP_MAH:
- g_value_set_boxed (value, TEST_OBJECT (gobject)->mah);
+ g_value_set_boxed (value, TEST_OBJECT (gobject)->m_strv);
+ break;
+
+ case PROP_FLAGS:
+ g_value_set_flags (value, TEST_OBJECT (gobject)->m_flags);
break;
case PROP_TEST:
- g_value_set_object (value, TEST_OBJECT (gobject)->test);
+ g_value_set_object (value, TEST_OBJECT (gobject)->m_obj);
break;
default:
g_param_spec_enum ("meh", "Meh", "Meh",
TEST_TYPE_ENUM,
TEST_ENUM_BAR,
- G_PARAM_READWRITE));
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT));
g_object_class_install_property (gobject_class,
PROP_MAH,
g_param_spec_boxed ("mah", "Mah", "Mah",
G_TYPE_STRV,
G_PARAM_READWRITE));
g_object_class_install_property (gobject_class,
+ PROP_FLAGS,
+ g_param_spec_flags ("flags", "Flags", "Flags",
+ TEST_TYPE_FLAGS,
+ TEST_FLAGS_NONE,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT));
+ g_object_class_install_property (gobject_class,
PROP_TEST,
g_param_spec_object ("test", "Test", "Test",
TEST_TYPE_OBJECT,
static void
test_object_init (TestObject *object)
{
- object->foo = 0;
- object->bar = FALSE;
- object->baz = NULL;
+ object->m_int = 0;
+ object->m_bool = FALSE;
+ object->m_str = NULL;
+
+ object->m_boxed.foo = object->m_int;
+ object->m_boxed.bar = object->m_bool;
- object->blah.foo = object->foo;
- object->blah.bar = object->bar;
+ object->m_enum = TEST_ENUM_BAR;
- object->meh = TEST_ENUM_BAR;
+ object->m_strv = NULL;
- object->mah = NULL;
+ object->m_flags = TEST_FLAGS_NONE;
- object->test = NULL;
+ object->m_obj = NULL;
}
static const gchar *var_test =
" \"meh\" : \"baz\",\n"
" \"mah\" : [ \"hello\", \", \", \"world\", \"!\" ],\n"
" \"test\" : {\n"
-" \"bar\" : true,\n"
-" \"baz\" : \"world\",\n"
-" \"meh\" : \"foo\"\n"
+" \"bar\" : true,\n"
+" \"baz\" : \"world\",\n"
+" \"meh\" : 0,\n"
+" \"flags\" : \"foo|bar\""
" }\n"
"}";
" bar: %s\n"
" baz: %s\n"
" meh: %s\n",
- TEST_OBJECT (object)->foo == 42 ? "<true>" : "<false>",
- TEST_OBJECT (object)->bar == TRUE ? "<true>" : "<false>",
- TEST_OBJECT (object)->baz != NULL ? "<true>" : "<false>",
- TEST_OBJECT (object)->meh == TEST_ENUM_BAZ ? "<true>" : "<false>");
+ TEST_OBJECT (object)->m_int == 42 ? "<true>" : "<false>",
+ TEST_OBJECT (object)->m_bool == TRUE ? "<true>" : "<false>",
+ TEST_OBJECT (object)->m_str != NULL ? "<true>" : "<false>",
+ TEST_OBJECT (object)->m_enum == TEST_ENUM_BAZ ? "<true>" : "<false>");
- g_assert_cmpint (TEST_OBJECT (object)->foo, ==, 42);
- g_assert_cmpint (TEST_OBJECT (object)->bar, ==, TRUE);
- g_assert_cmpstr (TEST_OBJECT (object)->baz, ==, "hello");
- g_assert_cmpint (TEST_OBJECT (object)->meh, ==, TEST_ENUM_BAZ);
+ g_assert_cmpint (TEST_OBJECT (object)->m_int, ==, 42);
+ g_assert (TEST_OBJECT (object)->m_bool);
+ g_assert_cmpstr (TEST_OBJECT (object)->m_str, ==, "hello");
+ g_assert_cmpint (TEST_OBJECT (object)->m_enum, ==, TEST_ENUM_BAZ);
- g_assert (TEST_OBJECT (object)->mah != NULL);
- g_assert_cmpint (g_strv_length (TEST_OBJECT (object)->mah), ==, 4);
+ g_assert (TEST_OBJECT (object)->m_strv != NULL);
+ g_assert_cmpint (g_strv_length (TEST_OBJECT (object)->m_strv), ==, 4);
- str = g_strjoinv (NULL, TEST_OBJECT (object)->mah);
+ str = g_strjoinv (NULL, TEST_OBJECT (object)->m_strv);
g_assert_cmpstr (str, ==, "hello, world!");
g_free (str);
- g_assert (TEST_IS_OBJECT (TEST_OBJECT (object)->test));
- test = TEST_OBJECT (TEST_OBJECT (object)->test);
- g_assert (test->bar);
- g_assert_cmpstr (test->baz, ==, "world");
- g_assert_cmpint (test->meh, ==, TEST_ENUM_FOO);
+ g_assert (TEST_IS_OBJECT (TEST_OBJECT (object)->m_obj));
+ test = TEST_OBJECT (TEST_OBJECT (object)->m_obj);
+ g_assert (test->m_bool);
+ g_assert_cmpstr (test->m_str, ==, "world");
+ g_assert_cmpint (test->m_enum, ==, TEST_ENUM_FOO);
+ g_assert_cmpint (test->m_flags, ==, TEST_FLAGS_FOO | TEST_FLAGS_BAR);
g_object_unref (object);
}
main (int argc,
char *argv[])
{
- g_type_init ();
g_test_init (&argc, &argv, NULL);
g_test_add_func ("/deserialize/json-to-gobject", test_deserialize);
main (int argc,
char *argv[])
{
- g_type_init ();
g_test_init (&argc, &argv, NULL);
g_test_add_func ("/serialize/gobject", test_serialize);
--- /dev/null
+[ { "hello" : "world!\n" } ]
+++ /dev/null
-#! /bin/sh
-# Common stub for a few missing GNU programs while installing.
-
-scriptversion=2009-04-28.21; # UTC
-
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
-# 2008, 2009 Free Software Foundation, Inc.
-# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-if test $# -eq 0; then
- echo 1>&2 "Try \`$0 --help' for more information"
- exit 1
-fi
-
-run=:
-sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
-sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
-
-# In the cases where this matters, `missing' is being run in the
-# srcdir already.
-if test -f configure.ac; then
- configure_ac=configure.ac
-else
- configure_ac=configure.in
-fi
-
-msg="missing on your system"
-
-case $1 in
---run)
- # Try to run requested program, and just exit if it succeeds.
- run=
- shift
- "$@" && exit 0
- # Exit code 63 means version mismatch. This often happens
- # when the user try to use an ancient version of a tool on
- # a file that requires a minimum version. In this case we
- # we should proceed has if the program had been absent, or
- # if --run hadn't been passed.
- if test $? = 63; then
- run=:
- msg="probably too old"
- fi
- ;;
-
- -h|--h|--he|--hel|--help)
- echo "\
-$0 [OPTION]... PROGRAM [ARGUMENT]...
-
-Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
-error status if there is no known handling for PROGRAM.
-
-Options:
- -h, --help display this help and exit
- -v, --version output version information and exit
- --run try to run the given command, and emulate it if it fails
-
-Supported PROGRAM values:
- aclocal touch file \`aclocal.m4'
- autoconf touch file \`configure'
- autoheader touch file \`config.h.in'
- autom4te touch the output file, or create a stub one
- automake touch all \`Makefile.in' files
- bison create \`y.tab.[ch]', if possible, from existing .[ch]
- flex create \`lex.yy.c', if possible, from existing .c
- help2man touch the output file
- lex create \`lex.yy.c', if possible, from existing .c
- makeinfo touch the output file
- tar try tar, gnutar, gtar, then tar without non-portable flags
- yacc create \`y.tab.[ch]', if possible, from existing .[ch]
-
-Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
-\`g' are ignored when checking the name.
-
-Send bug reports to <bug-automake@gnu.org>."
- exit $?
- ;;
-
- -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
- echo "missing $scriptversion (GNU Automake)"
- exit $?
- ;;
-
- -*)
- echo 1>&2 "$0: Unknown \`$1' option"
- echo 1>&2 "Try \`$0 --help' for more information"
- exit 1
- ;;
-
-esac
-
-# normalize program name to check for.
-program=`echo "$1" | sed '
- s/^gnu-//; t
- s/^gnu//; t
- s/^g//; t'`
-
-# Now exit if we have it, but it failed. Also exit now if we
-# don't have it and --version was passed (most likely to detect
-# the program). This is about non-GNU programs, so use $1 not
-# $program.
-case $1 in
- lex*|yacc*)
- # Not GNU programs, they don't have --version.
- ;;
-
- tar*)
- if test -n "$run"; then
- echo 1>&2 "ERROR: \`tar' requires --run"
- exit 1
- elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
- exit 1
- fi
- ;;
-
- *)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
- # Could not run --version or --help. This is probably someone
- # running `$TOOL --version' or `$TOOL --help' to check whether
- # $TOOL exists and not knowing $TOOL uses missing.
- exit 1
- fi
- ;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case $program in
- aclocal*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`acinclude.m4' or \`${configure_ac}'. You might want
- to install the \`Automake' and \`Perl' packages. Grab them from
- any GNU archive site."
- touch aclocal.m4
- ;;
-
- autoconf*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`${configure_ac}'. You might want to install the
- \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
- archive site."
- touch configure
- ;;
-
- autoheader*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`acconfig.h' or \`${configure_ac}'. You might want
- to install the \`Autoconf' and \`GNU m4' packages. Grab them
- from any GNU archive site."
- files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
- test -z "$files" && files="config.h"
- touch_files=
- for f in $files; do
- case $f in
- *:*) touch_files="$touch_files "`echo "$f" |
- sed -e 's/^[^:]*://' -e 's/:.*//'`;;
- *) touch_files="$touch_files $f.in";;
- esac
- done
- touch $touch_files
- ;;
-
- automake*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
- You might want to install the \`Automake' and \`Perl' packages.
- Grab them from any GNU archive site."
- find . -type f -name Makefile.am -print |
- sed 's/\.am$/.in/' |
- while read f; do touch "$f"; done
- ;;
-
- autom4te*)
- echo 1>&2 "\
-WARNING: \`$1' is needed, but is $msg.
- You might have modified some files without having the
- proper tools for further handling them.
- You can get \`$1' as part of \`Autoconf' from any GNU
- archive site."
-
- file=`echo "$*" | sed -n "$sed_output"`
- test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
- if test -f "$file"; then
- touch $file
- else
- test -z "$file" || exec >$file
- echo "#! /bin/sh"
- echo "# Created by GNU Automake missing as a replacement of"
- echo "# $ $@"
- echo "exit 0"
- chmod +x $file
- exit 1
- fi
- ;;
-
- bison*|yacc*)
- echo 1>&2 "\
-WARNING: \`$1' $msg. You should only need it if
- you modified a \`.y' file. You may need the \`Bison' package
- in order for those modifications to take effect. You can get
- \`Bison' from any GNU archive site."
- rm -f y.tab.c y.tab.h
- if test $# -ne 1; then
- eval LASTARG="\${$#}"
- case $LASTARG in
- *.y)
- SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
- if test -f "$SRCFILE"; then
- cp "$SRCFILE" y.tab.c
- fi
- SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
- if test -f "$SRCFILE"; then
- cp "$SRCFILE" y.tab.h
- fi
- ;;
- esac
- fi
- if test ! -f y.tab.h; then
- echo >y.tab.h
- fi
- if test ! -f y.tab.c; then
- echo 'main() { return 0; }' >y.tab.c
- fi
- ;;
-
- lex*|flex*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified a \`.l' file. You may need the \`Flex' package
- in order for those modifications to take effect. You can get
- \`Flex' from any GNU archive site."
- rm -f lex.yy.c
- if test $# -ne 1; then
- eval LASTARG="\${$#}"
- case $LASTARG in
- *.l)
- SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
- if test -f "$SRCFILE"; then
- cp "$SRCFILE" lex.yy.c
- fi
- ;;
- esac
- fi
- if test ! -f lex.yy.c; then
- echo 'main() { return 0; }' >lex.yy.c
- fi
- ;;
-
- help2man*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified a dependency of a manual page. You may need the
- \`Help2man' package in order for those modifications to take
- effect. You can get \`Help2man' from any GNU archive site."
-
- file=`echo "$*" | sed -n "$sed_output"`
- test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
- if test -f "$file"; then
- touch $file
- else
- test -z "$file" || exec >$file
- echo ".ab help2man is required to generate this page"
- exit $?
- fi
- ;;
-
- makeinfo*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified a \`.texi' or \`.texinfo' file, or any other file
- indirectly affecting the aspect of the manual. The spurious
- call might also be the consequence of using a buggy \`make' (AIX,
- DU, IRIX). You might want to install the \`Texinfo' package or
- the \`GNU make' package. Grab either from any GNU archive site."
- # The file to touch is that specified with -o ...
- file=`echo "$*" | sed -n "$sed_output"`
- test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
- if test -z "$file"; then
- # ... or it is the one specified with @setfilename ...
- infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
- file=`sed -n '
- /^@setfilename/{
- s/.* \([^ ]*\) *$/\1/
- p
- q
- }' $infile`
- # ... or it is derived from the source name (dir/f.texi becomes f.info)
- test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
- fi
- # If the file does not exist, the user really needs makeinfo;
- # let's fail without touching anything.
- test -f $file || exit 1
- touch $file
- ;;
-
- tar*)
- shift
-
- # We have already tried tar in the generic part.
- # Look for gnutar/gtar before invocation to avoid ugly error
- # messages.
- if (gnutar --version > /dev/null 2>&1); then
- gnutar "$@" && exit 0
- fi
- if (gtar --version > /dev/null 2>&1); then
- gtar "$@" && exit 0
- fi
- firstarg="$1"
- if shift; then
- case $firstarg in
- *o*)
- firstarg=`echo "$firstarg" | sed s/o//`
- tar "$firstarg" "$@" && exit 0
- ;;
- esac
- case $firstarg in
- *h*)
- firstarg=`echo "$firstarg" | sed s/h//`
- tar "$firstarg" "$@" && exit 0
- ;;
- esac
- fi
-
- echo 1>&2 "\
-WARNING: I can't seem to be able to run \`tar' with the given arguments.
- You may want to install GNU tar or Free paxutils, or check the
- command line arguments."
- exit 1
- ;;
-
- *)
- echo 1>&2 "\
-WARNING: \`$1' is needed, and is $msg.
- You might have modified some files without having the
- proper tools for further handling them. Check the \`README' file,
- it often tells you about the needed prerequisites for installing
- this package. You may also peek at any GNU archive site, in case
- some other package would contain this missing \`$1' program."
- exit 1
- ;;
-esac
-
-exit 0
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
--- /dev/null
+libjson-glib
--- /dev/null
+* Sat Apr 27 2013 Anas Nashif <anas.nashif@intel.com> upstream/0.16.0@8844179
+- Update to 0.16.0
+
+* Thu Dec 20 2012 Anas Nashif <anas.nashif@intel.com> submit/trunk/20121220.211531@cf96019
+- Update to 0.15.2
+
--- /dev/null
+<manifest>
+ <request>
+ <domain name="_"/>
+ </request>
+ <assign>
+ <filesystem path="/usr/bin/*" exec_label="none" />
+ </assign>
+</manifest>
-#sbs-git:slp/pkgs/l/libjson-glib json-glib 0.0.1 982a2ec62fdaecef7bf0d791b9b7be16d398d70b
-
-Name: json-glib
-Summary: JSON Parser for GLib
-Version: 0.0.1
-Release: 1
-Group: System/Libraries
-License: LGPL-2.1+
-Source0: %{name}-%{version}.tar.gz
-Patch0: support_surrogate_pairs_in_json_string.patch
-Requires(post): /sbin/ldconfig
-Requires(postun): /sbin/ldconfig
-BuildRequires: pkgconfig(gobject-2.0)
-BuildRequires: pkgconfig(gnutls)
-
+%bcond_with introspection
+
+Name: json-glib
+Version: 1.0.2
+Release: 0
+License: LGPL-2.1+
+Summary: Library for JavaScript Object Notation format
+Url: http://live.gnome.org/JsonGlib
+Group: System/Libraries
+#X-Vcs-Url: git://git.gnome.org/json-glib
+Source0: http://download.gnome.org/sources/json-glib/%{version}/%{name}-%{version}.tar.xz
+Source99: baselibs.conf
+Source1001: json-glib.manifest
+%if %{with introspection}
+BuildRequires: gobject-introspection-devel
+%endif
+BuildRequires: pkgconfig(glib-2.0)
%description
-an json-glib api library implementation in C (shared libs)
+JSON is a lightweight data-interchange format.It is easy for humans to
+read and write. It is easy for machines to parse and generate.
+
+JSON-GLib provides a parser and a generator GObject classes and various
+wrappers for the complex data types employed by JSON, such as arrays
+and objects.
+
+JSON-GLib uses GLib native data types and the generic value container
+GValue for ease of development. It also provides integration with the
+GObject classes for direct serialization into, and deserialization from,
+JSON data streams.
+
+%package -n typelib-Json
+Summary: Library for JavaScript Object Notation format -- Introspection bindings
+Group: System/Libraries
+
+%description -n typelib-Json
+JSON is a lightweight data-interchange format.It is easy for humans to
+read and write. It is easy for machines to parse and generate.
+
+JSON-GLib provides a parser and a generator GObject classes and various
+wrappers for the complex data types employed by JSON, such as arrays
+and objects.
+JSON-GLib uses GLib native data types and the generic value container
+GValue for ease of development. It also provides integration with the
+GObject classes for direct serialization into, and deserialization from,
+JSON data streams.
+This package provides the GObject Introspection bindings for JSON-GLib.
%package devel
-Summary: Development components for the json-glib package
-Group: Development/Libraries
-Requires: %{name} = %{version}-%{release}
+Summary: Library for JavaScript Object Notation format - Development Files
+Group: System/Libraries
+Requires: json-glib = %{version}
+%if %{with introspection}
+Requires: typelib-Json = %{version}
+%endif
+BuildRequires: gettext
%description devel
-Components for the json-glib package (devel)
+JSON is a lightweight data-interchange format.It is easy for humans to
+read and write. It is easy for machines to parse and generate.
-%package docs
-Summary: Documentation components for the json-glib package
-Group: Documentation
-Requires: %{name} = %{version}-%{release}
+JSON-GLib provides a parser and a generator GObject classes and various
+wrappers for the complex data types employed by JSON, such as arrays
+and objects.
-%description docs
-Components for the json-glib package (doc)
+JSON-GLib uses GLib native data types and the generic value container
+GValue for ease of development. It also provides integration with the
+GObject classes for direct serialization into, and deserialization from,
+JSON data streams.
+This package contains development files needed to develop with the
+json-glib library.
+%lang_package
%prep
-%setup -q -n %{name}-%{version}
-
-%patch0 -p1 -b .support_surrogate_pairs
+%setup -q
+cp %{SOURCE1001} .
%build
-
-%reconfigure --disable-static
-make %{?jobs:-j%jobs}
+NOCONFIGURE=1
+%reconfigure --disable-man --disable-doc
+make %{?_smp_mflags}
%install
-
-mkdir -p %{buildroot}/usr/share/license
-cp COPYING %{buildroot}/usr/share/license/json-glib
-#rm -rf %{buildroot}
%make_install
+%find_lang %{name}-1.0
-%post -p /sbin/ldconfig
+mv %{name}-1.0.lang %{name}.lang
-%postun -p /sbin/ldconfig
+%post -n json-glib -p /sbin/ldconfig
+%postun -n json-glib -p /sbin/ldconfig
%files
-%defattr(-,root,root,-)
+%manifest %{name}.manifest
+%defattr(-,root,root)
%doc COPYING
-/usr/lib/libjson-glib-1.0.so.*
-/usr/share/license/json-glib
+%{_libdir}/*.so.*
+%{_bindir}/*
-%files devel
-%defattr(-,root,root,-)
-/usr/include/json-glib-1.0/json-glib/*.h
-/usr/lib/*.so
-/usr/lib/pkgconfig/*.pc
-
-%files docs
-%defattr(-,root,root,-)
-%doc /usr/share/gtk-doc/html/json-glib/*
+%if %{with introspection}
+%files -n typelib-Json
+%manifest %{name}.manifest
+%defattr(-,root,root)
+%{_libdir}/girepository-1.0/Json-1.0.typelib
+%endif
+%files devel
+%manifest %{name}.manifest
+%defattr(-,root,root)
+%{_includedir}/%{name}-1.0
+%{_libdir}/*.so
+%{_libdir}/pkgconfig/*.pc
+%if %{with introspection}
+%{_datadir}/gir-1.0/*.gir
+%endif
+
+%changelog
+++ /dev/null
-From fcd07918d3ed2b31b047900da9d2fed23dddf7da Mon Sep 17 00:00:00 2001
-From: Eiichi Sato <eiichi.for.public@gmail.com>
-Date: Sat, 10 Apr 2010 01:52:10 +0900
-Subject: [PATCH] Support for surrogate pairs in json string.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=615799
-
-Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
----
- json-glib/json-scanner.c | 16 +++++++++++++++-
- 1 files changed, 15 insertions(+), 1 deletions(-)
-
-diff --git a/json-glib/json-scanner.c b/json-glib/json-scanner.c
-index 9cd0938..6eca2ba 100644
---- a/json-glib/json-scanner.c
-+++ b/json-glib/json-scanner.c
-@@ -892,7 +892,7 @@ json_scanner_get_unichar (JsonScanner *scanner,
- break;
- }
-
-- g_assert (g_unichar_validate (uchar));
-+ g_assert (g_unichar_validate (uchar) || g_unichar_type (uchar) == G_UNICODE_SURROGATE);
-
- return uchar;
- }
-@@ -1439,6 +1439,20 @@ json_scanner_get_token_ll (JsonScanner *scanner,
- gunichar ucs;
-
- ucs = json_scanner_get_unichar (scanner, line_p, position_p);
-+
-+ if (g_unichar_type (ucs) == G_UNICODE_SURROGATE)
-+ {
-+ /* read next surrogate */
-+ if ('\\' == json_scanner_get_char (scanner, line_p, position_p)
-+ && 'u' == json_scanner_get_char (scanner, line_p, position_p))
-+ {
-+ gunichar ucs_lo = json_scanner_get_unichar (scanner, line_p, position_p);
-+ g_assert (g_unichar_type (ucs_lo) == G_UNICODE_SURROGATE);
-+ ucs = (((ucs & 0x3ff) << 10) | (ucs_lo & 0x3ff)) + 0x10000;
-+ }
-+ }
-+
-+ g_assert (g_unichar_validate (ucs));
- gstring = g_string_append_unichar (gstring, ucs);
- }
- break;
---
-1.7.1
-
-
--- /dev/null
+/Makefile.in.in
+/Makevars.template
+/POTFILES
+/Rules-quot
+/boldquot.sed
+/en@boldquot.header
+/en@quot.header
+/insert-header.sin
+/quot.sed
+/remove-potcdate.sed
+/remove-potcdate.sin
+/stamp-po
+*.gmo
+*.pot
--- /dev/null
+DOMAIN = json-glib-1.0
+XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ --keyword=P_ --keyword=C_
+COPYRIGHT_HOLDER = Intel Corporation
+MSGID_BUGS_ADDRESS = http://bugzilla.gnome.org/enter_bug.cgi?product=json-glib
+EXTRA_LOCALE_CATEGORIES =
+
+top_builddir = ..
--- /dev/null
+# keep sorted alphabetically!
+json-glib/json-glib-format.c
+json-glib/json-glib-validate.c
+json-glib/json-gobject.c
+json-glib/json-gvariant.c
+json-glib/json-parser.c
+json-glib/json-path.c
+json-glib/json-reader.c
--- /dev/null
+# Assamese translation for json-glib.
+# Copyright (C) 2012 json-glib's COPYRIGHT HOLDER
+# This file is distributed under the same license as the json-glib package.
+#
+# Nilamdyuti Goswami <ngoswami@redhat.com>, 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2012-10-25 17:15+0000\n"
+"PO-Revision-Date: 2012-10-26 15:38+0530\n"
+"Last-Translator: Nilamdyuti Goswami <ngoswami@redhat.com>\n"
+"Language-Team: as_IN <kde-i18n-doc@kde.org>\n"
+"Language: as\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 1.5\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: ../json-glib/json-gobject.c:934
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "এটা JSON আশা কৰা হৈছে, কিন্তু ৰুট ন'ডৰ ধৰণ '%s'"
+
+#: ../json-glib/json-gvariant.c:539
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "JSON অৱস্থাত অপ্ৰত্যাশিত ধৰণ '%s'"
+
+#: ../json-glib/json-gvariant.c:609
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "এটা টিউপুলৰ সৈতে সংগত হবলে JSON এৰেত কিছুমান উপাদান সন্ধানহিন"
+
+#: ../json-glib/json-gvariant.c:637
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "GVariant টিউপুল ধৰণত বন্ধৰ চিহ্ন ')' সন্ধানহিন"
+
+#: ../json-glib/json-gvariant.c:645
+msgid "Unexpected extra elements in JSON array"
+msgstr "JSON এৰেত অপ্ৰত্যাশিত অতিৰিক্ত উপাদান"
+
+#: ../json-glib/json-gvariant.c:924
+msgid "Invalid string value converting to GVariant"
+msgstr "GVariant লে পৰিবৰ্তন কৰোতে অবৈধ স্ট্ৰিং মান"
+
+#: ../json-glib/json-gvariant.c:980
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr ""
+"এটা GVariant অভিধান প্ৰবিষ্টিয়ে কেৱল এটা সদস্যৰ সৈতে এটা JSON অবজেক্ট আশা কৰে"
+
+#: ../json-glib/json-gvariant.c:1236
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "GVariant শ্ৰেণী '%c' সমৰ্থিত নহয়"
+
+#: ../json-glib/json-gvariant.c:1281
+msgid "Invalid GVariant signature"
+msgstr "অবৈধ GVariant স্বাক্ষৰ"
+
+#: ../json-glib/json-gvariant.c:1326
+msgid "JSON data is empty"
+msgstr "JSON তথ্য ৰিক্ত"
+
+#: ../json-glib/json-parser.c:810
+#, c-format
+#| msgid "%s:%d: Parse error: %s"
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: বিশ্লেষণ ত্ৰুটি: %s"
+
+#: ../json-glib/json-path.c:375
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "JSONPath অভিব্যক্তিত কেৱল এটা ৰুট ন'ডৰ অনুমতি আছে"
+
+#: ../json-glib/json-path.c:384
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "ৰুট ন'ড অবৈধ আখৰ '%c' দ্বাৰা অনুকৰণ কৰা হৈছে"
+
+#: ../json-glib/json-path.c:490
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "স্খলিত স্লাইচ অভিব্যক্তি '%*s'"
+
+#: ../json-glib/json-path.c:534
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "অবৈধ সংহতি বিৱৰণ '%*s'"
+
+#: ../json-glib/json-path.c:587
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "অবৈধ স্লাইচ বিৱৰণ '%*s'"
+
+#: ../json-glib/json-path.c:615
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "অভৈধ এৰে সূচী বিৱৰণ '%*s'"
+
+#: ../json-glib/json-reader.c:463
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr "বৰ্তমান ন'ডৰ ধৰণ '%s', কিন্তু এটা এৰে অথবা এটা অবজেক্ট আশা কৰা হৈছিল।"
+
+#: ../json-glib/json-reader.c:475
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "সূচী '%d' বৰ্তমান অৱস্থানত এৰেৰ আকাৰতকে অধিক।"
+
+#: ../json-glib/json-reader.c:492
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr "সূচী '%d' বৰ্তমান অৱস্থানত অবজেক্টৰ আকাৰতকে ডাঙৰ।"
+
+#: ../json-glib/json-reader.c:576 ../json-glib/json-reader.c:729
+#: ../json-glib/json-reader.c:780 ../json-glib/json-reader.c:818
+#: ../json-glib/json-reader.c:856 ../json-glib/json-reader.c:894
+#: ../json-glib/json-reader.c:932 ../json-glib/json-reader.c:977
+#: ../json-glib/json-reader.c:1013 ../json-glib/json-reader.c:1039
+msgid "No node available at the current position"
+msgstr "বৰ্তমান অৱস্থানত কোনো ন'ড উপলব্ধ নাই"
+
+#: ../json-glib/json-reader.c:583
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "বৰ্তমান অৱস্থানত এটা '%s' আছে কিন্তু এটা এৰে নাই"
+
+#: ../json-glib/json-reader.c:646
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "বৰ্তমান ন'ডৰ ধৰণ '%s', কিন্তু এটা অবজেক্ট আশা কৰা হৈছিল।"
+
+#: ../json-glib/json-reader.c:653
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "সদস্য '%s' বৰ্তমান অৱস্থানৰ অবজেক্টত বিৱৰিত নহয়।"
+
+#: ../json-glib/json-reader.c:736 ../json-glib/json-reader.c:787
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "বৰ্তমান অৱস্থানত এটা '%s' আছে কিন্তু এটা অবজেক্ট নাই"
+
+#: ../json-glib/json-reader.c:827 ../json-glib/json-reader.c:865
+#: ../json-glib/json-reader.c:903 ../json-glib/json-reader.c:941
+#: ../json-glib/json-reader.c:986
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "বৰ্তমান অৱস্থানত এটা '%s' আছে কিন্তু এটা মান নাই"
+
+#: ../json-glib/json-reader.c:949
+msgid "The current position does not hold a string type"
+msgstr "বৰ্তমান অৱস্থানত এটা স্ট্ৰিং ধৰণ নাই"
+
+#~ msgid "The current position does not hold an integer type"
+#~ msgstr "বৰ্তমান অৱস্থানত এটা পূৰ্ণসংখ্যা ধৰণ নাই"
+
+#~ msgid "The current position does not hold a floating point type"
+#~ msgstr "বৰ্তমান অৱস্থানত এটা দশমিকযুক্ত ধৰণ নাই"
+
+#~ msgid "The current position does not hold a boolean type"
+#~ msgstr "বৰ্তমান অৱস্থানত এটা বুলিয়ান ধৰণ নাই"
--- /dev/null
+# Bulgarian translation for json-glib po-file
+# Copyright (C) 2012, 2013 Free Software Foundation, Inc.
+# This file is distributed under the same license as the json-glib package.
+# Ivaylo Valkov <ivaylo@e-valkov.org>, 2012.
+# Alexander Shopov <ash@kambanaria.org>, 2013.
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib\n"
+"POT-Creation-Date: 2013-01-08 21:45+0200\n"
+"PO-Revision-Date: 2013-01-08 21:45+0200\n"
+"Last-Translator: Ivaylo Valkov <ivaylo@e-valkov.org>\n"
+"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
+"Language: bg\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../json-glib/json-gobject.c:925
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "Очакваха се данни в JSON, но кореновият елемент е от вида „%s“"
+
+#: ../json-glib/json-gvariant.c:539
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "Неочакван вид „%s“ във възел на JSON"
+
+#: ../json-glib/json-gvariant.c:609
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr ""
+"Липсват елементи в масив на JSON. Това пречи на използването му и като "
+"списък."
+
+#: ../json-glib/json-gvariant.c:637
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "Липсва затварящият символ „)“ в списъка на GVariant"
+
+#: ../json-glib/json-gvariant.c:645
+msgid "Unexpected extra elements in JSON array"
+msgstr "Неочаквани допълнителни елементи в масив на JSON"
+
+#: ../json-glib/json-gvariant.c:924
+msgid "Invalid string value converting to GVariant"
+msgstr "Неправилно преобразуване от низ в GVariant"
+
+#: ../json-glib/json-gvariant.c:980
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr "Речникът на GVariant очаква данни в JSON само с един член"
+
+#: ../json-glib/json-gvariant.c:1236
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "Класът на GVariant „%c“ не се поддържа"
+
+#: ../json-glib/json-gvariant.c:1281
+msgid "Invalid GVariant signature"
+msgstr "Грешен подпис за вида GVariant"
+
+#: ../json-glib/json-gvariant.c:1326
+msgid "JSON data is empty"
+msgstr "Няма данни в JSON"
+
+#: ../json-glib/json-parser.c:825
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: Грешка при анализиране: %s"
+
+#: ../json-glib/json-path.c:375
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "Позволен е само един коренов възел в изрази от вида „JSONPath“"
+
+#: ../json-glib/json-path.c:384
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "Символът „%c“ след кореновия възел е грешен"
+
+#: ../json-glib/json-path.c:490
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "Неправилен израз за отрязък: „%*s“"
+
+#: ../json-glib/json-path.c:534
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "Неправилна дефиниция за множество „%*s“"
+
+#: ../json-glib/json-path.c:587
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "Неправилна дефиниция за отрязък: „%*s“"
+
+#: ../json-glib/json-path.c:615
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "Неправилна дефиниция за индекс на масив „%*s“"
+
+#: ../json-glib/json-reader.c:464
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr "Възелът е от вида „%s“. Очакваше се масив или обект."
+
+#: ../json-glib/json-reader.c:476
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "Индексът „%d“ е по-голям от броя на елементите в масива."
+
+#: ../json-glib/json-reader.c:493
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr "Индексът „%d“ е по-голям от броя на елементите в обекта."
+
+#: ../json-glib/json-reader.c:577 ../json-glib/json-reader.c:730
+#: ../json-glib/json-reader.c:781 ../json-glib/json-reader.c:819
+#: ../json-glib/json-reader.c:857 ../json-glib/json-reader.c:895
+#: ../json-glib/json-reader.c:933 ../json-glib/json-reader.c:978
+#: ../json-glib/json-reader.c:1014 ../json-glib/json-reader.c:1040
+msgid "No node available at the current position"
+msgstr "Липсва възел на тази позиция"
+
+#: ../json-glib/json-reader.c:584
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "На тази позиция трябва да има масив, а не „%s“"
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "Възелът е от вида „%s“. Очакваше се обект."
+
+#: ../json-glib/json-reader.c:654
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "Членът „%s“ не е дефиниран на тази позиция в обекта."
+
+#: ../json-glib/json-reader.c:737 ../json-glib/json-reader.c:788
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "На тази позиция трябва да има обект, а не „%s“"
+
+#: ../json-glib/json-reader.c:828 ../json-glib/json-reader.c:866
+#: ../json-glib/json-reader.c:904 ../json-glib/json-reader.c:942
+#: ../json-glib/json-reader.c:987
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "На тази позиция трябва да има стойност, а не „%s“"
+
+#: ../json-glib/json-reader.c:950
+msgid "The current position does not hold a string type"
+msgstr "На тази позиция няма низ"
--- /dev/null
+# Bengali (India) translation for json-glib.
+# Copyright (C) 2012 json-glib's COPYRIGHT HOLDER
+# This file is distributed under the same license as the json-glib package.
+#
+# Sayak Sarkar <sayak.bugsmith@gmail.com>, 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2012-09-22 19:40+0000\n"
+"PO-Revision-Date: 2012-09-23 11:44+0530\n"
+"Last-Translator: Sayak Sarkar <sayak.bugsmith@gmail.com>\n"
+"Language-Team: Bengali (India) <anubad@lists.ankur.org.in>\n"
+"Language: bn\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Lokalize 1.4\n"
+
+#: ../json-glib/json-gobject.c:934
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "একটি JSON বস্তুর প্রত্যাশা করা হচ্ছে, কিন্তু রুট নোড টাইপ হল `%s'"
+
+#: ../json-glib/json-gvariant.c:539
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "JSON নোডের মধ্যে অপ্রত্যাশিত টাইপ '%s'"
+
+#: ../json-glib/json-gvariant.c:609
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "JSON অ্যারের মধ্যে অনুপস্থিত উপাদানের একটি tuple বর্নিত"
+
+#: ../json-glib/json-gvariant.c:637
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "GVariant tuple টাইপে শেষ চিহ্ন ')' অনুপস্থিত"
+
+#: ../json-glib/json-gvariant.c:645
+msgid "Unexpected extra elements in JSON array"
+msgstr "JSON অ্যারের মধ্যে অপ্রত্যাশিত অতিরিক্ত উপাদানসমূহ"
+
+#: ../json-glib/json-gvariant.c:924
+msgid "Invalid string value converting to GVariant"
+msgstr "GVariant এর রূপান্তরিকরণে স্ট্রিং-এর মান অবৈধ"
+
+#: ../json-glib/json-gvariant.c:980
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr "একটি GVariant অভিধান এন্ট্রি এক সদস্যের সঙ্গে ঠিক একটি JSON বস্তুর আশা করে"
+
+#: ../json-glib/json-gvariant.c:1236
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "GVariant ক্লাস '%c' সমর্থিত নয়"
+
+#: ../json-glib/json-gvariant.c:1281
+msgid "Invalid GVariant signature"
+msgstr "অবৈধ GVariant স্বাক্ষর"
+
+#: ../json-glib/json-gvariant.c:1326
+msgid "JSON data is empty"
+msgstr "JSON তথ্য খালি"
+
+#: ../json-glib/json-parser.c:818
+#, c-format
+msgid "%s:%d: Parse error: %s"
+msgstr "%s:%d: পার্স ত্রুটি: %s"
+
+#: ../json-glib/json-path.c:375
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "কেবলমাত্র একটি রুট নোড একটি JSONPath অভিব্যক্তিতে অনুমোদিত করা হয়"
+
+#: ../json-glib/json-path.c:384
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "রুট নোড অবৈধ অক্ষর '%c' দ্বারা অনুসরিত"
+
+#: ../json-glib/json-path.c:490
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "ত্রুটিপূর্ণ স্লাইস্ অভিব্যক্তি '%*s'"
+
+#: ../json-glib/json-path.c:534
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "অবৈধ সেট সংজ্ঞা '%*s'"
+
+#: ../json-glib/json-path.c:587
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "অবৈধ স্লাইস্ সংজ্ঞা '%*s'"
+
+#: ../json-glib/json-path.c:615
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "অবৈধ অ্যারের সূচক সংজ্ঞা '%*s'"
+
+#: ../json-glib/json-reader.c:463
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr "বর্তমান নোড '%s' ধরনের, কিন্তু একটি অ্যারে অথবা কোনো বস্তু প্রত্যাশিত ছিল।"
+
+#: ../json-glib/json-reader.c:475
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "সূচক '%d' বর্তমান অবস্থান এ অ্যারের মাপের চেয়ে বেশী।"
+
+#: ../json-glib/json-reader.c:492
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr "সূচক '% d' বর্তমান অবস্থানে বস্তুর আকারের চেয়ে বৃহত্তর।"
+
+#: ../json-glib/json-reader.c:576 ../json-glib/json-reader.c:729
+#: ../json-glib/json-reader.c:780 ../json-glib/json-reader.c:818
+#: ../json-glib/json-reader.c:856 ../json-glib/json-reader.c:894
+#: ../json-glib/json-reader.c:932 ../json-glib/json-reader.c:977
+#: ../json-glib/json-reader.c:1013 ../json-glib/json-reader.c:1039
+msgid "No node available at the current position"
+msgstr "বর্তমান অবস্থানে কোন নোড উপলব্ধ নয়"
+
+#: ../json-glib/json-reader.c:583
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "বর্তমান অবস্থানে একটি অ্যারের জায়গায় '%s' উপস্থিত"
+
+#: ../json-glib/json-reader.c:646
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "বর্তমান নোড '%s' ধরনের, কিন্তু একটি বস্তু প্রত্যাশিত ছিল।"
+
+#: ../json-glib/json-reader.c:653
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "'%s' সদস্য বর্তমান অবস্থানে অবজেক্টে সংজ্ঞায়িত করা নেই।"
+
+#: ../json-glib/json-reader.c:736 ../json-glib/json-reader.c:787
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "বর্তমান অবস্থানে একটি বস্তুর জায়গায় '%s' উপস্থিত"
+
+#: ../json-glib/json-reader.c:827 ../json-glib/json-reader.c:865
+#: ../json-glib/json-reader.c:903 ../json-glib/json-reader.c:941
+#: ../json-glib/json-reader.c:986
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "বর্তমান অবস্থানে একটি মানের জায়গায় '%s' উপস্থিত"
+
+#: ../json-glib/json-reader.c:949
+msgid "The current position does not hold a string type"
+msgstr "বর্তমান অবস্থানে কোন স্ট্রিং নেই"
--- /dev/null
+# Catalan translation for json-glib.
+# Copyright (C) 2012 Free Software Foundation, Inc.
+# This file is distributed under the same license as the json-glib package.
+# Gil Forcada <gilforcada@guifi.net>, 2012, 2013.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib\n"
+"POT-Creation-Date: 2013-01-21 00:26+0100\n"
+"PO-Revision-Date: 2013-01-21 00:26+0100\n"
+"Last-Translator: Gil Forcada <gilforcada@guifi.net>\n"
+"Language-Team: Catalan <tradgnome@softcatala.org>\n"
+"Language: ca\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bits\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: ../json-glib/json-gobject.c:925
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "S'esperava un objecte JSON, però el node arrel és del tipus «%s»"
+
+#: ../json-glib/json-gvariant.c:539
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "No s'esperava el tipus «%s» en un node de JSON"
+
+#: ../json-glib/json-gvariant.c:609
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "Manquen elements en la matriu de JSON perquè siguin una tupla"
+
+#: ../json-glib/json-gvariant.c:637
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "Manca el símbol de tancament «)» pel tipus de tupla de GVariant"
+
+#: ../json-glib/json-gvariant.c:645
+msgid "Unexpected extra elements in JSON array"
+msgstr "No s'esperaven elements extra en la matriu de JSON"
+
+#: ../json-glib/json-gvariant.c:924
+msgid "Invalid string value converting to GVariant"
+msgstr "La cadena no es pot convertir a GVariant, la conversió no és vàlida"
+
+#: ../json-glib/json-gvariant.c:980
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr ""
+"Un diccionari de GVariant requereix un objecte de JSON amb un sol membre"
+
+#: ../json-glib/json-gvariant.c:1236
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "La classe «%c» de GVariant no es pot utilitzar"
+
+#: ../json-glib/json-gvariant.c:1281
+msgid "Invalid GVariant signature"
+msgstr "La signatura de GVariant no és vàlida"
+
+#: ../json-glib/json-gvariant.c:1326
+msgid "JSON data is empty"
+msgstr "No hi ha dades de JSON"
+
+#: ../json-glib/json-parser.c:825
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: error en l'anàlisi: %s"
+
+#: ../json-glib/json-path.c:375
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "Només es pot utilitzar un node arrel en una expressió JSONPath"
+
+#: ../json-glib/json-path.c:384
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "El caràcter «%c» que segueix el node arrel no és vàlid"
+
+#: ../json-glib/json-path.c:490
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "L'expressió de tallat «%*s» no està ben formatada"
+
+#: ../json-glib/json-path.c:534
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "La definició del conjunt «%*s» no és vàlida"
+
+#: ../json-glib/json-path.c:587
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "La definició del tallat «%*s» no és vàlida"
+
+#: ../json-glib/json-path.c:615
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "La definició de l'índex de la matriu «%*s» no és vàlida"
+
+#: ../json-glib/json-reader.c:464
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr ""
+"El node actual és de tipus «%s», però s'esperava una matriu, o bé, un "
+"objecte."
+
+#: ../json-glib/json-reader.c:476
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "L'índex «%d» és més gran que la mida de la matriu a la posició actual."
+
+#: ../json-glib/json-reader.c:493
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr "L'índex «%d» és més gran que la mida de l'objecte a la posició actual."
+
+#: ../json-glib/json-reader.c:577 ../json-glib/json-reader.c:730
+#: ../json-glib/json-reader.c:781 ../json-glib/json-reader.c:819
+#: ../json-glib/json-reader.c:857 ../json-glib/json-reader.c:895
+#: ../json-glib/json-reader.c:933 ../json-glib/json-reader.c:978
+#: ../json-glib/json-reader.c:1014 ../json-glib/json-reader.c:1040
+msgid "No node available at the current position"
+msgstr "No hi ha cap node disponible a la posició actual"
+
+#: ../json-glib/json-reader.c:584
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "A la posició actual hi ha un «%s» i no una matriu"
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "El node actual és de tipus «%s», però s'esperava un objecte."
+
+#: ../json-glib/json-reader.c:654
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "El membre «%s» no està definit a l'objecte de la posició actual."
+
+#: ../json-glib/json-reader.c:737 ../json-glib/json-reader.c:788
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "A la posició actual hi ha un «%s» i no un objecte"
+
+#: ../json-glib/json-reader.c:828 ../json-glib/json-reader.c:866
+#: ../json-glib/json-reader.c:904 ../json-glib/json-reader.c:942
+#: ../json-glib/json-reader.c:987
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "A la posició actual hi ha un «%s» i no un valor"
+
+#: ../json-glib/json-reader.c:950
+msgid "The current position does not hold a string type"
+msgstr "A la posició actual no hi ha una cadena"
--- /dev/null
+# Catalan translation for json-glib.
+# Copyright (C) 2012 Free Software Foundation, Inc.
+# This file is distributed under the same license as the json-glib package.
+# Gil Forcada <gilforcada@guifi.net>, 2012, 2013.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib\n"
+"POT-Creation-Date: 2013-01-21 00:27+0100\n"
+"PO-Revision-Date: 2013-01-21 00:26+0100\n"
+"Last-Translator: Gil Forcada <gilforcada@guifi.net>\n"
+"Language-Team: Catalan <tradgnome@softcatala.org>\n"
+"Language: ca-XV\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bits\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: ../json-glib/json-gobject.c:925
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "S'esperava un objecte JSON, però el node arrel és del tipus «%s»"
+
+#: ../json-glib/json-gvariant.c:539
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "No s'esperava el tipus «%s» en un node de JSON"
+
+#: ../json-glib/json-gvariant.c:609
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "Manquen elements en la matriu de JSON perquè siguen una tupla"
+
+#: ../json-glib/json-gvariant.c:637
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "Manca el símbol de tancament «)» pel tipus de tupla de GVariant"
+
+#: ../json-glib/json-gvariant.c:645
+msgid "Unexpected extra elements in JSON array"
+msgstr "No s'esperaven elements extra en la matriu de JSON"
+
+#: ../json-glib/json-gvariant.c:924
+msgid "Invalid string value converting to GVariant"
+msgstr "La cadena no es pot convertir a GVariant, la conversió no és vàlida"
+
+#: ../json-glib/json-gvariant.c:980
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr ""
+"Un diccionari de GVariant requereix un objecte de JSON amb un sol membre"
+
+#: ../json-glib/json-gvariant.c:1236
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "La classe «%c» de GVariant no es pot utilitzar"
+
+#: ../json-glib/json-gvariant.c:1281
+msgid "Invalid GVariant signature"
+msgstr "La signatura de GVariant no és vàlida"
+
+#: ../json-glib/json-gvariant.c:1326
+msgid "JSON data is empty"
+msgstr "No hi ha dades de JSON"
+
+#: ../json-glib/json-parser.c:825
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: error en l'anàlisi: %s"
+
+#: ../json-glib/json-path.c:375
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "Només es pot utilitzar un node arrel en una expressió JSONPath"
+
+#: ../json-glib/json-path.c:384
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "El caràcter «%c» que segueix el node arrel no és vàlid"
+
+#: ../json-glib/json-path.c:490
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "L'expressió de tallat «%*s» no està ben formatada"
+
+#: ../json-glib/json-path.c:534
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "La definició del conjunt «%*s» no és vàlida"
+
+#: ../json-glib/json-path.c:587
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "La definició del tallat «%*s» no és vàlida"
+
+#: ../json-glib/json-path.c:615
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "La definició de l'índex de la matriu «%*s» no és vàlida"
+
+#: ../json-glib/json-reader.c:464
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr ""
+"El node actual és de tipus «%s», però s'esperava una matriu, o bé, un "
+"objecte."
+
+#: ../json-glib/json-reader.c:476
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "L'índex «%d» és més gran que la mida de la matriu a la posició actual."
+
+#: ../json-glib/json-reader.c:493
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr "L'índex «%d» és més gran que la mida de l'objecte a la posició actual."
+
+#: ../json-glib/json-reader.c:577 ../json-glib/json-reader.c:730
+#: ../json-glib/json-reader.c:781 ../json-glib/json-reader.c:819
+#: ../json-glib/json-reader.c:857 ../json-glib/json-reader.c:895
+#: ../json-glib/json-reader.c:933 ../json-glib/json-reader.c:978
+#: ../json-glib/json-reader.c:1014 ../json-glib/json-reader.c:1040
+msgid "No node available at the current position"
+msgstr "No hi ha cap node disponible a la posició actual"
+
+#: ../json-glib/json-reader.c:584
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "A la posició actual hi ha un «%s» i no una matriu"
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "El node actual és de tipus «%s», però s'esperava un objecte."
+
+#: ../json-glib/json-reader.c:654
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "El membre «%s» no està definit a l'objecte de la posició actual."
+
+#: ../json-glib/json-reader.c:737 ../json-glib/json-reader.c:788
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "A la posició actual hi ha un «%s» i no un objecte"
+
+#: ../json-glib/json-reader.c:828 ../json-glib/json-reader.c:866
+#: ../json-glib/json-reader.c:904 ../json-glib/json-reader.c:942
+#: ../json-glib/json-reader.c:987
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "A la posició actual hi ha un «%s» i no un valor"
+
+#: ../json-glib/json-reader.c:950
+msgid "The current position does not hold a string type"
+msgstr "A la posició actual no hi ha una cadena"
--- /dev/null
+# Czech translation for json-glib.
+# Copyright (C) 2011 json-glib's COPYRIGHT HOLDER
+# This file is distributed under the same license as the json-glib package.
+# Marek Černocký <marek@manet.cz>, 2011, 2012, 2014.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2013-12-19 14:30+0000\n"
+"PO-Revision-Date: 2014-01-18 22:45+0100\n"
+"Last-Translator: Marek Černocký <marek@manet.cz>\n"
+"Language-Team: Czech <gnome-cs-list@gnome.org>\n"
+"Language: cs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+"X-Generator: Gtranslator 2.91.6\n"
+
+#: ../json-glib/json-glib-format.c:41
+msgid "Prettify output"
+msgstr "Lépe upravit výstup"
+
+#: ../json-glib/json-glib-format.c:42
+msgid "Indentation spaces"
+msgstr "Mezery pro odsazení"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:68 ../json-glib/json-glib-validate.c:61
+#, c-format
+msgid "%s: %s: error opening file: %s\n"
+msgstr "%s: %s: chyba při otevírání souboru: %s\n"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:80 ../json-glib/json-glib-validate.c:73
+#, c-format
+msgid "%s: %s: error parsing file: %s\n"
+msgstr "%s: %s: chyba při analýze souboru: %s\n"
+
+#. Translators: the first %s is the program name, the
+#. * second one is the URI of the file.
+#.
+#: ../json-glib/json-glib-format.c:99
+#, c-format
+msgid "%s: %s: error writing to stdout"
+msgstr "%s: %s: chyba při zápisu do standardního výstupu"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:119 ../json-glib/json-glib-validate.c:85
+#, c-format
+msgid "%s: %s: error closing: %s\n"
+msgstr "%s: %s: chyba při zavírání: %s\n"
+
+#: ../json-glib/json-glib-format.c:148 ../json-glib/json-glib-validate.c:113
+msgid "FILE"
+msgstr "SOUBOR"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-format.c:151
+msgid "Format JSON files."
+msgstr "Formátovat soubory JSON."
+
+#: ../json-glib/json-glib-format.c:152
+msgid "json-glib-format formats JSON resources."
+msgstr "json-glib-format formátuje prostředky JSON."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:169 ../json-glib/json-glib-validate.c:134
+#, c-format
+msgid "Error parsing commandline options: %s\n"
+msgstr "Chyba při zpracování přepínačů příkazového řádku: %s\n"
+
+#: ../json-glib/json-glib-format.c:171 ../json-glib/json-glib-format.c:185
+#: ../json-glib/json-glib-validate.c:136 ../json-glib/json-glib-validate.c:150
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Pro více informací zkuste použít „%s --help“."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:183 ../json-glib/json-glib-validate.c:148
+#, c-format
+msgid "%s: missing files"
+msgstr "%s: schází soubory"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-validate.c:116
+msgid "Validate JSON files."
+msgstr "Ověřit platnost souborů JSON."
+
+#: ../json-glib/json-glib-validate.c:117
+msgid "json-glib-validate validates JSON data at the given URI."
+msgstr "json-glib-validate ověřuje platnost dat JSON na zadané adrese URI."
+
+#: ../json-glib/json-gobject.c:917
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "Očekává se objekt JSON, ale kořenový uzel je typu „%s“"
+
+#: ../json-glib/json-gvariant.c:545
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "Neočekávaný typ „%s“ v uzlu JSON"
+
+#: ../json-glib/json-gvariant.c:615
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "Schází prvky v poli JSON, aby to byla n-tice"
+
+#: ../json-glib/json-gvariant.c:643
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "Schází uzavírací symbol „)“ v typu n-tice GVariant"
+
+#: ../json-glib/json-gvariant.c:651
+msgid "Unexpected extra elements in JSON array"
+msgstr "Neočekávané dodatečné prvky v poli JSON"
+
+#: ../json-glib/json-gvariant.c:930
+msgid "Invalid string value converting to GVariant"
+msgstr "Neplatná hodnota typu řetězec převáděná na GVariant"
+
+#: ../json-glib/json-gvariant.c:986
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr "Záznam slovníku GVariant očekává objekt JSON s právě jedním členem"
+
+#: ../json-glib/json-gvariant.c:1266
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "Třída GVariant „%c“ není podporována"
+
+#: ../json-glib/json-gvariant.c:1314
+msgid "Invalid GVariant signature"
+msgstr "Neplatná signatura GVariant"
+
+#: ../json-glib/json-gvariant.c:1362
+msgid "JSON data is empty"
+msgstr "Data JSON jsou prázdná"
+
+#: ../json-glib/json-parser.c:817
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: Chyba zpracování: %s"
+
+#: ../json-glib/json-parser.c:885
+msgid "JSON data must be UTF-8 encoded"
+msgstr "Data JSON musí být kódována v UTF-8"
+
+#: ../json-glib/json-path.c:438
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "Ve výrazu JSONPath je dovolen pouze jeden kořenový uzel"
+
+#: ../json-glib/json-path.c:447
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "Kořenový uzel následován neplatným znakem „%c“"
+
+#: ../json-glib/json-path.c:487
+msgid "Missing member name or wildcard after . character"
+msgstr "Schází název člena nebo divoký znak po znaku tečky."
+
+#: ../json-glib/json-path.c:561
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "Chybný výraz dílu „%*s“"
+
+#: ../json-glib/json-path.c:605
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "Neplatná definice množiny „%*s“"
+
+#: ../json-glib/json-path.c:658
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "Neplatná definice dílu „%*s“"
+
+#: ../json-glib/json-path.c:686
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "Neplatná definice indexu pole „%*s“"
+
+#: ../json-glib/json-path.c:705
+#, c-format
+msgid "Invalid first character '%c'"
+msgstr "Neplatný první znak „%c“"
+
+#: ../json-glib/json-reader.c:457
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr "Aktuální uzel je typu „%s“, ale bylo očekáváno pole nebo objekt."
+
+#: ../json-glib/json-reader.c:469
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "Index „%d“ je větší než velikost pole na aktuální pozici."
+
+#: ../json-glib/json-reader.c:486
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr "Index „%d“ je větší než velikost objektu na aktuální pozici."
+
+#: ../json-glib/json-reader.c:570 ../json-glib/json-reader.c:723
+#: ../json-glib/json-reader.c:774 ../json-glib/json-reader.c:812
+#: ../json-glib/json-reader.c:850 ../json-glib/json-reader.c:888
+#: ../json-glib/json-reader.c:926 ../json-glib/json-reader.c:971
+#: ../json-glib/json-reader.c:1007 ../json-glib/json-reader.c:1033
+msgid "No node available at the current position"
+msgstr "Na aktuální pozici není k dispozici žádný uzel"
+
+#: ../json-glib/json-reader.c:577
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "Aktuální pozice obsahuje „%s“ a ne pole"
+
+#: ../json-glib/json-reader.c:640
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "Aktuální uzel je typu „%s“, ale byl očekáván objekt."
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "Člen „%s“ není na aktuálním pozici v objektu definován."
+
+#: ../json-glib/json-reader.c:730 ../json-glib/json-reader.c:781
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "Aktuální pozice obsahuje „%s“ a ne objekt"
+
+#: ../json-glib/json-reader.c:821 ../json-glib/json-reader.c:859
+#: ../json-glib/json-reader.c:897 ../json-glib/json-reader.c:935
+#: ../json-glib/json-reader.c:980
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "Aktuální pozice obsahuje „%s“ a ne hodnotu"
+
+#: ../json-glib/json-reader.c:943
+msgid "The current position does not hold a string type"
+msgstr "Aktuální pozice neobsahuje typ string (řetězec)"
--- /dev/null
+# Danish translation for json-glib.
+# Copyright (C) 2012-2013 json-glib's developers
+# This file is distributed under the same license as the json-glib package.
+#
+# Ask Hjorth Larsen <asklarsen@gmail.com>, 2012-2013.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib\n"
+"POT-Creation-Date: 2014-03-19 22:31+0100\n"
+"PO-Revision-Date: 2014-03-15 13:53+0100\n"
+"Last-Translator: Ask Hjorth Larsen <asklarsen@gmail.com>\n"
+"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
+"Language: da\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../json-glib/json-glib-format.c:50
+msgid "Prettify output"
+msgstr "Gør udskrift pæn"
+
+#: ../json-glib/json-glib-format.c:51
+msgid "Indentation spaces"
+msgstr "Indrykningsmellemrum"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:77 ../json-glib/json-glib-validate.c:63
+#, c-format
+msgid "%s: %s: error opening file: %s\n"
+msgstr "%s: %s: fejl ved åbning af fil: %s\n"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:89 ../json-glib/json-glib-validate.c:75
+#, c-format
+msgid "%s: %s: error parsing file: %s\n"
+msgstr "%s: %s: fejl ved fortolkning af fil: %s\n"
+
+#. Translators: the first %s is the program name, the
+#. * second one is the URI of the file.
+#.
+#: ../json-glib/json-glib-format.c:108
+#, c-format
+msgid "%s: %s: error writing to stdout"
+msgstr "%s: %s: fejl ved skrivning til stdout"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:128 ../json-glib/json-glib-validate.c:87
+#, c-format
+msgid "%s: %s: error closing: %s\n"
+msgstr "%s: %s: fejl ved lukning: %s\n"
+
+#: ../json-glib/json-glib-format.c:157 ../json-glib/json-glib-validate.c:115
+msgid "FILE"
+msgstr "FIL"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-format.c:160
+msgid "Format JSON files."
+msgstr "Formatér JSON-filer."
+
+#: ../json-glib/json-glib-format.c:161
+msgid "json-glib-format formats JSON resources."
+msgstr "json-glib-format formaterer JSON-ressourcer."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:178 ../json-glib/json-glib-validate.c:136
+#, c-format
+msgid "Error parsing commandline options: %s\n"
+msgstr "Fejl ved fortolkning af kommandolinjetilvalg: %s\n"
+
+#: ../json-glib/json-glib-format.c:180 ../json-glib/json-glib-format.c:194
+#: ../json-glib/json-glib-validate.c:138 ../json-glib/json-glib-validate.c:152
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Prøv \"%s --help\" for at få yderligere oplysninger."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:192 ../json-glib/json-glib-validate.c:150
+#, c-format
+msgid "%s: missing files"
+msgstr "%s: manglende filer"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-validate.c:118
+msgid "Validate JSON files."
+msgstr "Kontrollér JSON-filer."
+
+#: ../json-glib/json-glib-validate.c:119
+msgid "json-glib-validate validates JSON data at the given URI."
+msgstr "json-glib-validate kontrollerer JSON-data på den givne URI."
+
+#: ../json-glib/json-gobject.c:915
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "Forventer et JSON-objekt, men rodknuden er af typen \"%s\""
+
+#: ../json-glib/json-gvariant.c:523
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "Uventet type \"%s\" i JSON-tilstand"
+
+#: ../json-glib/json-gvariant.c:593
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "Manglende elementer i JSON-array for at kunne være en tuple"
+
+#: ../json-glib/json-gvariant.c:621
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "Manglende lukkesymbol \")\" i GVariant-tupletype"
+
+#: ../json-glib/json-gvariant.c:629
+msgid "Unexpected extra elements in JSON array"
+msgstr "Uventet ekstra elementer i JSON-array"
+
+#: ../json-glib/json-gvariant.c:908
+msgid "Invalid string value converting to GVariant"
+msgstr "Ugyldig strengværdi ved konvertering til GVariant"
+
+#: ../json-glib/json-gvariant.c:964
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr "En GVariant-ordbogspost forventer et JSON-objekt med nøjagtigt ét tal"
+
+#: ../json-glib/json-gvariant.c:1244
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "GVariant-klassen \"%c\" understøttes ikke"
+
+#: ../json-glib/json-gvariant.c:1292
+msgid "Invalid GVariant signature"
+msgstr "Ugyldig GVariant-underskrift"
+
+#: ../json-glib/json-gvariant.c:1340
+msgid "JSON data is empty"
+msgstr "JSON-data er tom"
+
+#: ../json-glib/json-parser.c:815
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: Fortolkningsfejl: %s"
+
+#: ../json-glib/json-parser.c:883
+msgid "JSON data must be UTF-8 encoded"
+msgstr "JSON-data skal være UTF-8-kodet"
+
+#: ../json-glib/json-path.c:388
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "Kun en rodknude tillades i et JSONPath-udtryk"
+
+#: ../json-glib/json-path.c:397
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "Rodknuden efterfølges af et ugyldigt tegn, \"%c\""
+
+#: ../json-glib/json-path.c:437
+msgid "Missing member name or wildcard after . character"
+msgstr "Manglende medlemsnavn eller wildcard efter .-tegn"
+
+#: ../json-glib/json-path.c:511
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "Misdannet slice-udtryk \"%*s\""
+
+#: ../json-glib/json-path.c:555
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "Ugyldig mængdedefinition \"%*s\""
+
+#: ../json-glib/json-path.c:608
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "Ugyldig slice-definition \"%*s\""
+
+#: ../json-glib/json-path.c:636
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "Ugyldig arrayindeksdefinition \"%*s\""
+
+#: ../json-glib/json-path.c:655
+#, c-format
+msgid "Invalid first character '%c'"
+msgstr "Ugyldigt første tegn \"%c\""
+
+#: ../json-glib/json-reader.c:456
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr ""
+"Den nuværende knude er af typen \"%s\", men der blev forventet et array "
+"eller et objekt."
+
+#: ../json-glib/json-reader.c:468
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr ""
+"Indekset \"%d\" er større end størrelsen af arrayet ved nuværende position."
+
+#: ../json-glib/json-reader.c:485
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr ""
+"Indekset \"%d\" er større end størrelsen af objektet på den nuværende "
+"position."
+
+#: ../json-glib/json-reader.c:570 ../json-glib/json-reader.c:724
+#: ../json-glib/json-reader.c:775 ../json-glib/json-reader.c:813
+#: ../json-glib/json-reader.c:851 ../json-glib/json-reader.c:889
+#: ../json-glib/json-reader.c:927 ../json-glib/json-reader.c:972
+#: ../json-glib/json-reader.c:1008 ../json-glib/json-reader.c:1034
+msgid "No node available at the current position"
+msgstr "Ingen tilgængelig knude på nuværende position"
+
+#: ../json-glib/json-reader.c:577
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "Den nuværende position holder en \"%s\" og ikke et array"
+
+#: ../json-glib/json-reader.c:640
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr ""
+"Den nuværende knude er af typen \"%s\", men der blev forventet et objekt."
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr ""
+"Medlemmet \"%s\" er ikke defineret i objektet på den nuværende position."
+
+#: ../json-glib/json-reader.c:731 ../json-glib/json-reader.c:782
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "Den nuværende position indeholder en \"%s\" og ikke et objekt"
+
+#: ../json-glib/json-reader.c:822 ../json-glib/json-reader.c:860
+#: ../json-glib/json-reader.c:898 ../json-glib/json-reader.c:936
+#: ../json-glib/json-reader.c:981
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "Den nuværende position indeholder en \"%s\" og ikke en værdi"
+
+#: ../json-glib/json-reader.c:944
+msgid "The current position does not hold a string type"
+msgstr "Den nuværende position indeholder ikke en strengtype"
--- /dev/null
+# German translation for json-glib.
+# Copyright (C) 2011 json-glib's COPYRIGHT HOLDER
+# This file is distributed under the same license as the json-glib package.
+# Mario Blättermann <mario.blaettermann@gmail.com>, 2011.
+# Wolfgang Stöggl <c72578@yahoo.de>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2014-04-24 21:03+0000\n"
+"PO-Revision-Date: 2014-04-27 20:32+0100\n"
+"Last-Translator: Benjamin Steinwender <b@stbe.at>\n"
+"Language-Team: Deutsch <gnome-de@gnome.org>\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 1.6.4\n"
+
+#: ../json-glib/json-glib-format.c:50
+msgid "Prettify output"
+msgstr "Ausgabe hübsch gestalten"
+
+#: ../json-glib/json-glib-format.c:51
+msgid "Indentation spaces"
+msgstr "Einrückungsleerzeichen"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:77 ../json-glib/json-glib-validate.c:63
+#, c-format
+msgid "%s: %s: error opening file: %s\n"
+msgstr "%s: %s: Fehler beim Öffnen der Datei: %s\n"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:89 ../json-glib/json-glib-validate.c:75
+#, c-format
+msgid "%s: %s: error parsing file: %s\n"
+msgstr "%s: %s: Fehler beim Verarbeiten der Datei: %s\n"
+
+#. Translators: the first %s is the program name, the
+#. * second one is the URI of the file.
+#.
+#: ../json-glib/json-glib-format.c:108
+#, c-format
+msgid "%s: %s: error writing to stdout"
+msgstr "%s: %s: Fehler beim Schreiben auf die Standardausgabe"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:128 ../json-glib/json-glib-validate.c:87
+#, c-format
+msgid "%s: %s: error closing: %s\n"
+msgstr "%s: %s: Fehler beim Schließen: %s\n"
+
+#: ../json-glib/json-glib-format.c:157 ../json-glib/json-glib-validate.c:115
+msgid "FILE"
+msgstr "DATEI"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-format.c:160
+msgid "Format JSON files."
+msgstr "JSON-Datei formatieren."
+
+#: ../json-glib/json-glib-format.c:161
+msgid "json-glib-format formats JSON resources."
+msgstr "json-glib-format formatiert JSON-Ressourcen."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:178 ../json-glib/json-glib-validate.c:136
+#, c-format
+msgid "Error parsing commandline options: %s\n"
+msgstr "Fehler beim Verarbeiten der Befehlszeilenoptionen: %s\n"
+
+#: ../json-glib/json-glib-format.c:180 ../json-glib/json-glib-format.c:194
+#: ../json-glib/json-glib-validate.c:138 ../json-glib/json-glib-validate.c:152
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Versuchen Sie »%s --help« für mehr Informationen."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:192 ../json-glib/json-glib-validate.c:150
+#, c-format
+msgid "%s: missing files"
+msgstr "%s: Fehlende Dateien"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-validate.c:118
+msgid "Validate JSON files."
+msgstr "JSON-Datei auf Gültigkeit prüfen."
+
+#: ../json-glib/json-glib-validate.c:119
+msgid "json-glib-validate validates JSON data at the given URI."
+msgstr "json-glib-validate prüft JSON-Daten der angegebenen Adresse."
+
+#: ../json-glib/json-gobject.c:915
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "Ein JSON-Objekt wurde erwartet, aber der Root-Knoten hat den Typ »%s«"
+
+#: ../json-glib/json-gvariant.c:523
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "Unerwarteter Typ »%s« im JSON-Knoten"
+
+#: ../json-glib/json-gvariant.c:593
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "Elemente im JSON-Array fehlen, um konform zu einem Tupel zu sein"
+
+#: ../json-glib/json-gvariant.c:621
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "Schließende Klammer »)« im Typ des GVariant-Tupels fehlt"
+
+#: ../json-glib/json-gvariant.c:629
+msgid "Unexpected extra elements in JSON array"
+msgstr "Unerwartete zusätzliche Elemente im JSON-Array"
+
+#: ../json-glib/json-gvariant.c:908
+msgid "Invalid string value converting to GVariant"
+msgstr "Ungültiger Zeichenkettenwert zur GVariant-Umwandlung"
+
+#: ../json-glib/json-gvariant.c:964
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr ""
+"Ein GVariant-Verzeichniseintrag erwartet ein JSON-Objekt mit genau einem "
+"Mitglied"
+
+#: ../json-glib/json-gvariant.c:1244
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "GVariant-Klasse »%c« wird nicht unterstützt"
+
+#: ../json-glib/json-gvariant.c:1292
+msgid "Invalid GVariant signature"
+msgstr "Ungültige GVariant-Signatur"
+
+#: ../json-glib/json-gvariant.c:1340
+msgid "JSON data is empty"
+msgstr "JSON-Daten sind leer"
+
+#: ../json-glib/json-parser.c:815
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: Verarbeitungsfehler: %s"
+
+#: ../json-glib/json-parser.c:883
+msgid "JSON data must be UTF-8 encoded"
+msgstr "JSON-Daten müssen in UTF-8 kodiert sein"
+
+#: ../json-glib/json-path.c:388
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "Im JSONPath-Ausdruck ist nur ein einziger Root-Knoten erlaubt"
+
+#: ../json-glib/json-path.c:397
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "Auf den Root-Knoten folgt das ungültige Zeichen »%c«"
+
+#: ../json-glib/json-path.c:437
+msgid "Missing member name or wildcard after . character"
+msgstr ""
+
+#: ../json-glib/json-path.c:511
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "Ungültiger Slice-Ausdruck »%*s«"
+
+#: ../json-glib/json-path.c:555
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "Ungültige »set«-Definition »%*s«"
+
+#: ../json-glib/json-path.c:608
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "Ungültige »slice«-Definition »%*s«"
+
+#: ../json-glib/json-path.c:636
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "Ungültige Array-Index-Definition »%*s«"
+
+#: ../json-glib/json-path.c:655
+#, c-format
+msgid "Invalid first character '%c'"
+msgstr "Ungültiges erstes Zeichen »%c«"
+
+#: ../json-glib/json-reader.c:456
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr ""
+"Der Typ des aktuellen Knotens ist »%s«, aber ein Array oder Objekt wurde "
+"erwartet."
+
+#: ../json-glib/json-reader.c:468
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr ""
+"Der Index »%d« übersteigt die Größe des Arrays an der aktuellen Position."
+
+#: ../json-glib/json-reader.c:485
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr ""
+"Der Index »%d« übersteigt die Größe des Objekts an der aktuellen Position."
+
+#: ../json-glib/json-reader.c:570 ../json-glib/json-reader.c:724
+#: ../json-glib/json-reader.c:775 ../json-glib/json-reader.c:813
+#: ../json-glib/json-reader.c:851 ../json-glib/json-reader.c:889
+#: ../json-glib/json-reader.c:927 ../json-glib/json-reader.c:972
+#: ../json-glib/json-reader.c:1008 ../json-glib/json-reader.c:1034
+msgid "No node available at the current position"
+msgstr "An der aktuellen Position ist kein Knoten verfügbar"
+
+#: ../json-glib/json-reader.c:577
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "An der aktuellen Position befindet sich ein »%s« und kein Array"
+
+#: ../json-glib/json-reader.c:640
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "Der aktuelle Knoten hat den Typ »%s«, aber ein Objekt wurde erwartet."
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr ""
+"Das Mitglied »%s« ist im Objekt an der aktuellen Position nicht definiert."
+
+#: ../json-glib/json-reader.c:731 ../json-glib/json-reader.c:782
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "An der aktuellen Position befindet sich ein »%s« und kein Objekt"
+
+#: ../json-glib/json-reader.c:822 ../json-glib/json-reader.c:860
+#: ../json-glib/json-reader.c:898 ../json-glib/json-reader.c:936
+#: ../json-glib/json-reader.c:981
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr ""
+"An der aktuellen Position befindet sich ein »%s«, welches kein Wert ist"
+
+#: ../json-glib/json-reader.c:944
+msgid "The current position does not hold a string type"
+msgstr "An der aktuellen Position befindet sich kein Zeichenketten-Typ"
+
+#~ msgid "The current position does not hold an integer type"
+#~ msgstr "An der aktuellen Position befindet sich kein Ganzzahl-Typ"
+
+#~ msgid "The current position does not hold a floating point type"
+#~ msgstr "An der aktuellen Position befindet sich kein Gleitkomma-Typ"
+
+#~ msgid "The current position does not hold a boolean type"
+#~ msgstr "An der aktuellen Position befindet sich kein boolescher Typ"
--- /dev/null
+# Greek translation for json-glib.
+# Copyright (C) 2012 json-glib's COPYRIGHT HOLDER
+# This file is distributed under the same license as the json-glib package.
+# Dimitris Spingos <dmtrs32@gmail.com>, 2012.
+# Dimitris Spingos (Δημήτρης Σπίγγος) <dmtrs32@gmail.com>, 2012, 2013, 2014.
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2014-01-03 08:06+0000\n"
+"PO-Revision-Date: 2014-01-04 10:25+0300\n"
+"Last-Translator: Dimitris Spingos (Δημήτρης Σπίγγος) <dmtrs32@gmail.com>\n"
+"Language-Team: team@lists.gnome.gr\n"
+"Language: el\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Virtaal 0.7.0\n"
+"X-Project-Style: gnome\n"
+
+#: ../json-glib/json-glib-format.c:41
+msgid "Prettify output"
+msgstr "Ωραιοποίηση εξόδου"
+
+#: ../json-glib/json-glib-format.c:42
+msgid "Indentation spaces"
+msgstr "Διαστήματα εσοχών"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:68 ../json-glib/json-glib-validate.c:61
+#, c-format
+msgid "%s: %s: error opening file: %s\n"
+msgstr "%s: %s: σφάλμα ανοίγματος αρχείου: %s\n"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:80 ../json-glib/json-glib-validate.c:73
+#, c-format
+msgid "%s: %s: error parsing file: %s\n"
+msgstr "%s: %s: σφάλμα ανάλυσης αρχείου: %s\n"
+
+#. Translators: the first %s is the program name, the
+#. * second one is the URI of the file.
+#.
+#: ../json-glib/json-glib-format.c:99
+#, c-format
+msgid "%s: %s: error writing to stdout"
+msgstr "%s: %s: σφάλμα εγγραφής στην τυπική έξοδο"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:119 ../json-glib/json-glib-validate.c:85
+#, c-format
+msgid "%s: %s: error closing: %s\n"
+msgstr "%s: %s: σφάλμα κλεισίματος: %s\n"
+
+#: ../json-glib/json-glib-format.c:148 ../json-glib/json-glib-validate.c:113
+msgid "FILE"
+msgstr "ΑΡΧΕΙΟ"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-format.c:151
+msgid "Format JSON files."
+msgstr "Μορφή αρχείων JSON."
+
+#: ../json-glib/json-glib-format.c:152
+msgid "json-glib-format formats JSON resources."
+msgstr "το json-glib-format μορφοποιεί τους πόρους JSON."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:169 ../json-glib/json-glib-validate.c:134
+#, c-format
+msgid "Error parsing commandline options: %s\n"
+msgstr "Σφάλμα ανάλυσης επιλογών της γραμμής εντολών: %s\n"
+
+#: ../json-glib/json-glib-format.c:171 ../json-glib/json-glib-format.c:185
+#: ../json-glib/json-glib-validate.c:136 ../json-glib/json-glib-validate.c:150
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Δοκιμάστε \"%s --help\" για περισσότερες πληροφορίες."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:183 ../json-glib/json-glib-validate.c:148
+#, c-format
+msgid "%s: missing files"
+msgstr "%s: λείπουν αρχεία"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-validate.c:116
+msgid "Validate JSON files."
+msgstr "Επικυρώστε αρχεία JSON."
+
+#: ../json-glib/json-glib-validate.c:117
+msgid "json-glib-validate validates JSON data at the given URI."
+msgstr "το json-glib-validate επικυρώνει δεδομένα JSON στο δοσμένο URI."
+
+#: ../json-glib/json-gobject.c:917
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "Αναμένεται αντικείμενο JSON, αλλά ο αρχικός κόμβος είναι τύπου `%s'"
+
+#: ../json-glib/json-gvariant.c:545
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "Αναπάντεχος τύπος '%s' σε κόμβο JSON"
+
+#: ../json-glib/json-gvariant.c:615
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "Λείπουν στοιχεία σε πίνακα JSON για συμφωνία με πλειάδα"
+
+#: ../json-glib/json-gvariant.c:643
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "Λείπει το σύμβολο κλεισίματος ')' στον τύπο πλειάδας GVariant"
+
+#: ../json-glib/json-gvariant.c:651
+msgid "Unexpected extra elements in JSON array"
+msgstr "Αναπάντεχα πρόσθετα στοιχεία σε πίνακα JSON"
+
+#: ../json-glib/json-gvariant.c:930
+msgid "Invalid string value converting to GVariant"
+msgstr "Άκυρη τιμή συμβολοσειράς μετατροπής σε GVariant"
+
+#: ../json-glib/json-gvariant.c:986
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr ""
+"Μια καταχώριση λεξικού GVariant περιμένει ένα αντικείμενο JSON με ακριβώς "
+"ένα μέλος"
+
+#: ../json-glib/json-gvariant.c:1266
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "Η κλάση GVariant '%c' δεν υποστηρίζεται"
+
+#: ../json-glib/json-gvariant.c:1314
+msgid "Invalid GVariant signature"
+msgstr "Άκυρη υπογραφή GVariant"
+
+#: ../json-glib/json-gvariant.c:1362
+msgid "JSON data is empty"
+msgstr "Τα δεδομένα JSON είναι κενά"
+
+#: ../json-glib/json-parser.c:817
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: Σφάλμα ανάλυσης: %s"
+
+#: ../json-glib/json-parser.c:885
+msgid "JSON data must be UTF-8 encoded"
+msgstr "Τα δεδομένα JSON πρέπει να είναι κωδικοποιημένα ως UTF-8"
+
+#: ../json-glib/json-path.c:438
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "Μόνο ένας κόμβος υπερχρήστη επιτρέπεται σε μια έκφραση JSONPath"
+
+#: ../json-glib/json-path.c:447
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "Κόμβος υπερχρήστη ακολουθούμενος από άκυρο χαρακτήρα '%c'"
+
+#: ../json-glib/json-path.c:487
+msgid "Missing member name or wildcard after . character"
+msgstr "Λείπει όνομα μέλους ή συμβόλου υποκατάστασης μετά τον χαρακτήρα ."
+
+#: ../json-glib/json-path.c:561
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "Κακοσχηματισμένη έκφραση τεμαχισμού '%*s'"
+
+#: ../json-glib/json-path.c:605
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "Άκυρος ορισμός συνόλου '%*s'"
+
+#: ../json-glib/json-path.c:658
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "Άκυρος ορισμός τεμαχισμού '%*s'"
+
+#: ../json-glib/json-path.c:686
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "Άκυρος ορισμός δείκτη πίνακα '%*s'"
+
+#: ../json-glib/json-path.c:705
+#, c-format
+msgid "Invalid first character '%c'"
+msgstr "Άκυρος ο πρώτος χαρακτήρας '%c'"
+
+#: ../json-glib/json-reader.c:457
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr ""
+"Ο τρέχον κόμβος είναι τύπου '%s', αλλά αναμενόταν ένας πίνακας ή ένα "
+"αντικείμενο."
+
+#: ../json-glib/json-reader.c:469
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr ""
+"Ο δείκτης '%d' είναι μεγαλύτερος από το μέγεθος του πίνακα στην τρέχουσα "
+"θέση."
+
+#: ../json-glib/json-reader.c:486
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr ""
+"Ο δείκτης '%d' είναι μεγαλύτερος από το μέγεθος του αντικειμένου στην "
+"τρέχουσα θέση."
+
+#: ../json-glib/json-reader.c:570 ../json-glib/json-reader.c:723
+#: ../json-glib/json-reader.c:774 ../json-glib/json-reader.c:812
+#: ../json-glib/json-reader.c:850 ../json-glib/json-reader.c:888
+#: ../json-glib/json-reader.c:926 ../json-glib/json-reader.c:971
+#: ../json-glib/json-reader.c:1007 ../json-glib/json-reader.c:1033
+msgid "No node available at the current position"
+msgstr "Κανένας διαθέσιμος κόμβος στην τρέχουσα θέση"
+
+#: ../json-glib/json-reader.c:577
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "Η τρέχουσα θέση περιέχει ένα '%s' και όχι ένα πίνακα"
+
+#: ../json-glib/json-reader.c:640
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "Ο τρέχον κόμβος είναι του τύπου '%s', αλλά αναμενόταν ένα αντικείμενο."
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "Το μέλος '%s' δεν ορίζεται στο αντικείμενο στην τρέχουσα θέση."
+
+#: ../json-glib/json-reader.c:730 ../json-glib/json-reader.c:781
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "Η τρέχουσα θέση περιέχει ένα '%s' και όχι ένα αντικείμενο"
+
+#: ../json-glib/json-reader.c:821 ../json-glib/json-reader.c:859
+#: ../json-glib/json-reader.c:897 ../json-glib/json-reader.c:935
+#: ../json-glib/json-reader.c:980
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "Η τρέχουσα θέση περιέχει ένα '%s' και όχι μια τιμή"
+
+#: ../json-glib/json-reader.c:943
+msgid "The current position does not hold a string type"
+msgstr "Η τρέχουσα θέση δεν περιέχει τύπο συμβολοσειράς"
+
+#~ msgid "The current position does not hold an integer type"
+#~ msgstr "Η τρέχουσα θέση δεν περιέχει ακέραιο τύπο"
+
+#~ msgid "The current position does not hold a floating point type"
+#~ msgstr "Η τρέχουσα θέση δεν περιέχει τύπο κινητής υποδιαστολής"
+
+#~ msgid "The current position does not hold a boolean type"
+#~ msgstr "Η τρέχουσα θέση δεν περιέχει τύπο boolean"
--- /dev/null
+# British English translation for json-glib.
+# Copyright (C) 2012 json-glib's COPYRIGHT HOLDER
+# This file is distributed under the same license as the json-glib package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2012-09-04 16:18+0000\n"
+"PO-Revision-Date: 2012-09-04 16:18+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: British English <en_GB@li.org>\n"
+"Language: en_GB\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);;\n"
+
+#: ../json-glib/json-gobject.c:934
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "Expecting a JSON object, but the root node is of type `%s'"
+
+#: ../json-glib/json-gvariant.c:539
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "Unexpected type '%s' in JSON node"
+
+#: ../json-glib/json-gvariant.c:609
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "Missing elements in JSON array to conform to a tuple"
+
+#: ../json-glib/json-gvariant.c:637
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "Missing closing symbol ')' in the GVariant tuple type"
+
+#: ../json-glib/json-gvariant.c:645
+msgid "Unexpected extra elements in JSON array"
+msgstr "Unexpected extra elements in JSON array"
+
+#: ../json-glib/json-gvariant.c:924
+msgid "Invalid string value converting to GVariant"
+msgstr "Invalid string value converting to GVariant"
+
+#: ../json-glib/json-gvariant.c:980
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+
+#: ../json-glib/json-gvariant.c:1236
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "GVariant class '%c' not supported"
+
+#: ../json-glib/json-gvariant.c:1281
+msgid "Invalid GVariant signature"
+msgstr "Invalid GVariant signature"
+
+#: ../json-glib/json-gvariant.c:1326
+msgid "JSON data is empty"
+msgstr "JSON data is empty"
+
+#: ../json-glib/json-parser.c:818
+#, c-format
+msgid "%s:%d: Parse error: %s"
+msgstr "%s:%d: Parse error: %s"
+
+#: ../json-glib/json-path.c:375
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "Only one root node is allowed in a JSONPath expression"
+
+#: ../json-glib/json-path.c:384
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "Root node followed by invalid character '%c'"
+
+#: ../json-glib/json-path.c:490
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "Malformed slice expression '%*s'"
+
+#: ../json-glib/json-path.c:534
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "Invalid set definition '%*s'"
+
+#: ../json-glib/json-path.c:587
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "Invalid slice definition '%*s'"
+
+#: ../json-glib/json-path.c:615
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "Invalid array index definition '%*s'"
+
+#: ../json-glib/json-reader.c:463
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr ""
+"The current node is of type '%s', but an array or an object was expected."
+
+#: ../json-glib/json-reader.c:475
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr ""
+"The index '%d' is greater than the size of the array at the current position."
+
+#: ../json-glib/json-reader.c:492
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+
+#: ../json-glib/json-reader.c:576 ../json-glib/json-reader.c:729
+#: ../json-glib/json-reader.c:780 ../json-glib/json-reader.c:818
+#: ../json-glib/json-reader.c:856 ../json-glib/json-reader.c:894
+#: ../json-glib/json-reader.c:932 ../json-glib/json-reader.c:977
+#: ../json-glib/json-reader.c:1013 ../json-glib/json-reader.c:1039
+msgid "No node available at the current position"
+msgstr "No node available at the current position"
+
+#: ../json-glib/json-reader.c:583
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "The current position holds a '%s' and not an array"
+
+#: ../json-glib/json-reader.c:646
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "The current node is of type '%s', but an object was expected."
+
+#: ../json-glib/json-reader.c:653
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "The member '%s' is not defined in the object at the current position."
+
+#: ../json-glib/json-reader.c:736 ../json-glib/json-reader.c:787
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "The current position holds a '%s' and not an object"
+
+#: ../json-glib/json-reader.c:827 ../json-glib/json-reader.c:865
+#: ../json-glib/json-reader.c:903 ../json-glib/json-reader.c:941
+#: ../json-glib/json-reader.c:986
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "The current position holds a '%s' and not a value"
+
+#: ../json-glib/json-reader.c:949
+msgid "The current position does not hold a string type"
+msgstr "The current position does not hold a string type"
--- /dev/null
+# Esperanto translation for json-glib.
+# Copyright (C) 2013 Free Software Foundation, Inc.
+# This file is distributed under the same license as the json-glib package.
+# Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>, 2013.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2013-03-20 15:04+0000\n"
+"PO-Revision-Date: 2013-04-01 18:26+0200\n"
+"Last-Translator: Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>\n"
+"Language-Team: Esperanto <gnome-l10n-eo@lists.launchpad.net>\n"
+"Language: eo\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"X-Generator: Gtranslator 2.91.5\n"
+
+#: ../json-glib/json-gobject.c:925
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "Atendis JSON-objekton sed la radika nodo havas la tipon \"%s\""
+
+#: ../json-glib/json-gvariant.c:540
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "Neatendita tipo \"%s\" en JSON-nodo"
+
+#: ../json-glib/json-gvariant.c:610
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "Elementoj mankas en la JSON-tabelo por esti konforma al tupelo"
+
+#: ../json-glib/json-gvariant.c:638
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "Fermanta signo ')' mankas en la GVariant-tupelo-tipo"
+
+#: ../json-glib/json-gvariant.c:646
+msgid "Unexpected extra elements in JSON array"
+msgstr "Neatenditaj pluaj elementoj en JSON-tabelo"
+
+#: ../json-glib/json-gvariant.c:925
+msgid "Invalid string value converting to GVariant"
+msgstr "Nevalida signoĉena valoro por konverto al GVariant"
+
+#: ../json-glib/json-gvariant.c:981
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr "GVariant-vortaro-enigo atendas JSON-objekton kun ekzakte unu membro"
+
+#: ../json-glib/json-gvariant.c:1237
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "GVariant-klaso '%c' ne estas subtenata"
+
+#: ../json-glib/json-gvariant.c:1285
+msgid "Invalid GVariant signature"
+msgstr "Nevalida GVariant-subskribo"
+
+#: ../json-glib/json-gvariant.c:1333
+msgid "JSON data is empty"
+msgstr "JSON-datumoj estas malplenaj"
+
+#: ../json-glib/json-parser.c:825
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: Analiz-eraro: %s"
+
+#: ../json-glib/json-path.c:375
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "Nur unu 'Root'-nodo estas permesata en JSONPath-esprimo"
+
+#: ../json-glib/json-path.c:384
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "Malantaŭ la radika nodo sekvas nevalida signo \"%c\""
+
+#: ../json-glib/json-path.c:490
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "Nevalida segment-esprimo \"%*s\""
+
+#: ../json-glib/json-path.c:534
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "Nevalida \"set\"-difino \"%*s\""
+
+#: ../json-glib/json-path.c:587
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "Nevalida segment-difino \"%*s\""
+
+#: ../json-glib/json-path.c:615
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "Nevalida tebel-indeks-difino \"%*s\""
+
+#: ../json-glib/json-reader.c:464
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr ""
+"La tipo de la nuna nodo estas \"%s\", sed tabelo aŭ objekto estis atendita."
+
+#: ../json-glib/json-reader.c:476
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr ""
+"La indekso '%d' estas pli grande ol la grando de la tabelo ĉe la aktuala "
+"pozicio."
+
+#: ../json-glib/json-reader.c:493
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr ""
+"La indekso '%d' estas pli grande ol la grando de la objekto ĉe la aktuala "
+"pozicio."
+
+#: ../json-glib/json-reader.c:577 ../json-glib/json-reader.c:730
+#: ../json-glib/json-reader.c:781 ../json-glib/json-reader.c:819
+#: ../json-glib/json-reader.c:857 ../json-glib/json-reader.c:895
+#: ../json-glib/json-reader.c:933 ../json-glib/json-reader.c:978
+#: ../json-glib/json-reader.c:1014 ../json-glib/json-reader.c:1040
+msgid "No node available at the current position"
+msgstr "Neniu nodo estas ĉe la aktuala pozicio"
+
+#: ../json-glib/json-reader.c:584
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "La aktuala pozicio havas na '%s' kaj ne tabelon"
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "La aktuala nodo havas la tipon '%s', sed objekto estis atendita."
+
+#: ../json-glib/json-reader.c:654
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "La membro '%s' ne estas definita en la objekto ĉe la aktuala pozicio."
+
+#: ../json-glib/json-reader.c:737 ../json-glib/json-reader.c:788
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "La aktuala pozicio havas na '%s' kaj ne objekton"
+
+#: ../json-glib/json-reader.c:828 ../json-glib/json-reader.c:866
+#: ../json-glib/json-reader.c:904 ../json-glib/json-reader.c:942
+#: ../json-glib/json-reader.c:987
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "La aktuala pozicio havas na '%s' kaj ne valoron"
+
+#: ../json-glib/json-reader.c:950
+msgid "The current position does not hold a string type"
+msgstr "La aktuala pozicio ne havas signoĉenan tipon"
+
+#~ msgid "The current position does not hold an integer type"
+#~ msgstr "La aktuala pozicio ne havas entjeran tipon"
+
+#~ msgid "The current position does not hold a floating point type"
+#~ msgstr "La aktuala pozicio ne havas glitkoman tipon"
+
+#~ msgid "The current position does not hold a boolean type"
+#~ msgstr "La aktuala pozicio ne havas bulean tipon"
--- /dev/null
+# Spanish translation for json-glib.
+# Copyright (C) 2011 json-glib's COPYRIGHT HOLDER
+# This file is distributed under the same license as the json-glib package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# Daniel Mustieles <daniel.mustieles@gmail.com>, 2011, 2012, 2013.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2013-12-02 11:30+0000\n"
+"PO-Revision-Date: 2013-12-09 15:59+0100\n"
+"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
+"Language-Team: Español <gnome-es-list@gnome.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+"X-Generator: Gtranslator 2.91.5\n"
+
+#: ../json-glib/json-glib-format.c:41
+msgid "Prettify output"
+msgstr "Embellecer la salida"
+
+#: ../json-glib/json-glib-format.c:42
+msgid "Indentation spaces"
+msgstr "Espacios de sangrado"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:68 ../json-glib/json-glib-validate.c:61
+#, c-format
+msgid "%s: %s: error opening file: %s\n"
+msgstr "%s: %s: error al abrir el archivo: %s\n"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:80 ../json-glib/json-glib-validate.c:73
+#, c-format
+msgid "%s: %s: error parsing file: %s\n"
+msgstr "%s: %s: error al analizar: %s\n"
+
+#. Translators: the first %s is the program name, the
+#. * second one is the URI of the file.
+#.
+#: ../json-glib/json-glib-format.c:99
+#, c-format
+msgid "%s: %s: error writing to stdout"
+msgstr "%s: %s: error al escribir en la salida estándar"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:119 ../json-glib/json-glib-validate.c:85
+#, c-format
+msgid "%s: %s: error closing: %s\n"
+msgstr "%s: %s: error al cerrar: %s\n"
+
+#: ../json-glib/json-glib-format.c:148 ../json-glib/json-glib-validate.c:113
+msgid "FILE"
+msgstr "ARCHIVO"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-format.c:151
+msgid "Format JSON files."
+msgstr "Formatear archivos JSON."
+
+#: ../json-glib/json-glib-format.c:152
+msgid "json-glib-format formats JSON resources."
+msgstr "json-glib-format formatea recursos JSON."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:169 ../json-glib/json-glib-validate.c:134
+#, c-format
+msgid "Error parsing commandline options: %s\n"
+msgstr "Error al analizar las opciones de la línea de comandos: %s\n"
+
+#: ../json-glib/json-glib-format.c:171 ../json-glib/json-glib-format.c:185
+#: ../json-glib/json-glib-validate.c:136 ../json-glib/json-glib-validate.c:150
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Pruebe «%s --help» para obtener más información."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:183 ../json-glib/json-glib-validate.c:148
+#, c-format
+msgid "%s: missing files"
+msgstr "%s: faltan archivos"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-validate.c:116
+msgid "Validate JSON files."
+msgstr "Validar archivos JSON."
+
+#: ../json-glib/json-glib-validate.c:117
+msgid "json-glib-validate validates JSON data at the given URI."
+msgstr "json-glib-validate valida los datos JSON del URI dado."
+
+#: ../json-glib/json-gobject.c:917
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "Se esperaba un objeto JSON, pero el nodo raíz es de tipo «%s»"
+
+#: ../json-glib/json-gvariant.c:540
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "Tipo «%s» no esperado en un nodo JSON"
+
+#: ../json-glib/json-gvariant.c:610
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "Faltan elementos en el vector JSON para conformar una tupla"
+
+#: ../json-glib/json-gvariant.c:638
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "Falta el símbolo de cierre «)» en la tupla de GVariant"
+
+#: ../json-glib/json-gvariant.c:646
+msgid "Unexpected extra elements in JSON array"
+msgstr "Elementos adicionales no esperados en el vector JSON"
+
+#: ../json-glib/json-gvariant.c:925
+msgid "Invalid string value converting to GVariant"
+msgstr "Valor de cadena no válido al convertir a GVariant"
+
+#: ../json-glib/json-gvariant.c:981
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr ""
+"Una entrada del diccionario de GVariant espera un objeto JSON con sólo un "
+"miembro"
+
+#: ../json-glib/json-gvariant.c:1237
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "Clase «%c» de GVariant no soportada"
+
+#: ../json-glib/json-gvariant.c:1285
+msgid "Invalid GVariant signature"
+msgstr "Firma de GVariant no válida"
+
+#: ../json-glib/json-gvariant.c:1333
+msgid "JSON data is empty"
+msgstr "Datos de JSON vacíos"
+
+#: ../json-glib/json-parser.c:817
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: Error al analizr: %s"
+
+#: ../json-glib/json-parser.c:885
+msgid "JSON data must be UTF-8 encoded"
+msgstr "Los datos JSON deben estar codificados en UTF-8"
+
+#: ../json-glib/json-path.c:438
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "Sólo se permite un nodo raíz en una expresión JSONPath"
+
+#: ../json-glib/json-path.c:447
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "Nodo raíz seguido de un carácter «%c» no válido"
+
+#: ../json-glib/json-path.c:487
+msgid "Missing member name or wildcard after . character"
+msgstr "Falta el nombre del miembro o el comodín después del «.»."
+
+#: ../json-glib/json-path.c:561
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "Expresión de particionado «%*s» mal formada"
+
+#: ../json-glib/json-path.c:605
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "Definición de conjunto no válida «%*s»"
+
+#: ../json-glib/json-path.c:658
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "Definición de particionado no válida «%*s»"
+
+#: ../json-glib/json-path.c:686
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "Definición de índice de vector no válida «%*s»"
+
+#: ../json-glib/json-path.c:705
+#, c-format
+msgid "Invalid first character '%c'"
+msgstr "Primer carácter «%c» no válido"
+
+#: ../json-glib/json-reader.c:457
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr ""
+"El nodo actual es de tipo «%s», pero se esperaba un objeto o un vector."
+
+#: ../json-glib/json-reader.c:469
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr ""
+"El índice «%d» es mayor que el tamaño del vector en la posición actual."
+
+#: ../json-glib/json-reader.c:486
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr ""
+"El índice «%d» es mayor que el tamaño del objeto en la posición actual."
+
+#: ../json-glib/json-reader.c:570 ../json-glib/json-reader.c:723
+#: ../json-glib/json-reader.c:774 ../json-glib/json-reader.c:812
+#: ../json-glib/json-reader.c:850 ../json-glib/json-reader.c:888
+#: ../json-glib/json-reader.c:926 ../json-glib/json-reader.c:971
+#: ../json-glib/json-reader.c:1007 ../json-glib/json-reader.c:1033
+msgid "No node available at the current position"
+msgstr "No hay ningún nodo disponible en la posición actual"
+
+#: ../json-glib/json-reader.c:577
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "La posición actual tiene un «%s» y no un vector"
+
+#: ../json-glib/json-reader.c:640
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "El nodo actual es de tipo «%s», pero se esperaba un objeto."
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "El miembro «%s» no está definido en el objeto en la posición actual."
+
+#: ../json-glib/json-reader.c:730 ../json-glib/json-reader.c:781
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "La posición actual tiene un «%s» y no un objeto"
+
+#: ../json-glib/json-reader.c:821 ../json-glib/json-reader.c:859
+#: ../json-glib/json-reader.c:897 ../json-glib/json-reader.c:935
+#: ../json-glib/json-reader.c:980
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "La posición actual tiene un «%s» y no un valor"
+
+#: ../json-glib/json-reader.c:943
+msgid "The current position does not hold a string type"
+msgstr "La posición actual no tiene un tipo de cadena"
+
+#~ msgid "The current position does not hold an integer type"
+#~ msgstr "La posición actual no tiene un tipo entero"
+
+#~ msgid "The current position does not hold a floating point type"
+#~ msgstr "La posición actual no tiene un tipo de coma flotante"
+
+#~ msgid "The current position does not hold a boolean type"
+#~ msgstr "La posición actual no tiene un tipo booleano"
--- /dev/null
+# Estonian translation for json-glib.
+# Copyright (C) 2012 json-glib's COPYRIGHT HOLDER
+# This file is distributed under the same license as the json-glib package.
+# Mattias Põldaru <mahfiaz@gmail.com>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2012-10-28 12:31+0000\n"
+"PO-Revision-Date: 2012-10-29 20:51+0300\n"
+"Last-Translator: Mattias Põldaru <mahfiaz@gmail.com>\n"
+"Language-Team: Estonian <gnome-et-list@gnome.org>\n"
+"Language: et\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "Oodati JSON objekti, kuid juursõlme liik on '%s'"
+
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "JSON sõlmes esines ootamatu liik '%s'"
+
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "JSON massiivis puuduvad tuple'i moodustamiseks vajalikud elemendid"
+
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "Puuduv sulgev ')' sümbol GVariant tuple'is"
+
+msgid "Unexpected extra elements in JSON array"
+msgstr "Ootamatud lisaelemendid JSON massiivis"
+
+msgid "Invalid string value converting to GVariant"
+msgstr "Sobimatu sõne väärtus GVariandiks teisendamisel"
+
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr ""
+"GVariant dictionary kirje eeldab JSON objekti, milles on täpselt üks liige"
+
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "GVariant klass '%c' pole toetatud"
+
+msgid "Invalid GVariant signature"
+msgstr "Sobimatu GVariant-i allkiri"
+
+msgid "JSON data is empty"
+msgstr "JSON ei sisalda andmeid"
+
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: parsimise viga: %s"
+
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "Ainult juursõlm on lubatud JSONPath expression lauses"
+
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "Juursõlmele järgneb sobimatu märk '%c'"
+
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "Sobimatu tüki väljendus (slice expression) '%*s'"
+
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "Sobimatu kogu (set) definitsioon '%*s'"
+
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "Sobimatu tüki (slice) definitsioon '%*s'"
+
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "Sobimatu massiivi indeksi definitsioon '%*s'"
+
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr "Praeguse sõlme liik on '%s', aga oodati massiivi või objekti."
+
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "Indeks '%d' on suurem kui massivi suurus praeguses asukohas."
+
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr "Indeks '%d' on suurem kui objekti suurus praeguses asukohas."
+
+msgid "No node available at the current position"
+msgstr "Praeguses asukohas pole saadaval ühtegi sõlme"
+
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "Praegune asukoht sisaldab '%s' ning see pole massiiv"
+
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "Praeguse sõlme liik on '%s', aga oodati objekti."
+
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "Liige '%s' ei ole defineeritud praeguses asukohas asuvas objektis."
+
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "Praegune asukoht sisaldab '%s', mitte objekti"
+
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "Praegune asukoht sisaldab '%s' ning mitte väärtust"
+
+msgid "The current position does not hold a string type"
+msgstr "Praegune asukoht ei sisalda sõne liiki"
--- /dev/null
+# Basque translation of jon-glib.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Iñaki Larrañaga Murgoitio <dooteo@zundan.com>, 2013, 2014.
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2014-04-03 17:32+0200\n"
+"PO-Revision-Date: 2014-04-03 17:38+0200\n"
+"Last-Translator: Iñaki Larrañaga Murgoitio <dooteo@zundan.com>\n"
+"Language-Team: Basque <librezale@librezale.org>\n"
+"Language: eu\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 1.4\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: ../json-glib/json-glib-format.c:50
+msgid "Prettify output"
+msgstr "Koskatu irteera"
+
+#: ../json-glib/json-glib-format.c:51
+msgid "Indentation spaces"
+msgstr "Koskaren zuriuneak"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:77 ../json-glib/json-glib-validate.c:63
+#, c-format
+msgid "%s: %s: error opening file: %s\n"
+msgstr "%s: %s: errorea fitxategia irekitzean: %s\n"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:89 ../json-glib/json-glib-validate.c:75
+#, c-format
+msgid "%s: %s: error parsing file: %s\n"
+msgstr "%s: %s: errorea fitxategia analizatzean: %s\n"
+
+#. Translators: the first %s is the program name, the
+#. * second one is the URI of the file.
+#.
+#: ../json-glib/json-glib-format.c:108
+#, c-format
+msgid "%s: %s: error writing to stdout"
+msgstr "%s: %s: errorea irteera estandarrean idaztean"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:128 ../json-glib/json-glib-validate.c:87
+#, c-format
+msgid "%s: %s: error closing: %s\n"
+msgstr "%s: %s: errorea ixtean: %s\n"
+
+#: ../json-glib/json-glib-format.c:157 ../json-glib/json-glib-validate.c:115
+msgid "FILE"
+msgstr "FITXATEGIA"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-format.c:160
+msgid "Format JSON files."
+msgstr "JSON fitxategien formatua."
+
+#: ../json-glib/json-glib-format.c:161
+msgid "json-glib-format formats JSON resources."
+msgstr "'json-glib-format'-ek JSON baliabideei formatu ematen die."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:178 ../json-glib/json-glib-validate.c:136
+#, c-format
+msgid "Error parsing commandline options: %s\n"
+msgstr "Errorea komando-lerroaren aukerak analizatzean: %s\n"
+
+#: ../json-glib/json-glib-format.c:180 ../json-glib/json-glib-format.c:194
+#: ../json-glib/json-glib-validate.c:138 ../json-glib/json-glib-validate.c:152
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Saiatu '%s --help' erabiltzen informazio gehiagorako."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:192 ../json-glib/json-glib-validate.c:150
+#, c-format
+msgid "%s: missing files"
+msgstr "%s: fitxategiak falta dira"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-validate.c:118
+msgid "Validate JSON files."
+msgstr "JSON fitxategien balidazioa."
+
+#: ../json-glib/json-glib-validate.c:119
+msgid "json-glib-validate validates JSON data at the given URI."
+msgstr ""
+"'json-glib-validate'-ek JSON datuen balidazioa egiten du emandako URIan."
+
+#: ../json-glib/json-gobject.c:915
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "JSON objektu bat espero zen, baina erroaren nodoa '%s' motakoa da"
+
+#: ../json-glib/json-gvariant.c:523
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "Ustekabeko '%s' mota JSON nodoan"
+
+#: ../json-glib/json-gvariant.c:593
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "JSON matrizean elementuak falta dira tupla bat osatzeko"
+
+#: ../json-glib/json-gvariant.c:621
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "Itxierako ')' ikurra falta da GVariant tupla motan"
+
+#: ../json-glib/json-gvariant.c:629
+msgid "Unexpected extra elements in JSON array"
+msgstr "Ustekabeko elementu gehigarriak JSON nodoan"
+
+#: ../json-glib/json-gvariant.c:908
+msgid "Invalid string value converting to GVariant"
+msgstr "Baliogabeko kate-balioa GVariant-era bihurtzean"
+
+#: ../json-glib/json-gvariant.c:964
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr ""
+"GVariant hiztegiaren sarrera batek JSON objektu bat espero du kide bakar "
+"batekin soilik"
+
+#: ../json-glib/json-gvariant.c:1244
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "'%c' GVariant klasea ez dago onartuta"
+
+#: ../json-glib/json-gvariant.c:1292
+msgid "Invalid GVariant signature"
+msgstr "Baliogabeko GVariant sinadura"
+
+#: ../json-glib/json-gvariant.c:1340
+msgid "JSON data is empty"
+msgstr "JSONen datuak hutsik daude"
+
+#: ../json-glib/json-parser.c:815
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: analisi-errorea: %s"
+
+#: ../json-glib/json-parser.c:883
+msgid "JSON data must be UTF-8 encoded"
+msgstr "JSON datuak UTF-8 kodeketan egon behar dute"
+
+#: ../json-glib/json-path.c:388
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr ""
+"Soilik erroko nodo bakar bat dago baimenduta JSONPath adierazpen batean"
+
+#: ../json-glib/json-path.c:397
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "Erroko nodoaren ondoren baliogabeko '%c' karakterea dago"
+
+#: ../json-glib/json-path.c:437
+msgid "Missing member name or wildcard after . character"
+msgstr "Kidearen izena edo '.' karakterearen ondorengo izartxoa falta da"
+
+#: ../json-glib/json-path.c:511
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "Gaizki osatutako '%*s' adierazpen zatia"
+
+#: ../json-glib/json-path.c:555
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "'%*s' multzoaren definizioa baliogabea"
+
+#: ../json-glib/json-path.c:608
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "Baliogabeko '%*s' definizio zatia"
+
+#: ../json-glib/json-path.c:636
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "Baliogabeko '%*s' matrizearen indizearen definizioa"
+
+#: ../json-glib/json-path.c:655
+#, c-format
+msgid "Invalid first character '%c'"
+msgstr "Aurreneko '%c' karakterea baliogabea"
+
+#: ../json-glib/json-reader.c:456
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr "Uneko nodoa '%s' motakoa da, baina matrize edo objektu bat espero zen."
+
+#: ../json-glib/json-reader.c:468
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "'%d' indizea uneko posizioko matrizearen tamaina baino handiagoa da."
+
+#: ../json-glib/json-reader.c:485
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr "'%d' indizea uneko posizioko objektuaren tamaina baino handiagoa da ."
+
+#: ../json-glib/json-reader.c:570 ../json-glib/json-reader.c:724
+#: ../json-glib/json-reader.c:775 ../json-glib/json-reader.c:813
+#: ../json-glib/json-reader.c:851 ../json-glib/json-reader.c:889
+#: ../json-glib/json-reader.c:927 ../json-glib/json-reader.c:972
+#: ../json-glib/json-reader.c:1008 ../json-glib/json-reader.c:1034
+msgid "No node available at the current position"
+msgstr "Ez dago nodorik erabilgarri uneko posizioan"
+
+#: ../json-glib/json-reader.c:577
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "Uneko posizioak '%s' dauka, eta ez matrize bat"
+
+#: ../json-glib/json-reader.c:640
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "Uneko nodoa '%s' motakoa da, baina objektu bat espero zen."
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "'%s' kidea ez dago uneko posizioko objektuan definituta."
+
+#: ../json-glib/json-reader.c:731 ../json-glib/json-reader.c:782
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "Uneko posizioak '%s' dauka, baina ez objektu bat"
+
+#: ../json-glib/json-reader.c:822 ../json-glib/json-reader.c:860
+#: ../json-glib/json-reader.c:898 ../json-glib/json-reader.c:936
+#: ../json-glib/json-reader.c:981
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "Uneko posizioak '%s' dauka, baina ez balio bat"
+
+#: ../json-glib/json-reader.c:944
+msgid "The current position does not hold a string type"
+msgstr "Uneko posizioak ez dauka kate motakorik"
+
--- /dev/null
+# French translation of jon-glib.
+# Copyright (C) 2012 json-glib COPYRIGHT HOLDER
+# This file is distributed under the same license as the json-glib package.
+# Josselin TILLAY-DOLEDEC <josselin.td@gmail.com>, 2012
+# Claude Paroz <claude@2xlibre.net>, 2014
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2014-03-11 10:21+0000\n"
+"PO-Revision-Date: 2014-03-11 22:43+0100\n"
+"Last-Translator: Claude Paroz <claude@2xlibre.net>\n"
+"Language-Team: GNOME French Team <gnomefr@traduc.org>\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../json-glib/json-glib-format.c:50
+msgid "Prettify output"
+msgstr "Formatage indenté"
+
+#: ../json-glib/json-glib-format.c:51
+msgid "Indentation spaces"
+msgstr "Espaces d'indentation"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:77 ../json-glib/json-glib-validate.c:63
+#, c-format
+msgid "%s: %s: error opening file: %s\n"
+msgstr "%s : %s : erreur d'ouverture du fichier : %s\n"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:89 ../json-glib/json-glib-validate.c:75
+#, c-format
+msgid "%s: %s: error parsing file: %s\n"
+msgstr "%s : %s : erreur d'analyse du fichier : %s\n"
+
+#. Translators: the first %s is the program name, the
+#. * second one is the URI of the file.
+#.
+#: ../json-glib/json-glib-format.c:108
+#, c-format
+msgid "%s: %s: error writing to stdout"
+msgstr "%s : %s : erreur d'écriture vers stdout"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:128 ../json-glib/json-glib-validate.c:87
+#, c-format
+msgid "%s: %s: error closing: %s\n"
+msgstr "%s : %s : erreur de fermeture : %s\n"
+
+#: ../json-glib/json-glib-format.c:157 ../json-glib/json-glib-validate.c:115
+msgid "FILE"
+msgstr "FICHIER"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-format.c:160
+msgid "Format JSON files."
+msgstr "Mise en forme de fichiers JSON."
+
+#: ../json-glib/json-glib-format.c:161
+msgid "json-glib-format formats JSON resources."
+msgstr "json-glib-format met en forme des ressources JSON."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:178 ../json-glib/json-glib-validate.c:136
+#, c-format
+msgid "Error parsing commandline options: %s\n"
+msgstr "Erreur d'analyse des options de la ligne de commande : %s\n"
+
+#: ../json-glib/json-glib-format.c:180 ../json-glib/json-glib-format.c:194
+#: ../json-glib/json-glib-validate.c:138 ../json-glib/json-glib-validate.c:152
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Essayez « %s --help » pour plus d'informations."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:192 ../json-glib/json-glib-validate.c:150
+#, c-format
+msgid "%s: missing files"
+msgstr "%s : fichiers manquants"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-validate.c:118
+msgid "Validate JSON files."
+msgstr "Validation de fichiers JSON."
+
+#: ../json-glib/json-glib-validate.c:119
+msgid "json-glib-validate validates JSON data at the given URI."
+msgstr "json-glib-validate valide des données JSON à l'URI indiquée."
+
+#: ../json-glib/json-gobject.c:917
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "Objet de type JSON attendu mais le nœud racine est de type « %s »"
+
+#: ../json-glib/json-gvariant.c:545
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "Type « %s » inattendu dans le nœud JSON"
+
+#: ../json-glib/json-gvariant.c:615
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "Éléments manquants dans le tableau JSON pour être conforme à un tuple"
+
+#: ../json-glib/json-gvariant.c:643
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "Symbole fermant « ) » manquant dans le tuple GVariant"
+
+#: ../json-glib/json-gvariant.c:651
+msgid "Unexpected extra elements in JSON array"
+msgstr "Éléments supplémentaires inattendus dans le tableau JSON"
+
+#: ../json-glib/json-gvariant.c:930
+msgid "Invalid string value converting to GVariant"
+msgstr "Chaîne de caractères invalide pour la conversion en GVariant"
+
+#: ../json-glib/json-gvariant.c:986
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr ""
+"Une entrée de dictionnaire GVariant requiert un objet JSON contenant un seul "
+"membre"
+
+#: ../json-glib/json-gvariant.c:1266
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "Classe GVariant « %c » non prise en charge"
+
+#: ../json-glib/json-gvariant.c:1314
+msgid "Invalid GVariant signature"
+msgstr "Signature GVariant non valide"
+
+#: ../json-glib/json-gvariant.c:1362
+msgid "JSON data is empty"
+msgstr "Les données JSON sont vides"
+
+#: ../json-glib/json-parser.c:817
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: Erreur d'analyse : %s"
+
+#: ../json-glib/json-parser.c:885
+msgid "JSON data must be UTF-8 encoded"
+msgstr "Les données JSON doivent être codées en UTF-8"
+
+#: ../json-glib/json-path.c:438
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "Un seul nœud racine autorisé dans une expression JSONPath"
+
+#: ../json-glib/json-path.c:447
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "Nœud racine suivi d'un caractère invalide « %c »"
+
+#: ../json-glib/json-path.c:487
+msgid "Missing member name or wildcard after . character"
+msgstr "Nom de membre ou caractère joker manquant après un caractère « . »"
+
+#: ../json-glib/json-path.c:561
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "Expression de segmentation malformée « %*s »"
+
+#: ../json-glib/json-path.c:605
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "Définition d'ensemble invalide « %*s »"
+
+#: ../json-glib/json-path.c:658
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "Définition de segmentation invalide « %*s »"
+
+#: ../json-glib/json-path.c:686
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "Définition d'indice de tableau invalide « %*s »"
+
+#: ../json-glib/json-path.c:705
+#, c-format
+msgid "Invalid first character '%c'"
+msgstr "Premier caractère « %c » non valide"
+
+#: ../json-glib/json-reader.c:463
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr ""
+"Le nœud courant est de type « %s » mais un tableau ou un objet était attendu."
+
+#: ../json-glib/json-reader.c:475
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr ""
+"L'indice « %d » est plus grand que la taille du tableau à la position "
+"actuelle."
+
+#: ../json-glib/json-reader.c:492
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr ""
+"L'indice « %d » est plus grand que la taille de l'objet indiqué à la "
+"position actuelle."
+
+#: ../json-glib/json-reader.c:577 ../json-glib/json-reader.c:731
+#: ../json-glib/json-reader.c:782 ../json-glib/json-reader.c:820
+#: ../json-glib/json-reader.c:858 ../json-glib/json-reader.c:896
+#: ../json-glib/json-reader.c:934 ../json-glib/json-reader.c:979
+#: ../json-glib/json-reader.c:1015 ../json-glib/json-reader.c:1041
+msgid "No node available at the current position"
+msgstr "Aucun nœud disponible à cette position."
+
+#: ../json-glib/json-reader.c:584
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr ""
+"La position actuelle contient un élément de type « %s » et non un tableau"
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "Le nœud actuel est de type « %s » mais un objet était attendu."
+
+#: ../json-glib/json-reader.c:654
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr ""
+"Le membre « %s » n'est pas défini dans l'objet à la position actuelle."
+
+#: ../json-glib/json-reader.c:738 ../json-glib/json-reader.c:789
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr ""
+"La position actuelle contient un élément de type « %s » et non un objet"
+
+#: ../json-glib/json-reader.c:829 ../json-glib/json-reader.c:867
+#: ../json-glib/json-reader.c:905 ../json-glib/json-reader.c:943
+#: ../json-glib/json-reader.c:988
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr ""
+"La position actuelle contient un élément de type « %s » et non une valeur"
+
+#: ../json-glib/json-reader.c:951
+msgid "The current position does not hold a string type"
+msgstr "La position actuelle ne contient pas une chaîne de caractères"
--- /dev/null
+# Friulian translation for json-glib.
+# Copyright (C) 2013 json-glib's COPYRIGHT HOLDER
+# This file is distributed under the same license as the json-glib package.
+# Fabio Tomat <f.t.public@gmail.com>, 2013.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2013-07-20 10:25+0000\n"
+"PO-Revision-Date: 2013-08-20 15:12+0100\n"
+"Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n"
+"Language-Team: Friulian <fur@li.org>\n"
+"Language: fur\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.5.4\n"
+
+#: ../json-glib/json-gobject.c:925
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "Si spiete un ogjet JSON, ma il grop lidrîs al è dal tipo \"%s\""
+
+#: ../json-glib/json-gvariant.c:540
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "Tipo \"%s\" no spietât tal grop JSON"
+
+#: ../json-glib/json-gvariant.c:610
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "A mancjin ogjets tal array JSON par conformitât a une tuple"
+
+#: ../json-glib/json-gvariant.c:638
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "Al mancje il simbul ')' di siaradure tal tipo tuple GVariant"
+
+#: ../json-glib/json-gvariant.c:646
+msgid "Unexpected extra elements in JSON array"
+msgstr "Elements di plui no spietâts tal array JSON"
+
+#: ../json-glib/json-gvariant.c:925
+msgid "Invalid string value converting to GVariant"
+msgstr "Valôrs di stringhe no valits te conversion a JSON"
+
+#: ../json-glib/json-gvariant.c:981
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr ""
+"Une vôs di dizionari GVariant a domandave un ogjet JSON cun precîs un membri"
+
+#: ../json-glib/json-gvariant.c:1237
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "Classe GVariant '%c' no supuartade"
+
+#: ../json-glib/json-gvariant.c:1285
+msgid "Invalid GVariant signature"
+msgstr "Firme GVariant no valide"
+
+#: ../json-glib/json-gvariant.c:1333
+msgid "JSON data is empty"
+msgstr "I dâts JSON a son vueits"
+
+#: ../json-glib/json-parser.c:831
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: erôr di analisi: %s"
+
+#: ../json-glib/json-path.c:436
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "A si amet dome un grop lidrîs intune espression JSON"
+
+#: ../json-glib/json-path.c:445
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "Grop lidrîs seguît da caratar no valit '%c'"
+
+#: ../json-glib/json-path.c:551
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "Espression slice '%*s' scrite mâl"
+
+#: ../json-glib/json-path.c:595
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "Definizion di set '%*s' no valide"
+
+#: ../json-glib/json-path.c:648
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "Definizion di slice '%*s' no valide"
+
+#: ../json-glib/json-path.c:676
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "Definizion di indiç array '%*s' no valide"
+
+#: ../json-glib/json-reader.c:470
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr ""
+"Il tipo di grop curint al è \"%s\", ma si spietave un array o un ogjet."
+
+#: ../json-glib/json-reader.c:482
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "L'indiç '%d' al è plui grant de dimension dal array ae posizion atuâl."
+
+#: ../json-glib/json-reader.c:499
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr "L'indiç '%d' al è plui grant de dimension dal ogjet ae posizion atuâl."
+
+#: ../json-glib/json-reader.c:583 ../json-glib/json-reader.c:736
+#: ../json-glib/json-reader.c:787 ../json-glib/json-reader.c:825
+#: ../json-glib/json-reader.c:863 ../json-glib/json-reader.c:901
+#: ../json-glib/json-reader.c:939 ../json-glib/json-reader.c:984
+#: ../json-glib/json-reader.c:1020 ../json-glib/json-reader.c:1046
+msgid "No node available at the current position"
+msgstr "Nissun grop disponibil ae posizion atuâl."
+
+#: ../json-glib/json-reader.c:590
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "La posizion atuâl a ten un \"%s\" e no un array"
+
+#: ../json-glib/json-reader.c:653
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "Il tipo di grop atuâl al è \"%s\", ma si spietave un ogjet."
+
+#: ../json-glib/json-reader.c:660
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "Nol è definît il membri \"%s\" tal ogjet ae posizion atuâl."
+
+#: ../json-glib/json-reader.c:743 ../json-glib/json-reader.c:794
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "La posizion atuâl a ten un \"%s\" e no un ogjet"
+
+#: ../json-glib/json-reader.c:834 ../json-glib/json-reader.c:872
+#: ../json-glib/json-reader.c:910 ../json-glib/json-reader.c:948
+#: ../json-glib/json-reader.c:993
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "La posizion atuâl a ten un \"%s\" e no un valôr"
+
+#: ../json-glib/json-reader.c:956
+msgid "The current position does not hold a string type"
+msgstr "La posizion atuâl no ten un tipo stringhe"
--- /dev/null
+# Galician translation for json-glib.
+# Copyright (C) 2012 json-glib's COPYRIGHT HOLDER
+# This file is distributed under the same license as the json-glib package.
+# Fran Dieguez <frandieguez@gnome.org>, 2012, 2013.
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib\n"
+"POT-Creation-Date: 2013-12-19 01:12+0100\n"
+"PO-Revision-Date: 2013-12-19 01:13+0200\n"
+"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
+"Language-Team: gnome-l10n-gl@gnome.org\n"
+"Language: gl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Virtaal 0.7.1\n"
+"X-Project-Style: gnome\n"
+
+#: ../json-glib/json-glib-format.c:41
+msgid "Prettify output"
+msgstr "Mellorar saída"
+
+#: ../json-glib/json-glib-format.c:42
+msgid "Indentation spaces"
+msgstr "Espazos de sangrado"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:68 ../json-glib/json-glib-validate.c:61
+#, c-format
+msgid "%s: %s: error opening file: %s\n"
+msgstr "%s: %s: erro ao abrir o ficheiro: %s\n"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:80 ../json-glib/json-glib-validate.c:73
+#, c-format
+msgid "%s: %s: error parsing file: %s\n"
+msgstr "%s: %s: error ao analizar o ficheiro: %s\n"
+
+#. Translators: the first %s is the program name, the
+#. * second one is the URI of the file.
+#.
+#: ../json-glib/json-glib-format.c:99
+#, c-format
+msgid "%s: %s: error writing to stdout"
+msgstr "%s: %s: erro ao escribir na saída estándar"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:119 ../json-glib/json-glib-validate.c:85
+#, c-format
+msgid "%s: %s: error closing: %s\n"
+msgstr "%s: %s: erro ao pechar: %s\n"
+
+#: ../json-glib/json-glib-format.c:148 ../json-glib/json-glib-validate.c:113
+msgid "FILE"
+msgstr "FICHEIRO"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-format.c:151
+msgid "Format JSON files."
+msgstr "Formatea de ficheiros JSON."
+
+#: ../json-glib/json-glib-format.c:152
+msgid "json-glib-format formats JSON resources."
+msgstr "Os recursos de JSON de json-glib-format."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:169 ../json-glib/json-glib-validate.c:134
+#, c-format
+msgid "Error parsing commandline options: %s\n"
+msgstr "Produciuse un erro ao analizar as opcións de liña de ordes: %s\n"
+
+#: ../json-glib/json-glib-format.c:171 ../json-glib/json-glib-format.c:185
+#: ../json-glib/json-glib-validate.c:136 ../json-glib/json-glib-validate.c:150
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Tente \"%s --help\" para máis información."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:183 ../json-glib/json-glib-validate.c:148
+#, c-format
+msgid "%s: missing files"
+msgstr "%s: ficheiros omitidos"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-validate.c:116
+msgid "Validate JSON files."
+msgstr "Validar ficheiros JSON."
+
+#: ../json-glib/json-glib-validate.c:117
+msgid "json-glib-validate validates JSON data at the given URI."
+msgstr "json-glib-validate valida os datos JSON dunha URI fornecida."
+
+#: ../json-glib/json-gobject.c:917
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "Agardábase un obxecto JSON, pero o nodo raíz é de tipo «%s»"
+
+#: ../json-glib/json-gvariant.c:545
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "Tipo «%s» non agardado nun nodo JSON"
+
+#: ../json-glib/json-gvariant.c:615
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "Faltan elementos no vector JSON para conformar unha tupla"
+
+#: ../json-glib/json-gvariant.c:643
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "Falta o símbolo de peche «)» na tupla de GVariant"
+
+#: ../json-glib/json-gvariant.c:651
+msgid "Unexpected extra elements in JSON array"
+msgstr "Elementos adicionais non agardados no vector JSON"
+
+#: ../json-glib/json-gvariant.c:930
+msgid "Invalid string value converting to GVariant"
+msgstr "Valor de cadea non válido ao converter a GVariant"
+
+#: ../json-glib/json-gvariant.c:986
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr ""
+"Unha entrada do dicionario e GVariant agarda un obxecto JSON con só un membro"
+
+#: ../json-glib/json-gvariant.c:1266
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "Clase «%c» de GVariant non admitida"
+
+#: ../json-glib/json-gvariant.c:1314
+msgid "Invalid GVariant signature"
+msgstr "Firma de GVariant non válida"
+
+#: ../json-glib/json-gvariant.c:1362
+msgid "JSON data is empty"
+msgstr "Datos de JSON baleiros"
+
+#: ../json-glib/json-parser.c:817
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: erro de análise: %s"
+
+#: ../json-glib/json-parser.c:885
+msgid "JSON data must be UTF-8 encoded"
+msgstr "Os datos JSON deben ter a codificación UTF-8"
+
+#: ../json-glib/json-path.c:438
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "Só se permite un nodo raíz nunha expresión JSONPath"
+
+#: ../json-glib/json-path.c:447
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "Nodo raíz seguido dun carácter «%c» non válido"
+
+#: ../json-glib/json-path.c:487
+msgid "Missing member name or wildcard after . character"
+msgstr "Falta o nome do membro ou comodín logo do caracter «.»"
+
+#: ../json-glib/json-path.c:561
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "Expresión de particionado «%*s» mal formada"
+
+#: ../json-glib/json-path.c:605
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "Definición de conxunto non válida «%*s»"
+
+#: ../json-glib/json-path.c:658
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "Definición de particionado non válida «%*s»"
+
+#: ../json-glib/json-path.c:686
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "Definición de índice de vector non válida «%*s»"
+
+#: ../json-glib/json-path.c:705
+#, c-format
+msgid "Invalid first character '%c'"
+msgstr "Primeiro caracter «%c» non válido"
+
+#: ../json-glib/json-reader.c:457
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr "O nodo actual é de tipo «%s», pero agardábase un obxecto ou un vector."
+
+#: ../json-glib/json-reader.c:469
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "O índice «%d» é maior que o tamaño do vector na posición actual."
+
+#: ../json-glib/json-reader.c:486
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr "O índice «%d» é maior que o tamaño do obxecto na posición actual."
+
+#: ../json-glib/json-reader.c:570 ../json-glib/json-reader.c:723
+#: ../json-glib/json-reader.c:774 ../json-glib/json-reader.c:812
+#: ../json-glib/json-reader.c:850 ../json-glib/json-reader.c:888
+#: ../json-glib/json-reader.c:926 ../json-glib/json-reader.c:971
+#: ../json-glib/json-reader.c:1007 ../json-glib/json-reader.c:1033
+msgid "No node available at the current position"
+msgstr "Non hai ningún nodo dipoñíbel na posición actual"
+
+#: ../json-glib/json-reader.c:577
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "A posición actual ten un «%s» e non un vector"
+
+#: ../json-glib/json-reader.c:640
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "O nodo actual é de tipo «%s», pero agardábase un obxecto."
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "O membro «%s» non está definido no obxecto na posición actual."
+
+#: ../json-glib/json-reader.c:730 ../json-glib/json-reader.c:781
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "A posición actual ten un «%s» e non un obxecto"
+
+#: ../json-glib/json-reader.c:821 ../json-glib/json-reader.c:859
+#: ../json-glib/json-reader.c:897 ../json-glib/json-reader.c:935
+#: ../json-glib/json-reader.c:980
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "A posición actual ten un «%s» e non un valor"
+
+#: ../json-glib/json-reader.c:943
+msgid "The current position does not hold a string type"
+msgstr "A posición actual non ten un tipo de cadea"
+
+#~ msgid "The current position does not hold an integer type"
+#~ msgstr "A posición actual non ten un tipo enteiro"
+
+#~ msgid "The current position does not hold a floating point type"
+#~ msgstr "A posición actual non ten un tipo de coma flotante"
+
+#~ msgid "The current position does not hold a boolean type"
+#~ msgstr "A posición actual non ten un tipo booleano"
--- /dev/null
+# Hebrew translations for json-glib package.
+# Copyright (C) 2014 THE json-glib'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the json-glib package.
+# יוסף אור בוצ׳קו <yoseforb@gnome.org>, 2014.
+# Yosef Or Boczko <yoseforb@gmail.com>, 2014.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib 0.17.1\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib\n"
+"POT-Creation-Date: 2014-01-26 05:31+0200\n"
+"PO-Revision-Date: 2014-01-26 05:32+0200\n"
+"Last-Translator: Yosef Or Boczko <yoseforb@gmail.com>\n"
+"Language-Team: עברית <>\n"
+"Language: he\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Gtranslator 2.91.6\n"
+
+#: ../json-glib/json-glib-format.c:41
+msgid "Prettify output"
+msgstr "Prettify output"
+
+#: ../json-glib/json-glib-format.c:42
+msgid "Indentation spaces"
+msgstr "Indentation spaces"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:68 ../json-glib/json-glib-validate.c:61
+#, c-format
+msgid "%s: %s: error opening file: %s\n"
+msgstr "%s: %s: error opening file: %s\n"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:80 ../json-glib/json-glib-validate.c:73
+#, c-format
+msgid "%s: %s: error parsing file: %s\n"
+msgstr "%s: %s: error parsing file: %s\n"
+
+#. Translators: the first %s is the program name, the
+#. * second one is the URI of the file.
+#.
+#: ../json-glib/json-glib-format.c:99
+#, c-format
+msgid "%s: %s: error writing to stdout"
+msgstr "%s: %s: error writing to stdout"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:119 ../json-glib/json-glib-validate.c:85
+#, c-format
+msgid "%s: %s: error closing: %s\n"
+msgstr "%s: %s: error closing: %s\n"
+
+#: ../json-glib/json-glib-format.c:148 ../json-glib/json-glib-validate.c:113
+msgid "FILE"
+msgstr "FILE"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-format.c:151
+msgid "Format JSON files."
+msgstr "Format JSON files."
+
+#: ../json-glib/json-glib-format.c:152
+msgid "json-glib-format formats JSON resources."
+msgstr "json-glib-format formats JSON resources."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:169 ../json-glib/json-glib-validate.c:134
+#, c-format
+msgid "Error parsing commandline options: %s\n"
+msgstr "Error parsing commandline options: %s\n"
+
+#: ../json-glib/json-glib-format.c:171 ../json-glib/json-glib-format.c:185
+#: ../json-glib/json-glib-validate.c:136 ../json-glib/json-glib-validate.c:150
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Try \"%s --help\" for more information."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:183 ../json-glib/json-glib-validate.c:148
+#, c-format
+msgid "%s: missing files"
+msgstr "%s: missing files"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-validate.c:116
+msgid "Validate JSON files."
+msgstr "Validate JSON files."
+
+#: ../json-glib/json-glib-validate.c:117
+msgid "json-glib-validate validates JSON data at the given URI."
+msgstr "json-glib-validate validates JSON data at the given URI."
+
+#: ../json-glib/json-gobject.c:917
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "Expecting a JSON object, but the root node is of type `%s'"
+
+#: ../json-glib/json-gvariant.c:545
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "Unexpected type '%s' in JSON node"
+
+#: ../json-glib/json-gvariant.c:615
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "Missing elements in JSON array to conform to a tuple"
+
+#: ../json-glib/json-gvariant.c:643
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "Missing closing symbol ')' in the GVariant tuple type"
+
+#: ../json-glib/json-gvariant.c:651
+msgid "Unexpected extra elements in JSON array"
+msgstr "Unexpected extra elements in JSON array"
+
+#: ../json-glib/json-gvariant.c:930
+msgid "Invalid string value converting to GVariant"
+msgstr "Invalid string value converting to GVariant"
+
+#: ../json-glib/json-gvariant.c:986
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+
+#: ../json-glib/json-gvariant.c:1266
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "GVariant class '%c' not supported"
+
+#: ../json-glib/json-gvariant.c:1314
+msgid "Invalid GVariant signature"
+msgstr "Invalid GVariant signature"
+
+#: ../json-glib/json-gvariant.c:1362
+msgid "JSON data is empty"
+msgstr "JSON data is empty"
+
+#: ../json-glib/json-parser.c:817
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: Parse error: %s"
+
+#: ../json-glib/json-parser.c:885
+msgid "JSON data must be UTF-8 encoded"
+msgstr "JSON data must be UTF-8 encoded"
+
+#: ../json-glib/json-path.c:438
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "Only one root node is allowed in a JSONPath expression"
+
+#: ../json-glib/json-path.c:447
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "Root node followed by invalid character '%c'"
+
+#: ../json-glib/json-path.c:487
+msgid "Missing member name or wildcard after . character"
+msgstr "Missing member name or wildcard after . character"
+
+#: ../json-glib/json-path.c:561
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "Malformed slice expression '%*s'"
+
+#: ../json-glib/json-path.c:605
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "Invalid set definition '%*s'"
+
+#: ../json-glib/json-path.c:658
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "Invalid slice definition '%*s'"
+
+#: ../json-glib/json-path.c:686
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "Invalid array index definition '%*s'"
+
+#: ../json-glib/json-path.c:705
+#, c-format
+msgid "Invalid first character '%c'"
+msgstr "Invalid first character '%c'"
+
+#: ../json-glib/json-reader.c:457
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr ""
+"The current node is of type '%s', but an array or an object was expected."
+
+#: ../json-glib/json-reader.c:469
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr ""
+"The index '%d' is greater than the size of the array at the current position."
+
+#: ../json-glib/json-reader.c:486
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+
+#: ../json-glib/json-reader.c:570 ../json-glib/json-reader.c:723
+#: ../json-glib/json-reader.c:774 ../json-glib/json-reader.c:812
+#: ../json-glib/json-reader.c:850 ../json-glib/json-reader.c:888
+#: ../json-glib/json-reader.c:926 ../json-glib/json-reader.c:971
+#: ../json-glib/json-reader.c:1007 ../json-glib/json-reader.c:1033
+msgid "No node available at the current position"
+msgstr "No node available at the current position"
+
+#: ../json-glib/json-reader.c:577
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "The current position holds a '%s' and not an array"
+
+#: ../json-glib/json-reader.c:640
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "The current node is of type '%s', but an object was expected."
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "The member '%s' is not defined in the object at the current position."
+
+#: ../json-glib/json-reader.c:730 ../json-glib/json-reader.c:781
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "The current position holds a '%s' and not an object"
+
+#: ../json-glib/json-reader.c:821 ../json-glib/json-reader.c:859
+#: ../json-glib/json-reader.c:897 ../json-glib/json-reader.c:935
+#: ../json-glib/json-reader.c:980
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "The current position holds a '%s' and not a value"
+
+#: ../json-glib/json-reader.c:943
+msgid "The current position does not hold a string type"
+msgstr "The current position does not hold a string type"
--- /dev/null
+# Hindi translation for json-glib.
+# Copyright (C) 2012 json-glib's COPYRIGHT HOLDER
+# This file is distributed under the same license as the json-glib package.
+#
+# chandankumar <chandankumar.093047@gmail.com>, 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2012-09-18 16:29+0000\n"
+"PO-Revision-Date: 2012-09-20 10:33+0530\n"
+"Last-Translator: chandankumar <chandankumar.093047@gmail.com>\n"
+"Language-Team: Hindi <kde-i18n-doc@kde.org>\n"
+"Language: hi\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Lokalize 1.4\n"
+
+#: ../json-glib/json-gobject.c:934
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "एक JSON वस्तु की उम्मीद है, लेकिन रूट नोड प्रकार `%s' हैं "
+
+#: ../json-glib/json-gvariant.c:539
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "अनपेक्षित प्रकार '%s' JSON नोड में"
+
+#: ../json-glib/json-gvariant.c:609
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "एक टपल अनुरूप करने के लिए JSON सरणी में गुम तत्वों "
+
+#: ../json-glib/json-gvariant.c:637
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr " GVariant टपल प्रकार में समापन प्रतीक ')' गुम"
+
+#: ../json-glib/json-gvariant.c:645
+msgid "Unexpected extra elements in JSON array"
+msgstr "JSON सरणी में अप्रत्याशित अतिरिक्त तत्वों"
+
+#: ../json-glib/json-gvariant.c:924
+msgid "Invalid string value converting to GVariant"
+msgstr "GVariant को करने के लिए परिवर्तित अवैध स्ट्रिंग मान "
+
+#: ../json-glib/json-gvariant.c:980
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr ""
+"GVariant शब्दकोश प्रविष्टि को वास्तव में एक सदस्य के साथ एक JSON वस्तु की "
+"उम्मीद है"
+
+#: ../json-glib/json-gvariant.c:1236
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "GVariant वर्ग '%c' समर्थित नहीं है"
+
+#: ../json-glib/json-gvariant.c:1281
+msgid "Invalid GVariant signature"
+msgstr "अवैध GVariant हस्ताक्षर"
+
+#: ../json-glib/json-gvariant.c:1326
+msgid "JSON data is empty"
+msgstr "JSON डेटा खाली है"
+
+#: ../json-glib/json-parser.c:818
+#, c-format
+msgid "%s:%d: Parse error: %s"
+msgstr "%s:%d: व्याख्या त्रुटि: %s"
+
+#: ../json-glib/json-path.c:375
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "एक JSONPath अभिव्यक्ति में केवल एक रूट नोड की अनुमति दी है"
+
+#: ../json-glib/json-path.c:384
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "अवैध अक्षर '%c' के बाद रूट नोड "
+
+#: ../json-glib/json-path.c:490
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "विकृत स्लाइस अभिव्यक्ति '%*s'"
+
+#: ../json-glib/json-path.c:534
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "अमान्य सेट परिभाषा '%*s'"
+
+#: ../json-glib/json-path.c:587
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "अवैध स्लाइस परिभाषा '%*s'"
+
+#: ../json-glib/json-path.c:615
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "अवैध सरणी सूचकांक परिभाषा '%*s'"
+
+#: ../json-glib/json-reader.c:463
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr ""
+"वर्तमान नोड प्रकार '%s' में से एक है, लेकिन एक सरणी या एक वस्तु की उम्मीद थी."
+
+#: ../json-glib/json-reader.c:475
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "सूचकांक '%d' वर्तमान स्थिति में सरणी के आकार की तुलना में अधिक है."
+
+#: ../json-glib/json-reader.c:492
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr "सूचकांक '%d' वर्तमान स्थिति में वस्तु के आकार की तुलना में अधिक है."
+
+#: ../json-glib/json-reader.c:576 ../json-glib/json-reader.c:729
+#: ../json-glib/json-reader.c:780 ../json-glib/json-reader.c:818
+#: ../json-glib/json-reader.c:856 ../json-glib/json-reader.c:894
+#: ../json-glib/json-reader.c:932 ../json-glib/json-reader.c:977
+#: ../json-glib/json-reader.c:1013 ../json-glib/json-reader.c:1039
+msgid "No node available at the current position"
+msgstr "वर्तमान स्थिति में कोई नोड उपलब्ध नहीं "
+
+#: ../json-glib/json-reader.c:583
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "मौजूदा स्थिति के पास '%s' हैं और सरणी नहीं है."
+
+#: ../json-glib/json-reader.c:646
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "वर्तमान नोड प्रकार '%s' में से एक है, लेकिन एक वस्तु की उम्मीद थी."
+
+#: ../json-glib/json-reader.c:653
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "सदस्य '%s' वर्तमान स्थिति में वस्तु में परिभाषित नहीं है."
+
+#: ../json-glib/json-reader.c:736 ../json-glib/json-reader.c:787
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "वर्तमान स्थिति के लिए '%s' और कोई ऑब्जेक्ट आयोजित नहीं है"
+
+#: ../json-glib/json-reader.c:827 ../json-glib/json-reader.c:865
+#: ../json-glib/json-reader.c:903 ../json-glib/json-reader.c:941
+#: ../json-glib/json-reader.c:986
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "वर्तमान स्थिति के लिए '%s' और कोई मान आयोजित नहीं है"
+
+#: ../json-glib/json-reader.c:949
+msgid "The current position does not hold a string type"
+msgstr "वर्तमान स्थिति के लिए स्ट्रिंग प्रकार नहीं है"
+
--- /dev/null
+# Hungarian translation of json-glib
+# Copyright (C) 2012. Free Software Foundation, Inc.
+# This file is distributed under the same license as the json-glib package.
+#
+# Gabor Kelemen <kelemeng at gnome dot hu>, 2012, 2014.
+# Balázs Úr <urbalazs at gmail dot com>, 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2014-03-19 10:19+0000\n"
+"PO-Revision-Date: 2014-03-21 18:09+0100\n"
+"Last-Translator: Gabor Kelemen <kelemeng at gnome dot hu>\n"
+"Language-Team: Hungarian <openscope at googlegroups dot com>\n"
+"Language: hu\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Lokalize 1.4\n"
+
+#: ../json-glib/json-glib-format.c:50
+msgid "Prettify output"
+msgstr "Kimenet csinosítása"
+
+#: ../json-glib/json-glib-format.c:51
+msgid "Indentation spaces"
+msgstr "Behúzási szóközök"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:77 ../json-glib/json-glib-validate.c:63
+#, c-format
+msgid "%s: %s: error opening file: %s\n"
+msgstr "%s: %s: hiba a fájl megnyitásakor: %s\n"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:89 ../json-glib/json-glib-validate.c:75
+#, c-format
+msgid "%s: %s: error parsing file: %s\n"
+msgstr "%s: %s: hiba a fájl feldolgozásakor: %s\n"
+
+#. Translators: the first %s is the program name, the
+#. * second one is the URI of the file.
+#.
+#: ../json-glib/json-glib-format.c:108
+#, c-format
+msgid "%s: %s: error writing to stdout"
+msgstr "%s: %s: hiba a szabványos kimenetre íráskor"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:128 ../json-glib/json-glib-validate.c:87
+#, c-format
+msgid "%s: %s: error closing: %s\n"
+msgstr "%s: %s: hiba a következő lezárásakor: %s\n"
+
+#: ../json-glib/json-glib-format.c:157 ../json-glib/json-glib-validate.c:115
+msgid "FILE"
+msgstr "FÁJL"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-format.c:160
+msgid "Format JSON files."
+msgstr "JSON fájlok formázása."
+
+#: ../json-glib/json-glib-format.c:161
+msgid "json-glib-format formats JSON resources."
+msgstr "A json-glib-format JSON erőforrásokat formáz."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:178 ../json-glib/json-glib-validate.c:136
+#, c-format
+msgid "Error parsing commandline options: %s\n"
+msgstr "Hiba a parancssori kapcsolók feldolgozásakor: %s\n"
+
+#: ../json-glib/json-glib-format.c:180 ../json-glib/json-glib-format.c:194
+#: ../json-glib/json-glib-validate.c:138 ../json-glib/json-glib-validate.c:152
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "További információkért adja ki a következő parancsot: „%s --help”."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:192 ../json-glib/json-glib-validate.c:150
+#, c-format
+msgid "%s: missing files"
+msgstr "%s: hiányzó fájlok"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-validate.c:118
+msgid "Validate JSON files."
+msgstr "JSON fájlok ellenőrzése."
+
+#: ../json-glib/json-glib-validate.c:119
+msgid "json-glib-validate validates JSON data at the given URI."
+msgstr ""
+"A json-glib-validate a megadott URI-n található JSON adatokat ellenőrzi."
+
+#: ../json-glib/json-gobject.c:915
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "A várt JSON objektum helyett a gyökérobjektum „%s” típusú"
+
+#: ../json-glib/json-gvariant.c:523
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "Váratlan „%s” típus a JSON csomópontban"
+
+#: ../json-glib/json-gvariant.c:593
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "A JSON tömbből hiányzó elemek miatt a tuple nem teljes"
+
+#: ../json-glib/json-gvariant.c:621
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "Hiányzó „)” szimbólum a GVariant tuple típusban"
+
+#: ../json-glib/json-gvariant.c:629
+msgid "Unexpected extra elements in JSON array"
+msgstr "Váratlan extra elemek a JSON tömbben"
+
+#: ../json-glib/json-gvariant.c:908
+msgid "Invalid string value converting to GVariant"
+msgstr "Érvénytelen karakterláncérték a GVariant-tá alakítás közben"
+
+#: ../json-glib/json-gvariant.c:964
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr "Egy GVariant szótárbejegyzés pontosan egy tagú JSON objektumot vár"
+
+#: ../json-glib/json-gvariant.c:1244
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "A(z) „%c” GVariant osztály nem támogatott"
+
+#: ../json-glib/json-gvariant.c:1292
+msgid "Invalid GVariant signature"
+msgstr "Érvénytelen GVariant aláírás"
+
+#: ../json-glib/json-gvariant.c:1340
+msgid "JSON data is empty"
+msgstr "A JSON adatok üresek"
+
+#: ../json-glib/json-parser.c:815
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: feldolgozási hiba: %s"
+
+#: ../json-glib/json-parser.c:883
+msgid "JSON data must be UTF-8 encoded"
+msgstr "A JSON adatoknak UTF-8 kódolásúnak kell lenniük"
+
+#: ../json-glib/json-path.c:388
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "Csak egy gyökércsomópont engedélyezett a JSONPath kifejezésben"
+
+#: ../json-glib/json-path.c:397
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "A gyökércsomópontot érvénytelen karakter követi: „%c”"
+
+#: ../json-glib/json-path.c:437
+msgid "Missing member name or wildcard after . character"
+msgstr "Hiányzó tagnév vagy helyettesítő karakter a . után"
+
+#: ../json-glib/json-path.c:511
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "Hibás szeletkifejezés: „%*s”"
+
+#: ../json-glib/json-path.c:555
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "Érvénytelen halmazdefiníció: „%*s”"
+
+#: ../json-glib/json-path.c:608
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "Érvénytelen szeletdefiníció: „%*s”"
+
+#: ../json-glib/json-path.c:636
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "Érvénytelen tömbindex-definíció: „%*s”"
+
+#: ../json-glib/json-path.c:655
+#, c-format
+msgid "Invalid first character '%c'"
+msgstr "Érvénytelen első karakter: „%c”"
+
+#: ../json-glib/json-reader.c:456
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr "A jelenlegi csomópont „%s” típusú a várt tömb vagy objektum helyett."
+
+#: ../json-glib/json-reader.c:468
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "A(z) „%d” index nagyobb az aktuális pozícióban lévő tömb méreténél."
+
+#: ../json-glib/json-reader.c:485
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr ""
+"A(z) „%d” index nagyobb az aktuális pozícióban lévő objektum méreténél."
+
+#: ../json-glib/json-reader.c:570 ../json-glib/json-reader.c:724
+#: ../json-glib/json-reader.c:775 ../json-glib/json-reader.c:813
+#: ../json-glib/json-reader.c:851 ../json-glib/json-reader.c:889
+#: ../json-glib/json-reader.c:927 ../json-glib/json-reader.c:972
+#: ../json-glib/json-reader.c:1008 ../json-glib/json-reader.c:1034
+msgid "No node available at the current position"
+msgstr "Nem érhető el csomópont az aktuális pozícióban"
+
+#: ../json-glib/json-reader.c:577
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "Az aktuális pozícióban „%s” található tömb helyett"
+
+#: ../json-glib/json-reader.c:640
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "A jelenlegi csomópont „%s” típusú a várt objektum helyett."
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr ""
+"A(z) „%s” tag nincs definiálva az aktuális pozícióban lévő objektumban."
+
+#: ../json-glib/json-reader.c:731 ../json-glib/json-reader.c:782
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "Az aktuális pozícióban „%s” található objektum helyett"
+
+#: ../json-glib/json-reader.c:822 ../json-glib/json-reader.c:860
+#: ../json-glib/json-reader.c:898 ../json-glib/json-reader.c:936
+#: ../json-glib/json-reader.c:981
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "Az aktuális pozícióban „%s” található érték helyett"
+
+#: ../json-glib/json-reader.c:944
+msgid "The current position does not hold a string type"
+msgstr "Az aktuális pozícióban nem karakterlánc típus található"
+
--- /dev/null
+# Indonesian translation for json-glib.
+# Copyright (C) 2012 json-glib's COPYRIGHT HOLDER
+# This file is distributed under the same license as the json-glib package.
+# Andika Triwidada <andika@gmail.com>, 2012, 2013.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2013-12-19 14:30+0000\n"
+"PO-Revision-Date: 2014-01-02 23:38+0700\n"
+"Last-Translator: Andika Triwidada <andika@gmail.com>\n"
+"Language-Team: Indonesian <gnome@i15n.org>\n"
+"Language: id\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-SourceCharset: UTF-8\n"
+"X-Generator: Poedit 1.5.7\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: ../json-glib/json-glib-format.c:41
+msgid "Prettify output"
+msgstr "Percantik keluaran"
+
+#: ../json-glib/json-glib-format.c:42
+msgid "Indentation spaces"
+msgstr "Spasi indentasi"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:68 ../json-glib/json-glib-validate.c:61
+#, c-format
+msgid "%s: %s: error opening file: %s\n"
+msgstr "%s: %s: galat saat membuka berkas: %s\n"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:80 ../json-glib/json-glib-validate.c:73
+#, c-format
+msgid "%s: %s: error parsing file: %s\n"
+msgstr "%s: %s: galat saat mengurai berkas: %s\n"
+
+#. Translators: the first %s is the program name, the
+#. * second one is the URI of the file.
+#.
+#: ../json-glib/json-glib-format.c:99
+#, c-format
+msgid "%s: %s: error writing to stdout"
+msgstr "%s: %s: galat saat menulis ke stdout"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:119 ../json-glib/json-glib-validate.c:85
+#, c-format
+msgid "%s: %s: error closing: %s\n"
+msgstr "%s: %s: galat saat menutup: %s\n"
+
+#: ../json-glib/json-glib-format.c:148 ../json-glib/json-glib-validate.c:113
+msgid "FILE"
+msgstr "BERKAS"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-format.c:151
+msgid "Format JSON files."
+msgstr "Memformat berkas JSON."
+
+#: ../json-glib/json-glib-format.c:152
+msgid "json-glib-format formats JSON resources."
+msgstr "json-glib-format memformat sumber daya JSON."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:169 ../json-glib/json-glib-validate.c:134
+#, c-format
+msgid "Error parsing commandline options: %s\n"
+msgstr "Galat saat mengurai opsi baris perintah: %s\n"
+
+#: ../json-glib/json-glib-format.c:171 ../json-glib/json-glib-format.c:185
+#: ../json-glib/json-glib-validate.c:136 ../json-glib/json-glib-validate.c:150
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Cobalah \"%s --help\" untuk lebih banyak informasi."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:183 ../json-glib/json-glib-validate.c:148
+#, c-format
+msgid "%s: missing files"
+msgstr "%s: kurang berkas"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-validate.c:116
+msgid "Validate JSON files."
+msgstr "Validasikan berkas JSON."
+
+#: ../json-glib/json-glib-validate.c:117
+msgid "json-glib-validate validates JSON data at the given URI."
+msgstr "json-glib-validate memvalidasi data JSON pada URI yang diberikan."
+
+#: ../json-glib/json-gobject.c:917
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "Mengharapkan objek JSON, tapi node akar bertipe '%s'"
+
+#: ../json-glib/json-gvariant.c:545
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "Tipe '%s' yang tak diharapkan dalam node JSON"
+
+#: ../json-glib/json-gvariant.c:615
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "Kehilangan elemen dalam larik JSON untuk memenuhi syarat sebagai tuple"
+
+#: ../json-glib/json-gvariant.c:643
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "Kehilangan simbol penutup ')' dalam tipe tuple GVariant"
+
+#: ../json-glib/json-gvariant.c:651
+msgid "Unexpected extra elements in JSON array"
+msgstr "Elemen ekstra yang tak diharapkan dalam larik JSON"
+
+#: ../json-glib/json-gvariant.c:930
+msgid "Invalid string value converting to GVariant"
+msgstr "Nilai string tak valid saat mengonversi ke GVariant"
+
+#: ../json-glib/json-gvariant.c:986
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr ""
+"Suatu entri kamus GVariant mengharapkan objek JSON dengan tepat satu anggota"
+
+#: ../json-glib/json-gvariant.c:1266
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "Kelas '%c' GVariant tak didukung"
+
+#: ../json-glib/json-gvariant.c:1314
+msgid "Invalid GVariant signature"
+msgstr "Tanda tangan GVariant tak valid"
+
+#: ../json-glib/json-gvariant.c:1362
+msgid "JSON data is empty"
+msgstr "Data JSON kosong"
+
+#: ../json-glib/json-parser.c:817
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: Galat mengurai: %s"
+
+#: ../json-glib/json-parser.c:885
+msgid "JSON data must be UTF-8 encoded"
+msgstr "Data JSON mesti ter-enkode UTF-8"
+
+#: ../json-glib/json-path.c:438
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "Hanya satu node akar yang diijinkan dalam ekspresi JSONPath"
+
+#: ../json-glib/json-path.c:447
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "Node akar diikuti oleh karakter tak valid '%c'"
+
+#: ../json-glib/json-path.c:487
+msgid "Missing member name or wildcard after . character"
+msgstr "Kurang nama anggota atau wildcard setelah karakter . (titik)"
+
+#: ../json-glib/json-path.c:561
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "Ekspresi slice '%*s' salah bentuk"
+
+#: ../json-glib/json-path.c:605
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "Definisi set '%*s' tak valid"
+
+#: ../json-glib/json-path.c:658
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "Definisi slice '%*s' tak valid"
+
+#: ../json-glib/json-path.c:686
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "Definisi indeks larik '%*s' tak valid"
+
+#: ../json-glib/json-path.c:705
+#, c-format
+msgid "Invalid first character '%c'"
+msgstr "Karakter pertama '%c' tak valid"
+
+#: ../json-glib/json-reader.c:457
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr "Node kini bertipe '%s', tapi larik atau objek yang diharapkan."
+
+#: ../json-glib/json-reader.c:469
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "Indeks '%d' lebih besar daripada ukuran larik pada posisi kini."
+
+#: ../json-glib/json-reader.c:486
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr "Indeks '%d' lebih besar daripada ukuran objek pada posisi kini."
+
+#: ../json-glib/json-reader.c:570 ../json-glib/json-reader.c:723
+#: ../json-glib/json-reader.c:774 ../json-glib/json-reader.c:812
+#: ../json-glib/json-reader.c:850 ../json-glib/json-reader.c:888
+#: ../json-glib/json-reader.c:926 ../json-glib/json-reader.c:971
+#: ../json-glib/json-reader.c:1007 ../json-glib/json-reader.c:1033
+msgid "No node available at the current position"
+msgstr "Node tak tersedia pada posisi kini"
+
+#: ../json-glib/json-reader.c:577
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "Posisi kini menampung '%s' dan bukan suatu larik"
+
+#: ../json-glib/json-reader.c:640
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "Node kini bertipe '%s', tapi yang diharapkan adalah objek."
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "Anggota '%s' tak didefinisikan dalam objek pada posisi kini."
+
+#: ../json-glib/json-reader.c:730 ../json-glib/json-reader.c:781
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "Posisi kini menampung '%s' dan bukan suatu objek"
+
+#: ../json-glib/json-reader.c:821 ../json-glib/json-reader.c:859
+#: ../json-glib/json-reader.c:897 ../json-glib/json-reader.c:935
+#: ../json-glib/json-reader.c:980
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "Posisi kini menampung '%s' dan bukan suatu nilai"
+
+#: ../json-glib/json-reader.c:943
+msgid "The current position does not hold a string type"
+msgstr "Posisi kini tak menampung suatu tipe string"
--- /dev/null
+# Italian translation for json-glib.
+# Copyright (C) 2012, 2013 json-glib's copyright holder
+# This file is distributed under the same license as the json-glib package.
+# Luca Ferretti <lferrett@gnome.org>, 2012.
+# Milo Casagrande <milo@ubuntu.com>, 2013.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib\n"
+"POT-Creation-Date: 2013-12-11 10:43+0100\n"
+"PO-Revision-Date: 2013-12-11 10:47+0100\n"
+"Last-Translator: Milo Casagrande <milo@ubuntu.com>\n"
+"Language-Team: Italian <tp@lists.linux.it>\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8-bit\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+"X-Generator: Gtranslator 2.91.6\n"
+
+#: ../json-glib/json-glib-format.c:41
+msgid "Prettify output"
+msgstr "Output abbellito"
+
+#: ../json-glib/json-glib-format.c:42
+msgid "Indentation spaces"
+msgstr "Spazi di rientro"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:68 ../json-glib/json-glib-validate.c:61
+#, c-format
+msgid "%s: %s: error opening file: %s\n"
+msgstr "%s: %s: errore nell'aprire il file: %s\n"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:80 ../json-glib/json-glib-validate.c:73
+#, c-format
+msgid "%s: %s: error parsing file: %s\n"
+msgstr "%s: %s: errore nell'analizzare il file: %s\n"
+
+#. Translators: the first %s is the program name, the
+#. * second one is the URI of the file.
+#.
+#: ../json-glib/json-glib-format.c:99
+#, c-format
+msgid "%s: %s: error writing to stdout"
+msgstr "%s: %s: errore nello scrivere su stdout"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:119 ../json-glib/json-glib-validate.c:85
+#, c-format
+msgid "%s: %s: error closing: %s\n"
+msgstr "%s: %s: errore nel chiudere: %s\n"
+
+#: ../json-glib/json-glib-format.c:148 ../json-glib/json-glib-validate.c:113
+msgid "FILE"
+msgstr "FILE"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-format.c:151
+msgid "Format JSON files."
+msgstr "Formatta i file JSON."
+
+#: ../json-glib/json-glib-format.c:152
+msgid "json-glib-format formats JSON resources."
+msgstr "json-glib-format formatta le risorse JSON."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:169 ../json-glib/json-glib-validate.c:134
+#, c-format
+msgid "Error parsing commandline options: %s\n"
+msgstr "Errore nell'analizzare le opzioni a riga di comando: %s\n"
+
+#: ../json-glib/json-glib-format.c:171 ../json-glib/json-glib-format.c:185
+#: ../json-glib/json-glib-validate.c:136 ../json-glib/json-glib-validate.c:150
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Per maggiori informazioni, usare \"%s --help\"."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:183 ../json-glib/json-glib-validate.c:148
+#, c-format
+msgid "%s: missing files"
+msgstr "%s: mancano dei file"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-validate.c:116
+msgid "Validate JSON files."
+msgstr "Convalida i file JSON."
+
+#: ../json-glib/json-glib-validate.c:117
+msgid "json-glib-validate validates JSON data at the given URI."
+msgstr "json-glib-validate convalida i dati JSON trovati all'URI fornito."
+
+#: ../json-glib/json-gobject.c:917
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "Atteso un oggetto JSON, ma il nodo radice è del tipo \"%s\""
+
+#: ../json-glib/json-gvariant.c:545
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "Tipo \"%s\" inatteso nel nodo JSON"
+
+#: ../json-glib/json-gvariant.c:615
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "Elementi mancanti nell'array JSON per conformità a una tupla"
+
+#: ../json-glib/json-gvariant.c:643
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "Simbolo ')' di chiusra mancante nel tipo tupla GVariant"
+
+#: ../json-glib/json-gvariant.c:651
+msgid "Unexpected extra elements in JSON array"
+msgstr "Elementi aggiuntivi inattesi nell'array JSON"
+
+#: ../json-glib/json-gvariant.c:930
+msgid "Invalid string value converting to GVariant"
+msgstr "Valore di stringa non valido nella conversione a JSON"
+
+#: ../json-glib/json-gvariant.c:986
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr ""
+"Una voce di dizionario GVariant richiese un oggetto JSON con esattamente un "
+"membro"
+
+#: ../json-glib/json-gvariant.c:1266
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "Classe GVariant '%c' non supportata"
+
+#: ../json-glib/json-gvariant.c:1314
+msgid "Invalid GVariant signature"
+msgstr "Firma GVariant non valida"
+
+#: ../json-glib/json-gvariant.c:1362
+msgid "JSON data is empty"
+msgstr "I dati JSON sono vuoti"
+
+#: ../json-glib/json-parser.c:817
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: errore di analisi: %s"
+
+#: ../json-glib/json-parser.c:885
+msgid "JSON data must be UTF-8 encoded"
+msgstr "I dati JSON devono essere codificati in UTF-8"
+
+#: ../json-glib/json-path.c:438
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "È consentito un solo nodo radice in una espressione JSON"
+
+#: ../json-glib/json-path.c:447
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "Nodo radice seguito dal carattere non valido '%c'"
+
+#: ../json-glib/json-path.c:487
+msgid "Missing member name or wildcard after . character"
+msgstr ""
+"Manca il nome del membro o un carattere speciale dopo il carattere \".\""
+
+#: ../json-glib/json-path.c:561
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "Espressione slice '%*s' malformata"
+
+#: ../json-glib/json-path.c:605
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "Definizione di set '%*s' non valida"
+
+#: ../json-glib/json-path.c:658
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "Definizione di slice '%*s' non valida"
+
+#: ../json-glib/json-path.c:686
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "Definizione di indice array '%*s' non valida"
+
+#: ../json-glib/json-path.c:705
+#, c-format
+msgid "Invalid first character '%c'"
+msgstr "Primo carattere \"%c\" non valido"
+
+#: ../json-glib/json-reader.c:457
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr ""
+"Il tipo del nodo corrente è \"%s\", ma era atteso un array o un oggetto."
+
+#: ../json-glib/json-reader.c:469
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr ""
+"L'indice '%d' è maggiore della dimensione dell'array alla posizione corrente."
+
+#: ../json-glib/json-reader.c:486
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr ""
+"L'indice '%d' è maggiore della dimensione dell'oggetto alla posizione "
+"corrente."
+
+#: ../json-glib/json-reader.c:570 ../json-glib/json-reader.c:723
+#: ../json-glib/json-reader.c:774 ../json-glib/json-reader.c:812
+#: ../json-glib/json-reader.c:850 ../json-glib/json-reader.c:888
+#: ../json-glib/json-reader.c:926 ../json-glib/json-reader.c:971
+#: ../json-glib/json-reader.c:1007 ../json-glib/json-reader.c:1033
+msgid "No node available at the current position"
+msgstr "Nessun nodo disponibile alla posizione corrente"
+
+#: ../json-glib/json-reader.c:577
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "La posizione corrente contiene un \"%s\" e non un array"
+
+#: ../json-glib/json-reader.c:640
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "Il tipo del nodo corrente è \"%s\", ma era atteso un oggetto."
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "Non è definito il membro \"%s\" nell'oggetto alla posizione corrente."
+
+#: ../json-glib/json-reader.c:730 ../json-glib/json-reader.c:781
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "La posizione corrente contiene un \"%s\" e non un oggetto"
+
+#: ../json-glib/json-reader.c:821 ../json-glib/json-reader.c:859
+#: ../json-glib/json-reader.c:897 ../json-glib/json-reader.c:935
+#: ../json-glib/json-reader.c:980
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "La posizione corrente contiene un \"%s\" e non un valore"
+
+#: ../json-glib/json-reader.c:943
+msgid "The current position does not hold a string type"
+msgstr "La posizione corrente non contiene un tipo stringa"
--- /dev/null
+# json-glib ja.po
+# Copyright (C) 2012 json-glib's COPYRIGHT HOLDER
+# This file is distributed under the same license as the json-glib package.
+# Takayuki KUSANO <AE5T-KSN@asahi-net.or.jp>, 2012.
+# Jiro Matsuzawa <jmatsuzawa@gnome.org>, 2012, 2013.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-glib\n"
+"POT-Creation-Date: 2013-09-18 22:27+0900\n"
+"PO-Revision-Date: 2013-09-18 22:29+0900\n"
+"Last-Translator: Jiro Matsuzawa <jmatsuzawa@gnome.org>\n"
+"Language-Team: Japanese <gnome-translation@gnome.gr.jp>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../json-glib/json-gobject.c:917
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "JSON オブジェクトであるべきところ、ルートノードが `%s' 型です"
+
+#: ../json-glib/json-gvariant.c:540
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "JSON ノードが `%s' 型になってしまってます"
+
+#: ../json-glib/json-gvariant.c:610
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "JSON の配列にタプルを構成する要素が足りません"
+
+#: ../json-glib/json-gvariant.c:638
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "GVariant タプル型に閉じ記号 ')' がありません"
+
+#: ../json-glib/json-gvariant.c:646
+msgid "Unexpected extra elements in JSON array"
+msgstr "JSON 配列に余計な要素があります"
+
+#: ../json-glib/json-gvariant.c:925
+msgid "Invalid string value converting to GVariant"
+msgstr "GVariant に変換するのに無効な文字列です"
+
+#: ../json-glib/json-gvariant.c:981
+msgid "A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr "GVariant の辞書エントリはメンバーを一つだけ含んだ JSON オブジェクトでなくてはなりません"
+
+#: ../json-glib/json-gvariant.c:1237
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "GVariant のクラス '%c' はサポートされていません"
+
+#: ../json-glib/json-gvariant.c:1285
+msgid "Invalid GVariant signature"
+msgstr "無効な GVariant シグネチャです"
+
+#: ../json-glib/json-gvariant.c:1333
+msgid "JSON data is empty"
+msgstr "JSON データが空です"
+
+#: ../json-glib/json-parser.c:817
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: パースエラー: %s"
+
+#: ../json-glib/json-path.c:436
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "JSONPath 式ではルートノード一つだけが許可されています"
+
+#: ../json-glib/json-path.c:445
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "ルートノードの後に無効な文字 '%c' があります"
+
+#: ../json-glib/json-path.c:551
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "不正なスライス式 '%*s'"
+
+#: ../json-glib/json-path.c:595
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "無効な集合定義 '%*s'"
+
+#: ../json-glib/json-path.c:648
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "無効なスライス定義: '%*s'"
+
+#: ../json-glib/json-path.c:676
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "無効な配列インデックス定義 '%*s'"
+
+#: ../json-glib/json-reader.c:457
+#, c-format
+msgid "The current node is of type '%s', but an array or an object was expected."
+msgstr "現在のノードは '%s' 型ですが、配列あるいはオブジェクトである必要があります。"
+
+#: ../json-glib/json-reader.c:469
+#, c-format
+msgid "The index '%d' is greater than the size of the array at the current position."
+msgstr "インデックス '%d' は現在位置にある配列の長さよりも大きいです。"
+
+#: ../json-glib/json-reader.c:486
+#, c-format
+msgid "The index '%d' is greater than the size of the object at the current position."
+msgstr "インデックス '%d' は現在位置のオブジェクトの大きさよりも大きいです。"
+
+#: ../json-glib/json-reader.c:570 ../json-glib/json-reader.c:723
+#: ../json-glib/json-reader.c:774 ../json-glib/json-reader.c:812
+#: ../json-glib/json-reader.c:850 ../json-glib/json-reader.c:888
+#: ../json-glib/json-reader.c:926 ../json-glib/json-reader.c:971
+#: ../json-glib/json-reader.c:1007 ../json-glib/json-reader.c:1033
+msgid "No node available at the current position"
+msgstr "現在位置にノードがありません"
+
+#: ../json-glib/json-reader.c:577
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "現在位置は '%s' で、配列ではありません"
+
+#: ../json-glib/json-reader.c:640
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "現在のノードは '%s' 型ですが、オブジェクトである必要があります。"
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "現在位置のオブジェクトで '%s' メンバーは定義されていません"
+
+#: ../json-glib/json-reader.c:730 ../json-glib/json-reader.c:781
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "現在位置は '%s' で、オブジェクトではありません"
+
+#: ../json-glib/json-reader.c:821 ../json-glib/json-reader.c:859
+#: ../json-glib/json-reader.c:897 ../json-glib/json-reader.c:935
+#: ../json-glib/json-reader.c:980
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "現在位置は '%s' で値ではありません"
+
+#: ../json-glib/json-reader.c:943
+msgid "The current position does not hold a string type"
+msgstr "現在位置が文字列型ではありません"
+
+#~ msgid "The current position does not hold an integer type"
+#~ msgstr "現在位置が整数型ではありません"
+
+#~ msgid "The current position does not hold a floating point type"
+#~ msgstr "現在位置が浮動小数点型ではありません"
+
+#~ msgid "The current position does not hold a boolean type"
+#~ msgstr "現在位置が論理値型ではありません"
--- /dev/null
+# Korean translation for json-glib.
+# Copyright (C) 2012 Seong-ho Cho et al.
+# This file is distributed under the same license as the json-glib package.
+# Seong-ho Cho <darkcircle.0426@gmail.com>, 2012, 2013, 2014.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2014-03-16 10:16+0000\n"
+"PO-Revision-Date: 2014-03-15 02:04+0900\n"
+"Last-Translator: Seong-ho Cho <darkcircle.0426@gmail.com>\n"
+"Language-Team: Korean <gnome-kr@googlegroups.com>\n"
+"Language: ko\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 1.5.5\n"
+
+#: ../json-glib/json-glib-format.c:50
+msgid "Prettify output"
+msgstr "출력 정돈"
+
+#: ../json-glib/json-glib-format.c:51
+msgid "Indentation spaces"
+msgstr "들여쓰기 공백"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:77 ../json-glib/json-glib-validate.c:63
+#, c-format
+msgid "%s: %s: error opening file: %s\n"
+msgstr "%s: %s: 파일 여는 중 오류: %s\n"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:89 ../json-glib/json-glib-validate.c:75
+#, c-format
+msgid "%s: %s: error parsing file: %s\n"
+msgstr "%s: %s: 파일 해석 중 오류: %s\n"
+
+#. Translators: the first %s is the program name, the
+#. * second one is the URI of the file.
+#.
+#: ../json-glib/json-glib-format.c:108
+#, c-format
+msgid "%s: %s: error writing to stdout"
+msgstr "%s: %s: 표준 출력 쓰는 중 오류"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:128 ../json-glib/json-glib-validate.c:87
+#, c-format
+msgid "%s: %s: error closing: %s\n"
+msgstr "%s: %s: 닫는 중 오류: %s\n"
+
+#: ../json-glib/json-glib-format.c:157 ../json-glib/json-glib-validate.c:115
+msgid "FILE"
+msgstr "<파일>"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-format.c:160
+msgid "Format JSON files."
+msgstr "JSON 파일의 코드를 정렬합니다."
+
+#: ../json-glib/json-glib-format.c:161
+msgid "json-glib-format formats JSON resources."
+msgstr "json-glib-format이 JSON 자료 코드를 정렬합니다."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:178 ../json-glib/json-glib-validate.c:136
+#, c-format
+msgid "Error parsing commandline options: %s\n"
+msgstr "명령줄 옵션 해석 중 오류: %s\n"
+
+#: ../json-glib/json-glib-format.c:180 ../json-glib/json-glib-format.c:194
+#: ../json-glib/json-glib-validate.c:138 ../json-glib/json-glib-validate.c:152
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "더 많은 내용은 \"%s --help\"를 실행하십시오."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:192 ../json-glib/json-glib-validate.c:150
+#, c-format
+msgid "%s: missing files"
+msgstr "%s: 파일이 빠졌습니다"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-validate.c:118
+msgid "Validate JSON files."
+msgstr "JSON 파일을 검증합니다."
+
+#: ../json-glib/json-glib-validate.c:119
+msgid "json-glib-validate validates JSON data at the given URI."
+msgstr "json-glib-validate는 주어진 URI의 JSON 데이터를 검증합니다."
+
+#: ../json-glib/json-gobject.c:917
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "JSON 객체를 예상했지만 최상위 노드는 `%s' 형식입니다"
+
+#: ../json-glib/json-gvariant.c:545
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "JSON 노드에 예상치 못한 '%s' 형식이 있습니다"
+
+#: ../json-glib/json-gvariant.c:615
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "튜플에 따르기 위한 JSON 배열의 요소가 빠졌습니다"
+
+#: ../json-glib/json-gvariant.c:643
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "GVariant 튜플 형식에서 ')' 닫음 심볼이 빠졌습니다"
+
+#: ../json-glib/json-gvariant.c:651
+msgid "Unexpected extra elements in JSON array"
+msgstr "JSON 배열에 예상치 못한 추가 요소가 있습니다"
+
+#: ../json-glib/json-gvariant.c:930
+msgid "Invalid string value converting to GVariant"
+msgstr "GVariant로 변환하려는 문자열 값이 잘못되었습니다"
+
+#: ../json-glib/json-gvariant.c:986
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr ""
+"GVariant 딕셔너리 항목은 정확히 하나의 요소를 가진 JSON 객체를 요구합니다"
+
+#: ../json-glib/json-gvariant.c:1266
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "GVariant '%c' 클래스를 지원하지 않습니다"
+
+#: ../json-glib/json-gvariant.c:1314
+msgid "Invalid GVariant signature"
+msgstr "잘못된 GVariant 서명입니다"
+
+#: ../json-glib/json-gvariant.c:1362
+msgid "JSON data is empty"
+msgstr "JSON 데이터가 비었습니다"
+
+#: ../json-glib/json-parser.c:817
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: 해석 오류: %s"
+
+#: ../json-glib/json-parser.c:885
+msgid "JSON data must be UTF-8 encoded"
+msgstr "JSON 데이터는 UTF-8로 인코딩해야 합니다"
+
+#: ../json-glib/json-path.c:438
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "JSONPath 표현식에서는 단 하나만의 최상위 노드를 허용합니다"
+
+#: ../json-glib/json-path.c:447
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "최상위 노드에 잘못된 '%c' 문자가 따라옵니다"
+
+#: ../json-glib/json-path.c:487
+msgid "Missing member name or wildcard after . character"
+msgstr "멤버 이름 또는 구두점 문자 다음 와일드카드가 빠졌습니다"
+
+#: ../json-glib/json-path.c:561
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "잘못된 분배 표현식 '%*s'"
+
+#: ../json-glib/json-path.c:605
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "잘못된 셋 정의 '%*s'"
+
+#: ../json-glib/json-path.c:658
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "잘못된 분배 정의 '%*s'"
+
+#: ../json-glib/json-path.c:686
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "잘못된 배열 인덱스 정의 '%*s'"
+
+#: ../json-glib/json-path.c:705
+#, c-format
+msgid "Invalid first character '%c'"
+msgstr "잘못된 첫번째 문자 '%c'"
+
+#: ../json-glib/json-reader.c:463
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr "현재 노드는 '%s' 형식 이지만, 배열 또는 객체를 요구합니다."
+
+#: ../json-glib/json-reader.c:475
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "현재 위치의 인덱스 '%d'번은 배열의 크기보다 큽니다."
+
+#: ../json-glib/json-reader.c:492
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr "현재 위치의 '%d'번 인덱스는 객체의 크기보다 큽니다."
+
+#: ../json-glib/json-reader.c:577 ../json-glib/json-reader.c:731
+#: ../json-glib/json-reader.c:782 ../json-glib/json-reader.c:820
+#: ../json-glib/json-reader.c:858 ../json-glib/json-reader.c:896
+#: ../json-glib/json-reader.c:934 ../json-glib/json-reader.c:979
+#: ../json-glib/json-reader.c:1015 ../json-glib/json-reader.c:1041
+msgid "No node available at the current position"
+msgstr "현재 위치에 노드가 없습니다"
+
+#: ../json-glib/json-reader.c:584
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "현재 위치에 배열이 아닌 '%s'이(가) 있습니다"
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "현재 노드는 '%s' 형식이지만 객체를 요구합니다."
+
+#: ../json-glib/json-reader.c:654
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "현재 위치 객체에 '%s' 구성원을 정의하지 않았습니다."
+
+#: ../json-glib/json-reader.c:738 ../json-glib/json-reader.c:789
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "현재 위치에 객체가 아닌 '%s'이(가) 있습니다"
+
+#: ../json-glib/json-reader.c:829 ../json-glib/json-reader.c:867
+#: ../json-glib/json-reader.c:905 ../json-glib/json-reader.c:943
+#: ../json-glib/json-reader.c:988
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "현재 위치에 값이 아닌 '%s'이(가) 있습니다"
+
+#: ../json-glib/json-reader.c:951
+msgid "The current position does not hold a string type"
+msgstr "현재 위치에 문자열 값이 없습니다"
--- /dev/null
+# Kirghiz translation for json-glib.
+# Kyrgyz translation of json-glib
+# Copyright (C) 2012 json-glib authors
+# This file is distributed under the same license as the json-glib package.
+#
+# Timur Zhamakeev <ztimur@gmail.com>, 2012, 2013.
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2012-09-24 08:27+0000\n"
+"PO-Revision-Date: 2013-01-05 18:22+0600\n"
+"Last-Translator: Timur Zhamakeev <ztimur@gmail.com>\n"
+"Language-Team: Kirghiz <gnome-i18n@gnome.org>\n"
+"Language: ky\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Lokalize 1.4\n"
+
+#: ../json-glib/json-gobject.c:934
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "JSON объекти күтүлүүдө, бирок башкы түйүн `%s' тибинде"
+
+#: ../json-glib/json-gvariant.c:539
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "JSON түйүнүндө күтүлбөгөн тип: '%s' "
+
+#: ../json-glib/json-gvariant.c:609
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "JSON массивинде кортежге ылайык келүүчү элементтер жок"
+
+#: ../json-glib/json-gvariant.c:637
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "GVariant кортеж тибинде жабылуучу ')' тамгасы жок"
+
+#: ../json-glib/json-gvariant.c:645
+msgid "Unexpected extra elements in JSON array"
+msgstr "JSON массивинде күтүлбөгөн кошумча элементтер"
+
+#: ../json-glib/json-gvariant.c:924
+msgid "Invalid string value converting to GVariant"
+msgstr "GVariant тибине которуу үчүн берилген саптын мааниси туура эмес"
+
+#: ../json-glib/json-gvariant.c:980
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr "GVariant сөздүк элементи, бир гана мүчөлүү JSON объекти болушу керек"
+
+#: ../json-glib/json-gvariant.c:1236
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "'%c' GVariant классы колдоого ээ эмес"
+
+#: ../json-glib/json-gvariant.c:1281
+msgid "Invalid GVariant signature"
+msgstr "GVariant сигнатурасы туура эмес"
+
+#: ../json-glib/json-gvariant.c:1326
+msgid "JSON data is empty"
+msgstr "JSON маалыматы жок"
+
+#: ../json-glib/json-parser.c:818
+#, c-format
+msgid "%s:%d: Parse error: %s"
+msgstr "%s:%d: Ажыратып окуу катасы: %s"
+
+#: ../json-glib/json-path.c:375
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "JSONPath туюнтмасында бир гана башкы түйүн болушу мүмкүн"
+
+#: ../json-glib/json-path.c:384
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "Башкы түйүн туура эмес тамга менен аяктаган: '%c'"
+
+#: ../json-glib/json-path.c:490
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "Туура эмес кесүү (slice) туюнтмасы '%*s'"
+
+#: ../json-glib/json-path.c:534
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "Туура эмес ыйгаруу (set) аныктамасы '%*s'"
+
+#: ../json-glib/json-path.c:587
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "Туура эмес кесүү (slice) аныктамасы '%*s'"
+
+#: ../json-glib/json-path.c:615
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "Массив индексинин туура эмес аныктамасы '%*s'"
+
+#: ../json-glib/json-reader.c:463
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr "Учурдагы түйүн '%s' тибинде; массив же объект күтүлгөн."
+
+#: ../json-glib/json-reader.c:475
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "Учурдагы позициянын индекси:'%d' массивдин узундугунан чоң."
+
+#: ../json-glib/json-reader.c:492
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr ""
+"Учурдагы позициянын индекси:'%d'; объектин узундугунан "
+"чоң."
+
+#: ../json-glib/json-reader.c:576 ../json-glib/json-reader.c:729
+#: ../json-glib/json-reader.c:780 ../json-glib/json-reader.c:818
+#: ../json-glib/json-reader.c:856 ../json-glib/json-reader.c:894
+#: ../json-glib/json-reader.c:932 ../json-glib/json-reader.c:977
+#: ../json-glib/json-reader.c:1013 ../json-glib/json-reader.c:1039
+msgid "No node available at the current position"
+msgstr "Учурдагы позицияда түйүн жок"
+
+#: ../json-glib/json-reader.c:583
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "Учурдагы позицияда:'%s'; ал массив эмес"
+
+#: ../json-glib/json-reader.c:646
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "Учурдагы түйүн '%s' тибинде; объект күтүлгөн."
+
+#: ../json-glib/json-reader.c:653
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "Учурку позициядагы объекте '%s' аттуу мүчө аныкталган эмес."
+
+#: ../json-glib/json-reader.c:736 ../json-glib/json-reader.c:787
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "Учурдагы позицияда:'%s'; ал объект эмес"
+
+#: ../json-glib/json-reader.c:827 ../json-glib/json-reader.c:865
+#: ../json-glib/json-reader.c:903 ../json-glib/json-reader.c:941
+#: ../json-glib/json-reader.c:986
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "Учурдагы позицияда:'%s'; ал маани эмес"
+
+#: ../json-glib/json-reader.c:949
+msgid "The current position does not hold a string type"
+msgstr "Учурдагы позициянын тиби, саптык тип эмес"
+
+
--- /dev/null
+# Lithuanian translation for json-glib.
+# Copyright (C) 2012 json-glib's COPYRIGHT HOLDER
+# This file is distributed under the same license as the json-glib package.
+# Aurimas Černius <aurisc4@gmail.com>, 2012, 2013, 2014.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2014-02-21 10:16+0000\n"
+"PO-Revision-Date: 2014-02-21 23:18+0200\n"
+"Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n"
+"Language-Team: Lietuvių <gnome-lt@lists.akl.lt>\n"
+"Language: lt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
+"%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Gtranslator 2.91.6\n"
+
+#: ../json-glib/json-glib-format.c:50
+msgid "Prettify output"
+msgstr "Graži išvestis"
+
+#: ../json-glib/json-glib-format.c:51
+msgid "Indentation spaces"
+msgstr "Įtrauka tarpais"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:77 ../json-glib/json-glib-validate.c:63
+#, c-format
+msgid "%s: %s: error opening file: %s\n"
+msgstr "%s: %s: klaida atveriant failą: %s\n"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:89 ../json-glib/json-glib-validate.c:75
+#, c-format
+msgid "%s: %s: error parsing file: %s\n"
+msgstr "%s: %s: klaida skaitant failą: %s\n"
+
+#. Translators: the first %s is the program name, the
+#. * second one is the URI of the file.
+#.
+#: ../json-glib/json-glib-format.c:108
+#, c-format
+msgid "%s: %s: error writing to stdout"
+msgstr "%s: %s: klaida rašant į standartinę išvestį"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:128 ../json-glib/json-glib-validate.c:87
+#, c-format
+msgid "%s: %s: error closing: %s\n"
+msgstr "%s: %s: klaida užveriant: %s\n"
+
+#: ../json-glib/json-glib-format.c:157 ../json-glib/json-glib-validate.c:115
+msgid "FILE"
+msgstr "FAILAS"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-format.c:160
+msgid "Format JSON files."
+msgstr "Formatuoti JSON failus."
+
+#: ../json-glib/json-glib-format.c:161
+msgid "json-glib-format formats JSON resources."
+msgstr "json-glib-format formatuoja JSON resursus."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:178 ../json-glib/json-glib-validate.c:136
+#, c-format
+msgid "Error parsing commandline options: %s\n"
+msgstr "Klaida skaitant komandų eilutės parametrus: %s\n"
+
+#: ../json-glib/json-glib-format.c:180 ../json-glib/json-glib-format.c:194
+#: ../json-glib/json-glib-validate.c:138 ../json-glib/json-glib-validate.c:152
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Daugiau informacijos gausite įvykdę „%s --help“."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:192 ../json-glib/json-glib-validate.c:150
+#, c-format
+msgid "%s: missing files"
+msgstr "%s: trūksta failų"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-validate.c:118
+msgid "Validate JSON files."
+msgstr "Tikrinti JSON failus."
+
+#: ../json-glib/json-glib-validate.c:119
+msgid "json-glib-validate validates JSON data at the given URI."
+msgstr "json-glib-validate patikrina JSON duomenis ties pateiktu URI."
+
+#: ../json-glib/json-gobject.c:917
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "Tikimasi JSON objekto, bet šakninė viršūnė yra „%s“ tipo"
+
+#: ../json-glib/json-gvariant.c:545
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "Netikėtas tipas „%s“ JSON viršūnėje"
+
+#: ../json-glib/json-gvariant.c:615
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "Trūksta elementų JSON masyve junginiui sudaryti"
+
+#: ../json-glib/json-gvariant.c:643
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "Trūksta uždarančio simbolio „)“ GVariant junginio tipe"
+
+#: ../json-glib/json-gvariant.c:651
+msgid "Unexpected extra elements in JSON array"
+msgstr "Netikėti papildomi elementai JSON masyve"
+
+#: ../json-glib/json-gvariant.c:930
+msgid "Invalid string value converting to GVariant"
+msgstr "Netinkama eilutės reikšmė konvertavimui į GVariant"
+
+#: ../json-glib/json-gvariant.c:986
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr "GVariant žodyno įrašas tikisi JSON objekto su vieninteliu nariu"
+
+#: ../json-glib/json-gvariant.c:1266
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "GVariant klasė „%c“ nepalaikoma"
+
+#: ../json-glib/json-gvariant.c:1314
+msgid "Invalid GVariant signature"
+msgstr "Netinkamas GVariant aprašas"
+
+#: ../json-glib/json-gvariant.c:1362
+msgid "JSON data is empty"
+msgstr "JSON duomenys yra tušti"
+
+#: ../json-glib/json-parser.c:817
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: skaitymo klaida: %s"
+
+#: ../json-glib/json-parser.c:885
+msgid "JSON data must be UTF-8 encoded"
+msgstr "JSON duomenys turi būti koduoti UTF-8"
+
+#: ../json-glib/json-path.c:438
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "JSONPath išraiškoje leidžiamas vienintelė šakninė viršūnė"
+
+#: ../json-glib/json-path.c:447
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "Po šakninės viršūnės yra netinkamas simbolis „%c“"
+
+#: ../json-glib/json-path.c:487
+msgid "Missing member name or wildcard after . character"
+msgstr "Trūksta nario pavadinimo arba pakaitos simbolio po . simbolio"
+
+#: ../json-glib/json-path.c:561
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "Blogai suformuota dalinimo išraiška „%*s“"
+
+#: ../json-glib/json-path.c:605
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "Netinkamas aibės apibrėžimas „%*s“"
+
+#: ../json-glib/json-path.c:658
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "Netinkamas dalinimo apibrėžimas „%*s“"
+
+#: ../json-glib/json-path.c:686
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "Netinkamas masyvo apibrėžimas „%*s“"
+
+#: ../json-glib/json-path.c:705
+#, c-format
+msgid "Invalid first character '%c'"
+msgstr "Netinkamas pirmasis simbolis „%c“"
+
+#: ../json-glib/json-reader.c:463
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr "Dabartinė viršūnė yra „%s“ tipo, bet tikėtasi masyvo arba objekto."
+
+#: ../json-glib/json-reader.c:475
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "Indeksas „%d“ yra didesnis nei masyvo dydis dabartinėje pozicijoje."
+
+#: ../json-glib/json-reader.c:492
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr "Indeksas „%d“ yra didesnis nei objekto dydis dabartinėje pozicijoje."
+
+#: ../json-glib/json-reader.c:577 ../json-glib/json-reader.c:731
+#: ../json-glib/json-reader.c:782 ../json-glib/json-reader.c:820
+#: ../json-glib/json-reader.c:858 ../json-glib/json-reader.c:896
+#: ../json-glib/json-reader.c:934 ../json-glib/json-reader.c:979
+#: ../json-glib/json-reader.c:1015 ../json-glib/json-reader.c:1041
+msgid "No node available at the current position"
+msgstr "Nėra viršūnės dabartinėje pozicijoje"
+
+#: ../json-glib/json-reader.c:584
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "Dabartinėje pozicijoje yra „%s“, o ne masyvas"
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "Dabartinė viršūnė yra „%s“ tipo, bet tikėtasi objekto."
+
+#: ../json-glib/json-reader.c:654
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "Narys „%s“ neapibrėžtas dabartinėje pozicijoje esančiame objekte."
+
+#: ../json-glib/json-reader.c:738 ../json-glib/json-reader.c:789
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "Dabartinė pozicija turi „%s“, o ne objektą"
+
+#: ../json-glib/json-reader.c:829 ../json-glib/json-reader.c:867
+#: ../json-glib/json-reader.c:905 ../json-glib/json-reader.c:943
+#: ../json-glib/json-reader.c:988
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "Dabartinė pozicija turi „%s“, o ne reikšmę"
+
+#: ../json-glib/json-reader.c:951
+msgid "The current position does not hold a string type"
+msgstr "Dabartinė pozicija turi „%s“, o ne eilutės tipą"
--- /dev/null
+# Latvian translation for json-glib.
+# Copyright (C) 2012 json-glib's COPYRIGHT HOLDER
+# This file is distributed under the same license as the json-glib package.
+#
+# Rūdolfs Mazurs <rudolfs.mazurs@gmail.com>, 2012, 2013, 2014.
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2014-03-07 10:18+0000\n"
+"PO-Revision-Date: 2014-03-07 16:52+0200\n"
+"Last-Translator: Rūdolfs Mazurs <rudolfs.mazurs@gmail.com>\n"
+"Language-Team: Latvian <lata-l10n@googlegroups.com>\n"
+"Language: lv\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
+"2);\n"
+"X-Generator: Lokalize 1.5\n"
+
+#: ../json-glib/json-glib-format.c:50
+msgid "Prettify output"
+msgstr "Izskaistināt izvadi"
+
+#: ../json-glib/json-glib-format.c:51
+msgid "Indentation spaces"
+msgstr "Atkāpes atstarpes"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:77 ../json-glib/json-glib-validate.c:63
+#, c-format
+msgid "%s: %s: error opening file: %s\n"
+msgstr "%s: %s: kļūda, atverot datni: %s\n"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:89 ../json-glib/json-glib-validate.c:75
+#, c-format
+msgid "%s: %s: error parsing file: %s\n"
+msgstr "%s: %s: kļūda, parsējot datni: %s\n"
+
+#. Translators: the first %s is the program name, the
+#. * second one is the URI of the file.
+#.
+#: ../json-glib/json-glib-format.c:108
+#, c-format
+msgid "%s: %s: error writing to stdout"
+msgstr "%s: %s, kļūda, rakstot uz stdout"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:128 ../json-glib/json-glib-validate.c:87
+#, c-format
+msgid "%s: %s: error closing: %s\n"
+msgstr "%s: %s: kļūda aizverot: %s\n"
+
+#: ../json-glib/json-glib-format.c:157 ../json-glib/json-glib-validate.c:115
+msgid "FILE"
+msgstr "DATNE"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-format.c:160
+msgid "Format JSON files."
+msgstr "Formatēt JSON datnes."
+
+#: ../json-glib/json-glib-format.c:161
+msgid "json-glib-format formats JSON resources."
+msgstr "json-glib-format formatē JSON resursus."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:178 ../json-glib/json-glib-validate.c:136
+#, c-format
+msgid "Error parsing commandline options: %s\n"
+msgstr "Kļūda, parsējot komandrindas opcijas — %s\n"
+
+#: ../json-glib/json-glib-format.c:180 ../json-glib/json-glib-format.c:194
+#: ../json-glib/json-glib-validate.c:138 ../json-glib/json-glib-validate.c:152
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Lietojiet “%s --help”, lai uzzinātu vairāk."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:192 ../json-glib/json-glib-validate.c:150
+#, c-format
+msgid "%s: missing files"
+msgstr "%s: iztrūkstošas datnes"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-validate.c:118
+msgid "Validate JSON files."
+msgstr "Pārbaudīt JSON datnes."
+
+#: ../json-glib/json-glib-validate.c:119
+msgid "json-glib-validate validates JSON data at the given URI."
+msgstr "json-glib-validate pārbauda JSON datus dotajā URI."
+
+#: ../json-glib/json-gobject.c:917
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "Gaidīja JSON objektu, bet saknes mezglam ir tips “%s”"
+
+#: ../json-glib/json-gvariant.c:545
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "Negaidīts tips “%s” JSON mezglā"
+
+#: ../json-glib/json-gvariant.c:615
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "JSON masīvā trūkst elementu, lai tas atbilstu kortežam"
+
+#: ../json-glib/json-gvariant.c:643
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "GVariant korteža tipā trūkst aizverošā simbola “%s”"
+
+#: ../json-glib/json-gvariant.c:651
+msgid "Unexpected extra elements in JSON array"
+msgstr "JSON masīvā ir negaidīti papildu elementi"
+
+#: ../json-glib/json-gvariant.c:930
+msgid "Invalid string value converting to GVariant"
+msgstr "Pārveidojot uz GVariant, nederīga virknes vērtība"
+
+#: ../json-glib/json-gvariant.c:986
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr ""
+"GVariant vārdnīcas ieraksts gaidīja JSON objektu ar tieši vienu locekli"
+
+#: ../json-glib/json-gvariant.c:1266
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "GVariant klase “%c” nav atbalstīta"
+
+#: ../json-glib/json-gvariant.c:1314
+msgid "Invalid GVariant signature"
+msgstr "Nederīgs GVariant paraksts"
+
+#: ../json-glib/json-gvariant.c:1362
+msgid "JSON data is empty"
+msgstr "JSON dati ir tukši"
+
+#: ../json-glib/json-parser.c:817
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: parsēšanas kļūda — %s"
+
+#: ../json-glib/json-parser.c:885
+msgid "JSON data must be UTF-8 encoded"
+msgstr "JSON datiem ir jābūt UTF-8 kodējumā"
+
+#: ../json-glib/json-path.c:438
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "JSONPath izteiksmē ir atļauta tikai viens saknes mezgls"
+
+#: ../json-glib/json-path.c:447
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "Pēc saknes mezgla seko nederīga rakstzīme “%c”"
+
+#: ../json-glib/json-path.c:487
+msgid "Missing member name or wildcard after . character"
+msgstr "Trūkst locekļa nosaukums vai aizstājējzīme pēc . rakstzīmes"
+
+#: ../json-glib/json-path.c:561
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "Slikti formēta gabala izteiksme “%*s”"
+
+#: ../json-glib/json-path.c:605
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "Nederīga kopas definīcija “%*s”"
+
+#: ../json-glib/json-path.c:658
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "Nederīga gabala definīcija “%*s”"
+
+#: ../json-glib/json-path.c:686
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "Nederīga masīva indeksa definīcija “%*s”"
+
+#: ../json-glib/json-path.c:705
+#, c-format
+msgid "Invalid first character '%c'"
+msgstr "Nederīga pirmā rakstzīme “%c”"
+
+#: ../json-glib/json-reader.c:463
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr "Pašreizējam mezglam ir tips “%s”, bet tika gaidīts masīvs vai objekts."
+
+#: ../json-glib/json-reader.c:475
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "Indekss “%d” dotajā pozīcijā ir lielāks kā masīva izmērs."
+
+#: ../json-glib/json-reader.c:492
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr "Indekss “%d” dotajā pozīcijā ir lielāks kā objekta izmērs."
+
+#: ../json-glib/json-reader.c:577 ../json-glib/json-reader.c:731
+#: ../json-glib/json-reader.c:782 ../json-glib/json-reader.c:820
+#: ../json-glib/json-reader.c:858 ../json-glib/json-reader.c:896
+#: ../json-glib/json-reader.c:934 ../json-glib/json-reader.c:979
+#: ../json-glib/json-reader.c:1015 ../json-glib/json-reader.c:1041
+msgid "No node available at the current position"
+msgstr "Šajā pozīcija nav pieejams neviens mezgls"
+
+#: ../json-glib/json-reader.c:584
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "Šajā pozīcijā ir “%s”, nevis masīvs"
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "Pašreizējam mezglam ir tips “%s”, bet tika gaidīts objekts."
+
+#: ../json-glib/json-reader.c:654
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "Šajā pozīcijā objektā loceklis “%s” nav definēts."
+
+#: ../json-glib/json-reader.c:738 ../json-glib/json-reader.c:789
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "Šajā pozīcijā ir “%s”, nevis objekts"
+
+#: ../json-glib/json-reader.c:829 ../json-glib/json-reader.c:867
+#: ../json-glib/json-reader.c:905 ../json-glib/json-reader.c:943
+#: ../json-glib/json-reader.c:988
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "Šajā pozīcijā ir “%s”, nevis vērtība"
+
+#: ../json-glib/json-reader.c:951
+msgid "The current position does not hold a string type"
+msgstr "Šajā pozīcijā nav virknes tipa"
+
--- /dev/null
+# Malayalam translation for json-glib.
+# Copyright (C) 2012 json-glib's COPYRIGHT HOLDER
+# This file is distributed under the same license as the json-glib package.
+# Anish A <aneesh.nl@gmail.com>, 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2013-02-11 20:00+0000\n"
+"PO-Revision-Date: 2013-02-14 21:57+0530\n"
+"Last-Translator: Jishnu Mohan <jishnu7@gmail.com>\n"
+"Language-Team: Swatantra Malayalam Computing\n"
+"Language: ml\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 1.5.4\n"
+
+#: ../json-glib/json-gobject.c:925
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "`%s' അണ് റൂട്ട് നോഡിന്റെ തരം, പക്ഷേ JSON ഒബ്ജക്ട് ആണ് പ്രതീക്ഷിച്ചത്"
+
+#: ../json-glib/json-gvariant.c:539
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "JSON node ല് '%s'എന്ന പ്രതീക്ഷിക്കാത്ത തരം"
+
+#: ../json-glib/json-gvariant.c:609
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "JSON അറേയില് ടപ്പിള് ആകാനായുള്ള കാര്യങ്ങള് കാണുന്നില്ല"
+
+#: ../json-glib/json-gvariant.c:637
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "GVariant ടപ്പിള് തരത്തില് തീരുന്ന ചിഹ്നം ')' കാണുന്നില്ല"
+
+#: ../json-glib/json-gvariant.c:645
+msgid "Unexpected extra elements in JSON array"
+msgstr "JSON അറേയില് വിചാരിക്കാത്ത അധികം കാര്യങ്ങള്"
+
+#: ../json-glib/json-gvariant.c:924
+msgid "Invalid string value converting to GVariant"
+msgstr "GVariant ലേക്ക് മാറ്റുന്ന അസാധുവായ വാചകം"
+
+#: ../json-glib/json-gvariant.c:980
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr "ഒരേ ഒരു അംഗമുള്ള JSON ഒബ്ജക്റ്റിനെ GVariant നിഘണ്ടു എന്ട്രി പ്രതീക്ഷിക്കുന്നു"
+
+#: ../json-glib/json-gvariant.c:1236
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "'%c' എന്ന GVariant തരം പിന്തുണയ്ക്കുന്നില്ല"
+
+#: ../json-glib/json-gvariant.c:1281
+msgid "Invalid GVariant signature"
+msgstr "അസാധുവായ GVariant ഒപ്പ്"
+
+#: ../json-glib/json-gvariant.c:1326
+msgid "JSON data is empty"
+msgstr "JSON ഡാറ്റ ശൂന്യം"
+
+#: ../json-glib/json-parser.c:825
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: പാഴ്സ് പിഴവ്: %s"
+
+#: ../json-glib/json-path.c:375
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "JSONPath എക്സ്പ്രഷനില് ഒരു റൂട്ടേ അനുവദിനീയമായിട്ടുള്ളു"
+
+#: ../json-glib/json-path.c:384
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "റൂട്ട് നോഡിന് ശേഷം തെറ്റായ അക്ഷരം '%c'"
+
+#: ../json-glib/json-path.c:490
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "തെറ്റായ സ്ലൈസ് എക്സ്പ്രഷന് '%*s'"
+
+#: ../json-glib/json-path.c:534
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "'%*s' എന്നത് തെറ്റായ കൂട്ടം നിര്വചനമാണ്"
+
+#: ../json-glib/json-path.c:587
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "'%*s' എന്നത് തെറ്റായ സ്ലൈസ് നിര്വചനമാണ്"
+
+#: ../json-glib/json-path.c:615
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "'%*s' എന്നത് തെറ്റായ അറേ ഇന്റെക്സ് നിര്വചനമാണ്"
+
+#: ../json-glib/json-reader.c:464
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr "ഇപ്പോഴത്തെ നോഡിന്റെ തരം '%s' ആണ്, പക്ഷേ ഒരു അറേയോ ഒബ്ജക്റ്റോ ആണ് പ്രതീക്ഷിച്ചത്."
+
+#: ../json-glib/json-reader.c:476
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "ഇപ്പോഴത്തെ സ്ഥാനത്തുള്ള അറേയുടെ വലിപ്പത്തെക്കാള് വലുതാണ് ഇന്ഡെക്സ് '%d'"
+
+#: ../json-glib/json-reader.c:493
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr "ഇപ്പോഴത്തെ സ്ഥാനത്തുള്ള ഒബ്ജക്റ്റിന്റെ വലിപ്പത്തെക്കാള് വലുതാണ് ഇന്ഡെക്സ് '%d'"
+
+#: ../json-glib/json-reader.c:577 ../json-glib/json-reader.c:730
+#: ../json-glib/json-reader.c:781 ../json-glib/json-reader.c:819
+#: ../json-glib/json-reader.c:857 ../json-glib/json-reader.c:895
+#: ../json-glib/json-reader.c:933 ../json-glib/json-reader.c:978
+#: ../json-glib/json-reader.c:1014 ../json-glib/json-reader.c:1040
+msgid "No node available at the current position"
+msgstr "ഈ സ്ഥാനത്ത് ഒരു നോഡുമില്ല"
+
+#: ../json-glib/json-reader.c:584
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "അപ്പോഴത്തെ സ്ഥാനത്ത് '%s' ആണ് ഒരു അറേ അല്ല"
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "ഇപ്പോഴത്തെ നോഡിന്റെ തരം '%s' ആണ്, പക്ഷേ ഒരു ഒബ്ജക്റ്റ് ആണ് പ്രതീക്ഷിച്ചത്."
+
+#: ../json-glib/json-reader.c:654
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "ഇപ്പോഴത്തെ സ്ഥാനത്തെ ഒബ്ജക്റ്റില് '%s' എന്ന അംഗം നിര്വ്വചിച്ചിട്ടില്ല."
+
+#: ../json-glib/json-reader.c:737 ../json-glib/json-reader.c:788
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "അപ്പോഴത്തെ സ്ഥാനത്ത് '%s' ആണ് ഒരു ഒബ്ജക്ട്ട് അല്ല"
+
+#: ../json-glib/json-reader.c:828 ../json-glib/json-reader.c:866
+#: ../json-glib/json-reader.c:904 ../json-glib/json-reader.c:942
+#: ../json-glib/json-reader.c:987
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "അപ്പോഴത്തെ സ്ഥാനത്ത് '%s' ആണ് ഒരു മൂല്യം അല്ല"
+
+#: ../json-glib/json-reader.c:950
+msgid "The current position does not hold a string type"
+msgstr "അപ്പോഴത്തെ സ്ഥാനത്ത് ഒരു വാചകം അല്ല"
--- /dev/null
+# Norwegian bokmål translation of json-glib.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Kjartan Maraas <kmaraas@gnome.org>, 2011-2014.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib 0.12.x\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib\n"
+"POT-Creation-Date: 2014-02-12 19:46+0100\n"
+"PO-Revision-Date: 2014-02-12 19:47+0100\n"
+"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
+"Language-Team: Kjartan Maraas <i18n-nb@lister.ping.uio.no>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../json-glib/json-glib-format.c:50
+msgid "Prettify output"
+msgstr ""
+
+#: ../json-glib/json-glib-format.c:51
+msgid "Indentation spaces"
+msgstr ""
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:77 ../json-glib/json-glib-validate.c:63
+#, c-format
+msgid "%s: %s: error opening file: %s\n"
+msgstr ""
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:89 ../json-glib/json-glib-validate.c:75
+#, c-format
+msgid "%s: %s: error parsing file: %s\n"
+msgstr ""
+
+#. Translators: the first %s is the program name, the
+#. * second one is the URI of the file.
+#.
+#: ../json-glib/json-glib-format.c:108
+#, c-format
+msgid "%s: %s: error writing to stdout"
+msgstr ""
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:128 ../json-glib/json-glib-validate.c:87
+#, c-format
+msgid "%s: %s: error closing: %s\n"
+msgstr ""
+
+#: ../json-glib/json-glib-format.c:157 ../json-glib/json-glib-validate.c:115
+msgid "FILE"
+msgstr "FIL"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-format.c:160
+msgid "Format JSON files."
+msgstr "Formater JSON-filer."
+
+#: ../json-glib/json-glib-format.c:161
+msgid "json-glib-format formats JSON resources."
+msgstr ""
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:178 ../json-glib/json-glib-validate.c:136
+#, c-format
+msgid "Error parsing commandline options: %s\n"
+msgstr ""
+
+#: ../json-glib/json-glib-format.c:180 ../json-glib/json-glib-format.c:194
+#: ../json-glib/json-glib-validate.c:138 ../json-glib/json-glib-validate.c:152
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr ""
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:192 ../json-glib/json-glib-validate.c:150
+#, c-format
+msgid "%s: missing files"
+msgstr "%s: mangler filer"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-validate.c:118
+msgid "Validate JSON files."
+msgstr "Valider JSON-filer."
+
+#: ../json-glib/json-glib-validate.c:119
+msgid "json-glib-validate validates JSON data at the given URI."
+msgstr ""
+
+#: ../json-glib/json-gobject.c:917
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "Forventet et JSON-objekt, men rotnoden er av type «%s»"
+
+#: ../json-glib/json-gvariant.c:545
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "Uventet type «%s» i JSON-node"
+
+#: ../json-glib/json-gvariant.c:615
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr ""
+
+#: ../json-glib/json-gvariant.c:643
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr ""
+
+#: ../json-glib/json-gvariant.c:651
+msgid "Unexpected extra elements in JSON array"
+msgstr "Uventede ekstra elementer i JSON-tabell"
+
+#: ../json-glib/json-gvariant.c:930
+msgid "Invalid string value converting to GVariant"
+msgstr "Ugyldig strengverdi ved konvertering til GVariant"
+
+#: ../json-glib/json-gvariant.c:986
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr ""
+
+#: ../json-glib/json-gvariant.c:1266
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "GVariant-klasse «%c» er ikke støttet"
+
+#: ../json-glib/json-gvariant.c:1314
+msgid "Invalid GVariant signature"
+msgstr "Ugyldig signatur for GVariant"
+
+#: ../json-glib/json-gvariant.c:1362
+msgid "JSON data is empty"
+msgstr "JSON-datastruktur er tom"
+
+#: ../json-glib/json-parser.c:817
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: Tolkefeil: %s"
+
+#: ../json-glib/json-parser.c:885
+msgid "JSON data must be UTF-8 encoded"
+msgstr "JSON-data må være kodet i UTF-8"
+
+#: ../json-glib/json-path.c:438
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "Kun en rotnode tillates i et JSONPath-uttrykk"
+
+#: ../json-glib/json-path.c:447
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "Rotnode etterfulgt av ugyldig tegn «%c»"
+
+#: ../json-glib/json-path.c:487
+msgid "Missing member name or wildcard after . character"
+msgstr ""
+
+#: ../json-glib/json-path.c:561
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr ""
+
+#: ../json-glib/json-path.c:605
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "Ugyldig definisjon av sett «%*s»"
+
+#: ../json-glib/json-path.c:658
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr ""
+
+#: ../json-glib/json-path.c:686
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr ""
+
+#: ../json-glib/json-path.c:705
+#, c-format
+msgid "Invalid first character '%c'"
+msgstr ""
+
+#: ../json-glib/json-reader.c:463
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr ""
+
+#: ../json-glib/json-reader.c:475
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr ""
+
+#: ../json-glib/json-reader.c:492
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr ""
+
+#: ../json-glib/json-reader.c:577 ../json-glib/json-reader.c:731
+#: ../json-glib/json-reader.c:782 ../json-glib/json-reader.c:820
+#: ../json-glib/json-reader.c:858 ../json-glib/json-reader.c:896
+#: ../json-glib/json-reader.c:934 ../json-glib/json-reader.c:979
+#: ../json-glib/json-reader.c:1015 ../json-glib/json-reader.c:1041
+msgid "No node available at the current position"
+msgstr "Ingen node tilgjengelig i denne posisjonen"
+
+#: ../json-glib/json-reader.c:584
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr ""
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr ""
+
+#: ../json-glib/json-reader.c:654
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "Medlem «%s» er ikke definert i objekt ved nåværende posisjon."
+
+#: ../json-glib/json-reader.c:738 ../json-glib/json-reader.c:789
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "Nåværende posisjon innholder en «%s» og ikke et objekt"
+
+#: ../json-glib/json-reader.c:829 ../json-glib/json-reader.c:867
+#: ../json-glib/json-reader.c:905 ../json-glib/json-reader.c:943
+#: ../json-glib/json-reader.c:988
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "Nåværende posisjon inneholder en «%s» og ikke en verdi"
+
+#: ../json-glib/json-reader.c:951
+msgid "The current position does not hold a string type"
+msgstr "Nåværende posisjon inneholder ikke en streng-type"
--- /dev/null
+# Oriya translation for json-glib.
+# Copyright (C) 2012 json-glib's COPYRIGHT HOLDER
+# This file is distributed under the same license as the json-glib package.
+#
+# Manoj Kumar Giri <mgiri@redhat.com>, 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2012-08-06 14:04+0000\n"
+"PO-Revision-Date: 2012-08-09 18:26+0530\n"
+"Last-Translator: Manoj Kumar Giri <mgiri@redhat.com>\n"
+"Language-Team: Oriya <or@li.org>\n"
+"Language: or\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Lokalize 1.4\n"
+
+#: ../json-glib/json-gobject.c:934
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "ଏକ JSON ବସ୍ତୁକୁ ଆଶାକରୁଅଛି, କିନ୍ତୁ ରୁଟର ନୋଡ `%s' ପ୍ରକାରର ଅଟେ"
+
+#: ../json-glib/json-gvariant.c:539
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "JSON ନୋଡରେ ଆଶାକରାଯାଇନଥିବା ପ୍ରକାର '%s'"
+
+#: ../json-glib/json-gvariant.c:609
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "ଏକ tuple କୁ ନିଶ୍ଚିତ କରିବା ପାଇଁ JSON ଆରେରେ ଅନୁପସ୍ଥିତ ଉପାଦାନ"
+
+#: ../json-glib/json-gvariant.c:637
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "GVariant tuple ପ୍ରକାରରେ ବନ୍ଦ କରିବା ଚିହ୍ନ ')' ନାହିଁ"
+
+#: ../json-glib/json-gvariant.c:645
+msgid "Unexpected extra elements in JSON array"
+msgstr "JSON ଆରେର ଆଶାକରାଯାଇନଥିବା ଅତିରିକ୍ତ ଉପାଦାନ"
+
+#: ../json-glib/json-gvariant.c:924
+msgid "Invalid string value converting to GVariant"
+msgstr "GVariant କୁ ପରିବର୍ତ୍ତନ କରୁଥିବା ଅବୈଧ ବାକ୍ୟ ଖଣ୍ଡ ମୂଲ୍ୟ"
+
+#: ../json-glib/json-gvariant.c:980
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr "ଏକ GVariant ଅଭିଧାନ ନିବେଶ ଗୋଟିଏ JSON ବସ୍ତୁକୁ ଗୋଟିଏ ସଦସ୍ୟ ସହିତ ଆଶାକରିଥାଏ"
+
+#: ../json-glib/json-gvariant.c:1236
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "GVariant ଶ୍ରେଣୀ '%c' ସମର୍ଥିତ ନୁହଁ"
+
+#: ../json-glib/json-gvariant.c:1281
+msgid "Invalid GVariant signature"
+msgstr "ଅବୈଧ GVariant ହସ୍ତାକ୍ଷର"
+
+#: ../json-glib/json-gvariant.c:1326
+msgid "JSON data is empty"
+msgstr "JSON ତଥ୍ୟ ନାହିଁ"
+
+#: ../json-glib/json-parser.c:818
+#, c-format
+msgid "%s:%d: Parse error: %s"
+msgstr "%s:%d: ବିଶ୍ଳେଷଣ ତ୍ରୁଟି: %s"
+
+#: ../json-glib/json-path.c:375
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "କେବଳ ଗୋଟିଏ ମୂଖ୍ୟ ଚାଳକ ନୋଡ JSONPath ଅଭିବ୍ୟକ୍ତିରେ ଅନୁମତି ପ୍ରାପ୍ତ"
+
+#: ../json-glib/json-path.c:384
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "ଅବୈଧ ଅକ୍ଷର '%c' ଦ୍ୱାରା ମୂଖ୍ୟ ଚାଳକ ନୋଡ"
+
+#: ../json-glib/json-path.c:490
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "ତ୍ରୁଟିଯୁକ୍ତ ଖଣ୍ଡ ଅଭିବ୍ୟକ୍ତି '%*s'"
+
+#: ../json-glib/json-path.c:534
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "ଅବୈଧ ସେଟ ସଂଜ୍ଞା '%*s'"
+
+#: ../json-glib/json-path.c:587
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "ଅବୈଧ ଖଣ୍ଡ ସଂଜ୍ଞା '%*s'"
+
+#: ../json-glib/json-path.c:615
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "ଅବୈଧ ଆରେ ଅନୁକ୍ରମଣିକା ସଂଜ୍ଞା '%*s'"
+
+#: ../json-glib/json-reader.c:463
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr ""
+"ପ୍ରଚଳିତ ନୋଡଟି '%s' ପ୍ରକାରର ଅଟେ, କିନ୍ତୁ ଏକ ଆରେ ଅଥବା ବସ୍ତୁ ଆଶାକରାଯାଇଥିଲା।"
+
+#: ../json-glib/json-reader.c:475
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "ଅନୁକ୍ରମଣିକା '%d' ଟି ପ୍ରଚଳିତ ଅବସ୍ଥାନରେ ଆରେ ଆକାର ଠାରୁ ବଡ଼ ଅଟେ।"
+
+#: ../json-glib/json-reader.c:492
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr "ଅନୁକ୍ରମଣିକା '%d' ଟି ପ୍ରଚଳିତ ଅବସ୍ଥାନରେ ବସ୍ତୁ ଆକାର ଠାରୁ ବଡ଼ ଅଟେ।"
+
+#: ../json-glib/json-reader.c:576 ../json-glib/json-reader.c:729
+#: ../json-glib/json-reader.c:780 ../json-glib/json-reader.c:818
+#: ../json-glib/json-reader.c:856 ../json-glib/json-reader.c:894
+#: ../json-glib/json-reader.c:932 ../json-glib/json-reader.c:977
+#: ../json-glib/json-reader.c:1013 ../json-glib/json-reader.c:1039
+msgid "No node available at the current position"
+msgstr "ପ୍ରଚଳିତ ଅବସ୍ଥାନରେ କୌଣସି ନୋଡ ଉପଲବ୍ଧ ନାହିଁ।"
+
+#: ../json-glib/json-reader.c:583
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "ପ୍ରଚଳିତ ଅବସ୍ଥାନ ଏକ '%s' କୁ ଧାରଣ କରିଥାଏ ଏବଂ କୌଣସି ଆରେକୁ ଧାରଣ କରିନଥାଏ"
+
+#: ../json-glib/json-reader.c:646
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "ପ୍ରଚଳିତ ନୋଡଟି '%s' ପ୍ରକାରର ଅଟେ, କିନ୍ତୁ ଏକ ବସ୍ତୁକୁ ଆଶାକରୁଥିଲା।"
+
+#: ../json-glib/json-reader.c:653
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "'%s' ସଦସ୍ୟଟି ପ୍ରଚଳିତ ଅବସ୍ଥାନରେ ବସ୍ତୁ ପାଖରେ ବ୍ୟାଖ୍ୟା କରିନାହିଁ।"
+
+#: ../json-glib/json-reader.c:736 ../json-glib/json-reader.c:787
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr ""
+"ପ୍ରଚଳିତ ଅବସ୍ଥାନ ଏକ '%s' କୁ ଧାରଣ କରିଥାଏ କିନ୍ତୁ କୌଣସି ବସ୍ତୁକୁ ଧାରଣ କରିନଥାଏ"
+
+#: ../json-glib/json-reader.c:827 ../json-glib/json-reader.c:865
+#: ../json-glib/json-reader.c:903 ../json-glib/json-reader.c:941
+#: ../json-glib/json-reader.c:986
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "ପ୍ରଚଳିତ ଅବସ୍ଥାନ ଏକ '%s' ଧାରଣ କରିଥାଏ କିନ୍ତୁ କୌଣସି ମୂଲ୍ୟ ଧାରଣ କରିନଥାଏ"
+
+#: ../json-glib/json-reader.c:949
+msgid "The current position does not hold a string type"
+msgstr "ପ୍ରଚଳିତ ଅବସ୍ଥାନ କୌଣସି ବାକ୍ୟଖଣ୍ଡ ପ୍ରକାର ଧାରଣ କରିନଥାଏ"
+
+
--- /dev/null
+# Punjabi translation for json-glib.
+# Copyright (C) 2012 json-glib's COPYRIGHT HOLDER
+# This file is distributed under the same license as the json-glib package.
+#
+# A S Alam <aalam@users.sf.net>, 2012, 2013.
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2013-02-11 20:00+0000\n"
+"PO-Revision-Date: 2013-02-26 07:26+0530\n"
+"Last-Translator: A S Alam <aalam@users.sf.net>\n"
+"Language-Team: Punjabi/Panjabi <punjabi-users@lists.sf.net>\n"
+"Language: pa\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Lokalize 1.5\n"
+
+#: ../json-glib/json-gobject.c:925
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "JSON ਆਬਜੈਕਟ ਦੀ ਮੰਗ ਸੀ, ਪਰ ਰੂਟ ਨੋਡ ਦੀ ਕਿਸਮ `%s' ਹੈ"
+
+#: ../json-glib/json-gvariant.c:539
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "JSON ਨੋਡ ਵਿੱਚ ਅਣਜਾਣ ਕਿਸਮ '%s'"
+
+#: ../json-glib/json-gvariant.c:609
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "JSON ਅਰੇ ਵਿੱਚ ਟਪਲ ਦੇਣ ਵਾਲੇ ਐਲੀਮੈਂਟ ਗੁੰਮ ਹਨ"
+
+#: ../json-glib/json-gvariant.c:637
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "GVariant ਟਪਲ ਕਿਸਮ ਵਿੱਚ ')' ਬੰਦ ਕਰਨ ਨਿਸ਼ਾਨ ਗੁੁੰਮ ਹੈ"
+
+#: ../json-glib/json-gvariant.c:645
+msgid "Unexpected extra elements in JSON array"
+msgstr "JSON ਅਰੇ ਵਿੱਚ ਵਾਧੂ ਐਲੀਮੈਂਟ ਦੀ ਮੰਗ ਸੀ"
+
+#: ../json-glib/json-gvariant.c:924
+msgid "Invalid string value converting to GVariant"
+msgstr "GVariant ਲਈ ਬਦਲਣ ਲਈ ਗਲਤ ਸਤਰ ਮੁੱਲ"
+
+#: ../json-glib/json-gvariant.c:980
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr "GVariant ਡਿਕਸ਼ਨਰੀ ਐਂਟਰਈ ਲਈ ਇੱਕ ਮੈਂਬਰ ਲਈ ਠੀਕ JSON ਆਬਜੈਕਟ ਦੀ ਮੰਗ ਸੀ"
+
+#: ../json-glib/json-gvariant.c:1236
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "GVariant ਕਲਾਸ '%c' ਸਹਾਇਕ ਨਹੀਂ"
+
+#: ../json-glib/json-gvariant.c:1281
+msgid "Invalid GVariant signature"
+msgstr "ਅਢੁੱਕਵਾਂ GVariant ਦਸਤਖਤ"
+
+#: ../json-glib/json-gvariant.c:1326
+msgid "JSON data is empty"
+msgstr "JSON ਡਾਟਾ ਖਾਲੀ ਹੈ।"
+
+#: ../json-glib/json-parser.c:825
+#, c-format
+#| msgid "%s:%d: Parse error: %s"
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: ਪਾਰਸ ਗਲਤੀ: %s"
+
+#: ../json-glib/json-path.c:375
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "JSONPath ਸਮੀਕਰਨ ਵਿੱਚ ਇੱਕ ਰੂਟ ਨੋਡ ਹੀ ਮਨਜ਼ੂਰ ਸੀ"
+
+#: ../json-glib/json-path.c:384
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "ਗਲਤ ਅੱਖਰ '%c' ਦੇ ਬਾਅਦ ਰੂਟ ਨੋਡ"
+
+#: ../json-glib/json-path.c:490
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "ਨਿਕਾਰਾ ਭਾਗ ਸਮੀਕਰਨ '%*s'"
+
+#: ../json-glib/json-path.c:534
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "ਗਲਤ ਸੈੱਟ ਪ੍ਰੀਭਾਸ਼ਾ '%*s'"
+
+#: ../json-glib/json-path.c:587
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "ਗਲਤ ਭਾਗ ਪ੍ਰੀਭਾਸ਼ਾ '%*s'"
+
+#: ../json-glib/json-path.c:615
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "ਗਲਤ ਅਰੇ ਇੰਡੈਕਸ ਪ੍ਰੀਭਾਸ਼ਾ '%*s'"
+
+#: ../json-glib/json-reader.c:464
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr "ਮੌਜੂਦਾ ਨੋਡ ਦੀ '%s' ਕਿਸਮ ਹੈ, ਪਰ ਅਰੇ ਜਾਂ ਆਬਜੈਕਟ ਦੀ ਮੰਗ ਸੀ।"
+
+#: ../json-glib/json-reader.c:476
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "ਇੰਡੈਕਸ '%d' ਮੌਜੂਦਾ ਸਥਿਤੀ ਉੱਤੇ ਅਰੇ ਦੇ ਆਕਾਰ ਤੋਂ ਵੱਧ ਹੈ।"
+
+#: ../json-glib/json-reader.c:493
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr "ਇੰਡੈਕਸ '%d' ਮੌਜੂਦਾ ਸਥਿਤੀ ਉੱਤੇ ਆਬਜੈਕਟ ਦੇ ਆਕਾਰ ਤੋਂ ਵੱਧ ਹੈ।"
+
+#: ../json-glib/json-reader.c:577 ../json-glib/json-reader.c:730
+#: ../json-glib/json-reader.c:781 ../json-glib/json-reader.c:819
+#: ../json-glib/json-reader.c:857 ../json-glib/json-reader.c:895
+#: ../json-glib/json-reader.c:933 ../json-glib/json-reader.c:978
+#: ../json-glib/json-reader.c:1014 ../json-glib/json-reader.c:1040
+msgid "No node available at the current position"
+msgstr "ਮੌਜੂਦਾ ਸਥਿਤੀ ਉੱਤੇ ਕੋਈ ਵੀ ਨੋਡ ਉਪਲੱਬਧ ਨਹੀਂ"
+
+#: ../json-glib/json-reader.c:584
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "ਮੌਜੂਦਾ ਸਥਿਤੀ '%s' ਰੱਖਦੀ ਹੈ ਨਾ ਕਿ ਅਰੇ"
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "ਮੌਜੂਦਾ ਨੋਡ ਦੀ '%s' ਕਿਸਮ ਹੈ, ਪਰ ਆਬਜੈਕਟ ਦੀ ਮੰਗ ਸੀ।"
+
+#: ../json-glib/json-reader.c:654
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "ਮੈਂਬਰ '%s' ਨੂੰ ਮੌਜੂਦਾ ਸਥਿਤੀ ਉੱਤੇ ਆਬਜੈਕਟ ਵਿੱਚ ਪ੍ਰਭਾਸ਼ਿਤ ਹੈ।"
+
+#: ../json-glib/json-reader.c:737 ../json-glib/json-reader.c:788
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "ਮੌਜੂਦਾ ਸਥਿਤੀ '%s' ਰੱਖਦੀ ਹੈ ਨਾ ਕਿ ਆਬਜੈਕਟ"
+
+#: ../json-glib/json-reader.c:828 ../json-glib/json-reader.c:866
+#: ../json-glib/json-reader.c:904 ../json-glib/json-reader.c:942
+#: ../json-glib/json-reader.c:987
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "ਮੌਜੂਦਾ ਸਥਿਤੀ '%s' ਰੱਖਦੀ ਹੈ, ਮੁੱਲ ਨਹੀਂ"
+
+#: ../json-glib/json-reader.c:950
+msgid "The current position does not hold a string type"
+msgstr "ਮੌਜੂਦਾ ਸਥਿਤੀ ਸਤਰ ਕਿਸਮ ਨਹੀਂ ਰੱਖਦਾ ਹੈ"
+
--- /dev/null
+# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+# Aviary.pl
+# Jeśli masz jakiekolwiek uwagi odnoszące się do tłumaczenia lub chcesz
+# pomóc w jego rozwijaniu i pielęgnowaniu, napisz do nas:
+# gnomepl@aviary.pl
+# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+# Piotr Drąg <piotrdrag@gmail.com>, 2011-2014.
+# Aviary.pl <gnomepl@aviary.pl>, 2011-2014.
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib\n"
+"POT-Creation-Date: 2014-03-03 01:04+0100\n"
+"PO-Revision-Date: 2014-03-02 01:05+0100\n"
+"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
+"Language-Team: Polish <gnomepl@aviary.pl>\n"
+"Language: pl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
+"X-Poedit-Language: Polish\n"
+"X-Poedit-Country: Poland\n"
+
+#: ../json-glib/json-glib-format.c:50
+msgid "Prettify output"
+msgstr "Ładniejsze wyjście"
+
+#: ../json-glib/json-glib-format.c:51
+msgid "Indentation spaces"
+msgstr "Spacje wcięcia"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:77 ../json-glib/json-glib-validate.c:63
+#, c-format
+msgid "%s: %s: error opening file: %s\n"
+msgstr "%s: %s: błąd podczas otwierania pliku: %s\n"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:89 ../json-glib/json-glib-validate.c:75
+#, c-format
+msgid "%s: %s: error parsing file: %s\n"
+msgstr "%s: %s: błąd podczas przetwarzania pliku: %s\n"
+
+#. Translators: the first %s is the program name, the
+#. * second one is the URI of the file.
+#.
+#: ../json-glib/json-glib-format.c:108
+#, c-format
+msgid "%s: %s: error writing to stdout"
+msgstr "%s: %s: błąd podczas zapisywania do standardowego wyjścia"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:128 ../json-glib/json-glib-validate.c:87
+#, c-format
+msgid "%s: %s: error closing: %s\n"
+msgstr "%s: %s: błąd podczas zamykania: %s\n"
+
+#: ../json-glib/json-glib-format.c:157 ../json-glib/json-glib-validate.c:115
+msgid "FILE"
+msgstr "PLIK"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-format.c:160
+msgid "Format JSON files."
+msgstr "Formatuje pliki JSON."
+
+#: ../json-glib/json-glib-format.c:161
+msgid "json-glib-format formats JSON resources."
+msgstr "json-glib-format formatuje zasoby JSON."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:178 ../json-glib/json-glib-validate.c:136
+#, c-format
+msgid "Error parsing commandline options: %s\n"
+msgstr "Błąd podczas przetwarzania opcji wiesza poleceń: %s\n"
+
+#: ../json-glib/json-glib-format.c:180 ../json-glib/json-glib-format.c:194
+#: ../json-glib/json-glib-validate.c:138 ../json-glib/json-glib-validate.c:152
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Wykonanie polecenia \"%s --help\" wyświetli więcej informacji."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:192 ../json-glib/json-glib-validate.c:150
+#, c-format
+msgid "%s: missing files"
+msgstr "%s: brak plików"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-validate.c:118
+msgid "Validate JSON files."
+msgstr "Sprawdza pliki JSON."
+
+#: ../json-glib/json-glib-validate.c:119
+msgid "json-glib-validate validates JSON data at the given URI."
+msgstr "json-glib-validate sprawdza dane JSON na podanym adresie URI."
+
+#: ../json-glib/json-gobject.c:917
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "Oczekiwano obiektu JSON, ale typ głównego węzła to \"%s\""
+
+#: ../json-glib/json-gvariant.c:545
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "Nieoczekiwany typ \"%s\" w węźle JSON"
+
+#: ../json-glib/json-gvariant.c:615
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "Brak elementów w tablicy JSON, aby zgadzało się z krotką"
+
+#: ../json-glib/json-gvariant.c:643
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "Brak zamykającego symbolu \")\" w typie krotki GVariant"
+
+#: ../json-glib/json-gvariant.c:651
+msgid "Unexpected extra elements in JSON array"
+msgstr "Nieoczekiwane dodatkowe elementy w tablicy JSON"
+
+#: ../json-glib/json-gvariant.c:930
+msgid "Invalid string value converting to GVariant"
+msgstr "Nieprawidłowa wartość ciągu konwertowanego do GVariant"
+
+#: ../json-glib/json-gvariant.c:986
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr ""
+"Wpis słownika GVariant oczekuje obiektu JSON z dokładnie jednym elementem"
+
+#: ../json-glib/json-gvariant.c:1266
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "Klasa GVariant \"%c\" jest nieobsługiwana"
+
+#: ../json-glib/json-gvariant.c:1314
+msgid "Invalid GVariant signature"
+msgstr "Nieprawidłowy podpis GVariant"
+
+#: ../json-glib/json-gvariant.c:1362
+msgid "JSON data is empty"
+msgstr "Dane JSON są puste"
+
+#: ../json-glib/json-parser.c:817
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: błąd przetwarzania: %s"
+
+#: ../json-glib/json-parser.c:885
+msgid "JSON data must be UTF-8 encoded"
+msgstr "Dane JSON muszą być zakodowane w UTF-8"
+
+#: ../json-glib/json-path.c:438
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "Dozwolony jest tylko jeden węzeł główny w wyrażeniu JSONPath"
+
+#: ../json-glib/json-path.c:447
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "Po węźle głównym występuje nieprawidłowy znak \"%c\""
+
+#: ../json-glib/json-path.c:487
+msgid "Missing member name or wildcard after . character"
+msgstr "Brak nazwy elementu lub wieloznacznika po znaku ."
+
+#: ../json-glib/json-path.c:561
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "Błędnie sformatowane wyrażenie plasterka \"%*s\""
+
+#: ../json-glib/json-path.c:605
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "Nieprawidłowe określenie zestawu \"%*s\""
+
+#: ../json-glib/json-path.c:658
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "Nieprawidłowe określenie plasterka \"%*s\""
+
+#: ../json-glib/json-path.c:686
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "Nieprawidłowe określenie indeksu tablicy \"%*s\""
+
+#: ../json-glib/json-path.c:705
+#, c-format
+msgid "Invalid first character '%c'"
+msgstr "Nieprawidłowy pierwszy znak \"%c\""
+
+#: ../json-glib/json-reader.c:463
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr "Bieżący węzeł jest typu \"%s\", a oczekiwano tablicy lub obiektu."
+
+#: ../json-glib/json-reader.c:475
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "Indeks \"%d\" jest większy niż rozmiar tablicy w bieżącym położeniu."
+
+#: ../json-glib/json-reader.c:492
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr "Indeks \"%d\" jest większy niż rozmiar obiektu w bieżącym położeniu."
+
+#: ../json-glib/json-reader.c:577 ../json-glib/json-reader.c:731
+#: ../json-glib/json-reader.c:782 ../json-glib/json-reader.c:820
+#: ../json-glib/json-reader.c:858 ../json-glib/json-reader.c:896
+#: ../json-glib/json-reader.c:934 ../json-glib/json-reader.c:979
+#: ../json-glib/json-reader.c:1015 ../json-glib/json-reader.c:1041
+msgid "No node available at the current position"
+msgstr "Brak węzłów dostępnych w bieżącym położeniu"
+
+#: ../json-glib/json-reader.c:584
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "Bieżące położenie przechowuje \"%s\", a nie tablicę"
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "Bieżący węzeł jest typu \"%s\", a oczekiwano obiektu."
+
+#: ../json-glib/json-reader.c:654
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "Element \"%s\" nie jest określony w obiekcie w bieżącym położeniu."
+
+#: ../json-glib/json-reader.c:738 ../json-glib/json-reader.c:789
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "Bieżące położenie przechowuje \"%s\", a nie obiekt"
+
+#: ../json-glib/json-reader.c:829 ../json-glib/json-reader.c:867
+#: ../json-glib/json-reader.c:905 ../json-glib/json-reader.c:943
+#: ../json-glib/json-reader.c:988
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "Bieżące położenie przechowuje \"%s\", a nie wartość"
+
+#: ../json-glib/json-reader.c:951
+msgid "The current position does not hold a string type"
+msgstr "Bieżące położenie nie przechowuje typu ciągu"
--- /dev/null
+# json-glib's Portuguese translation.\r
+# Copyright © 2012, 2013, 2014 json-glib\r
+# This file is distributed under the same license as the json-glib package.\r
+# Duarte Loreto <happyguy_pt@hotmail.com>, 2012, 2013, 2014.\r
+# \r
+msgid ""
+msgstr ""
+"Project-Id-Version: 3.12\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2014-03-18 22:21+0000\n"
+"PO-Revision-Date: 2014-03-18 23:30+0100\n"
+"Last-Translator: Duarte Loreto <happyguy_pt@hotmail.com>\n"
+"Language-Team: Portuguese <gnome_pt@yahoogroups.com>\n"
+"Language: pt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../json-glib/json-glib-format.c:50
+msgid "Prettify output"
+msgstr "Embelezar resultado"
+
+#: ../json-glib/json-glib-format.c:51
+msgid "Indentation spaces"
+msgstr "Espaços da indentação"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:77 ../json-glib/json-glib-validate.c:63
+#, c-format
+msgid "%s: %s: error opening file: %s\n"
+msgstr "%s: %s: erro ao abrir ficheiro: %s\n"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:89 ../json-glib/json-glib-validate.c:75
+#, c-format
+msgid "%s: %s: error parsing file: %s\n"
+msgstr "%s: %s: erro ao processar ficheiro: %s\n"
+
+#. Translators: the first %s is the program name, the
+#. * second one is the URI of the file.
+#.
+#: ../json-glib/json-glib-format.c:108
+#, c-format
+msgid "%s: %s: error writing to stdout"
+msgstr "%s: %s: erro ao escrever para stdout"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:128 ../json-glib/json-glib-validate.c:87
+#, c-format
+msgid "%s: %s: error closing: %s\n"
+msgstr "%s: %s: erro ao fechar: %s\n"
+
+#: ../json-glib/json-glib-format.c:157 ../json-glib/json-glib-validate.c:115
+msgid "FILE"
+msgstr "FICHEIRO"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-format.c:160
+msgid "Format JSON files."
+msgstr "Formatar ficheiros JSON."
+
+#: ../json-glib/json-glib-format.c:161
+msgid "json-glib-format formats JSON resources."
+msgstr "json-glib-format formata recursos JSON."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:178 ../json-glib/json-glib-validate.c:136
+#, c-format
+msgid "Error parsing commandline options: %s\n"
+msgstr "Erro ao processar opções de linha de comandos: %s\n"
+
+#: ../json-glib/json-glib-format.c:180 ../json-glib/json-glib-format.c:194
+#: ../json-glib/json-glib-validate.c:138 ../json-glib/json-glib-validate.c:152
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Tente \"%s --help\" para mais informações."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:192 ../json-glib/json-glib-validate.c:150
+#, c-format
+msgid "%s: missing files"
+msgstr "%s: faltam ficheiros"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-validate.c:118
+msgid "Validate JSON files."
+msgstr "Validar ficheiros JSON."
+
+#: ../json-glib/json-glib-validate.c:119
+msgid "json-glib-validate validates JSON data at the given URI."
+msgstr "json-glib-validate valida dados JSON no URI indicado."
+
+#: ../json-glib/json-gobject.c:915
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "Esperado um objeto JSON, mas o nó raiz é do tipo `%s'"
+
+#: ../json-glib/json-gvariant.c:523
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "Tipo '%s' inesperado no nó JSON"
+
+#: ../json-glib/json-gvariant.c:593
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "Elementos em falta na lista JSON para respeitar uma enupla"
+
+#: ../json-glib/json-gvariant.c:621
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "Falta o símbolo de fecho ')' no tipo de enupla GVariant"
+
+#: ../json-glib/json-gvariant.c:629
+msgid "Unexpected extra elements in JSON array"
+msgstr "Elementos extra inesperados na lista JSON"
+
+#: ../json-glib/json-gvariant.c:908
+msgid "Invalid string value converting to GVariant"
+msgstr "Valor inválido de expressão ao converter em GVariant"
+
+#: ../json-glib/json-gvariant.c:964
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr ""
+"Uma entrada de dicionário GVariant espera um objeto JSON com exatamente um "
+"membro"
+
+#: ../json-glib/json-gvariant.c:1244
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "Classe GVariant '%c' não suportada"
+
+#: ../json-glib/json-gvariant.c:1292
+msgid "Invalid GVariant signature"
+msgstr "Assinatura GVariant inválida"
+
+#: ../json-glib/json-gvariant.c:1340
+msgid "JSON data is empty"
+msgstr "Dados JSON estão vazios"
+
+#: ../json-glib/json-parser.c:815
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: Erro de processamento: %s"
+
+#: ../json-glib/json-parser.c:883
+msgid "JSON data must be UTF-8 encoded"
+msgstr "Dados JSON têm de estar codificados em UTF-8"
+
+#: ../json-glib/json-path.c:388
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "Apenas um nó raiz é permitido numa expressão JSONPath"
+
+#: ../json-glib/json-path.c:397
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "Nó raiz seguido do caracter inválido '%c'"
+
+#: ../json-glib/json-path.c:437
+msgid "Missing member name or wildcard after . character"
+msgstr "Falta nome de membro ou caráter global após caráter ."
+
+#: ../json-glib/json-path.c:511
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "Expressão '%*s' de fatia mal-formada"
+
+#: ../json-glib/json-path.c:555
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "Definição inválida de conjunto '%*s'"
+
+#: ../json-glib/json-path.c:608
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "Definição inválida de fatia '%*s'"
+
+#: ../json-glib/json-path.c:636
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "Definição inválida de índice de lista '%*s'"
+
+#: ../json-glib/json-path.c:655
+#, c-format
+msgid "Invalid first character '%c'"
+msgstr "Primeiro caráter '%c' inválido"
+
+#: ../json-glib/json-reader.c:456
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr "O nó atual é do tipo '%s', mas era esperada uma lista ou um objeto."
+
+#: ../json-glib/json-reader.c:468
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "O índice '%d' é maior do que o tamanho da lista na posição atual."
+
+#: ../json-glib/json-reader.c:485
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr "O índice '%d' é maior do que o tamanho do objeto na posição atual."
+
+#: ../json-glib/json-reader.c:570 ../json-glib/json-reader.c:724
+#: ../json-glib/json-reader.c:775 ../json-glib/json-reader.c:813
+#: ../json-glib/json-reader.c:851 ../json-glib/json-reader.c:889
+#: ../json-glib/json-reader.c:927 ../json-glib/json-reader.c:972
+#: ../json-glib/json-reader.c:1008 ../json-glib/json-reader.c:1034
+msgid "No node available at the current position"
+msgstr "Nenhum nó disponível na posição atual"
+
+#: ../json-glib/json-reader.c:577
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "A posição atual contém um '%s' e não uma lista"
+
+#: ../json-glib/json-reader.c:640
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "O nó atual é do tipo '%s', mas era esperado um objeto."
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "O membro '%s' não está definido no objeto da posição atual."
+
+#: ../json-glib/json-reader.c:731 ../json-glib/json-reader.c:782
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "A posição atual contém um '%s' e não um objeto"
+
+#: ../json-glib/json-reader.c:822 ../json-glib/json-reader.c:860
+#: ../json-glib/json-reader.c:898 ../json-glib/json-reader.c:936
+#: ../json-glib/json-reader.c:981
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "A posição atual contém um '%s' e não um valor"
+
+#: ../json-glib/json-reader.c:944
+msgid "The current position does not hold a string type"
+msgstr "A posição atual não contém um tipo expressão"
--- /dev/null
+# Brazilian Portuguese translation for json-glib.
+# Copyright (C) 2013 json-glib's COPYRIGHT HOLDER
+# This file is distributed under the same license as the json-glib package.
+# Gabriel Speckhahn <gabspeck@gmail.com>, 2012.
+# Enrico Nicoletto <liverig@gmail.com>, 2013.
+# Rafael Ferreira <rafael.f.f1@gmail.com>, 2013.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2013-12-19 00:13+0000\n"
+"PO-Revision-Date: 2013-12-19 11:01-0300\n"
+"Last-Translator: Rafael Ferreira <rafael.f.f1@gmail.com>\n"
+"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
+"Language: pt_BR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Poedit 1.5.7\n"
+"X-Project-Style: gnome\n"
+
+#: ../json-glib/json-glib-format.c:41
+msgid "Prettify output"
+msgstr "Saída formatada"
+
+#: ../json-glib/json-glib-format.c:42
+msgid "Indentation spaces"
+msgstr "Espaços de recuo"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:68 ../json-glib/json-glib-validate.c:61
+#, c-format
+msgid "%s: %s: error opening file: %s\n"
+msgstr "%s: %s: erro ao abrir arquivo: %s\n"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:80 ../json-glib/json-glib-validate.c:73
+#, c-format
+msgid "%s: %s: error parsing file: %s\n"
+msgstr "%s: %s: erro ao analisar arquivo: %s\n"
+
+#. Translators: the first %s is the program name, the
+#. * second one is the URI of the file.
+#.
+#: ../json-glib/json-glib-format.c:99
+#, c-format
+msgid "%s: %s: error writing to stdout"
+msgstr "%s: %s: erro ao gravar na saída padrão"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:119 ../json-glib/json-glib-validate.c:85
+#, c-format
+msgid "%s: %s: error closing: %s\n"
+msgstr "%s: %s: erro ao fechar: %s\n"
+
+#: ../json-glib/json-glib-format.c:148 ../json-glib/json-glib-validate.c:113
+msgid "FILE"
+msgstr "ARQUIVO"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-format.c:151
+msgid "Format JSON files."
+msgstr "Formatar arquivos JSON."
+
+#: ../json-glib/json-glib-format.c:152
+msgid "json-glib-format formats JSON resources."
+msgstr "json-glib-format formata recursos JSON."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:169 ../json-glib/json-glib-validate.c:134
+#, c-format
+msgid "Error parsing commandline options: %s\n"
+msgstr "Ocorreu erro ao analisar as opções de linha de comando: %s\n"
+
+#: ../json-glib/json-glib-format.c:171 ../json-glib/json-glib-format.c:185
+#: ../json-glib/json-glib-validate.c:136 ../json-glib/json-glib-validate.c:150
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Tente \"%s --help\" para mais informações."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:183 ../json-glib/json-glib-validate.c:148
+#, c-format
+msgid "%s: missing files"
+msgstr "%s: arquivos em falta"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-validate.c:116
+msgid "Validate JSON files."
+msgstr "Validar arquivos JSON."
+
+#: ../json-glib/json-glib-validate.c:117
+msgid "json-glib-validate validates JSON data at the given URI."
+msgstr "json-glib-validate valida dados JSON no URI fornecido."
+
+#: ../json-glib/json-gobject.c:917
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "Objeto JSON esperado, porém o nó raiz é do tipo \"%s\""
+
+#: ../json-glib/json-gvariant.c:545
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "Tipo inesperado \"%s\" no nó JSON"
+
+#: ../json-glib/json-gvariant.c:615
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "Faltam elementos no vetor JSON para que se forme uma tupla"
+
+#: ../json-glib/json-gvariant.c:643
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "Símbolo de fechamento \")\" ausente no tipo de tupla GVariant"
+
+#: ../json-glib/json-gvariant.c:651
+msgid "Unexpected extra elements in JSON array"
+msgstr "Elementos adicionais inesperados no vetor JSON"
+
+#: ../json-glib/json-gvariant.c:930
+msgid "Invalid string value converting to GVariant"
+msgstr "Valor string inválido ao converter para GVariant"
+
+#: ../json-glib/json-gvariant.c:986
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr ""
+"Uma entrada de dicionário GVariant espera um objeto JSON com exatamente um "
+"membro"
+
+#: ../json-glib/json-gvariant.c:1266
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "Não há suporte para a classe GVariant \"%c\""
+
+#: ../json-glib/json-gvariant.c:1314
+msgid "Invalid GVariant signature"
+msgstr "Assinatura GVariant inválida"
+
+#: ../json-glib/json-gvariant.c:1362
+msgid "JSON data is empty"
+msgstr "Dados JSON vazios"
+
+#: ../json-glib/json-parser.c:817
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d%d: Erro na análise: %s"
+
+#: ../json-glib/json-parser.c:885
+msgid "JSON data must be UTF-8 encoded"
+msgstr "Os dados JSON devem possuir codificação UTF-8"
+
+#: ../json-glib/json-path.c:438
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "Apenas um nó raiz é permitido em uma expressão JSONPath"
+
+#: ../json-glib/json-path.c:447
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "Nó raiz seguido de caractere inválido \"%c\""
+
+#: ../json-glib/json-path.c:487
+msgid "Missing member name or wildcard after . character"
+msgstr "Faltando nome de membro ou coringa após o caractere \".\""
+
+#: ../json-glib/json-path.c:561
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "Expressão de corte \"%*s\" má formada"
+
+#: ../json-glib/json-path.c:605
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "Definição de conjunto \"%*s\" inválida."
+
+#: ../json-glib/json-path.c:658
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "Definição de corte \"%*s\" inválida"
+
+#: ../json-glib/json-path.c:686
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "Definição de índice de vetor %*s\" inválida"
+
+#: ../json-glib/json-path.c:705
+#, c-format
+msgid "Invalid first character '%c'"
+msgstr "Primeiro caractere \"%c\" inválido"
+
+#: ../json-glib/json-reader.c:457
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr "O nó atual é do tipo \"%s\", mas um vetor ou objeto era esperado."
+
+#: ../json-glib/json-reader.c:469
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "O índice \"%d\" é maior do que o tamanho do vetor na posição atual."
+
+#: ../json-glib/json-reader.c:486
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr "O índice \"%d\" é maior do que o tamanho do objeto na posição atual."
+
+#: ../json-glib/json-reader.c:570 ../json-glib/json-reader.c:723
+#: ../json-glib/json-reader.c:774 ../json-glib/json-reader.c:812
+#: ../json-glib/json-reader.c:850 ../json-glib/json-reader.c:888
+#: ../json-glib/json-reader.c:926 ../json-glib/json-reader.c:971
+#: ../json-glib/json-reader.c:1007 ../json-glib/json-reader.c:1033
+msgid "No node available at the current position"
+msgstr "Nenhum nó disponível na posição atual"
+
+#: ../json-glib/json-reader.c:577
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "A posição atual detém um \"%s\" e não um vetor"
+
+#: ../json-glib/json-reader.c:640
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "O nó atual é do tipo \"%s\", mas um objeto era esperado."
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "O membro \"%s\" não está definido no objeto na posição atual."
+
+#: ../json-glib/json-reader.c:730 ../json-glib/json-reader.c:781
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "A posição atual detém um \"%s\" e não um objeto"
+
+#: ../json-glib/json-reader.c:821 ../json-glib/json-reader.c:859
+#: ../json-glib/json-reader.c:897 ../json-glib/json-reader.c:935
+#: ../json-glib/json-reader.c:980
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "A posição atual detém um \"%s\" e não um valor"
+
+#: ../json-glib/json-reader.c:943
+msgid "The current position does not hold a string type"
+msgstr "A posição atual não detém um tipo string"
+
+#~ msgid "The current position does not hold an integer type"
+#~ msgstr "A posição atual não detém um tipo inteiro"
+
+#~ msgid "The current position does not hold a floating point type"
+#~ msgstr "A posição atual não detém um tipo de ponto flutuante"
+
+#~ msgid "The current position does not hold a boolean type"
+#~ msgstr "A posição atual não detém um tipo booleano"
--- /dev/null
+# Russian translation for json-glib.
+# Copyright (C) 2012 json-glib's COPYRIGHT HOLDER
+# This file is distributed under the same license as the json-glib package.
+#
+# Юрий Козлов <yuray@komyakino.ru>, 2012.
+# Yuri Myasoedov <omerta13@yandex.ru>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2014-03-10 22:18+0000\n"
+"PO-Revision-Date: 2014-03-11 12:23+0300\n"
+"Last-Translator: Yuri Myasoedov <omerta13@yandex.ru>\n"
+"Language-Team: русский <gnome-cyr@gnome.org>\n"
+"Language: ru\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Poedit 1.5.4\n"
+
+#: ../json-glib/json-glib-format.c:50
+msgid "Prettify output"
+msgstr "Выводить в удобочитаемой форме"
+
+#: ../json-glib/json-glib-format.c:51
+msgid "Indentation spaces"
+msgstr "Отступы"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:77 ../json-glib/json-glib-validate.c:63
+#, c-format
+msgid "%s: %s: error opening file: %s\n"
+msgstr "%s: %s: не удалось открыть файл: %s\n"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:89 ../json-glib/json-glib-validate.c:75
+#, c-format
+msgid "%s: %s: error parsing file: %s\n"
+msgstr "%s: %s: не удалось разобрать файл: %s\n"
+
+#. Translators: the first %s is the program name, the
+#. * second one is the URI of the file.
+#.
+#: ../json-glib/json-glib-format.c:108
+#, c-format
+msgid "%s: %s: error writing to stdout"
+msgstr "%s: %s: не удалось записать в стандартный вывод"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:128 ../json-glib/json-glib-validate.c:87
+#, c-format
+msgid "%s: %s: error closing: %s\n"
+msgstr "%s: %s: не удалось закрыть: %s\n"
+
+#: ../json-glib/json-glib-format.c:157 ../json-glib/json-glib-validate.c:115
+msgid "FILE"
+msgstr "ФАЙЛ"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-format.c:160
+msgid "Format JSON files."
+msgstr "Форматирование файлов JSON."
+
+#: ../json-glib/json-glib-format.c:161
+msgid "json-glib-format formats JSON resources."
+msgstr "json-glib-format форматирует ресурсы JSON."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:178 ../json-glib/json-glib-validate.c:136
+#, c-format
+msgid "Error parsing commandline options: %s\n"
+msgstr "Не удалось разобрать параметры командной строки: %s\n"
+
+#: ../json-glib/json-glib-format.c:180 ../json-glib/json-glib-format.c:194
+#: ../json-glib/json-glib-validate.c:138 ../json-glib/json-glib-validate.c:152
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Используйте «%s --help» для получения подробной информации."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:192 ../json-glib/json-glib-validate.c:150
+#, c-format
+msgid "%s: missing files"
+msgstr "%s: отсутствуют файлы"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-validate.c:118
+msgid "Validate JSON files."
+msgstr "Проверка корректности файлов JSON."
+
+#: ../json-glib/json-glib-validate.c:119
+msgid "json-glib-validate validates JSON data at the given URI."
+msgstr ""
+"json-glib-validate проверяет корректность данных JSON по заданному URI."
+
+#: ../json-glib/json-gobject.c:917
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "Ожидается объект JSON, но корневой узел имеет тип «%s»"
+
+#: ../json-glib/json-gvariant.c:545
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "Неожиданный тип «%s» в узле JSON"
+
+#: ../json-glib/json-gvariant.c:615
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "Отсутствуют элементы в массиве JSON для соответствия кортежу"
+
+#: ../json-glib/json-gvariant.c:643
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "Отсутствует закрывающий символ «)» в кортеже типа GVariant"
+
+#: ../json-glib/json-gvariant.c:651
+msgid "Unexpected extra elements in JSON array"
+msgstr "Неожиданные дополнительные символы в массиве JSON"
+
+#: ../json-glib/json-gvariant.c:930
+msgid "Invalid string value converting to GVariant"
+msgstr "Некорректное строковое значение для преобразования к GVariant"
+
+#: ../json-glib/json-gvariant.c:986
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr ""
+"Элемент словаря GVariant должен быть объектом JSON с единственным членом"
+
+#: ../json-glib/json-gvariant.c:1266
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "Класс GVariant «%c» не поддерживается"
+
+#: ../json-glib/json-gvariant.c:1314
+msgid "Invalid GVariant signature"
+msgstr "Недопустимая подпись GVariant"
+
+#: ../json-glib/json-gvariant.c:1362
+msgid "JSON data is empty"
+msgstr "Данные JSON отсутствуют"
+
+#: ../json-glib/json-parser.c:817
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: ошибка разбора: %s"
+
+#: ../json-glib/json-parser.c:885
+msgid "JSON data must be UTF-8 encoded"
+msgstr "Данные JSON должны быть в кодировке UTF-8"
+
+#: ../json-glib/json-path.c:438
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "В выражении JSONPath может быть только один корневой узел"
+
+#: ../json-glib/json-path.c:447
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "Корневой узел заканчивается некорректным символом «%c»"
+
+#: ../json-glib/json-path.c:487
+msgid "Missing member name or wildcard after . character"
+msgstr "Отсутствует имя члена или шаблон после символа «.»"
+
+#: ../json-glib/json-path.c:561
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "Неправильное выражение среза «%*s»"
+
+#: ../json-glib/json-path.c:605
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "Неверное определение присвоения «%*s»"
+
+#: ../json-glib/json-path.c:658
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "Неверное определение среза «%*s»"
+
+#: ../json-glib/json-path.c:686
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "Неверное определение индекса массива «%*s»"
+
+#: ../json-glib/json-path.c:705
+#, c-format
+msgid "Invalid first character '%c'"
+msgstr "Неверный первый символ «%c»"
+
+#: ../json-glib/json-reader.c:463
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr "Текущий узел имеет тип «%s», но ожидается массив или объект."
+
+#: ../json-glib/json-reader.c:475
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "В текущей позиции индекс «%d» больше размера массива."
+
+#: ../json-glib/json-reader.c:492
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr "В текущей позиции индекс «%d» больше размера объекта."
+
+#: ../json-glib/json-reader.c:577 ../json-glib/json-reader.c:731
+#: ../json-glib/json-reader.c:782 ../json-glib/json-reader.c:820
+#: ../json-glib/json-reader.c:858 ../json-glib/json-reader.c:896
+#: ../json-glib/json-reader.c:934 ../json-glib/json-reader.c:979
+#: ../json-glib/json-reader.c:1015 ../json-glib/json-reader.c:1041
+msgid "No node available at the current position"
+msgstr "В текущей позиции отсутствует узел"
+
+#: ../json-glib/json-reader.c:584
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "В текущей позиции содержится «%s», а не массив"
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "Текущий узел имеет тип «%s», но ожидается объект."
+
+#: ../json-glib/json-reader.c:654
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "В текущей позиции член «%s» не определён в объекте."
+
+#: ../json-glib/json-reader.c:738 ../json-glib/json-reader.c:789
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "В текущей позиции содержится «%s», а не объект"
+
+#: ../json-glib/json-reader.c:829 ../json-glib/json-reader.c:867
+#: ../json-glib/json-reader.c:905 ../json-glib/json-reader.c:943
+#: ../json-glib/json-reader.c:988
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "В текущей позиции содержится «%s», а не значение"
+
+#: ../json-glib/json-reader.c:951
+msgid "The current position does not hold a string type"
+msgstr "В текущей позиции не содержится строковое значение"
+
+#~ msgid "The current position does not hold an integer type"
+#~ msgstr "В текущей позиции не содержится значения целого"
+
+#~ msgid "The current position does not hold a floating point type"
+#~ msgstr "В текущей позиции не содержится значения с плавающей точкой"
+
+#~ msgid "The current position does not hold a boolean type"
+#~ msgstr "В текущей позиции не содержится логического значения"
--- /dev/null
+# Slovak translation for json-glib.
+# Copyright (C) 2012 json-glib's COPYRIGHT HOLDER
+# This file is distributed under the same license as the json-glib package.
+# Pavol Klačanský <pavol@klacansky.com>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2012-11-16 23:22+0000\n"
+"PO-Revision-Date: 2012-11-17 20:46+0100\n"
+"Last-Translator: Pavol Klačanský <pavol@klacansky.com>\n"
+"Language-Team: Slovak <gnome-sk-list@gnome.org>\n"
+"Language: sk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
+
+#: ../json-glib/json-gobject.c:925
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "Očakáva sa objekt JSON, ale koreňový uzol je typu „%s“"
+
+#: ../json-glib/json-gvariant.c:539
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "Neočakávaný typ „%s“ v uzle JSON"
+
+#: ../json-glib/json-gvariant.c:609
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "Chýbajú prvky v poli JSON na zmenu n-tice"
+
+#: ../json-glib/json-gvariant.c:637
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "Chýba uzatvárací symbol „)“ v type n-tica pre GVariant"
+
+#: ../json-glib/json-gvariant.c:645
+msgid "Unexpected extra elements in JSON array"
+msgstr "Neočakávané nadbytočné prvky v poli JSON"
+
+#: ../json-glib/json-gvariant.c:924
+msgid "Invalid string value converting to GVariant"
+msgstr "Neplatná hodnota reťazca, ktorý sa má konvertovať na typ GVariant"
+
+#: ../json-glib/json-gvariant.c:980
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr ""
+"Položka typu slovník pre GVariant očakáva objekt JSON s presne jedným členom"
+
+#: ../json-glib/json-gvariant.c:1236
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "Trieda pre GVariant „%c“ nie je podporovaná"
+
+#: ../json-glib/json-gvariant.c:1281
+msgid "Invalid GVariant signature"
+msgstr "Neplatný podpis pre GVariant"
+
+#: ../json-glib/json-gvariant.c:1326
+msgid "JSON data is empty"
+msgstr "Dáta JSON sú prázdne"
+
+#: ../json-glib/json-parser.c:825
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: Chyba analýzy: %s"
+
+#: ../json-glib/json-path.c:375
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "Vo výraze JSONPath môže byť len jeden koreňový uzol"
+
+#: ../json-glib/json-path.c:384
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "Za koreňovým uzlom je neplatný znak „%c“"
+
+#: ../json-glib/json-path.c:490
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "Chybný výraz „%*s“ pre výsek"
+
+# MČ: set sa zväčša prekladá ako množina, vyhovoval by tento výraz?
+#: ../json-glib/json-path.c:534
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "Neplatná definícia množiny „%*s“"
+
+#: ../json-glib/json-path.c:587
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "Neplatná definícia výseku „%*s“"
+
+#: ../json-glib/json-path.c:615
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "Neplatná definícia indexu poľa „%*s“"
+
+#: ../json-glib/json-reader.c:464
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr "Bolo očakávané pole alebo objekt, ale aktuálny uzol je typu „%s“."
+
+#: ../json-glib/json-reader.c:476
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr ""
+"Index s hodnotou „%d“ poľa na aktuálnej pozícii je väčší ako jeho veľkosť."
+
+#: ../json-glib/json-reader.c:493
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr ""
+"Index s hodnotou „%d“ objektu na aktuálnej pozícii je väčší ako jeho veľkosť."
+
+#: ../json-glib/json-reader.c:577 ../json-glib/json-reader.c:730
+#: ../json-glib/json-reader.c:781 ../json-glib/json-reader.c:819
+#: ../json-glib/json-reader.c:857 ../json-glib/json-reader.c:895
+#: ../json-glib/json-reader.c:933 ../json-glib/json-reader.c:978
+#: ../json-glib/json-reader.c:1014 ../json-glib/json-reader.c:1040
+msgid "No node available at the current position"
+msgstr "Na aktuálnej pozícii nie je dostupný žiadny uzol"
+
+#: ../json-glib/json-reader.c:584
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "Na aktuálnej pozícii je „%s“ a nie pole"
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "Bol očakávaný objekt, ale aktuálny uzol je typu „%s“."
+
+#: ../json-glib/json-reader.c:654
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "Člen „%s“ nie je definovaný v objekte na aktuálnej pozícii."
+
+#: ../json-glib/json-reader.c:737 ../json-glib/json-reader.c:788
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "Na aktuálnej pozícii je „%s“ a nie objekt"
+
+#: ../json-glib/json-reader.c:828 ../json-glib/json-reader.c:866
+#: ../json-glib/json-reader.c:904 ../json-glib/json-reader.c:942
+#: ../json-glib/json-reader.c:987
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "Na aktuálnej pozícii je „%s“ a nie hodnota"
+
+#: ../json-glib/json-reader.c:950
+msgid "The current position does not hold a string type"
+msgstr "Na aktuálnej pozícii je „%s“ a nie reťazec"
--- /dev/null
+# Slovenian translation for json-glib.
+# Copyright (C) 2011 json-glib's COPYRIGHT HOLDER
+# This file is distributed under the same license as the json-glib package.
+#
+# Matej Urbančič <mateju@svn.gnome.org>, 2011-2014.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2014-03-31 09:49+0000\n"
+"PO-Revision-Date: 2014-04-03 20:37+0100\n"
+"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
+"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
+"Language: sl_SI\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n%100==4 ? 3 : 0);\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Generator: Poedit 1.5.4\n"
+
+#: ../json-glib/json-glib-format.c:50
+msgid "Prettify output"
+msgstr "Olepšaj odvod"
+
+#: ../json-glib/json-glib-format.c:51
+msgid "Indentation spaces"
+msgstr "Presledki zamika"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:77 ../json-glib/json-glib-validate.c:63
+#, c-format
+msgid "%s: %s: error opening file: %s\n"
+msgstr "%s: %s: napaka odpiranja datoteke: %s\n"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:89 ../json-glib/json-glib-validate.c:75
+#, c-format
+msgid "%s: %s: error parsing file: %s\n"
+msgstr "%s: %s: napaka razčlenjevanja datoteke: %s\n"
+
+#. Translators: the first %s is the program name, the
+#. * second one is the URI of the file.
+#.
+#: ../json-glib/json-glib-format.c:108
+#, c-format
+msgid "%s: %s: error writing to stdout"
+msgstr "%s: %s: napaka pisanja na standardni odvod"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:128 ../json-glib/json-glib-validate.c:87
+#, c-format
+msgid "%s: %s: error closing: %s\n"
+msgstr "%s: %s: napaka zapiranja: %s\n"
+
+#: ../json-glib/json-glib-format.c:157 ../json-glib/json-glib-validate.c:115
+msgid "FILE"
+msgstr "DATOTEKA"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-format.c:160
+msgid "Format JSON files."
+msgstr "Oblikuj datoteke JSON."
+
+#: ../json-glib/json-glib-format.c:161
+msgid "json-glib-format formats JSON resources."
+msgstr "Možnost json-glib-format oblikuje zapis virov JSON."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:178 ../json-glib/json-glib-validate.c:136
+#, c-format
+msgid "Error parsing commandline options: %s\n"
+msgstr "Napaka med razčlenjevanjem možnosti ukazne vrstice: %s\n"
+
+#: ../json-glib/json-glib-format.c:180 ../json-glib/json-glib-format.c:194
+#: ../json-glib/json-glib-validate.c:138 ../json-glib/json-glib-validate.c:152
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Poskusite \"%s --help\" za več podrobnosti."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:192 ../json-glib/json-glib-validate.c:150
+#, c-format
+msgid "%s: missing files"
+msgstr "%s: manjkajoče datoteke"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-validate.c:118
+msgid "Validate JSON files."
+msgstr "Overi datoteke JSON."
+
+#: ../json-glib/json-glib-validate.c:119
+msgid "json-glib-validate validates JSON data at the given URI."
+msgstr "Možnost json-glib-validate overi podatke JSON za podani naslov URI."
+
+#: ../json-glib/json-gobject.c:915
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "Pričakovan je predmet JSON, vendar pa je korensko vozlišče vrste `%s'"
+
+#: ../json-glib/json-gvariant.c:523
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "Nepričakovana vrsta '%s' v vozlišču JSON"
+
+#: ../json-glib/json-gvariant.c:593
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "Manjkajo predmeti v polju JSON za skladnost z n-terico."
+
+#: ../json-glib/json-gvariant.c:621
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "Manjka zaključni znak ')' v vrsti n-terice GVariant"
+
+#: ../json-glib/json-gvariant.c:629
+msgid "Unexpected extra elements in JSON array"
+msgstr "Nepričakovan dodatni predmet polja JSON"
+
+#: ../json-glib/json-gvariant.c:908
+msgid "Invalid string value converting to GVariant"
+msgstr "Neveljavna vrednost niza med pretvarjanjem v GVariant"
+
+#: ../json-glib/json-gvariant.c:964
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr "Slovar GVariant pričakuje predmet JSON z natanko enim določilom"
+
+#: ../json-glib/json-gvariant.c:1244
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "Razred GVariant '%c' ni podprt."
+
+#: ../json-glib/json-gvariant.c:1292
+msgid "Invalid GVariant signature"
+msgstr "Neveljaven podpis GVariant"
+
+#: ../json-glib/json-gvariant.c:1340
+msgid "JSON data is empty"
+msgstr "Podatki JSON so prazni"
+
+#: ../json-glib/json-parser.c:815
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: napaka razčlenjevanje: %s"
+
+#: ../json-glib/json-parser.c:883
+msgid "JSON data must be UTF-8 encoded"
+msgstr "Podatki JSON morajo biti kodirani v naboru UTF-8"
+
+#: ../json-glib/json-path.c:388
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "Le eno korensko vozlišče je dovoljeno v izrazu JSONPath"
+
+#: ../json-glib/json-path.c:397
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "Korensko vozlišče se konča z neveljavnim znakom '%c'"
+
+#: ../json-glib/json-path.c:437
+msgid "Missing member name or wildcard after . character"
+msgstr "Manjka ime člana ali pa nadomestni znak po znaku . (pika)"
+
+#: ../json-glib/json-path.c:511
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "Napačno oblikovan izraz rezine '%*s'"
+
+#: ../json-glib/json-path.c:555
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "Neveljavno določilo '%*s'"
+
+#: ../json-glib/json-path.c:608
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "Neveljavno določilo rezine '%*s'"
+
+#: ../json-glib/json-path.c:636
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "Neveljavno določilo kazala polja '%*s'"
+
+#: ../json-glib/json-path.c:655
+#, c-format
+msgid "Invalid first character '%c'"
+msgstr "Neveljaven prvi znak '%c'"
+
+#: ../json-glib/json-reader.c:456
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr "Trenutno vozlišče je vrste '%s', pričakovano pa je polje ali predmet."
+
+#: ../json-glib/json-reader.c:468
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "Kazalo '%d' je večje od velikosti polja na trenutnem položaju."
+
+#: ../json-glib/json-reader.c:485
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr "Kazalo '%d' je večje od velikosti predmeta na trenutnem položaju."
+
+#: ../json-glib/json-reader.c:570 ../json-glib/json-reader.c:724
+#: ../json-glib/json-reader.c:775 ../json-glib/json-reader.c:813
+#: ../json-glib/json-reader.c:851 ../json-glib/json-reader.c:889
+#: ../json-glib/json-reader.c:927 ../json-glib/json-reader.c:972
+#: ../json-glib/json-reader.c:1008 ../json-glib/json-reader.c:1034
+msgid "No node available at the current position"
+msgstr "Na trenutnem položaju ni razpoložljivega vozlišča."
+
+#: ../json-glib/json-reader.c:577
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "Trenutni položaj vsebuje '%s' in ne polja"
+
+#: ../json-glib/json-reader.c:640
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "Trenutno vozlišče je vrste '%s', pričakovan pa je predmet."
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "Določilo '%s' ni določan v predmetu na trenutnem položaju."
+
+#: ../json-glib/json-reader.c:731 ../json-glib/json-reader.c:782
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "Trenutni položaj vsebuje '%s' in ne predmeta"
+
+#: ../json-glib/json-reader.c:822 ../json-glib/json-reader.c:860
+#: ../json-glib/json-reader.c:898 ../json-glib/json-reader.c:936
+#: ../json-glib/json-reader.c:981
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "Trenutni položaj vsebuje '%s' in ne vrednosti"
+
+#: ../json-glib/json-reader.c:944
+msgid "The current position does not hold a string type"
+msgstr "Trenutni položaj ne vsebuje niza"
+
+#~ msgid "The current position does not hold an integer type"
+#~ msgstr "Trenutni položaj ne vsebuje celega števila"
+
+#~ msgid "The current position does not hold a floating point type"
+#~ msgstr "Trenutni položaj ne vsebuje plavajoče vejice"
+
+#~ msgid "The current position does not hold a boolean type"
+#~ msgstr "Trenutni položaj ne vsebuje logične izraza"
--- /dev/null
+# Serbian translation for json-glib.
+# Copyright (C) 2012 json-glib's COPYRIGHT HOLDER
+# This file is distributed under the same license as the json-glib package.
+# Мирослав Николић <miroslavnikolic@rocketmail.com>, 2011 — 2014.
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib json-glib-0-14\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2014-03-20 22:24+0000\n"
+"PO-Revision-Date: 2014-03-21 03:58+0200\n"
+"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
+"Language-Team: Serbian <gnom@prevod.org>\n"
+"Language: sr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : "
+"n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Project-Style: gnome\n"
+
+#: ../json-glib/json-glib-format.c:50
+msgid "Prettify output"
+msgstr "Излаз улепшавања"
+
+#: ../json-glib/json-glib-format.c:51
+msgid "Indentation spaces"
+msgstr "Размаци за увлачење"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:77 ../json-glib/json-glib-validate.c:63
+#, c-format
+msgid "%s: %s: error opening file: %s\n"
+msgstr "%s: %s: грешка отварања датотеке: %s\n"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:89 ../json-glib/json-glib-validate.c:75
+#, c-format
+msgid "%s: %s: error parsing file: %s\n"
+msgstr "%s: %s: грешка обраде датотеке: %s\n"
+
+#. Translators: the first %s is the program name, the
+#. * second one is the URI of the file.
+#.
+#: ../json-glib/json-glib-format.c:108
+#, c-format
+msgid "%s: %s: error writing to stdout"
+msgstr "%s: %s: грешка писања на стандардни излаз"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:128 ../json-glib/json-glib-validate.c:87
+#, c-format
+msgid "%s: %s: error closing: %s\n"
+msgstr "%s: %s: грешка затварања: %s\n"
+
+#: ../json-glib/json-glib-format.c:157 ../json-glib/json-glib-validate.c:115
+msgid "FILE"
+msgstr "ДАТОТЕКА"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-format.c:160
+msgid "Format JSON files."
+msgstr "Обликујте ЈСОН датотеке."
+
+#: ../json-glib/json-glib-format.c:161
+msgid "json-glib-format formats JSON resources."
+msgstr "„json-glib-format“ обликује ЈСОН изворишта."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:178 ../json-glib/json-glib-validate.c:136
+#, c-format
+msgid "Error parsing commandline options: %s\n"
+msgstr "Грешка обраде опција линије наредби: %s\n"
+
+#: ../json-glib/json-glib-format.c:180 ../json-glib/json-glib-format.c:194
+#: ../json-glib/json-glib-validate.c:138 ../json-glib/json-glib-validate.c:152
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Пробајте „%s --help“ за више података."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:192 ../json-glib/json-glib-validate.c:150
+#, c-format
+msgid "%s: missing files"
+msgstr "%s: недостају датотеке"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-validate.c:118
+msgid "Validate JSON files."
+msgstr "Потврдите ЈСОН датотеке."
+
+#: ../json-glib/json-glib-validate.c:119
+msgid "json-glib-validate validates JSON data at the given URI."
+msgstr "„json-glib-validate“ потврђује ЈСОН податке и дату путању."
+
+#: ../json-glib/json-gobject.c:915
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "Очекујем ЈСОН објекат, али корени чвор је врсте „%s“"
+
+#: ../json-glib/json-gvariant.c:523
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "Неочекивана врста „%s“ у ЈСОН чвору"
+
+#: ../json-glib/json-gvariant.c:593
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "Недостају елементи у ЈСОН низу да би био у складу са n-торком"
+
+#: ../json-glib/json-gvariant.c:621
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "Недостаје симбол затварања „)“ у врсти n-торке Гваријанта"
+
+#: ../json-glib/json-gvariant.c:629
+msgid "Unexpected extra elements in JSON array"
+msgstr "Неочекивани додатни елементи у ЈСОН низу"
+
+#: ../json-glib/json-gvariant.c:908
+msgid "Invalid string value converting to GVariant"
+msgstr "Неисправна вредност ниске претварајући у Гваријант"
+
+#: ../json-glib/json-gvariant.c:964
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr "Унос речника Гваријанта очекује ЈСОН објекат са тачно једним чланом"
+
+#: ../json-glib/json-gvariant.c:1244
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "Разред Гваријанта „%c“ није подржан"
+
+#: ../json-glib/json-gvariant.c:1292
+msgid "Invalid GVariant signature"
+msgstr "Неисправан потпис Гваријанта"
+
+#: ../json-glib/json-gvariant.c:1340
+msgid "JSON data is empty"
+msgstr "ЈСОН подаци су празни"
+
+#: ../json-glib/json-parser.c:815
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: Грешка обраде: %s"
+
+#: ../json-glib/json-parser.c:883
+msgid "JSON data must be UTF-8 encoded"
+msgstr "ЈСОН подаци морају бити у УТФ-8 кодирању"
+
+#: ../json-glib/json-path.c:388
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "Само један корени чвор је допуштен у изразу ЈСОНПутање"
+
+#: ../json-glib/json-path.c:397
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "За кореним чвором следи неисправан знак „%c“"
+
+#: ../json-glib/json-path.c:437
+msgid "Missing member name or wildcard after . character"
+msgstr "Недостаје назив члана или џокер након знака тачке (.)"
+
+#: ../json-glib/json-path.c:511
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "Неисправан израз исечка „%*s“"
+
+#: ../json-glib/json-path.c:555
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "Неисправна одредница скупа „%*s“"
+
+#: ../json-glib/json-path.c:608
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "Неисправна одредница исечка „%*s“"
+
+#: ../json-glib/json-path.c:636
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "Неисправна одредница регистра низа „%*s“"
+
+#: ../json-glib/json-path.c:655
+#, c-format
+msgid "Invalid first character '%c'"
+msgstr "Неисправан први знак „%c“"
+
+#: ../json-glib/json-reader.c:456
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr "Тренутни чвор је врсте „%s“, али је очекиван низ или објекат."
+
+#: ../json-glib/json-reader.c:468
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "Регистар „%d“ је већи од величине низа на тренутном положају."
+
+#: ../json-glib/json-reader.c:485
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr "Регистар „%d“ је већи од величине објекта на тренутном положају."
+
+#: ../json-glib/json-reader.c:570 ../json-glib/json-reader.c:724
+#: ../json-glib/json-reader.c:775 ../json-glib/json-reader.c:813
+#: ../json-glib/json-reader.c:851 ../json-glib/json-reader.c:889
+#: ../json-glib/json-reader.c:927 ../json-glib/json-reader.c:972
+#: ../json-glib/json-reader.c:1008 ../json-glib/json-reader.c:1034
+msgid "No node available at the current position"
+msgstr "Ниједан чвор није доступан на тренутном положају"
+
+#: ../json-glib/json-reader.c:577
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "Тренутни положај садржи „%s“ а не низ"
+
+#: ../json-glib/json-reader.c:640
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "Тренутни чвор је врсте „%s“, али је очекиван објекат."
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "Члан „%s“ није одређен у објекту на тренутном положају."
+
+#: ../json-glib/json-reader.c:731 ../json-glib/json-reader.c:782
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "Тренутни положај садржи „%s“ а не објекат"
+
+#: ../json-glib/json-reader.c:822 ../json-glib/json-reader.c:860
+#: ../json-glib/json-reader.c:898 ../json-glib/json-reader.c:936
+#: ../json-glib/json-reader.c:981
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "Тренутни положај садржи „%s“ а не вредност"
+
+#: ../json-glib/json-reader.c:944
+msgid "The current position does not hold a string type"
+msgstr "Тренутни положај не садржи врсту ниске"
--- /dev/null
+# Serbian translation for json-glib.
+# Copyright (C) 2012 json-glib's COPYRIGHT HOLDER
+# This file is distributed under the same license as the json-glib package.
+# Miroslav Nikolić <miroslavnikolic@rocketmail.com>, 2011 — 2014.
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib json-glib-0-14\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2014-03-20 22:24+0000\n"
+"PO-Revision-Date: 2014-03-21 03:58+0200\n"
+"Last-Translator: Miroslav Nikolić <miroslavnikolic@rocketmail.com>\n"
+"Language-Team: Serbian <gnom@prevod.org>\n"
+"Language: sr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : "
+"n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Project-Style: gnome\n"
+
+#: ../json-glib/json-glib-format.c:50
+msgid "Prettify output"
+msgstr "Izlaz ulepšavanja"
+
+#: ../json-glib/json-glib-format.c:51
+msgid "Indentation spaces"
+msgstr "Razmaci za uvlačenje"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:77 ../json-glib/json-glib-validate.c:63
+#, c-format
+msgid "%s: %s: error opening file: %s\n"
+msgstr "%s: %s: greška otvaranja datoteke: %s\n"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:89 ../json-glib/json-glib-validate.c:75
+#, c-format
+msgid "%s: %s: error parsing file: %s\n"
+msgstr "%s: %s: greška obrade datoteke: %s\n"
+
+#. Translators: the first %s is the program name, the
+#. * second one is the URI of the file.
+#.
+#: ../json-glib/json-glib-format.c:108
+#, c-format
+msgid "%s: %s: error writing to stdout"
+msgstr "%s: %s: greška pisanja na standardni izlaz"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:128 ../json-glib/json-glib-validate.c:87
+#, c-format
+msgid "%s: %s: error closing: %s\n"
+msgstr "%s: %s: greška zatvaranja: %s\n"
+
+#: ../json-glib/json-glib-format.c:157 ../json-glib/json-glib-validate.c:115
+msgid "FILE"
+msgstr "DATOTEKA"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-format.c:160
+msgid "Format JSON files."
+msgstr "Oblikujte JSON datoteke."
+
+#: ../json-glib/json-glib-format.c:161
+msgid "json-glib-format formats JSON resources."
+msgstr "„json-glib-format“ oblikuje JSON izvorišta."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:178 ../json-glib/json-glib-validate.c:136
+#, c-format
+msgid "Error parsing commandline options: %s\n"
+msgstr "Greška obrade opcija linije naredbi: %s\n"
+
+#: ../json-glib/json-glib-format.c:180 ../json-glib/json-glib-format.c:194
+#: ../json-glib/json-glib-validate.c:138 ../json-glib/json-glib-validate.c:152
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Probajte „%s --help“ za više podataka."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:192 ../json-glib/json-glib-validate.c:150
+#, c-format
+msgid "%s: missing files"
+msgstr "%s: nedostaju datoteke"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-validate.c:118
+msgid "Validate JSON files."
+msgstr "Potvrdite JSON datoteke."
+
+#: ../json-glib/json-glib-validate.c:119
+msgid "json-glib-validate validates JSON data at the given URI."
+msgstr "„json-glib-validate“ potvrđuje JSON podatke i datu putanju."
+
+#: ../json-glib/json-gobject.c:915
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "Očekujem JSON objekat, ali koreni čvor je vrste „%s“"
+
+#: ../json-glib/json-gvariant.c:523
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "Neočekivana vrsta „%s“ u JSON čvoru"
+
+#: ../json-glib/json-gvariant.c:593
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "Nedostaju elementi u JSON nizu da bi bio u skladu sa n-torkom"
+
+#: ../json-glib/json-gvariant.c:621
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "Nedostaje simbol zatvaranja „)“ u vrsti n-torke Gvarijanta"
+
+#: ../json-glib/json-gvariant.c:629
+msgid "Unexpected extra elements in JSON array"
+msgstr "Neočekivani dodatni elementi u JSON nizu"
+
+#: ../json-glib/json-gvariant.c:908
+msgid "Invalid string value converting to GVariant"
+msgstr "Neispravna vrednost niske pretvarajući u Gvarijant"
+
+#: ../json-glib/json-gvariant.c:964
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr "Unos rečnika Gvarijanta očekuje JSON objekat sa tačno jednim članom"
+
+#: ../json-glib/json-gvariant.c:1244
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "Razred Gvarijanta „%c“ nije podržan"
+
+#: ../json-glib/json-gvariant.c:1292
+msgid "Invalid GVariant signature"
+msgstr "Neispravan potpis Gvarijanta"
+
+#: ../json-glib/json-gvariant.c:1340
+msgid "JSON data is empty"
+msgstr "JSON podaci su prazni"
+
+#: ../json-glib/json-parser.c:815
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: Greška obrade: %s"
+
+#: ../json-glib/json-parser.c:883
+msgid "JSON data must be UTF-8 encoded"
+msgstr "JSON podaci moraju biti u UTF-8 kodiranju"
+
+#: ../json-glib/json-path.c:388
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "Samo jedan koreni čvor je dopušten u izrazu JSONPutanje"
+
+#: ../json-glib/json-path.c:397
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "Za korenim čvorom sledi neispravan znak „%c“"
+
+#: ../json-glib/json-path.c:437
+msgid "Missing member name or wildcard after . character"
+msgstr "Nedostaje naziv člana ili džoker nakon znaka tačke (.)"
+
+#: ../json-glib/json-path.c:511
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "Neispravan izraz isečka „%*s“"
+
+#: ../json-glib/json-path.c:555
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "Neispravna odrednica skupa „%*s“"
+
+#: ../json-glib/json-path.c:608
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "Neispravna odrednica isečka „%*s“"
+
+#: ../json-glib/json-path.c:636
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "Neispravna odrednica registra niza „%*s“"
+
+#: ../json-glib/json-path.c:655
+#, c-format
+msgid "Invalid first character '%c'"
+msgstr "Neispravan prvi znak „%c“"
+
+#: ../json-glib/json-reader.c:456
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr "Trenutni čvor je vrste „%s“, ali je očekivan niz ili objekat."
+
+#: ../json-glib/json-reader.c:468
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "Registar „%d“ je veći od veličine niza na trenutnom položaju."
+
+#: ../json-glib/json-reader.c:485
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr "Registar „%d“ je veći od veličine objekta na trenutnom položaju."
+
+#: ../json-glib/json-reader.c:570 ../json-glib/json-reader.c:724
+#: ../json-glib/json-reader.c:775 ../json-glib/json-reader.c:813
+#: ../json-glib/json-reader.c:851 ../json-glib/json-reader.c:889
+#: ../json-glib/json-reader.c:927 ../json-glib/json-reader.c:972
+#: ../json-glib/json-reader.c:1008 ../json-glib/json-reader.c:1034
+msgid "No node available at the current position"
+msgstr "Nijedan čvor nije dostupan na trenutnom položaju"
+
+#: ../json-glib/json-reader.c:577
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "Trenutni položaj sadrži „%s“ a ne niz"
+
+#: ../json-glib/json-reader.c:640
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "Trenutni čvor je vrste „%s“, ali je očekivan objekat."
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "Član „%s“ nije određen u objektu na trenutnom položaju."
+
+#: ../json-glib/json-reader.c:731 ../json-glib/json-reader.c:782
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "Trenutni položaj sadrži „%s“ a ne objekat"
+
+#: ../json-glib/json-reader.c:822 ../json-glib/json-reader.c:860
+#: ../json-glib/json-reader.c:898 ../json-glib/json-reader.c:936
+#: ../json-glib/json-reader.c:981
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "Trenutni položaj sadrži „%s“ a ne vrednost"
+
+#: ../json-glib/json-reader.c:944
+msgid "The current position does not hold a string type"
+msgstr "Trenutni položaj ne sadrži vrstu niske"
--- /dev/null
+# Swedish translation for json-glib.
+# Copyright (C) 2012 Free Software Foundation, Inc.
+# This file is distributed under the same license as the json-glib package.
+# Daniel Nylander <po@danielnylander.se>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-glib\n"
+"POT-Creation-Date: 2012-01-22 00:32+0100\n"
+"PO-Revision-Date: 2012-01-22 00:38+0100\n"
+"Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
+"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../json-glib/json-gobject.c:934
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr ""
+
+#: ../json-glib/json-gvariant.c:539
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "Oväntad typ \"%s\" i JSON-nod"
+
+#: ../json-glib/json-gvariant.c:609
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr ""
+
+#: ../json-glib/json-gvariant.c:637
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr ""
+
+#: ../json-glib/json-gvariant.c:645
+msgid "Unexpected extra elements in JSON array"
+msgstr "Oväntade extra-element i JSON-array"
+
+#: ../json-glib/json-gvariant.c:924
+msgid "Invalid string value converting to GVariant"
+msgstr "Ogiltig strängvärdeskonvertering till GVariant"
+
+#: ../json-glib/json-gvariant.c:980
+msgid "A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr ""
+
+#: ../json-glib/json-gvariant.c:1236
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "GVariant-klassen \"%c\" stöds inte"
+
+#: ../json-glib/json-gvariant.c:1281
+msgid "Invalid GVariant signature"
+msgstr "Ogiltig GVariant-signatur"
+
+#: ../json-glib/json-gvariant.c:1326
+msgid "JSON data is empty"
+msgstr "JSON-data är tom"
+
+#: ../json-glib/json-parser.c:818
+#, c-format
+msgid "%s:%d: Parse error: %s"
+msgstr "%s:%d: Tolkningsfel: %s"
+
+#: ../json-glib/json-path.c:375
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr ""
+
+#: ../json-glib/json-path.c:384
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "Rotnod efterföljd av otillåtet tecken \"%c\""
+
+#: ../json-glib/json-path.c:490
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr ""
+
+#: ../json-glib/json-path.c:534
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr ""
+
+#: ../json-glib/json-path.c:587
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr ""
+
+#: ../json-glib/json-path.c:615
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr ""
+
+#: ../json-glib/json-reader.c:463
+#, c-format
+msgid "The current node is of type '%s', but an array or an object was expected."
+msgstr ""
+
+#: ../json-glib/json-reader.c:475
+#, c-format
+msgid "The index '%d' is greater than the size of the array at the current position."
+msgstr ""
+
+#: ../json-glib/json-reader.c:492
+#, c-format
+msgid "The index '%d' is greater than the size of the object at the current position."
+msgstr ""
+
+#: ../json-glib/json-reader.c:576
+#: ../json-glib/json-reader.c:729
+#: ../json-glib/json-reader.c:780
+#: ../json-glib/json-reader.c:818
+#: ../json-glib/json-reader.c:856
+#: ../json-glib/json-reader.c:901
+#: ../json-glib/json-reader.c:946
+#: ../json-glib/json-reader.c:991
+#: ../json-glib/json-reader.c:1034
+#: ../json-glib/json-reader.c:1060
+msgid "No node available at the current position"
+msgstr "Ingen nod tillgänglig på aktuell position"
+
+#: ../json-glib/json-reader.c:583
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "Aktuell position innehåller en \"%s\" och inte en array"
+
+#: ../json-glib/json-reader.c:646
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr ""
+
+#: ../json-glib/json-reader.c:653
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "Medlemmen \"%s\" är inte definierad i objektet på aktuell position."
+
+#: ../json-glib/json-reader.c:736
+#: ../json-glib/json-reader.c:787
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "Aktuell position innehåller en \"%s\" och inte ett objekt"
+
+#: ../json-glib/json-reader.c:827
+#: ../json-glib/json-reader.c:865
+#: ../json-glib/json-reader.c:910
+#: ../json-glib/json-reader.c:955
+#: ../json-glib/json-reader.c:1000
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "Aktuell position innehåller en \"%s\" och inte ett värde"
+
+#: ../json-glib/json-reader.c:873
+msgid "The current position does not hold an integer type"
+msgstr "Aktuell position innehåller inte en heltalstyp"
+
+#: ../json-glib/json-reader.c:918
+msgid "The current position does not hold a floating point type"
+msgstr "Aktuell position innehåller inte en flyttalstyp"
+
+#: ../json-glib/json-reader.c:963
+msgid "The current position does not hold a string type"
+msgstr "Aktuell position innehåller inte en strängtyp"
+
+#: ../json-glib/json-reader.c:1008
+msgid "The current position does not hold a boolean type"
+msgstr "Aktuell position innehåller inte en boolesk typ"
+
--- /dev/null
+# Telugu translation for json-glib.
+# Copyright (C) 2012 json-glib's COPYRIGHT HOLDER
+# Copyright (C) 2012, Swecha Localisation Team <localization@swecha.net>
+# This file is distributed under the same license as the json-glib package.
+#
+# sasi <sasi@swecha.net>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2012-09-27 05:54+0000\n"
+"PO-Revision-Date: 2012-10-09 16:48+0530\n"
+"Last-Translator: sasi <sasi@swecha.net>\n"
+"Language-Team: telugu <localization@swecha.net>\n"
+"Language: te\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+"X-Generator: Gtranslator 2.91.5\n"
+
+#: ../json-glib/json-gobject.c:934
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "ఒక JSON అంశంకు అవకాశం ఉంది, కానీ రూట్ నోడ్`% s' రకంగా ఉంటుంది "
+
+#: ../json-glib/json-gvariant.c:539
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "ఊహించని రకం '% s' JSON నోడ్ లో"
+
+#: ../json-glib/json-gvariant.c:609
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "ఒక క్రమానుగుణ శ్రేణి కోసం JSON శ్రేణిలో తప్పిన అంశాలు "
+
+#: ../json-glib/json-gvariant.c:637
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "GVariant tuple రకంలో ముగింపు చిహ్నం ')' లేదు"
+
+#: ../json-glib/json-gvariant.c:645
+msgid "Unexpected extra elements in JSON array"
+msgstr "JSON శ్రేణి లో ఊహించని అదనపు అంశాలు "
+
+#: ../json-glib/json-gvariant.c:924
+msgid "Invalid string value converting to GVariant"
+msgstr "GVariant మారిన చెల్లని స్ట్రింగ్ విలువ "
+
+#: ../json-glib/json-gvariant.c:980
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr "ఒక GVariant నిఘంటువు ఎంట్రీ సరిగ్గా ఒక సభ్యుడుగా ఉంటుందని ఒక JSON అంశం అంచనా "
+
+#: ../json-glib/json-gvariant.c:1236
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "GVariant తరగతి '%c'మద్దతు లేదు"
+
+#: ../json-glib/json-gvariant.c:1281
+msgid "Invalid GVariant signature"
+msgstr "చెల్లని GVariant సంతకం"
+
+#: ../json-glib/json-gvariant.c:1326
+msgid "JSON data is empty"
+msgstr "JSON డేటా ఖాళీగా ఉంది"
+
+#: ../json-glib/json-parser.c:818
+#, c-format
+msgid "%s:%d: Parse error: %s"
+msgstr "% s:% d: అన్వయ దోషం:% s"
+
+#: ../json-glib/json-path.c:375
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "కేవలం ఒక రూట్ నోడ్కు ఒక JSONPath వ్యక్తీకరణ లో అనుమతి ఉంది"
+
+#: ../json-glib/json-path.c:384
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "చెల్లని అక్షరం '%c' తర్వాత రూట్ నోడ్"
+
+#: ../json-glib/json-path.c:490
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "తప్పుడు ముక్క వ్యక్తీకరణ '%*s'"
+
+#: ../json-glib/json-path.c:534
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "చెల్లని వరు నిర్వచనం '%*s'"
+
+#: ../json-glib/json-path.c:587
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "చెల్లని ముక్క నిర్వచనం '%*s'"
+
+#: ../json-glib/json-path.c:615
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "చెల్లని వరు సూచిక నిర్వచనం '%*s'"
+
+#: ../json-glib/json-reader.c:463
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr "ప్రస్తుత నోడ్ రకం '%s' యొక్క, కానీ ఒక విన్యాసం లేదా ఒక వస్తువు భావించారు."
+
+#: ../json-glib/json-reader.c:475
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "ఇండెక్స్ '%d' ప్రస్తుత స్థితి వద్ద శ్రేణి యొక్క పరిమాణం కంటే ఎక్కువగా ఉంటుంది."
+
+#: ../json-glib/json-reader.c:492
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr "ఇండెక్స్ '%d' ప్రస్తుత స్థితి వద్ద వస్తువు యొక్క పరిమాణం కంటే ఎక్కువగా ఉంటుంది."
+
+#: ../json-glib/json-reader.c:576 ../json-glib/json-reader.c:729
+#: ../json-glib/json-reader.c:780 ../json-glib/json-reader.c:818
+#: ../json-glib/json-reader.c:856 ../json-glib/json-reader.c:894
+#: ../json-glib/json-reader.c:932 ../json-glib/json-reader.c:977
+#: ../json-glib/json-reader.c:1013 ../json-glib/json-reader.c:1039
+msgid "No node available at the current position"
+msgstr "ప్రస్తుత స్థానంలో అందుబాటులో లేదు నోడ్ "
+
+#: ../json-glib/json-reader.c:583
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "ప్రస్తుత స్థితి ఒక '%s'కలిగి ఉంది మరియు వరుస కాదు "
+
+#: ../json-glib/json-reader.c:646
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "ప్రస్తుత నోడ్ '%s' యొక్క రకం, కానీ ఒక వస్తువుని భావించారు."
+
+#: ../json-glib/json-reader.c:653
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "సభ్యుడు '%s', ప్రస్తుత స్థితి వద్ద అంశం వివరించబడలేదు."
+
+#: ../json-glib/json-reader.c:736 ../json-glib/json-reader.c:787
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "ప్రస్తుత స్థితి ఒక '%s' కలిగి ఉంది మరియు ఒక వస్తువు కాదు "
+
+#: ../json-glib/json-reader.c:827 ../json-glib/json-reader.c:865
+#: ../json-glib/json-reader.c:903 ../json-glib/json-reader.c:941
+#: ../json-glib/json-reader.c:986
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "ప్రస్తుత స్థితి ఒక '%s'కలిగి ఉంది మరియు ఒక విలువ కాదు "
+
+#: ../json-glib/json-reader.c:949
+msgid "The current position does not hold a string type"
+msgstr "ప్రస్తుత స్థితి పదాల రకం కలిగి లేదు"
--- /dev/null
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Victor Ibragimov <victor.ibragimov@gmail.com>, 2013.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Tajik Gnome\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2013-12-19 14:30+0000\n"
+"PO-Revision-Date: 2013-12-20 14:32+0500\n"
+"Last-Translator: Victor Ibragimov <victor.ibragimov@gmail.com>\n"
+"Language-Team: \n"
+"Language: tg\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.6.3\n"
+
+#: ../json-glib/json-glib-format.c:41
+msgid "Prettify output"
+msgstr "Ҳамворкунии барориш"
+
+#: ../json-glib/json-glib-format.c:42
+msgid "Indentation spaces"
+msgstr "Фазоҳои фосилагузорӣ"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:68 ../json-glib/json-glib-validate.c:61
+#, c-format
+msgid "%s: %s: error opening file: %s\n"
+msgstr "%s: %s: хатои кушодани файли: %s\n"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:80 ../json-glib/json-glib-validate.c:73
+#, c-format
+msgid "%s: %s: error parsing file: %s\n"
+msgstr "%s: %s: хатои таҷзияи файли: %s\n"
+
+#. Translators: the first %s is the program name, the
+#. * second one is the URI of the file.
+#.
+#: ../json-glib/json-glib-format.c:99
+#, c-format
+msgid "%s: %s: error writing to stdout"
+msgstr "%s: %s: хатои сабт ба stdout"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:119 ../json-glib/json-glib-validate.c:85
+#, c-format
+msgid "%s: %s: error closing: %s\n"
+msgstr "%s: %s: хатои пӯшидани: %s\n"
+
+#: ../json-glib/json-glib-format.c:148 ../json-glib/json-glib-validate.c:113
+msgid "FILE"
+msgstr "ФАЙЛ"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-format.c:151
+msgid "Format JSON files."
+msgstr "Формати файли JSON."
+
+#: ../json-glib/json-glib-format.c:152
+msgid "json-glib-format formats JSON resources."
+msgstr "Формати json-glib-format манбаҳои JSON-ро формат мекунад."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:169 ../json-glib/json-glib-validate.c:134
+#, c-format
+msgid "Error parsing commandline options: %s\n"
+msgstr "Хатои таҷзияи имконоти хати фармонӣ: %s\n"
+
+#: ../json-glib/json-glib-format.c:171 ../json-glib/json-glib-format.c:185
+#: ../json-glib/json-glib-validate.c:136 ../json-glib/json-glib-validate.c:150
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Барои иттилооти бештар фармони \"%s --help\"-ро иҷро намоед."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:183 ../json-glib/json-glib-validate.c:148
+#, c-format
+msgid "%s: missing files"
+msgstr "%s: дорои файлҳои намерасидагӣ мебошад"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-validate.c:116
+msgid "Validate JSON files."
+msgstr "Санҷидани эътибори файли JSON."
+
+#: ../json-glib/json-glib-validate.c:117
+msgid "json-glib-validate validates JSON data at the given URI."
+msgstr ""
+"Қимати json-glib-validate иттилооти JSON-ро дар суроғаи URI додашуда тафтиш "
+"мекунад."
+
+#: ../json-glib/json-gobject.c:917
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr ""
+"Дар ҳоли мунтазири объекти JSON, вале гиреҳи root дорои намуди `%s' мебошад"
+
+#: ../json-glib/json-gvariant.c:545
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "Навъи пешбининашудаи '%s' дар гиреҳи JSON"
+
+#: ../json-glib/json-gvariant.c:615
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "Унсурҳои ғоиб дар қатори JSON барои мутобиқат ба чандтогӣ"
+
+#: ../json-glib/json-gvariant.c:643
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "Аломати пӯшонидани ')' ғоиб дар навъи чандтогии GVariant"
+
+#: ../json-glib/json-gvariant.c:651
+msgid "Unexpected extra elements in JSON array"
+msgstr "Унсурҳои иловагии пешбининашуда дар қатори JSON"
+
+#: ../json-glib/json-gvariant.c:930
+msgid "Invalid string value converting to GVariant"
+msgstr "Қимати табдилдиҳии сатр ба GVariant нодуруст аст"
+
+#: ../json-glib/json-gvariant.c:986
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr ""
+"Вуруди луғати GVariant дар ҳоли мунтазири объекти JSON бо як рақам мебошад"
+
+#: ../json-glib/json-gvariant.c:1266
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "Синфи GVariant-и '%c' дастгирӣ намешавад"
+
+#: ../json-glib/json-gvariant.c:1314
+msgid "Invalid GVariant signature"
+msgstr "Имзои нодурусти GVariant"
+
+#: ../json-glib/json-gvariant.c:1362
+msgid "JSON data is empty"
+msgstr "Иттилооти JSON холӣ аст"
+
+#: ../json-glib/json-parser.c:817
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: Хатои таҷзия: %s"
+
+#: ../json-glib/json-parser.c:885
+msgid "JSON data must be UTF-8 encoded"
+msgstr "Иттилооти JSON бояд ба формати UTF-8 рамзгузорӣ шавад"
+
+#: ../json-glib/json-path.c:438
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "Танҳо як гиреҳи решагӣ дар ифодаи JSONPath иҷозат дода шудааст"
+
+#: ../json-glib/json-path.c:447
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "Гиреҳи решагӣ, ки бо аломати беэътибори '%c' пайгирӣ шуд"
+
+#: ../json-glib/json-path.c:487
+msgid "Missing member name or wildcard after . character"
+msgstr "Баъд аз аломати \".\" номи узв ё номи алоқаманд вуҷуд надорад"
+
+#: ../json-glib/json-path.c:561
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "Ифодаи бадшакл: '%*s'"
+
+#: ../json-glib/json-path.c:605
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "Таърифи маҷмӯи \"%*s\" беэътибор аст"
+
+#: ../json-glib/json-path.c:658
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "Таърифи нодуруст: '%*s'"
+
+#: ../json-glib/json-path.c:686
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "Таърифи индекси қатори \"%*s\" беэътибор аст"
+
+#: ../json-glib/json-path.c:705
+#, c-format
+msgid "Invalid first character '%c'"
+msgstr "Аломати аввалини нодуруст: '%c'"
+
+#: ../json-glib/json-reader.c:457
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr "Гиреҳи ҷорӣ аз навъи '%s' аст, вале қатор ё объект пешбинӣ шуда буд."
+
+#: ../json-glib/json-reader.c:469
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "Индекси '%d' калонтар аз андозаи қатор дар вазъияти ҷорӣ мебошад."
+
+#: ../json-glib/json-reader.c:486
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr "Индекси '%d' калонтар аз андозаи объект дар вазъияти ҷорӣ аст."
+
+#: ../json-glib/json-reader.c:570 ../json-glib/json-reader.c:723
+#: ../json-glib/json-reader.c:774 ../json-glib/json-reader.c:812
+#: ../json-glib/json-reader.c:850 ../json-glib/json-reader.c:888
+#: ../json-glib/json-reader.c:926 ../json-glib/json-reader.c:971
+#: ../json-glib/json-reader.c:1007 ../json-glib/json-reader.c:1033
+msgid "No node available at the current position"
+msgstr "Ҳеҷ гуна гиреҳ дар вазъияти ҷорӣ дастрас нест"
+
+#: ../json-glib/json-reader.c:577
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "Вазъияти ҷорӣ '%s'-ро нигаҳдорӣ мекунад, на қаторро"
+
+#: ../json-glib/json-reader.c:640
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "Гиреҳи ҷорӣ аз навъи '%s' аст, вале объект пешбинӣ шудааст."
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "Дар вазъияти ҷорӣ аъзои '%s' дар объект муайян нашудааст."
+
+#: ../json-glib/json-reader.c:730 ../json-glib/json-reader.c:781
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "Вазъияти ҷорӣ '%s'-ро нигаҳдорӣ мекунад, на объектро"
+
+#: ../json-glib/json-reader.c:821 ../json-glib/json-reader.c:859
+#: ../json-glib/json-reader.c:897 ../json-glib/json-reader.c:935
+#: ../json-glib/json-reader.c:980
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "Вазъияти ҷорӣ '%s'-ро нигаҳдорӣ мекунад, на қиматро"
+
+#: ../json-glib/json-reader.c:943
+msgid "The current position does not hold a string type"
+msgstr "Ҷойгиршавии ҷорӣ ягон намуди сатрро дар бар намегирад"
--- /dev/null
+# Turkish translation for json-glib.
+# Copyright (C) 2011 json-glib's COPYRIGHT HOLDER
+# This file is distributed under the same license as the json-glib package.
+#
+# Muhammet Kara <muhammet.k@gmail.com>, 2011.
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2011-11-15 08:44+0000\n"
+"PO-Revision-Date: 2011-11-16 12:18+0200\n"
+"Last-Translator: Muhammet Kara <muhammet.k@gmail.com>\n"
+"Language-Team: Turkish <gnome-turk@gnome.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: tr\n"
+"X-Generator: Lokalize 1.2\n"
+
+#: ../json-glib/json-gobject.c:934
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "Bir JSON nesnesi bekleniyor, ama kök düğümü `%s' türünde"
+
+#: ../json-glib/json-gvariant.c:539
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "JSON düğümünde beklenmeyen '%s' türü"
+
+#: ../json-glib/json-gvariant.c:609
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "JSON dizisinin bir demete uyması için gereken öğeler eksik"
+
+#: ../json-glib/json-gvariant.c:637
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "GVariant demeti türünde kapatma sembolü ')' eksik"
+
+#: ../json-glib/json-gvariant.c:645
+msgid "Unexpected extra elements in JSON array"
+msgstr "JSON dizisinde beklenmeyen ek öğeler"
+
+#: ../json-glib/json-gvariant.c:924
+msgid "Invalid string value converting to GVariant"
+msgstr "GVariant'a dönüştürmede geçersiz dizge değeri"
+
+#: ../json-glib/json-gvariant.c:980
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr ""
+"Bir GVariant sözlük girdisi, tam olarak bir üyesi olan JSON nesnesi bekler"
+
+#: ../json-glib/json-gvariant.c:1236
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "GVariant sınıfı '%c' desteklenmiyor"
+
+#: ../json-glib/json-gvariant.c:1281
+msgid "Invalid GVariant signature"
+msgstr "Geçersiz GVariant imzası"
+
+#: ../json-glib/json-gvariant.c:1326
+msgid "JSON data is empty"
+msgstr "JSON verisi boş"
+
+#: ../json-glib/json-parser.c:818
+#, c-format
+msgid "%s:%d: Parse error: %s"
+msgstr "%s:%d: Ayrıştırma hatası: %s"
+
+#: ../json-glib/json-path.c:375
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "JSONPath ifadesinde yalnızca bir kök düğümüne izin verilir"
+
+#: ../json-glib/json-path.c:384
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "Kök düğümünü izleyen '%c' karakteri geçersiz"
+
+#: ../json-glib/json-path.c:490
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "Kusurlu dilim ifadesi '%*s'"
+
+#: ../json-glib/json-path.c:534
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "Geçersiz küme tanımı '%*s'"
+
+#: ../json-glib/json-path.c:587
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "Geçersiz dilim tanımı '%*s'"
+
+#: ../json-glib/json-path.c:615
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "Geçersiz dizi indisi tanımı '%*s'"
+
+#: ../json-glib/json-reader.c:463
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr "Geçerli düğümün türü '%s', ama bir dizi ya da bir nesne bekleniyordu."
+
+#: ../json-glib/json-reader.c:475
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "'%d' indisi, geçerli konumdaki dizinin boyutundan daha büyük."
+
+#: ../json-glib/json-reader.c:492
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr "'%d' indisi, geçerli konumdaki nesnenin boyutundan daha büyük."
+
+#: ../json-glib/json-reader.c:576 ../json-glib/json-reader.c:729
+#: ../json-glib/json-reader.c:780 ../json-glib/json-reader.c:818
+#: ../json-glib/json-reader.c:856 ../json-glib/json-reader.c:901
+#: ../json-glib/json-reader.c:946 ../json-glib/json-reader.c:991
+#: ../json-glib/json-reader.c:1034 ../json-glib/json-reader.c:1060
+msgid "No node available at the current position"
+msgstr "Geçerli konumda kullanılabilir düğüm yok"
+
+#: ../json-glib/json-reader.c:583
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "Geçerli konum bir dizi değil '%s' bulunduruyor"
+
+#: ../json-glib/json-reader.c:646
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "Geçerli düğümün türü '%s', ama bir nesne bekleniyordu."
+
+#: ../json-glib/json-reader.c:653
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "'%s' üyesi, geçerli konumdaki nesnede tanımlı değil."
+
+#: ../json-glib/json-reader.c:736 ../json-glib/json-reader.c:787
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "Geçerli konum bir nesne değil '%s' bulunduruyor"
+
+#: ../json-glib/json-reader.c:827 ../json-glib/json-reader.c:865
+#: ../json-glib/json-reader.c:910 ../json-glib/json-reader.c:955
+#: ../json-glib/json-reader.c:1000
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "Geçerli konum bir değer değil '%s' bulunduruyor"
+
+#: ../json-glib/json-reader.c:873
+msgid "The current position does not hold an integer type"
+msgstr "Geçerli konum bir tamsayı türü bulundurmuyor"
+
+#: ../json-glib/json-reader.c:918
+msgid "The current position does not hold a floating point type"
+msgstr "Geçerli konum bir kayan noktalı tür bulundurmuyor"
+
+#: ../json-glib/json-reader.c:963
+msgid "The current position does not hold a string type"
+msgstr "Geçerli konum bir dizge türü bulundurmuyor"
+
+#: ../json-glib/json-reader.c:1008
+msgid "The current position does not hold a boolean type"
+msgstr "Geçerli konum bir mantıksal doğru/yanlış türü bulundurmuyor"
+
--- /dev/null
+# Uyghur translation for json-glib.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Gheyret Kenji <gheyret@gmail.com>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2013-01-20 02:49+0000\n"
+"PO-Revision-Date: 2013-01-26 09:43+0900\n"
+"Last-Translator: Gheyret Kenji <gheyret@gmail.com>\n"
+"Language-Team: Uyghur Computer Science Association <UKIJ@yahoogroups.com>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../json-glib/json-gobject.c:925
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "ئەسلى JSON نەڭى بولۇشقا تېگىشلىك ئىدى، بىراق غول تۈگۈننىڭ تىپى «%s» ئىكەن"
+
+#: ../json-glib/json-gvariant.c:539
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "ھازىر JSON تۈگۈننىڭ تىپى ‹%s› بولۇپ قېلىپتۇ"
+
+#: ../json-glib/json-gvariant.c:609
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr ""
+
+#: ../json-glib/json-gvariant.c:637
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr ""
+
+#: ../json-glib/json-gvariant.c:645
+msgid "Unexpected extra elements in JSON array"
+msgstr "ھازىر JSON تىزىقىدا ئارتۇقچە ئېلېمېنت بار ئىكەن"
+
+#: ../json-glib/json-gvariant.c:924
+msgid "Invalid string value converting to GVariant"
+msgstr "تېكىستنىڭ قىممىتىنى GVariant قا ئايلاندۇرغىلى بولمايدىكەن"
+
+#: ../json-glib/json-gvariant.c:980
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr "ئادەتتە GVariant لۇغەت ئېلېمېنتى چوقۇم بىرلا ئەزايى بار بولغان JSON نەڭى بولۇشى كېرەك"
+
+#: ../json-glib/json-gvariant.c:1236
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "GVariant تىپ ‹%c› نى قوللىمايدۇ"
+
+#: ../json-glib/json-gvariant.c:1281
+msgid "Invalid GVariant signature"
+msgstr "ئىناۋەتسىز GVariant ئىمزاسى"
+
+#: ../json-glib/json-gvariant.c:1326
+msgid "JSON data is empty"
+msgstr "JSON سانلىق-مەلۇماتى قۇرۇق"
+
+#: ../json-glib/json-parser.c:825
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: پارچىلاشتا خاتالىق كۆرۈلدى: %s"
+
+#: ../json-glib/json-path.c:375
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "ئادەتتە JSONPath ئىپادىسىدە پەقەت بىرلا غول ئېلېمېنتقا ئىجازەت بېرىلگەن"
+
+#: ../json-glib/json-path.c:384
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "پەقەت بىرلا غول ئېلېمېنت كەينىدە ‹%c› دېگەن ھەرپ بار ئىكەن"
+
+#: ../json-glib/json-path.c:490
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "بولمىغۇر كەسمە ئىپادىسى ‹%*s›"
+
+#: ../json-glib/json-path.c:534
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "توپلام ئېنىقلىمىسى ئىناۋەتسىز ‹%*s›"
+
+#: ../json-glib/json-path.c:587
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "كەسمە(slice) ئېنىقلىمىسى ئىناۋەتسىز ‹%*s›"
+
+#: ../json-glib/json-path.c:615
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "تىزىق ئىندېكس ئېنىقلىمىسى ئىناۋەتسىز ‹%*s›"
+
+#: ../json-glib/json-reader.c:464
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr "نۆۋەتتىكى تۈگۈننىڭ تىپى ‹%s›، بىراق بۇ يەرگە تىزىق ياكى بىر نەڭ كەلسە بولاتتى"
+
+#: ../json-glib/json-reader.c:476
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "ئىندېكس ‹%d› ، نۆۋەتتىكى ئورۇندىكى تىزىقنىڭ چوڭلۇقىدىن چوڭ."
+
+#: ../json-glib/json-reader.c:493
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr "ئىندېكس ‹%d› ، نۆۋەتتىكى ئورۇندىكى نەڭنىڭ چوڭلۇقىدىن چوڭ."
+
+#: ../json-glib/json-reader.c:577 ../json-glib/json-reader.c:730
+#: ../json-glib/json-reader.c:781 ../json-glib/json-reader.c:819
+#: ../json-glib/json-reader.c:857 ../json-glib/json-reader.c:895
+#: ../json-glib/json-reader.c:933 ../json-glib/json-reader.c:978
+#: ../json-glib/json-reader.c:1014 ../json-glib/json-reader.c:1040
+msgid "No node available at the current position"
+msgstr "نۆۋەتتىكى ئورۇندا تۈگۈن يوق"
+
+#: ../json-glib/json-reader.c:584
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "نۆۋەتتىكى ئورۇندىكىسى ‹%s› بولۇپ، تىزىق ئەمەس"
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "نۆۋەتتىكى ئورۇندىكى تۈگۈننىڭ تىپى ‹%s›، بىراق نەڭ كەلسە بولاتتى."
+
+#: ../json-glib/json-reader.c:654
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "نۆۋەتتىكى ئورۇندىكى نەڭدە ‹%s› دېگەن ئەزا ئېنىقلانمىغان."
+
+#: ../json-glib/json-reader.c:737 ../json-glib/json-reader.c:788
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "نۆۋەتتىكى ئورۇندىكىسى ‹%s› بولۇپ، نەڭ ئەمەس"
+
+#: ../json-glib/json-reader.c:828 ../json-glib/json-reader.c:866
+#: ../json-glib/json-reader.c:904 ../json-glib/json-reader.c:942
+#: ../json-glib/json-reader.c:987
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "نۆۋەتتىكى ئورۇندىكىسى ‹%s› بولۇپ، قىممەت ئەمەس"
+
+#: ../json-glib/json-reader.c:950
+msgid "The current position does not hold a string type"
+msgstr "نۆۋەتتىكى ئورۇندىكىسىنىڭ تىپى تېكىست ئەمەس"
--- /dev/null
+# Ukrainian translation for json-glib.
+# Copyright (C) 2012 json-glib's COPYRIGHT HOLDER
+# This file is distributed under the same license as the json-glib package.
+# Daniel <ted.korostiled@gmail.com>, 2012.
+# Mykola Tkach <Stuartlittle1970@gmail.com>, 2014.
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2014-03-30 09:48+0000\n"
+"PO-Revision-Date: 2014-03-30 13:22+0300\n"
+"Last-Translator: Mykola Tkach <Stuartlittle1970@gmail.com>\n"
+"Language-Team: translation@linux.org.ua\n"
+"Language: uk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Virtaal 0.7.0\n"
+"X-Project-Style: gnome\n"
+
+#: ../json-glib/json-glib-format.c:50
+msgid "Prettify output"
+msgstr "Виводити у зручночитаній формі"
+
+#: ../json-glib/json-glib-format.c:51
+msgid "Indentation spaces"
+msgstr "Відступи"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:77
+#: ../json-glib/json-glib-validate.c:63
+#, c-format
+msgid "%s: %s: error opening file: %s\n"
+msgstr "%s: %s: не вдалося відкрити файл: %s\n"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:89
+#: ../json-glib/json-glib-validate.c:75
+#, c-format
+msgid "%s: %s: error parsing file: %s\n"
+msgstr "%s: %s: не вдалося розібрати файл: %s\n"
+
+#. Translators: the first %s is the program name, the
+#. * second one is the URI of the file.
+#.
+#: ../json-glib/json-glib-format.c:108
+#, c-format
+msgid "%s: %s: error writing to stdout"
+msgstr "%s: %s: не вдалося записати у стандартний вивід"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:128
+#: ../json-glib/json-glib-validate.c:87
+#, c-format
+msgid "%s: %s: error closing: %s\n"
+msgstr "%s: %s: не вдалося закрити: %s\n"
+
+#: ../json-glib/json-glib-format.c:157
+#: ../json-glib/json-glib-validate.c:115
+msgid "FILE"
+msgstr "ФАЙЛ"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-format.c:160
+msgid "Format JSON files."
+msgstr "Форматування файлів JSON."
+
+#: ../json-glib/json-glib-format.c:161
+msgid "json-glib-format formats JSON resources."
+msgstr "json-glib-format форматує ресурси JSON."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:178
+#: ../json-glib/json-glib-validate.c:136
+#, c-format
+msgid "Error parsing commandline options: %s\n"
+msgstr "Не вдалося розібрати параметри командного рядка: %s\n"
+
+#: ../json-glib/json-glib-format.c:180
+#: ../json-glib/json-glib-format.c:194
+#: ../json-glib/json-glib-validate.c:138
+#: ../json-glib/json-glib-validate.c:152
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Використовуйте «%s --help» для отримання детальної інформації."
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:192
+#: ../json-glib/json-glib-validate.c:150
+#, c-format
+msgid "%s: missing files"
+msgstr "%s: відсутні файли"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-validate.c:118
+msgid "Validate JSON files."
+msgstr "Перевірка коректності файлів JSON."
+
+#: ../json-glib/json-glib-validate.c:119
+msgid "json-glib-validate validates JSON data at the given URI."
+msgstr "json-glib-validate перевіряє коректність даних JSON за вказаним URI."
+
+#: ../json-glib/json-gobject.c:915
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "Очікування об'єкту JSON, але кореневий вузол є типом «%s»"
+
+#: ../json-glib/json-gvariant.c:523
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "Очікуваний тип «%s» у вузлі JSON"
+
+#: ../json-glib/json-gvariant.c:593
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "Бракує елементів у масиві JSON для підтвердження кортежу"
+
+#: ../json-glib/json-gvariant.c:621
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "Бракує символу закривання «)» у типі кортежу GVariant"
+
+#: ../json-glib/json-gvariant.c:629
+msgid "Unexpected extra elements in JSON array"
+msgstr "Неочікуваний додатковий елемент у масиві JSON"
+
+#: ../json-glib/json-gvariant.c:908
+msgid "Invalid string value converting to GVariant"
+msgstr "Неправильне перетворення значення рядка в GVariant"
+
+#: ../json-glib/json-gvariant.c:964
+msgid "A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr "Запис словника GVariant очікує об'єкт JSON з лише однією частиною"
+
+#: ../json-glib/json-gvariant.c:1244
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "Клас GVariant «%c» не підтримується"
+
+#: ../json-glib/json-gvariant.c:1292
+msgid "Invalid GVariant signature"
+msgstr "Неправильний підпис GVariant"
+
+#: ../json-glib/json-gvariant.c:1340
+msgid "JSON data is empty"
+msgstr "Дані JSON порожні"
+
+#: ../json-glib/json-parser.c:815
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d: помилка розбору: %s"
+
+#: ../json-glib/json-parser.c:883
+msgid "JSON data must be UTF-8 encoded"
+msgstr "Дані JSON повинні бути у кодуванні UTF-8"
+
+#: ../json-glib/json-path.c:388
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "Дозволено тільки один кореневий вузол у виразі JSONPath"
+
+#: ../json-glib/json-path.c:397
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "Кореневий вузол супроводжується неправильним символом «%c»"
+
+#: ../json-glib/json-path.c:437
+msgid "Missing member name or wildcard after . character"
+msgstr "Відсутнє ім’я члена або шаблон після символу «.»"
+
+#: ../json-glib/json-path.c:511
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "Неправильний вираз шару «%*s»"
+
+#: ../json-glib/json-path.c:555
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "Неправильне визначення набору «%*s»"
+
+#: ../json-glib/json-path.c:608
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "Неправильне визначення шару «%*s»"
+
+#: ../json-glib/json-path.c:636
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "Неправильне визначення покажчика масиву «%*s»"
+
+#: ../json-glib/json-path.c:655
+#, c-format
+msgid "Invalid first character '%c'"
+msgstr "Неправильний перший символ «%c»"
+
+#: ../json-glib/json-reader.c:456
+#, c-format
+msgid "The current node is of type '%s', but an array or an object was expected."
+msgstr "Поточний вузол має тип «%s», однак масив або об'єкт не були очікуваними."
+
+#: ../json-glib/json-reader.c:468
+#, c-format
+msgid "The index '%d' is greater than the size of the array at the current position."
+msgstr "Покажчик «%d» більший за розмір масиву на поточній позиції."
+
+#: ../json-glib/json-reader.c:485
+#, c-format
+msgid "The index '%d' is greater than the size of the object at the current position."
+msgstr "Покажчик «%d» більший за розмір об'єкту на поточній позиції."
+
+#: ../json-glib/json-reader.c:570
+#: ../json-glib/json-reader.c:724
+#: ../json-glib/json-reader.c:775
+#: ../json-glib/json-reader.c:813
+#: ../json-glib/json-reader.c:851
+#: ../json-glib/json-reader.c:889
+#: ../json-glib/json-reader.c:927
+#: ../json-glib/json-reader.c:972
+#: ../json-glib/json-reader.c:1008
+#: ../json-glib/json-reader.c:1034
+msgid "No node available at the current position"
+msgstr "Немає жодного доступного вузла на поточній позиції"
+
+#: ../json-glib/json-reader.c:577
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "Поточна позиція утримує «%s» і не є масивом"
+
+#: ../json-glib/json-reader.c:640
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "Поточний вузол має тип «%s», однак об'єкт не був очікуваними."
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "Частину «%s» не визначено в об'єкті на поточні позиції."
+
+#: ../json-glib/json-reader.c:731
+#: ../json-glib/json-reader.c:782
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "Поточна позиція утримує «%s» і не є об'єктом"
+
+#: ../json-glib/json-reader.c:822
+#: ../json-glib/json-reader.c:860
+#: ../json-glib/json-reader.c:898
+#: ../json-glib/json-reader.c:936
+#: ../json-glib/json-reader.c:981
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "Поточна позиція утримує «%s» і не є значенням"
+
+#: ../json-glib/json-reader.c:944
+msgid "The current position does not hold a string type"
+msgstr "Поточна позиція не утримує тип рядка"
+
--- /dev/null
+# Vietnamese translation for json-glib.
+# Copyright (C) 2012 json-glib's COPYRIGHT HOLDER
+# This file is distributed under the same license as the json-glib package.
+# Nguyễn Thái Ngọc Duy <pclouds@gmail.com>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2012-06-21 21:05+0000\n"
+"PO-Revision-Date: 2012-06-30 10:26+0700\n"
+"Last-Translator: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n"
+"Language-Team: Vietnamese <gnomevi-list@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: ../json-glib/json-gobject.c:934
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "Cần đối tượng JSON nhưng nút gốc thuộc loại '%s'"
+
+#: ../json-glib/json-gvariant.c:539
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "Cần loại '%s' trong nút JSON"
+
+#: ../json-glib/json-gvariant.c:609
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "Thiếu phần tử trong mảng JSON để tuân thủ ống"
+
+#: ../json-glib/json-gvariant.c:637
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "Thiếu dấu đóng ')' trong loại ống GVariant"
+
+#: ../json-glib/json-gvariant.c:645
+msgid "Unexpected extra elements in JSON array"
+msgstr "Cần phần tử bổ sung trong mảng JSON"
+
+#: ../json-glib/json-gvariant.c:924
+msgid "Invalid string value converting to GVariant"
+msgstr "Giá trị chuỗi chuyển đổi sang GVariant không hợp lệ"
+
+#: ../json-glib/json-gvariant.c:980
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr "Mục từ điển GVariant cần đối tượng JSON với duy nhất một phần tử"
+
+#: ../json-glib/json-gvariant.c:1236
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "Không hỗ trợ lớp GVariant '%c'"
+
+#: ../json-glib/json-gvariant.c:1281
+msgid "Invalid GVariant signature"
+msgstr "Chữ ký GVariant không hợp lệ"
+
+#: ../json-glib/json-gvariant.c:1326
+msgid "JSON data is empty"
+msgstr "Dữ liệu JSON rỗng"
+
+#: ../json-glib/json-parser.c:818
+#, c-format
+msgid "%s:%d: Parse error: %s"
+msgstr "%s:%d: Lỗi phân tích: %s"
+
+#: ../json-glib/json-path.c:375
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "Chỉ cho phép duy nhất một nút gốc trong biểu thức JSONPath"
+
+#: ../json-glib/json-path.c:384
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "Ký tự không hợp lệ '%c' theo sau nút gốc"
+
+#: ../json-glib/json-path.c:490
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "Biểu thức chặt '%*s' hư"
+
+#: ../json-glib/json-path.c:534
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "Định nghĩa tập '%*s' không hợp lệ"
+
+#: ../json-glib/json-path.c:587
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "Định nghĩa chặt '%*s' không hợp lệ"
+
+#: ../json-glib/json-path.c:615
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "Định nghĩa chỉ mục mảng '%*s' không hợp lệ"
+
+#: ../json-glib/json-reader.c:463
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr "Nút hiện thời loại '%s', nhưng đang cần mảng hoặc một đối tượng."
+
+#: ../json-glib/json-reader.c:475
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "Chỉ mục '%d' lớn hơn kích thước mảng tại vị trí hiện thời."
+
+#: ../json-glib/json-reader.c:492
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr "Chỉ mục '%d' lớn hơn kích thước đối tượng tại vị trí hiện thời."
+
+#: ../json-glib/json-reader.c:576 ../json-glib/json-reader.c:729
+#: ../json-glib/json-reader.c:780 ../json-glib/json-reader.c:818
+#: ../json-glib/json-reader.c:856 ../json-glib/json-reader.c:901
+#: ../json-glib/json-reader.c:946 ../json-glib/json-reader.c:991
+#: ../json-glib/json-reader.c:1034 ../json-glib/json-reader.c:1060
+msgid "No node available at the current position"
+msgstr "Không có nút ở vị trí hiện thời."
+
+#: ../json-glib/json-reader.c:583
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr ""
+
+#: ../json-glib/json-reader.c:646
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "Nút hiện thời thuộc loại '%s', nhưng đang cần đối tượng."
+
+#: ../json-glib/json-reader.c:653
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "Chưa định nghĩa thành viên '%s' trong đối tượng tại vị trí hiện thời."
+
+#: ../json-glib/json-reader.c:736 ../json-glib/json-reader.c:787
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "Vị trí hiện thời chứa '%s', không phải đối tượng"
+
+#: ../json-glib/json-reader.c:827 ../json-glib/json-reader.c:865
+#: ../json-glib/json-reader.c:910 ../json-glib/json-reader.c:955
+#: ../json-glib/json-reader.c:1000
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "Vị trí hiện thời chứa '%s', không phải giá trị"
+
+#: ../json-glib/json-reader.c:873
+msgid "The current position does not hold an integer type"
+msgstr "Vị trí hiện thời không phải kiểu số nguyên"
+
+#: ../json-glib/json-reader.c:918
+msgid "The current position does not hold a floating point type"
+msgstr "Vị trí hiện thời không phải kiểu số thực"
+
+#: ../json-glib/json-reader.c:963
+msgid "The current position does not hold a string type"
+msgstr "Vị trí hiện thời không phải kiểu chuỗi"
+
+#: ../json-glib/json-reader.c:1008
+msgid "The current position does not hold a boolean type"
+msgstr "Vị trí hiện thời không phải kiểu luận lý"
--- /dev/null
+# Chinese (China) translation for json-glib ui.
+# Copyright (C) 2012 json-glib's authors and contributors.
+# This file is distributed under the same license as the json-glib package.
+#
+# Cheng Lu <chenglu1990@gmail.com>, 2012.
+# Wylmer Wang <wantinghard@gmail.com>, 2012.
+# Sphinx Jiang <yishanj13@gmail.com>, 2014.
+
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2014-02-20 10:20+0000\n"
+"PO-Revision-Date: 2014-02-22 09:27+0800\n"
+"Last-Translator: Sphinx Jiang <yishanj13@gmail.com>\n"
+"Language-Team: Chinese Simplified <i18n-zh@googlegroups.com>\n"
+"Language: zh_CN\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Lokalize 1.5\n"
+
+#: ../json-glib/json-glib-format.c:50
+msgid "Prettify output"
+msgstr "美化输出"
+
+#: ../json-glib/json-glib-format.c:51
+msgid "Indentation spaces"
+msgstr "缩进空格"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:77 ../json-glib/json-glib-validate.c:63
+#, c-format
+msgid "%s: %s: error opening file: %s\n"
+msgstr "%s: %s:打开文件出错:%s\n"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:89 ../json-glib/json-glib-validate.c:75
+#, c-format
+msgid "%s: %s: error parsing file: %s\n"
+msgstr "%s: %s:解析文件出错: %s\n"
+
+#. Translators: the first %s is the program name, the
+#. * second one is the URI of the file.
+#.
+#: ../json-glib/json-glib-format.c:108
+#, c-format
+msgid "%s: %s: error writing to stdout"
+msgstr "%s: %s:写到标准输出出错"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:128 ../json-glib/json-glib-validate.c:87
+#, c-format
+msgid "%s: %s: error closing: %s\n"
+msgstr "%s: %s:关闭出错: %s\n"
+
+#: ../json-glib/json-glib-format.c:157 ../json-glib/json-glib-validate.c:115
+msgid "FILE"
+msgstr "文件"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-format.c:160
+msgid "Format JSON files."
+msgstr "格式化 JSON 文件。"
+
+#: ../json-glib/json-glib-format.c:161
+msgid "json-glib-format formats JSON resources."
+msgstr "json-glib-format 可以格式化 JSON 资源。"
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:178 ../json-glib/json-glib-validate.c:136
+#, c-format
+msgid "Error parsing commandline options: %s\n"
+msgstr "解析命令行选项出错:%s\n"
+
+#: ../json-glib/json-glib-format.c:180 ../json-glib/json-glib-format.c:194
+#: ../json-glib/json-glib-validate.c:138 ../json-glib/json-glib-validate.c:152
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "请运行“%s --help”了解更多信息。"
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:192 ../json-glib/json-glib-validate.c:150
+#, c-format
+msgid "%s: missing files"
+msgstr "%s:缺少文件"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-validate.c:118
+msgid "Validate JSON files."
+msgstr "验证 JSON 文件"
+
+#: ../json-glib/json-glib-validate.c:119
+msgid "json-glib-validate validates JSON data at the given URI."
+msgstr "json-glib-validate 验证给定 URI 的 JSON 数据。"
+
+#: ../json-glib/json-gobject.c:917
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "期望一个 JSON 对象,但根节点类型是“%s”"
+
+#: ../json-glib/json-gvariant.c:545
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "JSON 节点中存在异常的类型“%s”"
+
+#: ../json-glib/json-gvariant.c:615
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "在 JSON 数组中缺少用来构成 tuple(元组) 的元素"
+
+#: ../json-glib/json-gvariant.c:643
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "在 GVariant 元组类型中缺少闭合符号“)”"
+
+#: ../json-glib/json-gvariant.c:651
+msgid "Unexpected extra elements in JSON array"
+msgstr "在 JSON 数组中存在意外的其他元素"
+
+#: ../json-glib/json-gvariant.c:930
+msgid "Invalid string value converting to GVariant"
+msgstr "字符串值到 GVariant 的转换无效"
+
+#: ../json-glib/json-gvariant.c:986
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr "GVariant 字典记录期望仅有一个成员的 JSON 对象"
+
+#: ../json-glib/json-gvariant.c:1266
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "不支持的 GVariant 类“%c”"
+
+#: ../json-glib/json-gvariant.c:1314
+msgid "Invalid GVariant signature"
+msgstr "无效的 GVariant 签名"
+
+#: ../json-glib/json-gvariant.c:1362
+msgid "JSON data is empty"
+msgstr "JSON 数据为空"
+
+#: ../json-glib/json-parser.c:817
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d:解析错误:%s"
+
+#: ../json-glib/json-parser.c:885
+msgid "JSON data must be UTF-8 encoded"
+msgstr "JSON 数据必须是 UTF-8 编码"
+
+#: ../json-glib/json-path.c:438
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "JSONPath 表达式中只允许有一个根节点"
+
+#: ../json-glib/json-path.c:447
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "根节点之后跟随了无效的字符“%c”"
+
+#: ../json-glib/json-path.c:487
+msgid "Missing member name or wildcard after . character"
+msgstr "在字符 . 后面缺少成员名或通配符"
+
+#: ../json-glib/json-path.c:561
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "有错误的 slice 表达式“%*s”"
+
+#: ../json-glib/json-path.c:605
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "无效的 set 定义“%*s”"
+
+#: ../json-glib/json-path.c:658
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "无效的 slice 定义“%*s”"
+
+#: ../json-glib/json-path.c:686
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "无效的数组索引定义“%*s”"
+
+#: ../json-glib/json-path.c:705
+#, c-format
+msgid "Invalid first character '%c'"
+msgstr "无效的首字符“%c”"
+
+#: ../json-glib/json-reader.c:463
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr "当前节点的类型是“%s”,应为数组或对象。"
+
+#: ../json-glib/json-reader.c:475
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "索引“%d”大于当前位置数组的大小。"
+
+#: ../json-glib/json-reader.c:492
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr "索引“%d”大于当前位置对象的大小。"
+
+#: ../json-glib/json-reader.c:577 ../json-glib/json-reader.c:731
+#: ../json-glib/json-reader.c:782 ../json-glib/json-reader.c:820
+#: ../json-glib/json-reader.c:858 ../json-glib/json-reader.c:896
+#: ../json-glib/json-reader.c:934 ../json-glib/json-reader.c:979
+#: ../json-glib/json-reader.c:1015 ../json-glib/json-reader.c:1041
+msgid "No node available at the current position"
+msgstr "当前位置无节点可用"
+
+#: ../json-glib/json-reader.c:584
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "当前位置是一个“%s”,而不是一个数组"
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "当前节点的类型是“%s”,但应为对象。"
+
+#: ../json-glib/json-reader.c:654
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "成员“%s”没有在当前位置的对象中定义。"
+
+#: ../json-glib/json-reader.c:738 ../json-glib/json-reader.c:789
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "当前位置是一个“%s”,而不是一个对象"
+
+#: ../json-glib/json-reader.c:829 ../json-glib/json-reader.c:867
+#: ../json-glib/json-reader.c:905 ../json-glib/json-reader.c:943
+#: ../json-glib/json-reader.c:988
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "当前位置是一个“%s”,不是一个值"
+
+#: ../json-glib/json-reader.c:951
+msgid "The current position does not hold a string type"
+msgstr "当前位置不是一个字符串类型"
+
+#~ msgid "The current position does not hold an integer type"
+#~ msgstr "当前位置不是一个整数类型"
+
+#~ msgid "The current position does not hold a floating point type"
+#~ msgstr "当前位置不是一个浮点数类型"
+
+#~ msgid "The current position does not hold a boolean type"
+#~ msgstr "当前位置不是一个布尔(boolean)类型"
--- /dev/null
+# Chinese (Hong Kong) translation for json-glib.
+# Copyright (C) 2012 json-glib's COPYRIGHT HOLDER
+# This file is distributed under the same license as the json-glib package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2013-12-19 14:30+0000\n"
+"PO-Revision-Date: 2014-02-02 20:40+0800\n"
+"Last-Translator: Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>\n"
+"Language-Team: Chinese (Hong Kong) <community@linuxhall.org>\n"
+"Language: zh_TW\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.6.3\n"
+
+#: ../json-glib/json-glib-format.c:41
+msgid "Prettify output"
+msgstr "Prettify 輸出"
+
+#: ../json-glib/json-glib-format.c:42
+msgid "Indentation spaces"
+msgstr "縮排空間"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:68 ../json-glib/json-glib-validate.c:61
+#, c-format
+msgid "%s: %s: error opening file: %s\n"
+msgstr "%s:%s:開啟檔案時發生錯誤:%s\n"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:80 ../json-glib/json-glib-validate.c:73
+#, c-format
+msgid "%s: %s: error parsing file: %s\n"
+msgstr "%s:%s:分析檔案時發生錯誤:%s\n"
+
+#. Translators: the first %s is the program name, the
+#. * second one is the URI of the file.
+#.
+#: ../json-glib/json-glib-format.c:99
+#, c-format
+msgid "%s: %s: error writing to stdout"
+msgstr "%s:%s:寫入標準輸出時發生錯誤"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:119 ../json-glib/json-glib-validate.c:85
+#, c-format
+msgid "%s: %s: error closing: %s\n"
+msgstr "%s:%s:關閉時發生錯誤:%s\n"
+
+#: ../json-glib/json-glib-format.c:148 ../json-glib/json-glib-validate.c:113
+msgid "FILE"
+msgstr "檔案"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-format.c:151
+msgid "Format JSON files."
+msgstr "格式化 JSON 檔案。"
+
+#: ../json-glib/json-glib-format.c:152
+msgid "json-glib-format formats JSON resources."
+msgstr "json-glib-format 格式化 JSON 資源。"
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:169 ../json-glib/json-glib-validate.c:134
+#, c-format
+msgid "Error parsing commandline options: %s\n"
+msgstr "分析命令列選項時發生錯誤:%s\n"
+
+#: ../json-glib/json-glib-format.c:171 ../json-glib/json-glib-format.c:185
+#: ../json-glib/json-glib-validate.c:136 ../json-glib/json-glib-validate.c:150
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "嘗試「%s --help」以獲得更多資訊。"
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:183 ../json-glib/json-glib-validate.c:148
+#, c-format
+msgid "%s: missing files"
+msgstr "%s:缺少檔案"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-validate.c:116
+msgid "Validate JSON files."
+msgstr "驗證 JSON 檔案。"
+
+#: ../json-glib/json-glib-validate.c:117
+msgid "json-glib-validate validates JSON data at the given URI."
+msgstr "json-glib-validate 驗證指定 URI 的 JSON 資料。"
+
+#: ../json-glib/json-gobject.c:917
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "預期是 JSON 物件,但根節點卻是類型「%s」"
+
+#: ../json-glib/json-gvariant.c:545
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "JSON 節點中未預期的類型「%s」"
+
+#: ../json-glib/json-gvariant.c:615
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "在 JSON 陣列中缺少確認變數值組"
+
+#: ../json-glib/json-gvariant.c:643
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "在 GVariant 變數值組類型中缺少關閉符號 ')'"
+
+#: ../json-glib/json-gvariant.c:651
+msgid "Unexpected extra elements in JSON array"
+msgstr "JSON 陣列中有未預期的額外元素"
+
+#: ../json-glib/json-gvariant.c:930
+msgid "Invalid string value converting to GVariant"
+msgstr "無效的字串數值轉換到 GVariant"
+
+#: ../json-glib/json-gvariant.c:986
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr "GVariant 字典項目預期 JSON 物件只能有一個成員"
+
+#: ../json-glib/json-gvariant.c:1266
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "GVariant 類別「%c」不支援"
+
+#: ../json-glib/json-gvariant.c:1314
+msgid "Invalid GVariant signature"
+msgstr "無效的 GVariant 簽署"
+
+#: ../json-glib/json-gvariant.c:1362
+msgid "JSON data is empty"
+msgstr "JSON 資料是空的"
+
+#: ../json-glib/json-parser.c:817
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d:解析錯誤:%s"
+
+#: ../json-glib/json-parser.c:885
+msgid "JSON data must be UTF-8 encoded"
+msgstr "JSON 資料必須以 UTF-8 編碼"
+
+#: ../json-glib/json-path.c:438
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "在 JSONPath 表示式中不允許一個根節點"
+
+#: ../json-glib/json-path.c:447
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "根節點跟隨在無效的字符「%c」後"
+
+#: ../json-glib/json-path.c:487
+msgid "Missing member name or wildcard after . character"
+msgstr "在 . 字符後缺少成員名稱或萬用字符"
+
+#: ../json-glib/json-path.c:561
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "格式不良的片段表示式「%*s」"
+
+#: ../json-glib/json-path.c:605
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "無效的組定義「%*s」"
+
+#: ../json-glib/json-path.c:658
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "無效的片段定義「%*s」"
+
+#: ../json-glib/json-path.c:686
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "無效的陣列索引定義「%*s」"
+
+#: ../json-glib/json-path.c:705
+#, c-format
+msgid "Invalid first character '%c'"
+msgstr "無效的第一個字符「%c」"
+
+#: ../json-glib/json-reader.c:457
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr "目前的節點類型是「%s」,但預期應為陣列或物件。"
+
+#: ../json-glib/json-reader.c:469
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "索引「%d」大於目前位置的陣列大小。"
+
+#: ../json-glib/json-reader.c:486
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr "索引「%d」大於目前位置的物件大小。"
+
+#: ../json-glib/json-reader.c:570 ../json-glib/json-reader.c:723
+#: ../json-glib/json-reader.c:774 ../json-glib/json-reader.c:812
+#: ../json-glib/json-reader.c:850 ../json-glib/json-reader.c:888
+#: ../json-glib/json-reader.c:926 ../json-glib/json-reader.c:971
+#: ../json-glib/json-reader.c:1007 ../json-glib/json-reader.c:1033
+msgid "No node available at the current position"
+msgstr "目前的位置沒有可用的節點"
+
+#: ../json-glib/json-reader.c:577
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "目前的位置持有一個「%s」,並非陣列"
+
+#: ../json-glib/json-reader.c:640
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "目前的節點類型是「%s」,但預期應為物件。"
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "成員「%s」並未在目前的位置的物件中定義。"
+
+#: ../json-glib/json-reader.c:730 ../json-glib/json-reader.c:781
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "目前的位置持有一個「%s」,並非物件"
+
+#: ../json-glib/json-reader.c:821 ../json-glib/json-reader.c:859
+#: ../json-glib/json-reader.c:897 ../json-glib/json-reader.c:935
+#: ../json-glib/json-reader.c:980
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "目前的位置持有一個「%s」,並非數值"
+
+#: ../json-glib/json-reader.c:943
+msgid "The current position does not hold a string type"
+msgstr "目前的位置並未持有字串類型"
+
+#~ msgid "The current position does not hold an integer type"
+#~ msgstr "目前的位置並未持有整數類型"
+
+#~ msgid "The current position does not hold a floating point type"
+#~ msgstr "目前的位置並未持有浮點數類型"
+
+#~ msgid "The current position does not hold a boolean type"
+#~ msgstr "目前的位置並未持有布林類型"
--- /dev/null
+# Chinese (Taiwan) translation for json-glib.
+# Copyright (C) 2012 json-glib's COPYRIGHT HOLDER
+# This file is distributed under the same license as the json-glib package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: json-glib master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=json-"
+"glib&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2013-12-19 14:30+0000\n"
+"PO-Revision-Date: 2014-02-01 19:05+0800\n"
+"Last-Translator: Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>\n"
+"Language-Team: Chinese (Taiwan) <chinese-l10n@googlegroups.com>\n"
+"Language: zh_TW\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.6.3\n"
+
+#: ../json-glib/json-glib-format.c:41
+msgid "Prettify output"
+msgstr "Prettify 輸出"
+
+#: ../json-glib/json-glib-format.c:42
+msgid "Indentation spaces"
+msgstr "縮排空間"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:68 ../json-glib/json-glib-validate.c:61
+#, c-format
+msgid "%s: %s: error opening file: %s\n"
+msgstr "%s:%s:開啟檔案時發生錯誤:%s\n"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:80 ../json-glib/json-glib-validate.c:73
+#, c-format
+msgid "%s: %s: error parsing file: %s\n"
+msgstr "%s:%s:分析檔案時發生錯誤:%s\n"
+
+#. Translators: the first %s is the program name, the
+#. * second one is the URI of the file.
+#.
+#: ../json-glib/json-glib-format.c:99
+#, c-format
+msgid "%s: %s: error writing to stdout"
+msgstr "%s:%s:寫入標準輸出時發生錯誤"
+
+#. Translators: the first %s is the program name, the second one
+#. * is the URI of the file, the third is the error message.
+#.
+#: ../json-glib/json-glib-format.c:119 ../json-glib/json-glib-validate.c:85
+#, c-format
+msgid "%s: %s: error closing: %s\n"
+msgstr "%s:%s:關閉時發生錯誤:%s\n"
+
+#: ../json-glib/json-glib-format.c:148 ../json-glib/json-glib-validate.c:113
+msgid "FILE"
+msgstr "檔案"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-format.c:151
+msgid "Format JSON files."
+msgstr "格式化 JSON 檔案。"
+
+#: ../json-glib/json-glib-format.c:152
+msgid "json-glib-format formats JSON resources."
+msgstr "json-glib-format 格式化 JSON 資源。"
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:169 ../json-glib/json-glib-validate.c:134
+#, c-format
+msgid "Error parsing commandline options: %s\n"
+msgstr "分析命令列選項時發生錯誤:%s\n"
+
+#: ../json-glib/json-glib-format.c:171 ../json-glib/json-glib-format.c:185
+#: ../json-glib/json-glib-validate.c:136 ../json-glib/json-glib-validate.c:150
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "嘗試「%s --help」以獲得更多資訊。"
+
+#. Translators: the %s is the program name. This error message
+#. * means the user is calling json-glib-validate without any
+#. * argument.
+#.
+#: ../json-glib/json-glib-format.c:183 ../json-glib/json-glib-validate.c:148
+#, c-format
+msgid "%s: missing files"
+msgstr "%s:缺少檔案"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: ../json-glib/json-glib-validate.c:116
+msgid "Validate JSON files."
+msgstr "驗證 JSON 檔案。"
+
+#: ../json-glib/json-glib-validate.c:117
+msgid "json-glib-validate validates JSON data at the given URI."
+msgstr "json-glib-validate 驗證指定 URI 的 JSON 資料。"
+
+#: ../json-glib/json-gobject.c:917
+#, c-format
+msgid "Expecting a JSON object, but the root node is of type `%s'"
+msgstr "預期是 JSON 物件,但根節點卻是類型「%s」"
+
+#: ../json-glib/json-gvariant.c:545
+#, c-format
+msgid "Unexpected type '%s' in JSON node"
+msgstr "JSON 節點中未預期的類型「%s」"
+
+#: ../json-glib/json-gvariant.c:615
+msgid "Missing elements in JSON array to conform to a tuple"
+msgstr "在 JSON 陣列中缺少確認變數值組"
+
+#: ../json-glib/json-gvariant.c:643
+msgid "Missing closing symbol ')' in the GVariant tuple type"
+msgstr "在 GVariant 變數值組類型中缺少關閉符號 ')'"
+
+#: ../json-glib/json-gvariant.c:651
+msgid "Unexpected extra elements in JSON array"
+msgstr "JSON 陣列中有未預期的額外元素"
+
+#: ../json-glib/json-gvariant.c:930
+msgid "Invalid string value converting to GVariant"
+msgstr "無效的字串數值轉換到 GVariant"
+
+#: ../json-glib/json-gvariant.c:986
+msgid ""
+"A GVariant dictionary entry expects a JSON object with exactly one member"
+msgstr "GVariant 字典項目預期 JSON 物件只能有一個成員"
+
+#: ../json-glib/json-gvariant.c:1266
+#, c-format
+msgid "GVariant class '%c' not supported"
+msgstr "GVariant 類別「%c」不支援"
+
+#: ../json-glib/json-gvariant.c:1314
+msgid "Invalid GVariant signature"
+msgstr "無效的 GVariant 簽章"
+
+#: ../json-glib/json-gvariant.c:1362
+msgid "JSON data is empty"
+msgstr "JSON 資料是空的"
+
+#: ../json-glib/json-parser.c:817
+#, c-format
+msgid "%s:%d:%d: Parse error: %s"
+msgstr "%s:%d:%d:解析錯誤:%s"
+
+#: ../json-glib/json-parser.c:885
+msgid "JSON data must be UTF-8 encoded"
+msgstr "JSON 資料必須以 UTF-8 編碼"
+
+#: ../json-glib/json-path.c:438
+msgid "Only one root node is allowed in a JSONPath expression"
+msgstr "在 JSONPath 表示式中不允許一個根節點"
+
+#: ../json-glib/json-path.c:447
+#, c-format
+msgid "Root node followed by invalid character '%c'"
+msgstr "根節點跟隨在無效的字元「%c」後"
+
+#: ../json-glib/json-path.c:487
+msgid "Missing member name or wildcard after . character"
+msgstr "在 . 字元後缺少成員名稱或萬用字元"
+
+#: ../json-glib/json-path.c:561
+#, c-format
+msgid "Malformed slice expression '%*s'"
+msgstr "格式不良的片段表示式「%*s」"
+
+#: ../json-glib/json-path.c:605
+#, c-format
+msgid "Invalid set definition '%*s'"
+msgstr "無效的組定義「%*s」"
+
+#: ../json-glib/json-path.c:658
+#, c-format
+msgid "Invalid slice definition '%*s'"
+msgstr "無效的片段定義「%*s」"
+
+#: ../json-glib/json-path.c:686
+#, c-format
+msgid "Invalid array index definition '%*s'"
+msgstr "無效的陣列索引定義「%*s」"
+
+#: ../json-glib/json-path.c:705
+#, c-format
+msgid "Invalid first character '%c'"
+msgstr "無效的第一個字元「%c」"
+
+#: ../json-glib/json-reader.c:457
+#, c-format
+msgid ""
+"The current node is of type '%s', but an array or an object was expected."
+msgstr "目前的節點類型是「%s」,但預期應為陣列或物件。"
+
+#: ../json-glib/json-reader.c:469
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the array at the current position."
+msgstr "索引「%d」大於目前位置的陣列大小。"
+
+#: ../json-glib/json-reader.c:486
+#, c-format
+msgid ""
+"The index '%d' is greater than the size of the object at the current "
+"position."
+msgstr "索引「%d」大於目前位置的物件大小。"
+
+#: ../json-glib/json-reader.c:570 ../json-glib/json-reader.c:723
+#: ../json-glib/json-reader.c:774 ../json-glib/json-reader.c:812
+#: ../json-glib/json-reader.c:850 ../json-glib/json-reader.c:888
+#: ../json-glib/json-reader.c:926 ../json-glib/json-reader.c:971
+#: ../json-glib/json-reader.c:1007 ../json-glib/json-reader.c:1033
+msgid "No node available at the current position"
+msgstr "目前的位置沒有可用的節點"
+
+#: ../json-glib/json-reader.c:577
+#, c-format
+msgid "The current position holds a '%s' and not an array"
+msgstr "目前的位置持有一個「%s」,並非陣列"
+
+#: ../json-glib/json-reader.c:640
+#, c-format
+msgid "The current node is of type '%s', but an object was expected."
+msgstr "目前的節點類型是「%s」,但預期應為物件。"
+
+#: ../json-glib/json-reader.c:647
+#, c-format
+msgid "The member '%s' is not defined in the object at the current position."
+msgstr "成員「%s」並未在目前的位置的物件中定義。"
+
+#: ../json-glib/json-reader.c:730 ../json-glib/json-reader.c:781
+#, c-format
+msgid "The current position holds a '%s' and not an object"
+msgstr "目前的位置持有一個「%s」,並非物件"
+
+#: ../json-glib/json-reader.c:821 ../json-glib/json-reader.c:859
+#: ../json-glib/json-reader.c:897 ../json-glib/json-reader.c:935
+#: ../json-glib/json-reader.c:980
+#, c-format
+msgid "The current position holds a '%s' and not a value"
+msgstr "目前的位置持有一個「%s」,並非數值"
+
+#: ../json-glib/json-reader.c:943
+msgid "The current position does not hold a string type"
+msgstr "目前的位置並未持有字串類型"
+
+#~ msgid "The current position does not hold an integer type"
+#~ msgstr "目前的位置並未持有整數類型"
+
+#~ msgid "The current position does not hold a floating point type"
+#~ msgstr "目前的位置並未持有浮點數類型"
+
+#~ msgid "The current position does not hold a boolean type"
+#~ msgstr "目前的位置並未持有布林類型"
+++ /dev/null
-include $(top_srcdir)/build/autotools/Makefile.am.gtest
-include $(top_srcdir)/build/autotools/Makefile.am.silent
-
-NULL =
-
-noinst_PROGRAMS = $(TEST_PROGS)
-
-INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/json-glib
-AM_CPPFLAGS = -DJSON_DISABLE_DEPRECATED $(JSON_DEBUG_CFLAGS) $(JSON_CFLAGS) $(MAINTAINER_CFLAGS)
-progs_ldadd = $(top_builddir)/json-glib/libjson-glib-1.0.la $(JSON_LIBS)
-
-TESTS_ENVIRONMENT = srcdir=$(srcdir)
-
-TEST_PROGS += test-parser
-test_parser_SOURCES = test-parser.c
-test_parser_LDADD = $(progs_ldadd)
-
-TEST_PROGS += test-generator
-test_generator_SOURCES = test-generator.c
-test_generator_LDADD = $(progs_ldadd)
-
-TEST_PROGS += test-serialize-simple
-test_serialize_simple_SOURCES = test-serialize-simple.c
-test_serialize_simple_LDADD = $(progs_ldadd)
-
-TEST_PROGS += test-serialize-complex
-test_serialize_complex_SOURCES = test-serialize-complex.c
-test_serialize_complex_LDADD = $(progs_ldadd)
-
-TEST_PROGS += test-serialize-boxed
-test_serialize_boxed_SOURCES = test-serialize-boxed.c
-test_serialize_boxed_LDADD = $(progs_ldadd)
-
-TEST_PROGS += test-serialize-full
-test_serialize_full_SOURCES = test-serialize-full.c
-test_serialize_full_LDADD = $(progs_ldadd)
+++ /dev/null
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include <glib.h>
-
-#include <json-glib/json-glib.h>
-
-static const gchar *empty_array = "[ ]";
-static const gchar *empty_object = "{ }";
-
-static const gchar *simple_array = "[ true, false, null, 42, \"foo\" ]";
-static const gchar *nested_array = "[ true, [ false, null ], 42 ]";
-
-static const gchar *simple_object = "{ \"Bool1\" : true, \"Bool2\" : false, \"Null\" : null, \"Int\" : 42, \"String\" : \"foo\" }";
-
-static void
-test_empty_array (void)
-{
- JsonGenerator *gen = json_generator_new ();
- JsonNode *root;
- gchar *data;
- gsize len;
-
- root = json_node_new (JSON_NODE_ARRAY);
- json_node_take_array (root, json_array_new ());
-
- json_generator_set_root (gen, root);
- g_object_set (gen, "pretty", FALSE, NULL);
-
- data = json_generator_to_data (gen, &len);
-
- g_assert_cmpint (len, ==, strlen (empty_array));
- g_assert_cmpstr (data, ==, empty_array);
-
- g_free (data);
- json_node_free (root);
- g_object_unref (gen);
-}
-
-static void
-test_empty_object (void)
-{
- JsonGenerator *gen = json_generator_new ();
- JsonNode *root;
- gchar *data;
- gsize len;
-
- root = json_node_new (JSON_NODE_OBJECT);
- json_node_take_object (root, json_object_new ());
-
- json_generator_set_root (gen, root);
- g_object_set (gen, "pretty", FALSE, NULL);
-
- data = json_generator_to_data (gen, &len);
-
- g_assert_cmpint (len, ==, strlen (empty_object));
- g_assert_cmpstr (data, ==, empty_object);
-
- g_free (data);
- json_node_free (root);
- g_object_unref (gen);
-}
-
-static void
-test_simple_array (void)
-{
- JsonGenerator *generator = json_generator_new ();
- JsonNode *root, *val;
- JsonArray *array;
- GValue value = { 0, };
- gchar *data;
- gsize len;
-
- root = json_node_new (JSON_NODE_ARRAY);
- array = json_array_sized_new (6);
-
- val = json_node_new (JSON_NODE_VALUE);
- g_value_init (&value, G_TYPE_BOOLEAN);
- g_value_set_boolean (&value, TRUE);
- json_node_set_value (val, &value);
- json_array_add_element (array, val);
- g_value_unset (&value);
-
- val = json_node_new (JSON_NODE_VALUE);
- json_node_set_boolean (val, FALSE);
- json_array_add_element (array, val);
-
- val = json_node_new (JSON_NODE_NULL);
- json_array_add_element (array, val);
-
- json_array_add_int_element (array, 42);
-
- val = json_node_new (JSON_NODE_VALUE);
- g_value_init (&value, G_TYPE_STRING);
- g_value_set_string (&value, "foo");
- json_node_set_value (val, &value);
- json_array_add_element (array, val);
- g_value_unset (&value);
-
- json_node_take_array (root, array);
- json_generator_set_root (generator, root);
-
- g_object_set (generator, "pretty", FALSE, NULL);
- data = json_generator_to_data (generator, &len);
-
- if (g_test_verbose ())
- g_print ("checking simple array `%s' (expected: %s)\n",
- data,
- simple_array);
-
- g_assert_cmpint (len, ==, strlen (simple_array));
- g_assert_cmpstr (data, ==, simple_array);
-
- g_free (data);
- json_node_free (root);
- g_object_unref (generator);
-}
-
-static void
-test_nested_array (void)
-{
- JsonGenerator *generator = json_generator_new ();
- JsonNode *root, *val;
- JsonArray *array, *nested;
- GValue value = { 0, };
- gchar *data;
- gsize len;
-
- root = json_node_new (JSON_NODE_ARRAY);
- array = json_array_sized_new (3);
-
- val = json_node_new (JSON_NODE_VALUE);
- g_value_init (&value, G_TYPE_BOOLEAN);
- g_value_set_boolean (&value, TRUE);
- json_node_set_value (val, &value);
- json_array_add_element (array, val);
- g_value_unset (&value);
-
- {
- nested = json_array_new ();
-
- json_array_add_boolean_element (nested, FALSE);
- json_array_add_null_element (nested);
-
- json_array_add_array_element (array, nested);
- }
-
- val = json_node_new (JSON_NODE_VALUE);
- g_value_init (&value, G_TYPE_INT64);
- g_value_set_int64 (&value, 42);
- json_node_set_value (val, &value);
- json_array_add_element (array, val);
- g_value_unset (&value);
-
- json_node_take_array (root, array);
- json_generator_set_root (generator, root);
-
- g_object_set (generator, "pretty", FALSE, NULL);
- data = json_generator_to_data (generator, &len);
-
- g_assert_cmpint (len, ==, strlen (nested_array));
- g_assert_cmpstr (data, ==, nested_array);
-
- g_free (data);
- json_node_free (root);
- g_object_unref (generator);
-}
-
-static void
-test_simple_object (void)
-{
- JsonGenerator *generator = json_generator_new ();
- JsonNode *root;
- JsonObject *object;
- gchar *data;
- gsize len;
-
- root = json_node_new (JSON_NODE_OBJECT);
- object = json_object_new ();
-
- json_object_set_boolean_member (object, "Bool1", TRUE);
- json_object_set_boolean_member (object, "Bool2", FALSE);
- json_object_set_null_member (object, "Null");
- json_object_set_int_member (object, "Int", 42);
- json_object_set_string_member (object, "String", "foo");
-
- json_node_take_object (root, object);
- json_generator_set_root (generator, root);
-
- g_object_set (generator, "pretty", FALSE, NULL);
- data = json_generator_to_data (generator, &len);
-
- if (g_test_verbose ())
- g_print ("checking simple object `%s' (expected: %s)\n",
- data,
- simple_object);
-
- g_assert_cmpint (len, ==, strlen (simple_object));
- g_assert_cmpstr (data, ==, simple_object);
-
- /* we cannot compare the strings literal because JsonObject does not
- * guarantee any ordering
- */
-
- g_free (data);
- json_node_free (root);
- g_object_unref (generator);
-}
-
-#if 0
-/* this is just overkill, but I'll add it commented out, so it
- * can be enabled if I feel like running this just to compare
- * the length of the strings
- */
-static void
-test_nested_object (void)
-{
- JsonGenerator *generator = json_generator_new ();
- JsonNode *root, *val, *nested_val;
- JsonObject *object, *nested;
- JsonArray *array;
- GValue value = { 0, };
- gchar *data;
- gsize len;
-
- root = json_node_new (JSON_NODE_OBJECT);
- object = json_object_new ();
-
- val = json_node_new (JSON_NODE_VALUE);
- g_value_init (&value, G_TYPE_STRING);
- g_value_set_string (&value, "View from 15th Floor");
- json_node_set_value (val, &value);
- json_object_set_member (object, "Title", val);
- g_value_unset (&value);
-
- val = json_node_new (JSON_NODE_VALUE);
- g_value_init (&value, G_TYPE_INT);
- g_value_set_int (&value, 800);
- json_node_set_value (val, &value);
- json_object_set_member (object, "Width", val);
- g_value_unset (&value);
-
- val = json_node_new (JSON_NODE_VALUE);
- g_value_init (&value, G_TYPE_INT);
- g_value_set_int (&value, 600);
- json_node_set_value (val, &value);
- json_object_set_member (object, "Height", val);
- g_value_unset (&value);
-
- {
- val = json_node_new (JSON_NODE_ARRAY);
- array = json_array_new ();
-
- nested_val = json_node_new (JSON_NODE_VALUE);
- g_value_init (&value, G_TYPE_INT);
- g_value_set_int (&value, 116);
- json_node_set_value (nested_val, &value);
- json_array_add_element (array, nested_val);
- g_value_unset (&value);
-
- nested_val = json_node_new (JSON_NODE_VALUE);
- g_value_init (&value, G_TYPE_INT);
- g_value_set_int (&value, 943);
- json_node_set_value (nested_val, &value);
- json_array_add_element (array, nested_val);
- g_value_unset (&value);
-
- nested_val = json_node_new (JSON_NODE_VALUE);
- g_value_init (&value, G_TYPE_INT);
- g_value_set_int (&value, 234);
- json_node_set_value (nested_val, &value);
- json_array_add_element (array, nested_val);
- g_value_unset (&value);
-
- nested_val = json_node_new (JSON_NODE_VALUE);
- g_value_init (&value, G_TYPE_INT);
- g_value_set_int (&value, 38793);
- json_node_set_value (nested_val, &value);
- json_array_add_element (array, nested_val);
- g_value_unset (&value);
-
- json_node_take_array (val, array);
- json_object_set_member (object, "IDs", val);
- }
-
- {
- val = json_node_new (JSON_NODE_OBJECT);
- nested = json_object_new ();
-
- nested_val = json_node_new (JSON_NODE_VALUE);
- g_value_init (&value, G_TYPE_STRING);
- g_value_set_string (&value, "http://www.example.com/image/481989943");
- json_node_set_value (nested_val, &value);
- json_object_set_member (nested, "Url", nested_val);
- g_value_unset (&value);
-
- nested_val = json_node_new (JSON_NODE_VALUE);
- g_value_init (&value, G_TYPE_INT);
- g_value_set_int (&value, 125);
- json_node_set_value (nested_val, &value);
- json_object_set_member (nested, "Width", nested_val);
- g_value_unset (&value);
-
- nested_val = json_node_new (JSON_NODE_VALUE);
- g_value_init (&value, G_TYPE_INT);
- g_value_set_int (&value, 100);
- json_node_set_value (nested_val, &value);
- json_object_set_member (nested, "Height", nested_val);
- g_value_unset (&value);
-
- json_node_take_object (val, nested);
- json_object_set_member (object, "Thumbnail", val);
- }
-
- json_node_take_object (root, object);
- json_generator_set_root (generator, root);
-
- g_object_set (generator, "pretty", FALSE, NULL);
- data = json_generator_to_data (generator, &len);
-
- if (g_test_verbose ())
- g_print ("checking nested object `%s' (expected: %s)\n",
- data,
- nested_object);
-
- g_assert_cmpint (len, ==, strlen (nested_object));
-
- /* we cannot compare the strings literal because JsonObject does not
- * guarantee any ordering
- */
-
- g_free (data);
- json_node_free (root);
- g_object_unref (generator);
-}
-#endif
-
-int
-main (int argc,
- char *argv[])
-{
- g_type_init ();
- g_test_init (&argc, &argv, NULL);
-
- g_test_add_func ("/generator/empty-array", test_empty_array);
- g_test_add_func ("/generator/empty-object", test_empty_object);
- g_test_add_func ("/generator/simple-array", test_simple_array);
- g_test_add_func ("/generator/nested-array", test_nested_array);
- g_test_add_func ("/generator/simple-object", test_simple_object);
-
- return g_test_run ();
-}