tizen 2.4 release accepted/tizen_2.4_mobile tizen_2.4 accepted/tizen/2.4/mobile/20151029.040037 submit/tizen_2.4/20151028.063116 tizen_2.4_mobile_release
authorjk7744.park <jk7744.park@samsung.com>
Sat, 24 Oct 2015 07:05:46 +0000 (16:05 +0900)
committerjk7744.park <jk7744.park@samsung.com>
Sat, 24 Oct 2015 07:05:46 +0000 (16:05 +0900)
327 files changed:
.gitignore [changed mode: 0755->0644]
AUTHORS [deleted file]
ChangeLog [deleted file]
INSTALL [deleted file]
Makefile.am
NEWS
README [deleted file]
README.md [new file with mode: 0644]
TC/_export_env.sh [deleted file]
TC/_export_target_env.sh [deleted file]
TC/build.sh [deleted file]
TC/clean.sh [deleted file]
TC/config [deleted file]
TC/execute.sh [deleted file]
TC/tet_scen [deleted file]
TC/tetbuild.cfg [deleted file]
TC/tetclean.cfg [deleted file]
TC/tetexec.cfg [deleted file]
TC/unit/Makefile [deleted file]
TC/unit/TC_Generator/Makefile [deleted file]
TC/unit/TC_Generator/tslist [deleted file]
TC/unit/TC_Generator/utc_libjson_json_generator_new_func.c [deleted file]
TC/unit/TC_Generator/utc_libjson_json_generator_set_root_func.c [deleted file]
TC/unit/TC_Generator/utc_libjson_json_generator_to_data_func.c [deleted file]
TC/unit/TC_Generator/utc_libjson_json_generator_to_file_func.c [deleted file]
TC/unit/TC_Gobject/Makefile [deleted file]
TC/unit/TC_Gobject/tslist [deleted file]
TC/unit/TC_Gobject/utc_libjson_json_serialize_boxed_func.c [deleted file]
TC/unit/TC_Gobject/utc_libjson_json_serialize_complex_func.c [deleted file]
TC/unit/TC_Gobject/utc_libjson_json_serialize_full_func.c [deleted file]
TC/unit/TC_Gobject/utc_libjson_json_serialize_gobject_func.c [deleted file]
TC/unit/TC_Gobject/utc_libjson_json_serialize_interface_func.c [deleted file]
TC/unit/TC_Gobject/utc_libjson_json_serialize_simple_func.c [deleted file]
TC/unit/TC_Parser/Makefile [deleted file]
TC/unit/TC_Parser/tslist [deleted file]
TC/unit/TC_Parser/utc_libjson_json_parser_get_current_line_func.c [deleted file]
TC/unit/TC_Parser/utc_libjson_json_parser_get_current_pos_func.c [deleted file]
TC/unit/TC_Parser/utc_libjson_json_parser_get_root_func.c [deleted file]
TC/unit/TC_Parser/utc_libjson_json_parser_has_assignment_func.c [deleted file]
TC/unit/TC_Parser/utc_libjson_json_parser_load_from_data_func.c [deleted file]
TC/unit/TC_Parser/utc_libjson_json_parser_load_from_file_func.c [deleted file]
TC/unit/TC_Parser/utc_libjson_json_parser_new_func.c [deleted file]
TC/unit/TC_Types/Makefile [deleted file]
TC/unit/TC_Types/tslist [deleted file]
TC/unit/TC_Types/utc_libjson_json_array_func.c [deleted file]
TC/unit/TC_Types/utc_libjson_json_node_func.c [deleted file]
TC/unit/TC_Types/utc_libjson_json_object_func.c [deleted file]
TC/unit/tc_gen.sh [deleted file]
TC/unit/utc_MODULE_API_func.c.in [deleted file]
autogen.sh
build/Makefile.am
build/autotools/Makefile.am
build/autotools/Makefile.am.enums
build/autotools/Makefile.am.gitignore [new file with mode: 0644]
build/autotools/Makefile.am.gtest [deleted file]
build/autotools/Makefile.am.marshal
build/autotools/Makefile.am.silent [deleted file]
build/autotools/as-linguas.m4 [new file with mode: 0644]
build/autotools/glib-tap.mk [new file with mode: 0644]
build/autotools/glibtests.m4 [new file with mode: 0644]
build/autotools/gtk-doc.m4 [deleted file]
build/autotools/introspection.m4
build/autotools/jh-catalog.m4 [new file with mode: 0644]
build/autotools/ltoptions.m4 [deleted file]
build/autotools/ltsugar.m4 [deleted file]
build/autotools/ltversion.m4 [deleted file]
build/autotools/lt~obsolete.m4 [deleted file]
build/autotools/shave-libtool.in [deleted file]
build/autotools/shave.in [deleted file]
build/autotools/shave.m4 [deleted file]
build/autotools/tap-driver.sh [new file with mode: 0755]
build/autotools/tap-test [new file with mode: 0755]
build/win32/.gitignore [new file with mode: 0644]
build/win32/Makefile.am [new file with mode: 0644]
build/win32/config.h.win32.in [new file with mode: 0644]
build/win32/detectenv_msvc.mak [new file with mode: 0644]
build/win32/gen-file-list-jsonglib.py [new file with mode: 0644]
build/win32/introspection-msvc.mak [new file with mode: 0644]
build/win32/json-glib-introspection-msvc.mak [new file with mode: 0644]
build/win32/vs10/Makefile.am [new file with mode: 0644]
build/win32/vs10/README.txt [new file with mode: 0644]
build/win32/vs10/array.vcxproj [new file with mode: 0644]
build/win32/vs10/array.vcxproj.filters [new file with mode: 0644]
build/win32/vs10/boxed.vcxproj [new file with mode: 0644]
build/win32/vs10/boxed.vcxproj.filters [new file with mode: 0644]
build/win32/vs10/builder.vcxproj [new file with mode: 0644]
build/win32/vs10/builder.vcxproj.filters [new file with mode: 0644]
build/win32/vs10/generator.vcxproj [new file with mode: 0644]
build/win32/vs10/generator.vcxproj.filters [new file with mode: 0644]
build/win32/vs10/gvariant.vcxproj [new file with mode: 0644]
build/win32/vs10/gvariant.vcxproj.filters [new file with mode: 0644]
build/win32/vs10/install.vcxproj [new file with mode: 0644]
build/win32/vs10/invalid.vcxproj [new file with mode: 0644]
build/win32/vs10/invalid.vcxproj.filters [new file with mode: 0644]
build/win32/vs10/json-glib-build-defines.props [new file with mode: 0644]
build/win32/vs10/json-glib-format.vcxproj [new file with mode: 0644]
build/win32/vs10/json-glib-format.vcxproj.filters [new file with mode: 0644]
build/win32/vs10/json-glib-gen-srcs.props [new file with mode: 0644]
build/win32/vs10/json-glib-install.props [new file with mode: 0644]
build/win32/vs10/json-glib-validate.vcxproj [new file with mode: 0644]
build/win32/vs10/json-glib-validate.vcxproj.filters [new file with mode: 0644]
build/win32/vs10/json-glib-version-paths.props [new file with mode: 0644]
build/win32/vs10/json-glib.sln [new file with mode: 0644]
build/win32/vs10/json-glib.vcxproj.filtersin [new file with mode: 0644]
build/win32/vs10/json-glib.vcxprojin [new file with mode: 0644]
build/win32/vs10/node.vcxproj [new file with mode: 0644]
build/win32/vs10/node.vcxproj.filters [new file with mode: 0644]
build/win32/vs10/object.vcxproj [new file with mode: 0644]
build/win32/vs10/object.vcxproj.filters [new file with mode: 0644]
build/win32/vs10/parser.vcxproj [new file with mode: 0644]
build/win32/vs10/parser.vcxproj.filters [new file with mode: 0644]
build/win32/vs10/path.vcxproj [new file with mode: 0644]
build/win32/vs10/path.vcxproj.filters [new file with mode: 0644]
build/win32/vs10/reader.vcxproj [new file with mode: 0644]
build/win32/vs10/reader.vcxproj.filters [new file with mode: 0644]
build/win32/vs10/serialize-complex.vcxproj [new file with mode: 0644]
build/win32/vs10/serialize-complex.vcxproj.filters [new file with mode: 0644]
build/win32/vs10/serialize-full.vcxproj [new file with mode: 0644]
build/win32/vs10/serialize-full.vcxproj.filters [new file with mode: 0644]
build/win32/vs10/serialize-simple.vcxproj [new file with mode: 0644]
build/win32/vs10/serialize-simple.vcxproj.filters [new file with mode: 0644]
build/win32/vs9/Makefile.am [new file with mode: 0644]
build/win32/vs9/README.txt [new file with mode: 0644]
build/win32/vs9/array.vcproj [new file with mode: 0644]
build/win32/vs9/boxed.vcproj [new file with mode: 0644]
build/win32/vs9/builder.vcproj [new file with mode: 0644]
build/win32/vs9/generator.vcproj [new file with mode: 0644]
build/win32/vs9/gvariant.vcproj [new file with mode: 0644]
build/win32/vs9/install.vcproj [new file with mode: 0644]
build/win32/vs9/invalid.vcproj [new file with mode: 0644]
build/win32/vs9/json-glib-build-defines.vsprops [new file with mode: 0644]
build/win32/vs9/json-glib-format.vcproj [new file with mode: 0644]
build/win32/vs9/json-glib-gen-srcs.vsprops [new file with mode: 0644]
build/win32/vs9/json-glib-install.vsprops [new file with mode: 0644]
build/win32/vs9/json-glib-validate.vcproj [new file with mode: 0644]
build/win32/vs9/json-glib-version-paths.vsprops [new file with mode: 0644]
build/win32/vs9/json-glib.sln [new file with mode: 0644]
build/win32/vs9/json-glib.vcprojin [new file with mode: 0644]
build/win32/vs9/node.vcproj [new file with mode: 0644]
build/win32/vs9/object.vcproj [new file with mode: 0644]
build/win32/vs9/parser.vcproj [new file with mode: 0644]
build/win32/vs9/path.vcproj [new file with mode: 0644]
build/win32/vs9/reader.vcproj [new file with mode: 0644]
build/win32/vs9/serialize-complex.vcproj [new file with mode: 0644]
build/win32/vs9/serialize-full.vcproj [new file with mode: 0644]
build/win32/vs9/serialize-simple.vcproj [new file with mode: 0644]
compile [deleted file]
config.h.in [deleted file]
configure.ac
debian/compat [deleted file]
debian/control [deleted file]
debian/copyright [deleted file]
debian/docs [deleted file]
debian/libjson-glib-dev.install.in [deleted file]
debian/libjson-glib.install.in [deleted file]
debian/rules [deleted file]
depcomp [deleted file]
doc/draft-zyp-json-schema-02.txt [new file with mode: 0644]
doc/reference/Makefile.am
doc/reference/html/JsonGenerator.html [deleted file]
doc/reference/html/JsonParser.html [deleted file]
doc/reference/html/annotation-glossary.html [deleted file]
doc/reference/html/ch01.html [deleted file]
doc/reference/html/ch02.html [deleted file]
doc/reference/html/ch03.html [deleted file]
doc/reference/html/ch04.html [deleted file]
doc/reference/html/home.png [deleted file]
doc/reference/html/index.html [deleted file]
doc/reference/html/index.sgml [deleted file]
doc/reference/html/ix01.html [deleted file]
doc/reference/html/ix02.html [deleted file]
doc/reference/html/ix03.html [deleted file]
doc/reference/html/ix04.html [deleted file]
doc/reference/html/ix05.html [deleted file]
doc/reference/html/ix06.html [deleted file]
doc/reference/html/json-advanced.html [deleted file]
doc/reference/html/json-base.html [deleted file]
doc/reference/html/json-glib-Boxed-Types-Serialization.html [deleted file]
doc/reference/html/json-glib-GObject-Serialization.html [deleted file]
doc/reference/html/json-glib-JSON-Array.html [deleted file]
doc/reference/html/json-glib-JSON-Node.html [deleted file]
doc/reference/html/json-glib-JSON-Object.html [deleted file]
doc/reference/html/json-glib-Serializable-Interface.html [deleted file]
doc/reference/html/json-glib-Versioning-information.html [deleted file]
doc/reference/html/json-glib.devhelp [deleted file]
doc/reference/html/json-glib.devhelp2 [deleted file]
doc/reference/html/json-glib.html [deleted file]
doc/reference/html/json-streams.html [deleted file]
doc/reference/html/json-tools.html [deleted file]
doc/reference/html/left.png [deleted file]
doc/reference/html/license.html [deleted file]
doc/reference/html/right.png [deleted file]
doc/reference/html/style.css [deleted file]
doc/reference/html/up.png [deleted file]
doc/reference/json-glib-docs.xml
doc/reference/json-glib-format.xml [new file with mode: 0644]
doc/reference/json-glib-overrides.txt [deleted file]
doc/reference/json-glib-sections.txt
doc/reference/json-glib-validate.xml [new file with mode: 0644]
doc/reference/json-glib.types
doc/reference/tmpl/json-array.sgml [deleted file]
doc/reference/tmpl/json-gboxed.sgml [deleted file]
doc/reference/tmpl/json-generator.sgml [deleted file]
doc/reference/tmpl/json-glib-unused.sgml [deleted file]
doc/reference/tmpl/json-gobject.sgml [deleted file]
doc/reference/tmpl/json-node.sgml [deleted file]
doc/reference/tmpl/json-object.sgml [deleted file]
doc/reference/tmpl/json-parser.sgml [deleted file]
doc/reference/tmpl/json-serializable.sgml [deleted file]
doc/reference/tmpl/json-version.sgml [deleted file]
doc/rfc4627.txt [new file with mode: 0644]
gtk-doc.make [deleted file]
install-sh [deleted file]
json-glib-0.10.4 [deleted file]
json-glib.doap [new file with mode: 0644]
json-glib.pc.in [deleted file]
json-glib/Makefile.am
json-glib/json-array.c
json-glib/json-builder.c [new file with mode: 0644]
json-glib/json-builder.h [new file with mode: 0644]
json-glib/json-debug.c [new file with mode: 0644]
json-glib/json-debug.h [new file with mode: 0644]
json-glib/json-enum-types.h.in
json-glib/json-gboxed.c
json-glib/json-generator.c
json-glib/json-generator.h
json-glib/json-glib-format.c [new file with mode: 0644]
json-glib/json-glib-validate.c [new file with mode: 0644]
json-glib/json-glib.h
json-glib/json-glib.pc.in [new file with mode: 0644]
json-glib/json-gobject.c
json-glib/json-gobject.h
json-glib/json-gvariant.c [new file with mode: 0644]
json-glib/json-gvariant.h [new file with mode: 0644]
json-glib/json-node.c
json-glib/json-object.c
json-glib/json-parser.c
json-glib/json-parser.h
json-glib/json-path.c [new file with mode: 0644]
json-glib/json-path.h [new file with mode: 0644]
json-glib/json-reader.c [new file with mode: 0644]
json-glib/json-reader.h [new file with mode: 0644]
json-glib/json-scanner.c
json-glib/json-scanner.h
json-glib/json-serializable.c
json-glib/json-types-private.h
json-glib/json-types.h
json-glib/json-value.c [new file with mode: 0644]
json-glib/json-version-macros.h [new file with mode: 0644]
json-glib/json-version.h.in
json-glib/tests/Makefile.am
json-glib/tests/array.c [moved from json-glib/tests/array-test.c with 54% similarity]
json-glib/tests/boxed.c [moved from tests/test-serialize-boxed.c with 99% similarity]
json-glib/tests/builder.c [new file with mode: 0644]
json-glib/tests/generator.c [new file with mode: 0644]
json-glib/tests/gvariant.c [new file with mode: 0644]
json-glib/tests/invalid.c [new file with mode: 0644]
json-glib/tests/node-test.c [deleted file]
json-glib/tests/node.c [new file with mode: 0644]
json-glib/tests/object.c [moved from json-glib/tests/object-test.c with 64% similarity]
json-glib/tests/parser.c [moved from tests/test-parser.c with 83% similarity]
json-glib/tests/path.c [new file with mode: 0644]
json-glib/tests/reader.c [new file with mode: 0644]
json-glib/tests/serialize-complex.c [moved from tests/test-serialize-complex.c with 86% similarity]
json-glib/tests/serialize-full.c [moved from tests/test-serialize-full.c with 67% similarity]
json-glib/tests/serialize-simple.c [moved from tests/test-serialize-simple.c with 99% similarity]
json-glib/tests/stream-load.json [new file with mode: 0644]
missing [deleted file]
packaging/baselibs.conf [new file with mode: 0644]
packaging/json-glib.changes [new file with mode: 0644]
packaging/json-glib.manifest [new file with mode: 0644]
packaging/json-glib.spec
packaging/support_surrogate_pairs_in_json_string.patch [deleted file]
po/.gitignore [new file with mode: 0644]
po/Makevars [new file with mode: 0644]
po/POTFILES.in [new file with mode: 0644]
po/as.po [new file with mode: 0644]
po/bg.po [new file with mode: 0644]
po/bn_IN.po [new file with mode: 0644]
po/ca.po [new file with mode: 0644]
po/ca@valencia.po [new file with mode: 0644]
po/cs.po [new file with mode: 0644]
po/da.po [new file with mode: 0644]
po/de.po [new file with mode: 0644]
po/el.po [new file with mode: 0644]
po/en_GB.po [new file with mode: 0644]
po/eo.po [new file with mode: 0644]
po/es.po [new file with mode: 0644]
po/et.po [new file with mode: 0644]
po/eu.po [new file with mode: 0644]
po/fr.po [new file with mode: 0644]
po/fur.po [new file with mode: 0644]
po/gl.po [new file with mode: 0644]
po/he.po [new file with mode: 0644]
po/hi.po [new file with mode: 0644]
po/hu.po [new file with mode: 0644]
po/id.po [new file with mode: 0644]
po/it.po [new file with mode: 0644]
po/ja.po [new file with mode: 0644]
po/ko.po [new file with mode: 0644]
po/ky.po [new file with mode: 0644]
po/lt.po [new file with mode: 0644]
po/lv.po [new file with mode: 0644]
po/ml.po [new file with mode: 0644]
po/nb.po [new file with mode: 0644]
po/or.po [new file with mode: 0644]
po/pa.po [new file with mode: 0644]
po/pl.po [new file with mode: 0644]
po/pt.po [new file with mode: 0644]
po/pt_BR.po [new file with mode: 0644]
po/ru.po [new file with mode: 0644]
po/sk.po [new file with mode: 0644]
po/sl.po [new file with mode: 0644]
po/sr.po [new file with mode: 0644]
po/sr@latin.po [new file with mode: 0644]
po/sv.po [new file with mode: 0644]
po/te.po [new file with mode: 0644]
po/tg.po [new file with mode: 0644]
po/tr.po [new file with mode: 0644]
po/ug.po [new file with mode: 0644]
po/uk.po [new file with mode: 0644]
po/vi.po [new file with mode: 0644]
po/zh_CN.po [new file with mode: 0644]
po/zh_HK.po [new file with mode: 0644]
po/zh_TW.po [new file with mode: 0644]
tests/Makefile.am [deleted file]
tests/test-generator.c [deleted file]

old mode 100755 (executable)
new mode 100644 (file)
index fcdfa46..0485d11
@@ -1,54 +1,76 @@
-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
diff --git a/AUTHORS b/AUTHORS
deleted file mode 100644 (file)
index 6b0e47a..0000000
--- a/AUTHORS
+++ /dev/null
@@ -1 +0,0 @@
-Emmanuele Bassi <ebassi@openedhand.com>
diff --git a/ChangeLog b/ChangeLog
deleted file mode 100644 (file)
index c1ae693..0000000
--- a/ChangeLog
+++ /dev/null
@@ -1,4865 +0,0 @@
-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(-)
diff --git a/INSTALL b/INSTALL
deleted file mode 100644 (file)
index 7d1c323..0000000
--- a/INSTALL
+++ /dev/null
@@ -1,365 +0,0 @@
-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.
-
index fb2170e..7f4c3f9 100644 (file)
@@ -1,38 +1,44 @@
-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
diff --git a/NEWS b/NEWS
index 631a5c2..fbe9935 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,14 +1,57 @@
-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
 ==============================
diff --git a/README b/README
deleted file mode 100644 (file)
index 2cc23ab..0000000
--- a/README
+++ /dev/null
@@ -1,103 +0,0 @@
-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.
diff --git a/README.md b/README.md
new file mode 100644 (file)
index 0000000..3a78001
--- /dev/null
+++ b/README.md
@@ -0,0 +1,122 @@
+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/
diff --git a/TC/_export_env.sh b/TC/_export_env.sh
deleted file mode 100755 (executable)
index 72a11ec..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/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
diff --git a/TC/_export_target_env.sh b/TC/_export_target_env.sh
deleted file mode 100755 (executable)
index 5ddaa53..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/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
diff --git a/TC/build.sh b/TC/build.sh
deleted file mode 100755 (executable)
index 72aad6c..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/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
diff --git a/TC/clean.sh b/TC/clean.sh
deleted file mode 100755 (executable)
index 29743e0..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/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
diff --git a/TC/config b/TC/config
deleted file mode 100755 (executable)
index a30467a..0000000
--- a/TC/config
+++ /dev/null
@@ -1,2 +0,0 @@
-TET_INSTALL_HOST_PATH=/home/ivan/xuyun/DTS/TETware
-TET_INSTALL_TARGET_PATH=/mnt/nfs/DTS/TETware
diff --git a/TC/execute.sh b/TC/execute.sh
deleted file mode 100755 (executable)
index a4f6095..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/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
diff --git a/TC/tet_scen b/TC/tet_scen
deleted file mode 100755 (executable)
index e486157..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-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
diff --git a/TC/tetbuild.cfg b/TC/tetbuild.cfg
deleted file mode 100755 (executable)
index 1d79cc2..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-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?
diff --git a/TC/tetclean.cfg b/TC/tetclean.cfg
deleted file mode 100755 (executable)
index 02d7030..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-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
diff --git a/TC/tetexec.cfg b/TC/tetexec.cfg
deleted file mode 100755 (executable)
index ef3e452..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-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 ?
diff --git a/TC/unit/Makefile b/TC/unit/Makefile
deleted file mode 100755 (executable)
index 7dad665..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-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
diff --git a/TC/unit/TC_Generator/Makefile b/TC/unit/TC_Generator/Makefile
deleted file mode 100755 (executable)
index d8b57a5..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-###################################################
-# 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)
-
diff --git a/TC/unit/TC_Generator/tslist b/TC/unit/TC_Generator/tslist
deleted file mode 100755 (executable)
index 43fcfe7..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-/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
diff --git a/TC/unit/TC_Generator/utc_libjson_json_generator_new_func.c b/TC/unit/TC_Generator/utc_libjson_json_generator_new_func.c
deleted file mode 100755 (executable)
index 9de43fd..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-#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);
-}
-
diff --git a/TC/unit/TC_Generator/utc_libjson_json_generator_set_root_func.c b/TC/unit/TC_Generator/utc_libjson_json_generator_set_root_func.c
deleted file mode 100755 (executable)
index 4108040..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-#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);
-
-}
-
-
diff --git a/TC/unit/TC_Generator/utc_libjson_json_generator_to_data_func.c b/TC/unit/TC_Generator/utc_libjson_json_generator_to_data_func.c
deleted file mode 100755 (executable)
index 3fa534e..0000000
+++ /dev/null
@@ -1,277 +0,0 @@
-#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);
-}
-
-
diff --git a/TC/unit/TC_Generator/utc_libjson_json_generator_to_file_func.c b/TC/unit/TC_Generator/utc_libjson_json_generator_to_file_func.c
deleted file mode 100755 (executable)
index badf0ec..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-#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);
-}
-
diff --git a/TC/unit/TC_Gobject/Makefile b/TC/unit/TC_Gobject/Makefile
deleted file mode 100755 (executable)
index 420b112..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-###################################################
-# 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)
-
diff --git a/TC/unit/TC_Gobject/tslist b/TC/unit/TC_Gobject/tslist
deleted file mode 100755 (executable)
index c4eee53..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-/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
diff --git a/TC/unit/TC_Gobject/utc_libjson_json_serialize_boxed_func.c b/TC/unit/TC_Gobject/utc_libjson_json_serialize_boxed_func.c
deleted file mode 100755 (executable)
index 2bc1613..0000000
+++ /dev/null
@@ -1,360 +0,0 @@
-#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);
-}
-
diff --git a/TC/unit/TC_Gobject/utc_libjson_json_serialize_complex_func.c b/TC/unit/TC_Gobject/utc_libjson_json_serialize_complex_func.c
deleted file mode 100755 (executable)
index 999156e..0000000
+++ /dev/null
@@ -1,314 +0,0 @@
-#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);
-
-}
-
-
diff --git a/TC/unit/TC_Gobject/utc_libjson_json_serialize_full_func.c b/TC/unit/TC_Gobject/utc_libjson_json_serialize_full_func.c
deleted file mode 100755 (executable)
index 64358ed..0000000
+++ /dev/null
@@ -1,312 +0,0 @@
-#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);
-
-}
-
diff --git a/TC/unit/TC_Gobject/utc_libjson_json_serialize_gobject_func.c b/TC/unit/TC_Gobject/utc_libjson_json_serialize_gobject_func.c
deleted file mode 100755 (executable)
index cbc684e..0000000
+++ /dev/null
@@ -1,410 +0,0 @@
-
-#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);
-
-}
-
diff --git a/TC/unit/TC_Gobject/utc_libjson_json_serialize_interface_func.c b/TC/unit/TC_Gobject/utc_libjson_json_serialize_interface_func.c
deleted file mode 100755 (executable)
index f2529ac..0000000
+++ /dev/null
@@ -1,405 +0,0 @@
-#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);
-
-}
-
diff --git a/TC/unit/TC_Gobject/utc_libjson_json_serialize_simple_func.c b/TC/unit/TC_Gobject/utc_libjson_json_serialize_simple_func.c
deleted file mode 100755 (executable)
index f24d25d..0000000
+++ /dev/null
@@ -1,184 +0,0 @@
-#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);
-}
-
-
diff --git a/TC/unit/TC_Parser/Makefile b/TC/unit/TC_Parser/Makefile
deleted file mode 100755 (executable)
index cbb3917..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-###################################################
-# 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)
-
diff --git a/TC/unit/TC_Parser/tslist b/TC/unit/TC_Parser/tslist
deleted file mode 100755 (executable)
index 8b271d3..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/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
diff --git a/TC/unit/TC_Parser/utc_libjson_json_parser_get_current_line_func.c b/TC/unit/TC_Parser/utc_libjson_json_parser_get_current_line_func.c
deleted file mode 100755 (executable)
index 1115c9b..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-#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);
-}
-
-
diff --git a/TC/unit/TC_Parser/utc_libjson_json_parser_get_current_pos_func.c b/TC/unit/TC_Parser/utc_libjson_json_parser_get_current_pos_func.c
deleted file mode 100755 (executable)
index 65f2c89..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-#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);
-}
-
-
diff --git a/TC/unit/TC_Parser/utc_libjson_json_parser_get_root_func.c b/TC/unit/TC_Parser/utc_libjson_json_parser_get_root_func.c
deleted file mode 100755 (executable)
index 0057923..0000000
+++ /dev/null
@@ -1,446 +0,0 @@
-#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);
-
-}
-
-
diff --git a/TC/unit/TC_Parser/utc_libjson_json_parser_has_assignment_func.c b/TC/unit/TC_Parser/utc_libjson_json_parser_has_assignment_func.c
deleted file mode 100755 (executable)
index 044cead..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-#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);
-}
-
diff --git a/TC/unit/TC_Parser/utc_libjson_json_parser_load_from_data_func.c b/TC/unit/TC_Parser/utc_libjson_json_parser_load_from_data_func.c
deleted file mode 100755 (executable)
index cebfbd7..0000000
+++ /dev/null
@@ -1,537 +0,0 @@
-#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);
-}
-
diff --git a/TC/unit/TC_Parser/utc_libjson_json_parser_load_from_file_func.c b/TC/unit/TC_Parser/utc_libjson_json_parser_load_from_file_func.c
deleted file mode 100755 (executable)
index 392b312..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-#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);
-}
-
diff --git a/TC/unit/TC_Parser/utc_libjson_json_parser_new_func.c b/TC/unit/TC_Parser/utc_libjson_json_parser_new_func.c
deleted file mode 100755 (executable)
index 87964a8..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-#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);
-}
diff --git a/TC/unit/TC_Types/Makefile b/TC/unit/TC_Types/Makefile
deleted file mode 100755 (executable)
index 6a7b5df..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-###################################################
-# 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)
-
diff --git a/TC/unit/TC_Types/tslist b/TC/unit/TC_Types/tslist
deleted file mode 100755 (executable)
index 6877eac..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-/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
diff --git a/TC/unit/TC_Types/utc_libjson_json_array_func.c b/TC/unit/TC_Types/utc_libjson_json_array_func.c
deleted file mode 100755 (executable)
index b733e80..0000000
+++ /dev/null
@@ -1,201 +0,0 @@
-#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);
-}
-
-
-
diff --git a/TC/unit/TC_Types/utc_libjson_json_node_func.c b/TC/unit/TC_Types/utc_libjson_json_node_func.c
deleted file mode 100755 (executable)
index 83c8038..0000000
+++ /dev/null
@@ -1,276 +0,0 @@
-#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);
-}
-
-
diff --git a/TC/unit/TC_Types/utc_libjson_json_object_func.c b/TC/unit/TC_Types/utc_libjson_json_object_func.c
deleted file mode 100755 (executable)
index a7dbf57..0000000
+++ /dev/null
@@ -1,226 +0,0 @@
-#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);
-}
-
-
-
diff --git a/TC/unit/tc_gen.sh b/TC/unit/tc_gen.sh
deleted file mode 100755 (executable)
index 54f482d..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/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"
diff --git a/TC/unit/utc_MODULE_API_func.c.in b/TC/unit/utc_MODULE_API_func.c.in
deleted file mode 100755 (executable)
index 5edf1b7..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-#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);
-}
index 829befb..97ec628 100755 (executable)
@@ -8,14 +8,15 @@ test -z "$srcdir" && srcdir=.
 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
+
index 5dce928..2950238 100644 (file)
@@ -1,11 +1 @@
-SUBDIRS = autotools
-
-test-report:
-       @true
-
-test:
-       @true
-
-check-local: test
-
-.PHONY: test-report test check-local
+SUBDIRS = autotools win32
index 31d36d7..663f44d 100644 (file)
@@ -1,23 +1,12 @@
 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
index 0f34732..7e2e8a4 100644 (file)
@@ -24,7 +24,7 @@ BUILT_SOURCES += $(glib_enum_h) $(glib_enum_c)
 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)) \
@@ -35,7 +35,7 @@ $(glib_enum_h): stamp-enum-types
        @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) \
diff --git a/build/autotools/Makefile.am.gitignore b/build/autotools/Makefile.am.gitignore
new file mode 100644 (file)
index 0000000..01611a8
--- /dev/null
@@ -0,0 +1,30 @@
+# 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
diff --git a/build/autotools/Makefile.am.gtest b/build/autotools/Makefile.am.gtest
deleted file mode 100644 (file)
index a01d1b0..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-# 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
index cab117d..f2b4996 100644 (file)
@@ -23,7 +23,7 @@ BUILT_SOURCES += $(marshal_h) $(marshal_c)
 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 \
@@ -35,7 +35,7 @@ $(marshal_h): stamp-marshal
        @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 \
diff --git a/build/autotools/Makefile.am.silent b/build/autotools/Makefile.am.silent
deleted file mode 100644 (file)
index 249f6af..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-# 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
diff --git a/build/autotools/as-linguas.m4 b/build/autotools/as-linguas.m4
new file mode 100644 (file)
index 0000000..92b28f7
--- /dev/null
@@ -0,0 +1,24 @@
+# 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)
+])
diff --git a/build/autotools/glib-tap.mk b/build/autotools/glib-tap.mk
new file mode 100644 (file)
index 0000000..7a634cd
--- /dev/null
@@ -0,0 +1,134 @@
+# 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
diff --git a/build/autotools/glibtests.m4 b/build/autotools/glibtests.m4
new file mode 100644 (file)
index 0000000..27e9024
--- /dev/null
@@ -0,0 +1,28 @@
+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
+])
diff --git a/build/autotools/gtk-doc.m4 b/build/autotools/gtk-doc.m4
deleted file mode 100644 (file)
index 2cfa1e7..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-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"])
-])
index f9ce49c..d89c3d9 100644 (file)
@@ -41,6 +41,8 @@ m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL],
     ],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@:>@])
@@ -59,12 +61,18 @@ m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL],
        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")
 ])
diff --git a/build/autotools/jh-catalog.m4 b/build/autotools/jh-catalog.m4
new file mode 100644 (file)
index 0000000..dd01f16
--- /dev/null
@@ -0,0 +1,54 @@
+# 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
+])
diff --git a/build/autotools/ltoptions.m4 b/build/autotools/ltoptions.m4
deleted file mode 100644 (file)
index 34151a3..0000000
+++ /dev/null
@@ -1,368 +0,0 @@
-# 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])])
diff --git a/build/autotools/ltsugar.m4 b/build/autotools/ltsugar.m4
deleted file mode 100644 (file)
index 9000a05..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-# 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
-])
diff --git a/build/autotools/ltversion.m4 b/build/autotools/ltversion.m4
deleted file mode 100644 (file)
index f3c5309..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-# 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)
-])
diff --git a/build/autotools/lt~obsolete.m4 b/build/autotools/lt~obsolete.m4
deleted file mode 100644 (file)
index 637bb20..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-# 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])])
diff --git a/build/autotools/shave-libtool.in b/build/autotools/shave-libtool.in
deleted file mode 100644 (file)
index 1f3a720..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/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
diff --git a/build/autotools/shave.in b/build/autotools/shave.in
deleted file mode 100644 (file)
index 5c16f27..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/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
diff --git a/build/autotools/shave.m4 b/build/autotools/shave.m4
deleted file mode 100644 (file)
index 0a3509e..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-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)
-])
-
diff --git a/build/autotools/tap-driver.sh b/build/autotools/tap-driver.sh
new file mode 100755 (executable)
index 0000000..19aa531
--- /dev/null
@@ -0,0 +1,652 @@
+#! /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:
diff --git a/build/autotools/tap-test b/build/autotools/tap-test
new file mode 100755 (executable)
index 0000000..481e333
--- /dev/null
@@ -0,0 +1,5 @@
+#! /bin/sh
+
+# run a GTest in tap mode. The test binary is passed as $1
+
+$1 -k --tap
diff --git a/build/win32/.gitignore b/build/win32/.gitignore
new file mode 100644 (file)
index 0000000..33005d2
--- /dev/null
@@ -0,0 +1,4 @@
+/config.h.win32
+/vs10/json-glib.vcxproj
+/vs10/json-glib.vcxproj.filters
+/vs9/json-glib.vcproj
diff --git a/build/win32/Makefile.am b/build/win32/Makefile.am
new file mode 100644 (file)
index 0000000..eea13ac
--- /dev/null
@@ -0,0 +1,9 @@
+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
diff --git a/build/win32/config.h.win32.in b/build/win32/config.h.win32.in
new file mode 100644 (file)
index 0000000..f150ce1
--- /dev/null
@@ -0,0 +1,100 @@
+/* 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
diff --git a/build/win32/detectenv_msvc.mak b/build/win32/detectenv_msvc.mak
new file mode 100644 (file)
index 0000000..020548a
--- /dev/null
@@ -0,0 +1,65 @@
+# 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
diff --git a/build/win32/gen-file-list-jsonglib.py b/build/win32/gen-file-list-jsonglib.py
new file mode 100644 (file)
index 0000000..9e1c43f
--- /dev/null
@@ -0,0 +1,115 @@
+#!/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))
diff --git a/build/win32/introspection-msvc.mak b/build/win32/introspection-msvc.mak
new file mode 100644 (file)
index 0000000..d637cc7
--- /dev/null
@@ -0,0 +1,79 @@
+# 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
diff --git a/build/win32/json-glib-introspection-msvc.mak b/build/win32/json-glib-introspection-msvc.mak
new file mode 100644 (file)
index 0000000..9089e28
--- /dev/null
@@ -0,0 +1,59 @@
+# 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
diff --git a/build/win32/vs10/Makefile.am b/build/win32/vs10/Makefile.am
new file mode 100644 (file)
index 0000000..de03edc
--- /dev/null
@@ -0,0 +1,47 @@
+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)
diff --git a/build/win32/vs10/README.txt b/build/win32/vs10/README.txt
new file mode 100644 (file)
index 0000000..cfedc82
--- /dev/null
@@ -0,0 +1,92 @@
+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
diff --git a/build/win32/vs10/array.vcxproj b/build/win32/vs10/array.vcxproj
new file mode 100644 (file)
index 0000000..7ec8e00
--- /dev/null
@@ -0,0 +1,171 @@
+<?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>
diff --git a/build/win32/vs10/array.vcxproj.filters b/build/win32/vs10/array.vcxproj.filters
new file mode 100644 (file)
index 0000000..f14dfb1
--- /dev/null
@@ -0,0 +1,14 @@
+<?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>
diff --git a/build/win32/vs10/boxed.vcxproj b/build/win32/vs10/boxed.vcxproj
new file mode 100644 (file)
index 0000000..1397634
--- /dev/null
@@ -0,0 +1,171 @@
+<?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>
diff --git a/build/win32/vs10/boxed.vcxproj.filters b/build/win32/vs10/boxed.vcxproj.filters
new file mode 100644 (file)
index 0000000..30f52f1
--- /dev/null
@@ -0,0 +1,14 @@
+<?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>
diff --git a/build/win32/vs10/builder.vcxproj b/build/win32/vs10/builder.vcxproj
new file mode 100644 (file)
index 0000000..34e1106
--- /dev/null
@@ -0,0 +1,171 @@
+<?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>
diff --git a/build/win32/vs10/builder.vcxproj.filters b/build/win32/vs10/builder.vcxproj.filters
new file mode 100644 (file)
index 0000000..5a863c1
--- /dev/null
@@ -0,0 +1,14 @@
+<?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>
diff --git a/build/win32/vs10/generator.vcxproj b/build/win32/vs10/generator.vcxproj
new file mode 100644 (file)
index 0000000..ec71341
--- /dev/null
@@ -0,0 +1,171 @@
+<?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>
diff --git a/build/win32/vs10/generator.vcxproj.filters b/build/win32/vs10/generator.vcxproj.filters
new file mode 100644 (file)
index 0000000..554c572
--- /dev/null
@@ -0,0 +1,14 @@
+<?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>
diff --git a/build/win32/vs10/gvariant.vcxproj b/build/win32/vs10/gvariant.vcxproj
new file mode 100644 (file)
index 0000000..382908c
--- /dev/null
@@ -0,0 +1,162 @@
+<?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>
diff --git a/build/win32/vs10/gvariant.vcxproj.filters b/build/win32/vs10/gvariant.vcxproj.filters
new file mode 100644 (file)
index 0000000..f273c99
--- /dev/null
@@ -0,0 +1,14 @@
+<?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>
diff --git a/build/win32/vs10/install.vcxproj b/build/win32/vs10/install.vcxproj
new file mode 100644 (file)
index 0000000..b7875f5
--- /dev/null
@@ -0,0 +1,106 @@
+<?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>
diff --git a/build/win32/vs10/invalid.vcxproj b/build/win32/vs10/invalid.vcxproj
new file mode 100644 (file)
index 0000000..5107991
--- /dev/null
@@ -0,0 +1,171 @@
+<?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>
diff --git a/build/win32/vs10/invalid.vcxproj.filters b/build/win32/vs10/invalid.vcxproj.filters
new file mode 100644 (file)
index 0000000..322c279
--- /dev/null
@@ -0,0 +1,14 @@
+<?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>
diff --git a/build/win32/vs10/json-glib-build-defines.props b/build/win32/vs10/json-glib-build-defines.props
new file mode 100644 (file)
index 0000000..fc92a8b
--- /dev/null
@@ -0,0 +1,30 @@
+<?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>
diff --git a/build/win32/vs10/json-glib-format.vcxproj b/build/win32/vs10/json-glib-format.vcxproj
new file mode 100644 (file)
index 0000000..8af5074
--- /dev/null
@@ -0,0 +1,166 @@
+<?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>
diff --git a/build/win32/vs10/json-glib-format.vcxproj.filters b/build/win32/vs10/json-glib-format.vcxproj.filters
new file mode 100644 (file)
index 0000000..3911577
--- /dev/null
@@ -0,0 +1,14 @@
+<?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>
diff --git a/build/win32/vs10/json-glib-gen-srcs.props b/build/win32/vs10/json-glib-gen-srcs.props
new file mode 100644 (file)
index 0000000..f5629eb
--- /dev/null
@@ -0,0 +1,17 @@
+<?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>
diff --git a/build/win32/vs10/json-glib-install.props b/build/win32/vs10/json-glib-install.props
new file mode 100644 (file)
index 0000000..996b24c
--- /dev/null
@@ -0,0 +1,62 @@
+<?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>
diff --git a/build/win32/vs10/json-glib-validate.vcxproj b/build/win32/vs10/json-glib-validate.vcxproj
new file mode 100644 (file)
index 0000000..f847fc3
--- /dev/null
@@ -0,0 +1,166 @@
+<?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>
diff --git a/build/win32/vs10/json-glib-validate.vcxproj.filters b/build/win32/vs10/json-glib-validate.vcxproj.filters
new file mode 100644 (file)
index 0000000..6f9b5c3
--- /dev/null
@@ -0,0 +1,14 @@
+<?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>
diff --git a/build/win32/vs10/json-glib-version-paths.props b/build/win32/vs10/json-glib-version-paths.props
new file mode 100644 (file)
index 0000000..0e0eca5
--- /dev/null
@@ -0,0 +1,54 @@
+<?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>
diff --git a/build/win32/vs10/json-glib.sln b/build/win32/vs10/json-glib.sln
new file mode 100644 (file)
index 0000000..b9cf48c
--- /dev/null
@@ -0,0 +1,196 @@
+\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
diff --git a/build/win32/vs10/json-glib.vcxproj.filtersin b/build/win32/vs10/json-glib.vcxproj.filtersin
new file mode 100644 (file)
index 0000000..30ea641
--- /dev/null
@@ -0,0 +1,23 @@
+<?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>
diff --git a/build/win32/vs10/json-glib.vcxprojin b/build/win32/vs10/json-glib.vcxprojin
new file mode 100644 (file)
index 0000000..b41c6c4
--- /dev/null
@@ -0,0 +1,191 @@
+<?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>
diff --git a/build/win32/vs10/node.vcxproj b/build/win32/vs10/node.vcxproj
new file mode 100644 (file)
index 0000000..9c34843
--- /dev/null
@@ -0,0 +1,171 @@
+<?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>
diff --git a/build/win32/vs10/node.vcxproj.filters b/build/win32/vs10/node.vcxproj.filters
new file mode 100644 (file)
index 0000000..32c66c2
--- /dev/null
@@ -0,0 +1,14 @@
+<?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>
diff --git a/build/win32/vs10/object.vcxproj b/build/win32/vs10/object.vcxproj
new file mode 100644 (file)
index 0000000..03682f3
--- /dev/null
@@ -0,0 +1,171 @@
+<?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>
diff --git a/build/win32/vs10/object.vcxproj.filters b/build/win32/vs10/object.vcxproj.filters
new file mode 100644 (file)
index 0000000..d6e9a5b
--- /dev/null
@@ -0,0 +1,13 @@
+<?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>
diff --git a/build/win32/vs10/parser.vcxproj b/build/win32/vs10/parser.vcxproj
new file mode 100644 (file)
index 0000000..3d99594
--- /dev/null
@@ -0,0 +1,171 @@
+<?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>
diff --git a/build/win32/vs10/parser.vcxproj.filters b/build/win32/vs10/parser.vcxproj.filters
new file mode 100644 (file)
index 0000000..c164d40
--- /dev/null
@@ -0,0 +1,14 @@
+<?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>
diff --git a/build/win32/vs10/path.vcxproj b/build/win32/vs10/path.vcxproj
new file mode 100644 (file)
index 0000000..04e8139
--- /dev/null
@@ -0,0 +1,162 @@
+<?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>
diff --git a/build/win32/vs10/path.vcxproj.filters b/build/win32/vs10/path.vcxproj.filters
new file mode 100644 (file)
index 0000000..80ca3d1
--- /dev/null
@@ -0,0 +1,14 @@
+<?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>
diff --git a/build/win32/vs10/reader.vcxproj b/build/win32/vs10/reader.vcxproj
new file mode 100644 (file)
index 0000000..61b5418
--- /dev/null
@@ -0,0 +1,172 @@
+<?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>
diff --git a/build/win32/vs10/reader.vcxproj.filters b/build/win32/vs10/reader.vcxproj.filters
new file mode 100644 (file)
index 0000000..1049043
--- /dev/null
@@ -0,0 +1,14 @@
+<?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>
diff --git a/build/win32/vs10/serialize-complex.vcxproj b/build/win32/vs10/serialize-complex.vcxproj
new file mode 100644 (file)
index 0000000..428ed79
--- /dev/null
@@ -0,0 +1,170 @@
+<?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>
diff --git a/build/win32/vs10/serialize-complex.vcxproj.filters b/build/win32/vs10/serialize-complex.vcxproj.filters
new file mode 100644 (file)
index 0000000..5a2d8b5
--- /dev/null
@@ -0,0 +1,14 @@
+<?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>
diff --git a/build/win32/vs10/serialize-full.vcxproj b/build/win32/vs10/serialize-full.vcxproj
new file mode 100644 (file)
index 0000000..7e7e94d
--- /dev/null
@@ -0,0 +1,171 @@
+<?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>
diff --git a/build/win32/vs10/serialize-full.vcxproj.filters b/build/win32/vs10/serialize-full.vcxproj.filters
new file mode 100644 (file)
index 0000000..b7c69b9
--- /dev/null
@@ -0,0 +1,14 @@
+<?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>
diff --git a/build/win32/vs10/serialize-simple.vcxproj b/build/win32/vs10/serialize-simple.vcxproj
new file mode 100644 (file)
index 0000000..596d57f
--- /dev/null
@@ -0,0 +1,170 @@
+<?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>
diff --git a/build/win32/vs10/serialize-simple.vcxproj.filters b/build/win32/vs10/serialize-simple.vcxproj.filters
new file mode 100644 (file)
index 0000000..3fc20bd
--- /dev/null
@@ -0,0 +1,14 @@
+<?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>
diff --git a/build/win32/vs9/Makefile.am b/build/win32/vs9/Makefile.am
new file mode 100644 (file)
index 0000000..8e24fc0
--- /dev/null
@@ -0,0 +1,29 @@
+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)
diff --git a/build/win32/vs9/README.txt b/build/win32/vs9/README.txt
new file mode 100644 (file)
index 0000000..734e7df
--- /dev/null
@@ -0,0 +1,91 @@
+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
diff --git a/build/win32/vs9/array.vcproj b/build/win32/vs9/array.vcproj
new file mode 100644 (file)
index 0000000..77c6f03
--- /dev/null
@@ -0,0 +1,153 @@
+<?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>
diff --git a/build/win32/vs9/boxed.vcproj b/build/win32/vs9/boxed.vcproj
new file mode 100644 (file)
index 0000000..61f3891
--- /dev/null
@@ -0,0 +1,153 @@
+<?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>
diff --git a/build/win32/vs9/builder.vcproj b/build/win32/vs9/builder.vcproj
new file mode 100644 (file)
index 0000000..cc00f7a
--- /dev/null
@@ -0,0 +1,153 @@
+<?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>
diff --git a/build/win32/vs9/generator.vcproj b/build/win32/vs9/generator.vcproj
new file mode 100644 (file)
index 0000000..bd369bc
--- /dev/null
@@ -0,0 +1,153 @@
+<?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>
diff --git a/build/win32/vs9/gvariant.vcproj b/build/win32/vs9/gvariant.vcproj
new file mode 100644 (file)
index 0000000..4164a65
--- /dev/null
@@ -0,0 +1,147 @@
+<?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>
diff --git a/build/win32/vs9/install.vcproj b/build/win32/vs9/install.vcproj
new file mode 100644 (file)
index 0000000..7edd513
--- /dev/null
@@ -0,0 +1,77 @@
+<?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>
diff --git a/build/win32/vs9/invalid.vcproj b/build/win32/vs9/invalid.vcproj
new file mode 100644 (file)
index 0000000..7065cbe
--- /dev/null
@@ -0,0 +1,153 @@
+<?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>
diff --git a/build/win32/vs9/json-glib-build-defines.vsprops b/build/win32/vs9/json-glib-build-defines.vsprops
new file mode 100644 (file)
index 0000000..3d2dbc0
--- /dev/null
@@ -0,0 +1,25 @@
+<?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=\&quot;Json\&quot;;JSON_LOCALEDIR=\&quot;/dummy\&quot;"
+       />
+</VisualStudioPropertySheet>
diff --git a/build/win32/vs9/json-glib-format.vcproj b/build/win32/vs9/json-glib-format.vcproj
new file mode 100644 (file)
index 0000000..c2640ba
--- /dev/null
@@ -0,0 +1,151 @@
+<?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>
diff --git a/build/win32/vs9/json-glib-gen-srcs.vsprops b/build/win32/vs9/json-glib-gen-srcs.vsprops
new file mode 100644 (file)
index 0000000..aa4fee6
--- /dev/null
@@ -0,0 +1,12 @@
+<?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>
diff --git a/build/win32/vs9/json-glib-install.vsprops b/build/win32/vs9/json-glib-install.vsprops
new file mode 100644 (file)
index 0000000..eef10c1
--- /dev/null
@@ -0,0 +1,38 @@
+<?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)&#x0D;&#x0A;
+mkdir $(CopyDir)\bin&#x0D;&#x0A;
+mkdir $(CopyDir)\lib&#x0D;&#x0A;
+
+copy $(SolutionDir)$(ConfigurationName)\$(PlatformName)\bin\*.lib $(CopyDir)\lib&#x0D;&#x0A;
+
+copy $(SolutionDir)$(ConfigurationName)\$(PlatformName)\bin\$(JsonGlibDllPrefix)json-glib$(JsonGlibDllSuffix).dll $(CopyDir)\bin&#x0D;&#x0A;
+copy $(SolutionDir)$(ConfigurationName)\$(PlatformName)\bin\json-glib-format.exe $(CopyDir)\bin&#x0D;&#x0A;
+copy $(SolutionDir)$(ConfigurationName)\$(PlatformName)\bin\json-glib-validate.exe $(CopyDir)\bin&#x0D;&#x0A;
+
+mkdir $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib&#x0D;&#x0A;
+
+copy ..\..\..\json-glib\json-enum-types.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib&#x0D;&#x0A;
+copy ..\..\..\json-glib\json-version.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib&#x0D;&#x0A;
+copy ..\..\..\json-glib\json-glib.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib&#x0D;&#x0A;
+
+copy ..\..\..\json-glib\json-builder.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib&#x0D;&#x0A;
+copy ..\..\..\json-glib\json-generator.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib&#x0D;&#x0A;
+copy ..\..\..\json-glib\json-gobject.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib&#x0D;&#x0A;
+copy ..\..\..\json-glib\json-gvariant.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib&#x0D;&#x0A;
+copy ..\..\..\json-glib\json-path.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib&#x0D;&#x0A;
+copy ..\..\..\json-glib\json-parser.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib&#x0D;&#x0A;
+copy ..\..\..\json-glib\json-reader.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib&#x0D;&#x0A;
+copy ..\..\..\json-glib\json-types.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib&#x0D;&#x0A;
+copy ..\..\..\json-glib\json-version-macros.h $(CopyDir)\include\json-glib-$(ApiVersion)\json-glib&#x0D;&#x0A;
+"
+       />
+</VisualStudioPropertySheet>
diff --git a/build/win32/vs9/json-glib-validate.vcproj b/build/win32/vs9/json-glib-validate.vcproj
new file mode 100644 (file)
index 0000000..1550deb
--- /dev/null
@@ -0,0 +1,151 @@
+<?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>
diff --git a/build/win32/vs9/json-glib-version-paths.vsprops b/build/win32/vs9/json-glib-version-paths.vsprops
new file mode 100644 (file)
index 0000000..cade5f9
--- /dev/null
@@ -0,0 +1,53 @@
+<?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>
diff --git a/build/win32/vs9/json-glib.sln b/build/win32/vs9/json-glib.sln
new file mode 100644 (file)
index 0000000..b12848f
--- /dev/null
@@ -0,0 +1,249 @@
+\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
diff --git a/build/win32/vs9/json-glib.vcprojin b/build/win32/vs9/json-glib.vcprojin
new file mode 100644 (file)
index 0000000..4f13c72
--- /dev/null
@@ -0,0 +1,198 @@
+<?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>
diff --git a/build/win32/vs9/node.vcproj b/build/win32/vs9/node.vcproj
new file mode 100644 (file)
index 0000000..2e9b538
--- /dev/null
@@ -0,0 +1,153 @@
+<?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>
diff --git a/build/win32/vs9/object.vcproj b/build/win32/vs9/object.vcproj
new file mode 100644 (file)
index 0000000..7115902
--- /dev/null
@@ -0,0 +1,151 @@
+<?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>
diff --git a/build/win32/vs9/parser.vcproj b/build/win32/vs9/parser.vcproj
new file mode 100644 (file)
index 0000000..067b29c
--- /dev/null
@@ -0,0 +1,162 @@
+<?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>
diff --git a/build/win32/vs9/path.vcproj b/build/win32/vs9/path.vcproj
new file mode 100644 (file)
index 0000000..36e45b0
--- /dev/null
@@ -0,0 +1,147 @@
+<?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>
diff --git a/build/win32/vs9/reader.vcproj b/build/win32/vs9/reader.vcproj
new file mode 100644 (file)
index 0000000..5af2133
--- /dev/null
@@ -0,0 +1,154 @@
+<?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>
diff --git a/build/win32/vs9/serialize-complex.vcproj b/build/win32/vs9/serialize-complex.vcproj
new file mode 100644 (file)
index 0000000..76c60d6
--- /dev/null
@@ -0,0 +1,152 @@
+<?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>
diff --git a/build/win32/vs9/serialize-full.vcproj b/build/win32/vs9/serialize-full.vcproj
new file mode 100644 (file)
index 0000000..4f29fda
--- /dev/null
@@ -0,0 +1,153 @@
+<?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>
diff --git a/build/win32/vs9/serialize-simple.vcproj b/build/win32/vs9/serialize-simple.vcproj
new file mode 100644 (file)
index 0000000..0098c8e
--- /dev/null
@@ -0,0 +1,152 @@
+<?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>
diff --git a/compile b/compile
deleted file mode 100755 (executable)
index c0096a7..0000000
--- a/compile
+++ /dev/null
@@ -1,143 +0,0 @@
-#! /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:
diff --git a/config.h.in b/config.h.in
deleted file mode 100644 (file)
index 20ffed8..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-/* 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
index 6e43f28..9be283f 100644 (file)
@@ -1,8 +1,8 @@
 # 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])
 
@@ -13,36 +13,42 @@ m4_define([json_release_status],
 
 # 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
@@ -59,30 +65,105 @@ JSON_LT_REVISION=lt_revision
 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])
 
@@ -109,60 +190,198 @@ AS_CASE([$enable_debug],
 
 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
@@ -175,11 +394,12 @@ echo ""
 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 ""
diff --git a/debian/compat b/debian/compat
deleted file mode 100644 (file)
index 7ed6ff8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-5
diff --git a/debian/control b/debian/control
deleted file mode 100644 (file)
index 619300a..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-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)
diff --git a/debian/copyright b/debian/copyright
deleted file mode 100644 (file)
index 95371f4..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-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.
-
diff --git a/debian/docs b/debian/docs
deleted file mode 100644 (file)
index 6f12db5..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-AUTHORS
-README
diff --git a/debian/libjson-glib-dev.install.in b/debian/libjson-glib-dev.install.in
deleted file mode 100644 (file)
index 149ed9a..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-@PREFIX@/include/json-glib-1.0/json-glib/*.h
-@PREFIX@/lib/pkgconfig/*.pc
diff --git a/debian/libjson-glib.install.in b/debian/libjson-glib.install.in
deleted file mode 100644 (file)
index bf766f0..0000000
+++ /dev/null
@@ -1 +0,0 @@
-@PREFIX@/lib/*.so*
diff --git a/debian/rules b/debian/rules
deleted file mode 100755 (executable)
index 61232ca..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-#!/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 
diff --git a/depcomp b/depcomp
deleted file mode 100755 (executable)
index df8eea7..0000000
--- a/depcomp
+++ /dev/null
@@ -1,630 +0,0 @@
-#! /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:
diff --git a/doc/draft-zyp-json-schema-02.txt b/doc/draft-zyp-json-schema-02.txt
new file mode 100644 (file)
index 0000000..5e72fee
--- /dev/null
@@ -0,0 +1,1345 @@
+
+
+
+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
+
index 6e7e33c..d9ef4a1 100644 (file)
@@ -16,7 +16,7 @@ DOC_MAIN_SGML_FILE = $(DOC_MODULE)-docs.xml
 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" 
@@ -24,7 +24,7 @@ SCAN_OPTIONS = --deprecated-guards="JSON_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
@@ -34,7 +34,8 @@ MKTMPL_OPTIONS =
 # 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
@@ -51,7 +52,8 @@ IGNORE_HFILES = \
        json-private.h          \
        json-marshal.h          \
        json-glib.h             \
-       json-enum-types.h
+       json-enum-types.h       \
+       json-debug.h
 
 EXTRA_HFILES =
 
@@ -61,7 +63,10 @@ HTML_IMAGES =
 
 # 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
@@ -74,23 +79,34 @@ expand_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)
diff --git a/doc/reference/html/JsonGenerator.html b/doc/reference/html/JsonGenerator.html
deleted file mode 100644 (file)
index 6deb588..0000000
+++ /dev/null
@@ -1,268 +0,0 @@
-<!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
diff --git a/doc/reference/html/JsonParser.html b/doc/reference/html/JsonParser.html
deleted file mode 100644 (file)
index 08af3a5..0000000
+++ /dev/null
@@ -1,704 +0,0 @@
-<!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
diff --git a/doc/reference/html/annotation-glossary.html b/doc/reference/html/annotation-glossary.html
deleted file mode 100644 (file)
index 62f1725..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-<!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
diff --git a/doc/reference/html/ch01.html b/doc/reference/html/ch01.html
deleted file mode 100644 (file)
index 4f0d310..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-<!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
diff --git a/doc/reference/html/ch02.html b/doc/reference/html/ch02.html
deleted file mode 100644 (file)
index e81431a..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-<!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
diff --git a/doc/reference/html/ch03.html b/doc/reference/html/ch03.html
deleted file mode 100644 (file)
index 0c17f0b..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-<!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
diff --git a/doc/reference/html/ch04.html b/doc/reference/html/ch04.html
deleted file mode 100644 (file)
index 54fd40c..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-<!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
diff --git a/doc/reference/html/home.png b/doc/reference/html/home.png
deleted file mode 100644 (file)
index 1700361..0000000
Binary files a/doc/reference/html/home.png and /dev/null differ
diff --git a/doc/reference/html/index.html b/doc/reference/html/index.html
deleted file mode 100644 (file)
index 408f136..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-<!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
diff --git a/doc/reference/html/index.sgml b/doc/reference/html/index.sgml
deleted file mode 100644 (file)
index 273c952..0000000
+++ /dev/null
@@ -1,201 +0,0 @@
-<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">
diff --git a/doc/reference/html/ix01.html b/doc/reference/html/ix01.html
deleted file mode 100644 (file)
index 8dd40a2..0000000
+++ /dev/null
@@ -1,374 +0,0 @@
-<!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
diff --git a/doc/reference/html/ix02.html b/doc/reference/html/ix02.html
deleted file mode 100644 (file)
index 9ce8457..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-<!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
diff --git a/doc/reference/html/ix03.html b/doc/reference/html/ix03.html
deleted file mode 100644 (file)
index 571482f..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-<!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
diff --git a/doc/reference/html/ix04.html b/doc/reference/html/ix04.html
deleted file mode 100644 (file)
index 13adead..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-<!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
diff --git a/doc/reference/html/ix05.html b/doc/reference/html/ix05.html
deleted file mode 100644 (file)
index 989aab2..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-<!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
diff --git a/doc/reference/html/ix06.html b/doc/reference/html/ix06.html
deleted file mode 100644 (file)
index 8d5c794..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-<!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
diff --git a/doc/reference/html/json-advanced.html b/doc/reference/html/json-advanced.html
deleted file mode 100644 (file)
index 842f9b0..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-<!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
diff --git a/doc/reference/html/json-base.html b/doc/reference/html/json-base.html
deleted file mode 100644 (file)
index ccc9ea5..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-<!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
diff --git a/doc/reference/html/json-glib-Boxed-Types-Serialization.html b/doc/reference/html/json-glib-Boxed-Types-Serialization.html
deleted file mode 100644 (file)
index 35d7e04..0000000
+++ /dev/null
@@ -1,377 +0,0 @@
-<!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
diff --git a/doc/reference/html/json-glib-GObject-Serialization.html b/doc/reference/html/json-glib-GObject-Serialization.html
deleted file mode 100644 (file)
index 8093b2c..0000000
+++ /dev/null
@@ -1,323 +0,0 @@
-<!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
diff --git a/doc/reference/html/json-glib-JSON-Array.html b/doc/reference/html/json-glib-JSON-Array.html
deleted file mode 100644 (file)
index ca94411..0000000
+++ /dev/null
@@ -1,858 +0,0 @@
-<!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
diff --git a/doc/reference/html/json-glib-JSON-Node.html b/doc/reference/html/json-glib-JSON-Node.html
deleted file mode 100644 (file)
index 04f80c3..0000000
+++ /dev/null
@@ -1,930 +0,0 @@
-<!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
diff --git a/doc/reference/html/json-glib-JSON-Object.html b/doc/reference/html/json-glib-JSON-Object.html
deleted file mode 100644 (file)
index 2a943eb..0000000
+++ /dev/null
@@ -1,1008 +0,0 @@
-<!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
diff --git a/doc/reference/html/json-glib-Serializable-Interface.html b/doc/reference/html/json-glib-Serializable-Interface.html
deleted file mode 100644 (file)
index 4d408b9..0000000
+++ /dev/null
@@ -1,352 +0,0 @@
-<!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-&gt;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-&gt;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
diff --git a/doc/reference/html/json-glib-Versioning-information.html b/doc/reference/html/json-glib-Versioning-information.html
deleted file mode 100644 (file)
index 5108623..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-<!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
diff --git a/doc/reference/html/json-glib.devhelp b/doc/reference/html/json-glib.devhelp
deleted file mode 100644 (file)
index 95e1ad7..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-<?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 &quot;array-element&quot; signal" link="JsonParser.html#JsonParser-array-element"/>
-    <function name="The &quot;array-end&quot; signal" link="JsonParser.html#JsonParser-array-end"/>
-    <function name="The &quot;array-start&quot; signal" link="JsonParser.html#JsonParser-array-start"/>
-    <function name="The &quot;error&quot; signal" link="JsonParser.html#JsonParser-error"/>
-    <function name="The &quot;object-end&quot; signal" link="JsonParser.html#JsonParser-object-end"/>
-    <function name="The &quot;object-member&quot; signal" link="JsonParser.html#JsonParser-object-member"/>
-    <function name="The &quot;object-start&quot; signal" link="JsonParser.html#JsonParser-object-start"/>
-    <function name="The &quot;parse-end&quot; signal" link="JsonParser.html#JsonParser-parse-end"/>
-    <function name="The &quot;parse-start&quot; 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 &quot;indent&quot; property" link="JsonGenerator.html#JsonGenerator--indent"/>
-    <function name="The &quot;indent-char&quot; property" link="JsonGenerator.html#JsonGenerator--indent-char"/>
-    <function name="The &quot;pretty&quot; property" link="JsonGenerator.html#JsonGenerator--pretty"/>
-    <function name="The &quot;root&quot; 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>
diff --git a/doc/reference/html/json-glib.devhelp2 b/doc/reference/html/json-glib.devhelp2
deleted file mode 100644 (file)
index 6f2d4fc..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-<?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 &quot;array-element&quot; signal" link="JsonParser.html#JsonParser-array-element"/>
-    <keyword type="signal" name="The &quot;array-end&quot; signal" link="JsonParser.html#JsonParser-array-end"/>
-    <keyword type="signal" name="The &quot;array-start&quot; signal" link="JsonParser.html#JsonParser-array-start"/>
-    <keyword type="signal" name="The &quot;error&quot; signal" link="JsonParser.html#JsonParser-error"/>
-    <keyword type="signal" name="The &quot;object-end&quot; signal" link="JsonParser.html#JsonParser-object-end"/>
-    <keyword type="signal" name="The &quot;object-member&quot; signal" link="JsonParser.html#JsonParser-object-member"/>
-    <keyword type="signal" name="The &quot;object-start&quot; signal" link="JsonParser.html#JsonParser-object-start"/>
-    <keyword type="signal" name="The &quot;parse-end&quot; signal" link="JsonParser.html#JsonParser-parse-end"/>
-    <keyword type="signal" name="The &quot;parse-start&quot; 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 &quot;indent&quot; property" link="JsonGenerator.html#JsonGenerator--indent"/>
-    <keyword type="property" name="The &quot;indent-char&quot; property" link="JsonGenerator.html#JsonGenerator--indent-char"/>
-    <keyword type="property" name="The &quot;pretty&quot; property" link="JsonGenerator.html#JsonGenerator--pretty"/>
-    <keyword type="property" name="The &quot;root&quot; 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>
diff --git a/doc/reference/html/json-glib.html b/doc/reference/html/json-glib.html
deleted file mode 100644 (file)
index e3ecb39..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-<!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
diff --git a/doc/reference/html/json-streams.html b/doc/reference/html/json-streams.html
deleted file mode 100644 (file)
index b6cdcba..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-<!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
diff --git a/doc/reference/html/json-tools.html b/doc/reference/html/json-tools.html
deleted file mode 100644 (file)
index 817481f..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-<!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
diff --git a/doc/reference/html/left.png b/doc/reference/html/left.png
deleted file mode 100644 (file)
index 2d05b3d..0000000
Binary files a/doc/reference/html/left.png and /dev/null differ
diff --git a/doc/reference/html/license.html b/doc/reference/html/license.html
deleted file mode 100644 (file)
index 7ac7338..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-<!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
diff --git a/doc/reference/html/right.png b/doc/reference/html/right.png
deleted file mode 100644 (file)
index 92832e3..0000000
Binary files a/doc/reference/html/right.png and /dev/null differ
diff --git a/doc/reference/html/style.css b/doc/reference/html/style.css
deleted file mode 100644 (file)
index e31596b..0000000
+++ /dev/null
@@ -1,257 +0,0 @@
-.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;
-}
-
diff --git a/doc/reference/html/up.png b/doc/reference/html/up.png
deleted file mode 100644 (file)
index 85b3e2a..0000000
Binary files a/doc/reference/html/up.png and /dev/null differ
index 6fa1fe6..e3b6425 100644 (file)
@@ -15,7 +15,7 @@
     </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>
diff --git a/doc/reference/json-glib-format.xml b/doc/reference/json-glib-format.xml
new file mode 100644 (file)
index 0000000..d4ba59e
--- /dev/null
@@ -0,0 +1,81 @@
+<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>
diff --git a/doc/reference/json-glib-overrides.txt b/doc/reference/json-glib-overrides.txt
deleted file mode 100644 (file)
index e69de29..0000000
index 951a0e4..89c1120 100644 (file)
@@ -91,6 +91,15 @@ JSON_NODE_HOLDS_VALUE
 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
@@ -129,6 +138,8 @@ json_node_get_node_type
 json_node_is_null
 
 <SUBSECTION Private>
+JSON_DEPRECATED
+JSON_DEPRECATED_FOR
 JSON_TYPE_NODE
 json_node_get_type
 </SECTION>
@@ -144,6 +155,9 @@ JsonParserClass
 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
@@ -175,9 +189,19 @@ json_parser_error_quark
 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
@@ -198,6 +222,10 @@ json_generator_get_type
 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
@@ -243,6 +271,16 @@ json_serialize_gobject
 </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
@@ -256,4 +294,116 @@ JSON_VERSION_HEX
 
 <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>
diff --git a/doc/reference/json-glib-validate.xml b/doc/reference/json-glib-validate.xml
new file mode 100644 (file)
index 0000000..1cd5c6d
--- /dev/null
@@ -0,0 +1,67 @@
+<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>
index 28cf10b..d937207 100644 (file)
@@ -1,2 +1,7 @@
+#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
diff --git a/doc/reference/tmpl/json-array.sgml b/doc/reference/tmpl/json-array.sgml
deleted file mode 100644 (file)
index 8cea54f..0000000
+++ /dev/null
@@ -1,270 +0,0 @@
-<!-- ##### 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: 
-
-
diff --git a/doc/reference/tmpl/json-gboxed.sgml b/doc/reference/tmpl/json-gboxed.sgml
deleted file mode 100644 (file)
index 18ea71f..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-<!-- ##### 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: 
-
-
diff --git a/doc/reference/tmpl/json-generator.sgml b/doc/reference/tmpl/json-generator.sgml
deleted file mode 100644 (file)
index 9aec95c..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-<!-- ##### 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: 
-
-
diff --git a/doc/reference/tmpl/json-glib-unused.sgml b/doc/reference/tmpl/json-glib-unused.sgml
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/doc/reference/tmpl/json-gobject.sgml b/doc/reference/tmpl/json-gobject.sgml
deleted file mode 100644 (file)
index ae24d34..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-<!-- ##### 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: 
-
-
diff --git a/doc/reference/tmpl/json-node.sgml b/doc/reference/tmpl/json-node.sgml
deleted file mode 100644 (file)
index 1b06d53..0000000
+++ /dev/null
@@ -1,337 +0,0 @@
-<!-- ##### 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: 
-
-
diff --git a/doc/reference/tmpl/json-object.sgml b/doc/reference/tmpl/json-object.sgml
deleted file mode 100644 (file)
index d80fa56..0000000
+++ /dev/null
@@ -1,298 +0,0 @@
-<!-- ##### 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: 
-
-
diff --git a/doc/reference/tmpl/json-parser.sgml b/doc/reference/tmpl/json-parser.sgml
deleted file mode 100644 (file)
index 64f57ad..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-<!-- ##### 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: 
-
-
diff --git a/doc/reference/tmpl/json-serializable.sgml b/doc/reference/tmpl/json-serializable.sgml
deleted file mode 100644 (file)
index 01c2b8c..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-<!-- ##### 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: 
-
-
diff --git a/doc/reference/tmpl/json-version.sgml b/doc/reference/tmpl/json-version.sgml
deleted file mode 100644 (file)
index dc02e32..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-<!-- ##### 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: 
-
-
diff --git a/doc/rfc4627.txt b/doc/rfc4627.txt
new file mode 100644 (file)
index 0000000..67b8909
--- /dev/null
@@ -0,0 +1,563 @@
+
+
+
+
+
+
+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
diff --git a/gtk-doc.make b/gtk-doc.make
deleted file mode 100644 (file)
index 57fab98..0000000
+++ /dev/null
@@ -1,230 +0,0 @@
-# -*- 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
diff --git a/install-sh b/install-sh
deleted file mode 100755 (executable)
index 6781b98..0000000
+++ /dev/null
@@ -1,520 +0,0 @@
-#!/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:
diff --git a/json-glib-0.10.4 b/json-glib-0.10.4
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/json-glib.doap b/json-glib.doap
new file mode 100644 (file)
index 0000000..c608277
--- /dev/null
@@ -0,0 +1,37 @@
+<?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>
diff --git a/json-glib.pc.in b/json-glib.pc.in
deleted file mode 100644 (file)
index 0e26a47..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-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
index 6471fa9..28638b2 100644 (file)
@@ -1,59 +1,58 @@
-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
@@ -65,11 +64,22 @@ glib_marshal_list = json-marshal.list
 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 = \
@@ -79,44 +89,97 @@ 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
index 7f72e87..c747989 100644 (file)
@@ -21,9 +21,7 @@
  *   Emmanuele Bassi  <ebassi@linux.intel.com>
  */
 
-#ifdef HAVE_CONFIG_H
 #include "config.h"
-#endif
 
 #include "json-types-private.h"
 
@@ -32,7 +30,7 @@
  * @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)
@@ -78,12 +65,12 @@ 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)
@@ -104,7 +91,7 @@ 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 *
@@ -113,11 +100,8 @@ json_array_ref (JsonArray *array)
   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;
 }
 
@@ -132,15 +116,10 @@ json_array_ref (JsonArray *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;
 
@@ -158,7 +137,7 @@ json_array_unref (JsonArray *array)
  * 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
@@ -218,7 +197,7 @@ json_array_dup_element (JsonArray *array,
  * 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,
@@ -335,15 +314,9 @@ json_array_get_boolean_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;
 
@@ -352,7 +325,10 @@ json_array_get_string_element (JsonArray *array,
 
   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);
 }
@@ -382,7 +358,16 @@ json_array_get_null_element (JsonArray *array,
   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;
 }
 
 /**
@@ -410,7 +395,10 @@ json_array_get_array_element (JsonArray *array,
 
   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);
 }
@@ -440,7 +428,10 @@ json_array_get_object_element (JsonArray *array,
 
   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);
 }
@@ -464,7 +455,7 @@ json_array_get_length (JsonArray *array)
 /**
  * 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.
@@ -494,14 +485,9 @@ void
 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));
 }
 
 /**
@@ -519,14 +505,9 @@ void
 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));
 }
 
 /**
@@ -544,14 +525,9 @@ void
 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));
 }
 
 /**
@@ -572,10 +548,13 @@ json_array_add_string_element (JsonArray   *array,
   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);
 }
@@ -593,19 +572,15 @@ json_array_add_string_element (JsonArray   *array,
 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
@@ -621,10 +596,16 @@ json_array_add_array_element (JsonArray *array,
   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);
 }
@@ -632,7 +613,7 @@ json_array_add_array_element (JsonArray *array,
 /**
  * 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
@@ -648,10 +629,16 @@ json_array_add_object_element (JsonArray  *array,
   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);
 }
@@ -677,8 +664,8 @@ json_array_remove_element (JsonArray *array,
 /**
  * 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.
diff --git a/json-glib/json-builder.c b/json-glib/json-builder.c
new file mode 100644 (file)
index 0000000..f3d6599
--- /dev/null
@@ -0,0 +1,685 @@
+/* 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;
+}
diff --git a/json-glib/json-builder.h b/json-glib/json-builder.h
new file mode 100644 (file)
index 0000000..dd0bad8
--- /dev/null
@@ -0,0 +1,120 @@
+/* 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__ */
diff --git a/json-glib/json-debug.c b/json-glib/json-debug.c
new file mode 100644 (file)
index 0000000..5e72e43
--- /dev/null
@@ -0,0 +1,37 @@
+#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;
+}
diff --git a/json-glib/json-debug.h b/json-glib/json-debug.h
new file mode 100644 (file)
index 0000000..03ea96b
--- /dev/null
@@ -0,0 +1,50 @@
+#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__ */
index 96f565e..4ce965d 100644 (file)
@@ -1,12 +1,13 @@
 /*** 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
 
@@ -23,6 +24,7 @@ G_END_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())
 
index cf8e545..ef53af1 100644 (file)
@@ -32,7 +32,7 @@
  * When registering a #GBoxed type you should also register the
  * corresponding transformation functions, e.g.:
  *
- * |[
+ * |[<!-- language="C" -->
  *   GType
  *   my_struct_get_type (void)
  *   {
@@ -66,9 +66,7 @@
  * and to which specific #JsonNodeType.
  */
 
-#ifdef HAVE_CONFIG_H
 #include "config.h"
-#endif
 
 #include <string.h>
 #include <stdlib.h>
@@ -136,7 +134,7 @@ lookup_boxed_transform (GSList       *transforms,
 }
 
 /**
- * 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
@@ -181,7 +179,7 @@ json_boxed_register_serialize_func (GType                  gboxed_type,
 }
 
 /**
- * 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
@@ -298,9 +296,8 @@ json_boxed_can_deserialize (GType        gboxed_type,
  * 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
  */
@@ -328,8 +325,9 @@ json_boxed_serialize (GType         gboxed_type,
  *
  * 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
  */
index c77830e..8eed152 100644 (file)
@@ -29,9 +29,7 @@
  * put it into a buffer or a file.
  */
 
-#ifdef HAVE_CONFIG_H
 #include "config.h"
-#endif
 
 #include <stdlib.h>
 #include <string.h>
@@ -41,9 +39,6 @@
 #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;
@@ -61,13 +56,16 @@ enum
   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,
@@ -79,45 +77,69 @@ static gchar *dump_object (JsonGenerator *generator,
                            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);
@@ -129,23 +151,26 @@ json_generator_set_property (GObject      *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;
@@ -158,7 +183,7 @@ json_generator_get_property (GObject    *gobject,
                              GValue     *value,
                              GParamSpec *pspec)
 {
-  JsonGeneratorPrivate *priv = JSON_GENERATOR_GET_PRIVATE (gobject);
+  JsonGeneratorPrivate *priv = JSON_GENERATOR (gobject)->priv;
 
   switch (prop_id)
     {
@@ -185,12 +210,6 @@ json_generator_class_init (JsonGeneratorClass *klass)
 {
   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:
    *
@@ -198,26 +217,26 @@ json_generator_class_init (JsonGeneratorClass *klass)
    * 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:
    *
@@ -226,13 +245,13 @@ json_generator_class_init (JsonGeneratorClass *klass)
    *
    * 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:
    *
@@ -240,21 +259,25 @@ json_generator_class_init (JsonGeneratorClass *klass)
    *
    * 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;
@@ -265,12 +288,13 @@ static gchar *
 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 ("");
@@ -283,47 +307,59 @@ dump_value (JsonGenerator *generator,
         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);
 }
@@ -350,15 +386,18 @@ dump_array (JsonGenerator *generator,
         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++)
     {
@@ -379,7 +418,7 @@ dump_array (JsonGenerator *generator,
           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;
@@ -402,8 +441,6 @@ dump_array (JsonGenerator *generator,
 
       if (pretty)
         g_string_append_c (buffer, '\n');
-      else
-        g_string_append_c (buffer, ' ');
     }
 
   if (pretty)
@@ -442,21 +479,25 @@ dump_object (JsonGenerator *generator,
         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;
@@ -469,25 +510,29 @@ dump_object (JsonGenerator *generator,
             {
               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);
@@ -499,8 +544,8 @@ dump_object (JsonGenerator *generator,
 
       if (pretty)
         g_string_append_c (buffer, '\n');
-      else
-        g_string_append_c (buffer, ' ');
+
+      g_free (escaped_name);
     }
 
   g_list_free (members);
@@ -524,7 +569,7 @@ dump_object (JsonGenerator *generator,
  * 
  * 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
  */
@@ -581,7 +626,7 @@ json_generator_to_data (JsonGenerator *generator,
       break;
 
     case JSON_NODE_VALUE:
-      retval = NULL;
+      retval = dump_value (generator, 0, NULL, root, length);
       break;
     }
 
@@ -619,6 +664,43 @@ json_generator_to_file (JsonGenerator  *generator,
 }
 
 /**
+ * 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
@@ -626,8 +708,8 @@ json_generator_to_file (JsonGenerator  *generator,
  * 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,
@@ -635,12 +717,178 @@ 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;
 }
index 743ec27..99c1b1d 100644 (file)
  *   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
 
@@ -74,16 +75,45 @@ struct _JsonGeneratorClass
   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
 
diff --git a/json-glib/json-glib-format.c b/json-glib/json-glib-format.c
new file mode 100644 (file)
index 0000000..d39b325
--- /dev/null
@@ -0,0 +1,220 @@
+/* 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;
+}
diff --git a/json-glib/json-glib-validate.c b/json-glib/json-glib-validate.c
new file mode 100644 (file)
index 0000000..2eb013a
--- /dev/null
@@ -0,0 +1,173 @@
+/* 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;
+}
index 794a8be..8a0e7f7 100644 (file)
 #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__ */
diff --git a/json-glib/json-glib.pc.in b/json-glib/json-glib.pc.in
new file mode 100644 (file)
index 0000000..1a86ead
--- /dev/null
@@ -0,0 +1,11 @@
+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
index ae98b2b..3beb0e6 100644 (file)
@@ -21,8 +21,8 @@
  * 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"
 
@@ -179,7 +180,9 @@ json_gobject_new (GType       gtype,
 {
   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;
@@ -193,13 +196,11 @@ json_gobject_new (GType       gtype,
   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);
 
@@ -215,8 +216,8 @@ json_gobject_new (GType       gtype,
       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))
@@ -227,7 +228,12 @@ json_gobject_new (GType       gtype,
       val = json_object_get_member (object, member_name);
       res = json_deserialize_pspec (&param.value, pspec, val);
       if (!res)
-        g_value_unset (&param.value);
+       {
+         g_warning ("Failed to deserialize \"%s\" property of type \"%s\" for an object of type \"%s\"",
+                    pspec->name, G_VALUE_TYPE_NAME (&param.value), g_type_name (gtype));
+
+         g_value_unset (&param.value);
+       }
       else
         {
           param.name = g_strdup (pspec->name);
@@ -267,10 +273,16 @@ json_gobject_new (GType       gtype,
     {
       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);
 
@@ -282,13 +294,16 @@ json_gobject_new (GType       gtype,
       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))
@@ -300,20 +315,34 @@ json_gobject_new (GType       gtype,
 
       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);
     }
@@ -332,7 +361,9 @@ json_gobject_dump (GObject *gobject)
 {
   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;
@@ -341,12 +372,18 @@ json_gobject_dump (GObject *gobject)
     {
       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];
@@ -358,7 +395,11 @@ json_gobject_dump (GObject *gobject)
         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
@@ -366,11 +407,13 @@ json_gobject_dump (GObject *gobject)
        */
       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)
@@ -470,35 +513,73 @@ json_deserialize_pspec (GValue     *value,
         {
         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:
@@ -552,7 +633,19 @@ json_deserialize_pspec (GValue     *value,
       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;
     }
 
@@ -564,44 +657,66 @@ json_serialize_pspec (const GValue *real_value,
                       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))
         {
@@ -620,8 +735,8 @@ json_serialize_pspec (const GValue *real_value,
               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))
         {
@@ -634,52 +749,19 @@ json_serialize_pspec (const GValue *real_value,
                    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;
 
@@ -762,7 +844,7 @@ json_gobject_serialize (GObject *gobject)
  *
  * 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
  *
@@ -792,7 +874,7 @@ json_construct_gobject (GType         gtype,
  *
  * 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
  */
@@ -827,10 +909,10 @@ json_gobject_from_data (GType         gtype,
   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;
index 9eb6ac9..17aa2db 100644 (file)
@@ -25,7 +25,6 @@
 #define __JSON_GOBJECT_H__
 
 #include <json-glib/json-types.h>
-#include <glib-object.h>
 
 G_BEGIN_DECLS
 
@@ -43,8 +42,14 @@ typedef struct _JsonSerializableIface   JsonSerializableIface;
  *   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
@@ -65,24 +70,55 @@ struct _JsonSerializableIface
                                       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,
@@ -113,41 +149,50 @@ typedef JsonNode *(* JsonBoxedSerializeFunc) (gconstpointer boxed);
  */
 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
 
diff --git a/json-glib/json-gvariant.c b/json-glib/json-gvariant.c
new file mode 100644 (file)
index 0000000..9c4ce1a
--- /dev/null
@@ -0,0 +1,1351 @@
+/* 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;
+}
diff --git a/json-glib/json-gvariant.h b/json-glib/json-gvariant.h
new file mode 100644 (file)
index 0000000..38cfc94
--- /dev/null
@@ -0,0 +1,53 @@
+/* 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__ */
index 8d0cf55..13968bc 100644 (file)
@@ -21,9 +21,7 @@
  *   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:
@@ -88,7 +75,10 @@ json_node_get_value_type (JsonNode *node)
       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 ();
@@ -97,25 +87,280 @@ json_node_get_value_type (JsonNode *node)
 }
 
 /**
- * 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);
 }
 
 /**
@@ -140,21 +385,16 @@ json_node_copy (JsonNode *node)
   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:
@@ -169,7 +409,7 @@ json_node_copy (JsonNode *node)
 
 /**
  * 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.
@@ -181,7 +421,7 @@ json_node_set_object (JsonNode   *node,
   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)
@@ -192,8 +432,8 @@ json_node_set_object (JsonNode   *node,
 
 /**
  * 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.
  */
@@ -254,7 +494,7 @@ json_node_dup_object (JsonNode *node)
 
 /**
  * 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
@@ -277,8 +517,8 @@ json_node_set_array (JsonNode  *node,
 
 /**
  * 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.
  */
@@ -317,7 +557,7 @@ json_node_get_array (JsonNode *node)
 }
 
 /**
- * json_node_dup_array
+ * json_node_dup_array:
  * @node: a #JsonNode
  *
  * Retrieves the #JsonArray stored inside a #JsonNode and returns it
@@ -341,7 +581,7 @@ json_node_dup_array (JsonNode *node)
 /**
  * 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.
@@ -353,23 +593,36 @@ json_node_get_value (JsonNode *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_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
@@ -382,32 +635,39 @@ json_node_set_value (JsonNode     *node,
   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:
@@ -429,26 +689,7 @@ json_node_free (JsonNode *node)
 {
   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);
     }
 }
@@ -462,13 +703,8 @@ json_node_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)");
 
@@ -480,19 +716,15 @@ json_node_type_name (JsonNode *node)
       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)
     {
@@ -519,7 +751,7 @@ json_node_type_get_name (JsonNodeType 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
  *
@@ -540,7 +772,8 @@ json_node_set_parent (JsonNode *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)
@@ -552,7 +785,7 @@ 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
@@ -565,19 +798,12 @@ json_node_set_string (JsonNode    *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_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 (&copy, G_TYPE_STRING);
-      g_value_set_string (&copy, value);
+    json_value_init (node->data.value, JSON_VALUE_STRING);
 
-      json_node_set_value (node, &copy);
-
-      g_value_unset (&copy);
-    }
+  json_value_set_string (node->data.value, value);
 }
 
 /**
@@ -588,21 +814,16 @@ json_node_set_string (JsonNode    *node,
  *
  * 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;
 }
@@ -621,13 +842,7 @@ json_node_dup_string (JsonNode *node)
 {
   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));
 }
 
 /**
@@ -645,19 +860,12 @@ json_node_set_int (JsonNode *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 (&copy, G_TYPE_INT64);
-      g_value_set_int64 (&copy, value);
-
-      json_node_set_value (node, &copy);
-
-      g_value_unset (&copy);
-    }
+  json_value_set_int (node->data.value, value);
 }
 
 /**
@@ -676,8 +884,14 @@ json_node_get_int (JsonNode *node)
   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;
 }
@@ -697,19 +911,12 @@ json_node_set_double (JsonNode *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_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 (&copy, G_TYPE_DOUBLE);
-      g_value_set_double (&copy, value);
+    json_value_init (node->data.value, JSON_VALUE_DOUBLE);
 
-      json_node_set_value (node, &copy);
-
-      g_value_unset (&copy);
-    }
+  json_value_set_double (node->data.value, value);
 }
 
 /**
@@ -728,8 +935,14 @@ json_node_get_double (JsonNode *node)
   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;
 }
@@ -749,19 +962,12 @@ json_node_set_boolean (JsonNode *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_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 (&copy, G_TYPE_BOOLEAN);
-      g_value_set_boolean (&copy, value);
-
-      json_node_set_value (node, &copy);
+    json_value_init (node->data.value, JSON_VALUE_BOOLEAN);
 
-      g_value_unset (&copy);
-    }
+  json_value_set_boolean (node->data.value, value);
 }
 
 /**
@@ -780,8 +986,14 @@ json_node_get_boolean (JsonNode *node)
   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;
 }
@@ -808,9 +1020,10 @@ json_node_get_node_type (JsonNode *node)
  * 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
  *
index 43ff15b..6d203b2 100644 (file)
  *   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)
@@ -89,7 +78,7 @@ 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 *
@@ -98,11 +87,8 @@ json_object_ref (JsonObject *object)
   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;
 }
 
@@ -117,15 +103,10 @@ json_object_ref (JsonObject *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);
@@ -145,6 +126,18 @@ object_set_member_internal (JsonObject  *object,
 
   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);
 }
@@ -153,7 +146,7 @@ object_set_member_internal (JsonObject  *object,
  * 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.
@@ -187,7 +180,7 @@ json_object_add_member (JsonObject  *object,
  * 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.
  *
@@ -202,10 +195,20 @@ json_object_set_member (JsonObject  *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);
 }
 
@@ -227,14 +230,10 @@ json_object_set_int_member (JsonObject  *object,
                             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));
 }
 
 /**
@@ -255,14 +254,10 @@ json_object_set_double_member (JsonObject  *object,
                                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));
 }
 
 /**
@@ -283,14 +278,10 @@ json_object_set_boolean_member (JsonObject  *object,
                                 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));
 }
 
 /**
@@ -316,8 +307,13 @@ json_object_set_string_member (JsonObject  *object,
   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);
 }
 
@@ -337,20 +333,17 @@ void
 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.
@@ -371,8 +364,16 @@ json_object_set_array_member (JsonObject  *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);
 }
 
@@ -380,7 +381,7 @@ json_object_set_array_member (JsonObject  *object,
  * 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.
@@ -401,8 +402,16 @@ json_object_set_object_member (JsonObject  *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);
 }
 
@@ -438,7 +447,7 @@ json_object_get_members (JsonObject *object)
  * 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.
  */
@@ -464,7 +473,7 @@ json_object_get_values (JsonObject *object)
  * 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
@@ -500,7 +509,7 @@ object_get_member_internal (JsonObject  *object,
  * 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 *
@@ -629,7 +638,16 @@ json_object_get_null_member (JsonObject  *object,
   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;
 }
 
 /**
@@ -646,15 +664,9 @@ json_object_get_null_member (JsonObject  *object,
  *
  * 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;
 
@@ -663,7 +675,10 @@ json_object_get_string_member (JsonObject  *object,
 
   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);
 }
@@ -693,7 +708,10 @@ json_object_get_array_member (JsonObject  *object,
 
   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);
 }
@@ -723,7 +741,10 @@ json_object_get_object_member (JsonObject  *object,
 
   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);
 }
@@ -796,8 +817,8 @@ json_object_remove_member (JsonObject  *object,
 /**
  * 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.
index 5d67d0c..e2343b6 100644 (file)
@@ -1,8 +1,9 @@
 /* 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;
@@ -57,6 +50,7 @@ struct _JsonParserPrivate
 
   JsonScanner *scanner;
 
+  JsonParserError error_code;
   GError *last_error;
 
   gchar *variable_name;
@@ -102,7 +96,9 @@ enum
 
 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,
@@ -156,8 +152,6 @@ json_parser_class_init (JsonParserClass *klass)
 {
   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;
 
@@ -281,7 +275,7 @@ json_parser_class_init (JsonParserClass *klass)
   /**
    * 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
@@ -317,13 +311,16 @@ json_parser_class_init (JsonParserClass *klass)
 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;
 
@@ -337,7 +334,8 @@ json_parse_value (JsonParser   *parser,
                   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 == '-')
@@ -357,46 +355,73 @@ json_parse_value (JsonParser   *parser,
   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;
@@ -414,7 +439,7 @@ json_parse_array (JsonParser   *parser,
   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 ();
 
@@ -433,30 +458,21 @@ json_parse_array (JsonParser   *parser,
       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;
         }
 
@@ -480,6 +496,8 @@ json_parse_array (JsonParser   *parser,
           /* 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);
@@ -489,6 +507,7 @@ json_parse_array (JsonParser   *parser,
             }
         }
 
+      JSON_NOTE (PARSER, "Array element %d completed", idx + 1);
       json_node_set_parent (element, priv->current_node);
       json_array_add_element (array, element);
 
@@ -526,7 +545,7 @@ json_parse_object (JsonParser   *parser,
   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 ();
 
@@ -550,6 +569,10 @@ json_parse_object (JsonParser   *parser,
       /* 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;
@@ -560,11 +583,29 @@ json_parse_object (JsonParser   *parser,
       /* 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);
@@ -582,27 +623,19 @@ json_parse_object (JsonParser   *parser,
       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;
         }
 
@@ -626,6 +659,8 @@ json_parse_object (JsonParser   *parser,
           /* 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);
@@ -636,6 +671,8 @@ json_parse_object (JsonParser   *parser,
         }
       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);
@@ -644,6 +681,7 @@ json_parse_object (JsonParser   *parser,
           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);
 
@@ -682,9 +720,11 @@ json_parse_statement (JsonParser  *parser,
   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
@@ -697,20 +737,29 @@ json_parse_statement (JsonParser  *parser,
         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;
@@ -730,91 +779,47 @@ json_parse_statement (JsonParser  *parser,
       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 *
@@ -827,6 +832,10 @@ json_scanner_create (JsonParser *parser)
   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,
@@ -867,6 +876,15 @@ json_parser_load (JsonParser   *parser,
 
   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);
 
@@ -882,6 +900,7 @@ json_parser_load (JsonParser   *parser,
       else
         {
           guint expected_token;
+          gint cur_token;
 
           /* we try to show the expected token, if possible */
           expected_token = json_parse_statement (parser, scanner);
@@ -890,8 +909,10 @@ json_parser_load (JsonParser   *parser,
               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 &&
@@ -905,13 +926,13 @@ json_parser_load (JsonParser   *parser,
                         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;
                     }
                 }
@@ -921,8 +942,7 @@ json_parser_load (JsonParser   *parser,
                */
               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
@@ -1083,8 +1103,8 @@ json_parser_get_current_line (JsonParser *parser)
 {
   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;
 }
@@ -1107,8 +1127,8 @@ json_parser_get_current_pos (JsonParser *parser)
 {
   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;
 }
@@ -1116,7 +1136,7 @@ json_parser_get_current_pos (JsonParser *parser)
 /**
  * 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:
@@ -1154,3 +1174,274 @@ json_parser_has_assignment (JsonParser  *parser,
 
   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);
+}
index 7589464..8666548 100644 (file)
  *   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
 
@@ -49,13 +49,27 @@ typedef struct _JsonParserClass         JsonParserClass;
 /**
  * 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;
 
@@ -126,24 +140,48 @@ struct _JsonParserClass
   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
 
diff --git a/json-glib/json-path.c b/json-glib/json-path.c
new file mode 100644 (file)
index 0000000..3ccf98f
--- /dev/null
@@ -0,0 +1,1002 @@
+/* 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;
+}
diff --git a/json-glib/json-path.h b/json-glib/json-path.h
new file mode 100644 (file)
index 0000000..b8ffb91
--- /dev/null
@@ -0,0 +1,102 @@
+/* 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__ */
diff --git a/json-glib/json-reader.c b/json-glib/json-reader.c
new file mode 100644 (file)
index 0000000..67b67a5
--- /dev/null
@@ -0,0 +1,1039 @@
+/* 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;
+}
diff --git a/json-glib/json-reader.h b/json-glib/json-reader.h
new file mode 100644 (file)
index 0000000..32e90da
--- /dev/null
@@ -0,0 +1,171 @@
+/* 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__ */
index 9cd0938..daf9ead 100644 (file)
  * 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>
@@ -190,9 +186,6 @@ static guchar   json_scanner_get_char        (JsonScanner *scanner,
 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
@@ -273,14 +266,11 @@ json_scanner_new (void)
   
   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;
 }
 
@@ -333,22 +323,6 @@ json_scanner_destroy (JsonScanner *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,
@@ -368,30 +342,7 @@ json_scanner_error (JsonScanner *scanner,
       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);
     }
@@ -489,120 +440,6 @@ json_scanner_scope_add_symbol (JsonScanner *scanner,
     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)
 {
@@ -647,78 +484,6 @@ json_scanner_get_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,
@@ -730,16 +495,12 @@ json_scanner_input_text (JsonScanner *scanner,
   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;
 
@@ -755,63 +516,10 @@ json_scanner_peek_next_char (JsonScanner *scanner)
 {
   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,
@@ -821,36 +529,6 @@ json_scanner_get_char (JsonScanner *scanner,
 
   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;
   
@@ -892,19 +570,42 @@ 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;
 }
 
+/*
+ * 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;
@@ -912,15 +613,9 @@ json_scanner_unexp_token (JsonScanner *scanner,
   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)
@@ -1176,43 +871,43 @@ json_scanner_unexp_token (JsonScanner *scanner,
     }
   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);
@@ -1221,10 +916,10 @@ json_scanner_unexp_token (JsonScanner *scanner,
 
 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
     {
@@ -1303,7 +998,7 @@ json_scanner_get_token_ll (JsonScanner *scanner,
   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;
@@ -1439,6 +1134,26 @@ json_scanner_get_token_ll (JsonScanner *scanner,
                               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;
index cd76ea4..4d1f982 100644 (file)
@@ -14,9 +14,7 @@
  * 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:
@@ -112,7 +104,6 @@ struct _JsonScanner
   
   /* to be considered private */
   GHashTable *symbol_table;
-  gint input_fd;
   const gchar *text;
   const gchar *text_end;
   gchar *buffer;
@@ -122,52 +113,34 @@ struct _JsonScanner
   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
 
index 43ada37..08327a9 100644 (file)
  * 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:
@@ -71,7 +70,7 @@ json_serializable_serialize_property (JsonSerializable *serializable,
  * 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
  *
@@ -111,6 +110,7 @@ json_serializable_real_deserialize (JsonSerializable *serializable,
                                     GParamSpec       *pspec,
                                     JsonNode         *node)
 {
+  JSON_NOTE (GOBJECT, "Default deserialization for property '%s'", pspec->name);
   return json_deserialize_pspec (value, pspec, node);
 }
 
@@ -120,42 +120,60 @@ json_serializable_real_serialize (JsonSerializable *serializable,
                                   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
@@ -164,12 +182,14 @@ json_serializable_get_type (void)
  * @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;
  *
@@ -214,7 +234,7 @@ json_serializable_default_serialize_property (JsonSerializable *serializable,
  * This function can be used inside a custom implementation
  * of the deserialize_property() virtual function in lieu of:
  *
- * |[
+ * |[<!-- language="C" -->
  *   JsonSerializable *iface;
  *   gboolean res;
  *
@@ -247,3 +267,75 @@ json_serializable_default_deserialize_property (JsonSerializable *serializable,
                                              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);
+}
index 2b708cc..efce6a9 100644 (file)
 
 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 >*/
@@ -36,12 +47,37 @@ struct _JsonNode
   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;
@@ -59,11 +95,47 @@ struct _JsonObject
   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
 
index 35e276f..9acc23b 100644 (file)
  *   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
 
@@ -97,7 +98,6 @@ 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
@@ -173,178 +173,269 @@ typedef void (* JsonArrayForeach) (JsonArray  *array,
                                    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);
diff --git a/json-glib/json-value.c b/json-glib/json-value.c
new file mode 100644 (file)
index 0000000..43ea4dd
--- /dev/null
@@ -0,0 +1,214 @@
+/* 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
diff --git a/json-glib/json-version-macros.h b/json-glib/json-version-macros.h
new file mode 100644 (file)
index 0000000..dd2ae1c
--- /dev/null
@@ -0,0 +1,135 @@
+/* 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__ */
index bc05f1b..d18caa2 100644 (file)
  *   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:
index dc139d4..8f379ca 100644 (file)
@@ -1,29 +1,35 @@
-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
similarity index 54%
rename from json-glib/tests/array-test.c
rename to json-glib/tests/array.c
index 7c29cdf..98afeab 100644 (file)
@@ -29,6 +29,40 @@ test_add_element (void)
 
   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);
 }
@@ -49,17 +83,19 @@ test_remove_element (void)
 
 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
@@ -70,10 +106,11 @@ verify_foreach (JsonArray *array,
 {
   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
@@ -87,10 +124,19 @@ test_foreach_element (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);
 }
 
@@ -98,7 +144,6 @@ int
 main (int   argc,
       char *argv[])
 {
-  g_type_init ();
   g_test_init (&argc, &argv, NULL);
 
   g_test_add_func ("/array/empty-array", test_empty_array);
similarity index 99%
rename from tests/test-serialize-boxed.c
rename to json-glib/tests/boxed.c
index deeef13..6e52e2a 100644 (file)
@@ -254,7 +254,6 @@ int
 main (int   argc,
       char *argv[])
 {
-  g_type_init ();
   g_test_init (&argc, &argv, NULL);
 
   g_test_add_func ("/boxed/serialize-property", test_serialize_boxed);
diff --git a/json-glib/tests/builder.c b/json-glib/tests/builder.c
new file mode 100644 (file)
index 0000000..0183381
--- /dev/null
@@ -0,0 +1,167 @@
+#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 ();
+}
diff --git a/json-glib/tests/generator.c b/json-glib/tests/generator.c
new file mode 100644 (file)
index 0000000..f156fde
--- /dev/null
@@ -0,0 +1,441 @@
+#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 ();
+}
diff --git a/json-glib/tests/gvariant.c b/json-glib/tests/gvariant.c
new file mode 100644 (file)
index 0000000..38c56b7
--- /dev/null
@@ -0,0 +1,255 @@
+#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 ();
+}
diff --git a/json-glib/tests/invalid.c b/json-glib/tests/invalid.c
new file mode 100644 (file)
index 0000000..bac540f
--- /dev/null
@@ -0,0 +1,237 @@
+#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 ();
+}
diff --git a/json-glib/tests/node-test.c b/json-glib/tests/node-test.c
deleted file mode 100644 (file)
index b5ba722..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-
-#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 ();
-}
diff --git a/json-glib/tests/node.c b/json-glib/tests/node.c
new file mode 100644 (file)
index 0000000..6aad5bc
--- /dev/null
@@ -0,0 +1,265 @@
+#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 ();
+}
similarity index 64%
rename from json-glib/tests/object-test.c
rename to json-glib/tests/object.c
index 3d7b4d1..f109464 100644 (file)
@@ -34,6 +34,40 @@ test_add_member (void)
 }
 
 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 ();
@@ -60,6 +94,7 @@ static const struct {
   { "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 }
 };
 
@@ -94,6 +129,7 @@ test_foreach_member (void)
   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);
@@ -112,6 +148,17 @@ test_empty_member (void)
   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);
 }
 
@@ -119,11 +166,11 @@ int
 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);
similarity index 83%
rename from tests/test-parser.c
rename to json-glib/tests/parser.c
index ffda63a..bdfbf13 100644 (file)
@@ -1,6 +1,4 @@
-#ifdef HAVE_CONFIG_H
 #include "config.h"
-#endif
 
 #include <stdlib.h>
 #include <stdio.h>
@@ -20,6 +18,12 @@ verify_int_value (JsonNode *node)
 }
 
 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));
@@ -37,6 +41,12 @@ verify_double_value (JsonNode *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;
@@ -47,7 +57,9 @@ static const struct {
   { "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 {
@@ -83,11 +95,31 @@ 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 {
@@ -108,19 +140,6 @@ 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);
@@ -128,7 +147,6 @@ 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
 test_empty (void)
@@ -628,46 +646,103 @@ test_unicode_escape (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);
@@ -680,7 +755,8 @@ main (int   argc,
   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 ();
 }
diff --git a/json-glib/tests/path.c b/json-glib/tests/path.c
new file mode 100644 (file)
index 0000000..0dce631
--- /dev/null
@@ -0,0 +1,318 @@
+#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 ();
+}
diff --git a/json-glib/tests/reader.c b/json-glib/tests/reader.c
new file mode 100644 (file)
index 0000000..19f58c9
--- /dev/null
@@ -0,0 +1,190 @@
+#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 ();
+}
similarity index 86%
rename from tests/test-serialize-complex.c
rename to json-glib/tests/serialize-complex.c
index f577761..9da8dd1 100644 (file)
@@ -33,6 +33,7 @@ struct _TestObject
   gboolean bar;
   gchar *baz;
   TestBoxed blah;
+  gdouble meh;
 };
 
 struct _TestObjectClass
@@ -83,7 +84,8 @@ enum
   PROP_FOO,
   PROP_BAR,
   PROP_BAZ,
-  PROP_BLAH
+  PROP_BLAH,
+  PROP_MEH
 };
 
 static JsonSerializableIface *serializable_iface = NULL;
@@ -167,6 +169,9 @@ test_object_set_property (GObject      *gobject,
       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);
     }
@@ -192,6 +197,9 @@ test_object_get_property (GObject    *gobject,
     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);
     }
@@ -214,7 +222,7 @@ test_object_class_init (TestObjectClass *klass)
   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,
@@ -226,6 +234,12 @@ test_object_class_init (TestObjectClass *klass)
                                    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
@@ -234,6 +248,7 @@ test_object_init (TestObject *object)
   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;
@@ -242,7 +257,12 @@ test_object_init (TestObject *object)
 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;
@@ -264,16 +284,13 @@ test_serialize (void)
   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);
@@ -284,7 +301,6 @@ int
 main (int   argc,
       char *argv[])
 {
-  g_type_init ();
   g_test_init (&argc, &argv, NULL);
 
   g_test_add_func ("/serialize/gobject-boxed", test_serialize);
similarity index 67%
rename from tests/test-serialize-full.c
rename to json-glib/tests/serialize-full.c
index 2ef22d6..dd5da7a 100644 (file)
@@ -8,6 +8,7 @@
 #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))
@@ -22,6 +23,13 @@ typedef enum {
   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;
@@ -36,14 +44,15 @@ struct _TestObject
 {
   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
@@ -107,6 +116,27 @@ test_enum_get_type (void)
   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,
@@ -117,6 +147,7 @@ enum
   PROP_BLAH,
   PROP_MEH,
   PROP_MAH,
+  PROP_FLAGS,
   PROP_TEST
 };
 
@@ -126,18 +157,6 @@ G_DEFINE_TYPE_WITH_CODE (TestObject, test_object, G_TYPE_OBJECT,
                          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,
@@ -184,17 +203,16 @@ json_serializable_iface_init (gpointer g_iface)
   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);
 }
@@ -208,28 +226,34 @@ test_object_set_property (GObject      *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:
@@ -246,31 +270,35 @@ test_object_get_property (GObject    *gobject,
   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:
@@ -313,13 +341,21 @@ test_object_class_init (TestObjectClass *klass)
                                    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,
@@ -329,18 +365,20 @@ test_object_class_init (TestObjectClass *klass)
 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 =
@@ -351,9 +389,10 @@ 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"
 "}";
 
@@ -376,28 +415,29 @@ test_deserialize (void)
              " 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);
 }
@@ -406,7 +446,6 @@ int
 main (int   argc,
       char *argv[])
 {
-  g_type_init ();
   g_test_init (&argc, &argv, NULL);
 
   g_test_add_func ("/deserialize/json-to-gobject", test_deserialize);
similarity index 99%
rename from tests/test-serialize-simple.c
rename to json-glib/tests/serialize-simple.c
index 42af6fb..e2e7be2 100644 (file)
@@ -157,7 +157,6 @@ int
 main (int   argc,
       char *argv[])
 {
-  g_type_init ();
   g_test_init (&argc, &argv, NULL);
 
   g_test_add_func ("/serialize/gobject", test_serialize);
diff --git a/json-glib/tests/stream-load.json b/json-glib/tests/stream-load.json
new file mode 100644 (file)
index 0000000..203f03f
--- /dev/null
@@ -0,0 +1 @@
+[ { "hello" : "world!\n" } ]
diff --git a/missing b/missing
deleted file mode 100755 (executable)
index 28055d2..0000000
--- a/missing
+++ /dev/null
@@ -1,376 +0,0 @@
-#! /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:
diff --git a/packaging/baselibs.conf b/packaging/baselibs.conf
new file mode 100644 (file)
index 0000000..d85c0f0
--- /dev/null
@@ -0,0 +1 @@
+libjson-glib
diff --git a/packaging/json-glib.changes b/packaging/json-glib.changes
new file mode 100644 (file)
index 0000000..a3705ac
--- /dev/null
@@ -0,0 +1,6 @@
+* 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
+
diff --git a/packaging/json-glib.manifest b/packaging/json-glib.manifest
new file mode 100644 (file)
index 0000000..93cab65
--- /dev/null
@@ -0,0 +1,8 @@
+<manifest>
+ <request>
+    <domain name="_"/>
+ </request>
+ <assign>
+   <filesystem path="/usr/bin/*" exec_label="none" />
+ </assign>
+</manifest>
index 4c99b5c..faf956b 100644 (file)
-#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
diff --git a/packaging/support_surrogate_pairs_in_json_string.patch b/packaging/support_surrogate_pairs_in_json_string.patch
deleted file mode 100644 (file)
index b6c7558..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-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
-
-
diff --git a/po/.gitignore b/po/.gitignore
new file mode 100644 (file)
index 0000000..9ac1987
--- /dev/null
@@ -0,0 +1,14 @@
+/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
diff --git a/po/Makevars b/po/Makevars
new file mode 100644 (file)
index 0000000..0df7a65
--- /dev/null
@@ -0,0 +1,7 @@
+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 = ..
diff --git a/po/POTFILES.in b/po/POTFILES.in
new file mode 100644 (file)
index 0000000..8868a19
--- /dev/null
@@ -0,0 +1,8 @@
+# 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
diff --git a/po/as.po b/po/as.po
new file mode 100644 (file)
index 0000000..395e7ae
--- /dev/null
+++ b/po/as.po
@@ -0,0 +1,167 @@
+# 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 "বৰ্তমান অৱস্থানত এটা বুলিয়ান ধৰণ নাই"
diff --git a/po/bg.po b/po/bg.po
new file mode 100644 (file)
index 0000000..2d358d4
--- /dev/null
+++ b/po/bg.po
@@ -0,0 +1,157 @@
+# 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 "На тази позиция няма низ"
diff --git a/po/bn_IN.po b/po/bn_IN.po
new file mode 100644 (file)
index 0000000..96597ad
--- /dev/null
@@ -0,0 +1,156 @@
+# 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 "বর্তমান অবস্থানে কোন স্ট্রিং নেই"
diff --git a/po/ca.po b/po/ca.po
new file mode 100644 (file)
index 0000000..7b19abf
--- /dev/null
+++ b/po/ca.po
@@ -0,0 +1,158 @@
+# 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"
diff --git a/po/ca@valencia.po b/po/ca@valencia.po
new file mode 100644 (file)
index 0000000..ce1cc3f
--- /dev/null
@@ -0,0 +1,158 @@
+# 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"
diff --git a/po/cs.po b/po/cs.po
new file mode 100644 (file)
index 0000000..3e39dc0
--- /dev/null
+++ b/po/cs.po
@@ -0,0 +1,257 @@
+# 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)"
diff --git a/po/da.po b/po/da.po
new file mode 100644 (file)
index 0000000..4d0b434
--- /dev/null
+++ b/po/da.po
@@ -0,0 +1,264 @@
+# 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"
diff --git a/po/de.po b/po/de.po
new file mode 100644 (file)
index 0000000..9c062cc
--- /dev/null
+++ b/po/de.po
@@ -0,0 +1,275 @@
+# 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"
diff --git a/po/el.po b/po/el.po
new file mode 100644 (file)
index 0000000..d833114
--- /dev/null
+++ b/po/el.po
@@ -0,0 +1,275 @@
+# 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"
diff --git a/po/en_GB.po b/po/en_GB.po
new file mode 100644 (file)
index 0000000..730a2d0
--- /dev/null
@@ -0,0 +1,160 @@
+# 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"
diff --git a/po/eo.po b/po/eo.po
new file mode 100644 (file)
index 0000000..4d57a38
--- /dev/null
+++ b/po/eo.po
@@ -0,0 +1,170 @@
+# 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"
diff --git a/po/es.po b/po/es.po
new file mode 100644 (file)
index 0000000..1becf9c
--- /dev/null
+++ b/po/es.po
@@ -0,0 +1,272 @@
+# 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"
diff --git a/po/et.po b/po/et.po
new file mode 100644 (file)
index 0000000..b7141c7
--- /dev/null
+++ b/po/et.po
@@ -0,0 +1,123 @@
+# 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"
diff --git a/po/eu.po b/po/eu.po
new file mode 100644 (file)
index 0000000..d1a5e21
--- /dev/null
+++ b/po/eu.po
@@ -0,0 +1,262 @@
+# 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"
+
diff --git a/po/fr.po b/po/fr.po
new file mode 100644 (file)
index 0000000..1c40d36
--- /dev/null
+++ b/po/fr.po
@@ -0,0 +1,267 @@
+# 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"
diff --git a/po/fur.po b/po/fur.po
new file mode 100644 (file)
index 0000000..58d5d52
--- /dev/null
+++ b/po/fur.po
@@ -0,0 +1,157 @@
+# 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"
diff --git a/po/gl.po b/po/gl.po
new file mode 100644 (file)
index 0000000..82b24e0
--- /dev/null
+++ b/po/gl.po
@@ -0,0 +1,267 @@
+# 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"
diff --git a/po/he.po b/po/he.po
new file mode 100644 (file)
index 0000000..fe885be
--- /dev/null
+++ b/po/he.po
@@ -0,0 +1,263 @@
+# 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"
diff --git a/po/hi.po b/po/hi.po
new file mode 100644 (file)
index 0000000..40c5114
--- /dev/null
+++ b/po/hi.po
@@ -0,0 +1,160 @@
+# 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 "वर्तमान स्थिति के लिए स्ट्रिंग प्रकार नहीं है"
+
diff --git a/po/hu.po b/po/hu.po
new file mode 100644 (file)
index 0000000..7dc0696
--- /dev/null
+++ b/po/hu.po
@@ -0,0 +1,262 @@
+# 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ó"
+
diff --git a/po/id.po b/po/id.po
new file mode 100644 (file)
index 0000000..3fb51ad
--- /dev/null
+++ b/po/id.po
@@ -0,0 +1,259 @@
+# 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"
diff --git a/po/it.po b/po/it.po
new file mode 100644 (file)
index 0000000..b359440
--- /dev/null
+++ b/po/it.po
@@ -0,0 +1,265 @@
+# 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"
diff --git a/po/ja.po b/po/ja.po
new file mode 100644 (file)
index 0000000..d6a09b4
--- /dev/null
+++ b/po/ja.po
@@ -0,0 +1,158 @@
+# 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 "現在位置が論理値型ではありません"
diff --git a/po/ko.po b/po/ko.po
new file mode 100644 (file)
index 0000000..da7e142
--- /dev/null
+++ b/po/ko.po
@@ -0,0 +1,258 @@
+# 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 "현재 위치에 문자열 값이 없습니다"
diff --git a/po/ky.po b/po/ky.po
new file mode 100644 (file)
index 0000000..02cb3a0
--- /dev/null
+++ b/po/ky.po
@@ -0,0 +1,161 @@
+# 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 "Учурдагы позициянын тиби, саптык тип эмес"
+
+
diff --git a/po/lt.po b/po/lt.po
new file mode 100644 (file)
index 0000000..ffc1a02
--- /dev/null
+++ b/po/lt.po
@@ -0,0 +1,258 @@
+# 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ą"
diff --git a/po/lv.po b/po/lv.po
new file mode 100644 (file)
index 0000000..6396528
--- /dev/null
+++ b/po/lv.po
@@ -0,0 +1,260 @@
+# 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"
+
diff --git a/po/ml.po b/po/ml.po
new file mode 100644 (file)
index 0000000..3a5bb47
--- /dev/null
+++ b/po/ml.po
@@ -0,0 +1,155 @@
+# 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 "അപ്പോഴത്തെ സ്ഥാനത്ത് ഒരു വാചകം അല്ല"
diff --git a/po/nb.po b/po/nb.po
new file mode 100644 (file)
index 0000000..f9f7f4a
--- /dev/null
+++ b/po/nb.po
@@ -0,0 +1,255 @@
+# 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"
diff --git a/po/or.po b/po/or.po
new file mode 100644 (file)
index 0000000..e7252df
--- /dev/null
+++ b/po/or.po
@@ -0,0 +1,160 @@
+# 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 "ପ୍ରଚଳିତ ଅବସ୍ଥାନ କୌଣସି ବାକ୍ୟଖଣ୍ଡ ପ୍ରକାର ଧାରଣ କରିନଥାଏ"
+
+
diff --git a/po/pa.po b/po/pa.po
new file mode 100644 (file)
index 0000000..1d8321a
--- /dev/null
+++ b/po/pa.po
@@ -0,0 +1,158 @@
+# 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 "ਮੌਜੂਦਾ ਸਥਿਤੀ ਸਤਰ ਕਿਸਮ ਨਹੀਂ ਰੱਖਦਾ ਹੈ"
+
diff --git a/po/pl.po b/po/pl.po
new file mode 100644 (file)
index 0000000..3124a55
--- /dev/null
+++ b/po/pl.po
@@ -0,0 +1,263 @@
+# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+# 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"
diff --git a/po/pt.po b/po/pt.po
new file mode 100644 (file)
index 0000000..2d99151
--- /dev/null
+++ b/po/pt.po
@@ -0,0 +1,257 @@
+# 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"
diff --git a/po/pt_BR.po b/po/pt_BR.po
new file mode 100644 (file)
index 0000000..96b71d3
--- /dev/null
@@ -0,0 +1,271 @@
+# 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"
diff --git a/po/ru.po b/po/ru.po
new file mode 100644 (file)
index 0000000..5b60ba7
--- /dev/null
+++ b/po/ru.po
@@ -0,0 +1,271 @@
+# 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 "В текущей позиции не содержится логического значения"
diff --git a/po/sk.po b/po/sk.po
new file mode 100644 (file)
index 0000000..cf3d5cc
--- /dev/null
+++ b/po/sk.po
@@ -0,0 +1,159 @@
+# 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"
diff --git a/po/sl.po b/po/sl.po
new file mode 100644 (file)
index 0000000..ff87fc1
--- /dev/null
+++ b/po/sl.po
@@ -0,0 +1,268 @@
+# 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"
diff --git a/po/sr.po b/po/sr.po
new file mode 100644 (file)
index 0000000..e8d1513
--- /dev/null
+++ b/po/sr.po
@@ -0,0 +1,257 @@
+# 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 "Тренутни положај не садржи врсту ниске"
diff --git a/po/sr@latin.po b/po/sr@latin.po
new file mode 100644 (file)
index 0000000..124e5e3
--- /dev/null
@@ -0,0 +1,257 @@
+# 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"
diff --git a/po/sv.po b/po/sv.po
new file mode 100644 (file)
index 0000000..576afba
--- /dev/null
+++ b/po/sv.po
@@ -0,0 +1,170 @@
+# 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"
+
diff --git a/po/te.po b/po/te.po
new file mode 100644 (file)
index 0000000..e13e3c7
--- /dev/null
+++ b/po/te.po
@@ -0,0 +1,158 @@
+# 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 "ప్రస్తుత స్థితి పదాల రకం కలిగి లేదు"
diff --git a/po/tg.po b/po/tg.po
new file mode 100644 (file)
index 0000000..3b3246d
--- /dev/null
+++ b/po/tg.po
@@ -0,0 +1,260 @@
+# 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 "Ҷойгиршавии ҷорӣ ягон намуди сатрро дар бар намегирад"
diff --git a/po/tr.po b/po/tr.po
new file mode 100644 (file)
index 0000000..a50c711
--- /dev/null
+++ b/po/tr.po
@@ -0,0 +1,170 @@
+# 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"
+
diff --git a/po/ug.po b/po/ug.po
new file mode 100644 (file)
index 0000000..4c32cd8
--- /dev/null
+++ b/po/ug.po
@@ -0,0 +1,153 @@
+# 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 "نۆۋەتتىكى ئورۇندىكىسىنىڭ تىپى تېكىست ئەمەس"
diff --git a/po/uk.po b/po/uk.po
new file mode 100644 (file)
index 0000000..e7c9471
--- /dev/null
+++ b/po/uk.po
@@ -0,0 +1,269 @@
+# 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 "Поточна позиція не утримує тип рядка"
+
diff --git a/po/vi.po b/po/vi.po
new file mode 100644 (file)
index 0000000..74fdc57
--- /dev/null
+++ b/po/vi.po
@@ -0,0 +1,166 @@
+# 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ý"
diff --git a/po/zh_CN.po b/po/zh_CN.po
new file mode 100644 (file)
index 0000000..a0a598d
--- /dev/null
@@ -0,0 +1,269 @@
+# 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)类型"
diff --git a/po/zh_HK.po b/po/zh_HK.po
new file mode 100644 (file)
index 0000000..24a3dca
--- /dev/null
@@ -0,0 +1,265 @@
+# 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 "目前的位置並未持有布林類型"
diff --git a/po/zh_TW.po b/po/zh_TW.po
new file mode 100644 (file)
index 0000000..860167f
--- /dev/null
@@ -0,0 +1,265 @@
+# 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 "目前的位置並未持有布林類型"
diff --git a/tests/Makefile.am b/tests/Makefile.am
deleted file mode 100644 (file)
index e9a0467..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-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)
diff --git a/tests/test-generator.c b/tests/test-generator.c
deleted file mode 100644 (file)
index 864dbb9..0000000
+++ /dev/null
@@ -1,357 +0,0 @@
-#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 ();
-}