tizen 2.3 release tizen_2.3 submit/tizen_2.3/20150202.055237 tizen_2.3_release
authorjk7744.park <jk7744.park@samsung.com>
Sun, 1 Feb 2015 04:17:54 +0000 (13:17 +0900)
committerjk7744.park <jk7744.park@samsung.com>
Sun, 1 Feb 2015 04:17:54 +0000 (13:17 +0900)
125 files changed:
AUTHORS
ChangeLog
Doxyfile [new file with mode: 0644]
Makefile.am
Makefile.am.inc [new file with mode: 0644]
Makefile.in
NEWS
README
README-WIN32.html
README.html
RELEASE_CHECKLIST.txt [new file with mode: 0644]
aclocal.m4
arraylist.c
arraylist.h
autogen.sh [new file with mode: 0755]
bits.h
config.guess
config.h.in
config.h.win32
config.sub
configure
configure.in
debug.h
depcomp
doc/html/annotated.html
doc/html/arraylist_8h.html
doc/html/bits_8h.html
doc/html/classes.html
doc/html/config_8h.html [deleted file]
doc/html/debug_8h.html
doc/html/deprecated.html [new file with mode: 0644]
doc/html/doxygen.css
doc/html/files.html
doc/html/functions.html
doc/html/functions_vars.html
doc/html/globals.html
doc/html/globals_defs.html
doc/html/globals_enum.html
doc/html/globals_eval.html
doc/html/globals_func.html
doc/html/globals_type.html
doc/html/globals_vars.html
doc/html/index.html
doc/html/json_8h.html
doc/html/json__inttypes_8h.html [new file with mode: 0644]
doc/html/json__object_8h.html
doc/html/json__object__iterator_8h.html [new file with mode: 0644]
doc/html/json__object__private_8h.html
doc/html/json__tokener_8h.html
doc/html/json__util_8h.html
doc/html/linkhash_8h.html
doc/html/pages.html [new file with mode: 0644]
doc/html/printbuf_8h.html
doc/html/structarray__list.html
doc/html/structjson__object.html
doc/html/structjson__object__iter.html
doc/html/structjson__object__iterator.html [new file with mode: 0644]
doc/html/structjson__tokener.html
doc/html/structjson__tokener__srec.html
doc/html/structlh__entry.html
doc/html/structlh__table.html
doc/html/structprintbuf.html
doc/html/tabs.css
doc/html/unionjson__object_1_1data.html
install-sh
json-c.vcproj [new file with mode: 0644]
json.h
json_config.h.in [new file with mode: 0644]
json_inttypes.h [new file with mode: 0644]
json_object.c
json_object.h
json_object_iterator.c [new file with mode: 0644]
json_object_iterator.h [new file with mode: 0644]
json_object_private.h
json_tokener.c
json_tokener.h
json_util.c
json_util.h
libjson.manifest [deleted file]
linkhash.c
linkhash.h
ltmain.sh
missing
packaging/json-c.manifest [new file with mode: 0644]
packaging/json-c.spec [new file with mode: 0644]
packaging/libjson.spec [deleted file]
printbuf.c
printbuf.h
test1.c [deleted file]
test3.c [deleted file]
tests/Makefile.am [new file with mode: 0644]
tests/Makefile.in [new file with mode: 0644]
tests/parse_flags.c [new file with mode: 0644]
tests/parse_flags.h [new file with mode: 0644]
tests/parse_int64.test [new file with mode: 0755]
tests/test-defs.sh [new file with mode: 0755]
tests/test1.c [new file with mode: 0644]
tests/test1.expected [new file with mode: 0644]
tests/test1.test [new file with mode: 0755]
tests/test1Formatted_plain.expected [new file with mode: 0644]
tests/test1Formatted_pretty.expected [new file with mode: 0644]
tests/test1Formatted_spaced.expected [new file with mode: 0644]
tests/test2.c [moved from test2.c with 73% similarity]
tests/test2.expected [new file with mode: 0644]
tests/test2.test [new file with mode: 0755]
tests/test2Formatted_plain.expected [new file with mode: 0644]
tests/test2Formatted_pretty.expected [new file with mode: 0644]
tests/test2Formatted_spaced.expected [new file with mode: 0644]
tests/test4.c [new file with mode: 0644]
tests/test4.expected [new file with mode: 0644]
tests/test4.test [new file with mode: 0755]
tests/test_cast.c [new file with mode: 0644]
tests/test_cast.expected [new file with mode: 0644]
tests/test_cast.test [new file with mode: 0755]
tests/test_null.c [new file with mode: 0644]
tests/test_null.expected [new file with mode: 0644]
tests/test_null.test [new file with mode: 0755]
tests/test_parse.c [new file with mode: 0644]
tests/test_parse.expected [new file with mode: 0644]
tests/test_parse.test [new file with mode: 0755]
tests/test_parse_int64.c [new file with mode: 0644]
tests/test_parse_int64.expected [new file with mode: 0644]
tests/test_printbuf.c [new file with mode: 0644]
tests/test_printbuf.expected [new file with mode: 0644]
tests/test_printbuf.test [new file with mode: 0755]

diff --git a/AUTHORS b/AUTHORS
index 38f2ce0..b389989 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,2 +1,5 @@
 Michael Clark <michael@metaparadigm.com>
+Jehiah Czebotar <jehiah@gmail.com>
+Eric Haszlakiewicz <hawicz+json-c@gmail.com>
 C. Watford (christopher.watford@gmail.com)
+
index dddd995..e0fd4a3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,51 @@
+0.10
+
+  * Add a json_object_to_json_string_ext() function to allow output to be
+     formatted in a more human readable form.
+  * Add json_object_object_get_ex(), a NULL-safe get object method, to be able
+     to distinguish between a key not present and the value being NULL.
+  * Add an alternative iterator implementation, see json_object_iterator.h
+  * Make json_object_iter public to enable external use of the
+     json_object_object_foreachC macro.
+  * Add a printbuf_memset() function to provide an effecient way to set and
+     append things like whitespace indentation.
+  * Adjust json_object_is_type and json_object_get_type so they return
+      json_type_null for NULL objects and handle NULL passed to
+      json_objct_object_get().
+  * Rename boolean type to json_bool.
+  * Fix various compile issues for Visual Studio and MinGW.
+  * Allow json_tokener_parse_ex() to be re-used to parse multiple object.
+     Also, fix some parsing issues with capitalized hexadecimal numbers and
+     number in E notation.
+  * Add json_tokener_get_error() and json_tokener_error_desc() to better 
+     encapsulate the process of retrieving errors while parsing.
+  * Various improvements to the documentation of many functions.
+  * Add new json_object_array_sort() function.
+  * Fix a bug in json_object_get_int(), which would incorrectly return 0
+    when called on a string type object.
+    Eric Haszlakiewicz
+  * Add a json_type_to_name() function.
+    Eric Haszlakiewicz
+  * Add a json_tokener_parse_verbose() function.
+    Jehiah Czebotar
+  * Improve support for null bytes within JSON strings.
+    Jehiah Czebotar
+  * Fix file descriptor leak if memory allocation fails in json_util
+    Zachary Blair, zack_blair at hotmail dot com
+  * Add int64 support. Two new functions json_object_net_int64 and
+    json_object_get_int64. Binary compatibility preserved.
+    Eric Haszlakiewicz, EHASZLA at transunion com
+    Rui Miguel Silva Seabra, rms at 1407 dot org
+  * Fix subtle bug in linkhash where lookup could hang after all slots
+    were filled then successively freed.
+    Spotted by Jean-Marc Naud, j dash m at newtraxtech dot com
+  * Make json_object_from_file take const char *filename
+    Spotted by Vikram Raj V, vsagar at attinteractive dot com
+  * Add handling of surrogate pairs (json_tokener.c, test4.c, Makefile.am)
+    Brent Miller, bdmiller at yahoo dash inc dot com
+  * Correction to comment describing printbuf_memappend in printbuf.h
+    Brent Miller, bdmiller at yahoo dash inc dot com
+
 0.9
   * Add README.html README-WIN32.html config.h.win32 to Makefile.am
     Michael Clark, <michael@metaparadigm.com>
diff --git a/Doxyfile b/Doxyfile
new file mode 100644 (file)
index 0000000..3ff27eb
--- /dev/null
+++ b/Doxyfile
@@ -0,0 +1,1153 @@
+# Doxyfile 1.3.8
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+#       TAG = value [value, ...]
+# For lists items can also be appended using:
+#       TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
+# by quotes) that should identify the project.
+
+PROJECT_NAME           = json-c
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
+# This could be handy for archiving the generated documentation or 
+# if some version control system is used.
+
+PROJECT_NUMBER         = 0.10
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
+# base path where the generated documentation will be put. 
+# If a relative path is entered, it will be relative to the location 
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY       = doc
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
+# 4096 sub-directories (in 2 levels) under the output directory of each output 
+# format and will distribute the generated files over these directories. 
+# Enabling this option can be useful when feeding doxygen a huge amount of source 
+# files, where putting all generated files in the same directory would otherwise 
+# cause performance problems for the file system.
+
+CREATE_SUBDIRS         = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
+# documentation generated by doxygen is written. Doxygen will use this 
+# information to generate all constant output in the proper language. 
+# The default language is English, other supported languages are: 
+# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, 
+# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, 
+# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, 
+# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, 
+# Swedish, and Ukrainian.
+
+OUTPUT_LANGUAGE        = English
+
+# This tag can be used to specify the encoding used in the generated output. 
+# The encoding is not always determined by the language that is chosen, 
+# but also whether or not the output is meant for Windows or non-Windows users. 
+# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES 
+# forces the Windows encoding (this is the default for the Windows binary), 
+# whereas setting the tag to NO uses a Unix-style encoding (the default for 
+# all platforms other than Windows).
+
+USE_WINDOWS_ENCODING   = NO
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
+# include brief member descriptions after the members that are listed in 
+# the file and class documentation (similar to JavaDoc). 
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC      = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
+# the brief description of a member or function before the detailed description. 
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF           = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator 
+# that is used to form the text in various listings. Each string 
+# in this list, if found as the leading text of the brief description, will be 
+# stripped from the text and the result after processing the whole list, is used 
+# as the annotated text. Otherwise, the brief description is used as-is. If left 
+# blank, the following values are used ("$name" is automatically replaced with the 
+# name of the entity): "The $name class" "The $name widget" "The $name file" 
+# "is" "provides" "specifies" "contains" "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF       = 
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
+# Doxygen will generate a detailed section even if there is only a brief 
+# description.
+
+ALWAYS_DETAILED_SEC    = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited 
+# members of a class in the documentation of that class as if those members were 
+# ordinary class members. Constructors, destructors and assignment operators of 
+# the base classes will not be shown.
+
+INLINE_INHERITED_MEMB  = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
+# path before files name in the file list and in the header files. If set 
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES        = YES
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
+# can be used to strip a user-defined part of the path. Stripping is 
+# only done if one of the specified strings matches the left-hand part of 
+# the path. The tag can be used to show relative paths in the file list. 
+# If left blank the directory from which doxygen is run is used as the 
+# path to strip.
+
+STRIP_FROM_PATH        = 
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
+# the path mentioned in the documentation of a class, which tells 
+# the reader which header file to include in order to use a class. 
+# If left blank only the name of the header file containing the class 
+# definition is used. Otherwise one should specify the include paths that 
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH    = 
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
+# (but less readable) file names. This can be useful is your file systems 
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES            = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
+# will interpret the first line (until the first dot) of a JavaDoc-style 
+# comment as the brief description. If set to NO, the JavaDoc 
+# comments will behave just like the Qt-style comments (thus requiring an 
+# explicit @brief command for a brief description.
+
+JAVADOC_AUTOBRIEF      = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
+# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
+# comments) as a brief description. This used to be the default behaviour. 
+# The new default is to treat a multi-line C++ comment block as a detailed 
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the DETAILS_AT_TOP tag is set to YES then Doxygen 
+# will output the detailed description near the top, like JavaDoc.
+# If set to NO, the detailed description appears after the member 
+# documentation.
+
+DETAILS_AT_TOP         = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
+# member inherits the documentation from any documented member that it 
+# re-implements.
+
+INHERIT_DOCS           = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
+# tag is set to YES, then doxygen will reuse the documentation of the first 
+# member in the group (if any) for the other members of the group. By default 
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC   = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE               = 8
+
+# This tag can be used to specify a number of aliases that acts 
+# as commands in the documentation. An alias has the form "name=value". 
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
+# put the command \sideeffect (or @sideeffect) in the documentation, which 
+# will result in a user-defined paragraph with heading "Side Effects:". 
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES                = 
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources 
+# only. Doxygen will then generate output that is more tailored for C. 
+# For instance, some of the names that are used will be different. The list 
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C  = YES
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources 
+# only. Doxygen will then generate output that is more tailored for Java. 
+# For instance, namespaces will be presented as packages, qualified scopes 
+# will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA   = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
+# the same type (for instance a group of public functions) to be put as a 
+# subgroup of that type (e.g. under the Public Functions section). Set it to 
+# NO to prevent subgrouping. Alternatively, this can be done per class using 
+# the \nosubgrouping command.
+
+SUBGROUPING            = YES
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
+# documentation are documented, even if no documentation was available. 
+# Private class members and static file members will be hidden unless 
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL            = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
+# will be included in the documentation.
+
+EXTRACT_PRIVATE        = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file 
+# will be included in the documentation.
+
+EXTRACT_STATIC         = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
+# defined locally in source files will be included in the documentation. 
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES  = NO
+
+# This flag is only useful for Objective-C code. When set to YES local 
+# methods, which are defined in the implementation section but not in 
+# the interface are included in the documentation. 
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS  = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
+# undocumented members of documented classes, files or namespaces. 
+# If set to NO (the default) these members will be included in the 
+# various overviews, but no documentation section is generated. 
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS     = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
+# undocumented classes that are normally visible in the class hierarchy. 
+# If set to NO (the default) these classes will be included in the various 
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES     = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
+# friend (class|struct|union) declarations. 
+# If set to NO (the default) these declarations will be included in the 
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS  = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
+# documentation blocks found inside the body of a function. 
+# If set to NO (the default) these blocks will be appended to the 
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS      = NO
+
+# The INTERNAL_DOCS tag determines if documentation 
+# that is typed after a \internal command is included. If the tag is set 
+# to NO (the default) then the documentation will be excluded. 
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS          = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
+# file names in lower-case letters. If set to YES upper-case letters are also 
+# allowed. This is useful if you have classes or files whose names only differ 
+# in case and if your file system supports case sensitive file names. Windows 
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES       = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
+# will show members with their full class and namespace scopes in the 
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES       = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
+# will put a list of the files that are included by a file in the documentation 
+# of that file.
+
+SHOW_INCLUDE_FILES     = NO
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
+# is inserted in the documentation for inline members.
+
+INLINE_INFO            = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
+# will sort the (detailed) documentation of file and class members 
+# alphabetically by member name. If set to NO the members will appear in 
+# declaration order.
+
+SORT_MEMBER_DOCS       = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
+# brief documentation of file, namespace and class members alphabetically 
+# by member name. If set to NO (the default) the members will appear in 
+# declaration order.
+
+SORT_BRIEF_DOCS        = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
+# sorted by fully-qualified names, including namespaces. If set to 
+# NO (the default), the class list will be sorted only by class name, 
+# not including the namespace part. 
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the 
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME     = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or 
+# disable (NO) the todo list. This list is created by putting \todo 
+# commands in the documentation.
+
+GENERATE_TODOLIST      = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or 
+# disable (NO) the test list. This list is created by putting \test 
+# commands in the documentation.
+
+GENERATE_TESTLIST      = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or 
+# disable (NO) the bug list. This list is created by putting \bug 
+# commands in the documentation.
+
+GENERATE_BUGLIST       = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
+# disable (NO) the deprecated list. This list is created by putting 
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional 
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS       = 
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
+# the initial value of a variable or define consists of for it to appear in 
+# the documentation. If the initializer consists of more lines than specified 
+# here it will be hidden. Use a value of 0 to hide initializers completely. 
+# The appearance of the initializer of individual variables and defines in the 
+# documentation can be controlled using \showinitializer or \hideinitializer 
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES  = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated 
+# at the bottom of the documentation of classes and structs. If set to YES the 
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES        = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated 
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET                  = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are 
+# generated by doxygen. Possible values are YES and NO. If left blank 
+# NO is used.
+
+WARNINGS               = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED   = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
+# potential errors in the documentation, such as not documenting some 
+# parameters in a documented function, or documenting parameters that 
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR      = YES
+
+# The WARN_FORMAT tag determines the format of the warning messages that 
+# doxygen can produce. The string should contain the $file, $line, and $text 
+# tags, which will be replaced by the file and line number from which the 
+# warning originated and the warning text.
+
+WARN_FORMAT            = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning 
+# and error messages should be written. If left blank the output is written 
+# to stderr.
+
+WARN_LOGFILE           = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain 
+# documented source files. You may enter file names like "myfile.cpp" or 
+# directories like "/usr/src/myproject". Separate the files or directories 
+# with spaces.
+
+INPUT                  = 
+
+# If the value of the INPUT tag contains directories, you can use the 
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank the following patterns are tested: 
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp 
+# *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm
+
+FILE_PATTERNS          = *.h
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
+# should be searched for input files as well. Possible values are YES and NO. 
+# If left blank NO is used.
+
+RECURSIVE              = NO
+
+# The EXCLUDE tag can be used to specify files and/or directories that should 
+# excluded from the INPUT source files. This way you can easily exclude a 
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE                = 
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories 
+# that are symbolic links (a Unix filesystem feature) are excluded from the input.
+
+EXCLUDE_SYMLINKS       = NO
+
+# If the value of the INPUT tag contains directories, you can use the 
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
+# certain files from those directories.
+
+EXCLUDE_PATTERNS       = 
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or 
+# directories that contain example code fragments that are included (see 
+# the \include command).
+
+EXAMPLE_PATH           = 
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank all files are included.
+
+EXAMPLE_PATTERNS       = 
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
+# searched for input files to be used with the \include or \dontinclude 
+# commands irrespective of the value of the RECURSIVE tag. 
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE      = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or 
+# directories that contain image that are included in the documentation (see 
+# the \image command).
+
+IMAGE_PATH             = 
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should 
+# invoke to filter for each input file. Doxygen will invoke the filter program 
+# by executing (via popen()) the command <filter> <input-file>, where <filter> 
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
+# input file. Doxygen will then use the output that the filter program writes 
+# to standard output.  If FILTER_PATTERNS is specified, this tag will be 
+# ignored.
+
+INPUT_FILTER           = 
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
+# basis.  Doxygen will compare the file name with each pattern and apply the 
+# filter if there is a match.  The filters are a list of the form: 
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
+# is applied to all files.
+
+FILTER_PATTERNS        = 
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
+# INPUT_FILTER) will be used to filter the input files when producing source 
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES    = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
+# be generated. Documented entities will be cross-referenced with these sources. 
+# Note: To get rid of all source code in the generated output, make sure also 
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER         = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body 
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES         = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
+# doxygen to hide any special comment blocks from generated source code 
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS    = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES (the default) 
+# then for each documented function all documented 
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES (the default) 
+# then for each documented function all documented entities 
+# called/used by that function will be listed.
+
+REFERENCES_RELATION    = YES
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
+# will generate a verbatim copy of the header file for each class for 
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS       = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
+# of all compounds will be generated. Enable this if the project 
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX     = NO
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX    = 5
+
+# In case all classes in a project start with a common prefix, all 
+# classes will be put under the same header in the alphabetical index. 
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX          = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
+# generate HTML output.
+
+GENERATE_HTML          = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT            = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION    = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard header.
+
+HTML_HEADER            = 
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard footer.
+
+HTML_FOOTER            = 
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
+# style sheet that is used by each HTML page. It can be used to 
+# fine-tune the look of the HTML output. If the tag is left blank doxygen 
+# will generate a default style sheet. Note that doxygen will try to copy 
+# the style sheet file to the HTML output directory, so don't put your own 
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET        = 
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
+# files or namespaces will be aligned in HTML using tables. If set to 
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS     = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
+# will be generated that can be used as input for tools like the 
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) 
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP      = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
+# be used to specify the file name of the resulting .chm file. You 
+# can add a path in front of the file if the result should not be 
+# written to the html output directory.
+
+CHM_FILE               = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
+# be used to specify the location (absolute path including file name) of 
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION           = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
+# controls if a separate .chi index file is generated (YES) or that 
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI           = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
+# controls whether a binary table of contents is generated (YES) or a 
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members 
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND             = NO
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
+# top of each HTML page. The value NO (the default) enables the index and 
+# the value YES disables it.
+
+DISABLE_INDEX          = NO
+
+# This tag can be used to set the number of enum values (range [1..20]) 
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE   = 4
+
+# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
+# generated containing a tree-like index structure (just like the one that 
+# is generated for HTML Help). For this to work a browser that supports 
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
+# probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW      = NO
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
+# used to set the initial width (in pixels) of the frame in which the tree 
+# is shown.
+
+TREEVIEW_WIDTH         = 250
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
+# generate Latex output.
+
+GENERATE_LATEX         = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT           = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
+# generate index for LaTeX. If left blank `makeindex' will be used as the 
+# default command name.
+
+MAKEINDEX_CMD_NAME     = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
+# LaTeX documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_LATEX          = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used 
+# by the printer. Possible values are: a4, a4wide, letter, legal and 
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE             = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES         = 
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
+# the generated latex document. The header should contain everything until 
+# the first chapter. If it is left blank doxygen will generate a 
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER           = 
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
+# contain links (just like the HTML output) instead of page references 
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS         = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
+# plain latex in the generated Makefile. Set this option to YES to get a 
+# higher quality PDF documentation.
+
+USE_PDFLATEX           = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
+# command to the generated LaTeX files. This will instruct LaTeX to keep 
+# running if errors occur, instead of asking the user for help. 
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE        = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
+# include the index chapters (such as File Index, Compound Index, etc.) 
+# in the output.
+
+LATEX_HIDE_INDICES     = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
+# The RTF output is optimized for Word 97 and may not look very pretty with 
+# other RTF readers or editors.
+
+GENERATE_RTF           = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT             = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
+# RTF documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_RTF            = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
+# will contain hyperlink fields. The RTF file will 
+# contain links (just like the HTML output) instead of page references. 
+# This makes the output suitable for online browsing using WORD or other 
+# programs which support those fields. 
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS         = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's 
+# config file, i.e. a series of assignments. You only have to provide 
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE    = 
+
+# Set optional variables used in the generation of an rtf document. 
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
+# generate man pages
+
+GENERATE_MAN           = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT             = man
+
+# The MAN_EXTENSION tag determines the extension that is added to 
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION          = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
+# then it will generate one additional man file for each entity 
+# documented in the real man page(s). These additional files 
+# only source the real man page, but without them the man command 
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will 
+# generate an XML file that captures the structure of 
+# the code including all documentation.
+
+GENERATE_XML           = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT             = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_SCHEMA             = 
+
+# The XML_DTD tag can be used to specify an XML DTD, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_DTD                = 
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
+# dump the program listings (including syntax highlighting 
+# and cross-referencing information) to the XML output. Note that 
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
+# generate an AutoGen Definitions (see autogen.sf.net) file 
+# that captures the structure of the code including all 
+# documentation. Note that this feature is still experimental 
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
+# generate a Perl module file that captures the structure of 
+# the code including all documentation. Note that this 
+# feature is still experimental and incomplete at the 
+# moment.
+
+GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX          = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
+# nicely formatted so it can be parsed by a human reader.  This is useful 
+# if you want to understand what is going on.  On the other hand, if this 
+# tag is set to NO the size of the Perl module output will be much smaller 
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY         = YES
+
+# The names of the make variables in the generated doxyrules.make file 
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
+# This is useful so different doxyrules.make files included by the same 
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
+# evaluate all C-preprocessor directives found in the sources and include 
+# files.
+
+ENABLE_PREPROCESSING   = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
+# names in the source code. If set to NO (the default) only conditional 
+# compilation will be performed. Macro expansion can be done in a controlled 
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION        = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
+# then the macro expansion is limited to the macros specified with the 
+# PREDEFINED and EXPAND_AS_PREDEFINED tags.
+
+EXPAND_ONLY_PREDEF     = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES        = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that 
+# contain include files that are not input files but should be processed by 
+# the preprocessor.
+
+INCLUDE_PATH           = 
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
+# patterns (like *.h and *.hpp) to filter out the header-files in the 
+# directories. If left blank, the patterns specified with FILE_PATTERNS will 
+# be used.
+
+INCLUDE_FILE_PATTERNS  = 
+
+# The PREDEFINED tag can be used to specify one or more macro names that 
+# are defined before the preprocessor is started (similar to the -D option of 
+# gcc). The argument of the tag is a list of macros of the form: name 
+# or name=definition (no spaces). If the definition and the = are 
+# omitted =1 is assumed.
+
+PREDEFINED             = 
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
+# this tag can be used to specify a list of macro names that should be expanded. 
+# The macro definition that is found in the sources will be used. 
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED      = 
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
+# doxygen's preprocessor will remove all function-like macros that are alone 
+# on a line, have an all uppercase name, and do not end with a semicolon. Such 
+# function macros are typically used for boiler-plate code, and will confuse the 
+# parser if not removed.
+
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles. 
+# Optionally an initial location of the external documentation 
+# can be added for each tagfile. The format of a tag file without 
+# this location is as follows: 
+#   TAGFILES = file1 file2 ... 
+# Adding location for the tag files is done as follows: 
+#   TAGFILES = file1=loc1 "file2 = loc2" ... 
+# where "loc1" and "loc2" can be relative or absolute paths or 
+# URLs. If a location is present for each tag, the installdox tool 
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen 
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES               = 
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE       = 
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
+# in the class index. If set to NO only the inherited external classes 
+# will be listed.
+
+ALLEXTERNALS           = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
+# in the modules index. If set to NO, only the current project's groups will 
+# be listed.
+
+EXTERNAL_GROUPS        = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script 
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH              = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base or 
+# super classes. Setting the tag to NO turns the diagrams off. Note that this 
+# option is superseded by the HAVE_DOT option below. This is only a fallback. It is 
+# recommended to install and use dot, since it yields more powerful graphs.
+
+CLASS_DIAGRAMS         = YES
+
+# If set to YES, the inheritance and collaboration graphs will hide 
+# inheritance and usage relations if the target is undocumented 
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS   = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
+# available from the path. This tool is part of Graphviz, a graph visualization 
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT               = NO
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect inheritance relations. Setting this tag to YES will force the 
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH            = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect implementation dependencies (inheritance, containment, and 
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH    = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
+# collaboration diagrams in a style similar to the OMG's Unified Modeling 
+# Language.
+
+UML_LOOK               = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the 
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS     = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
+# tags are set to YES then doxygen will generate a graph for each documented 
+# file showing the direct and indirect include dependencies of the file with 
+# other documented files.
+
+INCLUDE_GRAPH          = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
+# documented header file showing the documented files that directly or 
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH      = YES
+
+# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
+# generate a call dependency graph for every global function or class method. 
+# Note that enabling this option will significantly increase the time of a run. 
+# So in most cases it will be better to enable call graphs for selected 
+# functions only using the \callgraph command.
+
+CALL_GRAPH             = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY    = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT       = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be 
+# found. If left blank, it is assumed the dot tool can be found on the path.
+
+DOT_PATH               = 
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that 
+# contain dot files that are included in the documentation (see the 
+# \dotfile command).
+
+DOTFILE_DIRS           = 
+
+# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width 
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
+# this value, doxygen will try to truncate the graph, so that it fits within 
+# the specified constraint. Beware that most browsers cannot cope with very 
+# large images.
+
+MAX_DOT_GRAPH_WIDTH    = 1024
+
+# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height 
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
+# this value, doxygen will try to truncate the graph, so that it fits within 
+# the specified constraint. Beware that most browsers cannot cope with very 
+# large images.
+
+MAX_DOT_GRAPH_HEIGHT   = 1024
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
+# graphs generated by dot. A depth value of 3 means that only nodes reachable 
+# from the root by following a path via at most 3 edges will be shown. Nodes that 
+# lay further from the root node will be omitted. Note that setting this option to 
+# 1 or 2 may greatly reduce the computation time needed for large code bases. Also 
+# note that a graph may be further truncated if the graph's image dimensions are 
+# not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT). 
+# If 0 is used for the depth value (the default), the graph is not depth-constrained.
+
+MAX_DOT_GRAPH_DEPTH    = 0
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
+# generate a legend page explaining the meaning of the various boxes and 
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND        = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
+# remove the intermediate dot files that are used to generate 
+# the various graphs.
+
+DOT_CLEANUP            = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine   
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be 
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE           = NO
index ba897d9..8391517 100644 (file)
@@ -1,6 +1,7 @@
-AM_CFLAGS = -Wall -Wwrite-strings -Werror -std=gnu99 -D_GNU_SOURCE -D_REENTRANT
+include Makefile.am.inc
 
-EXTRA_DIST = README.html README-WIN32.html config.h.win32 doc
+EXTRA_DIST = README.html README-WIN32.html config.h.win32 doc json-c.vcproj
+SUBDIRS = . tests
 
 lib_LTLIBRARIES = libjson.la
 
@@ -9,18 +10,26 @@ pkgconfig_DATA = json.pc
 
 libjsonincludedir = $(includedir)/json
 libjsoninclude_HEADERS = \
-        json.h \
+       arraylist.h \
        bits.h \
        debug.h \
-       linkhash.h \
-       arraylist.h \
-        printbuf.h \
-       json_util.h \
+       json.h \
+       json_config.h \
+       json_inttypes.h \
        json_object.h \
-        json_object_private.h \
-       json_tokener.h
+       json_object_private.h \
+    json_object_iterator.h \
+       json_tokener.h \
+       json_util.h \
+       linkhash.h \
+       printbuf.h
 
-libjson_la_LDFLAGS = -version-info 0:1:0
+#libjsonx_includedir = $(libdir)/json-c-@VERSION@
+#
+#libjsonx_include_HEADERS = \
+#      json_config.h
+
+libjson_la_LDFLAGS = -version-info 1:0:1 -no-undefined
 
 libjson_la_SOURCES = \
        arraylist.c \
@@ -31,13 +40,8 @@ libjson_la_SOURCES = \
        linkhash.c \
        printbuf.c
 
-check_PROGRAMS = test1 test2 test3
-
-test1_SOURCES = test1.c
-test1_LDADD = $(lib_LTLIBRARIES)
 
-test2_SOURCES = test2.c
-test2_LDADD = $(lib_LTLIBRARIES)
+distclean-local:
+       -rm -rf $(testsubdir)
+       -rm -rf config.h.in~ Makefile.in aclocal.m4 autom4te.cache/ config.guess config.sub configure depcomp install-sh ltmain.sh missing
 
-test3_SOURCES = test3.c
-test3_LDADD = $(lib_LTLIBRARIES)
diff --git a/Makefile.am.inc b/Makefile.am.inc
new file mode 100644 (file)
index 0000000..b1ebce8
--- /dev/null
@@ -0,0 +1,2 @@
+AM_CFLAGS = -Wall -Wwrite-strings -Werror -std=gnu99 -D_GNU_SOURCE -D_REENTRANT
+
index 8dc9d62..c06db3e 100644 (file)
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in 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.
@@ -18,8 +19,9 @@
 
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -34,13 +36,13 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-check_PROGRAMS = test1$(EXEEXT) test2$(EXEEXT) test3$(EXEEXT)
-subdir = .
 DIST_COMMON = README $(am__configure_deps) $(libjsoninclude_HEADERS) \
-       $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-       $(srcdir)/config.h.in $(srcdir)/json.pc.in \
+       $(srcdir)/Makefile.am $(srcdir)/Makefile.am.inc \
+       $(srcdir)/Makefile.in $(srcdir)/config.h.in \
+       $(srcdir)/json.pc.in $(srcdir)/json_config.h.in \
        $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
        config.guess config.sub depcomp install-sh ltmain.sh missing
+subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
@@ -48,17 +50,32 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
  configure.lineno config.status.lineno
 mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = config.h
+CONFIG_HEADER = config.h json_config.h
 CONFIG_CLEAN_FILES = json.pc
+CONFIG_CLEAN_VPATH_FILES =
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
 am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" \
        "$(DESTDIR)$(libjsonincludedir)"
-libLTLIBRARIES_INSTALL = $(INSTALL)
 LTLIBRARIES = $(lib_LTLIBRARIES)
 libjson_la_LIBADD =
 am_libjson_la_OBJECTS = arraylist.lo debug.lo json_object.lo \
@@ -67,18 +84,10 @@ libjson_la_OBJECTS = $(am_libjson_la_OBJECTS)
 libjson_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
        $(libjson_la_LDFLAGS) $(LDFLAGS) -o $@
-am_test1_OBJECTS = test1.$(OBJEXT)
-test1_OBJECTS = $(am_test1_OBJECTS)
-test1_DEPENDENCIES = $(lib_LTLIBRARIES)
-am_test2_OBJECTS = test2.$(OBJEXT)
-test2_OBJECTS = $(am_test2_OBJECTS)
-test2_DEPENDENCIES = $(lib_LTLIBRARIES)
-am_test3_OBJECTS = test3.$(OBJEXT)
-test3_OBJECTS = $(am_test3_OBJECTS)
-test3_DEPENDENCIES = $(lib_LTLIBRARIES)
 DEFAULT_INCLUDES = -I.@am__isrc@
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
+am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
@@ -88,23 +97,57 @@ CCLD = $(CC)
 LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
        --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
        $(LDFLAGS) -o $@
-SOURCES = $(libjson_la_SOURCES) $(test1_SOURCES) $(test2_SOURCES) \
-       $(test3_SOURCES)
-DIST_SOURCES = $(libjson_la_SOURCES) $(test1_SOURCES) $(test2_SOURCES) \
-       $(test3_SOURCES)
-pkgconfigDATA_INSTALL = $(INSTALL_DATA)
+SOURCES = $(libjson_la_SOURCES)
+DIST_SOURCES = $(libjson_la_SOURCES)
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+       html-recursive info-recursive install-data-recursive \
+       install-dvi-recursive install-exec-recursive \
+       install-html-recursive install-info-recursive \
+       install-pdf-recursive install-ps-recursive install-recursive \
+       installcheck-recursive installdirs-recursive pdf-recursive \
+       ps-recursive uninstall-recursive
 DATA = $(pkgconfig_DATA)
-libjsonincludeHEADERS_INSTALL = $(INSTALL_HEADER)
 HEADERS = $(libjsoninclude_HEADERS)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+       distdir dist dist-all distcheck
 ETAGS = etags
 CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
 top_distdir = $(distdir)
 am__remove_distdir = \
-  { test ! -d $(distdir) \
-    || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
-         && rm -fr $(distdir); }; }
+  { test ! -d "$(distdir)" \
+    || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+         && rm -fr "$(distdir)"; }; }
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 DIST_ARCHIVES = $(distdir).tar.gz
 GZIP_ENV = --best
 distuninstallcheck_listfiles = find . -type f -print
@@ -159,6 +202,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 RANLIB = @RANLIB@
@@ -220,24 +264,32 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 AM_CFLAGS = -Wall -Wwrite-strings -Werror -std=gnu99 -D_GNU_SOURCE -D_REENTRANT
-EXTRA_DIST = README.html README-WIN32.html config.h.win32 doc
+EXTRA_DIST = README.html README-WIN32.html config.h.win32 doc json-c.vcproj
+SUBDIRS = . tests
 lib_LTLIBRARIES = libjson.la
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = json.pc
 libjsonincludedir = $(includedir)/json
 libjsoninclude_HEADERS = \
-        json.h \
+       arraylist.h \
        bits.h \
        debug.h \
-       linkhash.h \
-       arraylist.h \
-        printbuf.h \
-       json_util.h \
+       json.h \
+       json_config.h \
+       json_inttypes.h \
        json_object.h \
-        json_object_private.h \
-       json_tokener.h
+       json_object_private.h \
+       json_tokener.h \
+       json_util.h \
+       linkhash.h \
+       printbuf.h
+
 
-libjson_la_LDFLAGS = -version-info 0:1:0
+#libjsonx_includedir = $(libdir)/json-c-@VERSION@
+#
+#libjsonx_include_HEADERS = \
+#      json_config.h
+libjson_la_LDFLAGS = -version-info 1:0:1 -no-undefined
 libjson_la_SOURCES = \
        arraylist.c \
        debug.c \
@@ -247,32 +299,26 @@ libjson_la_SOURCES = \
        linkhash.c \
        printbuf.c
 
-test1_SOURCES = test1.c
-test1_LDADD = $(lib_LTLIBRARIES)
-test2_SOURCES = test2.c
-test2_LDADD = $(lib_LTLIBRARIES)
-test3_SOURCES = test3.c
-test3_LDADD = $(lib_LTLIBRARIES)
-all: config.h
-       $(MAKE) $(AM_MAKEFLAGS) all-am
+all: config.h json_config.h
+       $(MAKE) $(AM_MAKEFLAGS) all-recursive
 
 .SUFFIXES:
 .SUFFIXES: .c .lo .o .obj
 am--refresh:
        @:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(srcdir)/Makefile.am.inc $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
-             echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
-             cd $(srcdir) && $(AUTOMAKE) --gnu  \
+             echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
+             $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
                && exit 0; \
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  Makefile'; \
-       cd $(top_srcdir) && \
-         $(AUTOMAKE) --gnu  Makefile
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -288,9 +334,10 @@ $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENC
        $(SHELL) ./config.status --recheck
 
 $(top_srcdir)/configure:  $(am__configure_deps)
-       cd $(srcdir) && $(AUTOCONF)
+       $(am__cd) $(srcdir) && $(AUTOCONF)
 $(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-       cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+       $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
 
 config.h: stamp-h1
        @if test ! -f $@; then \
@@ -302,31 +349,45 @@ stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
        @rm -f stamp-h1
        cd $(top_builddir) && $(SHELL) ./config.status config.h
 $(srcdir)/config.h.in:  $(am__configure_deps) 
-       cd $(top_srcdir) && $(AUTOHEADER)
+       ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
        rm -f stamp-h1
        touch $@
 
+json_config.h: stamp-h2
+       @if test ! -f $@; then \
+         rm -f stamp-h2; \
+         $(MAKE) $(AM_MAKEFLAGS) stamp-h2; \
+       else :; fi
+
+stamp-h2: $(srcdir)/json_config.h.in $(top_builddir)/config.status
+       @rm -f stamp-h2
+       cd $(top_builddir) && $(SHELL) ./config.status json_config.h
+
 distclean-hdr:
-       -rm -f config.h stamp-h1
+       -rm -f config.h stamp-h1 json_config.h stamp-h2
 json.pc: $(top_builddir)/config.status $(srcdir)/json.pc.in
        cd $(top_builddir) && $(SHELL) ./config.status $@
 install-libLTLIBRARIES: $(lib_LTLIBRARIES)
        @$(NORMAL_INSTALL)
        test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
-       @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+       @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+       list2=; for p in $$list; do \
          if test -f $$p; then \
-           f=$(am__strip_dir) \
-           echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
-           $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
+           list2="$$list2 $$p"; \
          else :; fi; \
-       done
+       done; \
+       test -z "$$list2" || { \
+         echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
+         $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
+       }
 
 uninstall-libLTLIBRARIES:
        @$(NORMAL_UNINSTALL)
-       @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
-         p=$(am__strip_dir) \
-         echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
-         $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
+       @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+       for p in $$list; do \
+         $(am__strip_dir) \
+         echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
+         $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
        done
 
 clean-libLTLIBRARIES:
@@ -340,22 +401,6 @@ clean-libLTLIBRARIES:
 libjson.la: $(libjson_la_OBJECTS) $(libjson_la_DEPENDENCIES) 
        $(libjson_la_LINK) -rpath $(libdir) $(libjson_la_OBJECTS) $(libjson_la_LIBADD) $(LIBS)
 
-clean-checkPROGRAMS:
-       @list='$(check_PROGRAMS)'; for p in $$list; do \
-         f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
-         echo " rm -f $$p $$f"; \
-         rm -f $$p $$f ; \
-       done
-test1$(EXEEXT): $(test1_OBJECTS) $(test1_DEPENDENCIES) 
-       @rm -f test1$(EXEEXT)
-       $(LINK) $(test1_OBJECTS) $(test1_LDADD) $(LIBS)
-test2$(EXEEXT): $(test2_OBJECTS) $(test2_DEPENDENCIES) 
-       @rm -f test2$(EXEEXT)
-       $(LINK) $(test2_OBJECTS) $(test2_LDADD) $(LIBS)
-test3$(EXEEXT): $(test3_OBJECTS) $(test3_DEPENDENCIES) 
-       @rm -f test3$(EXEEXT)
-       $(LINK) $(test3_OBJECTS) $(test3_LDADD) $(LIBS)
-
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
 
@@ -369,27 +414,24 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/json_util.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkhash.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printbuf.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test1.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test2.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test3.Po@am__quote@
 
 .c.o:
 @am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@   $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(LTCOMPILE) -c -o $@ $<
@@ -405,36 +447,112 @@ distclean-libtool:
 install-pkgconfigDATA: $(pkgconfig_DATA)
        @$(NORMAL_INSTALL)
        test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)"
-       @list='$(pkgconfig_DATA)'; for p in $$list; do \
+       @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+       for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-         f=$(am__strip_dir) \
-         echo " $(pkgconfigDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
-         $(pkgconfigDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfigdir)/$$f"; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \
        done
 
 uninstall-pkgconfigDATA:
        @$(NORMAL_UNINSTALL)
-       @list='$(pkgconfig_DATA)'; for p in $$list; do \
-         f=$(am__strip_dir) \
-         echo " rm -f '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
-         rm -f "$(DESTDIR)$(pkgconfigdir)/$$f"; \
-       done
+       @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       test -n "$$files" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(pkgconfigdir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(pkgconfigdir)" && rm -f $$files
 install-libjsonincludeHEADERS: $(libjsoninclude_HEADERS)
        @$(NORMAL_INSTALL)
        test -z "$(libjsonincludedir)" || $(MKDIR_P) "$(DESTDIR)$(libjsonincludedir)"
-       @list='$(libjsoninclude_HEADERS)'; for p in $$list; do \
+       @list='$(libjsoninclude_HEADERS)'; test -n "$(libjsonincludedir)" || list=; \
+       for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-         f=$(am__strip_dir) \
-         echo " $(libjsonincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(libjsonincludedir)/$$f'"; \
-         $(libjsonincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(libjsonincludedir)/$$f"; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libjsonincludedir)'"; \
+         $(INSTALL_HEADER) $$files "$(DESTDIR)$(libjsonincludedir)" || exit $$?; \
        done
 
 uninstall-libjsonincludeHEADERS:
        @$(NORMAL_UNINSTALL)
-       @list='$(libjsoninclude_HEADERS)'; for p in $$list; do \
-         f=$(am__strip_dir) \
-         echo " rm -f '$(DESTDIR)$(libjsonincludedir)/$$f'"; \
-         rm -f "$(DESTDIR)$(libjsonincludedir)/$$f"; \
+       @list='$(libjsoninclude_HEADERS)'; test -n "$(libjsonincludedir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       test -n "$$files" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(libjsonincludedir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(libjsonincludedir)" && rm -f $$files
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+       @fail= failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+       @fail= failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
        done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -447,46 +565,64 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
        mkid -fID $$unique
 tags: TAGS
 
-TAGS:  $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in json_config.h.in $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
-       tags=; \
+       set x; \
        here=`pwd`; \
-       list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+         empty_fix=.; \
+       else \
+         include_option=--include; \
+         empty_fix=; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test ! -f $$subdir/TAGS || \
+             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS) config.h.in json_config.h.in $(LISP) $(TAGS_FILES)'; \
        unique=`for i in $$list; do \
            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
          done | \
          $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
              END { if (nonempty) { for (i in files) print i; }; }'`; \
-       if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
          test -n "$$unique" || unique=$$empty_fix; \
-         $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-           $$tags $$unique; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
        fi
 ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in json_config.h.in $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
-       tags=; \
-       list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+       list='$(SOURCES) $(HEADERS) config.h.in json_config.h.in $(LISP) $(TAGS_FILES)'; \
        unique=`for i in $$list; do \
            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
          done | \
          $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
              END { if (nonempty) { for (i in files) print i; }; }'`; \
-       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+       test -z "$(CTAGS_ARGS)$$unique" \
          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-            $$tags $$unique
+            $$unique
 
 GTAGS:
        here=`$(am__cd) $(top_builddir) && pwd` \
-         && cd $(top_srcdir) \
-         && gtags -i $(GTAGS_ARGS) $$here
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
        -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
 distdir: $(DISTFILES)
        $(am__remove_distdir)
-       test -d $(distdir) || mkdir $(distdir)
+       test -d "$(distdir)" || mkdir "$(distdir)"
        @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
        topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
        list='$(DISTFILES)'; \
@@ -502,21 +638,55 @@ distdir: $(DISTFILES)
          if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
          if test -d $$d/$$file; then \
            dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
-           test -f $(distdir)/$$file \
-           || cp -p $$d/$$file $(distdir)/$$file \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -d "$(distdir)/$$subdir" \
+           || $(MKDIR_P) "$(distdir)/$$subdir" \
            || exit 1; \
          fi; \
        done
-       -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+           $(am__relativize); \
+           new_distdir=$$reldir; \
+           dir1=$$subdir; dir2="$(top_distdir)"; \
+           $(am__relativize); \
+           new_top_distdir=$$reldir; \
+           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+           echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+           ($(am__cd) $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$$new_top_distdir" \
+               distdir="$$new_distdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               am__skip_mode_fix=: \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+       -test -n "$(am__skip_mode_fix)" \
+       || find "$(distdir)" -type d ! -perm -755 \
+               -exec chmod u+rwx,go+rx {} \; -o \
          ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
          ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
          ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
-       || chmod -R a+r $(distdir)
+       || chmod -R a+r "$(distdir)"
 dist-gzip: distdir
        tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
        $(am__remove_distdir)
@@ -529,6 +699,10 @@ dist-lzma: distdir
        tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
        $(am__remove_distdir)
 
+dist-xz: distdir
+       tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
+       $(am__remove_distdir)
+
 dist-tarZ: distdir
        tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
        $(am__remove_distdir)
@@ -552,15 +726,17 @@ dist dist-all: distdir
 distcheck: dist
        case '$(DIST_ARCHIVES)' in \
        *.tar.gz*) \
-         GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+         GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
        *.tar.bz2*) \
-         bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+         bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
        *.tar.lzma*) \
-         unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\
+         lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+       *.tar.xz*) \
+         xz -dc $(distdir).tar.xz | $(am__untar) ;;\
        *.tar.Z*) \
          uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
        *.shar.gz*) \
-         GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
+         GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
        *.zip*) \
          unzip $(distdir).zip ;;\
        esac
@@ -568,9 +744,11 @@ distcheck: dist
        mkdir $(distdir)/_build
        mkdir $(distdir)/_inst
        chmod a-w $(distdir)
+       test -d $(distdir)/_build || exit 0; \
        dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
          && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
-         && cd $(distdir)/_build \
+         && am__cwd=`pwd` \
+         && $(am__cd) $(distdir)/_build \
          && ../configure --srcdir=.. --prefix="$$dc_install_base" \
            $(DISTCHECK_CONFIGURE_FLAGS) \
          && $(MAKE) $(AM_MAKEFLAGS) \
@@ -592,13 +770,15 @@ distcheck: dist
          && rm -rf "$$dc_destdir" \
          && $(MAKE) $(AM_MAKEFLAGS) dist \
          && rm -rf $(DIST_ARCHIVES) \
-         && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
+         && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+         && cd "$$am__cwd" \
+         || exit 1
        $(am__remove_distdir)
        @(echo "$(distdir) archives ready for distribution: "; \
          list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
          sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
 distuninstallcheck:
-       @cd $(distuninstallcheck_dir) \
+       @$(am__cd) '$(distuninstallcheck_dir)' \
        && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
           || { echo "ERROR: files left after uninstall:" ; \
                if test -n "$(DESTDIR)"; then \
@@ -616,22 +796,23 @@ distcleancheck: distclean
               $(distcleancheck_listfiles) ; \
               exit 1; } >&2
 check-am: all-am
-       $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS) config.h
-installdirs:
+check: check-recursive
+all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS) config.h \
+               json_config.h
+installdirs: installdirs-recursive
+installdirs-am:
        for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(libjsonincludedir)"; do \
          test -z "$$dir" || $(MKDIR_P) "$$dir"; \
        done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
 
 install-am: all-am
        @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
 
-installcheck: installcheck-am
+installcheck: installcheck-recursive
 install-strip:
        $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
          install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
@@ -643,81 +824,96 @@ clean-generic:
 
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
        @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
+clean: clean-recursive
 
-clean-am: clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \
-       clean-libtool mostlyclean-am
+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
+       mostlyclean-am
 
-distclean: distclean-am
+distclean: distclean-recursive
        -rm -f $(am__CONFIG_DISTCLEAN_FILES)
        -rm -rf ./$(DEPDIR)
        -rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
-       distclean-hdr distclean-libtool distclean-tags
+       distclean-hdr distclean-libtool distclean-local distclean-tags
 
-dvi: dvi-am
+dvi: dvi-recursive
 
 dvi-am:
 
-html: html-am
+html: html-recursive
+
+html-am:
 
-info: info-am
+info: info-recursive
 
 info-am:
 
 install-data-am: install-libjsonincludeHEADERS install-pkgconfigDATA
 
-install-dvi: install-dvi-am
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
 
 install-exec-am: install-libLTLIBRARIES
 
-install-html: install-html-am
+install-html: install-html-recursive
 
-install-info: install-info-am
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
 
 install-man:
 
-install-pdf: install-pdf-am
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
 
-install-ps: install-ps-am
+install-ps-am:
 
 installcheck-am:
 
-maintainer-clean: maintainer-clean-am
+maintainer-clean: maintainer-clean-recursive
        -rm -f $(am__CONFIG_DISTCLEAN_FILES)
        -rm -rf $(top_srcdir)/autom4te.cache
        -rm -rf ./$(DEPDIR)
        -rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
-mostlyclean: mostlyclean-am
+mostlyclean: mostlyclean-recursive
 
 mostlyclean-am: mostlyclean-compile mostlyclean-generic \
        mostlyclean-libtool
 
-pdf: pdf-am
+pdf: pdf-recursive
 
 pdf-am:
 
-ps: ps-am
+ps: ps-recursive
 
 ps-am:
 
 uninstall-am: uninstall-libLTLIBRARIES uninstall-libjsonincludeHEADERS \
        uninstall-pkgconfigDATA
 
-.MAKE: install-am install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
+       ctags-recursive install-am install-strip tags-recursive
 
-.PHONY: CTAGS GTAGS all all-am am--refresh check check-am clean \
-       clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \
-       clean-libtool ctags dist dist-all dist-bzip2 dist-gzip \
-       dist-lzma dist-shar dist-tarZ dist-zip distcheck distclean \
-       distclean-compile distclean-generic distclean-hdr \
-       distclean-libtool distclean-tags distcleancheck distdir \
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am am--refresh check check-am clean clean-generic \
+       clean-libLTLIBRARIES clean-libtool ctags ctags-recursive dist \
+       dist-all dist-bzip2 dist-gzip dist-lzma dist-shar dist-tarZ \
+       dist-xz dist-zip distcheck distclean distclean-compile \
+       distclean-generic distclean-hdr distclean-libtool \
+       distclean-local distclean-tags distcleancheck distdir \
        distuninstallcheck dvi dvi-am html html-am info info-am \
        install install-am install-data install-data-am install-dvi \
        install-dvi-am install-exec install-exec-am install-html \
@@ -725,11 +921,17 @@ uninstall-am: uninstall-libLTLIBRARIES uninstall-libjsonincludeHEADERS \
        install-libLTLIBRARIES install-libjsonincludeHEADERS \
        install-man install-pdf install-pdf-am install-pkgconfigDATA \
        install-ps install-ps-am install-strip installcheck \
-       installcheck-am installdirs maintainer-clean \
+       installcheck-am installdirs installdirs-am maintainer-clean \
        maintainer-clean-generic mostlyclean mostlyclean-compile \
        mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-       tags uninstall uninstall-am uninstall-libLTLIBRARIES \
-       uninstall-libjsonincludeHEADERS uninstall-pkgconfigDATA
+       tags tags-recursive uninstall uninstall-am \
+       uninstall-libLTLIBRARIES uninstall-libjsonincludeHEADERS \
+       uninstall-pkgconfigDATA
+
+
+distclean-local:
+       -rm -rf $(testsubdir)
+       -rm -rf config.h.in~ Makefile.in aclocal.m4 autom4te.cache/ config.guess config.sub configure depcomp install-sh ltmain.sh missing
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/NEWS b/NEWS
index 41e843b..e69de29 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1 +0,0 @@
-News
diff --git a/README b/README
index beeba53..05ec274 100644 (file)
--- a/README
+++ b/README
@@ -1,16 +1,24 @@
-Building on Unix with gcc and autotools
+Building on Unix with git, gcc and autotools
 
-If checking out from CVS:
+Home page for json-c:
+  http://oss.metaparadigm.com/json-c/
 
-       sh autogen.sh
+Github repo for json-c:
+  https://github.com/json-c/json-c
 
-Then configure, make, make install
+    $ git clone https://github.com/json-c/json-c.git
+    $ cd json-c
+    $ sh autogen.sh
 
+Then 
 
-Test programs
+    $ ./configure
+    $ make
+    $ make install
 
-To build the test programs run 'make check'
+To build and run the test programs run 
 
+    $ make check
 
 Linking to libjson
 
index 678fc9d..28fc7d8 100644 (file)
@@ -1,6 +1,4 @@
-<!DOCTYPE html \r
-     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"\r
-     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">\r
        <head>\r
                <title>JSON-C - A JSON implementation in C - Win32 specific notes</title>\r
                                Added cast and mask to suffice <tt>size_t</tt> v. <tt>unsigned int</tt>\r
                                conversion correctness</dd>\r
                </dl>\r
-                <h3>Anonymous Subversion</h3>
-                <p><code># <b>svn co http://svn.metaparadigm.com/svn/json-c/trunk json-c</b></code></p>
-               <p>Copyright Metaparadigm Pte. Ltd. 2004, 2005. <a href="mailto:michael@metaparadigm.com">Michael \r
-                               Clark </a>\r
-               </p>\r
                <p>This program is free software; you can redistribute it and/or modify it under \r
                        the terms of the MIT License. See COPYING for details.</p>\r
                <hr />\r
index c5cba3a..dc696af 100644 (file)
@@ -1,32 +1,34 @@
-<!DOCTYPE html \r
-     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"\r
-     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">\r
-       <head>\r
-               <title>JSON-C - A JSON implementation in C</title>\r
-               <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">\r
-       </head>\r
-       <body>\r
-               <h2>JSON-C - A JSON implementation in C</h2>\r
-               <p>Latest release: <a href="json-c-0.9.tar.gz">json-c-0.9.tar.gz</a></p>\r
-               <p>JSON-C implements a reference counting object model that allows you to easily \r
-                       construct JSON objects in C, output them as JSON formatted strings and parse \r
-                       JSON formatted strings back into the C representation of JSON objects.</p>\r
-               <p>Minimal documentation exists <a href="doc/html/json__object_8h.html">here</a>, \r
-                       Although you are probably better reading the example code in test1.c.</p>\r
-               <p>To setup JSON-C to build on your system please run <tt>configure</tt> before \r
-                       compiling. If you are on Win32 and are not using the VS project file, be sure \r
-                       to rename <tt>config.h.win32</tt> to <tt>config.h</tt> before building.</p>\r
-               <P>Win32 specific notes can be found <a href="README-WIN32.html">here</a>.</P>\r
-               <p>Please send bug reports to <a href="mailto:michael@metaparadigm.com">michael@metaparadigm.com</a></p>\r
-               <p>Please send Win32 bug reports to <a href="mailto:christopher.watford@gmail.com">christopher.watford@gmail.com</a></p>\r
-               <h3>Anonymous Subversion</h3>\r
-               <p><code># <b>svn co http://svn.metaparadigm.com/svn/json-c/trunk json-c</b></code></p>\r
-               <p>Copyright Metaparadigm Pte. Ltd. 2004, 2005. <a href="mailto:michael@metaparadigm.com">Michael \r
-                               Clark </a>\r
-               </p>\r
-               <p>This program is free software; you can redistribute it and/or modify it under \r
-                       the terms of the MIT License. See COPYING for details.</p>\r
-               <hr>\r
-       </body>\r
-</html>\r
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+       <head>
+               <title>JSON-C - A JSON implementation in C</title>
+               <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+       </head>
+       <body>
+               <h2>JSON-C - A JSON implementation in C</h2>
+
+               <h3>Overview</h3>
+               <p>JSON-C implements a reference counting object model that allows you to easily 
+               construct JSON objects in C, output them as JSON formatted strings and parse 
+               JSON formatted strings back into the C representation of JSON objects.</p>
+
+               <h3>Building</h3>
+               <p>To setup JSON-C to build on your system please run <tt>configure</tt> and <tt>make</tt>.</p>
+               <p>If you are on Win32 and are not using the VS project file, be sure 
+               to rename <tt>config.h.win32</tt> to <tt>config.h</tt> before building.</p>
+
+               <h3>Documentation</h3>
+               <P>Doxygen generated documentation exists <a href="doc/html/json__object_8h.html">here</a>
+               and Win32 specific notes can be found <a href="README-WIN32.html">here</a>.</P>
+
+               <h3><a href="https://github.com/json-c/json-c">GIT Reposository</a></h3>
+               <p><strong><code>git clone https://github.com/json-c/json-c.git</code></strong></p>
+
+               <h3><a href="http://groups.google.com/group/json-c">Mailing List</a></h3>
+                <pi>Send email to <strong><code>json-c <i>&lt;at&gt;</i> googlegroups <i>&lt;dot&gt;</i> com</code></strong></p>
+
+               <h3><a href="COPYING">License</a></h3>
+               <p>This program is free software; you can redistribute it and/or modify it under the terms of the MIT License..</p>
+               <hr/>
+       </body>
+</html>
diff --git a/RELEASE_CHECKLIST.txt b/RELEASE_CHECKLIST.txt
new file mode 100644 (file)
index 0000000..28f5b89
--- /dev/null
@@ -0,0 +1,57 @@
+
+Release checklist:
+
+release=0.10
+git clone https://github.com/json-c/json-c json-c-${release}
+cd json-c-${release}
+
+Check that the compile works on Linux
+Check that the compile works on NetBSD
+Check that the compile works on Windows
+Check ChangeLog to see if anything should be added.
+
+  git branch json-c-${release}
+  git checkout json-c-${release}
+
+Generate the configure script and other files:
+  sh autogen.sh
+  git add -f Makefile.in aclocal.m4 config.guess \
+       config.sub configure depcomp install-sh \
+       ltmain.sh missing tests/Makefile.in
+
+  # check for anything else to be added:
+  git status --ignored
+  git commit
+
+Generate the doxygen documentation:
+  doxygen
+  git add doc
+  git commit doc
+
+cd ..
+echo .git > excludes
+echo autom4te.cache >> excludes
+tar -czf json-c-${release}.tar.gz -X excludes json-c-${release}
+
+echo doc >> excludes
+tar -czf json-c-${release}-doc.tar.gz -X excludes json-c-${release}
+
+Tag the branch:
+cd json-c-${release}
+git tag json-c-${release}-$(date +%Y%m%d)
+
+Go to https://github.com/json-c/json-c/downloads
+Upload the two tarballs.
+
+
+===================================
+
+Post-release checklist:
+
+git branch master
+Add new section to CHANGES
+Update the version in Doxyfile
+Update the version in configure.in
+Update the libjson_la_LDFLAGS line in Makefile.am to the new version.
+       http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
+
index e6cb067..c09de71 100644 (file)
@@ -1,7 +1,7 @@
-# generated automatically by aclocal 1.10.2 -*- Autoconf -*-
+# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
 # 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.
@@ -13,8 +13,8 @@
 
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.63],,
-[m4_warning([this file was generated for autoconf 2.63.
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],,
+[m4_warning([this file was generated for autoconf 2.68.
 You have another version of autoconf.  It may work, but is not guaranteed to.
 If you have problems, you may need to regenerate the build system entirely.
 To do so, use the procedure documented by the package, typically `autoreconf'.])])
@@ -1036,7 +1036,7 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES],
 # to the aix ld manual.
 m4_defun([_LT_SYS_MODULE_PATH_AIX],
 [m4_require([_LT_DECL_SED])dnl
-AC_LINK_IFELSE(AC_LANG_PROGRAM,[
+AC_LINK_IFELSE([AC_LANG_PROGRAM],[
 lt_aix_libpath_sed='
     /Import File Strings/,/^$/ {
        /^0/ {
@@ -2500,18 +2500,6 @@ linux* | k*bsd*-gnu)
   dynamic_linker='GNU/Linux ld.so'
   ;;
 
-netbsdelf*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='NetBSD ld.elf_so'
-  ;;
-
 netbsd*)
   version_type=sunos
   need_lib_prefix=no
@@ -3103,7 +3091,7 @@ linux* | k*bsd*-gnu)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-netbsd* | netbsdelf*-gnu)
+netbsd*)
   if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
     lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
   else
@@ -3784,7 +3772,7 @@ m4_if([$1], [CXX], [
            ;;
        esac
        ;;
-      netbsd* | netbsdelf*-gnu)
+      netbsd*)
        ;;
       *qnx* | *nto*)
         # QNX uses GNU C++, but need to define -shared option too, otherwise
@@ -4209,9 +4197,6 @@ m4_if([$1], [CXX], [
   cygwin* | mingw* | cegcc*)
     _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
   ;;
-  linux* | k*bsd*-gnu)
-    _LT_TAGVAR(link_all_deplibs, $1)=no
-  ;;
   *)
     _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
   ;;
@@ -4458,7 +4443,7 @@ _LT_EOF
       fi
       ;;
 
-    netbsd* | netbsdelf*-gnu)
+    netbsd*)
       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
        _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
        wlarc=
@@ -4633,7 +4618,6 @@ _LT_EOF
        if test "$aix_use_runtimelinking" = yes; then
          shared_flag="$shared_flag "'${wl}-G'
        fi
-       _LT_TAGVAR(link_all_deplibs, $1)=no
       else
        # not using gcc
        if test "$host_cpu" = ia64; then
@@ -4857,9 +4841,18 @@ _LT_EOF
        # implicitly export all symbols.
         save_LDFLAGS="$LDFLAGS"
         LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-        AC_LINK_IFELSE(int foo(void) {},
+        AC_LINK_IFELSE(
+          [AC_LANG_SOURCE(
+        [AC_LANG_CASE([C], [[int foo (void) { return 0; }]],
+              [C++], [[int foo (void) { return 0; }]],
+              [Fortran 77], [[
+       subroutine foo
+       end]],
+              [Fortran], [[
+       subroutine foo
+       end]])])], [
           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-        )
+        ])
         LDFLAGS="$save_LDFLAGS"
       else
        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
@@ -4872,7 +4865,7 @@ _LT_EOF
       _LT_TAGVAR(link_all_deplibs, $1)=yes
       ;;
 
-    netbsd* | netbsdelf*-gnu)
+    netbsd*)
       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
        _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
       else
@@ -7875,15 +7868,15 @@ m4_define([lt_dict_filter],
 
 # Generated from ltversion.in.
 
-# serial 3012 ltversion.m4
+# serial 3017 ltversion.m4
 # This file is part of GNU Libtool
 
-m4_define([LT_PACKAGE_VERSION], [2.2.6])
-m4_define([LT_PACKAGE_REVISION], [1.3012])
+m4_define([LT_PACKAGE_VERSION], [2.2.6b])
+m4_define([LT_PACKAGE_REVISION], [1.3017])
 
 AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.2.6'
-macro_revision='1.3012'
+[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)
 ])
@@ -7993,10 +7986,10 @@ m4_ifndef([_LT_AC_FILE_LTDLL_C],        [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
 # generated from the m4 files accompanying Automake X.Y.
 # (This private macro should not be called outside this file.)
 AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.10'
+[am__api_version='1.11'
 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
 dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.10.2], [],
+m4_if([$1], [1.11.1], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -8012,7 +8005,7 @@ m4_define([_AM_AUTOCONF_VERSION], [])
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.10.2])dnl
+[AM_AUTOMAKE_VERSION([1.11.1])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
@@ -8072,14 +8065,14 @@ am_aux_dir=`cd $ac_aux_dir && pwd`
 
 # AM_CONDITIONAL                                            -*- Autoconf -*-
 
-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
 # Free Software Foundation, Inc.
 #
 # 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 8
+# serial 9
 
 # AM_CONDITIONAL(NAME, SHELL-CONDITION)
 # -------------------------------------
@@ -8092,6 +8085,7 @@ AC_SUBST([$1_TRUE])dnl
 AC_SUBST([$1_FALSE])dnl
 _AM_SUBST_NOTMAKE([$1_TRUE])dnl
 _AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
 if $2; then
   $1_TRUE=
   $1_FALSE='#'
@@ -8105,14 +8099,14 @@ AC_CONFIG_COMMANDS_PRE(
 Usually this means the macro was only invoked conditionally.]])
 fi])])
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
 # Free Software Foundation, Inc.
 #
 # 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 9
+# serial 10
 
 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
 # written in clear, in which case automake, when reading aclocal.m4,
@@ -8169,6 +8163,16 @@ AC_CACHE_CHECK([dependency style of $depcc],
   if test "$am_compiler_list" = ""; then
      am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
   fi
+  am__universal=false
+  m4_case([$1], [CC],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac],
+    [CXX],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac])
+
   for depmode in $am_compiler_list; do
     # Setup a source with many dependencies, because some compilers
     # like to wrap large dependency lists on column 80 (with \), and
@@ -8186,7 +8190,17 @@ AC_CACHE_CHECK([dependency style of $depcc],
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
     case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
     nosideeffect)
       # after this tag, mechanisms are not by side-effect, so they'll
       # only be used when explicitly requested
@@ -8196,19 +8210,23 @@ AC_CACHE_CHECK([dependency style of $depcc],
        break
       fi
       ;;
+    msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
     none) break ;;
     esac
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.
     if depmode=$depmode \
-       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       source=sub/conftest.c object=$am__obj \
        depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
          >/dev/null 2>conftest.err &&
        grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
        grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
        ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
       # icc doesn't choke on unknown options, it will just issue warnings
       # or remarks (even with -Werror).  So we grep stderr for any message
@@ -8358,13 +8376,13 @@ AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
 # Do all the work for Automake.                             -*- Autoconf -*-
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2008 Free Software Foundation, Inc.
+# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
 #
 # 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 13
+# serial 16
 
 # This macro actually does too much.  Some checks are only needed if
 # your package does certain things.  But this isn't really a big deal.
@@ -8381,7 +8399,7 @@ AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
 # arguments mandatory, and then we can depend on a new Autoconf
 # release and drop the old call support.
 AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_PREREQ([2.60])dnl
+[AC_PREREQ([2.62])dnl
 dnl Autoconf wants to disallow AM_ names.  We explicitly allow
 dnl the ones we care about.
 m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
@@ -8432,8 +8450,8 @@ AM_MISSING_PROG(AUTOCONF, autoconf)
 AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
 AM_MISSING_PROG(AUTOHEADER, autoheader)
 AM_MISSING_PROG(MAKEINFO, makeinfo)
-AM_PROG_INSTALL_SH
-AM_PROG_INSTALL_STRIP
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
 AC_REQUIRE([AM_PROG_MKDIR_P])dnl
 # We need awk for the "check" target.  The system "awk" is bad on
 # some platforms.
@@ -8441,24 +8459,37 @@ AC_REQUIRE([AC_PROG_AWK])dnl
 AC_REQUIRE([AC_PROG_MAKE_SET])dnl
 AC_REQUIRE([AM_SET_LEADING_DOT])dnl
 _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
-              [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
-                            [_AM_PROG_TAR([v7])])])
+             [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+                            [_AM_PROG_TAR([v7])])])
 _AM_IF_OPTION([no-dependencies],,
 [AC_PROVIDE_IFELSE([AC_PROG_CC],
-                  [_AM_DEPENDENCIES(CC)],
-                  [define([AC_PROG_CC],
-                          defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+                 [_AM_DEPENDENCIES(CC)],
+                 [define([AC_PROG_CC],
+                         defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
 AC_PROVIDE_IFELSE([AC_PROG_CXX],
-                  [_AM_DEPENDENCIES(CXX)],
-                  [define([AC_PROG_CXX],
-                          defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+                 [_AM_DEPENDENCIES(CXX)],
+                 [define([AC_PROG_CXX],
+                         defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
 AC_PROVIDE_IFELSE([AC_PROG_OBJC],
-                  [_AM_DEPENDENCIES(OBJC)],
-                  [define([AC_PROG_OBJC],
-                          defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+                 [_AM_DEPENDENCIES(OBJC)],
+                 [define([AC_PROG_OBJC],
+                         defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
 ])
+_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
+dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
+dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
+dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
 ])
 
+dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
 
 # When config.status generates a header, we must update the stamp-h file.
 # This file resides in the same directory as the config header
@@ -8481,7 +8512,7 @@ for _am_header in $config_headers :; do
 done
 echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
 
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2003, 2005, 2008  Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -8492,7 +8523,14 @@ echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_co
 # Define $install_sh.
 AC_DEFUN([AM_PROG_INSTALL_SH],
 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
 AC_SUBST(install_sh)])
 
 # Copyright (C) 2003, 2005  Free Software Foundation, Inc.
@@ -8518,13 +8556,13 @@ AC_SUBST([am__leading_dot])])
 
 # Check to see how 'make' treats includes.                 -*- Autoconf -*-
 
-# Copyright (C) 2001, 2002, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002, 2003, 2005, 2009  Free Software Foundation, Inc.
 #
 # 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 3
+# serial 4
 
 # AM_MAKE_INCLUDE()
 # -----------------
@@ -8533,7 +8571,7 @@ AC_DEFUN([AM_MAKE_INCLUDE],
 [am_make=${MAKE-make}
 cat > confinc << 'END'
 am__doit:
-       @echo done
+       @echo this is the am__doit target
 .PHONY: am__doit
 END
 # If we don't find an include directive, just comment out the code.
@@ -8543,24 +8581,24 @@ am__quote=
 _am_result=none
 # First try GNU make style include.
 echo "include confinc" > confmf
-# We grep out `Entering directory' and `Leaving directory'
-# messages which can occur if `w' ends up in MAKEFLAGS.
-# In particular we don't look at `^make:' because GNU make might
-# be invoked under some other name (usually "gmake"), in which
-# case it prints its new name instead of `make'.
-if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
-   am__include=include
-   am__quote=
-   _am_result=GNU
-fi
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
 # Now try BSD make style include.
 if test "$am__include" = "#"; then
    echo '.include "confinc"' > confmf
-   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
-      am__include=.include
-      am__quote="\""
-      _am_result=BSD
-   fi
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
 fi
 AC_SUBST([am__include])
 AC_SUBST([am__quote])
@@ -8570,14 +8608,14 @@ rm -f confinc confmf
 
 # Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
 
-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
 # Free Software Foundation, Inc.
 #
 # 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 5
+# serial 6
 
 # AM_MISSING_PROG(NAME, PROGRAM)
 # ------------------------------
@@ -8594,7 +8632,14 @@ AC_SUBST($1)])
 AC_DEFUN([AM_MISSING_HAS_RUN],
 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
 AC_REQUIRE_AUX_FILE([missing])dnl
-test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
 # Use eval to expand $SHELL
 if eval "$MISSING --run true"; then
   am_missing_run="$MISSING --run "
@@ -8665,14 +8710,14 @@ AC_DEFUN([_AM_IF_OPTION],
 
 # Check to make sure that the build environment is sane.    -*- Autoconf -*-
 
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
 # Free Software Foundation, Inc.
 #
 # 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
+# serial 5
 
 # AM_SANITY_CHECK
 # ---------------
@@ -8681,16 +8726,29 @@ AC_DEFUN([AM_SANITY_CHECK],
 # Just in case
 sleep 1
 echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[[\\\"\#\$\&\'\`$am_lf]]*)
+    AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+  *[[\\\"\#\$\&\'\`$am_lf\ \   ]]*)
+    AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+esac
+
 # Do `set' in a subshell so we don't clobber the current shell's
 # arguments.  Must try -L first in case configure is actually a
 # symlink; some systems play weird games with the mod time of symlinks
 # (eg FreeBSD returns the mod time of the symlink's containing
 # directory).
 if (
-   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
    if test "$[*]" = "X"; then
       # -L didn't work.
-      set X `ls -t $srcdir/configure conftest.file`
+      set X `ls -t "$srcdir/configure" conftest.file`
    fi
    rm -f conftest.file
    if test "$[*]" != "X $srcdir/configure conftest.file" \
@@ -8743,18 +8801,25 @@ fi
 INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
 AC_SUBST([INSTALL_STRIP_PROGRAM])])
 
-# Copyright (C) 2006  Free Software Foundation, Inc.
+# Copyright (C) 2006, 2008  Free Software Foundation, Inc.
 #
 # 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 2
+
 # _AM_SUBST_NOTMAKE(VARIABLE)
 # ---------------------------
 # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
 # This macro is traced by Automake.
 AC_DEFUN([_AM_SUBST_NOTMAKE])
 
+# AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
 # Check how to create a tarball.                            -*- Autoconf -*-
 
 # Copyright (C) 2004, 2005  Free Software Foundation, Inc.
index cd04eea..9a673d6 100644 (file)
@@ -87,6 +87,13 @@ array_list_add(struct array_list *arr, void *data)
   return array_list_put_idx(arr, arr->length, data);
 }
 
+void
+array_list_sort(struct array_list *arr, int(*sort_fn)(const void *, const void *))
+{
+  qsort(arr->array, arr->length, sizeof(arr->array[0]),
+       (int (*)(const void *, const void *))sort_fn);
+}
+
 int
 array_list_length(struct array_list *arr)
 {
index bc85c80..4f3113c 100644 (file)
@@ -46,6 +46,9 @@ array_list_add(struct array_list *al, void *data);
 extern int
 array_list_length(struct array_list *al);
 
+extern void
+array_list_sort(struct array_list *arr, int(*compar)(const void *, const void *));
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/autogen.sh b/autogen.sh
new file mode 100755 (executable)
index 0000000..c67b903
--- /dev/null
@@ -0,0 +1 @@
+autoreconf -v --install || exit 1
diff --git a/bits.h b/bits.h
index f308da3..c8cbbc8 100644 (file)
--- a/bits.h
+++ b/bits.h
@@ -22,6 +22,7 @@
 
 #define hexdigit(x) (((x) <= '9') ? (x) - '0' : ((x) & 7) + 9)
 #define error_ptr(error) ((void*)error)
-#define is_error(ptr) ((unsigned long)ptr > (unsigned long)-4000L)
+#define error_description(error)  (json_tokener_errors[error])
+#define is_error(ptr) (ptr == NULL)
 
 #endif
index f32079a..c2246a4 100755 (executable)
@@ -1,10 +1,10 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
 #   Free Software Foundation, Inc.
 
-timestamp='2008-01-23'
+timestamp='2009-12-30'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -27,16 +27,16 @@ timestamp='2008-01-23'
 # the same distribution terms that you use for the rest of that program.
 
 
-# Originally written by Per Bothner <per@bothner.com>.
-# Please send patches to <config-patches@gnu.org>.  Submit a context
-# diff and a properly formatted ChangeLog entry.
+# Originally written by Per Bothner.  Please send patches (context
+# diff format) to <config-patches@gnu.org> and include a ChangeLog
+# entry.
 #
 # This script attempts to guess a canonical system name similar to
 # config.sub.  If it succeeds, it prints the system name on stdout, and
 # exits with 0.  Otherwise, it exits with 1.
 #
-# The plan is that this can be called by configure scripts if you
-# don't specify an explicit build system type.
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
 
 me=`echo "$0" | sed -e 's,.*/,,'`
 
@@ -56,8 +56,9 @@ version="\
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
+Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -170,7 +171,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
            arm*|i386|m68k|ns32k|sh3*|sparc|vax)
                eval $set_cc_for_build
                if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
-                       | grep __ELF__ >/dev/null
+                       | grep -q __ELF__
                then
                    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
                    # Return netbsd for either.  FIX?
@@ -324,14 +325,33 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
        case `/usr/bin/uname -p` in
            sparc) echo sparc-icl-nx7; exit ;;
        esac ;;
+    s390x:SunOS:*:*)
+       echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit ;;
     sun4H:SunOS:5.*:*)
        echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
        exit ;;
     sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
        echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
        exit ;;
+    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+       echo i386-pc-auroraux${UNAME_RELEASE}
+       exit ;;
     i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
-       echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       eval $set_cc_for_build
+       SUN_ARCH="i386"
+       # If there is a compiler, see if it is configured for 64-bit objects.
+       # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+       # This test works for both compilers.
+       if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+           if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+               (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+               grep IS_64BIT_ARCH >/dev/null
+           then
+               SUN_ARCH="x86_64"
+           fi
+       fi
+       echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
        exit ;;
     sun4*:SunOS:6*:*)
        # According to config.sub, this is the proper way to canonicalize
@@ -640,7 +660,7 @@ EOF
            # => hppa64-hp-hpux11.23
 
            if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
-               grep __LP64__ >/dev/null
+               grep -q __LP64__
            then
                HP_ARCH="hppa2.0w"
            else
@@ -791,12 +811,12 @@ EOF
     i*:PW*:*)
        echo ${UNAME_MACHINE}-pc-pw32
        exit ;;
-    *:Interix*:[3456]*)
+    *:Interix*:*)
        case ${UNAME_MACHINE} in
            x86)
                echo i586-pc-interix${UNAME_RELEASE}
                exit ;;
-           EM64T | authenticamd)
+           authenticamd | genuineintel | EM64T)
                echo x86_64-unknown-interix${UNAME_RELEASE}
                exit ;;
            IA64)
@@ -806,6 +826,9 @@ EOF
     [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
        echo i${UNAME_MACHINE}-pc-mks
        exit ;;
+    8664:Windows_NT:*)
+       echo x86_64-pc-mks
+       exit ;;
     i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
        # How do we know it's Interix rather than the generic POSIX subsystem?
        # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
@@ -835,6 +858,20 @@ EOF
     i*86:Minix:*:*)
        echo ${UNAME_MACHINE}-pc-minix
        exit ;;
+    alpha:Linux:*:*)
+       case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+         EV5)   UNAME_MACHINE=alphaev5 ;;
+         EV56)  UNAME_MACHINE=alphaev56 ;;
+         PCA56) UNAME_MACHINE=alphapca56 ;;
+         PCA57) UNAME_MACHINE=alphapca56 ;;
+         EV6)   UNAME_MACHINE=alphaev6 ;;
+         EV67)  UNAME_MACHINE=alphaev67 ;;
+         EV68*) UNAME_MACHINE=alphaev68 ;;
+        esac
+       objdump --private-headers /bin/sh | grep -q ld.so.1
+       if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+       echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+       exit ;;
     arm*:Linux:*:*)
        eval $set_cc_for_build
        if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
@@ -857,6 +894,17 @@ EOF
     frv:Linux:*:*)
        echo frv-unknown-linux-gnu
        exit ;;
+    i*86:Linux:*:*)
+       LIBC=gnu
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #ifdef __dietlibc__
+       LIBC=dietlibc
+       #endif
+EOF
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+       echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+       exit ;;
     ia64:Linux:*:*)
        echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
@@ -866,74 +914,33 @@ EOF
     m68*:Linux:*:*)
        echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
-    mips:Linux:*:*)
-       eval $set_cc_for_build
-       sed 's/^        //' << EOF >$dummy.c
-       #undef CPU
-       #undef mips
-       #undef mipsel
-       #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-       CPU=mipsel
-       #else
-       #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-       CPU=mips
-       #else
-       CPU=
-       #endif
-       #endif
-EOF
-       eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
-           /^CPU/{
-               s: ::g
-               p
-           }'`"
-       test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
-       ;;
-    mips64:Linux:*:*)
+    mips:Linux:*:* | mips64:Linux:*:*)
        eval $set_cc_for_build
        sed 's/^        //' << EOF >$dummy.c
        #undef CPU
-       #undef mips64
-       #undef mips64el
+       #undef ${UNAME_MACHINE}
+       #undef ${UNAME_MACHINE}el
        #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-       CPU=mips64el
+       CPU=${UNAME_MACHINE}el
        #else
        #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-       CPU=mips64
+       CPU=${UNAME_MACHINE}
        #else
        CPU=
        #endif
        #endif
 EOF
-       eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
-           /^CPU/{
-               s: ::g
-               p
-           }'`"
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
        test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
        ;;
     or32:Linux:*:*)
        echo or32-unknown-linux-gnu
        exit ;;
-    ppc:Linux:*:*)
-       echo powerpc-unknown-linux-gnu
-       exit ;;
-    ppc64:Linux:*:*)
-       echo powerpc64-unknown-linux-gnu
+    padre:Linux:*:*)
+       echo sparc-unknown-linux-gnu
        exit ;;
-    alpha:Linux:*:*)
-       case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-         EV5)   UNAME_MACHINE=alphaev5 ;;
-         EV56)  UNAME_MACHINE=alphaev56 ;;
-         PCA56) UNAME_MACHINE=alphapca56 ;;
-         PCA57) UNAME_MACHINE=alphapca56 ;;
-         EV6)   UNAME_MACHINE=alphaev6 ;;
-         EV67)  UNAME_MACHINE=alphaev67 ;;
-         EV68*) UNAME_MACHINE=alphaev68 ;;
-        esac
-       objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
-       if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
-       echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+       echo hppa64-unknown-linux-gnu
        exit ;;
     parisc:Linux:*:* | hppa:Linux:*:*)
        # Look for CPU level
@@ -943,8 +950,11 @@ EOF
          *)    echo hppa-unknown-linux-gnu ;;
        esac
        exit ;;
-    parisc64:Linux:*:* | hppa64:Linux:*:*)
-       echo hppa64-unknown-linux-gnu
+    ppc64:Linux:*:*)
+       echo powerpc64-unknown-linux-gnu
+       exit ;;
+    ppc:Linux:*:*)
+       echo powerpc-unknown-linux-gnu
        exit ;;
     s390:Linux:*:* | s390x:Linux:*:*)
        echo ${UNAME_MACHINE}-ibm-linux
@@ -967,69 +977,6 @@ EOF
     xtensa*:Linux:*:*)
        echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
-    i*86:Linux:*:*)
-       # The BFD linker knows what the default object file format is, so
-       # first see if it will tell us. cd to the root directory to prevent
-       # problems with other programs or directories called `ld' in the path.
-       # Set LC_ALL=C to ensure ld outputs messages in English.
-       ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
-                        | sed -ne '/supported targets:/!d
-                                   s/[         ][      ]*/ /g
-                                   s/.*supported targets: *//
-                                   s/ .*//
-                                   p'`
-        case "$ld_supported_targets" in
-         elf32-i386)
-               TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
-               ;;
-         a.out-i386-linux)
-               echo "${UNAME_MACHINE}-pc-linux-gnuaout"
-               exit ;;
-         coff-i386)
-               echo "${UNAME_MACHINE}-pc-linux-gnucoff"
-               exit ;;
-         "")
-               # Either a pre-BFD a.out linker (linux-gnuoldld) or
-               # one that does not give us useful --help.
-               echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
-               exit ;;
-       esac
-       # Determine whether the default compiler is a.out or elf
-       eval $set_cc_for_build
-       sed 's/^        //' << EOF >$dummy.c
-       #include <features.h>
-       #ifdef __ELF__
-       # ifdef __GLIBC__
-       #  if __GLIBC__ >= 2
-       LIBC=gnu
-       #  else
-       LIBC=gnulibc1
-       #  endif
-       # else
-       LIBC=gnulibc1
-       # endif
-       #else
-       #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
-       LIBC=gnu
-       #else
-       LIBC=gnuaout
-       #endif
-       #endif
-       #ifdef __dietlibc__
-       LIBC=dietlibc
-       #endif
-EOF
-       eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
-           /^LIBC/{
-               s: ::g
-               p
-           }'`"
-       test x"${LIBC}" != x && {
-               echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
-               exit
-       }
-       test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
-       ;;
     i*86:DYNIX/ptx:4*:*)
        # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
        # earlier versions are messed up and put the nodename in both
@@ -1058,7 +1005,7 @@ EOF
     i*86:syllable:*:*)
        echo ${UNAME_MACHINE}-pc-syllable
        exit ;;
-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
        echo i386-unknown-lynxos${UNAME_RELEASE}
        exit ;;
     i*86:*DOS:*:*)
@@ -1102,8 +1049,11 @@ EOF
     pc:*:*:*)
        # Left here for compatibility:
         # uname -m prints for DJGPP always 'pc', but it prints nothing about
-        # the processor, so we play safe by assuming i386.
-       echo i386-pc-msdosdjgpp
+        # the processor, so we play safe by assuming i586.
+       # Note: whatever this is, it MUST be the same as what config.sub
+       # prints for the "djgpp" host, or else GDB configury will decide that
+       # this is a cross-build.
+       echo i586-pc-msdosdjgpp
         exit ;;
     Intel:Mach:3*:*)
        echo i386-pc-mach3
@@ -1141,6 +1091,16 @@ EOF
     3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
         /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
           && { echo i486-ncr-sysv4; exit; } ;;
+    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+       OS_REL='.3'
+       test -r /etc/.relid \
+           && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+           && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+           && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+       /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+           && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
     m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
        echo m68k-unknown-lynxos${UNAME_RELEASE}
        exit ;;
@@ -1153,7 +1113,7 @@ EOF
     rs6000:LynxOS:2.*:*)
        echo rs6000-unknown-lynxos${UNAME_RELEASE}
        exit ;;
-    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
        echo powerpc-unknown-lynxos${UNAME_RELEASE}
        exit ;;
     SM[BE]S:UNIX_SV:*:*)
@@ -1216,6 +1176,9 @@ EOF
     BePC:BeOS:*:*)     # BeOS running on Intel PC compatible.
        echo i586-pc-beos
        exit ;;
+    BePC:Haiku:*:*)    # Haiku running on Intel PC compatible.
+       echo i586-pc-haiku
+       exit ;;
     SX-4:SUPER-UX:*:*)
        echo sx4-nec-superux${UNAME_RELEASE}
        exit ;;
@@ -1243,6 +1206,16 @@ EOF
     *:Darwin:*:*)
        UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
        case $UNAME_PROCESSOR in
+           i386)
+               eval $set_cc_for_build
+               if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+                 if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+                     (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+                     grep IS_64BIT_ARCH >/dev/null
+                 then
+                     UNAME_PROCESSOR="x86_64"
+                 fi
+               fi ;;
            unknown) UNAME_PROCESSOR=powerpc ;;
        esac
        echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
@@ -1324,6 +1297,9 @@ EOF
     i*86:rdos:*:*)
        echo ${UNAME_MACHINE}-pc-rdos
        exit ;;
+    i*86:AROS:*:*)
+       echo ${UNAME_MACHINE}-pc-aros
+       exit ;;
 esac
 
 #echo '(No uname command or uname output not recognized.)' 1>&2
index 5139ae8..04f5dc5 100644 (file)
@@ -80,6 +80,9 @@
 /* Define to 1 if you have the `vsyslog' function. */
 #undef HAVE_VSYSLOG
 
+/* Public define for json_inttypes.h */
+#undef JSON_C_HAVE_INTTYPES_H
+
 /* Define to the sub-directory in which libtool stores uninstalled libraries.
    */
 #undef LT_OBJDIR
 /* 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
 
index 7f7e6ae..ec3a84a 100644 (file)
@@ -12,7 +12,7 @@
 /* config.h.win32  Generated by configure.  */
 
 #define PACKAGE_STRING "JSON C Library 0.2"
-#define PACKAGE_BUGREPORT "michael@metaparadigm.com"
+#define PACKAGE_BUGREPORT "json-c@googlegroups.com"
 #define PACKAGE_NAME "JSON C Library"
 #define PACKAGE_TARNAME "json-c"
 #define PACKAGE_VERSION "0.2"
index 6759825..8518609 100755 (executable)
@@ -1,10 +1,10 @@
 #! /bin/sh
 # Configuration validation subroutine script.
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
 #   Free Software Foundation, Inc.
 
-timestamp='2008-01-16'
+timestamp='2009-12-31'
 
 # This file is (in principle) common to ALL GNU software.
 # The presence of a machine in this file suggests that SOME GNU software
@@ -32,13 +32,16 @@ timestamp='2008-01-16'
 
 
 # Please send patches to <config-patches@gnu.org>.  Submit a context
-# diff and a properly formatted ChangeLog entry.
+# diff and a properly formatted GNU ChangeLog entry.
 #
 # Configuration subroutine to validate and canonicalize a configuration type.
 # Supply the specified configuration type as an argument.
 # If it is invalid, we print an error message on stderr and exit with code 1.
 # Otherwise, we print the canonical config type on stdout and succeed.
 
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
 # This file is supposed to be the same for all GNU packages
 # and recognize all the CPU types, system types and aliases
 # that are meaningful with *any* GNU software.
@@ -72,8 +75,9 @@ Report bugs and patches to <config-patches@gnu.org>."
 version="\
 GNU config.sub ($timestamp)
 
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
+Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -122,6 +126,7 @@ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
 case $maybe_os in
   nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
   uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+  kopensolaris*-gnu* | \
   storm-chaos* | os2-emx* | rtmk-nova*)
     os=-$maybe_os
     basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
@@ -148,10 +153,13 @@ case $os in
        -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
        -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
        -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-       -apple | -axis | -knuth | -cray)
+       -apple | -axis | -knuth | -cray | -microblaze)
                os=
                basic_machine=$1
                ;;
+        -bluegene*)
+               os=-cnk
+               ;;
        -sim | -cisco | -oki | -wec | -winbond)
                os=
                basic_machine=$1
@@ -249,13 +257,16 @@ case $basic_machine in
        | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
        | i370 | i860 | i960 | ia64 \
        | ip2k | iq2000 \
+       | lm32 \
        | m32c | m32r | m32rle | m68000 | m68k | m88k \
-       | maxq | mb | microblaze | mcore | mep \
+       | maxq | mb | microblaze | mcore | mep | metag \
        | mips | mipsbe | mipseb | mipsel | mipsle \
        | mips16 \
        | mips64 | mips64el \
-       | mips64vr | mips64vrel \
+       | mips64octeon | mips64octeonel \
        | mips64orion | mips64orionel \
+       | mips64r5900 | mips64r5900el \
+       | mips64vr | mips64vrel \
        | mips64vr4100 | mips64vr4100el \
        | mips64vr4300 | mips64vr4300el \
        | mips64vr5000 | mips64vr5000el \
@@ -268,6 +279,7 @@ case $basic_machine in
        | mipsisa64sr71k | mipsisa64sr71kel \
        | mipstx39 | mipstx39el \
        | mn10200 | mn10300 \
+       | moxie \
        | mt \
        | msp430 \
        | nios | nios2 \
@@ -276,20 +288,22 @@ case $basic_machine in
        | pdp10 | pdp11 | pj | pjl \
        | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
        | pyramid \
+       | rx \
        | score \
-       | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+       | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
        | sh64 | sh64le \
        | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
        | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
        | spu | strongarm \
        | tahoe | thumb | tic4x | tic80 | tron \
+       | ubicom32 \
        | v850 | v850e \
        | we32k \
        | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
-       | z8k)
+       | z8k | z80)
                basic_machine=$basic_machine-unknown
                ;;
-       m6811 | m68hc11 | m6812 | m68hc12)
+       m6811 | m68hc11 | m6812 | m68hc12 | picochip)
                # Motorola 68HC11/12.
                basic_machine=$basic_machine-unknown
                os=-none
@@ -329,14 +343,17 @@ case $basic_machine in
        | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
        | i*86-* | i860-* | i960-* | ia64-* \
        | ip2k-* | iq2000-* \
+       | lm32-* \
        | m32c-* | m32r-* | m32rle-* \
        | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-       | m88110-* | m88k-* | maxq-* | mcore-* \
+       | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
        | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
        | mips16-* \
        | mips64-* | mips64el-* \
-       | mips64vr-* | mips64vrel-* \
+       | mips64octeon-* | mips64octeonel-* \
        | mips64orion-* | mips64orionel-* \
+       | mips64r5900-* | mips64r5900el-* \
+       | mips64vr-* | mips64vrel-* \
        | mips64vr4100-* | mips64vr4100el-* \
        | mips64vr4300-* | mips64vr4300el-* \
        | mips64vr5000-* | mips64vr5000el-* \
@@ -357,21 +374,22 @@ case $basic_machine in
        | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
        | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
        | pyramid-* \
-       | romp-* | rs6000-* \
-       | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+       | romp-* | rs6000-* | rx-* \
+       | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
        | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
        | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
        | sparclite-* \
        | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
        | tahoe-* | thumb-* \
-       | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+       | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
        | tron-* \
+       | ubicom32-* \
        | v850-* | v850e-* | vax-* \
        | we32k-* \
        | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
        | xstormy16-* | xtensa*-* \
        | ymp-* \
-       | z8k-*)
+       | z8k-* | z80-*)
                ;;
        # Recognize the basic CPU types without company name, with glob match.
        xtensa*)
@@ -439,6 +457,10 @@ case $basic_machine in
                basic_machine=m68k-apollo
                os=-bsd
                ;;
+       aros)
+               basic_machine=i386-pc
+               os=-aros
+               ;;
        aux)
                basic_machine=m68k-apple
                os=-aux
@@ -455,10 +477,18 @@ case $basic_machine in
                basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
                os=-linux
                ;;
+       bluegene*)
+               basic_machine=powerpc-ibm
+               os=-cnk
+               ;;
        c90)
                basic_machine=c90-cray
                os=-unicos
                ;;
+        cegcc)
+               basic_machine=arm-unknown
+               os=-cegcc
+               ;;
        convex-c1)
                basic_machine=c1-convex
                os=-bsd
@@ -526,6 +556,10 @@ case $basic_machine in
                basic_machine=m88k-motorola
                os=-sysv3
                ;;
+       dicos)
+               basic_machine=i686-pc
+               os=-dicos
+               ;;
        djgpp)
                basic_machine=i586-pc
                os=-msdosdjgpp
@@ -699,6 +733,9 @@ case $basic_machine in
                basic_machine=ns32k-utek
                os=-sysv
                ;;
+        microblaze)
+               basic_machine=microblaze-xilinx
+               ;;
        mingw32)
                basic_machine=i386-pc
                os=-mingw32
@@ -1128,6 +1165,10 @@ case $basic_machine in
                basic_machine=z8k-unknown
                os=-sim
                ;;
+       z80-*-coff)
+               basic_machine=z80-unknown
+               os=-sim
+               ;;
        none)
                basic_machine=none-none
                os=-none
@@ -1166,7 +1207,7 @@ case $basic_machine in
        we32k)
                basic_machine=we32k-att
                ;;
-       sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
+       sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
                basic_machine=sh-unknown
                ;;
        sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
@@ -1216,6 +1257,9 @@ case $os in
         # First match some system type aliases
         # that might get confused with valid system types.
        # -solaris* is a basic system type, with this one exception.
+        -auroraux)
+               os=-auroraux
+               ;;
        -solaris1 | -solaris1.*)
                os=`echo $os | sed -e 's|solaris1|sunos4|'`
                ;;
@@ -1236,10 +1280,11 @@ case $os in
        # Each alternative MUST END IN A *, to match a version number.
        # -sysv* is not here because it comes later, after sysvr4.
        -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
-             | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
-             | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+             | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
+             | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
+             | -sym* | -kopensolaris* \
              | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
-             | -aos* \
+             | -aos* | -aros* \
              | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
              | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
              | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
@@ -1248,7 +1293,7 @@ case $os in
              | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
              | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
              | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-             | -chorusos* | -chorusrdb* \
+             | -chorusos* | -chorusrdb* | -cegcc* \
              | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
              | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
              | -uxpv* | -beos* | -mpeix* | -udk* \
@@ -1258,7 +1303,7 @@ case $os in
              | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
              | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
              | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-             | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
+             | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
        # Remember, each alternative MUST END IN *, to match a version number.
                ;;
        -qnx*)
@@ -1388,6 +1433,11 @@ case $os in
        -zvmoe)
                os=-zvmoe
                ;;
+       -dicos*)
+               os=-dicos
+               ;;
+        -nacl*)
+               ;;
        -none)
                ;;
        *)
@@ -1585,7 +1635,7 @@ case $basic_machine in
                        -sunos*)
                                vendor=sun
                                ;;
-                       -aix*)
+                       -cnk*|-aix*)
                                vendor=ibm
                                ;;
                        -beos*)
index 6e53334..d12800f 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,20 +1,24 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.63 for json-c 0.9.
+# Generated by GNU Autoconf 2.68 for json-c 0.10.
+#
+# Report bugs to <json-c@googlegroups.com>.
 #
-# Report bugs to <michael@metaparadigm.com>.
 #
 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
+# Foundation, Inc.
+#
+#
 # This configure script is free software; the Free Software Foundation
 # gives unlimited permission to copy, distribute and modify it.
-## --------------------- ##
-## M4sh Initialization.  ##
-## --------------------- ##
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
 
 # Be more Bourne compatible
 DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
   emulate sh
   NULLCMD=:
   # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
@@ -22,23 +26,15 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
 else
-  case `(set -o) 2>/dev/null` in
-  *posix*) set -o posix ;;
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
 esac
-
 fi
 
 
-
-
-# PATH needs CR
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
 as_nl='
 '
 export as_nl
@@ -46,7 +42,13 @@ export as_nl
 as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
 as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
 as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
   as_echo='printf %s\n'
   as_echo_n='printf %s'
 else
@@ -57,7 +59,7 @@ else
     as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
     as_echo_n_body='eval
       arg=$1;
-      case $arg in
+      case $arg in #(
       *"$as_nl"*)
        expr "X$arg" : "X\\(.*\\)$as_nl";
        arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
@@ -80,13 +82,6 @@ if test "${PATH_SEPARATOR+set}" != set; then
   }
 fi
 
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  as_unset=unset
-else
-  as_unset=false
-fi
-
 
 # IFS
 # We need space, tab and new line, in precisely that order.  Quoting is
@@ -96,15 +91,16 @@ fi
 IFS=" ""       $as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
-case $0 in
+as_myself=
+case $0 in #((
   *[\\/]* ) as_myself=$0 ;;
   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
 IFS=$as_save_IFS
 
      ;;
@@ -116,12 +112,16 @@ if test "x$as_myself" = x; then
 fi
 if test ! -f "$as_myself"; then
   $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  { (exit 1); exit 1; }
+  exit 1
 fi
 
-# Work around bugs in pre-3.0 UWIN ksh.
-for as_var in ENV MAIL MAILPATH
-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
 done
 PS1='$ '
 PS2='> '
@@ -133,7 +133,256 @@ export LC_ALL
 LANGUAGE=C
 export LANGUAGE
 
-# Required to use basename.
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test "x$CONFIG_SHELL" = x; then
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1"
+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  as_found=:
+  case $as_dir in #(
+        /*)
+          for as_base in sh bash ksh sh5; do
+            # Try only shells that exist, to save several forks.
+            as_shell=$as_dir/$as_base
+            if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+                   { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+                  if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
+          done;;
+       esac
+  as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+             { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+      if test "x$CONFIG_SHELL" != x; then :
+  # We cannot yet assume a decent shell, so we have to provide a
+       # neutralization value for shells without unset; and this also
+       # works around shells that cannot unset nonexistent variables.
+       # Preserve -v and -x to the replacement shell.
+       BASH_ENV=/dev/null
+       ENV=/dev/null
+       (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+       export CONFIG_SHELL
+       case $- in # ((((
+         *v*x* | *x*v* ) as_opts=-vx ;;
+         *v* ) as_opts=-v ;;
+         *x* ) as_opts=-x ;;
+         * ) as_opts= ;;
+       esac
+       exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
+fi
+
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+  else
+    $as_echo "$0: Please tell bug-autoconf@gnu.org and
+$0: json-c@googlegroups.com about your system, including
+$0: any error possibly output before this message. Then
+$0: install a modern shell, or manually run the script
+$0: under such a shell if you do have one."
+  fi
+  exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_dir" : 'X\(//\)[^/]' \| \
+        X"$as_dir" : 'X\(//\)$' \| \
+        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
 if expr a : '\(a\)' >/dev/null 2>&1 &&
    test "X`expr 00001 : '.*\(...\)'`" = X001; then
   as_expr=expr
@@ -147,8 +396,12 @@ else
   as_basename=false
 fi
 
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
 
-# Name of the executable.
 as_me=`$as_basename -- "$0" ||
 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
         X"$0" : 'X\(//\)$' \| \
@@ -168,409 +421,120 @@ $as_echo X/"$0" |
          }
          s/.*/./; q'`
 
-# CDPATH.
-$as_unset CDPATH
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
 
 
-if test "x$CONFIG_SHELL" = x; then
-  if (eval ":") 2>/dev/null; then
-  as_have_required=yes
-else
-  as_have_required=no
-fi
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
 
-  if test $as_have_required = yes &&    (eval ":
-(as_func_return () {
-  (exit \$1)
-}
-as_func_success () {
-  as_func_return 0
-}
-as_func_failure () {
-  as_func_return 1
-}
-as_func_ret_success () {
-  return 0
-}
-as_func_ret_failure () {
-  return 1
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
 }
 
-exitcode=0
-if as_func_success; then
-  :
-else
-  exitcode=1
-  echo as_func_success failed.
-fi
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='        ';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
 
-if as_func_failure; then
-  exitcode=1
-  echo as_func_failure succeeded.
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
 fi
-
-if as_func_ret_success; then
-  :
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
 else
-  exitcode=1
-  echo as_func_ret_success failed.
+  as_ln_s='cp -p'
 fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
 
-if as_func_ret_failure; then
-  exitcode=1
-  echo as_func_ret_failure succeeded.
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
 fi
 
-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
-  :
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
 else
-  exitcode=1
-  echo positional parameters were not saved.
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+       test -d "$1/.";
+      else
+       case $1 in #(
+       -*)set "./$1";;
+       esac;
+       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+       ???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
 fi
+as_executable_p=$as_test_x
 
-test \$exitcode = 0) || { (exit 1); exit 1; }
-
-(
-  as_lineno_1=\$LINENO
-  as_lineno_2=\$LINENO
-  test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
-  test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
-") 2> /dev/null; then
-  :
-else
-  as_candidate_shells=
-    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  case $as_dir in
-        /*)
-          for as_base in sh bash ksh sh5; do
-            as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
-          done;;
-       esac
-done
-IFS=$as_save_IFS
-
-
-      for as_shell in $as_candidate_shells $SHELL; do
-        # Try only shells that exist, to save several forks.
-        if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
-               { ("$as_shell") 2> /dev/null <<\_ASEOF
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in
-  *posix*) set -o posix ;;
-esac
-
-fi
-
-
-:
-_ASEOF
-}; then
-  CONFIG_SHELL=$as_shell
-              as_have_required=yes
-              if { "$as_shell" 2> /dev/null <<\_ASEOF
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in
-  *posix*) set -o posix ;;
-esac
-
-fi
-
-
-:
-(as_func_return () {
-  (exit $1)
-}
-as_func_success () {
-  as_func_return 0
-}
-as_func_failure () {
-  as_func_return 1
-}
-as_func_ret_success () {
-  return 0
-}
-as_func_ret_failure () {
-  return 1
-}
-
-exitcode=0
-if as_func_success; then
-  :
-else
-  exitcode=1
-  echo as_func_success failed.
-fi
-
-if as_func_failure; then
-  exitcode=1
-  echo as_func_failure succeeded.
-fi
-
-if as_func_ret_success; then
-  :
-else
-  exitcode=1
-  echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
-  exitcode=1
-  echo as_func_ret_failure succeeded.
-fi
-
-if ( set x; as_func_ret_success y && test x = "$1" ); then
-  :
-else
-  exitcode=1
-  echo positional parameters were not saved.
-fi
-
-test $exitcode = 0) || { (exit 1); exit 1; }
-
-(
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
-
-_ASEOF
-}; then
-  break
-fi
-
-fi
-
-      done
-
-      if test "x$CONFIG_SHELL" != x; then
-  for as_var in BASH_ENV ENV
-       do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-       done
-       export CONFIG_SHELL
-       exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
-fi
-
-
-    if test $as_have_required = no; then
-  echo This script requires a shell more modern than all the
-      echo shells that I found on your system.  Please install a
-      echo modern shell, or manually run the script under such a
-      echo shell if you do have one.
-      { (exit 1); exit 1; }
-fi
-
-
-fi
-
-fi
-
-
-
-(eval "as_func_return () {
-  (exit \$1)
-}
-as_func_success () {
-  as_func_return 0
-}
-as_func_failure () {
-  as_func_return 1
-}
-as_func_ret_success () {
-  return 0
-}
-as_func_ret_failure () {
-  return 1
-}
-
-exitcode=0
-if as_func_success; then
-  :
-else
-  exitcode=1
-  echo as_func_success failed.
-fi
-
-if as_func_failure; then
-  exitcode=1
-  echo as_func_failure succeeded.
-fi
-
-if as_func_ret_success; then
-  :
-else
-  exitcode=1
-  echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
-  exitcode=1
-  echo as_func_ret_failure succeeded.
-fi
-
-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
-  :
-else
-  exitcode=1
-  echo positional parameters were not saved.
-fi
-
-test \$exitcode = 0") || {
-  echo No shell found that supports shell functions.
-  echo Please tell bug-autoconf@gnu.org about your system,
-  echo including any error possibly output before this message.
-  echo This can help us improve future autoconf versions.
-  echo Configuration will now proceed without shell functions.
-}
-
-
-
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
-
-  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
-  # uniformly replaced by the line number.  The first 'sed' inserts a
-  # line-number line after each line using $LINENO; the second 'sed'
-  # does the real work.  The second script uses 'N' to pair each
-  # line-number line with the line containing $LINENO, and appends
-  # trailing '-' during substitution so that $LINENO is not a special
-  # case at line end.
-  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-  # scripts with optimization help from Paolo Bonzini.  Blame Lee
-  # E. McMahon (1931-1989) for sed's syntax.  :-)
-  sed -n '
-    p
-    /[$]LINENO/=
-  ' <$as_myself |
-    sed '
-      s/[$]LINENO.*/&-/
-      t lineno
-      b
-      :lineno
-      N
-      :loop
-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
-      t loop
-      s/-\n.*//
-    ' >$as_me.lineno &&
-  chmod +x "$as_me.lineno" ||
-    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
-   { (exit 1); exit 1; }; }
-
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensitive to this).
-  . "./$as_me.lineno"
-  # Exit status is that of the last command.
-  exit
-}
-
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in
--n*)
-  case `echo 'x\c'` in
-  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
-  *)   ECHO_C='\c';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -p'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -p'
-  fi
-else
-  as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p=:
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-       test -d "$1/.";
-      else
-       case $1 in
-       -*)set "./$1";;
-       esac;
-       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
-       ???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
 
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
 
 
 
@@ -722,10 +686,11 @@ fi
 
 
 
-exec 7<&0 </dev/null 6>&1
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
 
 # Name of the host.
-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
 # so uname gets run too.
 ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
 
@@ -740,14 +705,14 @@ cross_compiling=no
 subdirs=
 MFLAGS=
 MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
 
 # Identity of this package.
 PACKAGE_NAME='json-c'
 PACKAGE_TARNAME='json-c'
-PACKAGE_VERSION='0.9'
-PACKAGE_STRING='json-c 0.9'
-PACKAGE_BUGREPORT='michael@metaparadigm.com'
+PACKAGE_VERSION='0.10'
+PACKAGE_STRING='json-c 0.10'
+PACKAGE_BUGREPORT='json-c@googlegroups.com'
+PACKAGE_URL=''
 
 # Factoring default headers for most tests.
 ac_includes_default="\
@@ -785,7 +750,9 @@ ac_includes_default="\
 # include <unistd.h>
 #endif"
 
-ac_subst_vars='LTLIBOBJS
+ac_subst_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
 OTOOL64
 OTOOL
 LIPO
@@ -884,6 +851,7 @@ bindir
 program_transform_name
 prefix
 exec_prefix
+PACKAGE_URL
 PACKAGE_BUGREPORT
 PACKAGE_STRING
 PACKAGE_VERSION
@@ -973,8 +941,9 @@ do
   fi
 
   case $ac_option in
-  *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
-  *)   ac_optarg=yes ;;
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
   esac
 
   # Accept the important Cygnus configure options, so we can diagnose typos.
@@ -1019,8 +988,7 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
-   { (exit 1); exit 1; }; }
+      as_fn_error $? "invalid feature name: $ac_useropt"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -1046,8 +1014,7 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
-   { (exit 1); exit 1; }; }
+      as_fn_error $? "invalid feature name: $ac_useropt"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -1251,8 +1218,7 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
-   { (exit 1); exit 1; }; }
+      as_fn_error $? "invalid package name: $ac_useropt"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -1268,8 +1234,7 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
-   { (exit 1); exit 1; }; }
+      as_fn_error $? "invalid package name: $ac_useropt"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -1299,17 +1264,17 @@ do
   | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
     x_libraries=$ac_optarg ;;
 
-  -*) { $as_echo "$as_me: error: unrecognized option: $ac_option
-Try \`$0 --help' for more information." >&2
-   { (exit 1); exit 1; }; }
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
     ;;
 
   *=*)
     ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
     # Reject names that are not valid shell variable names.
-    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
-      { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2
-   { (exit 1); exit 1; }; }
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+    esac
     eval $ac_envvar=\$ac_optarg
     export $ac_envvar ;;
 
@@ -1318,7 +1283,7 @@ Try \`$0 --help' for more information." >&2
     $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
     expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
       $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
-    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
     ;;
 
   esac
@@ -1326,15 +1291,13 @@ done
 
 if test -n "$ac_prev"; then
   ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-  { $as_echo "$as_me: error: missing argument to $ac_option" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "missing argument to $ac_option"
 fi
 
 if test -n "$ac_unrecognized_opts"; then
   case $enable_option_checking in
     no) ;;
-    fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2
-   { (exit 1); exit 1; }; } ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
     *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
   esac
 fi
@@ -1357,8 +1320,7 @@ do
     [\\/$]* | ?:[\\/]* )  continue;;
     NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
   esac
-  { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
 done
 
 # There might be people who depend on the old broken behavior: `$host'
@@ -1372,8 +1334,8 @@ target=$target_alias
 if test "x$host_alias" != x; then
   if test "x$build_alias" = x; then
     cross_compiling=maybe
-    $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
-    If a cross compiler is detected then cross compile mode will be used." >&2
+    $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used" >&2
   elif test "x$build_alias" != "x$host_alias"; then
     cross_compiling=yes
   fi
@@ -1388,11 +1350,9 @@ test "$silent" = yes && exec 6>/dev/null
 ac_pwd=`pwd` && test -n "$ac_pwd" &&
 ac_ls_di=`ls -di .` &&
 ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
-  { $as_echo "$as_me: error: working directory cannot be determined" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "working directory cannot be determined"
 test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
-  { $as_echo "$as_me: error: pwd does not report name of working directory" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "pwd does not report name of working directory"
 
 
 # Find the source files, if location was not specified.
@@ -1431,13 +1391,11 @@ else
 fi
 if test ! -r "$srcdir/$ac_unique_file"; then
   test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
-  { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
 fi
 ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
 ac_abs_confdir=`(
-       cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2
-   { (exit 1); exit 1; }; }
+       cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
        pwd)`
 # When building in place, set srcdir=.
 if test "$ac_abs_confdir" = "$ac_pwd"; then
@@ -1463,7 +1421,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures json-c 0.9 to adapt to many kinds of systems.
+\`configure' configures json-c 0.10 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1477,7 +1435,7 @@ Configuration:
       --help=short        display options specific to this package
       --help=recursive    display the short help of all the included packages
   -V, --version           display version information and exit
-  -q, --quiet, --silent   do not print \`checking...' messages
+  -q, --quiet, --silent   do not print \`checking ...' messages
       --cache-file=FILE   cache test results in FILE [disabled]
   -C, --config-cache      alias for \`--cache-file=config.cache'
   -n, --no-create         do not create output files
@@ -1533,7 +1491,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of json-c 0.9:";;
+     short | recursive ) echo "Configuration of json-c 0.10:";;
    esac
   cat <<\_ACEOF
 
@@ -1562,14 +1520,14 @@ Some influential environment variables:
   LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
               nonstandard directory <lib dir>
   LIBS        libraries to pass to the linker, e.g. -l<library>
-  CPPFLAGS    C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
               you have headers in a nonstandard directory <include dir>
   CPP         C preprocessor
 
 Use these variables to override the choices made by `configure' or to help
 it to find libraries and programs with nonstandard names/locations.
 
-Report bugs to <michael@metaparadigm.com>.
+Report bugs to <json-c@googlegroups.com>.
 _ACEOF
 ac_status=$?
 fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-json-c configure 0.9
-generated by GNU Autoconf 2.63
+json-c configure 0.10
+generated by GNU Autoconf 2.68
 
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright (C) 2010 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 _ACEOF
   exit
 fi
-cat >config.log <<_ACEOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
 
-It was created by json-c $as_me 0.9, which was
-generated by GNU Autoconf 2.63.  Invocation command line was
-
-  $ $0 $@
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
 
-_ACEOF
-exec 5>>config.log
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
 {
-cat <<_ASUNAME
-## --------- ##
-## Platform. ##
-## --------- ##
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
+       ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
 
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+} # ac_fn_c_try_compile
 
-/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
-/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
-/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
-_ASUNAME
+    ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
 
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval \${$3+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( $as_echo "## -------------------------------------- ##
+## Report this to json-c@googlegroups.com ##
+## -------------------------------------- ##"
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_mongrel
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_compile
+
+# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+# -------------------------------------------
+# Tests whether TYPE exists after having included INCLUDES, setting cache
+# variable VAR accordingly.
+ac_fn_c_check_type ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=no"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof ($2))
+        return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof (($2)))
+           return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  eval "$3=yes"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_type
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $2 (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_func
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by json-c $as_me 0.10, which was
+generated by GNU Autoconf 2.68.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  $as_echo "PATH: $as_dir"
-done
+    $as_echo "PATH: $as_dir"
+  done
 IFS=$as_save_IFS
 
 } >&5
@@ -1721,9 +2088,9 @@ do
       ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
     esac
     case $ac_pass in
-    1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
     2)
-      ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+      as_fn_append ac_configure_args1 " '$ac_arg'"
       if test $ac_must_keep_next = true; then
        ac_must_keep_next=false # Got value, back to normal.
       else
@@ -1739,13 +2106,13 @@ do
          -* ) ac_must_keep_next=true ;;
        esac
       fi
-      ac_configure_args="$ac_configure_args '$ac_arg'"
+      as_fn_append ac_configure_args " '$ac_arg'"
       ;;
     esac
   done
 done
-$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
-$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
 
 # When interrupted or exit'd, cleanup temporary files, and complete
 # config.log.  We remove comments because anyway the quotes in there
@@ -1757,11 +2124,9 @@ trap 'exit_status=$?
   {
     echo
 
-    cat <<\_ASBOX
-## ---------------- ##
+    $as_echo "## ---------------- ##
 ## Cache variables. ##
-## ---------------- ##
-_ASBOX
+## ---------------- ##"
     echo
     # The following way of writing the cache mishandles newlines in values,
 (
@@ -1770,13 +2135,13 @@ _ASBOX
     case $ac_val in #(
     *${as_nl}*)
       case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
       esac
       case $ac_var in #(
       _ | IFS | as_nl) ;; #(
       BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) $as_unset $ac_var ;;
+      *) { eval $ac_var=; unset $ac_var;} ;;
       esac ;;
     esac
   done
@@ -1795,11 +2160,9 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
 )
     echo
 
-    cat <<\_ASBOX
-## ----------------- ##
+    $as_echo "## ----------------- ##
 ## Output variables. ##
-## ----------------- ##
-_ASBOX
+## ----------------- ##"
     echo
     for ac_var in $ac_subst_vars
     do
@@ -1812,11 +2175,9 @@ _ASBOX
     echo
 
     if test -n "$ac_subst_files"; then
-      cat <<\_ASBOX
-## ------------------- ##
+      $as_echo "## ------------------- ##
 ## File substitutions. ##
-## ------------------- ##
-_ASBOX
+## ------------------- ##"
       echo
       for ac_var in $ac_subst_files
       do
@@ -1830,11 +2191,9 @@ _ASBOX
     fi
 
     if test -s confdefs.h; then
-      cat <<\_ASBOX
-## ----------- ##
+      $as_echo "## ----------- ##
 ## confdefs.h. ##
-## ----------- ##
-_ASBOX
+## ----------- ##"
       echo
       cat confdefs.h
       echo
@@ -1848,46 +2207,53 @@ _ASBOX
     exit $exit_status
 ' 0
 for ac_signal in 1 2 13 15; do
-  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
 done
 ac_signal=0
 
 # confdefs.h avoids OS command line length limits that DEFS can exceed.
 rm -f -r conftest* confdefs.h
 
+$as_echo "/* confdefs.h */" > confdefs.h
+
 # Predefined preprocessor variables.
 
 cat >>confdefs.h <<_ACEOF
 #define PACKAGE_NAME "$PACKAGE_NAME"
 _ACEOF
 
-
 cat >>confdefs.h <<_ACEOF
 #define PACKAGE_TARNAME "$PACKAGE_TARNAME"
 _ACEOF
 
-
 cat >>confdefs.h <<_ACEOF
 #define PACKAGE_VERSION "$PACKAGE_VERSION"
 _ACEOF
 
-
 cat >>confdefs.h <<_ACEOF
 #define PACKAGE_STRING "$PACKAGE_STRING"
 _ACEOF
 
-
 cat >>confdefs.h <<_ACEOF
 #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
 _ACEOF
 
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
 
 # Let the site file select an alternate cache file if it wants to.
 # Prefer an explicitly selected file to automatically selected ones.
 ac_site_file1=NONE
 ac_site_file2=NONE
 if test -n "$CONFIG_SITE"; then
-  ac_site_file1=$CONFIG_SITE
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in #((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
 elif test "x$prefix" != xNONE; then
   ac_site_file1=$prefix/share/config.site
   ac_site_file2=$prefix/etc/config.site
@@ -1898,19 +2264,23 @@ fi
 for ac_site_file in "$ac_site_file1" "$ac_site_file2"
 do
   test "x$ac_site_file" = xNONE && continue
-  if test -r "$ac_site_file"; then
-    { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
 $as_echo "$as_me: loading site script $ac_site_file" >&6;}
     sed 's/^/| /' "$ac_site_file" >&5
-    . "$ac_site_file"
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
   fi
 done
 
 if test -r "$cache_file"; then
-  # Some versions of bash will fail to source /dev/null (special
-  # files actually), so we avoid doing that.
-  if test -f "$cache_file"; then
-    { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5
+  # Some versions of bash will fail to source /dev/null (special files
+  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
+  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
 $as_echo "$as_me: loading cache $cache_file" >&6;}
     case $cache_file in
       [\\/]* | ?:[\\/]* ) . "$cache_file";;
@@ -1918,7 +2288,7 @@ $as_echo "$as_me: loading cache $cache_file" >&6;}
     esac
   fi
 else
-  { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
 $as_echo "$as_me: creating cache $cache_file" >&6;}
   >$cache_file
 fi
@@ -1933,11 +2303,11 @@ for ac_var in $ac_precious_vars; do
   eval ac_new_val=\$ac_env_${ac_var}_value
   case $ac_old_set,$ac_new_set in
     set,)
-      { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
       ac_cache_corrupted=: ;;
     ,set)
-      { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
       ac_cache_corrupted=: ;;
     ,);;
@@ -1947,17 +2317,17 @@ $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
        ac_old_val_w=`echo x $ac_old_val`
        ac_new_val_w=`echo x $ac_new_val`
        if test "$ac_old_val_w" != "$ac_new_val_w"; then
-         { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+         { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
          ac_cache_corrupted=:
        else
-         { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+         { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
          eval $ac_var=\$ac_old_val
        fi
-       { $as_echo "$as_me:$LINENO:   former value:  \`$ac_old_val'" >&5
+       { $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
 $as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
-       { $as_echo "$as_me:$LINENO:   current value: \`$ac_new_val'" >&5
+       { $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
 $as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
       fi;;
   esac
@@ -1969,43 +2339,20 @@ $as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
     esac
     case " $ac_configure_args " in
       *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
-      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
     esac
   fi
 done
 if $ac_cache_corrupted; then
-  { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-  { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
-$as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
 fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
 
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -2015,7 +2362,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-am__api_version='1.10'
+am__api_version='1.11'
 
 ac_aux_dir=
 for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
@@ -2034,9 +2381,7 @@ for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
   fi
 done
 if test -z "$ac_aux_dir"; then
-  { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5
-$as_echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
 fi
 
 # These three variables are undocumented and unsupported,
@@ -2062,10 +2407,10 @@ ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
 # OS/2's system install, which has a completely different semantic
 # ./install, which can be erroneously created by make from ./install.sh.
 # Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
 $as_echo_n "checking for a BSD-compatible install... " >&6; }
 if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then
+if ${ac_cv_path_install+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -2073,11 +2418,11 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in
-  ./ | .// | /cC/* | \
+    # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+  ./ | .// | /[cC]/* | \
   /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
   /usr/ucb/* ) ;;
   *)
     # OSF1 and SCO ODT 3.0 have their own names for install.
@@ -2114,7 +2459,7 @@ case $as_dir/ in
     ;;
 esac
 
-done
+  done
 IFS=$as_save_IFS
 
 rm -rf conftest.one conftest.two conftest.dir
@@ -2130,7 +2475,7 @@ fi
     INSTALL=$ac_install_sh
   fi
 fi
-{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
 $as_echo "$INSTALL" >&6; }
 
 # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
@@ -2141,21 +2486,34 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
 
 test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
 
-{ $as_echo "$as_me:$LINENO: checking whether build environment is sane" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
 $as_echo_n "checking whether build environment is sane... " >&6; }
 # Just in case
 sleep 1
 echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[\\\"\#\$\&\'\`$am_lf]*)
+    as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+  *[\\\"\#\$\&\'\`$am_lf\ \    ]*)
+    as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+esac
+
 # Do `set' in a subshell so we don't clobber the current shell's
 # arguments.  Must try -L first in case configure is actually a
 # symlink; some systems play weird games with the mod time of symlinks
 # (eg FreeBSD returns the mod time of the symlink's containing
 # directory).
 if (
-   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
    if test "$*" = "X"; then
       # -L didn't work.
-      set X `ls -t $srcdir/configure conftest.file`
+      set X `ls -t "$srcdir/configure" conftest.file`
    fi
    rm -f conftest.file
    if test "$*" != "X $srcdir/configure conftest.file" \
@@ -2165,11 +2523,8 @@ if (
       # if, for instance, CONFIG_SHELL is bash and it inherits a
       # broken ls alias from the environment.  This has actually
       # happened.  Such a system could not be considered "sane".
-      { { $as_echo "$as_me:$LINENO: error: ls -t appears to fail.  Make sure there is not a broken
-alias in your environment" >&5
-$as_echo "$as_me: error: ls -t appears to fail.  Make sure there is not a broken
-alias in your environment" >&2;}
-   { (exit 1); exit 1; }; }
+      as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" "$LINENO" 5
    fi
 
    test "$2" = conftest.file
@@ -2178,13 +2533,10 @@ then
    # Ok.
    :
 else
-   { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files!
-Check your system clock" >&5
-$as_echo "$as_me: error: newly created file is older than distributed files!
-Check your system clock" >&2;}
-   { (exit 1); exit 1; }; }
+   as_fn_error $? "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
 fi
-{ $as_echo "$as_me:$LINENO: result: yes" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 test "$program_prefix" != NONE &&
   program_transform_name="s&^&$program_prefix&;$program_transform_name"
@@ -2199,28 +2551,144 @@ program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
 # expand $ac_aux_dir to an absolute path
 am_aux_dir=`cd $ac_aux_dir && pwd`
 
-test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
 # Use eval to expand $SHELL
 if eval "$MISSING --run true"; then
   am_missing_run="$MISSING --run "
 else
   am_missing_run=
-  { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
 fi
 
-{ $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5
-$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
-if test -z "$MKDIR_P"; then
-  if test "${ac_cv_path_mkdir+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
-do
-  IFS=$as_save_IFS
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+  if ${ac_cv_path_mkdir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+  IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_prog in mkdir gmkdir; do
+    for ac_prog in mkdir gmkdir; do
         for ac_exec_ext in '' $ac_executable_extensions; do
           { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
           case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
@@ -2232,11 +2700,12 @@ do
           esac
         done
        done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 
+  test -d ./--version && rmdir ./--version
   if test "${ac_cv_path_mkdir+set}" = set; then
     MKDIR_P="$ac_cv_path_mkdir -p"
   else
@@ -2244,11 +2713,10 @@ fi
     # value for MKDIR_P within a source directory, because that will
     # break other packages using the cache if that directory is
     # removed, or if the value is a relative name.
-    test -d ./--version && rmdir ./--version
     MKDIR_P="$ac_install_sh -d"
   fi
 fi
-{ $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
 $as_echo "$MKDIR_P" >&6; }
 
 mkdir_p="$MKDIR_P"
@@ -2261,9 +2729,9 @@ for ac_prog in gawk mawk nawk awk
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_AWK+set}" = set; then
+if ${ac_cv_prog_AWK+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$AWK"; then
@@ -2274,24 +2742,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_AWK="$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 AWK=$ac_cv_prog_AWK
 if test -n "$AWK"; then
-  { $as_echo "$as_me:$LINENO: result: $AWK" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
 $as_echo "$AWK" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -2299,11 +2767,11 @@ fi
   test -n "$AWK" && break
 done
 
-{ $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
 set x ${MAKE-make}
 ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat >conftest.make <<\_ACEOF
@@ -2311,7 +2779,7 @@ SHELL = /bin/sh
 all:
        @echo '@@@%%%=$(MAKE)=@@@%%%'
 _ACEOF
-# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
 case `${MAKE-make} -f conftest.make 2>/dev/null` in
   *@@@%%%=?*=@@@%%%*)
     eval ac_cv_prog_make_${ac_make}_set=yes;;
@@ -2321,11 +2789,11 @@ esac
 rm -f conftest.make
 fi
 if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
-  { $as_echo "$as_me:$LINENO: result: yes" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
   SET_MAKE=
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
   SET_MAKE="MAKE=${MAKE-make}"
 fi
@@ -2345,9 +2813,7 @@ if test "`cd $srcdir && pwd`" != "`pwd`"; then
   am__isrc=' -I$(srcdir)'
   # test to see if srcdir already configured
   if test -f $srcdir/config.status; then
-    { { $as_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
-$as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
   fi
 fi
 
@@ -2363,7 +2829,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE=json-c
- VERSION=0.9
+ VERSION=0.10
 
 
 cat >>confdefs.h <<_ACEOF
@@ -2391,108 +2857,6 @@ AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
 
 MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
 
-install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
-
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'.  However `strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
-if test "$cross_compiling" != no; then
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_STRIP+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { $as_echo "$as_me:$LINENO: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_STRIP" = x; then
-    STRIP=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    STRIP=$ac_ct_STRIP
-  fi
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
-
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-
 # We need awk for the "check" target.  The system "awk" is bad on
 # some platforms.
 # Always define AMTAR for backward compatibility.
@@ -2506,6 +2870,38 @@ am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
 
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+       @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  SET_MAKE=
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+
 # Checks for programs.
 
 # Checks for libraries.
@@ -2513,6 +2909,8 @@ am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
 # Checks for header files.
 ac_config_headers="$ac_config_headers config.h"
 
+ac_config_headers="$ac_config_headers json_config.h"
+
 DEPDIR="${am__leading_dot}deps"
 
 ac_config_commands="$ac_config_commands depfiles"
@@ -2521,44 +2919,44 @@ ac_config_commands="$ac_config_commands depfiles"
 am_make=${MAKE-make}
 cat > confinc << 'END'
 am__doit:
-       @echo done
+       @echo this is the am__doit target
 .PHONY: am__doit
 END
 # If we don't find an include directive, just comment out the code.
-{ $as_echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
 $as_echo_n "checking for style of include used by $am_make... " >&6; }
 am__include="#"
 am__quote=
 _am_result=none
 # First try GNU make style include.
 echo "include confinc" > confmf
-# We grep out `Entering directory' and `Leaving directory'
-# messages which can occur if `w' ends up in MAKEFLAGS.
-# In particular we don't look at `^make:' because GNU make might
-# be invoked under some other name (usually "gmake"), in which
-# case it prints its new name instead of `make'.
-if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
-   am__include=include
-   am__quote=
-   _am_result=GNU
-fi
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
 # Now try BSD make style include.
 if test "$am__include" = "#"; then
    echo '.include "confinc"' > confmf
-   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
-      am__include=.include
-      am__quote="\""
-      _am_result=BSD
-   fi
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
 fi
 
 
-{ $as_echo "$as_me:$LINENO: result: $_am_result" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
 $as_echo "$_am_result" >&6; }
 rm -f confinc confmf
 
 # Check whether --enable-dependency-tracking was given.
-if test "${enable_dependency_tracking+set}" = set; then
+if test "${enable_dependency_tracking+set}" = set; then :
   enableval=$enable_dependency_tracking;
 fi
 
@@ -2583,9 +2981,9 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
 set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -2596,24 +2994,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
 $as_echo "$CC" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -2623,9 +3021,9 @@ if test -z "$ac_cv_prog_CC"; then
   ac_ct_CC=$CC
   # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_CC"; then
@@ -2636,24 +3034,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_CC="gcc"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
 $as_echo "$ac_ct_CC" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -2662,7 +3060,7 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -2676,9 +3074,9 @@ if test -z "$CC"; then
           if test -n "$ac_tool_prefix"; then
     # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
 set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -2689,24 +3087,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_CC="${ac_tool_prefix}cc"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
 $as_echo "$CC" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -2716,9 +3114,9 @@ fi
 if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -2730,18 +3128,18 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
        ac_prog_rejected=yes
        continue
      fi
     ac_cv_prog_CC="cc"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 if test $ac_prog_rejected = yes; then
@@ -2760,10 +3158,10 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
 $as_echo "$CC" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -2775,9 +3173,9 @@ if test -z "$CC"; then
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -2788,24 +3186,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
 $as_echo "$CC" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -2819,9 +3217,9 @@ if test -z "$CC"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_CC"; then
@@ -2832,24 +3230,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
 $as_echo "$ac_ct_CC" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -2862,7 +3260,7 @@ done
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -2873,57 +3271,37 @@ fi
 fi
 
 
-test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
 
 # Provide some information about the compiler.
-$as_echo "$as_me:$LINENO: checking for C compiler version" >&5
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
 set X $ac_compile
 ac_compiler=$2
-{ (ac_try="$ac_compiler --version >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler --version >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -v >&5"
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler -v >&5") 2>&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -V >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler -V >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
 
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -2939,8 +3317,8 @@ ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
 # Try to create an executable without -o first, disregard a.out.
 # It will help us diagnose broken compilers, and finding out an intuition
 # of exeext.
-{ $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
 ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
 
 # The possible output files:
@@ -2956,17 +3334,17 @@ do
 done
 rm -f $ac_rmfiles
 
-if { (ac_try="$ac_link_default"
+if { ac_try="$ac_link_default"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
   (eval "$ac_link_default") 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
   # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
 # So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
 # in a Makefile.  We should not override ac_cv_exeext if it was cached,
@@ -2983,7 +3361,7 @@ do
        # certainly right.
        break;;
     *.* )
-        if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+       if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
        then :; else
           ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
        fi
@@ -3002,84 +3380,41 @@ test "$ac_cv_exeext" = no && ac_cv_exeext=
 else
   ac_file=''
 fi
-
-{ $as_echo "$as_me:$LINENO: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
-if test -z "$ac_file"; then
-  $as_echo "$as_me: failed program was:" >&5
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: C compiler cannot create executables
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }; }
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
 fi
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
 ac_exeext=$ac_cv_exeext
 
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
-# If not cross compiling, check that we can run a simple program.
-if test "$cross_compiling" != yes; then
-  if { ac_try='./$ac_file'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-    cross_compiling=no
-  else
-    if test "$cross_compiling" = maybe; then
-       cross_compiling=yes
-    else
-       { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
-    fi
-  fi
-fi
-{ $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
 rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
 ac_clean_files=$ac_clean_files_save
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-{ $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
-
-{ $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
 $as_echo_n "checking for suffix of executables... " >&6; }
-if { (ac_try="$ac_link"
+if { ac_try="$ac_link"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
   (eval "$ac_link") 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
   # If both `conftest.exe' and `conftest' are `present' (well, observable)
 # catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
 # work properly (i.e., refer to `conftest.exe'), while it won't with
@@ -3094,32 +3429,83 @@ for ac_file in conftest.exe conftest conftest.*; do
   esac
 done
 else
-  { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
 fi
-
-rm -f conftest$ac_cv_exeext
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
 $as_echo "$ac_cv_exeext" >&6; }
 
 rm -f conftest.$ac_ext
 EXEEXT=$ac_cv_exeext
 ac_exeext=$EXEEXT
-{ $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+       cross_compiling=yes
+    else
+       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
 $as_echo_n "checking for suffix of object files... " >&6; }
-if test "${ac_cv_objext+set}" = set; then
+if ${ac_cv_objext+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -3131,17 +3517,17 @@ main ()
 }
 _ACEOF
 rm -f conftest.o conftest.obj
-if { (ac_try="$ac_compile"
+if { ac_try="$ac_compile"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
   (eval "$ac_compile") 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
   for ac_file in conftest.o conftest.obj conftest.*; do
   test -f "$ac_file" || continue;
   case $ac_file in
@@ -3154,31 +3540,23 @@ else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
 fi
-
 rm -f conftest.$ac_cv_objext conftest.$ac_ext
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
 $as_echo "$ac_cv_objext" >&6; }
 OBJEXT=$ac_cv_objext
 ac_objext=$OBJEXT
-{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if test "${ac_cv_c_compiler_gnu+set}" = set; then
+if ${ac_cv_c_compiler_gnu+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -3192,37 +3570,16 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_compiler_gnu=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_compiler_gnu=no
+  ac_compiler_gnu=no
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 ac_cv_c_compiler_gnu=$ac_compiler_gnu
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
 $as_echo "$ac_cv_c_compiler_gnu" >&6; }
 if test $ac_compiler_gnu = yes; then
   GCC=yes
@@ -3231,20 +3588,16 @@ else
 fi
 ac_test_CFLAGS=${CFLAGS+set}
 ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
 $as_echo_n "checking whether $CC accepts -g... " >&6; }
-if test "${ac_cv_prog_cc_g+set}" = set; then
+if ${ac_cv_prog_cc_g+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_save_c_werror_flag=$ac_c_werror_flag
    ac_c_werror_flag=yes
    ac_cv_prog_cc_g=no
    CFLAGS="-g"
-   cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -3255,35 +3608,11 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_prog_cc_g=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       CFLAGS=""
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -3294,36 +3623,12 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_compile "$LINENO"; then :
 
-       ac_c_werror_flag=$ac_save_c_werror_flag
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
         CFLAGS="-g"
-        cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -3334,42 +3639,17 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_prog_cc_g=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
    ac_c_werror_flag=$ac_save_c_werror_flag
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
 $as_echo "$ac_cv_prog_cc_g" >&6; }
 if test "$ac_test_CFLAGS" = set; then
   CFLAGS=$ac_save_CFLAGS
@@ -3386,18 +3666,14 @@ else
     CFLAGS=
   fi
 fi
-{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if test "${ac_cv_prog_cc_c89+set}" = set; then
+if ${ac_cv_prog_cc_c89+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_cv_prog_cc_c89=no
 ac_save_CC=$CC
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdarg.h>
 #include <stdio.h>
@@ -3454,32 +3730,9 @@ for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
        -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
 do
   CC="$ac_save_CC $ac_arg"
-  rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+  if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_prog_cc_c89=$ac_arg
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
 rm -f core conftest.err conftest.$ac_objext
   test "x$ac_cv_prog_cc_c89" != "xno" && break
 done
@@ -3490,17 +3743,19 @@ fi
 # AC_CACHE_VAL
 case "x$ac_cv_prog_cc_c89" in
   x)
-    { $as_echo "$as_me:$LINENO: result: none needed" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
 $as_echo "none needed" >&6; } ;;
   xno)
-    { $as_echo "$as_me:$LINENO: result: unsupported" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
 $as_echo "unsupported" >&6; } ;;
   *)
     CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
 esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
 
+fi
 
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -3510,9 +3765,9 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 depcc="$CC"   am_compiler_list=
 
-{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
 $as_echo_n "checking dependency style of $depcc... " >&6; }
-if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
@@ -3538,6 +3793,11 @@ else
   if test "$am_compiler_list" = ""; then
      am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
   fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
   for depmode in $am_compiler_list; do
     # Setup a source with many dependencies, because some compilers
     # like to wrap large dependency lists on column 80 (with \), and
@@ -3555,7 +3815,17 @@ else
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
     case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
     nosideeffect)
       # after this tag, mechanisms are not by side-effect, so they'll
       # only be used when explicitly requested
@@ -3565,19 +3835,23 @@ else
        break
       fi
       ;;
+    msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
     none) break ;;
     esac
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.
     if depmode=$depmode \
-       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       source=sub/conftest.c object=$am__obj \
        depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
          >/dev/null 2>conftest.err &&
        grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
        grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
        ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
       # icc doesn't choke on unknown options, it will just issue warnings
       # or remarks (even with -Werror).  So we grep stderr for any message
@@ -3601,7 +3875,7 @@ else
 fi
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
 CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
 
@@ -3622,14 +3896,14 @@ ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
 $as_echo_n "checking how to run the C preprocessor... " >&6; }
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
 fi
 if test -z "$CPP"; then
-  if test "${ac_cv_prog_CPP+set}" = set; then
+  if ${ac_cv_prog_CPP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
       # Double quotes because CPP needs to be expanded
@@ -3644,11 +3918,7 @@ do
   # <limits.h> exists even on freestanding compilers.
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp. "Syntax error" is here to catch this case.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #ifdef __STDC__
 # include <limits.h>
@@ -3657,78 +3927,34 @@ cat >>conftest.$ac_ext <<_ACEOF
 #endif
                     Syntax error
 _ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       }; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_cpp "$LINENO"; then :
 
+else
   # Broken: fails on valid input.
 continue
 fi
-
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
   # OK, works on sane cases.  Now check whether nonexistent headers
   # can be detected and how.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <ac_nonexistent.h>
 _ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       }; then
+if ac_fn_c_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
 continue
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
   # Passes both tests.
 ac_preproc_ok=:
 break
 fi
-
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
 done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
   break
 fi
 
@@ -3740,7 +3966,7 @@ fi
 else
   ac_cv_prog_CPP=$CPP
 fi
-{ $as_echo "$as_me:$LINENO: result: $CPP" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
 $as_echo "$CPP" >&6; }
 ac_preproc_ok=false
 for ac_c_preproc_warn_flag in '' yes
@@ -3751,11 +3977,7 @@ do
   # <limits.h> exists even on freestanding compilers.
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp. "Syntax error" is here to catch this case.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #ifdef __STDC__
 # include <limits.h>
@@ -3764,87 +3986,40 @@ cat >>conftest.$ac_ext <<_ACEOF
 #endif
                     Syntax error
 _ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       }; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_cpp "$LINENO"; then :
 
+else
   # Broken: fails on valid input.
 continue
 fi
-
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
   # OK, works on sane cases.  Now check whether nonexistent headers
   # can be detected and how.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <ac_nonexistent.h>
 _ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       }; then
+if ac_fn_c_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
 continue
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
   # Passes both tests.
 ac_preproc_ok=:
 break
 fi
-
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
 done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
-  :
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
 else
-  { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
 fi
 
 ac_ext=c
@@ -3854,9 +4029,9 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-{ $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
 $as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if test "${ac_cv_path_GREP+set}" = set; then
+if ${ac_cv_path_GREP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -z "$GREP"; then
@@ -3867,7 +4042,7 @@ for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_prog in grep ggrep; do
+    for ac_prog in grep ggrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
       ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
       { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
@@ -3887,7 +4062,7 @@ case `"$ac_path_GREP" --version 2>&1` in
     $as_echo 'GREP' >> "conftest.nl"
     "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    ac_count=`expr $ac_count + 1`
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
     if test $ac_count -gt ${ac_path_GREP_max-0}; then
       # Best one so far, save it but keep looking for a better one
       ac_cv_path_GREP="$ac_path_GREP"
@@ -3902,26 +4077,24 @@ esac
       $ac_path_GREP_found && break 3
     done
   done
-done
+  done
 IFS=$as_save_IFS
   if test -z "$ac_cv_path_GREP"; then
-    { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-$as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
   fi
 else
   ac_cv_path_GREP=$GREP
 fi
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
 $as_echo "$ac_cv_path_GREP" >&6; }
  GREP="$ac_cv_path_GREP"
 
 
-{ $as_echo "$as_me:$LINENO: checking for egrep" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
 $as_echo_n "checking for egrep... " >&6; }
-if test "${ac_cv_path_EGREP+set}" = set; then
+if ${ac_cv_path_EGREP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
@@ -3935,7 +4108,7 @@ for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_prog in egrep; do
+    for ac_prog in egrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
       ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
       { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
@@ -3955,7 +4128,7 @@ case `"$ac_path_EGREP" --version 2>&1` in
     $as_echo 'EGREP' >> "conftest.nl"
     "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    ac_count=`expr $ac_count + 1`
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
     if test $ac_count -gt ${ac_path_EGREP_max-0}; then
       # Best one so far, save it but keep looking for a better one
       ac_cv_path_EGREP="$ac_path_EGREP"
@@ -3970,12 +4143,10 @@ esac
       $ac_path_EGREP_found && break 3
     done
   done
-done
+  done
 IFS=$as_save_IFS
   if test -z "$ac_cv_path_EGREP"; then
-    { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-$as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
   fi
 else
   ac_cv_path_EGREP=$EGREP
@@ -3983,21 +4154,17 @@ fi
 
    fi
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
 $as_echo "$ac_cv_path_EGREP" >&6; }
  EGREP="$ac_cv_path_EGREP"
 
 
-{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
 $as_echo_n "checking for ANSI C header files... " >&6; }
-if test "${ac_cv_header_stdc+set}" = set; then
+if ${ac_cv_header_stdc+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdlib.h>
 #include <stdarg.h>
@@ -4012,48 +4179,23 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_header_stdc=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_header_stdc=no
+  ac_cv_header_stdc=no
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <string.h>
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then
-  :
+  $EGREP "memchr" >/dev/null 2>&1; then :
+
 else
   ac_cv_header_stdc=no
 fi
@@ -4063,18 +4205,14 @@ fi
 
 if test $ac_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdlib.h>
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then
-  :
+  $EGREP "free" >/dev/null 2>&1; then :
+
 else
   ac_cv_header_stdc=no
 fi
@@ -4084,14 +4222,10 @@ fi
 
 if test $ac_cv_header_stdc = yes; then
   # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then
+  if test "$cross_compiling" = yes; then :
   :
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <ctype.h>
 #include <stdlib.h>
@@ -4118,118 +4252,33 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  :
-else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_run "$LINENO"; then :
 
-( exit $ac_status )
-ac_cv_header_stdc=no
+else
+  ac_cv_header_stdc=no
 fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 
-
 fi
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
 $as_echo "$ac_cv_header_stdc" >&6; }
 if test $ac_cv_header_stdc = yes; then
 
-cat >>confdefs.h <<\_ACEOF
-#define STDC_HEADERS 1
-_ACEOF
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
 
 fi
 
 # On IRIX 5.3, sys/types and inttypes.h are conflicting.
-
-
-
-
-
-
-
-
-
 for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
                  inttypes.h stdint.h unistd.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  eval "$as_ac_Header=yes"
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       eval "$as_ac_Header=no"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-                $as_echo "$as_val"'`
-              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_Header'}
-                $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
 done
 
 
-
-
-
-
-
-
-
 for ac_header in fcntl.h limits.h strings.h syslog.h unistd.h sys/param.h stdarg.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-                $as_echo "$as_val"'`
-              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
-$as_echo_n "checking $ac_header usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
-$as_echo_n "checking $ac_header presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-  ac_header_preproc=no
 fi
 
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
+done
 
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    ( cat <<\_ASBOX
-## --------------------------------------- ##
-## Report this to michael@metaparadigm.com ##
-## --------------------------------------- ##
-_ASBOX
-     ) | sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-                $as_echo "$as_val"'`
-              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ac_fn_c_check_header_mongrel "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default"
+if test "x$ac_cv_header_inttypes_h" = xyes; then :
 
-fi
-as_val=`eval 'as_val=${'$as_ac_Header'}
-                $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+$as_echo "#define JSON_C_HAVE_INTTYPES_H 1" >>confdefs.h
 
 fi
 
-done
 
 
 # Checks for typedefs, structures, and compiler characteristics.
-{ $as_echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
 $as_echo_n "checking for an ANSI C-conforming const... " >&6; }
-if test "${ac_cv_c_const+set}" = set; then
+if ${ac_cv_c_const+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -4467,140 +4376,24 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_c_const=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_c_const=no
+  ac_cv_c_const=no
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
 $as_echo "$ac_cv_c_const" >&6; }
 if test $ac_cv_c_const = no; then
 
-cat >>confdefs.h <<\_ACEOF
-#define const /**/
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking for size_t" >&5
-$as_echo_n "checking for size_t... " >&6; }
-if test "${ac_cv_type_size_t+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_type_size_t=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof (size_t))
-       return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof ((size_t)))
-         return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+$as_echo "#define const /**/" >>confdefs.h
 
-       ac_cv_type_size_t=yes
 fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
+ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
+if test "x$ac_cv_type_size_t" = xyes; then :
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
-$as_echo "$ac_cv_type_size_t" >&6; }
-if test "x$ac_cv_type_size_t" = x""yes; then
-  :
 else
 
 cat >>confdefs.h <<_ACEOF
 
 
 # Checks for library functions.
-
 for ac_func in vprintf
-do
-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
-$as_echo_n "checking for $ac_func... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
+do :
+  ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf"
+if test "x$ac_cv_func_vprintf" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_VPRINTF 1
 _ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
+ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt"
+if test "x$ac_cv_func__doprnt" = xyes; then :
 
-int
-main ()
-{
-return $ac_func ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
-       }; then
-  eval "$as_ac_var=yes"
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+$as_echo "#define HAVE_DOPRNT 1" >>confdefs.h
 
-       eval "$as_ac_var=no"
 fi
 
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
 fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
-                $as_echo "$as_val"'`
-              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
-                $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+done
+
 
-{ $as_echo "$as_me:$LINENO: checking for _doprnt" >&5
-$as_echo_n "checking for _doprnt... " >&6; }
-if test "${ac_cv_func__doprnt+set}" = set; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working memcmp" >&5
+$as_echo_n "checking for working memcmp... " >&6; }
+if ${ac_cv_func_memcmp_working+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  if test "$cross_compiling" = yes; then :
+  ac_cv_func_memcmp_working=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-/* Define _doprnt to an innocuous variant, in case <limits.h> declares _doprnt.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define _doprnt innocuous__doprnt
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char _doprnt (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef _doprnt
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char _doprnt ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub__doprnt || defined __stub____doprnt
-choke me
-#endif
-
-int
-main ()
-{
-return _doprnt ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
-       }; then
-  ac_cv_func__doprnt=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_func__doprnt=no
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5
-$as_echo "$ac_cv_func__doprnt" >&6; }
-if test "x$ac_cv_func__doprnt" = x""yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_DOPRNT 1
-_ACEOF
-
-fi
-
-fi
-done
-
-
-{ $as_echo "$as_me:$LINENO: checking for working memcmp" >&5
-$as_echo_n "checking for working memcmp... " >&6; }
-if test "${ac_cv_func_memcmp_working+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then
-  ac_cv_func_memcmp_working=no
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
+$ac_includes_default
+int
+main ()
+{
 
   /* Some versions of memcmp are not 8-bit clean.  */
   char c0 = '\100', c1 = '\200', c2 = '\201';
@@ -4850,643 +4463,167 @@ main ()
   }
 
   ;
-  return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_func_memcmp_working=yes
-else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_func_memcmp_working=no
-fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_memcmp_working" >&5
-$as_echo "$ac_cv_func_memcmp_working" >&6; }
-test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in
-  *" memcmp.$ac_objext "* ) ;;
-  *) LIBOBJS="$LIBOBJS memcmp.$ac_objext"
- ;;
-esac
-
-
-
-for ac_header in stdlib.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-                $as_echo "$as_val"'`
-              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
-$as_echo_n "checking $ac_header usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
-$as_echo_n "checking $ac_header presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    ( cat <<\_ASBOX
-## --------------------------------------- ##
-## Report this to michael@metaparadigm.com ##
-## --------------------------------------- ##
-_ASBOX
-     ) | sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-                $as_echo "$as_val"'`
-              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-
-fi
-as_val=`eval 'as_val=${'$as_ac_Header'}
-                $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-{ $as_echo "$as_me:$LINENO: checking for GNU libc compatible malloc" >&5
-$as_echo_n "checking for GNU libc compatible malloc... " >&6; }
-if test "${ac_cv_func_malloc_0_nonnull+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then
-  ac_cv_func_malloc_0_nonnull=no
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#if defined STDC_HEADERS || defined HAVE_STDLIB_H
-# include <stdlib.h>
-#else
-char *malloc ();
-#endif
-
-int
-main ()
-{
-return ! malloc (0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_func_malloc_0_nonnull=yes
-else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_func_malloc_0_nonnull=no
-fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_malloc_0_nonnull" >&5
-$as_echo "$ac_cv_func_malloc_0_nonnull" >&6; }
-if test $ac_cv_func_malloc_0_nonnull = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_MALLOC 1
-_ACEOF
-
-else
-  cat >>confdefs.h <<\_ACEOF
-#define HAVE_MALLOC 0
-_ACEOF
-
-   case " $LIBOBJS " in
-  *" malloc.$ac_objext "* ) ;;
-  *) LIBOBJS="$LIBOBJS malloc.$ac_objext"
- ;;
-esac
-
-
-cat >>confdefs.h <<\_ACEOF
-#define malloc rpl_malloc
-_ACEOF
-
-fi
-
-
-
-
-for ac_header in stdlib.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-                $as_echo "$as_val"'`
-              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
-$as_echo_n "checking $ac_header usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
-$as_echo_n "checking $ac_header presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    ( cat <<\_ASBOX
-## --------------------------------------- ##
-## Report this to michael@metaparadigm.com ##
-## --------------------------------------- ##
-_ASBOX
-     ) | sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_func_memcmp_working=yes
 else
-  eval "$as_ac_Header=\$ac_header_preproc"
+  ac_cv_func_memcmp_working=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-                $as_echo "$as_val"'`
-              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
 
 fi
-as_val=`eval 'as_val=${'$as_ac_Header'}
-                $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_memcmp_working" >&5
+$as_echo "$ac_cv_func_memcmp_working" >&6; }
+test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in
+  *" memcmp.$ac_objext "* ) ;;
+  *) LIBOBJS="$LIBOBJS memcmp.$ac_objext"
+ ;;
+esac
+
+
+for ac_header in stdlib.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdlib_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define HAVE_STDLIB_H 1
 _ACEOF
 
 fi
 
 done
 
-{ $as_echo "$as_me:$LINENO: checking for GNU libc compatible realloc" >&5
-$as_echo_n "checking for GNU libc compatible realloc... " >&6; }
-if test "${ac_cv_func_realloc_0_nonnull+set}" = set; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible malloc" >&5
+$as_echo_n "checking for GNU libc compatible malloc... " >&6; }
+if ${ac_cv_func_malloc_0_nonnull+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test "$cross_compiling" = yes; then
-  ac_cv_func_realloc_0_nonnull=no
+  if test "$cross_compiling" = yes; then :
+  ac_cv_func_malloc_0_nonnull=no
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #if defined STDC_HEADERS || defined HAVE_STDLIB_H
 # include <stdlib.h>
 #else
-char *realloc ();
+char *malloc ();
 #endif
 
 int
 main ()
 {
-return ! realloc (0, 0);
+return ! malloc (0);
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_func_realloc_0_nonnull=yes
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_func_malloc_0_nonnull=yes
 else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_func_realloc_0_nonnull=no
+  ac_cv_func_malloc_0_nonnull=no
 fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 
-
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_realloc_0_nonnull" >&5
-$as_echo "$ac_cv_func_realloc_0_nonnull" >&6; }
-if test $ac_cv_func_realloc_0_nonnull = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_malloc_0_nonnull" >&5
+$as_echo "$ac_cv_func_malloc_0_nonnull" >&6; }
+if test $ac_cv_func_malloc_0_nonnull = yes; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_REALLOC 1
-_ACEOF
+$as_echo "#define HAVE_MALLOC 1" >>confdefs.h
 
 else
-  cat >>confdefs.h <<\_ACEOF
-#define HAVE_REALLOC 0
-_ACEOF
+  $as_echo "#define HAVE_MALLOC 0" >>confdefs.h
 
    case " $LIBOBJS " in
-  *" realloc.$ac_objext "* ) ;;
-  *) LIBOBJS="$LIBOBJS realloc.$ac_objext"
+  *" malloc.$ac_objext "* ) ;;
+  *) LIBOBJS="$LIBOBJS malloc.$ac_objext"
  ;;
 esac
 
 
-cat >>confdefs.h <<\_ACEOF
-#define realloc rpl_realloc
-_ACEOF
+$as_echo "#define malloc rpl_malloc" >>confdefs.h
 
 fi
 
 
+for ac_header in stdlib.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdlib_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STDLIB_H 1
+_ACEOF
 
+fi
 
+done
 
-
-
-
-
-
-for ac_func in strndup strerror vsnprintf vasprintf open vsyslog strncasecmp
-do
-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
-$as_echo_n "checking for $ac_func... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible realloc" >&5
+$as_echo_n "checking for GNU libc compatible realloc... " >&6; }
+if ${ac_cv_func_realloc_0_nonnull+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  if test "$cross_compiling" = yes; then :
+  ac_cv_func_realloc_0_nonnull=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
+#if defined STDC_HEADERS || defined HAVE_STDLIB_H
+# include <stdlib.h>
 #else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
+char *realloc ();
 #endif
 
 int
 main ()
 {
-return $ac_func ();
+return ! realloc (0, 0);
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
-       }; then
-  eval "$as_ac_var=yes"
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_func_realloc_0_nonnull=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  ac_cv_func_realloc_0_nonnull=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
 
-       eval "$as_ac_var=no"
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_realloc_0_nonnull" >&5
+$as_echo "$ac_cv_func_realloc_0_nonnull" >&6; }
+if test $ac_cv_func_realloc_0_nonnull = yes; then :
+
+$as_echo "#define HAVE_REALLOC 1" >>confdefs.h
+
+else
+  $as_echo "#define HAVE_REALLOC 0" >>confdefs.h
+
+   case " $LIBOBJS " in
+  *" realloc.$ac_objext "* ) ;;
+  *) LIBOBJS="$LIBOBJS realloc.$ac_objext"
+ ;;
+esac
+
+
+$as_echo "#define realloc rpl_realloc" >>confdefs.h
 
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
 fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
-                $as_echo "$as_val"'`
-              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
-                $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
+
+
+for ac_func in strndup strerror vsnprintf vasprintf open vsyslog strncasecmp
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
@@ -5497,14 +4634,14 @@ done
 
 case `pwd` in
   *\ * | *\    *)
-    { $as_echo "$as_me:$LINENO: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
 esac
 
 
 
-macro_version='2.2.6'
-macro_revision='1.3012'
+macro_version='2.2.6b'
+macro_revision='1.3017'
 
 
 
@@ -5522,35 +4659,27 @@ ltmain="$ac_aux_dir/ltmain.sh"
 
 # Make sure we can run config.sub.
 $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
-  { { $as_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
-$as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
 
-{ $as_echo "$as_me:$LINENO: checking build system type" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
 $as_echo_n "checking build system type... " >&6; }
-if test "${ac_cv_build+set}" = set; then
+if ${ac_cv_build+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_build_alias=$build_alias
 test "x$ac_build_alias" = x &&
   ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
 test "x$ac_build_alias" = x &&
-  { { $as_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
-$as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
-  { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
-$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
 $as_echo "$ac_cv_build" >&6; }
 case $ac_cv_build in
 *-*-*) ;;
-*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
-$as_echo "$as_me: error: invalid value of canonical build" >&2;}
-   { (exit 1); exit 1; }; };;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
 esac
 build=$ac_cv_build
 ac_save_IFS=$IFS; IFS='-'
@@ -5566,28 +4695,24 @@ IFS=$ac_save_IFS
 case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
 
 
-{ $as_echo "$as_me:$LINENO: checking host system type" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
 $as_echo_n "checking host system type... " >&6; }
-if test "${ac_cv_host+set}" = set; then
+if ${ac_cv_host+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test "x$host_alias" = x; then
   ac_cv_host=$ac_cv_build
 else
   ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
-    { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
-$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
 fi
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
 $as_echo "$ac_cv_host" >&6; }
 case $ac_cv_host in
 *-*-*) ;;
-*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
-$as_echo "$as_me: error: invalid value of canonical host" >&2;}
-   { (exit 1); exit 1; }; };;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
 esac
 host=$ac_cv_host
 ac_save_IFS=$IFS; IFS='-'
@@ -5603,9 +4728,9 @@ IFS=$ac_save_IFS
 case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
 
 
-{ $as_echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
 $as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if test "${ac_cv_path_SED+set}" = set; then
+if ${ac_cv_path_SED+:} false; then :
   $as_echo_n "(cached) " >&6
 else
             ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
@@ -5613,7 +4738,7 @@ else
        ac_script="$ac_script$as_nl$ac_script"
      done
      echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
-     $as_unset ac_script || ac_script=
+     { ac_script=; unset ac_script;}
      if test -z "$SED"; then
   ac_path_SED_found=false
   # Loop through the user's path and test for each of PROGNAME-LIST
@@ -5622,7 +4747,7 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_prog in sed gsed; do
+    for ac_prog in sed gsed; do
     for ac_exec_ext in '' $ac_executable_extensions; do
       ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
       { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
@@ -5642,7 +4767,7 @@ case `"$ac_path_SED" --version 2>&1` in
     $as_echo '' >> "conftest.nl"
     "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    ac_count=`expr $ac_count + 1`
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
     if test $ac_count -gt ${ac_path_SED_max-0}; then
       # Best one so far, save it but keep looking for a better one
       ac_cv_path_SED="$ac_path_SED"
@@ -5657,19 +4782,17 @@ esac
       $ac_path_SED_found && break 3
     done
   done
-done
+  done
 IFS=$as_save_IFS
   if test -z "$ac_cv_path_SED"; then
-    { { $as_echo "$as_me:$LINENO: error: no acceptable sed could be found in \$PATH" >&5
-$as_echo "$as_me: error: no acceptable sed could be found in \$PATH" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
   fi
 else
   ac_cv_path_SED=$SED
 fi
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_SED" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
 $as_echo "$ac_cv_path_SED" >&6; }
  SED="$ac_cv_path_SED"
   rm -f conftest.sed
@@ -5687,9 +4810,9 @@ Xsed="$SED -e 1s/^X//"
 
 
 
-{ $as_echo "$as_me:$LINENO: checking for fgrep" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
 $as_echo_n "checking for fgrep... " >&6; }
-if test "${ac_cv_path_FGREP+set}" = set; then
+if ${ac_cv_path_FGREP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
@@ -5703,7 +4826,7 @@ for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_prog in fgrep; do
+    for ac_prog in fgrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
       ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
       { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue
@@ -5723,7 +4846,7 @@ case `"$ac_path_FGREP" --version 2>&1` in
     $as_echo 'FGREP' >> "conftest.nl"
     "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    ac_count=`expr $ac_count + 1`
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
     if test $ac_count -gt ${ac_path_FGREP_max-0}; then
       # Best one so far, save it but keep looking for a better one
       ac_cv_path_FGREP="$ac_path_FGREP"
@@ -5738,12 +4861,10 @@ esac
       $ac_path_FGREP_found && break 3
     done
   done
-done
+  done
 IFS=$as_save_IFS
   if test -z "$ac_cv_path_FGREP"; then
-    { { $as_echo "$as_me:$LINENO: error: no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-$as_echo "$as_me: error: no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
   fi
 else
   ac_cv_path_FGREP=$FGREP
@@ -5751,7 +4872,7 @@ fi
 
    fi
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_FGREP" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
 $as_echo "$ac_cv_path_FGREP" >&6; }
  FGREP="$ac_cv_path_FGREP"
 
@@ -5777,7 +4898,7 @@ test -z "$GREP" && GREP=grep
 
 
 # Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then
+if test "${with_gnu_ld+set}" = set; then :
   withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
 else
   with_gnu_ld=no
@@ -5786,7 +4907,7 @@ fi
 ac_prog=ld
 if test "$GCC" = yes; then
   # Check if gcc -print-prog-name=ld gives a path.
-  { $as_echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
 $as_echo_n "checking for ld used by $CC... " >&6; }
   case $host in
   *-*-mingw*)
@@ -5816,13 +4937,13 @@ $as_echo_n "checking for ld used by $CC... " >&6; }
     ;;
   esac
 elif test "$with_gnu_ld" = yes; then
-  { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
 $as_echo_n "checking for GNU ld... " >&6; }
 else
-  { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
 $as_echo_n "checking for non-GNU ld... " >&6; }
 fi
-if test "${lt_cv_path_LD+set}" = set; then
+if ${lt_cv_path_LD+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -z "$LD"; then
@@ -5853,18 +4974,16 @@ fi
 
 LD="$lt_cv_path_LD"
 if test -n "$LD"; then
-  { $as_echo "$as_me:$LINENO: result: $LD" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
 $as_echo "$LD" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
-test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
-$as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
-   { (exit 1); exit 1; }; }
-{ $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if test "${lt_cv_prog_gnu_ld+set}" = set; then
+if ${lt_cv_prog_gnu_ld+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   # I'd rather use --version here, but apparently some GNU lds only accept -v.
@@ -5877,7 +4996,7 @@ case `$LD -v 2>&1 </dev/null` in
   ;;
 esac
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
 $as_echo "$lt_cv_prog_gnu_ld" >&6; }
 with_gnu_ld=$lt_cv_prog_gnu_ld
 
@@ -5889,9 +5008,9 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
 
 
 
-{ $as_echo "$as_me:$LINENO: checking for BSD- or MS-compatible name lister (nm)" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
-if test "${lt_cv_path_NM+set}" = set; then
+if ${lt_cv_path_NM+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$NM"; then
@@ -5938,7 +5057,7 @@ else
   : ${lt_cv_path_NM=no}
 fi
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
 $as_echo "$lt_cv_path_NM" >&6; }
 if test "$lt_cv_path_NM" != "no"; then
   NM="$lt_cv_path_NM"
@@ -5949,9 +5068,9 @@ else
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_DUMPBIN+set}" = set; then
+if ${ac_cv_prog_DUMPBIN+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$DUMPBIN"; then
@@ -5962,24 +5081,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 DUMPBIN=$ac_cv_prog_DUMPBIN
 if test -n "$DUMPBIN"; then
-  { $as_echo "$as_me:$LINENO: result: $DUMPBIN" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
 $as_echo "$DUMPBIN" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -5993,9 +5112,9 @@ if test -z "$DUMPBIN"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then
+if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_DUMPBIN"; then
@@ -6006,24 +5125,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
 if test -n "$ac_ct_DUMPBIN"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_DUMPBIN" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
 $as_echo "$ac_ct_DUMPBIN" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -6036,7 +5155,7 @@ done
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -6056,44 +5175,44 @@ test -z "$NM" && NM=nm
 
 
 
-{ $as_echo "$as_me:$LINENO: checking the name lister ($NM) interface" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
 $as_echo_n "checking the name lister ($NM) interface... " >&6; }
-if test "${lt_cv_nm_interface+set}" = set; then
+if ${lt_cv_nm_interface+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_nm_interface="BSD nm"
   echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:6066: $ac_compile\"" >&5)
+  (eval echo "\"\$as_me:5185: $ac_compile\"" >&5)
   (eval "$ac_compile" 2>conftest.err)
   cat conftest.err >&5
-  (eval echo "\"\$as_me:6069: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+  (eval echo "\"\$as_me:5188: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
   (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
   cat conftest.err >&5
-  (eval echo "\"\$as_me:6072: output\"" >&5)
+  (eval echo "\"\$as_me:5191: output\"" >&5)
   cat conftest.out >&5
   if $GREP 'External.*some_variable' conftest.out > /dev/null; then
     lt_cv_nm_interface="MS dumpbin"
   fi
   rm -f conftest*
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_nm_interface" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
 $as_echo "$lt_cv_nm_interface" >&6; }
 
-{ $as_echo "$as_me:$LINENO: checking whether ln -s works" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
 $as_echo_n "checking whether ln -s works... " >&6; }
 LN_S=$as_ln_s
 if test "$LN_S" = "ln -s"; then
-  { $as_echo "$as_me:$LINENO: result: yes" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no, using $LN_S" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
 $as_echo "no, using $LN_S" >&6; }
 fi
 
 # find the maximum length of command line arguments
-{ $as_echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
 $as_echo_n "checking the maximum length of command line arguments... " >&6; }
-if test "${lt_cv_sys_max_cmd_len+set}" = set; then
+if ${lt_cv_sys_max_cmd_len+:} false; then :
   $as_echo_n "(cached) " >&6
 else
     i=0
@@ -6211,10 +5330,10 @@ else
 fi
 
 if test -n $lt_cv_sys_max_cmd_len ; then
-  { $as_echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
 $as_echo "$lt_cv_sys_max_cmd_len" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: none" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
 $as_echo "none" >&6; }
 fi
 max_cmd_len=$lt_cv_sys_max_cmd_len
@@ -6228,7 +5347,7 @@ max_cmd_len=$lt_cv_sys_max_cmd_len
 : ${MV="mv -f"}
 : ${RM="rm -f"}
 
-{ $as_echo "$as_me:$LINENO: checking whether the shell understands some XSI constructs" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
 $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
 # Try some XSI features
 xsi_shell=no
@@ -6238,17 +5357,17 @@ xsi_shell=no
     && eval 'test $(( 1 + 1 )) -eq 2 \
     && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
   && xsi_shell=yes
-{ $as_echo "$as_me:$LINENO: result: $xsi_shell" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
 $as_echo "$xsi_shell" >&6; }
 
 
-{ $as_echo "$as_me:$LINENO: checking whether the shell understands \"+=\"" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
 $as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
 lt_shell_append=no
 ( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
     >/dev/null 2>&1 \
   && lt_shell_append=yes
-{ $as_echo "$as_me:$LINENO: result: $lt_shell_append" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
 $as_echo "$lt_shell_append" >&6; }
 
 
@@ -6283,14 +5402,14 @@ esac
 
 
 
-{ $as_echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
 $as_echo_n "checking for $LD option to reload object files... " >&6; }
-if test "${lt_cv_ld_reload_flag+set}" = set; then
+if ${lt_cv_ld_reload_flag+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_ld_reload_flag='-r'
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
 $as_echo "$lt_cv_ld_reload_flag" >&6; }
 reload_flag=$lt_cv_ld_reload_flag
 case $reload_flag in
@@ -6319,9 +5438,9 @@ esac
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
 set dummy ${ac_tool_prefix}objdump; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_OBJDUMP+set}" = set; then
+if ${ac_cv_prog_OBJDUMP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$OBJDUMP"; then
@@ -6332,24 +5451,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 OBJDUMP=$ac_cv_prog_OBJDUMP
 if test -n "$OBJDUMP"; then
-  { $as_echo "$as_me:$LINENO: result: $OBJDUMP" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
 $as_echo "$OBJDUMP" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -6359,9 +5478,9 @@ if test -z "$ac_cv_prog_OBJDUMP"; then
   ac_ct_OBJDUMP=$OBJDUMP
   # Extract the first word of "objdump", so it can be a program name with args.
 set dummy objdump; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then
+if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_OBJDUMP"; then
@@ -6372,24 +5491,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_OBJDUMP="objdump"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
 if test -n "$ac_ct_OBJDUMP"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
 $as_echo "$ac_ct_OBJDUMP" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -6398,7 +5517,7 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -6418,9 +5537,9 @@ test -z "$OBJDUMP" && OBJDUMP=objdump
 
 
 
-{ $as_echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
 $as_echo_n "checking how to recognize dependent libraries... " >&6; }
-if test "${lt_cv_deplibs_check_method+set}" = set; then
+if ${lt_cv_deplibs_check_method+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_file_magic_cmd='$MAGIC_CMD'
@@ -6539,7 +5658,7 @@ linux* | k*bsd*-gnu)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-netbsd* | netbsdelf*-gnu)
+netbsd*)
   if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
     lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
   else
@@ -6614,7 +5733,7 @@ tpf*)
 esac
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
 $as_echo "$lt_cv_deplibs_check_method" >&6; }
 file_magic_cmd=$lt_cv_file_magic_cmd
 deplibs_check_method=$lt_cv_deplibs_check_method
@@ -6634,9 +5753,9 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
 set dummy ${ac_tool_prefix}ar; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_AR+set}" = set; then
+if ${ac_cv_prog_AR+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$AR"; then
@@ -6647,24 +5766,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_AR="${ac_tool_prefix}ar"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 AR=$ac_cv_prog_AR
 if test -n "$AR"; then
-  { $as_echo "$as_me:$LINENO: result: $AR" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
 $as_echo "$AR" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -6674,9 +5793,9 @@ if test -z "$ac_cv_prog_AR"; then
   ac_ct_AR=$AR
   # Extract the first word of "ar", so it can be a program name with args.
 set dummy ar; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_AR"; then
@@ -6687,24 +5806,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_AR="ar"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_AR=$ac_cv_prog_ac_ct_AR
 if test -n "$ac_ct_AR"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
 $as_echo "$ac_ct_AR" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -6713,7 +5832,7 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -6739,9 +5858,9 @@ test -z "$AR_FLAGS" && AR_FLAGS=cru
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
 set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_STRIP+set}" = set; then
+if ${ac_cv_prog_STRIP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$STRIP"; then
@@ -6752,24 +5871,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 STRIP=$ac_cv_prog_STRIP
 if test -n "$STRIP"; then
-  { $as_echo "$as_me:$LINENO: result: $STRIP" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
 $as_echo "$STRIP" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -6779,9 +5898,9 @@ if test -z "$ac_cv_prog_STRIP"; then
   ac_ct_STRIP=$STRIP
   # Extract the first word of "strip", so it can be a program name with args.
 set dummy strip; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_STRIP"; then
@@ -6792,24 +5911,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
 if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
 $as_echo "$ac_ct_STRIP" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -6818,7 +5937,7 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -6838,9 +5957,9 @@ test -z "$STRIP" && STRIP=:
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
 set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_RANLIB+set}" = set; then
+if ${ac_cv_prog_RANLIB+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$RANLIB"; then
@@ -6851,24 +5970,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 RANLIB=$ac_cv_prog_RANLIB
 if test -n "$RANLIB"; then
-  { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
 $as_echo "$RANLIB" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -6878,9 +5997,9 @@ if test -z "$ac_cv_prog_RANLIB"; then
   ac_ct_RANLIB=$RANLIB
   # Extract the first word of "ranlib", so it can be a program name with args.
 set dummy ranlib; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_RANLIB"; then
@@ -6891,24 +6010,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_RANLIB="ranlib"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
 if test -n "$ac_ct_RANLIB"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
 $as_echo "$ac_ct_RANLIB" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -6917,7 +6036,7 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -6995,9 +6114,9 @@ compiler=$CC
 
 
 # Check for command to grab the raw symbol name followed by C symbol from nm.
-{ $as_echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
-if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
+if ${lt_cv_sys_global_symbol_pipe+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -7113,18 +6232,18 @@ void nm_test_func(void){}
 int main(){nm_test_var='a';nm_test_func();return(0);}
 _LT_EOF
 
-  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
     # Now try to grab the symbols.
     nlist=conftest.nm
-    if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\""; } >&5
   (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && test -s "$nlist"; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s "$nlist"; then
       # Try sorting and uniquifying the output.
       if sort "$nlist" | uniq > "$nlist"T; then
        mv -f "$nlist"T "$nlist"
@@ -7177,11 +6296,11 @@ _LT_EOF
          lt_save_CFLAGS="$CFLAGS"
          LIBS="conftstm.$ac_objext"
          CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
-         if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+         if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && test -s conftest${ac_exeext}; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext}; then
            pipe_works=yes
          fi
          LIBS="$lt_save_LIBS"
@@ -7215,10 +6334,10 @@ if test -z "$lt_cv_sys_global_symbol_pipe"; then
   lt_cv_sys_global_symbol_to_cdecl=
 fi
 if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-  { $as_echo "$as_me:$LINENO: result: failed" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
 $as_echo "failed" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: ok" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
 $as_echo "ok" >&6; }
 fi
 
@@ -7244,7 +6363,7 @@ fi
 
 
 # Check whether --enable-libtool-lock was given.
-if test "${enable_libtool_lock+set}" = set; then
+if test "${enable_libtool_lock+set}" = set; then :
   enableval=$enable_libtool_lock;
 fi
 
@@ -7256,11 +6375,11 @@ case $host in
 ia64-*-hpux*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
-  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
     case `/usr/bin/file conftest.$ac_objext` in
       *ELF-32*)
        HPUX_IA64_MODE="32"
@@ -7274,12 +6393,12 @@ ia64-*-hpux*)
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 7277 "configure"' > conftest.$ac_ext
-  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  echo '#line 6396 "configure"' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
     if test "$lt_cv_prog_gnu_ld" = yes; then
       case `/usr/bin/file conftest.$ac_objext` in
        *32-bit*)
@@ -7313,11 +6432,11 @@ x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
 s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
-  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
     case `/usr/bin/file conftest.o` in
       *32-bit*)
        case $host in
@@ -7366,9 +6485,9 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
   # On SCO OpenServer 5, we need -belf to get full-featured binaries.
   SAVE_CFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS -belf"
-  { $as_echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
 $as_echo_n "checking whether the C compiler needs -belf... " >&6; }
-if test "${lt_cv_cc_needs_belf+set}" = set; then
+if ${lt_cv_cc_needs_belf+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_ext=c
@@ -7377,11 +6496,7 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-     cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -7392,38 +6507,13 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   lt_cv_cc_needs_belf=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       lt_cv_cc_needs_belf=no
+  lt_cv_cc_needs_belf=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
      ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -7431,7 +6521,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
 $as_echo "$lt_cv_cc_needs_belf" >&6; }
   if test x"$lt_cv_cc_needs_belf" != x"yes"; then
     # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
@@ -7441,11 +6531,11 @@ $as_echo "$lt_cv_cc_needs_belf" >&6; }
 sparc*-*solaris*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
-  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
     case `/usr/bin/file conftest.o` in
     *64-bit*)
       case $lt_cv_prog_gnu_ld in
@@ -7471,9 +6561,9 @@ need_locks="$enable_libtool_lock"
     if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
 set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_DSYMUTIL+set}" = set; then
+if ${ac_cv_prog_DSYMUTIL+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$DSYMUTIL"; then
@@ -7484,24 +6574,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 DSYMUTIL=$ac_cv_prog_DSYMUTIL
 if test -n "$DSYMUTIL"; then
-  { $as_echo "$as_me:$LINENO: result: $DSYMUTIL" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
 $as_echo "$DSYMUTIL" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -7511,9 +6601,9 @@ if test -z "$ac_cv_prog_DSYMUTIL"; then
   ac_ct_DSYMUTIL=$DSYMUTIL
   # Extract the first word of "dsymutil", so it can be a program name with args.
 set dummy dsymutil; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then
+if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_DSYMUTIL"; then
@@ -7524,24 +6614,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
 if test -n "$ac_ct_DSYMUTIL"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
 $as_echo "$ac_ct_DSYMUTIL" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -7550,7 +6640,7 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -7563,9 +6653,9 @@ fi
     if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
 set dummy ${ac_tool_prefix}nmedit; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_NMEDIT+set}" = set; then
+if ${ac_cv_prog_NMEDIT+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$NMEDIT"; then
@@ -7576,24 +6666,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 NMEDIT=$ac_cv_prog_NMEDIT
 if test -n "$NMEDIT"; then
-  { $as_echo "$as_me:$LINENO: result: $NMEDIT" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
 $as_echo "$NMEDIT" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -7603,9 +6693,9 @@ if test -z "$ac_cv_prog_NMEDIT"; then
   ac_ct_NMEDIT=$NMEDIT
   # Extract the first word of "nmedit", so it can be a program name with args.
 set dummy nmedit; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then
+if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_NMEDIT"; then
@@ -7616,24 +6706,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_NMEDIT="nmedit"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
 if test -n "$ac_ct_NMEDIT"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
 $as_echo "$ac_ct_NMEDIT" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -7642,7 +6732,7 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -7655,9 +6745,9 @@ fi
     if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
 set dummy ${ac_tool_prefix}lipo; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_LIPO+set}" = set; then
+if ${ac_cv_prog_LIPO+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$LIPO"; then
@@ -7668,24 +6758,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 LIPO=$ac_cv_prog_LIPO
 if test -n "$LIPO"; then
-  { $as_echo "$as_me:$LINENO: result: $LIPO" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
 $as_echo "$LIPO" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -7695,9 +6785,9 @@ if test -z "$ac_cv_prog_LIPO"; then
   ac_ct_LIPO=$LIPO
   # Extract the first word of "lipo", so it can be a program name with args.
 set dummy lipo; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then
+if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_LIPO"; then
@@ -7708,24 +6798,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_LIPO="lipo"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
 if test -n "$ac_ct_LIPO"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_LIPO" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
 $as_echo "$ac_ct_LIPO" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -7734,7 +6824,7 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -7747,9 +6837,9 @@ fi
     if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
 set dummy ${ac_tool_prefix}otool; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_OTOOL+set}" = set; then
+if ${ac_cv_prog_OTOOL+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$OTOOL"; then
@@ -7760,24 +6850,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 OTOOL=$ac_cv_prog_OTOOL
 if test -n "$OTOOL"; then
-  { $as_echo "$as_me:$LINENO: result: $OTOOL" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
 $as_echo "$OTOOL" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -7787,9 +6877,9 @@ if test -z "$ac_cv_prog_OTOOL"; then
   ac_ct_OTOOL=$OTOOL
   # Extract the first word of "otool", so it can be a program name with args.
 set dummy otool; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then
+if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_OTOOL"; then
@@ -7800,24 +6890,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_OTOOL="otool"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
 if test -n "$ac_ct_OTOOL"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_OTOOL" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
 $as_echo "$ac_ct_OTOOL" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -7826,7 +6916,7 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -7839,9 +6929,9 @@ fi
     if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
 set dummy ${ac_tool_prefix}otool64; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_OTOOL64+set}" = set; then
+if ${ac_cv_prog_OTOOL64+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$OTOOL64"; then
@@ -7852,24 +6942,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 OTOOL64=$ac_cv_prog_OTOOL64
 if test -n "$OTOOL64"; then
-  { $as_echo "$as_me:$LINENO: result: $OTOOL64" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
 $as_echo "$OTOOL64" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -7879,9 +6969,9 @@ if test -z "$ac_cv_prog_OTOOL64"; then
   ac_ct_OTOOL64=$OTOOL64
   # Extract the first word of "otool64", so it can be a program name with args.
 set dummy otool64; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then
+if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_OTOOL64"; then
@@ -7892,24 +6982,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_OTOOL64="otool64"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
 if test -n "$ac_ct_OTOOL64"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_OTOOL64" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
 $as_echo "$ac_ct_OTOOL64" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -7918,7 +7008,7 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -7954,9 +7044,9 @@ fi
 
 
 
-    { $as_echo "$as_me:$LINENO: checking for -single_module linker flag" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
 $as_echo_n "checking for -single_module linker flag... " >&6; }
-if test "${lt_cv_apple_cc_single_mod+set}" = set; then
+if ${lt_cv_apple_cc_single_mod+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_apple_cc_single_mod=no
@@ -7981,22 +7071,18 @@ else
        rm -f conftest.*
       fi
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
 $as_echo "$lt_cv_apple_cc_single_mod" >&6; }
-    { $as_echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
-if test "${lt_cv_ld_exported_symbols_list+set}" = set; then
+if ${lt_cv_ld_exported_symbols_list+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_ld_exported_symbols_list=no
       save_LDFLAGS=$LDFLAGS
       echo "_main" > conftest.sym
       LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -8007,42 +7093,17 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   lt_cv_ld_exported_symbols_list=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       lt_cv_ld_exported_symbols_list=no
+  lt_cv_ld_exported_symbols_list=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
        LDFLAGS="$save_LDFLAGS"
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
     case $host_os in
     rhapsody* | darwin1.[012])
@@ -8079,62 +7140,13 @@ $as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
     ;;
   esac
 
-
 for ac_header in dlfcn.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  eval "$as_ac_Header=yes"
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       eval "$as_ac_Header=no"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-                $as_echo "$as_val"'`
-              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_Header'}
-                $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
+do :
+  ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_dlfcn_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define HAVE_DLFCN_H 1
 _ACEOF
 
 fi
@@ -8154,7 +7166,7 @@ done
 
 
             # Check whether --enable-shared was given.
-if test "${enable_shared+set}" = set; then
+if test "${enable_shared+set}" = set; then :
   enableval=$enable_shared; p=${PACKAGE-default}
     case $enableval in
     yes) enable_shared=yes ;;
@@ -8185,7 +7197,7 @@ fi
 
 
   # Check whether --enable-static was given.
-if test "${enable_static+set}" = set; then
+if test "${enable_static+set}" = set; then :
   enableval=$enable_static; p=${PACKAGE-default}
     case $enableval in
     yes) enable_static=yes ;;
@@ -8217,7 +7229,7 @@ fi
 
 
 # Check whether --with-pic was given.
-if test "${with_pic+set}" = set; then
+if test "${with_pic+set}" = set; then :
   withval=$with_pic; pic_mode="$withval"
 else
   pic_mode=default
@@ -8233,7 +7245,7 @@ test -z "$pic_mode" && pic_mode=default
 
 
   # Check whether --enable-fast-install was given.
-if test "${enable_fast_install+set}" = set; then
+if test "${enable_fast_install+set}" = set; then :
   enableval=$enable_fast_install; p=${PACKAGE-default}
     case $enableval in
     yes) enable_fast_install=yes ;;
@@ -8314,9 +7326,9 @@ if test -n "${ZSH_VERSION+set}" ; then
    setopt NO_GLOB_SUBST
 fi
 
-{ $as_echo "$as_me:$LINENO: checking for objdir" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
 $as_echo_n "checking for objdir... " >&6; }
-if test "${lt_cv_objdir+set}" = set; then
+if ${lt_cv_objdir+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   rm -f .libs 2>/dev/null
@@ -8329,7 +7341,7 @@ else
 fi
 rmdir .libs 2>/dev/null
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
 $as_echo "$lt_cv_objdir" >&6; }
 objdir=$lt_cv_objdir
 
@@ -8422,9 +7434,9 @@ test -z "$MAGIC_CMD" && MAGIC_CMD=file
 case $deplibs_check_method in
 file_magic*)
   if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-    { $as_echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
-if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   case $MAGIC_CMD in
@@ -8475,10 +7487,10 @@ fi
 
 MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
 if test -n "$MAGIC_CMD"; then
-  { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
 $as_echo "$MAGIC_CMD" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -8488,9 +7500,9 @@ fi
 
 if test -z "$lt_cv_path_MAGIC_CMD"; then
   if test -n "$ac_tool_prefix"; then
-    { $as_echo "$as_me:$LINENO: checking for file" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
 $as_echo_n "checking for file... " >&6; }
-if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   case $MAGIC_CMD in
@@ -8541,10 +7553,10 @@ fi
 
 MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
 if test -n "$MAGIC_CMD"; then
-  { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
 $as_echo "$MAGIC_CMD" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -8621,9 +7633,9 @@ lt_prog_compiler_no_builtin_flag=
 if test "$GCC" = yes; then
   lt_prog_compiler_no_builtin_flag=' -fno-builtin'
 
-  { $as_echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
-if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_rtti_exceptions=no
@@ -8639,11 +7651,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:8642: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:7654: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:8646: \$? = $ac_status" >&5
+   echo "$as_me:7658: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -8656,7 +7668,7 @@ else
    $RM conftest*
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
 
 if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
@@ -8676,7 +7688,7 @@ fi
 lt_prog_compiler_pic=
 lt_prog_compiler_static=
 
-{ $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
 $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
 
   if test "$GCC" = yes; then
@@ -8948,7 +7960,7 @@ case $host_os in
     lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
     ;;
 esac
-{ $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
 $as_echo "$lt_prog_compiler_pic" >&6; }
 
 
@@ -8960,9 +7972,9 @@ $as_echo "$lt_prog_compiler_pic" >&6; }
 # Check to make sure the PIC flag actually works.
 #
 if test -n "$lt_prog_compiler_pic"; then
-  { $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
-if test "${lt_cv_prog_compiler_pic_works+set}" = set; then
+if ${lt_cv_prog_compiler_pic_works+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_pic_works=no
@@ -8978,11 +7990,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:8981: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:7993: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:8985: \$? = $ac_status" >&5
+   echo "$as_me:7997: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -8995,7 +8007,7 @@ else
    $RM conftest*
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
 
 if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
@@ -9019,9 +8031,9 @@ fi
 # Check to make sure the static flag actually works.
 #
 wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
-{ $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if test "${lt_cv_prog_compiler_static_works+set}" = set; then
+if ${lt_cv_prog_compiler_static_works+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_static_works=no
@@ -9047,7 +8059,7 @@ else
    LDFLAGS="$save_LDFLAGS"
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
 $as_echo "$lt_cv_prog_compiler_static_works" >&6; }
 
 if test x"$lt_cv_prog_compiler_static_works" = xyes; then
@@ -9062,9 +8074,9 @@ fi
 
 
 
-  { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if test "${lt_cv_prog_compiler_c_o+set}" = set; then
+if ${lt_cv_prog_compiler_c_o+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_c_o=no
@@ -9083,11 +8095,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:9086: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8098: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:9090: \$? = $ac_status" >&5
+   echo "$as_me:8102: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -9109,7 +8121,7 @@ else
    $RM conftest*
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
 $as_echo "$lt_cv_prog_compiler_c_o" >&6; }
 
 
@@ -9117,9 +8129,9 @@ $as_echo "$lt_cv_prog_compiler_c_o" >&6; }
 
 
 
-  { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if test "${lt_cv_prog_compiler_c_o+set}" = set; then
+if ${lt_cv_prog_compiler_c_o+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_c_o=no
@@ -9138,11 +8150,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:9141: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8153: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:9145: \$? = $ac_status" >&5
+   echo "$as_me:8157: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -9164,7 +8176,7 @@ else
    $RM conftest*
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
 $as_echo "$lt_cv_prog_compiler_c_o" >&6; }
 
 
@@ -9173,7 +8185,7 @@ $as_echo "$lt_cv_prog_compiler_c_o" >&6; }
 hard_links="nottested"
 if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
   # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
 $as_echo_n "checking if we can lock with hard links... " >&6; }
   hard_links=yes
   $RM conftest*
@@ -9181,10 +8193,10 @@ $as_echo_n "checking if we can lock with hard links... " >&6; }
   touch conftest.a
   ln conftest.a conftest.b 2>&5 || hard_links=no
   ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:$LINENO: result: $hard_links" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
 $as_echo "$hard_links" >&6; }
   if test "$hard_links" = no; then
-    { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
     need_locks=warn
   fi
@@ -9197,7 +8209,7 @@ fi
 
 
 
-  { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
 
   runpath_var=
@@ -9439,7 +8451,7 @@ _LT_EOF
       fi
       ;;
 
-    netbsd* | netbsdelf*-gnu)
+    netbsd*)
       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
        archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
        wlarc=
@@ -9614,7 +8626,6 @@ _LT_EOF
        if test "$aix_use_runtimelinking" = yes; then
          shared_flag="$shared_flag "'${wl}-G'
        fi
-       link_all_deplibs=no
       else
        # not using gcc
        if test "$host_cpu" = ia64; then
@@ -9640,11 +8651,7 @@ _LT_EOF
        allow_undefined_flag='-berok'
         # Determine the default libpath from the value encoded in an
         # empty executable.
-        cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -9655,27 +8662,7 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
 
 lt_aix_libpath_sed='
     /Import File Strings/,/^$/ {
@@ -9689,16 +8676,9 @@ aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpat
 if test -z "$aix_libpath"; then
   aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
 fi
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 
         hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
@@ -9711,11 +8691,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
        else
         # Determine the default libpath from the value encoded in an
         # empty executable.
-        cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -9726,27 +8702,7 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
 
 lt_aix_libpath_sed='
     /Import File Strings/,/^$/ {
@@ -9760,16 +8716,9 @@ aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpat
 if test -z "$aix_libpath"; then
   aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
 fi
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 
         hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
@@ -9981,42 +8930,17 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
        # implicitly export all symbols.
         save_LDFLAGS="$LDFLAGS"
         LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-        cat >conftest.$ac_ext <<_ACEOF
-int foo(void) {}
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int foo (void) { return 0; }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
-       }; then
-  archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_link "$LINENO"; then :
 
+          archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
 
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
         LDFLAGS="$save_LDFLAGS"
       else
        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
@@ -10029,7 +8953,7 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       link_all_deplibs=yes
       ;;
 
-    netbsd* | netbsdelf*-gnu)
+    netbsd*)
       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
        archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
       else
@@ -10272,7 +9196,7 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
     fi
   fi
 
-{ $as_echo "$as_me:$LINENO: result: $ld_shlibs" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
 $as_echo "$ld_shlibs" >&6; }
 test "$ld_shlibs" = no && can_build_shared=no
 
@@ -10309,16 +9233,16 @@ x|xyes)
       # Test whether the compiler implicitly links with -lc since on some
       # systems, -lgcc has to come before -lc. If gcc already passes -lc
       # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
       $RM conftest*
       echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
-      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+      if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } 2>conftest.err; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } 2>conftest.err; then
         soname=conftest
         lib=conftest
         libobjs=conftest.$ac_objext
@@ -10332,11 +9256,11 @@ $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
         libname=conftest
         lt_save_allow_undefined_flag=$allow_undefined_flag
         allow_undefined_flag=
-        if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\"") >&5
+        if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
   (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
         then
          archive_cmds_need_lc=no
         else
@@ -10347,7 +9271,7 @@ $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
         cat conftest.err 1>&5
       fi
       $RM conftest*
-      { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc" >&5
 $as_echo "$archive_cmds_need_lc" >&6; }
       ;;
     esac
@@ -10511,7 +9435,7 @@ esac
 
 
 
-  { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
 $as_echo_n "checking dynamic linker characteristics... " >&6; }
 
 if test "$GCC" = yes; then
@@ -10933,11 +9857,7 @@ linux* | k*bsd*-gnu)
   save_libdir=$libdir
   eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
        LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -10948,41 +9868,13 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
-       }; then
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then
+if ac_fn_c_try_link "$LINENO"; then :
+  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
   shlibpath_overrides_runpath=yes
 fi
-
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
   LDFLAGS=$save_LDFLAGS
   libdir=$save_libdir
 
@@ -11006,18 +9898,6 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
   dynamic_linker='GNU/Linux ld.so'
   ;;
 
-netbsdelf*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='NetBSD ld.elf_so'
-  ;;
-
 netbsd*)
   version_type=sunos
   need_lib_prefix=no
@@ -11206,7 +10086,7 @@ uts4*)
   dynamic_linker=no
   ;;
 esac
-{ $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
 $as_echo "$dynamic_linker" >&6; }
 test "$dynamic_linker" = no && can_build_shared=no
 
@@ -11308,7 +10188,7 @@ fi
 
 
 
-  { $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
 $as_echo_n "checking how to hardcode library paths into programs... " >&6; }
 hardcode_action=
 if test -n "$hardcode_libdir_flag_spec" ||
@@ -11333,7 +10213,7 @@ else
   # directories.
   hardcode_action=unsupported
 fi
-{ $as_echo "$as_me:$LINENO: result: $hardcode_action" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
 $as_echo "$hardcode_action" >&6; }
 
 if test "$hardcode_action" = relink ||
@@ -11378,18 +10258,14 @@ else
 
   darwin*)
   # if libdl is installed we need to link against it
-    { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
 $as_echo_n "checking for dlopen in -ldl... " >&6; }
-if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+if ${ac_cv_lib_dl_dlopen+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldl  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -11407,43 +10283,18 @@ return dlopen ();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_dl_dlopen=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_lib_dl_dlopen=no
+  ac_cv_lib_dl_dlopen=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
 $as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = x""yes; then
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
   lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
 else
 
     ;;
 
   *)
-    { $as_echo "$as_me:$LINENO: checking for shl_load" >&5
-$as_echo_n "checking for shl_load... " >&6; }
-if test "${ac_cv_func_shl_load+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define shl_load innocuous_shl_load
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char shl_load (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef shl_load
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char shl_load ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_shl_load || defined __stub___shl_load
-choke me
-#endif
-
-int
-main ()
-{
-return shl_load ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
-       }; then
-  ac_cv_func_shl_load=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_func_shl_load=no
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
-$as_echo "$ac_cv_func_shl_load" >&6; }
-if test "x$ac_cv_func_shl_load" = x""yes; then
+    ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
+if test "x$ac_cv_func_shl_load" = xyes; then :
   lt_cv_dlopen="shl_load"
 else
-  { $as_echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
 $as_echo_n "checking for shl_load in -ldld... " >&6; }
-if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+if ${ac_cv_lib_dld_shl_load+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldld  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -11573,145 +10336,32 @@ return shl_load ();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_dld_shl_load=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_lib_dld_shl_load=no
+  ac_cv_lib_dld_shl_load=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
 $as_echo "$ac_cv_lib_dld_shl_load" >&6; }
-if test "x$ac_cv_lib_dld_shl_load" = x""yes; then
+if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
   lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
 else
-  { $as_echo "$as_me:$LINENO: checking for dlopen" >&5
-$as_echo_n "checking for dlopen... " >&6; }
-if test "${ac_cv_func_dlopen+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define dlopen innocuous_dlopen
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char dlopen (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef dlopen
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_dlopen || defined __stub___dlopen
-choke me
-#endif
-
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
-       }; then
-  ac_cv_func_dlopen=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_func_dlopen=no
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
-$as_echo "$ac_cv_func_dlopen" >&6; }
-if test "x$ac_cv_func_dlopen" = x""yes; then
+  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
+if test "x$ac_cv_func_dlopen" = xyes; then :
   lt_cv_dlopen="dlopen"
 else
-  { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
 $as_echo_n "checking for dlopen in -ldl... " >&6; }
-if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+if ${ac_cv_lib_dl_dlopen+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldl  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -11729,57 +10379,28 @@ return dlopen ();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_dl_dlopen=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_lib_dl_dlopen=no
+  ac_cv_lib_dl_dlopen=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
 $as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = x""yes; then
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
   lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
 else
-  { $as_echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
 $as_echo_n "checking for dlopen in -lsvld... " >&6; }
-if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+if ${ac_cv_lib_svld_dlopen+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lsvld  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -11794,60 +10415,31 @@ main ()
 {
 return dlopen ();
   ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
-       }; then
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_svld_dlopen=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_lib_svld_dlopen=no
+  ac_cv_lib_svld_dlopen=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
 $as_echo "$ac_cv_lib_svld_dlopen" >&6; }
-if test "x$ac_cv_lib_svld_dlopen" = x""yes; then
+if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
   lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
 else
-  { $as_echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
 $as_echo_n "checking for dld_link in -ldld... " >&6; }
-if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+if ${ac_cv_lib_dld_dld_link+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldld  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -11865,43 +10457,18 @@ return dld_link ();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_dld_dld_link=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_lib_dld_dld_link=no
+  ac_cv_lib_dld_dld_link=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
 $as_echo "$ac_cv_lib_dld_dld_link" >&6; }
-if test "x$ac_cv_lib_dld_dld_link" = x""yes; then
+if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
   lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
 fi
 
@@ -11940,9 +10507,9 @@ fi
     save_LIBS="$LIBS"
     LIBS="$lt_cv_dlopen_libs $LIBS"
 
-    { $as_echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
 $as_echo_n "checking whether a program can dlopen itself... " >&6; }
-if test "${lt_cv_dlopen_self+set}" = set; then
+if ${lt_cv_dlopen_self+:} false; then :
   $as_echo_n "(cached) " >&6
 else
          if test "$cross_compiling" = yes; then :
@@ -11951,7 +10518,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11954 "configure"
+#line 10521 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -12010,11 +10577,11 @@ int main ()
   return status;
 }
 _LT_EOF
-  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
     (./conftest; exit; ) >&5 2>/dev/null
     lt_status=$?
     case x$lt_status in
@@ -12031,14 +10598,14 @@ rm -fr conftest*
 
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
 $as_echo "$lt_cv_dlopen_self" >&6; }
 
     if test "x$lt_cv_dlopen_self" = xyes; then
       wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
-      { $as_echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
-if test "${lt_cv_dlopen_self_static+set}" = set; then
+if ${lt_cv_dlopen_self_static+:} false; then :
   $as_echo_n "(cached) " >&6
 else
          if test "$cross_compiling" = yes; then :
@@ -12047,7 +10614,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 12050 "configure"
+#line 10617 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -12106,11 +10673,11 @@ int main ()
   return status;
 }
 _LT_EOF
-  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
     (./conftest; exit; ) >&5 2>/dev/null
     lt_status=$?
     case x$lt_status in
@@ -12127,7 +10694,7 @@ rm -fr conftest*
 
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
 $as_echo "$lt_cv_dlopen_self_static" >&6; }
     fi
 
 
 striplib=
 old_striplib=
-{ $as_echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
 $as_echo_n "checking whether stripping libraries is possible... " >&6; }
 if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
   test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
   test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-  { $as_echo "$as_me:$LINENO: result: yes" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
 # FIXME - insert some real tests, host_os isn't really good enough
@@ -12180,15 +10747,15 @@ else
     if test -n "$STRIP" ; then
       striplib="$STRIP -x"
       old_striplib="$STRIP -S"
-      { $as_echo "$as_me:$LINENO: result: yes" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
     else
-      { $as_echo "$as_me:$LINENO: result: no" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
     fi
     ;;
   *)
-    { $as_echo "$as_me:$LINENO: result: no" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
     ;;
   esac
 
 
   # Report which library types will actually be built
-  { $as_echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
 $as_echo_n "checking if libtool supports shared libraries... " >&6; }
-  { $as_echo "$as_me:$LINENO: result: $can_build_shared" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
 $as_echo "$can_build_shared" >&6; }
 
-  { $as_echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
 $as_echo_n "checking whether to build shared libraries... " >&6; }
   test "$can_build_shared" = "no" && enable_shared=no
 
@@ -12232,14 +10799,14 @@ $as_echo_n "checking whether to build shared libraries... " >&6; }
     fi
     ;;
   esac
-  { $as_echo "$as_me:$LINENO: result: $enable_shared" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
 $as_echo "$enable_shared" >&6; }
 
-  { $as_echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
 $as_echo_n "checking whether to build static libraries... " >&6; }
   # Make sure either enable_shared or enable_static is yes.
   test "$enable_shared" = yes || enable_static=yes
-  { $as_echo "$as_me:$LINENO: result: $enable_static" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
 $as_echo "$enable_static" >&6; }
 
 
@@ -12275,7 +10842,8 @@ CC="$lt_save_CC"
 
 
 
-ac_config_files="$ac_config_files Makefile json.pc"
+ac_config_files="$ac_config_files Makefile json.pc tests/Makefile"
+
 
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
@@ -12304,13 +10872,13 @@ _ACEOF
     case $ac_val in #(
     *${as_nl}*)
       case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
       esac
       case $ac_var in #(
       _ | IFS | as_nl) ;; #(
       BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) $as_unset $ac_var ;;
+      *) { eval $ac_var=; unset $ac_var;} ;;
       esac ;;
     esac
   done
@@ -12318,8 +10886,8 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
   (set) 2>&1 |
     case $as_nl`(ac_space=' '; set) 2>&1` in #(
     *${as_nl}ac_space=\ *)
-      # `set' does not quote correctly, so add quotes (double-quote
-      # substitution turns \\\\ into \\, and sed turns \\ into \).
+      # `set' does not quote correctly, so add quotesdouble-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
       sed -n \
        "s/'/'\\\\''/g;
          s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
@@ -12341,12 +10909,23 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
      :end' >>confcache
 if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
   if test -w "$cache_file"; then
-    test "x$cache_file" != "x/dev/null" &&
-      { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5
+    if test "x$cache_file" != "x/dev/null"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
 $as_echo "$as_me: updating cache $cache_file" >&6;}
-    cat confcache >$cache_file
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+       cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+         mv -f confcache "$cache_file"$$ &&
+         mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+         mv -f confcache "$cache_file" ;;
+       esac
+      fi
+    fi
   else
-    { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
   fi
 fi
@@ -12360,42 +10939,46 @@ DEFS=-DHAVE_CONFIG_H
 
 ac_libobjs=
 ac_ltlibobjs=
+U=
 for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
   # 1. Remove the extension, and $U if already installed.
   ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
   ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
   # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
   #    will be set to the directory where LIBOBJS objects are built.
-  ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
-  ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
+  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
 done
 LIBOBJS=$ac_libobjs
 
 LTLIBOBJS=$ac_ltlibobjs
 
 
+ if test -n "$EXEEXT"; then
+  am__EXEEXT_TRUE=
+  am__EXEEXT_FALSE='#'
+else
+  am__EXEEXT_TRUE='#'
+  am__EXEEXT_FALSE=
+fi
+
 if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 
-: ${CONFIG_STATUS=./config.status}
+: "${CONFIG_STATUS=./config.status}"
 ac_write_fail=0
 ac_clean_files_save=$ac_clean_files
 ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
-cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
 #! $SHELL
 # Generated by $as_me.
 # Run this file to recreate the current configuration.
@@ -12405,17 +10988,18 @@ cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 debug=false
 ac_cs_recheck=false
 ac_cs_silent=false
-SHELL=\${CONFIG_SHELL-$SHELL}
-_ACEOF
 
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-## --------------------- ##
-## M4sh Initialization.  ##
-## --------------------- ##
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
 
 # Be more Bourne compatible
 DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
   emulate sh
   NULLCMD=:
   # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
@@ -12423,23 +11007,15 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
 else
-  case `(set -o) 2>/dev/null` in
-  *posix*) set -o posix ;;
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
 esac
-
 fi
 
 
-
-
-# PATH needs CR
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
 as_nl='
 '
 export as_nl
@@ -12447,7 +11023,13 @@ export as_nl
 as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
 as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
 as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
   as_echo='printf %s\n'
   as_echo_n='printf %s'
 else
@@ -12458,7 +11040,7 @@ else
     as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
     as_echo_n_body='eval
       arg=$1;
-      case $arg in
+      case $arg in #(
       *"$as_nl"*)
        expr "X$arg" : "X\\(.*\\)$as_nl";
        arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
@@ -12481,13 +11063,6 @@ if test "${PATH_SEPARATOR+set}" != set; then
   }
 fi
 
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  as_unset=unset
-else
-  as_unset=false
-fi
-
 
 # IFS
 # We need space, tab and new line, in precisely that order.  Quoting is
 IFS=" ""       $as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
-case $0 in
+as_myself=
+case $0 in #((
   *[\\/]* ) as_myself=$0 ;;
   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
 IFS=$as_save_IFS
 
      ;;
@@ -12517,12 +11093,16 @@ if test "x$as_myself" = x; then
 fi
 if test ! -f "$as_myself"; then
   $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  { (exit 1); exit 1; }
+  exit 1
 fi
 
-# Work around bugs in pre-3.0 UWIN ksh.
-for as_var in ENV MAIL MAILPATH
-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
 done
 PS1='$ '
 PS2='> '
@@ -12534,7 +11114,89 @@ export LC_ALL
 LANGUAGE=C
 export LANGUAGE
 
-# Required to use basename.
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
 if expr a : '\(a\)' >/dev/null 2>&1 &&
    test "X`expr 00001 : '.*\(...\)'`" = X001; then
   as_expr=expr
@@ -12548,8 +11210,12 @@ else
   as_basename=false
 fi
 
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
 
-# Name of the executable.
 as_me=`$as_basename -- "$0" ||
 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
         X"$0" : 'X\(//\)$' \| \
@@ -12569,76 +11235,25 @@ $as_echo X/"$0" |
          }
          s/.*/./; q'`
 
-# CDPATH.
-$as_unset CDPATH
-
-
-
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
-
-  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
-  # uniformly replaced by the line number.  The first 'sed' inserts a
-  # line-number line after each line using $LINENO; the second 'sed'
-  # does the real work.  The second script uses 'N' to pair each
-  # line-number line with the line containing $LINENO, and appends
-  # trailing '-' during substitution so that $LINENO is not a special
-  # case at line end.
-  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-  # scripts with optimization help from Paolo Bonzini.  Blame Lee
-  # E. McMahon (1931-1989) for sed's syntax.  :-)
-  sed -n '
-    p
-    /[$]LINENO/=
-  ' <$as_myself |
-    sed '
-      s/[$]LINENO.*/&-/
-      t lineno
-      b
-      :lineno
-      N
-      :loop
-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
-      t loop
-      s/-\n.*//
-    ' >$as_me.lineno &&
-  chmod +x "$as_me.lineno" ||
-    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
-   { (exit 1); exit 1; }; }
-
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensitive to this).
-  . "./$as_me.lineno"
-  # Exit status is that of the last command.
-  exit
-}
-
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
 
 ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in
+case `echo -n x` in #(((((
 -n*)
-  case `echo 'x\c'` in
+  case `echo 'xy\c'` in
   *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
-  *)   ECHO_C='\c';;
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='        ';;
   esac;;
 *)
   ECHO_N='-n';;
 esac
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
 
 rm -f conf$$ conf$$.exe conf$$.file
 if test -d conf$$.dir; then
 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
 
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_dir" : 'X\(//\)[^/]' \| \
+        X"$as_dir" : 'X\(//\)$' \| \
+        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
 if mkdir -p . 2>/dev/null; then
-  as_mkdir_p=:
+  as_mkdir_p='mkdir -p "$as_dir"'
 else
   test -d ./-p && rmdir ./-p
   as_mkdir_p=false
@@ -12687,10 +11350,10 @@ else
       if test -d "$1"; then
        test -d "$1/.";
       else
-       case $1 in
+       case $1 in #(
        -*)set "./$1";;
        esac;
-       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
        ???[sx]*):;;*)false;;esac;fi
     '\'' sh
   '
@@ -12705,13 +11368,19 @@ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
 
 
 exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
 
-# Save the log message, to keep $[0] and so on meaningful, and to
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by json-c $as_me 0.9, which was
-generated by GNU Autoconf 2.63.  Invocation command line was
+This file was extended by json-c $as_me 0.10, which was
+generated by GNU Autoconf 2.68.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -12743,13 +11412,15 @@ _ACEOF
 
 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 ac_cs_usage="\
-\`$as_me' instantiates files from templates according to the
-current configuration.
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration.  Unless the files
+and actions are specified as TAGs, all are instantiated by default.
 
-Usage: $0 [OPTION]... [FILE]...
+Usage: $0 [OPTION]... [TAG]...
 
   -h, --help       print this help, then exit
   -V, --version    print version number and configuration settings, then exit
+      --config     print configuration, then exit
   -q, --quiet, --silent
                    do not print progress messages
   -d, --debug      don't remove temporary files
@@ -12768,16 +11439,17 @@ $config_headers
 Configuration commands:
 $config_commands
 
-Report bugs to <bug-autoconf@gnu.org>."
+Report bugs to <json-c@googlegroups.com>."
 
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-json-c config.status 0.9
-configured by $0, generated by GNU Autoconf 2.63,
-  with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+json-c config.status 0.10
+configured by $0, generated by GNU Autoconf 2.68,
+  with options \\"\$ac_cs_config\\"
 
-Copyright (C) 2008 Free Software Foundation, Inc.
+Copyright (C) 2010 Free Software Foundation, Inc.
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
 
@@ -12795,11 +11467,16 @@ ac_need_defaults=:
 while test $# != 0
 do
   case $1 in
-  --*=*)
+  --*=?*)
     ac_option=`expr "X$1" : 'X\([^=]*\)='`
     ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
     ac_shift=:
     ;;
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
   *)
     ac_option=$1
     ac_optarg=$2
     ac_cs_recheck=: ;;
   --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
     $as_echo "$ac_cs_version"; exit ;;
+  --config | --confi | --conf | --con | --co | --c )
+    $as_echo "$ac_cs_config"; exit ;;
   --debug | --debu | --deb | --de | --d | -d )
     debug=: ;;
   --file | --fil | --fi | --f )
     $ac_shift
     case $ac_optarg in
     *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
     esac
-    CONFIG_FILES="$CONFIG_FILES '$ac_optarg'"
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
     ac_need_defaults=false;;
   --header | --heade | --head | --hea )
     $ac_shift
     case $ac_optarg in
     *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
     esac
-    CONFIG_HEADERS="$CONFIG_HEADERS '$ac_optarg'"
+    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
     ac_need_defaults=false;;
   --he | --h)
     # Conflict between --help and --header
-    { $as_echo "$as_me: error: ambiguous option: $1
-Try \`$0 --help' for more information." >&2
-   { (exit 1); exit 1; }; };;
+    as_fn_error $? "ambiguous option: \`$1'
+Try \`$0 --help' for more information.";;
   --help | --hel | -h )
     $as_echo "$ac_cs_usage"; exit ;;
   -q | -quiet | --quiet | --quie | --qui | --qu | --q \
@@ -12841,11 +11520,10 @@ Try \`$0 --help' for more information." >&2
     ac_cs_silent=: ;;
 
   # This is an error.
-  -*) { $as_echo "$as_me: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&2
-   { (exit 1); exit 1; }; } ;;
+  -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
 
-  *) ac_config_targets="$ac_config_targets $1"
+  *) as_fn_append ac_config_targets " $1"
      ac_need_defaults=false ;;
 
   esac
@@ -13152,14 +11830,14 @@ for ac_config_target in $ac_config_targets
 do
   case $ac_config_target in
     "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+    "json_config.h") CONFIG_HEADERS="$CONFIG_HEADERS json_config.h" ;;
     "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
     "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
     "json.pc") CONFIG_FILES="$CONFIG_FILES json.pc" ;;
+    "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
 
-  *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
-$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
-   { (exit 1); exit 1; }; };;
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
   esac
 done
 
 # after its creation but before its name has been assigned to `$tmp'.
 $debug ||
 {
-  tmp=
+  tmp= ac_tmp=
   trap 'exit_status=$?
-  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+  : "${ac_tmp:=$tmp}"
+  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
 ' 0
-  trap '{ (exit 1); exit 1; }' 1 2 13 15
+  trap 'as_fn_exit 1' 1 2 13 15
 }
 # Create a (secure) tmp directory for tmp files.
 
 {
   tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
-  test -n "$tmp" && test -d "$tmp"
+  test -d "$tmp"
 }  ||
 {
   tmp=./conf$$-$RANDOM
   (umask 077 && mkdir "$tmp")
-} ||
-{
-   $as_echo "$as_me: cannot create a temporary directory in ." >&2
-   { (exit 1); exit 1; }
-}
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
 
 # Set up the scripts for CONFIG_FILES section.
 # No need to generate them if there are no CONFIG_FILES.
@@ -13209,7 +11885,13 @@ $debug ||
 if test -n "$CONFIG_FILES"; then
 
 
-ac_cr='\r'
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
 ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
 if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
   ac_cs_awk_cr='\\r'
@@ -13217,7 +11899,7 @@ else
   ac_cs_awk_cr=$ac_cr
 fi
 
-echo 'BEGIN {' >"$tmp/subs1.awk" &&
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
 _ACEOF
 
 
@@ -13226,24 +11908,18 @@ _ACEOF
   echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
   echo "_ACEOF"
 } >conf$$subs.sh ||
-  { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
-   { (exit 1); exit 1; }; }
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
 ac_delim='%!_!# '
 for ac_last_try in false false false false false :; do
   . ./conf$$subs.sh ||
-    { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
 
   ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
   if test $ac_delim_n = $ac_delim_num; then
     break
   elif $ac_last_try; then
-    { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
   else
     ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
   fi
@@ -13251,7 +11927,7 @@ done
 rm -f conf$$subs.sh
 
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
 _ACEOF
 sed -n '
 h
@@ -13265,7 +11941,7 @@ s/'"$ac_delim"'$//
 t delim
 :nl
 h
-s/\(.\{148\}\).*/\1/
+s/\(.\{148\}\)..*/\1/
 t more1
 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
 p
@@ -13279,7 +11955,7 @@ s/.\{148\}//
 t nl
 :delim
 h
-s/\(.\{148\}\).*/\1/
+s/\(.\{148\}\)..*/\1/
 t more2
 s/["\\]/\\&/g; s/^/"/; s/$/"/
 p
@@ -13299,7 +11975,7 @@ t delim
 rm -f conf$$subs.awk
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 _ACAWK
-cat >>"\$tmp/subs1.awk" <<_ACAWK &&
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
   for (key in S) S_is_set[key] = 1
   FS = "\a"
 
@@ -13331,23 +12007,29 @@ if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
   sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
 else
   cat
-fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
-  || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5
-$as_echo "$as_me: error: could not setup config files machinery" >&2;}
-   { (exit 1); exit 1; }; }
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
 _ACEOF
 
-# VPATH may cause trouble with some makes, so we remove $(srcdir),
-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
 # trailing colons and then remove the whole line if VPATH becomes empty
 # (actually we leave an empty line to preserve line numbers).
 if test "x$srcdir" = x.; then
-  ac_vpsub='/^[         ]*VPATH[        ]*=/{
-s/:*\$(srcdir):*/:/
-s/:*\${srcdir}:*/:/
-s/:*@srcdir@:*/:/
-s/^\([^=]*=[    ]*\):*/\1/
+  ac_vpsub='/^[         ]*VPATH[        ]*=[    ]*/{
+h
+s///
+s/^/:/
+s/[     ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
 s/:*$//
+x
+s/\(=[  ]*\).*/\1/
+G
+s/\n//
 s/^[^=]*=[      ]*$//
 }'
 fi
@@ -13359,7 +12041,7 @@ fi # test -n "$CONFIG_FILES"
 # No need to generate them if there are no CONFIG_HEADERS.
 # This happens for instance with `./config.status Makefile'.
 if test -n "$CONFIG_HEADERS"; then
-cat >"$tmp/defines.awk" <<\_ACAWK ||
+cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
 BEGIN {
 _ACEOF
 
@@ -13371,13 +12053,11 @@ _ACEOF
 # handling of long lines.
 ac_delim='%!_!# '
 for ac_last_try in false false :; do
-  ac_t=`sed -n "/$ac_delim/p" confdefs.h`
-  if test -z "$ac_t"; then
+  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
+  if test -z "$ac_tt"; then
     break
   elif $ac_last_try; then
-    { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_HEADERS" >&5
-$as_echo "$as_me: error: could not make $CONFIG_HEADERS" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
   else
     ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
   fi
@@ -13462,9 +12142,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 _ACAWK
 _ACEOF
 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-  { { $as_echo "$as_me:$LINENO: error: could not setup config headers machinery" >&5
-$as_echo "$as_me: error: could not setup config headers machinery" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
 fi # test -n "$CONFIG_HEADERS"
 
 
@@ -13477,9 +12155,7 @@ do
   esac
   case $ac_mode$ac_tag in
   :[FHL]*:*);;
-  :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5
-$as_echo "$as_me: error: invalid tag $ac_tag" >&2;}
-   { (exit 1); exit 1; }; };;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
   :[FH]-) ac_tag=-:-;;
   :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
   esac
@@ -13498,7 +12174,7 @@ $as_echo "$as_me: error: invalid tag $ac_tag" >&2;}
     for ac_f
     do
       case $ac_f in
-      -) ac_f="$tmp/stdin";;
+      -) ac_f="$ac_tmp/stdin";;
       *) # Look for the file first in the build tree, then in the source tree
         # (if the path is not absolute).  The absolute path cannot be DOS-style,
         # because $ac_f cannot contain `:'.
@@ -13507,12 +12183,10 @@ $as_echo "$as_me: error: invalid tag $ac_tag" >&2;}
           [\\/$]*) false;;
           *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
           esac ||
-          { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
-$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;}
-   { (exit 1); exit 1; }; };;
+          as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
       esac
       case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
-      ac_file_inputs="$ac_file_inputs '$ac_f'"
+      as_fn_append ac_file_inputs " '$ac_f'"
     done
 
     # Let's still pretend it is `configure' which instantiates (i.e., don't
@@ -13523,7 +12197,7 @@ $as_echo "$as_me: error: cannot find input file: $ac_f" >&2;}
        `' by configure.'
     if test x"$ac_file" != x-; then
       configure_input="$ac_file.  $configure_input"
-      { $as_echo "$as_me:$LINENO: creating $ac_file" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
 $as_echo "$as_me: creating $ac_file" >&6;}
     fi
     # Neutralize special characters interpreted by sed in replacement strings.
@@ -13535,10 +12209,8 @@ $as_echo "$as_me: creating $ac_file" >&6;}
     esac
 
     case $ac_tag in
-    *:-:* | *:-) cat >"$tmp/stdin" \
-      || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
-   { (exit 1); exit 1; }; } ;;
+    *:-:* | *:-) cat >"$ac_tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
     esac
     ;;
   esac
@@ -13566,47 +12238,7 @@ $as_echo X"$ac_file" |
            q
          }
          s/.*/./; q'`
-  { as_dir="$ac_dir"
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$as_dir" : 'X\(//\)[^/]' \| \
-        X"$as_dir" : 'X\(//\)$' \| \
-        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
-   { (exit 1); exit 1; }; }; }
+  as_dir="$ac_dir"; as_fn_mkdir_p
   ac_builddir=.
 
 case "$ac_dir" in
@@ -13663,7 +12295,6 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # If the template does not know about datarootdir, expand it.
 # FIXME: This hack should be removed a few years after 2.60.
 ac_datarootdir_hack=; ac_datarootdir_seen=
-
 ac_sed_dataroot='
 /datarootdir/ {
   p
@@ -13673,12 +12304,11 @@ ac_sed_dataroot='
 /@docdir@/p
 /@infodir@/p
 /@localedir@/p
-/@mandir@/p
-'
+/@mandir@/p'
 case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
 *datarootdir*) ac_datarootdir_seen=yes;;
 *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-  { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
@@ -13688,7 +12318,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
   s&@infodir@&$infodir&g
   s&@localedir@&$localedir&g
   s&@mandir@&$mandir&g
-    s&\\\${datarootdir}&$datarootdir&g' ;;
+  s&\\\${datarootdir}&$datarootdir&g' ;;
 esac
 _ACEOF
 
@@ -13716,27 +12346,24 @@ s&@INSTALL@&$ac_INSTALL&;t t
 s&@MKDIR_P@&$ac_MKDIR_P&;t t
 $ac_datarootdir_hack
 "
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
-  || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
-   { (exit 1); exit 1; }; }
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
 
 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
-  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
-  { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
-  { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined." >&5
+  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' \
+      "$ac_tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&5
 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined." >&2;}
+which seems to be undefined.  Please make sure it is defined" >&2;}
 
-  rm -f "$tmp/stdin"
+  rm -f "$ac_tmp/stdin"
   case $ac_file in
-  -) cat "$tmp/out" && rm -f "$tmp/out";;
-  *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
+  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
   esac \
-  || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
-   { (exit 1); exit 1; }; }
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
  ;;
   :H)
   #
@@ -13745,27 +12372,21 @@ $as_echo "$as_me: error: could not create $ac_file" >&2;}
   if test x"$ac_file" != x-; then
     {
       $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
-    } >"$tmp/config.h" \
-      || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
-   { (exit 1); exit 1; }; }
-    if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
-      { $as_echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
+    } >"$ac_tmp/config.h" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
 $as_echo "$as_me: $ac_file is unchanged" >&6;}
     else
       rm -f "$ac_file"
-      mv "$tmp/config.h" "$ac_file" \
-       || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
-   { (exit 1); exit 1; }; }
+      mv "$ac_tmp/config.h" "$ac_file" \
+       || as_fn_error $? "could not create $ac_file" "$LINENO" 5
     fi
   else
     $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
-      || { { $as_echo "$as_me:$LINENO: error: could not create -" >&5
-$as_echo "$as_me: error: could not create -" >&2;}
-   { (exit 1); exit 1; }; }
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
+      || as_fn_error $? "could not create -" "$LINENO" 5
   fi
 # Compute "$ac_file"'s index in $config_headers.
 _am_arg="$ac_file"
@@ -13803,7 +12424,7 @@ $as_echo X"$_am_arg" |
          s/.*/./; q'`/stamp-h$_am_stamp_count
  ;;
 
-  :C)  { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5
+  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
 $as_echo "$as_me: executing $ac_file commands" >&6;}
  ;;
   esac
@@ -13898,47 +12519,7 @@ $as_echo X"$file" |
            q
          }
          s/.*/./; q'`
-      { as_dir=$dirpart/$fdir
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$as_dir" : 'X\(//\)[^/]' \| \
-        X"$as_dir" : 'X\(//\)$' \| \
-        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
-   { (exit 1); exit 1; }; }; }
+      as_dir=$dirpart/$fdir; as_fn_mkdir_p
       # echo "creating $dirpart/$file"
       echo '# dummy' > "$dirpart/$file"
     done
@@ -14585,15 +13166,12 @@ _LT_EOF
 done # for ac_tag
 
 
-{ (exit 0); exit 0; }
+as_fn_exit 0
 _ACEOF
-chmod +x $CONFIG_STATUS
 ac_clean_files=$ac_clean_files_save
 
 test $ac_write_fail = 0 ||
-  { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
 
 
 # configure is writing to config.log, and then calls config.status.
@@ -14614,10 +13192,11 @@ if test "$no_create" != yes; then
   exec 5>>config.log
   # Use ||, not &&, to avoid exiting from the if with $? = 1, which
   # would make configure fail if this is the last instruction.
-  $ac_cs_success || { (exit 1); exit 1; }
+  $ac_cs_success || as_fn_exit 1
 fi
 if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
-  { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
 fi
 
+
index 8f0fff3..b2c3cbe 100644 (file)
@@ -1,18 +1,22 @@
 AC_PREREQ(2.52)
 
 # Process this file with autoconf to produce a configure script.
-AC_INIT([json-c], 0.9, [michael@metaparadigm.com])
+AC_INIT([json-c], 0.10, [json-c@googlegroups.com])
 
 AM_INIT_AUTOMAKE(AC_PACKAGE_NAME, AC_PACKAGE_VERSION)
 
+AC_PROG_MAKE_SET
+
 # Checks for programs.
 
 # Checks for libraries.
 
 # Checks for header files.
 AM_CONFIG_HEADER(config.h)
+AM_CONFIG_HEADER(json_config.h)
 AC_HEADER_STDC
 AC_CHECK_HEADERS(fcntl.h limits.h strings.h syslog.h unistd.h [sys/param.h] stdarg.h)
+AC_CHECK_HEADER(inttypes.h,[AC_DEFINE([JSON_C_HAVE_INTTYPES_H],[1],[Public define for json_inttypes.h])])
 
 # Checks for typedefs, structures, and compiler characteristics.
 AC_C_CONST
@@ -27,7 +31,11 @@ AC_CHECK_FUNCS(strndup strerror vsnprintf vasprintf open vsyslog strncasecmp)
 
 AM_PROG_LIBTOOL
 
-AC_OUTPUT([
+AC_CONFIG_FILES([
 Makefile
 json.pc
+tests/Makefile
 ])
+
+AC_OUTPUT
+
diff --git a/debug.h b/debug.h
index 59a4dfc..1e09701 100644 (file)
--- a/debug.h
+++ b/debug.h
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
  * Michael Clark <michael@metaparadigm.com>
+ * Copyright (c) 2009 Hewlett-Packard Development Company, L.P.
  *
  * This library is free software; you can redistribute it and/or modify
  * it under the terms of the MIT license. See COPYING for details.
@@ -12,6 +13,8 @@
 #ifndef _DEBUG_H_
 #define _DEBUG_H_
 
+#include <stdlib.h>
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -25,21 +28,40 @@ extern void mc_debug(const char *msg, ...);
 extern void mc_error(const char *msg, ...);
 extern void mc_info(const char *msg, ...);
 
+#ifndef __STRING
+#define __STRING(x) #x
+#endif
+
+#ifndef PARSER_BROKEN_FIXED
+
+#define JASSERT(cond) do {} while(0)
+
+#else
+
+#define JASSERT(cond) do { \
+               if (!(cond)) { \
+                       mc_error("cjson assert failure %s:%d : cond \"" __STRING(cond) "failed\n", __FILE__, __LINE__); \
+                       *(int *)0 = 1;\
+                       abort(); \
+               }\
+       } while(0)
+
+#endif
+
+#define MC_ABORT(x, ...) mc_abort(x, ##__VA_ARGS__)
+#define MC_ERROR(x, ...) mc_error(x, ##__VA_ARGS__)
+
 #ifdef MC_MAINTAINER_MODE
 #define MC_SET_DEBUG(x) mc_set_debug(x)
 #define MC_GET_DEBUG() mc_get_debug()
 #define MC_SET_SYSLOG(x) mc_set_syslog(x)
-#define MC_ABORT(x, ...) mc_abort(x, ##__VA_ARGS__)
 #define MC_DEBUG(x, ...) mc_debug(x, ##__VA_ARGS__)
-#define MC_ERROR(x, ...) mc_error(x, ##__VA_ARGS__)
 #define MC_INFO(x, ...) mc_info(x, ##__VA_ARGS__)
 #else
 #define MC_SET_DEBUG(x) if (0) mc_set_debug(x)
 #define MC_GET_DEBUG() (0)
 #define MC_SET_SYSLOG(x) if (0) mc_set_syslog(x)
-#define MC_ABORT(x, ...) if (0) mc_abort(x, ##__VA_ARGS__)
 #define MC_DEBUG(x, ...) if (0) mc_debug(x, ##__VA_ARGS__)
-#define MC_ERROR(x, ...) if (0) mc_error(x, ##__VA_ARGS__)
 #define MC_INFO(x, ...) if (0) mc_info(x, ##__VA_ARGS__)
 #endif
 
diff --git a/depcomp b/depcomp
index 04701da..df8eea7 100755 (executable)
--- a/depcomp
+++ b/depcomp
@@ -1,9 +1,10 @@
 #! /bin/sh
 # depcomp - compile a program generating dependencies as side-effects
 
-scriptversion=2005-07-09.11
+scriptversion=2009-04-28.21; # UTC
 
-# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
+# 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
@@ -16,9 +17,7 @@ scriptversion=2005-07-09.11
 # 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, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# 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
@@ -86,12 +85,34 @@ if test "$depmode" = dashXmstdout; then
    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.
-  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
+## 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
@@ -178,14 +199,14 @@ sgi)
 ' < "$tmpdepfile" \
     | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
     tr '
-' ' ' >> $depfile
-    echo >> $depfile
+' ' ' >> "$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
+   >> "$depfile"
   else
     # The sourcefile does not contain any dependencies, so just
     # store a dummy comment line, to avoid errors with the Makefile
@@ -201,34 +222,39 @@ aix)
   # 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.
-  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
-  tmpdepfile="$stripped.u"
+  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 -f "$tmpdepfile"; then :
-  else
-    stripped=`echo "$stripped" | sed 's,^.*/,,'`
-    tmpdepfile="$stripped.u"
-  fi
-
   if test $stat -eq 0; then :
   else
-    rm -f "$tmpdepfile"
+    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
-    outname="$stripped.o"
     # 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,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
-    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
+    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
@@ -276,6 +302,51 @@ icc)
   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'.
@@ -288,13 +359,13 @@ tru64)
 
    if test "$libtool" = yes; then
       # With Tru64 cc, shared objects can also be used to make a
-      # static library.  This mecanism is used in libtool 1.4 series to
+      # 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 in $dir.libs/$base.o.d and
+      # 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
@@ -345,7 +416,7 @@ dashmstdout)
 
   # Remove the call to Libtool.
   if test "$libtool" = yes; then
-    while test $1 != '--mode=compile'; do
+    while test "X$1" != 'X--mode=compile'; do
       shift
     done
     shift
@@ -396,32 +467,39 @@ makedepend)
   "$@" || exit $?
   # Remove any Libtool call
   if test "$libtool" = yes; then
-    while test $1 != '--mode=compile'; do
+    while test "X$1" != 'X--mode=compile'; do
       shift
     done
     shift
   fi
   # X makedepend
   shift
-  cleared=no
-  for arg in "$@"; do
+  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/^.*\././'`"
+  obj_suffix=`echo "$object" | sed 's/^.*\././'`
   touch "$tmpdepfile"
   ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
   rm -f "$depfile"
@@ -441,7 +519,7 @@ cpp)
 
   # Remove the call to Libtool.
   if test "$libtool" = yes; then
-    while test $1 != '--mode=compile'; do
+    while test "X$1" != 'X--mode=compile'; do
       shift
     done
     shift
@@ -479,13 +557,27 @@ cpp)
 
 msvisualcpp)
   # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout, regardless of -o,
-  # because we must use -o when running libtool.
+  # 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
@@ -498,16 +590,23 @@ msvisualcpp)
        ;;
     esac
   done
-  "$@" -E |
-  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
+  "$@" -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"
-  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::   \1 \\:p' >> "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::     \1 \\:p' >> "$depfile"
   echo "       " >> "$depfile"
-  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$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 "$@"
   ;;
@@ -526,5 +625,6 @@ exit 0
 # eval: (add-hook 'write-file-hooks 'time-stamp)
 # time-stamp-start: "scriptversion="
 # time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
 # End:
index 00c285f..4fc50f0 100644 (file)
@@ -1,14 +1,18 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>json-c: Data Structures</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
 <div class="navigation" id="top">
   <div class="tabs">
     <ul>
       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
       <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
       <li><a href="files.html"><span>Files</span></a></li>
     </ul>
 <div class="contents">
 <h1>Data Structures</h1>Here are the data structures with brief descriptions:<table>
   <tr><td class="indexkey"><a class="el" href="structarray__list.html">array_list</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="unionjson__object_1_1data.html">json_object::data</a></td><td class="indexvalue"></td></tr>
   <tr><td class="indexkey"><a class="el" href="structjson__object.html">json_object</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="unionjson__object_1_1data.html">json_object::json_object::data</a></td><td class="indexvalue"></td></tr>
   <tr><td class="indexkey"><a class="el" href="structjson__object__iter.html">json_object_iter</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="structjson__object__iterator.html">json_object_iterator</a></td><td class="indexvalue"></td></tr>
   <tr><td class="indexkey"><a class="el" href="structjson__tokener.html">json_tokener</a></td><td class="indexvalue"></td></tr>
   <tr><td class="indexkey"><a class="el" href="structjson__tokener__srec.html">json_tokener_srec</a></td><td class="indexvalue"></td></tr>
   <tr><td class="indexkey"><a class="el" href="structlh__entry.html">lh_entry</a></td><td class="indexvalue"></td></tr>
@@ -33,8 +38,8 @@
   <tr><td class="indexkey"><a class="el" href="structprintbuf.html">printbuf</a></td><td class="indexvalue"></td></tr>
 </table>
 </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by&nbsp;
 <a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>
 </html>
index 8d936fa..7c00cd0 100644 (file)
@@ -1,14 +1,18 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>json-c: arraylist.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
 <div class="navigation" id="top">
   <div class="tabs">
     <ul>
       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
       <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
       <li class="current"><a href="files.html"><span>Files</span></a></li>
     </ul>
 </div>
 <div class="contents">
 <h1>arraylist.h File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarray__list.html">array_list</a></td></tr>
-
-<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="arraylist_8h.html#cd30d910b398421574eb1f59e78617f5">ARRAY_LIST_DEFAULT_SIZE</a>&nbsp;&nbsp;&nbsp;32</td></tr>
-
-<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="arraylist_8h.html#ad83e4ed3c8ea274e6f18459276d774b">array_list_free_fn</a> )(void *data)</td></tr>
-
-<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structarray__list.html">array_list</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="arraylist_8h.html#0d4bfac055dfd98e17296142abf4d894">array_list_new</a> (<a class="el" href="arraylist_8h.html#ad83e4ed3c8ea274e6f18459276d774b">array_list_free_fn</a> *free_fn)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="arraylist_8h.html#cd00fb70f7ca82f23b48b812c3498f67">array_list_free</a> (struct <a class="el" href="structarray__list.html">array_list</a> *al)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="arraylist_8h.html#a16207e545b6c1265299abcfa418dc2b">array_list_get_idx</a> (struct <a class="el" href="structarray__list.html">array_list</a> *al, int i)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="arraylist_8h.html#21b8e4c59e52fbc5a9a5a098e3f96e76">array_list_put_idx</a> (struct <a class="el" href="structarray__list.html">array_list</a> *al, int i, void *data)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="arraylist_8h.html#6e995608aa464244ff3184fb43574dc8">array_list_add</a> (struct <a class="el" href="structarray__list.html">array_list</a> *al, void *data)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="arraylist_8h.html#a8393b4aa3dc447660371530439ab70f">array_list_length</a> (struct <a class="el" href="structarray__list.html">array_list</a> *al)</td></tr>
-
+<tr><td colspan="2"><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarray__list.html">array_list</a></td></tr>
+<tr><td colspan="2"><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="arraylist_8h.html#acd30d910b398421574eb1f59e78617f5">ARRAY_LIST_DEFAULT_SIZE</a>&nbsp;&nbsp;&nbsp;32</td></tr>
+<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef void(&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="arraylist_8h.html#aad83e4ed3c8ea274e6f18459276d774b">array_list_free_fn</a> )(void *data)</td></tr>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structarray__list.html">array_list</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="arraylist_8h.html#a0d4bfac055dfd98e17296142abf4d894">array_list_new</a> (<a class="el" href="arraylist_8h.html#aad83e4ed3c8ea274e6f18459276d774b">array_list_free_fn</a> *free_fn)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="arraylist_8h.html#acd00fb70f7ca82f23b48b812c3498f67">array_list_free</a> (struct <a class="el" href="structarray__list.html">array_list</a> *al)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="arraylist_8h.html#aa16207e545b6c1265299abcfa418dc2b">array_list_get_idx</a> (struct <a class="el" href="structarray__list.html">array_list</a> *al, int i)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="arraylist_8h.html#a21b8e4c59e52fbc5a9a5a098e3f96e76">array_list_put_idx</a> (struct <a class="el" href="structarray__list.html">array_list</a> *al, int i, void *data)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="arraylist_8h.html#a6e995608aa464244ff3184fb43574dc8">array_list_add</a> (struct <a class="el" href="structarray__list.html">array_list</a> *al, void *data)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="arraylist_8h.html#aa8393b4aa3dc447660371530439ab70f">array_list_length</a> (struct <a class="el" href="structarray__list.html">array_list</a> *al)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="arraylist_8h.html#afb67cc8e2e5c9be41c3e644536079169">array_list_sort</a> (struct <a class="el" href="structarray__list.html">array_list</a> *arr, int(*compar)(const void *, const void *))</td></tr>
 </table>
-<hr><h2>Define Documentation</h2>
-<a class="anchor" name="cd30d910b398421574eb1f59e78617f5"></a><!-- doxytag: member="arraylist.h::ARRAY_LIST_DEFAULT_SIZE" ref="cd30d910b398421574eb1f59e78617f5" args="" -->
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="acd30d910b398421574eb1f59e78617f5"></a><!-- doxytag: member="arraylist.h::ARRAY_LIST_DEFAULT_SIZE" ref="acd30d910b398421574eb1f59e78617f5" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define ARRAY_LIST_DEFAULT_SIZE&nbsp;&nbsp;&nbsp;32          </td>
+          <td class="memname">#define ARRAY_LIST_DEFAULT_SIZE&nbsp;&nbsp;&nbsp;32</td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="ad83e4ed3c8ea274e6f18459276d774b"></a><!-- doxytag: member="arraylist.h::array_list_free_fn" ref="ad83e4ed3c8ea274e6f18459276d774b" args=")(void *data)" -->
+</div>
+<hr/><h2>Typedef Documentation</h2>
+<a class="anchor" id="aad83e4ed3c8ea274e6f18459276d774b"></a><!-- doxytag: member="arraylist.h::array_list_free_fn" ref="aad83e4ed3c8ea274e6f18459276d774b" args=")(void *data)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">typedef void( <a class="el" href="arraylist_8h.html#ad83e4ed3c8ea274e6f18459276d774b">array_list_free_fn</a>)(void *data)          </td>
+          <td class="memname">typedef void( <a class="el" href="arraylist_8h.html#aad83e4ed3c8ea274e6f18459276d774b">array_list_free_fn</a>)(void *data)</td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="6e995608aa464244ff3184fb43574dc8"></a><!-- doxytag: member="arraylist.h::array_list_add" ref="6e995608aa464244ff3184fb43574dc8" args="(struct array_list *al, void *data)" -->
+</div>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="a6e995608aa464244ff3184fb43574dc8"></a><!-- doxytag: member="arraylist.h::array_list_add" ref="a6e995608aa464244ff3184fb43574dc8" args="(struct array_list *al, void *data)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int array_list_add           </td>
+          <td class="memname">int array_list_add </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structarray__list.html">array_list</a> *&nbsp;</td>
           <td class="paramname"> <em>al</em>, </td>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="cd00fb70f7ca82f23b48b812c3498f67"></a><!-- doxytag: member="arraylist.h::array_list_free" ref="cd00fb70f7ca82f23b48b812c3498f67" args="(struct array_list *al)" -->
+</div>
+<a class="anchor" id="acd00fb70f7ca82f23b48b812c3498f67"></a><!-- doxytag: member="arraylist.h::array_list_free" ref="acd00fb70f7ca82f23b48b812c3498f67" args="(struct array_list *al)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void array_list_free           </td>
+          <td class="memname">void array_list_free </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structarray__list.html">array_list</a> *&nbsp;</td>
-          <td class="paramname"> <em>al</em>          </td>
+          <td class="paramname"> <em>al</em></td>
           <td>&nbsp;)&nbsp;</td>
           <td></td>
         </tr>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="a16207e545b6c1265299abcfa418dc2b"></a><!-- doxytag: member="arraylist.h::array_list_get_idx" ref="a16207e545b6c1265299abcfa418dc2b" args="(struct array_list *al, int i)" -->
+</div>
+<a class="anchor" id="aa16207e545b6c1265299abcfa418dc2b"></a><!-- doxytag: member="arraylist.h::array_list_get_idx" ref="aa16207e545b6c1265299abcfa418dc2b" args="(struct array_list *al, int i)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void* array_list_get_idx           </td>
+          <td class="memname">void* array_list_get_idx </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structarray__list.html">array_list</a> *&nbsp;</td>
           <td class="paramname"> <em>al</em>, </td>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="a8393b4aa3dc447660371530439ab70f"></a><!-- doxytag: member="arraylist.h::array_list_length" ref="a8393b4aa3dc447660371530439ab70f" args="(struct array_list *al)" -->
+</div>
+<a class="anchor" id="aa8393b4aa3dc447660371530439ab70f"></a><!-- doxytag: member="arraylist.h::array_list_length" ref="aa8393b4aa3dc447660371530439ab70f" args="(struct array_list *al)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int array_list_length           </td>
+          <td class="memname">int array_list_length </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structarray__list.html">array_list</a> *&nbsp;</td>
-          <td class="paramname"> <em>al</em>          </td>
+          <td class="paramname"> <em>al</em></td>
           <td>&nbsp;)&nbsp;</td>
           <td></td>
         </tr>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="0d4bfac055dfd98e17296142abf4d894"></a><!-- doxytag: member="arraylist.h::array_list_new" ref="0d4bfac055dfd98e17296142abf4d894" args="(array_list_free_fn *free_fn)" -->
+</div>
+<a class="anchor" id="a0d4bfac055dfd98e17296142abf4d894"></a><!-- doxytag: member="arraylist.h::array_list_new" ref="a0d4bfac055dfd98e17296142abf4d894" args="(array_list_free_fn *free_fn)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structarray__list.html">array_list</a>* array_list_new           </td>
+          <td class="memname">struct <a class="el" href="structarray__list.html">array_list</a>* array_list_new </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="arraylist_8h.html#ad83e4ed3c8ea274e6f18459276d774b">array_list_free_fn</a> *&nbsp;</td>
-          <td class="paramname"> <em>free_fn</em>          </td>
+          <td class="paramtype"><a class="el" href="arraylist_8h.html#aad83e4ed3c8ea274e6f18459276d774b">array_list_free_fn</a> *&nbsp;</td>
+          <td class="paramname"> <em>free_fn</em></td>
           <td>&nbsp;)&nbsp;</td>
           <td><code> [read]</code></td>
         </tr>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="21b8e4c59e52fbc5a9a5a098e3f96e76"></a><!-- doxytag: member="arraylist.h::array_list_put_idx" ref="21b8e4c59e52fbc5a9a5a098e3f96e76" args="(struct array_list *al, int i, void *data)" -->
+</div>
+<a class="anchor" id="a21b8e4c59e52fbc5a9a5a098e3f96e76"></a><!-- doxytag: member="arraylist.h::array_list_put_idx" ref="a21b8e4c59e52fbc5a9a5a098e3f96e76" args="(struct array_list *al, int i, void *data)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int array_list_put_idx           </td>
+          <td class="memname">int array_list_put_idx </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structarray__list.html">array_list</a> *&nbsp;</td>
           <td class="paramname"> <em>al</em>, </td>
 </div>
 <div class="memdoc">
 
-<p>
+</div>
+</div>
+<a class="anchor" id="afb67cc8e2e5c9be41c3e644536079169"></a><!-- doxytag: member="arraylist.h::array_list_sort" ref="afb67cc8e2e5c9be41c3e644536079169" args="(struct array_list *arr, int(*compar)(const void *, const void *))" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void array_list_sort </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structarray__list.html">array_list</a> *&nbsp;</td>
+          <td class="paramname"> <em>arr</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int(*)(const void *, const void *)&nbsp;</td>
+          <td class="paramname"> <em>compar</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
 
 </div>
-</div><p>
 </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:46 2012 for json-c by&nbsp;
 <a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>
 </html>
index 9ac3a91..aa44692 100644 (file)
@@ -1,14 +1,18 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>json-c: bits.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
 <div class="navigation" id="top">
   <div class="tabs">
     <ul>
       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
       <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
       <li class="current"><a href="files.html"><span>Files</span></a></li>
     </ul>
 </div>
 <div class="contents">
 <h1>bits.h File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="bits_8h.html#3dde282dc23d0eaa3c4840df8dc262d4">json_min</a>(a, b)&nbsp;&nbsp;&nbsp;((a) &lt; (b) ? (a) : (b))</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="bits_8h.html#57d63d199d4b9ea40359253618951300">json_max</a>(a, b)&nbsp;&nbsp;&nbsp;((a) &gt; (b) ? (a) : (b))</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="bits_8h.html#1cf38b22d3a118ad48d9282c32c048aa">hexdigit</a>(x)&nbsp;&nbsp;&nbsp;(((x) &lt;= '9') ? (x) - '0' : ((x) &amp; 7) + 9)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="bits_8h.html#863a898e607f8c2ff87b7052e326740f">error_ptr</a>(error)&nbsp;&nbsp;&nbsp;((void*)error)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="bits_8h.html#4a887e5fb7cde221bcab9c6f39d93fc1">is_error</a>(ptr)&nbsp;&nbsp;&nbsp;((unsigned long)ptr &gt; (unsigned long)-4000L)</td></tr>
-
+<tr><td colspan="2"><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="bits_8h.html#a3dde282dc23d0eaa3c4840df8dc262d4">json_min</a>(a, b)&nbsp;&nbsp;&nbsp;((a) &lt; (b) ? (a) : (b))</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="bits_8h.html#a57d63d199d4b9ea40359253618951300">json_max</a>(a, b)&nbsp;&nbsp;&nbsp;((a) &gt; (b) ? (a) : (b))</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="bits_8h.html#a1cf38b22d3a118ad48d9282c32c048aa">hexdigit</a>(x)&nbsp;&nbsp;&nbsp;(((x) &lt;= '9') ? (x) - '0' : ((x) &amp; 7) + 9)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="bits_8h.html#a863a898e607f8c2ff87b7052e326740f">error_ptr</a>(error)&nbsp;&nbsp;&nbsp;((void*)error)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="bits_8h.html#a45afe86501cd57ee2beeef9d67a4d40c">error_description</a>(error)&nbsp;&nbsp;&nbsp;(<a class="el" href="json__tokener_8h.html#a6ede8ee7a4ec1fed68d10ea77294c966">json_tokener_errors</a>[error])</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="bits_8h.html#a4a887e5fb7cde221bcab9c6f39d93fc1">is_error</a>(ptr)&nbsp;&nbsp;&nbsp;(ptr == NULL)</td></tr>
 </table>
-<hr><h2>Define Documentation</h2>
-<a class="anchor" name="863a898e607f8c2ff87b7052e326740f"></a><!-- doxytag: member="bits.h::error_ptr" ref="863a898e607f8c2ff87b7052e326740f" args="(error)" -->
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="a45afe86501cd57ee2beeef9d67a4d40c"></a><!-- doxytag: member="bits.h::error_description" ref="a45afe86501cd57ee2beeef9d67a4d40c" args="(error)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define error_ptr          </td>
+          <td class="memname">#define error_description</td>
           <td>(</td>
           <td class="paramtype">error&nbsp;</td>
-          <td class="paramname">          </td>
+          <td class="paramname"></td>
           <td>&nbsp;)&nbsp;</td>
-          <td>&nbsp;&nbsp;&nbsp;((void*)error)</td>
+          <td>&nbsp;&nbsp;&nbsp;(<a class="el" href="json__tokener_8h.html#a6ede8ee7a4ec1fed68d10ea77294c966">json_tokener_errors</a>[error])</td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
+</div>
+</div>
+<a class="anchor" id="a863a898e607f8c2ff87b7052e326740f"></a><!-- doxytag: member="bits.h::error_ptr" ref="a863a898e607f8c2ff87b7052e326740f" args="(error)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define error_ptr</td>
+          <td>(</td>
+          <td class="paramtype">error&nbsp;</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td>&nbsp;&nbsp;&nbsp;((void*)error)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
 
 </div>
-</div><p>
-<a class="anchor" name="1cf38b22d3a118ad48d9282c32c048aa"></a><!-- doxytag: member="bits.h::hexdigit" ref="1cf38b22d3a118ad48d9282c32c048aa" args="(x)" -->
+</div>
+<a class="anchor" id="a1cf38b22d3a118ad48d9282c32c048aa"></a><!-- doxytag: member="bits.h::hexdigit" ref="a1cf38b22d3a118ad48d9282c32c048aa" args="(x)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define hexdigit          </td>
+          <td class="memname">#define hexdigit</td>
           <td>(</td>
           <td class="paramtype">x&nbsp;</td>
-          <td class="paramname">          </td>
+          <td class="paramname"></td>
           <td>&nbsp;)&nbsp;</td>
           <td>&nbsp;&nbsp;&nbsp;(((x) &lt;= '9') ? (x) - '0' : ((x) &amp; 7) + 9)</td>
         </tr>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="4a887e5fb7cde221bcab9c6f39d93fc1"></a><!-- doxytag: member="bits.h::is_error" ref="4a887e5fb7cde221bcab9c6f39d93fc1" args="(ptr)" -->
+</div>
+<a class="anchor" id="a4a887e5fb7cde221bcab9c6f39d93fc1"></a><!-- doxytag: member="bits.h::is_error" ref="a4a887e5fb7cde221bcab9c6f39d93fc1" args="(ptr)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define is_error          </td>
+          <td class="memname">#define is_error</td>
           <td>(</td>
           <td class="paramtype">ptr&nbsp;</td>
-          <td class="paramname">          </td>
+          <td class="paramname"></td>
           <td>&nbsp;)&nbsp;</td>
-          <td>&nbsp;&nbsp;&nbsp;((unsigned long)ptr &gt; (unsigned long)-4000L)</td>
+          <td>&nbsp;&nbsp;&nbsp;(ptr == NULL)</td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="57d63d199d4b9ea40359253618951300"></a><!-- doxytag: member="bits.h::json_max" ref="57d63d199d4b9ea40359253618951300" args="(a, b)" -->
+</div>
+<a class="anchor" id="a57d63d199d4b9ea40359253618951300"></a><!-- doxytag: member="bits.h::json_max" ref="a57d63d199d4b9ea40359253618951300" args="(a, b)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define json_max          </td>
+          <td class="memname">#define json_max</td>
           <td>(</td>
-          <td class="paramtype">a,         <tr>
+          <td class="paramtype">a, </td>
+        </tr>
+        <tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype">b&nbsp;</td>
-          <td class="paramname">          </td>
+          <td class="paramname"></td>
           <td>&nbsp;)&nbsp;</td>
           <td>&nbsp;&nbsp;&nbsp;((a) &gt; (b) ? (a) : (b))</td>
         </tr>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="3dde282dc23d0eaa3c4840df8dc262d4"></a><!-- doxytag: member="bits.h::json_min" ref="3dde282dc23d0eaa3c4840df8dc262d4" args="(a, b)" -->
+</div>
+<a class="anchor" id="a3dde282dc23d0eaa3c4840df8dc262d4"></a><!-- doxytag: member="bits.h::json_min" ref="a3dde282dc23d0eaa3c4840df8dc262d4" args="(a, b)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define json_min          </td>
+          <td class="memname">#define json_min</td>
           <td>(</td>
-          <td class="paramtype">a,         <tr>
+          <td class="paramtype">a, </td>
+        </tr>
+        <tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype">b&nbsp;</td>
-          <td class="paramname">          </td>
+          <td class="paramname"></td>
           <td>&nbsp;)&nbsp;</td>
           <td>&nbsp;&nbsp;&nbsp;((a) &lt; (b) ? (a) : (b))</td>
         </tr>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
 </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:46 2012 for json-c by&nbsp;
 <a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>
 </html>
index 882b763..d3824e4 100644 (file)
@@ -1,14 +1,18 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>json-c: Alphabetical List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
 <div class="navigation" id="top">
   <div class="tabs">
     <ul>
       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
       <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
       <li><a href="files.html"><span>Files</span></a></li>
     </ul>
   </div>
 </div>
 <div class="contents">
-<h1>Data Structure Index</h1><p><div class="qindex"><a class="qindex" href="#letter_A">A</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_J">J</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_L">L</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_P">P</a></div><p>
+<h1>Data Structure Index</h1><div class="qindex"><a class="qindex" href="#letter_A">A</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_D">D</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_J">J</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_L">L</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_P">P</a></div>
 <table align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
 <tr><td><a name="letter_A"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;A&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="structjson__object.html">json_object</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structjson__tokener.html">json_tokener</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structlh__entry.html">lh_entry</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_P"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;P&nbsp;&nbsp;</div></td></tr></table>
-</td></tr><tr><td><a class="el" href="structarray__list.html">array_list</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="unionjson__object_1_1data.html">json_object::data</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structjson__tokener__srec.html">json_tokener_srec</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structlh__table.html">lh_table</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structprintbuf.html">printbuf</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a name="letter_J"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;J&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="structjson__object__iter.html">json_object_iter</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_L"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;L&nbsp;&nbsp;</div></td></tr></table>
-</td></tr></table><p><div class="qindex"><a class="qindex" href="#letter_A">A</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_J">J</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_L">L</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_P">P</a></div><p>
+</td><td><a class="el" href="unionjson__object_1_1data.html">json_object::data</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structjson__object__iter.html">json_object_iter</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structjson__tokener__srec.html">json_tokener_srec</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structlh__table.html">lh_table</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structarray__list.html">array_list</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_J"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;J&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="structjson__object__iterator.html">json_object_iterator</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_L"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;L&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a name="letter_P"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;P&nbsp;&nbsp;</div></td></tr></table>
+</td></tr><tr><td><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;D&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="structjson__object.html">json_object</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structjson__tokener.html">json_tokener</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structlh__entry.html">lh_entry</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structprintbuf.html">printbuf</a>&nbsp;&nbsp;&nbsp;</td></tr></table><div class="qindex"><a class="qindex" href="#letter_A">A</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_D">D</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_J">J</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_L">L</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_P">P</a></div>
 </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by&nbsp;
 <a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>
 </html>
diff --git a/doc/html/config_8h.html b/doc/html/config_8h.html
deleted file mode 100644 (file)
index 72da51d..0000000
+++ /dev/null
@@ -1,612 +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-c: config.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-<h1>config.h File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8h.html#0ee1617ff2f6885ef384a3dd46f9b9d7">HAVE_DLFCN_H</a>&nbsp;&nbsp;&nbsp;1</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8h.html#765d75020849aa0a9b6becd9a5b7a193">HAVE_FCNTL_H</a>&nbsp;&nbsp;&nbsp;1</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8h.html#b90a030ff2790ebdc176660a6dd2a478">HAVE_INTTYPES_H</a>&nbsp;&nbsp;&nbsp;1</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8h.html#c70f0930238c8d095d7cc2ee8b522c77">HAVE_LIMITS_H</a>&nbsp;&nbsp;&nbsp;1</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8h.html#14503280ca0cb757db915eea09282bfc">HAVE_MALLOC</a>&nbsp;&nbsp;&nbsp;1</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8h.html#e93a78f9d076138897af441c9f86f285">HAVE_MEMORY_H</a>&nbsp;&nbsp;&nbsp;1</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8h.html#f774525bc701ed09c9ab1bc93827bea0">HAVE_OPEN</a>&nbsp;&nbsp;&nbsp;1</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8h.html#0302094a0ee567c610a36c63104ebda5">HAVE_REALLOC</a>&nbsp;&nbsp;&nbsp;1</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8h.html#3a3f8c7f8da8cac799fb620a2dbf2b15">HAVE_STDARG_H</a>&nbsp;&nbsp;&nbsp;1</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8h.html#b6cd6d1c63c1e26ea2d4537b77148354">HAVE_STDINT_H</a>&nbsp;&nbsp;&nbsp;1</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8h.html#9e0e434ec1a6ddbd97db12b5a32905e0">HAVE_STDLIB_H</a>&nbsp;&nbsp;&nbsp;1</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8h.html#992653625041edef146772df96f7bca9">HAVE_STRERROR</a>&nbsp;&nbsp;&nbsp;1</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8h.html#405d10d46190bcb0320524c54eafc850">HAVE_STRINGS_H</a>&nbsp;&nbsp;&nbsp;1</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8h.html#d4c234dd1625255dc626a15886306e7d">HAVE_STRING_H</a>&nbsp;&nbsp;&nbsp;1</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8h.html#6b9c27181277250e218629da3b335a16">HAVE_STRNCASECMP</a>&nbsp;&nbsp;&nbsp;1</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8h.html#3a51807b746f8e1a067ebdf86faf9a57">HAVE_STRNDUP</a>&nbsp;&nbsp;&nbsp;1</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8h.html#695d4e005378df4a1f286cb3d0f4b333">HAVE_SYSLOG_H</a>&nbsp;&nbsp;&nbsp;1</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8h.html#05aa9fc25e1231d8eb347390558e4e22">HAVE_SYS_PARAM_H</a>&nbsp;&nbsp;&nbsp;1</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8h.html#ce156430ba007d19b4348a950d0c692b">HAVE_SYS_STAT_H</a>&nbsp;&nbsp;&nbsp;1</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8h.html#69dc70bea5d1f8bd2be9740e974fa666">HAVE_SYS_TYPES_H</a>&nbsp;&nbsp;&nbsp;1</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8h.html#219b06937831d0da94d801ab13987639">HAVE_UNISTD_H</a>&nbsp;&nbsp;&nbsp;1</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8h.html#4fe6a935417fff94aee592b4e7823041">HAVE_VASPRINTF</a>&nbsp;&nbsp;&nbsp;1</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8h.html#11e8ffa0e0ee1d52812402f2eac05fa7">HAVE_VPRINTF</a>&nbsp;&nbsp;&nbsp;1</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8h.html#4ac6a60cb19181437136206238f16497">HAVE_VSNPRINTF</a>&nbsp;&nbsp;&nbsp;1</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8h.html#17b116b63c7e0c28953090da138f10fa">HAVE_VSYSLOG</a>&nbsp;&nbsp;&nbsp;1</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8h.html#c2d5925d76379847dd9fc4747b061659">LT_OBJDIR</a>&nbsp;&nbsp;&nbsp;&quot;.libs/&quot;</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8h.html#ca8570fb706c81df371b7f9bc454ae03">PACKAGE</a>&nbsp;&nbsp;&nbsp;&quot;json-c&quot;</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8h.html#1d1d2d7f8d2f95b376954d649ab03233">PACKAGE_BUGREPORT</a>&nbsp;&nbsp;&nbsp;&quot;michael@metaparadigm.com&quot;</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8h.html#1c0439e4355794c09b64274849eb0279">PACKAGE_NAME</a>&nbsp;&nbsp;&nbsp;&quot;json-c&quot;</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8h.html#c73e6f903c16eca7710f92e36e1c6fbf">PACKAGE_STRING</a>&nbsp;&nbsp;&nbsp;&quot;json-c 0.9&quot;</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8h.html#f415af6bfede0e8d5453708afe68651c">PACKAGE_TARNAME</a>&nbsp;&nbsp;&nbsp;&quot;json-c&quot;</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8h.html#a326a05d5e30f9e9a4bb0b4469d5d0c0">PACKAGE_VERSION</a>&nbsp;&nbsp;&nbsp;&quot;0.9&quot;</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8h.html#550e5c272cc3cf3814651721167dcd23">STDC_HEADERS</a>&nbsp;&nbsp;&nbsp;1</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8h.html#1c6d5de492ac61ad29aec7aa9a436bbf">VERSION</a>&nbsp;&nbsp;&nbsp;&quot;0.9&quot;</td></tr>
-
-</table>
-<hr><h2>Define Documentation</h2>
-<a class="anchor" name="0ee1617ff2f6885ef384a3dd46f9b9d7"></a><!-- doxytag: member="config.h::HAVE_DLFCN_H" ref="0ee1617ff2f6885ef384a3dd46f9b9d7" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define HAVE_DLFCN_H&nbsp;&nbsp;&nbsp;1          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="765d75020849aa0a9b6becd9a5b7a193"></a><!-- doxytag: member="config.h::HAVE_FCNTL_H" ref="765d75020849aa0a9b6becd9a5b7a193" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define HAVE_FCNTL_H&nbsp;&nbsp;&nbsp;1          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="b90a030ff2790ebdc176660a6dd2a478"></a><!-- doxytag: member="config.h::HAVE_INTTYPES_H" ref="b90a030ff2790ebdc176660a6dd2a478" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define HAVE_INTTYPES_H&nbsp;&nbsp;&nbsp;1          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="c70f0930238c8d095d7cc2ee8b522c77"></a><!-- doxytag: member="config.h::HAVE_LIMITS_H" ref="c70f0930238c8d095d7cc2ee8b522c77" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define HAVE_LIMITS_H&nbsp;&nbsp;&nbsp;1          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="14503280ca0cb757db915eea09282bfc"></a><!-- doxytag: member="config.h::HAVE_MALLOC" ref="14503280ca0cb757db915eea09282bfc" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define HAVE_MALLOC&nbsp;&nbsp;&nbsp;1          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="e93a78f9d076138897af441c9f86f285"></a><!-- doxytag: member="config.h::HAVE_MEMORY_H" ref="e93a78f9d076138897af441c9f86f285" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define HAVE_MEMORY_H&nbsp;&nbsp;&nbsp;1          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="f774525bc701ed09c9ab1bc93827bea0"></a><!-- doxytag: member="config.h::HAVE_OPEN" ref="f774525bc701ed09c9ab1bc93827bea0" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define HAVE_OPEN&nbsp;&nbsp;&nbsp;1          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="0302094a0ee567c610a36c63104ebda5"></a><!-- doxytag: member="config.h::HAVE_REALLOC" ref="0302094a0ee567c610a36c63104ebda5" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define HAVE_REALLOC&nbsp;&nbsp;&nbsp;1          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="3a3f8c7f8da8cac799fb620a2dbf2b15"></a><!-- doxytag: member="config.h::HAVE_STDARG_H" ref="3a3f8c7f8da8cac799fb620a2dbf2b15" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define HAVE_STDARG_H&nbsp;&nbsp;&nbsp;1          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="b6cd6d1c63c1e26ea2d4537b77148354"></a><!-- doxytag: member="config.h::HAVE_STDINT_H" ref="b6cd6d1c63c1e26ea2d4537b77148354" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define HAVE_STDINT_H&nbsp;&nbsp;&nbsp;1          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="9e0e434ec1a6ddbd97db12b5a32905e0"></a><!-- doxytag: member="config.h::HAVE_STDLIB_H" ref="9e0e434ec1a6ddbd97db12b5a32905e0" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define HAVE_STDLIB_H&nbsp;&nbsp;&nbsp;1          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="992653625041edef146772df96f7bca9"></a><!-- doxytag: member="config.h::HAVE_STRERROR" ref="992653625041edef146772df96f7bca9" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define HAVE_STRERROR&nbsp;&nbsp;&nbsp;1          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="d4c234dd1625255dc626a15886306e7d"></a><!-- doxytag: member="config.h::HAVE_STRING_H" ref="d4c234dd1625255dc626a15886306e7d" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define HAVE_STRING_H&nbsp;&nbsp;&nbsp;1          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="405d10d46190bcb0320524c54eafc850"></a><!-- doxytag: member="config.h::HAVE_STRINGS_H" ref="405d10d46190bcb0320524c54eafc850" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define HAVE_STRINGS_H&nbsp;&nbsp;&nbsp;1          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="6b9c27181277250e218629da3b335a16"></a><!-- doxytag: member="config.h::HAVE_STRNCASECMP" ref="6b9c27181277250e218629da3b335a16" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define HAVE_STRNCASECMP&nbsp;&nbsp;&nbsp;1          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="3a51807b746f8e1a067ebdf86faf9a57"></a><!-- doxytag: member="config.h::HAVE_STRNDUP" ref="3a51807b746f8e1a067ebdf86faf9a57" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define HAVE_STRNDUP&nbsp;&nbsp;&nbsp;1          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="05aa9fc25e1231d8eb347390558e4e22"></a><!-- doxytag: member="config.h::HAVE_SYS_PARAM_H" ref="05aa9fc25e1231d8eb347390558e4e22" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define HAVE_SYS_PARAM_H&nbsp;&nbsp;&nbsp;1          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="ce156430ba007d19b4348a950d0c692b"></a><!-- doxytag: member="config.h::HAVE_SYS_STAT_H" ref="ce156430ba007d19b4348a950d0c692b" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define HAVE_SYS_STAT_H&nbsp;&nbsp;&nbsp;1          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="69dc70bea5d1f8bd2be9740e974fa666"></a><!-- doxytag: member="config.h::HAVE_SYS_TYPES_H" ref="69dc70bea5d1f8bd2be9740e974fa666" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define HAVE_SYS_TYPES_H&nbsp;&nbsp;&nbsp;1          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="695d4e005378df4a1f286cb3d0f4b333"></a><!-- doxytag: member="config.h::HAVE_SYSLOG_H" ref="695d4e005378df4a1f286cb3d0f4b333" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define HAVE_SYSLOG_H&nbsp;&nbsp;&nbsp;1          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="219b06937831d0da94d801ab13987639"></a><!-- doxytag: member="config.h::HAVE_UNISTD_H" ref="219b06937831d0da94d801ab13987639" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define HAVE_UNISTD_H&nbsp;&nbsp;&nbsp;1          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="4fe6a935417fff94aee592b4e7823041"></a><!-- doxytag: member="config.h::HAVE_VASPRINTF" ref="4fe6a935417fff94aee592b4e7823041" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define HAVE_VASPRINTF&nbsp;&nbsp;&nbsp;1          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="11e8ffa0e0ee1d52812402f2eac05fa7"></a><!-- doxytag: member="config.h::HAVE_VPRINTF" ref="11e8ffa0e0ee1d52812402f2eac05fa7" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define HAVE_VPRINTF&nbsp;&nbsp;&nbsp;1          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="4ac6a60cb19181437136206238f16497"></a><!-- doxytag: member="config.h::HAVE_VSNPRINTF" ref="4ac6a60cb19181437136206238f16497" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define HAVE_VSNPRINTF&nbsp;&nbsp;&nbsp;1          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="17b116b63c7e0c28953090da138f10fa"></a><!-- doxytag: member="config.h::HAVE_VSYSLOG" ref="17b116b63c7e0c28953090da138f10fa" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define HAVE_VSYSLOG&nbsp;&nbsp;&nbsp;1          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="c2d5925d76379847dd9fc4747b061659"></a><!-- doxytag: member="config.h::LT_OBJDIR" ref="c2d5925d76379847dd9fc4747b061659" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define LT_OBJDIR&nbsp;&nbsp;&nbsp;&quot;.libs/&quot;          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="ca8570fb706c81df371b7f9bc454ae03"></a><!-- doxytag: member="config.h::PACKAGE" ref="ca8570fb706c81df371b7f9bc454ae03" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define PACKAGE&nbsp;&nbsp;&nbsp;&quot;json-c&quot;          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="1d1d2d7f8d2f95b376954d649ab03233"></a><!-- doxytag: member="config.h::PACKAGE_BUGREPORT" ref="1d1d2d7f8d2f95b376954d649ab03233" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define PACKAGE_BUGREPORT&nbsp;&nbsp;&nbsp;&quot;michael@metaparadigm.com&quot;          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="1c0439e4355794c09b64274849eb0279"></a><!-- doxytag: member="config.h::PACKAGE_NAME" ref="1c0439e4355794c09b64274849eb0279" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define PACKAGE_NAME&nbsp;&nbsp;&nbsp;&quot;json-c&quot;          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="c73e6f903c16eca7710f92e36e1c6fbf"></a><!-- doxytag: member="config.h::PACKAGE_STRING" ref="c73e6f903c16eca7710f92e36e1c6fbf" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define PACKAGE_STRING&nbsp;&nbsp;&nbsp;&quot;json-c 0.9&quot;          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="f415af6bfede0e8d5453708afe68651c"></a><!-- doxytag: member="config.h::PACKAGE_TARNAME" ref="f415af6bfede0e8d5453708afe68651c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define PACKAGE_TARNAME&nbsp;&nbsp;&nbsp;&quot;json-c&quot;          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="a326a05d5e30f9e9a4bb0b4469d5d0c0"></a><!-- doxytag: member="config.h::PACKAGE_VERSION" ref="a326a05d5e30f9e9a4bb0b4469d5d0c0" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define PACKAGE_VERSION&nbsp;&nbsp;&nbsp;&quot;0.9&quot;          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="550e5c272cc3cf3814651721167dcd23"></a><!-- doxytag: member="config.h::STDC_HEADERS" ref="550e5c272cc3cf3814651721167dcd23" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define STDC_HEADERS&nbsp;&nbsp;&nbsp;1          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="1c6d5de492ac61ad29aec7aa9a436bbf"></a><!-- doxytag: member="config.h::VERSION" ref="1c6d5de492ac61ad29aec7aa9a436bbf" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define VERSION&nbsp;&nbsp;&nbsp;&quot;0.9&quot;          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-
-</div>
-</div><p>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
index f21f0b7..95f8b8c 100644 (file)
@@ -1,14 +1,18 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>json-c: debug.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
 <div class="navigation" id="top">
   <div class="tabs">
     <ul>
       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
       <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
       <li class="current"><a href="files.html"><span>Files</span></a></li>
     </ul>
 </div>
 <div class="contents">
 <h1>debug.h File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="debug_8h.html#50f21a239fa040a10ad4cfdb4278b02b">MC_SET_DEBUG</a>(x)&nbsp;&nbsp;&nbsp;if (0) mc_set_debug(x)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="debug_8h.html#cb272a4b4444b69cd995236f167f90ba">MC_GET_DEBUG</a>()&nbsp;&nbsp;&nbsp;(0)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="debug_8h.html#cf1e895cb5eb7f334cbe51901e6bb918">MC_SET_SYSLOG</a>(x)&nbsp;&nbsp;&nbsp;if (0) mc_set_syslog(x)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="debug_8h.html#25591d3d4754c0c6d1f2b5463fb4977e">MC_ABORT</a>(x,...)&nbsp;&nbsp;&nbsp;if (0) mc_abort(x, ##__VA_ARGS__)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="debug_8h.html#fda355b35d18bf2e6a2a22d5c8eef42c">MC_DEBUG</a>(x,...)&nbsp;&nbsp;&nbsp;if (0) mc_debug(x, ##__VA_ARGS__)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="debug_8h.html#11ba39cecbe449af5b86fa2f78e9da9d">MC_ERROR</a>(x,...)&nbsp;&nbsp;&nbsp;if (0) mc_error(x, ##__VA_ARGS__)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="debug_8h.html#5ef640ce1e9e61c5f6632aefbbfa0041">MC_INFO</a>(x,...)&nbsp;&nbsp;&nbsp;if (0) mc_info(x, ##__VA_ARGS__)</td></tr>
-
-<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="debug_8h.html#f65a73617b71476020a005b20bf02726">mc_set_debug</a> (int debug)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="debug_8h.html#3b3ab3ae8b438384fb109a2e38646b6e">mc_get_debug</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="debug_8h.html#adb888da410116384e75a00db30da705">mc_set_syslog</a> (int syslog)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="debug_8h.html#44913dbc4f1abf6614d42b22b941c092">mc_abort</a> (const char *msg,...)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="debug_8h.html#600cf4cbbe19c0c15ca3710210e35aba">mc_debug</a> (const char *msg,...)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="debug_8h.html#bf22ea3a331c7ff21c23da91a07c7cb2">mc_error</a> (const char *msg,...)</td></tr>
+<tr><td colspan="2"><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="debug_8h.html#a375c4dc9f0fb338999de81aab826f9d6">__STRING</a>(x)&nbsp;&nbsp;&nbsp;#x</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="debug_8h.html#a8ca29550d5b1b73948f4a7bce53f2385">JASSERT</a>(cond)&nbsp;&nbsp;&nbsp;do {} while(0)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="debug_8h.html#a25591d3d4754c0c6d1f2b5463fb4977e">MC_ABORT</a>(x,...)&nbsp;&nbsp;&nbsp;mc_abort(x, ##__VA_ARGS__)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="debug_8h.html#a11ba39cecbe449af5b86fa2f78e9da9d">MC_ERROR</a>(x,...)&nbsp;&nbsp;&nbsp;mc_error(x, ##__VA_ARGS__)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="debug_8h.html#a50f21a239fa040a10ad4cfdb4278b02b">MC_SET_DEBUG</a>(x)&nbsp;&nbsp;&nbsp;if (0) mc_set_debug(x)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="debug_8h.html#acb272a4b4444b69cd995236f167f90ba">MC_GET_DEBUG</a>()&nbsp;&nbsp;&nbsp;(0)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="debug_8h.html#acf1e895cb5eb7f334cbe51901e6bb918">MC_SET_SYSLOG</a>(x)&nbsp;&nbsp;&nbsp;if (0) mc_set_syslog(x)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="debug_8h.html#afda355b35d18bf2e6a2a22d5c8eef42c">MC_DEBUG</a>(x,...)&nbsp;&nbsp;&nbsp;if (0) mc_debug(x, ##__VA_ARGS__)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="debug_8h.html#a5ef640ce1e9e61c5f6632aefbbfa0041">MC_INFO</a>(x,...)&nbsp;&nbsp;&nbsp;if (0) mc_info(x, ##__VA_ARGS__)</td></tr>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="debug_8h.html#af65a73617b71476020a005b20bf02726">mc_set_debug</a> (int debug)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="debug_8h.html#a3b3ab3ae8b438384fb109a2e38646b6e">mc_get_debug</a> (void)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="debug_8h.html#aadb888da410116384e75a00db30da705">mc_set_syslog</a> (int syslog)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="debug_8h.html#a44913dbc4f1abf6614d42b22b941c092">mc_abort</a> (const char *msg,...)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="debug_8h.html#a600cf4cbbe19c0c15ca3710210e35aba">mc_debug</a> (const char *msg,...)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="debug_8h.html#abf22ea3a331c7ff21c23da91a07c7cb2">mc_error</a> (const char *msg,...)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="debug_8h.html#acbb92996a994e316ff65ed3a026e12a4">mc_info</a> (const char *msg,...)</td></tr>
+</table>
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="a375c4dc9f0fb338999de81aab826f9d6"></a><!-- doxytag: member="debug.h::__STRING" ref="a375c4dc9f0fb338999de81aab826f9d6" args="(x)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define __STRING</td>
+          <td>(</td>
+          <td class="paramtype">x&nbsp;</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td>&nbsp;&nbsp;&nbsp;#x</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
 
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="debug_8h.html#cbb92996a994e316ff65ed3a026e12a4">mc_info</a> (const char *msg,...)</td></tr>
+</div>
+</div>
+<a class="anchor" id="a8ca29550d5b1b73948f4a7bce53f2385"></a><!-- doxytag: member="debug.h::JASSERT" ref="a8ca29550d5b1b73948f4a7bce53f2385" args="(cond)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define JASSERT</td>
+          <td>(</td>
+          <td class="paramtype">cond&nbsp;</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td>&nbsp;&nbsp;&nbsp;do {} while(0)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
 
-</table>
-<hr><h2>Define Documentation</h2>
-<a class="anchor" name="25591d3d4754c0c6d1f2b5463fb4977e"></a><!-- doxytag: member="debug.h::MC_ABORT" ref="25591d3d4754c0c6d1f2b5463fb4977e" args="(x,...)" -->
+</div>
+</div>
+<a class="anchor" id="a25591d3d4754c0c6d1f2b5463fb4977e"></a><!-- doxytag: member="debug.h::MC_ABORT" ref="a25591d3d4754c0c6d1f2b5463fb4977e" args="(x,...)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define MC_ABORT          </td>
+          <td class="memname">#define MC_ABORT</td>
           <td>(</td>
-          <td class="paramtype">x,         <tr>
+          <td class="paramtype">x, </td>
+        </tr>
+        <tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype"> <em>...</em>&nbsp;</td>
-          <td class="paramname">          </td>
+          <td class="paramname"></td>
           <td>&nbsp;)&nbsp;</td>
-          <td>&nbsp;&nbsp;&nbsp;if (0) mc_abort(x, ##__VA_ARGS__)</td>
+          <td>&nbsp;&nbsp;&nbsp;mc_abort(x, ##__VA_ARGS__)</td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="fda355b35d18bf2e6a2a22d5c8eef42c"></a><!-- doxytag: member="debug.h::MC_DEBUG" ref="fda355b35d18bf2e6a2a22d5c8eef42c" args="(x,...)" -->
+</div>
+<a class="anchor" id="afda355b35d18bf2e6a2a22d5c8eef42c"></a><!-- doxytag: member="debug.h::MC_DEBUG" ref="afda355b35d18bf2e6a2a22d5c8eef42c" args="(x,...)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define MC_DEBUG          </td>
+          <td class="memname">#define MC_DEBUG</td>
           <td>(</td>
-          <td class="paramtype">x,         <tr>
+          <td class="paramtype">x, </td>
+        </tr>
+        <tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype"> <em>...</em>&nbsp;</td>
-          <td class="paramname">          </td>
+          <td class="paramname"></td>
           <td>&nbsp;)&nbsp;</td>
           <td>&nbsp;&nbsp;&nbsp;if (0) mc_debug(x, ##__VA_ARGS__)</td>
         </tr>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="11ba39cecbe449af5b86fa2f78e9da9d"></a><!-- doxytag: member="debug.h::MC_ERROR" ref="11ba39cecbe449af5b86fa2f78e9da9d" args="(x,...)" -->
+</div>
+<a class="anchor" id="a11ba39cecbe449af5b86fa2f78e9da9d"></a><!-- doxytag: member="debug.h::MC_ERROR" ref="a11ba39cecbe449af5b86fa2f78e9da9d" args="(x,...)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define MC_ERROR          </td>
+          <td class="memname">#define MC_ERROR</td>
           <td>(</td>
-          <td class="paramtype">x,         <tr>
+          <td class="paramtype">x, </td>
+        </tr>
+        <tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype"> <em>...</em>&nbsp;</td>
-          <td class="paramname">          </td>
+          <td class="paramname"></td>
           <td>&nbsp;)&nbsp;</td>
-          <td>&nbsp;&nbsp;&nbsp;if (0) mc_error(x, ##__VA_ARGS__)</td>
+          <td>&nbsp;&nbsp;&nbsp;mc_error(x, ##__VA_ARGS__)</td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="cb272a4b4444b69cd995236f167f90ba"></a><!-- doxytag: member="debug.h::MC_GET_DEBUG" ref="cb272a4b4444b69cd995236f167f90ba" args="()" -->
+</div>
+<a class="anchor" id="acb272a4b4444b69cd995236f167f90ba"></a><!-- doxytag: member="debug.h::MC_GET_DEBUG" ref="acb272a4b4444b69cd995236f167f90ba" args="()" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define MC_GET_DEBUG          </td>
+          <td class="memname">#define MC_GET_DEBUG</td>
           <td>(</td>
 &nbsp;</td>
-          <td class="paramname">          </td>
+          <td class="paramname"></td>
           <td>&nbsp;)&nbsp;</td>
           <td>&nbsp;&nbsp;&nbsp;(0)</td>
         </tr>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="5ef640ce1e9e61c5f6632aefbbfa0041"></a><!-- doxytag: member="debug.h::MC_INFO" ref="5ef640ce1e9e61c5f6632aefbbfa0041" args="(x,...)" -->
+</div>
+<a class="anchor" id="a5ef640ce1e9e61c5f6632aefbbfa0041"></a><!-- doxytag: member="debug.h::MC_INFO" ref="a5ef640ce1e9e61c5f6632aefbbfa0041" args="(x,...)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define MC_INFO          </td>
+          <td class="memname">#define MC_INFO</td>
           <td>(</td>
-          <td class="paramtype">x,         <tr>
+          <td class="paramtype">x, </td>
+        </tr>
+        <tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype"> <em>...</em>&nbsp;</td>
-          <td class="paramname">          </td>
+          <td class="paramname"></td>
           <td>&nbsp;)&nbsp;</td>
           <td>&nbsp;&nbsp;&nbsp;if (0) mc_info(x, ##__VA_ARGS__)</td>
         </tr>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="50f21a239fa040a10ad4cfdb4278b02b"></a><!-- doxytag: member="debug.h::MC_SET_DEBUG" ref="50f21a239fa040a10ad4cfdb4278b02b" args="(x)" -->
+</div>
+<a class="anchor" id="a50f21a239fa040a10ad4cfdb4278b02b"></a><!-- doxytag: member="debug.h::MC_SET_DEBUG" ref="a50f21a239fa040a10ad4cfdb4278b02b" args="(x)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define MC_SET_DEBUG          </td>
+          <td class="memname">#define MC_SET_DEBUG</td>
           <td>(</td>
           <td class="paramtype">x&nbsp;</td>
-          <td class="paramname">          </td>
+          <td class="paramname"></td>
           <td>&nbsp;)&nbsp;</td>
           <td>&nbsp;&nbsp;&nbsp;if (0) mc_set_debug(x)</td>
         </tr>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="cf1e895cb5eb7f334cbe51901e6bb918"></a><!-- doxytag: member="debug.h::MC_SET_SYSLOG" ref="cf1e895cb5eb7f334cbe51901e6bb918" args="(x)" -->
+</div>
+<a class="anchor" id="acf1e895cb5eb7f334cbe51901e6bb918"></a><!-- doxytag: member="debug.h::MC_SET_SYSLOG" ref="acf1e895cb5eb7f334cbe51901e6bb918" args="(x)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define MC_SET_SYSLOG          </td>
+          <td class="memname">#define MC_SET_SYSLOG</td>
           <td>(</td>
           <td class="paramtype">x&nbsp;</td>
-          <td class="paramname">          </td>
+          <td class="paramname"></td>
           <td>&nbsp;)&nbsp;</td>
           <td>&nbsp;&nbsp;&nbsp;if (0) mc_set_syslog(x)</td>
         </tr>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="44913dbc4f1abf6614d42b22b941c092"></a><!-- doxytag: member="debug.h::mc_abort" ref="44913dbc4f1abf6614d42b22b941c092" args="(const char *msg,...)" -->
+</div>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="a44913dbc4f1abf6614d42b22b941c092"></a><!-- doxytag: member="debug.h::mc_abort" ref="a44913dbc4f1abf6614d42b22b941c092" args="(const char *msg,...)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void mc_abort           </td>
+          <td class="memname">void mc_abort </td>
           <td>(</td>
           <td class="paramtype">const char *&nbsp;</td>
           <td class="paramname"> <em>msg</em>, </td>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="600cf4cbbe19c0c15ca3710210e35aba"></a><!-- doxytag: member="debug.h::mc_debug" ref="600cf4cbbe19c0c15ca3710210e35aba" args="(const char *msg,...)" -->
+</div>
+<a class="anchor" id="a600cf4cbbe19c0c15ca3710210e35aba"></a><!-- doxytag: member="debug.h::mc_debug" ref="a600cf4cbbe19c0c15ca3710210e35aba" args="(const char *msg,...)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void mc_debug           </td>
+          <td class="memname">void mc_debug </td>
           <td>(</td>
           <td class="paramtype">const char *&nbsp;</td>
           <td class="paramname"> <em>msg</em>, </td>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="bf22ea3a331c7ff21c23da91a07c7cb2"></a><!-- doxytag: member="debug.h::mc_error" ref="bf22ea3a331c7ff21c23da91a07c7cb2" args="(const char *msg,...)" -->
+</div>
+<a class="anchor" id="abf22ea3a331c7ff21c23da91a07c7cb2"></a><!-- doxytag: member="debug.h::mc_error" ref="abf22ea3a331c7ff21c23da91a07c7cb2" args="(const char *msg,...)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void mc_error           </td>
+          <td class="memname">void mc_error </td>
           <td>(</td>
           <td class="paramtype">const char *&nbsp;</td>
           <td class="paramname"> <em>msg</em>, </td>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="3b3ab3ae8b438384fb109a2e38646b6e"></a><!-- doxytag: member="debug.h::mc_get_debug" ref="3b3ab3ae8b438384fb109a2e38646b6e" args="(void)" -->
+</div>
+<a class="anchor" id="a3b3ab3ae8b438384fb109a2e38646b6e"></a><!-- doxytag: member="debug.h::mc_get_debug" ref="a3b3ab3ae8b438384fb109a2e38646b6e" args="(void)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int mc_get_debug           </td>
+          <td class="memname">int mc_get_debug </td>
           <td>(</td>
           <td class="paramtype">void&nbsp;</td>
-          <td class="paramname">          </td>
+          <td class="paramname"></td>
           <td>&nbsp;)&nbsp;</td>
           <td></td>
         </tr>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="cbb92996a994e316ff65ed3a026e12a4"></a><!-- doxytag: member="debug.h::mc_info" ref="cbb92996a994e316ff65ed3a026e12a4" args="(const char *msg,...)" -->
+</div>
+<a class="anchor" id="acbb92996a994e316ff65ed3a026e12a4"></a><!-- doxytag: member="debug.h::mc_info" ref="acbb92996a994e316ff65ed3a026e12a4" args="(const char *msg,...)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void mc_info           </td>
+          <td class="memname">void mc_info </td>
           <td>(</td>
           <td class="paramtype">const char *&nbsp;</td>
           <td class="paramname"> <em>msg</em>, </td>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="f65a73617b71476020a005b20bf02726"></a><!-- doxytag: member="debug.h::mc_set_debug" ref="f65a73617b71476020a005b20bf02726" args="(int debug)" -->
+</div>
+<a class="anchor" id="af65a73617b71476020a005b20bf02726"></a><!-- doxytag: member="debug.h::mc_set_debug" ref="af65a73617b71476020a005b20bf02726" args="(int debug)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void mc_set_debug           </td>
+          <td class="memname">void mc_set_debug </td>
           <td>(</td>
           <td class="paramtype">int&nbsp;</td>
-          <td class="paramname"> <em>debug</em>          </td>
+          <td class="paramname"> <em>debug</em></td>
           <td>&nbsp;)&nbsp;</td>
           <td></td>
         </tr>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="adb888da410116384e75a00db30da705"></a><!-- doxytag: member="debug.h::mc_set_syslog" ref="adb888da410116384e75a00db30da705" args="(int syslog)" -->
+</div>
+<a class="anchor" id="aadb888da410116384e75a00db30da705"></a><!-- doxytag: member="debug.h::mc_set_syslog" ref="aadb888da410116384e75a00db30da705" args="(int syslog)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void mc_set_syslog           </td>
+          <td class="memname">void mc_set_syslog </td>
           <td>(</td>
           <td class="paramtype">int&nbsp;</td>
-          <td class="paramname"> <em>syslog</em>          </td>
+          <td class="paramname"> <em>syslog</em></td>
           <td>&nbsp;)&nbsp;</td>
           <td></td>
         </tr>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
 </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by&nbsp;
 <a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>
 </html>
diff --git a/doc/html/deprecated.html b/doc/html/deprecated.html
new file mode 100644 (file)
index 0000000..77dc91f
--- /dev/null
@@ -0,0 +1,39 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>json-c: Deprecated List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li class="current"><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+
+
+<h1><a class="anchor" id="deprecated">Deprecated List </a></h1><p><a class="anchor" id="_deprecated000001"></a> </p>
+<dl>
+<dt>Global <a class="el" href="json__object_8h.html#ac11730ad909d1f9eb077d1ce9ff8b153">json_object_object_get</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj, const char *key) </dt>
+<dd>Please use json_object_object_get_ex </dd>
+</dl>
+<p><a class="anchor" id="_deprecated000002"></a> </p>
+<dl>
+<dt>Global <a class="el" href="linkhash_8h.html#a49c27f18a174eaf126d1b7953df13cb1">lh_table_lookup</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, const void *k) </dt>
+<dd>Use lh_table_lookup_ex instead. </dd>
+</dl>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
index 3767dc9..d6aaf28 100644 (file)
@@ -1,3 +1,5 @@
+/* The standard CSS for doxygen */
+
 body, table, div, p, dl {
        font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;
        font-size: 12px;
@@ -18,12 +20,49 @@ h3 {
        font-size: 100%;
 }
 
+dt {
+       font-weight: bold;
+}
+
+div.multicol {
+       -moz-column-gap: 1em;
+       -webkit-column-gap: 1em;
+       -moz-column-count: 3;
+       -webkit-column-count: 3;
+}
+
+p.startli, p.startdd, p.starttd {
+       margin-top: 2px;
+}
+
+p.endli {
+       margin-bottom: 0px;
+}
+
+p.enddd {
+       margin-bottom: 4px;
+}
+
+p.endtd {
+       margin-bottom: 2px;
+}
+
 /* @end */
 
 caption {
        font-weight: bold;
 }
 
+span.legend {
+        font-size: 70%;
+        text-align: center;
+}
+
+h3.version {
+        font-size: 90%;
+        text-align: center;
+}
+
 div.qindex, div.navtab{
        background-color: #e8eef2;
        border: 1px solid #84b0c7;
@@ -80,9 +119,11 @@ a.elRef {
 }
 
 a.code {
+       color: #3030f0;
 }
 
 a.codeRef {
+       color: #3030f0;
 }
 
 /* @end */
@@ -101,6 +142,10 @@ pre.fragment {
        background-color: #f5f5f5;
        padding: 4px 6px;
        margin: 4px 8px 4px 2px;
+       overflow: auto;
+       word-wrap: break-word;
+       font-size:  9pt;
+       line-height: 125%;
 }
 
 div.ah {
@@ -161,6 +206,22 @@ img.formulaInl {
        vertical-align: middle;
 }
 
+div.center {
+       text-align: center;
+        margin-top: 0px;
+        margin-bottom: 0px;
+        padding: 0px;
+}
+
+div.center img {
+       border: 0px;
+}
+
+img.footer {
+       border: 0px;
+       vertical-align: middle;
+}
+
 /* @group Code Colorization */
 
 span.keyword {
@@ -242,11 +303,15 @@ th.dirtab {
 }
 
 hr {
-       height: 0;
+       height: 0px;
        border: none;
        border-top: 1px solid #666;
 }
 
+hr.footer {
+       height: 1px;
+}
+
 /* @group Member Descriptions */
 
 .mdescLeft, .mdescRight,
@@ -267,8 +332,13 @@ hr {
        border-top: 1px solid #ccc;
 }
 
+.memItemLeft, .memTemplItemLeft {
+        white-space: nowrap;
+}
+
 .memTemplParams {
        color: #606060;
+        white-space: nowrap;
 }
 
 /* @end */
@@ -295,35 +365,50 @@ hr {
 
 .memitem {
        padding: 0;
+       margin-bottom: 10px;
 }
 
 .memname {
-       white-space: nowrap;
-       font-weight: bold;
-}
-
-.memproto, .memdoc {
-       border: 1px solid #84b0c7;      
+        white-space: nowrap;
+        font-weight: bold;
+        margin-left: 6px;
 }
 
 .memproto {
-       padding: 0;
-       background-color: #d5e1e8;
-       font-weight: bold;
-       -webkit-border-top-left-radius: 8px;
-       -webkit-border-top-right-radius: 8px;
-       -moz-border-radius-topleft: 8px;
-       -moz-border-radius-topright: 8px;
+        border-top: 1px solid #84b0c7;          
+        border-left: 1px solid #84b0c7;         
+        border-right: 1px solid #84b0c7; 
+        padding: 0;
+        background-color: #d5e1e8;
+        font-weight: bold;
+        /* firefox specific markup */
+        background-image: -moz-linear-gradient(rgba(228, 233, 245, 1.0) 0%, rgba(193, 205, 232, 1.0) 100%);
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+        -moz-border-radius-topright: 8px;
+        -moz-border-radius-topleft: 8px;
+        /* webkit specific markup */
+        background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(228, 233, 245, 1.0)), to(rgba(193, 205, 232, 1.0)));
+        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        -webkit-border-top-right-radius: 8px;
+        -webkit-border-top-left-radius: 8px;
+
 }
 
 .memdoc {
-       padding: 2px 5px;
-       background-color: #eef3f5;
-       border-top-width: 0;
-       -webkit-border-bottom-left-radius: 8px;
-       -webkit-border-bottom-right-radius: 8px;
-       -moz-border-radius-bottomleft: 8px;
-       -moz-border-radius-bottomright: 8px;
+        border-bottom: 1px solid #84b0c7;      
+        border-left: 1px solid #84b0c7;      
+        border-right: 1px solid #84b0c7; 
+        padding: 2px 5px;
+        background-color: #eef3f5;
+        border-top-width: 0;
+        /* firefox specific markup */
+        -moz-border-radius-bottomleft: 8px;
+        -moz-border-radius-bottomright: 8px;
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+        /* webkit specific markup */
+        -webkit-border-bottom-left-radius: 8px;
+        -webkit-border-bottom-right-radius: 8px;
+        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
 }
 
 .paramkey {
@@ -439,3 +524,22 @@ address {
        font-style: normal;
        color: #333;
 }
+
+table.doxtable {
+       border-collapse:collapse;
+}
+
+table.doxtable td, table.doxtable th {
+       border: 1px solid #153788;
+       padding: 3px 7px 2px;
+}
+
+table.doxtable th {
+       background-color: #254798;
+       color: #FFFFFF;
+       font-size: 110%;
+       padding-bottom: 4px;
+       padding-top: 5px;
+       text-align:left;
+}
+
index 870e694..0eb2fee 100644 (file)
@@ -1,14 +1,18 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>json-c: File Index</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
 <div class="navigation" id="top">
   <div class="tabs">
     <ul>
       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
       <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
       <li class="current"><a href="files.html"><span>Files</span></a></li>
     </ul>
 <h1>File List</h1>Here is a list of all files with brief descriptions:<table>
   <tr><td class="indexkey"><a class="el" href="arraylist_8h.html">arraylist.h</a></td><td class="indexvalue"></td></tr>
   <tr><td class="indexkey"><a class="el" href="bits_8h.html">bits.h</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="config_8h.html">config.h</a></td><td class="indexvalue"></td></tr>
   <tr><td class="indexkey"><a class="el" href="debug_8h.html">debug.h</a></td><td class="indexvalue"></td></tr>
   <tr><td class="indexkey"><a class="el" href="json_8h.html">json.h</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="json__inttypes_8h.html">json_inttypes.h</a></td><td class="indexvalue"></td></tr>
   <tr><td class="indexkey"><a class="el" href="json__object_8h.html">json_object.h</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="json__object__iterator_8h.html">json_object_iterator.h</a></td><td class="indexvalue">Json-c forces clients to use its private data structures for JSON Object iteration. This API corrects that by abstracting the private json-c details </td></tr>
   <tr><td class="indexkey"><a class="el" href="json__object__private_8h.html">json_object_private.h</a></td><td class="indexvalue"></td></tr>
   <tr><td class="indexkey"><a class="el" href="json__tokener_8h.html">json_tokener.h</a></td><td class="indexvalue"></td></tr>
   <tr><td class="indexkey"><a class="el" href="json__util_8h.html">json_util.h</a></td><td class="indexvalue"></td></tr>
@@ -35,8 +40,8 @@
   <tr><td class="indexkey"><a class="el" href="printbuf_8h.html">printbuf.h</a></td><td class="indexvalue"></td></tr>
 </table>
 </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by&nbsp;
 <a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>
 </html>
index e667f39..1cb50a3 100644 (file)
@@ -1,14 +1,18 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>json-c: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
 <div class="navigation" id="top">
   <div class="tabs">
     <ul>
       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
       <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
       <li><a href="files.html"><span>Files</span></a></li>
     </ul>
 </div>
 <div class="contents">
 Here is a list of all struct and union fields with links to the structures/unions they belong to:
-<p>
-<h3><a class="anchor" name="index__">- _ -</a></h3><ul>
+
+<h3><a class="anchor" id="index__">- _ -</a></h3><ul>
 <li>_delete
-: <a class="el" href="structjson__object.html#a3a238f4b671c21fa0578fc37a126c2e">json_object</a>
+: <a class="el" href="structjson__object.html#aa3a238f4b671c21fa0578fc37a126c2e">json_object</a>
+</li>
 <li>_pb
-: <a class="el" href="structjson__object.html#fdcaa9e24bce7c86c33cb6f6ae65cb56">json_object</a>
+: <a class="el" href="structjson__object.html#afdcaa9e24bce7c86c33cb6f6ae65cb56">json_object</a>
+</li>
 <li>_ref_count
-: <a class="el" href="structjson__object.html#ca9b93573ba6bb8cf66d87c170a575b2">json_object</a>
+: <a class="el" href="structjson__object.html#aca9b93573ba6bb8cf66d87c170a575b2">json_object</a>
+</li>
 <li>_to_json_string
-: <a class="el" href="structjson__object.html#077a02daac4653f91584dd7f47c3d632">json_object</a>
+: <a class="el" href="structjson__object.html#a077a02daac4653f91584dd7f47c3d632">json_object</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_a">- a -</a></h3><ul>
 <li>array
-: <a class="el" href="structarray__list.html#7ba65feda2b156148c08667cf155b657">array_list</a>
+: <a class="el" href="structarray__list.html#a7ba65feda2b156148c08667cf155b657">array_list</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_b">- b -</a></h3><ul>
 <li>bpos
-: <a class="el" href="structprintbuf.html#ba980ad7406329e32f557dfa0eb7b1b2">printbuf</a>
+: <a class="el" href="structprintbuf.html#aba980ad7406329e32f557dfa0eb7b1b2">printbuf</a>
+</li>
 <li>buf
-: <a class="el" href="structprintbuf.html#5d7cf8ac260f1f7c50fecaf9bd7bc651">printbuf</a>
+: <a class="el" href="structprintbuf.html#a5d7cf8ac260f1f7c50fecaf9bd7bc651">printbuf</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_c">- c -</a></h3><ul>
 <li>c_array
-: <a class="el" href="unionjson__object_1_1data.html#c7ced3f07012abe6aa857745a0f9cd29">json_object::json_object::data</a>
+: <a class="el" href="unionjson__object_1_1data.html#a4ad6bf2fd6d8718f55850509edfe2e45">json_object::data</a>
+</li>
 <li>c_boolean
-: <a class="el" href="unionjson__object_1_1data.html#e4707a819b52b42447594277c31651e9">json_object::json_object::data</a>
+: <a class="el" href="unionjson__object_1_1data.html#a98a3964e5fb0b3a0e9d8786b8facde5c">json_object::data</a>
+</li>
 <li>c_double
-: <a class="el" href="unionjson__object_1_1data.html#efde3d5ac1324bcff45ae8a0c645d05e">json_object::json_object::data</a>
-<li>c_int
-: <a class="el" href="unionjson__object_1_1data.html#0ae27a27da5f3fa39fe94ff66ac4c113">json_object::json_object::data</a>
+: <a class="el" href="unionjson__object_1_1data.html#a9cc4abdb21302913701ac0c8dc75e55a">json_object::data</a>
+</li>
+<li>c_int64
+: <a class="el" href="unionjson__object_1_1data.html#a7733181cdb631570913e3a2abfd6937c">json_object::data</a>
+</li>
 <li>c_object
-: <a class="el" href="unionjson__object_1_1data.html#60b5d5f5559f88626054f356d6750640">json_object::json_object::data</a>
+: <a class="el" href="unionjson__object_1_1data.html#a68089c942f154d4df590d8ecb476a69b">json_object::data</a>
+</li>
 <li>c_string
-: <a class="el" href="unionjson__object_1_1data.html#99a48f23969295bbb8f7195fc10764bc">json_object::json_object::data</a>
+: <a class="el" href="unionjson__object_1_1data.html#af9cd2e329ad7ab0a86b1b622290a663a">json_object::data</a>
+</li>
 <li>char_offset
-: <a class="el" href="structjson__tokener.html#9daae2516fd6df23555d33ef01020a76">json_tokener</a>
+: <a class="el" href="structjson__tokener.html#a9daae2516fd6df23555d33ef01020a76">json_tokener</a>
+</li>
 <li>collisions
-: <a class="el" href="structlh__table.html#9458e41d842ce40cd37dc13458ced133">lh_table</a>
+: <a class="el" href="structlh__table.html#a9458e41d842ce40cd37dc13458ced133">lh_table</a>
+</li>
 <li>count
-: <a class="el" href="structlh__table.html#a172ed8fe205367b54e0e2cdf9ea8c6c">lh_table</a>
+: <a class="el" href="structlh__table.html#aa172ed8fe205367b54e0e2cdf9ea8c6c">lh_table</a>
+</li>
 <li>current
-: <a class="el" href="structjson__tokener__srec.html#466f192f920368a5a6375aeba1e2757f">json_tokener_srec</a>
+: <a class="el" href="structjson__tokener__srec.html#a466f192f920368a5a6375aeba1e2757f">json_tokener_srec</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_d">- d -</a></h3><ul>
 <li>deletes
-: <a class="el" href="structlh__table.html#8348bdd7e61c8d72b402f6a152013fbf">lh_table</a>
+: <a class="el" href="structlh__table.html#a8348bdd7e61c8d72b402f6a152013fbf">lh_table</a>
+</li>
 <li>depth
-: <a class="el" href="structjson__tokener.html#e0e5102b44cc1fc680be3e0fb5fff028">json_tokener</a>
+: <a class="el" href="structjson__tokener.html#ae0e5102b44cc1fc680be3e0fb5fff028">json_tokener</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_e">- e -</a></h3><ul>
 <li>entry
-: <a class="el" href="structjson__object__iter.html#64e326f050826c644c02ed5bcd214faa">json_object_iter</a>
+: <a class="el" href="structjson__object__iter.html#a64e326f050826c644c02ed5bcd214faa">json_object_iter</a>
+</li>
 <li>equal_fn
-: <a class="el" href="structlh__table.html#a646c287a6a46e09da6c7457c981a359">lh_table</a>
+: <a class="el" href="structlh__table.html#aa646c287a6a46e09da6c7457c981a359">lh_table</a>
+</li>
 <li>err
-: <a class="el" href="structjson__tokener.html#cc71f03c5d2edbcb5a036a906e8c2faf">json_tokener</a>
+: <a class="el" href="structjson__tokener.html#adef37cdc2578d8f8920db14315728cbd">json_tokener</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_f">- f -</a></h3><ul>
 <li>free_fn
-: <a class="el" href="structarray__list.html#b7989cdde357e5c7819c562c7680ab74">array_list</a>
-, <a class="el" href="structlh__table.html#30ea5903f4f8126abd6aa489ffe14737">lh_table</a>
+: <a class="el" href="structarray__list.html#ab7989cdde357e5c7819c562c7680ab74">array_list</a>
+, <a class="el" href="structlh__table.html#a30ea5903f4f8126abd6aa489ffe14737">lh_table</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_h">- h -</a></h3><ul>
 <li>hash_fn
-: <a class="el" href="structlh__table.html#1488d1a4a320b1a9bb2f441859544be1">lh_table</a>
+: <a class="el" href="structlh__table.html#a1488d1a4a320b1a9bb2f441859544be1">lh_table</a>
+</li>
 <li>head
-: <a class="el" href="structlh__table.html#a7d986a3b12a9fa47e349713794c30fb">lh_table</a>
+: <a class="el" href="structlh__table.html#aa7d986a3b12a9fa47e349713794c30fb">lh_table</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_i">- i -</a></h3><ul>
 <li>inserts
-: <a class="el" href="structlh__table.html#fd64becd0d2cfbc91a4c9c9a117498b9">lh_table</a>
+: <a class="el" href="structlh__table.html#afd64becd0d2cfbc91a4c9c9a117498b9">lh_table</a>
+</li>
 <li>is_double
-: <a class="el" href="structjson__tokener.html#d3bf0aa728ea14549d5aa6ca8dcba070">json_tokener</a>
+: <a class="el" href="structjson__tokener.html#ad3bf0aa728ea14549d5aa6ca8dcba070">json_tokener</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_k">- k -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_k">- k -</a></h3><ul>
 <li>k
-: <a class="el" href="structlh__entry.html#6b176b3582c9cf553af6431750f5c3b6">lh_entry</a>
+: <a class="el" href="structlh__entry.html#a6b176b3582c9cf553af6431750f5c3b6">lh_entry</a>
+</li>
 <li>key
-: <a class="el" href="structjson__object__iter.html#0b76228b3a039075e9d84f88fa72ff53">json_object_iter</a>
+: <a class="el" href="structjson__object__iter.html#a0b76228b3a039075e9d84f88fa72ff53">json_object_iter</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_l">- l -</a></h3><ul>
+<li>len
+: <a class="el" href="unionjson__object_1_1data.html#ac2386853b8a4e7d0b28a27ed599ccef7">json_object::data</a>
+</li>
 <li>length
-: <a class="el" href="structarray__list.html#442fcfde196a3cc95a647f0708de814d">array_list</a>
+: <a class="el" href="structarray__list.html#a442fcfde196a3cc95a647f0708de814d">array_list</a>
+</li>
 <li>lookups
-: <a class="el" href="structlh__table.html#fd0385c645413d26e682f725a6f52164">lh_table</a>
+: <a class="el" href="structlh__table.html#afd0385c645413d26e682f725a6f52164">lh_table</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_n">- n -</a></h3><ul>
 <li>name
-: <a class="el" href="structlh__table.html#ebf4001cde3746ec8025c1d87d4e6279">lh_table</a>
+: <a class="el" href="structlh__table.html#aebf4001cde3746ec8025c1d87d4e6279">lh_table</a>
+</li>
 <li>next
-: <a class="el" href="structlh__entry.html#7c40c46e72d9a0ba071a8d49d535bc67">lh_entry</a>
+: <a class="el" href="structlh__entry.html#a7c40c46e72d9a0ba071a8d49d535bc67">lh_entry</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_o">- o -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_o">- o -</a></h3><ul>
 <li>o
-: <a class="el" href="structjson__object.html#33aff83ffea02b934235c4821cca8cf0">json_object</a>
+: <a class="el" href="structjson__object.html#a33aff83ffea02b934235c4821cca8cf0">json_object</a>
+</li>
 <li>o_type
-: <a class="el" href="structjson__object.html#28307a4a3fe6cefe27e28fec56b76b3e">json_object</a>
+: <a class="el" href="structjson__object.html#a28307a4a3fe6cefe27e28fec56b76b3e">json_object</a>
+</li>
 <li>obj
-: <a class="el" href="structjson__tokener__srec.html#d2bb71affec1da5ba1d9952c3bf2c12a">json_tokener_srec</a>
+: <a class="el" href="structjson__tokener__srec.html#ad2bb71affec1da5ba1d9952c3bf2c12a">json_tokener_srec</a>
+</li>
 <li>obj_field_name
-: <a class="el" href="structjson__tokener__srec.html#99551c172e97ac2e7a3849a50b4f51ca">json_tokener_srec</a>
+: <a class="el" href="structjson__tokener__srec.html#a99551c172e97ac2e7a3849a50b4f51ca">json_tokener_srec</a>
+</li>
+<li>opaque_
+: <a class="el" href="structjson__object__iterator.html#a69c61c14f5a36b1dc2217e49cd987f47">json_object_iterator</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_p">- p -</a></h3><ul>
 <li>pb
-: <a class="el" href="structjson__tokener.html#1cdc7f85d7bde95f81bb08b7e61d6684">json_tokener</a>
+: <a class="el" href="structjson__tokener.html#a1cdc7f85d7bde95f81bb08b7e61d6684">json_tokener</a>
+</li>
 <li>prev
-: <a class="el" href="structlh__entry.html#6fb9c3de01fb5af67d8d429921cc6a3b">lh_entry</a>
+: <a class="el" href="structlh__entry.html#a6fb9c3de01fb5af67d8d429921cc6a3b">lh_entry</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_q">- q -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_q">- q -</a></h3><ul>
 <li>quote_char
-: <a class="el" href="structjson__tokener.html#ea488b73085ac7c5969ae7fc29e25fa0">json_tokener</a>
+: <a class="el" href="structjson__tokener.html#aea488b73085ac7c5969ae7fc29e25fa0">json_tokener</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_r">- r -</a></h3><ul>
 <li>resizes
-: <a class="el" href="structlh__table.html#b4cde49bd9ce7a07daaf99af34ddb67e">lh_table</a>
+: <a class="el" href="structlh__table.html#ab4cde49bd9ce7a07daaf99af34ddb67e">lh_table</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_s">- s -</a></h3><ul>
 <li>saved_state
-: <a class="el" href="structjson__tokener__srec.html#868b9912dbb1e4813a630c944f522d48">json_tokener_srec</a>
+: <a class="el" href="structjson__tokener__srec.html#a868b9912dbb1e4813a630c944f522d48">json_tokener_srec</a>
+</li>
 <li>size
-: <a class="el" href="structarray__list.html#ba48a197d3c8f1d56682da23fe883d0a">array_list</a>
-, <a class="el" href="structprintbuf.html#12ce6440eaa06a55b96ebdc5a9778dd5">printbuf</a>
-, <a class="el" href="structlh__table.html#e251575ec2935bcb0e0589ca8e243839">lh_table</a>
+: <a class="el" href="structarray__list.html#aba48a197d3c8f1d56682da23fe883d0a">array_list</a>
+, <a class="el" href="structprintbuf.html#a12ce6440eaa06a55b96ebdc5a9778dd5">printbuf</a>
+, <a class="el" href="structlh__table.html#ae251575ec2935bcb0e0589ca8e243839">lh_table</a>
+</li>
 <li>st_pos
-: <a class="el" href="structjson__tokener.html#8eed213c0a37d09c1df66c8567e44471">json_tokener</a>
+: <a class="el" href="structjson__tokener.html#a8eed213c0a37d09c1df66c8567e44471">json_tokener</a>
+</li>
 <li>stack
-: <a class="el" href="structjson__tokener.html#1499f97597246a18357b874e1805a678">json_tokener</a>
+: <a class="el" href="structjson__tokener.html#a1499f97597246a18357b874e1805a678">json_tokener</a>
+</li>
 <li>str
-: <a class="el" href="structjson__tokener.html#9772e2170322a19d8da6ce5d7dc46895">json_tokener</a>
+: <a class="el" href="structjson__tokener.html#a9772e2170322a19d8da6ce5d7dc46895">json_tokener</a>
+, <a class="el" href="unionjson__object_1_1data.html#a18a82441c3972195a3bf698bb286634b">json_object::data</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_t">- t -</a></h3><ul>
 <li>table
-: <a class="el" href="structlh__table.html#4fd9c5aba38791b26ab0ec614a5caf8f">lh_table</a>
+: <a class="el" href="structlh__table.html#a4fd9c5aba38791b26ab0ec614a5caf8f">lh_table</a>
+</li>
 <li>tail
-: <a class="el" href="structlh__table.html#479895e45db2bdf9bf5d173fa4b7e277">lh_table</a>
+: <a class="el" href="structlh__table.html#a479895e45db2bdf9bf5d173fa4b7e277">lh_table</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_u">- u -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_u">- u -</a></h3><ul>
 <li>ucs_char
-: <a class="el" href="structjson__tokener.html#32fa73e43fb760e6845231a8482eb064">json_tokener</a>
+: <a class="el" href="structjson__tokener.html#a32fa73e43fb760e6845231a8482eb064">json_tokener</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_v">- v -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_v">- v -</a></h3><ul>
 <li>v
-: <a class="el" href="structlh__entry.html#1b676732ab2ad3eeaedf6ec60a6a0835">lh_entry</a>
+: <a class="el" href="structlh__entry.html#a1b676732ab2ad3eeaedf6ec60a6a0835">lh_entry</a>
+</li>
 <li>val
-: <a class="el" href="structjson__object__iter.html#aae14a8d17aacddacb0a57234e0a4491">json_object_iter</a>
+: <a class="el" href="structjson__object__iter.html#aaae14a8d17aacddacb0a57234e0a4491">json_object_iter</a>
+</li>
 </ul>
 </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by&nbsp;
 <a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>
 </html>
index 71eead8..4a9e620 100644 (file)
@@ -1,14 +1,18 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>json-c: Data Fields - Variables</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
 <div class="navigation" id="top">
   <div class="tabs">
     <ul>
       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
       <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
       <li><a href="files.html"><span>Files</span></a></li>
     </ul>
 </div>
 <div class="contents">
 &nbsp;
-<p>
-<h3><a class="anchor" name="index__">- _ -</a></h3><ul>
+
+<h3><a class="anchor" id="index__">- _ -</a></h3><ul>
 <li>_delete
-: <a class="el" href="structjson__object.html#a3a238f4b671c21fa0578fc37a126c2e">json_object</a>
+: <a class="el" href="structjson__object.html#aa3a238f4b671c21fa0578fc37a126c2e">json_object</a>
+</li>
 <li>_pb
-: <a class="el" href="structjson__object.html#fdcaa9e24bce7c86c33cb6f6ae65cb56">json_object</a>
+: <a class="el" href="structjson__object.html#afdcaa9e24bce7c86c33cb6f6ae65cb56">json_object</a>
+</li>
 <li>_ref_count
-: <a class="el" href="structjson__object.html#ca9b93573ba6bb8cf66d87c170a575b2">json_object</a>
+: <a class="el" href="structjson__object.html#aca9b93573ba6bb8cf66d87c170a575b2">json_object</a>
+</li>
 <li>_to_json_string
-: <a class="el" href="structjson__object.html#077a02daac4653f91584dd7f47c3d632">json_object</a>
+: <a class="el" href="structjson__object.html#a077a02daac4653f91584dd7f47c3d632">json_object</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_a">- a -</a></h3><ul>
 <li>array
-: <a class="el" href="structarray__list.html#7ba65feda2b156148c08667cf155b657">array_list</a>
+: <a class="el" href="structarray__list.html#a7ba65feda2b156148c08667cf155b657">array_list</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_b">- b -</a></h3><ul>
 <li>bpos
-: <a class="el" href="structprintbuf.html#ba980ad7406329e32f557dfa0eb7b1b2">printbuf</a>
+: <a class="el" href="structprintbuf.html#aba980ad7406329e32f557dfa0eb7b1b2">printbuf</a>
+</li>
 <li>buf
-: <a class="el" href="structprintbuf.html#5d7cf8ac260f1f7c50fecaf9bd7bc651">printbuf</a>
+: <a class="el" href="structprintbuf.html#a5d7cf8ac260f1f7c50fecaf9bd7bc651">printbuf</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_c">- c -</a></h3><ul>
 <li>c_array
-: <a class="el" href="unionjson__object_1_1data.html#c7ced3f07012abe6aa857745a0f9cd29">json_object::json_object::data</a>
+: <a class="el" href="unionjson__object_1_1data.html#a4ad6bf2fd6d8718f55850509edfe2e45">json_object::data</a>
+</li>
 <li>c_boolean
-: <a class="el" href="unionjson__object_1_1data.html#e4707a819b52b42447594277c31651e9">json_object::json_object::data</a>
+: <a class="el" href="unionjson__object_1_1data.html#a98a3964e5fb0b3a0e9d8786b8facde5c">json_object::data</a>
+</li>
 <li>c_double
-: <a class="el" href="unionjson__object_1_1data.html#efde3d5ac1324bcff45ae8a0c645d05e">json_object::json_object::data</a>
-<li>c_int
-: <a class="el" href="unionjson__object_1_1data.html#0ae27a27da5f3fa39fe94ff66ac4c113">json_object::json_object::data</a>
+: <a class="el" href="unionjson__object_1_1data.html#a9cc4abdb21302913701ac0c8dc75e55a">json_object::data</a>
+</li>
+<li>c_int64
+: <a class="el" href="unionjson__object_1_1data.html#a7733181cdb631570913e3a2abfd6937c">json_object::data</a>
+</li>
 <li>c_object
-: <a class="el" href="unionjson__object_1_1data.html#60b5d5f5559f88626054f356d6750640">json_object::json_object::data</a>
+: <a class="el" href="unionjson__object_1_1data.html#a68089c942f154d4df590d8ecb476a69b">json_object::data</a>
+</li>
 <li>c_string
-: <a class="el" href="unionjson__object_1_1data.html#99a48f23969295bbb8f7195fc10764bc">json_object::json_object::data</a>
+: <a class="el" href="unionjson__object_1_1data.html#af9cd2e329ad7ab0a86b1b622290a663a">json_object::data</a>
+</li>
 <li>char_offset
-: <a class="el" href="structjson__tokener.html#9daae2516fd6df23555d33ef01020a76">json_tokener</a>
+: <a class="el" href="structjson__tokener.html#a9daae2516fd6df23555d33ef01020a76">json_tokener</a>
+</li>
 <li>collisions
-: <a class="el" href="structlh__table.html#9458e41d842ce40cd37dc13458ced133">lh_table</a>
+: <a class="el" href="structlh__table.html#a9458e41d842ce40cd37dc13458ced133">lh_table</a>
+</li>
 <li>count
-: <a class="el" href="structlh__table.html#a172ed8fe205367b54e0e2cdf9ea8c6c">lh_table</a>
+: <a class="el" href="structlh__table.html#aa172ed8fe205367b54e0e2cdf9ea8c6c">lh_table</a>
+</li>
 <li>current
-: <a class="el" href="structjson__tokener__srec.html#466f192f920368a5a6375aeba1e2757f">json_tokener_srec</a>
+: <a class="el" href="structjson__tokener__srec.html#a466f192f920368a5a6375aeba1e2757f">json_tokener_srec</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_d">- d -</a></h3><ul>
 <li>deletes
-: <a class="el" href="structlh__table.html#8348bdd7e61c8d72b402f6a152013fbf">lh_table</a>
+: <a class="el" href="structlh__table.html#a8348bdd7e61c8d72b402f6a152013fbf">lh_table</a>
+</li>
 <li>depth
-: <a class="el" href="structjson__tokener.html#e0e5102b44cc1fc680be3e0fb5fff028">json_tokener</a>
+: <a class="el" href="structjson__tokener.html#ae0e5102b44cc1fc680be3e0fb5fff028">json_tokener</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_e">- e -</a></h3><ul>
 <li>entry
-: <a class="el" href="structjson__object__iter.html#64e326f050826c644c02ed5bcd214faa">json_object_iter</a>
+: <a class="el" href="structjson__object__iter.html#a64e326f050826c644c02ed5bcd214faa">json_object_iter</a>
+</li>
 <li>equal_fn
-: <a class="el" href="structlh__table.html#a646c287a6a46e09da6c7457c981a359">lh_table</a>
+: <a class="el" href="structlh__table.html#aa646c287a6a46e09da6c7457c981a359">lh_table</a>
+</li>
 <li>err
-: <a class="el" href="structjson__tokener.html#cc71f03c5d2edbcb5a036a906e8c2faf">json_tokener</a>
+: <a class="el" href="structjson__tokener.html#adef37cdc2578d8f8920db14315728cbd">json_tokener</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_f">- f -</a></h3><ul>
 <li>free_fn
-: <a class="el" href="structarray__list.html#b7989cdde357e5c7819c562c7680ab74">array_list</a>
-, <a class="el" href="structlh__table.html#30ea5903f4f8126abd6aa489ffe14737">lh_table</a>
+: <a class="el" href="structarray__list.html#ab7989cdde357e5c7819c562c7680ab74">array_list</a>
+, <a class="el" href="structlh__table.html#a30ea5903f4f8126abd6aa489ffe14737">lh_table</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_h">- h -</a></h3><ul>
 <li>hash_fn
-: <a class="el" href="structlh__table.html#1488d1a4a320b1a9bb2f441859544be1">lh_table</a>
+: <a class="el" href="structlh__table.html#a1488d1a4a320b1a9bb2f441859544be1">lh_table</a>
+</li>
 <li>head
-: <a class="el" href="structlh__table.html#a7d986a3b12a9fa47e349713794c30fb">lh_table</a>
+: <a class="el" href="structlh__table.html#aa7d986a3b12a9fa47e349713794c30fb">lh_table</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_i">- i -</a></h3><ul>
 <li>inserts
-: <a class="el" href="structlh__table.html#fd64becd0d2cfbc91a4c9c9a117498b9">lh_table</a>
+: <a class="el" href="structlh__table.html#afd64becd0d2cfbc91a4c9c9a117498b9">lh_table</a>
+</li>
 <li>is_double
-: <a class="el" href="structjson__tokener.html#d3bf0aa728ea14549d5aa6ca8dcba070">json_tokener</a>
+: <a class="el" href="structjson__tokener.html#ad3bf0aa728ea14549d5aa6ca8dcba070">json_tokener</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_k">- k -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_k">- k -</a></h3><ul>
 <li>k
-: <a class="el" href="structlh__entry.html#6b176b3582c9cf553af6431750f5c3b6">lh_entry</a>
+: <a class="el" href="structlh__entry.html#a6b176b3582c9cf553af6431750f5c3b6">lh_entry</a>
+</li>
 <li>key
-: <a class="el" href="structjson__object__iter.html#0b76228b3a039075e9d84f88fa72ff53">json_object_iter</a>
+: <a class="el" href="structjson__object__iter.html#a0b76228b3a039075e9d84f88fa72ff53">json_object_iter</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_l">- l -</a></h3><ul>
+<li>len
+: <a class="el" href="unionjson__object_1_1data.html#ac2386853b8a4e7d0b28a27ed599ccef7">json_object::data</a>
+</li>
 <li>length
-: <a class="el" href="structarray__list.html#442fcfde196a3cc95a647f0708de814d">array_list</a>
+: <a class="el" href="structarray__list.html#a442fcfde196a3cc95a647f0708de814d">array_list</a>
+</li>
 <li>lookups
-: <a class="el" href="structlh__table.html#fd0385c645413d26e682f725a6f52164">lh_table</a>
+: <a class="el" href="structlh__table.html#afd0385c645413d26e682f725a6f52164">lh_table</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_n">- n -</a></h3><ul>
 <li>name
-: <a class="el" href="structlh__table.html#ebf4001cde3746ec8025c1d87d4e6279">lh_table</a>
+: <a class="el" href="structlh__table.html#aebf4001cde3746ec8025c1d87d4e6279">lh_table</a>
+</li>
 <li>next
-: <a class="el" href="structlh__entry.html#7c40c46e72d9a0ba071a8d49d535bc67">lh_entry</a>
+: <a class="el" href="structlh__entry.html#a7c40c46e72d9a0ba071a8d49d535bc67">lh_entry</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_o">- o -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_o">- o -</a></h3><ul>
 <li>o
-: <a class="el" href="structjson__object.html#33aff83ffea02b934235c4821cca8cf0">json_object</a>
+: <a class="el" href="structjson__object.html#a33aff83ffea02b934235c4821cca8cf0">json_object</a>
+</li>
 <li>o_type
-: <a class="el" href="structjson__object.html#28307a4a3fe6cefe27e28fec56b76b3e">json_object</a>
+: <a class="el" href="structjson__object.html#a28307a4a3fe6cefe27e28fec56b76b3e">json_object</a>
+</li>
 <li>obj
-: <a class="el" href="structjson__tokener__srec.html#d2bb71affec1da5ba1d9952c3bf2c12a">json_tokener_srec</a>
+: <a class="el" href="structjson__tokener__srec.html#ad2bb71affec1da5ba1d9952c3bf2c12a">json_tokener_srec</a>
+</li>
 <li>obj_field_name
-: <a class="el" href="structjson__tokener__srec.html#99551c172e97ac2e7a3849a50b4f51ca">json_tokener_srec</a>
+: <a class="el" href="structjson__tokener__srec.html#a99551c172e97ac2e7a3849a50b4f51ca">json_tokener_srec</a>
+</li>
+<li>opaque_
+: <a class="el" href="structjson__object__iterator.html#a69c61c14f5a36b1dc2217e49cd987f47">json_object_iterator</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_p">- p -</a></h3><ul>
 <li>pb
-: <a class="el" href="structjson__tokener.html#1cdc7f85d7bde95f81bb08b7e61d6684">json_tokener</a>
+: <a class="el" href="structjson__tokener.html#a1cdc7f85d7bde95f81bb08b7e61d6684">json_tokener</a>
+</li>
 <li>prev
-: <a class="el" href="structlh__entry.html#6fb9c3de01fb5af67d8d429921cc6a3b">lh_entry</a>
+: <a class="el" href="structlh__entry.html#a6fb9c3de01fb5af67d8d429921cc6a3b">lh_entry</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_q">- q -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_q">- q -</a></h3><ul>
 <li>quote_char
-: <a class="el" href="structjson__tokener.html#ea488b73085ac7c5969ae7fc29e25fa0">json_tokener</a>
+: <a class="el" href="structjson__tokener.html#aea488b73085ac7c5969ae7fc29e25fa0">json_tokener</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_r">- r -</a></h3><ul>
 <li>resizes
-: <a class="el" href="structlh__table.html#b4cde49bd9ce7a07daaf99af34ddb67e">lh_table</a>
+: <a class="el" href="structlh__table.html#ab4cde49bd9ce7a07daaf99af34ddb67e">lh_table</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_s">- s -</a></h3><ul>
 <li>saved_state
-: <a class="el" href="structjson__tokener__srec.html#868b9912dbb1e4813a630c944f522d48">json_tokener_srec</a>
+: <a class="el" href="structjson__tokener__srec.html#a868b9912dbb1e4813a630c944f522d48">json_tokener_srec</a>
+</li>
 <li>size
-: <a class="el" href="structarray__list.html#ba48a197d3c8f1d56682da23fe883d0a">array_list</a>
-, <a class="el" href="structprintbuf.html#12ce6440eaa06a55b96ebdc5a9778dd5">printbuf</a>
-, <a class="el" href="structlh__table.html#e251575ec2935bcb0e0589ca8e243839">lh_table</a>
+: <a class="el" href="structarray__list.html#aba48a197d3c8f1d56682da23fe883d0a">array_list</a>
+, <a class="el" href="structprintbuf.html#a12ce6440eaa06a55b96ebdc5a9778dd5">printbuf</a>
+, <a class="el" href="structlh__table.html#ae251575ec2935bcb0e0589ca8e243839">lh_table</a>
+</li>
 <li>st_pos
-: <a class="el" href="structjson__tokener.html#8eed213c0a37d09c1df66c8567e44471">json_tokener</a>
+: <a class="el" href="structjson__tokener.html#a8eed213c0a37d09c1df66c8567e44471">json_tokener</a>
+</li>
 <li>stack
-: <a class="el" href="structjson__tokener.html#1499f97597246a18357b874e1805a678">json_tokener</a>
+: <a class="el" href="structjson__tokener.html#a1499f97597246a18357b874e1805a678">json_tokener</a>
+</li>
 <li>str
-: <a class="el" href="structjson__tokener.html#9772e2170322a19d8da6ce5d7dc46895">json_tokener</a>
+: <a class="el" href="structjson__tokener.html#a9772e2170322a19d8da6ce5d7dc46895">json_tokener</a>
+, <a class="el" href="unionjson__object_1_1data.html#a18a82441c3972195a3bf698bb286634b">json_object::data</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_t">- t -</a></h3><ul>
 <li>table
-: <a class="el" href="structlh__table.html#4fd9c5aba38791b26ab0ec614a5caf8f">lh_table</a>
+: <a class="el" href="structlh__table.html#a4fd9c5aba38791b26ab0ec614a5caf8f">lh_table</a>
+</li>
 <li>tail
-: <a class="el" href="structlh__table.html#479895e45db2bdf9bf5d173fa4b7e277">lh_table</a>
+: <a class="el" href="structlh__table.html#a479895e45db2bdf9bf5d173fa4b7e277">lh_table</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_u">- u -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_u">- u -</a></h3><ul>
 <li>ucs_char
-: <a class="el" href="structjson__tokener.html#32fa73e43fb760e6845231a8482eb064">json_tokener</a>
+: <a class="el" href="structjson__tokener.html#a32fa73e43fb760e6845231a8482eb064">json_tokener</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_v">- v -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_v">- v -</a></h3><ul>
 <li>v
-: <a class="el" href="structlh__entry.html#1b676732ab2ad3eeaedf6ec60a6a0835">lh_entry</a>
+: <a class="el" href="structlh__entry.html#a1b676732ab2ad3eeaedf6ec60a6a0835">lh_entry</a>
+</li>
 <li>val
-: <a class="el" href="structjson__object__iter.html#aae14a8d17aacddacb0a57234e0a4491">json_object_iter</a>
+: <a class="el" href="structjson__object__iter.html#aaae14a8d17aacddacb0a57234e0a4491">json_object_iter</a>
+</li>
 </ul>
 </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by&nbsp;
 <a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>
 </html>
index 9b026a9..6400b5e 100644 (file)
@@ -1,14 +1,18 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>json-c: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
 <div class="navigation" id="top">
   <div class="tabs">
     <ul>
       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
       <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
       <li class="current"><a href="files.html"><span>Files</span></a></li>
     </ul>
@@ -32,8 +36,8 @@
   </div>
   <div class="tabs">
     <ul>
+      <li><a href="#index__"><span>_</span></a></li>
       <li><a href="#index_a"><span>a</span></a></li>
-      <li><a href="#index_b"><span>b</span></a></li>
       <li><a href="#index_e"><span>e</span></a></li>
       <li><a href="#index_f"><span>f</span></a></li>
       <li><a href="#index_h"><span>h</span></a></li>
       <li><a href="#index_p"><span>p</span></a></li>
       <li><a href="#index_s"><span>s</span></a></li>
       <li><a href="#index_t"><span>t</span></a></li>
-      <li><a href="#index_v"><span>v</span></a></li>
     </ul>
   </div>
 </div>
 <div class="contents">
 Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
-<p>
-<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
+
+<h3><a class="anchor" id="index__">- _ -</a></h3><ul>
+<li>__STRING
+: <a class="el" href="debug_8h.html#a375c4dc9f0fb338999de81aab826f9d6">debug.h</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_a">- a -</a></h3><ul>
 <li>array_list
-: <a class="el" href="json__object_8h.html#6d6d32d8b026ea2025df519b9e90f44a">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a6d6d32d8b026ea2025df519b9e90f44a">json_object.h</a>
+</li>
 <li>array_list_add()
-: <a class="el" href="arraylist_8h.html#6e995608aa464244ff3184fb43574dc8">arraylist.h</a>
+: <a class="el" href="arraylist_8h.html#a6e995608aa464244ff3184fb43574dc8">arraylist.h</a>
+</li>
 <li>ARRAY_LIST_DEFAULT_SIZE
-: <a class="el" href="arraylist_8h.html#cd30d910b398421574eb1f59e78617f5">arraylist.h</a>
+: <a class="el" href="arraylist_8h.html#acd30d910b398421574eb1f59e78617f5">arraylist.h</a>
+</li>
 <li>array_list_free()
-: <a class="el" href="arraylist_8h.html#cd00fb70f7ca82f23b48b812c3498f67">arraylist.h</a>
+: <a class="el" href="arraylist_8h.html#acd00fb70f7ca82f23b48b812c3498f67">arraylist.h</a>
+</li>
 <li>array_list_free_fn
-: <a class="el" href="arraylist_8h.html#ad83e4ed3c8ea274e6f18459276d774b">arraylist.h</a>
+: <a class="el" href="arraylist_8h.html#aad83e4ed3c8ea274e6f18459276d774b">arraylist.h</a>
+</li>
 <li>array_list_get_idx()
-: <a class="el" href="arraylist_8h.html#a16207e545b6c1265299abcfa418dc2b">arraylist.h</a>
+: <a class="el" href="arraylist_8h.html#aa16207e545b6c1265299abcfa418dc2b">arraylist.h</a>
+</li>
 <li>array_list_length()
-: <a class="el" href="arraylist_8h.html#a8393b4aa3dc447660371530439ab70f">arraylist.h</a>
+: <a class="el" href="arraylist_8h.html#aa8393b4aa3dc447660371530439ab70f">arraylist.h</a>
+</li>
 <li>array_list_new()
-: <a class="el" href="arraylist_8h.html#0d4bfac055dfd98e17296142abf4d894">arraylist.h</a>
+: <a class="el" href="arraylist_8h.html#a0d4bfac055dfd98e17296142abf4d894">arraylist.h</a>
+</li>
 <li>array_list_put_idx()
-: <a class="el" href="arraylist_8h.html#21b8e4c59e52fbc5a9a5a098e3f96e76">arraylist.h</a>
-</ul>
-<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
-<li>boolean
-: <a class="el" href="json__object_8h.html#621c38f1f10a1c565d897e3178b16d6e">json_object.h</a>
+: <a class="el" href="arraylist_8h.html#a21b8e4c59e52fbc5a9a5a098e3f96e76">arraylist.h</a>
+</li>
+<li>array_list_sort()
+: <a class="el" href="arraylist_8h.html#afb67cc8e2e5c9be41c3e644536079169">arraylist.h</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_e">- e -</a></h3><ul>
+<li>error_description
+: <a class="el" href="bits_8h.html#a45afe86501cd57ee2beeef9d67a4d40c">bits.h</a>
+</li>
 <li>error_ptr
-: <a class="el" href="bits_8h.html#863a898e607f8c2ff87b7052e326740f">bits.h</a>
+: <a class="el" href="bits_8h.html#a863a898e607f8c2ff87b7052e326740f">bits.h</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_f">- f -</a></h3><ul>
 <li>FALSE
-: <a class="el" href="json__object_8h.html#a93f0eb578d23995850d61f7d61c55c1">json_object.h</a>
+: <a class="el" href="json__object_8h.html#aa93f0eb578d23995850d61f7d61c55c1">json_object.h</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
-<li>HAVE_DLFCN_H
-: <a class="el" href="config_8h.html#0ee1617ff2f6885ef384a3dd46f9b9d7">config.h</a>
-<li>HAVE_FCNTL_H
-: <a class="el" href="config_8h.html#765d75020849aa0a9b6becd9a5b7a193">config.h</a>
-<li>HAVE_INTTYPES_H
-: <a class="el" href="config_8h.html#b90a030ff2790ebdc176660a6dd2a478">config.h</a>
-<li>HAVE_LIMITS_H
-: <a class="el" href="config_8h.html#c70f0930238c8d095d7cc2ee8b522c77">config.h</a>
-<li>HAVE_MALLOC
-: <a class="el" href="config_8h.html#14503280ca0cb757db915eea09282bfc">config.h</a>
-<li>HAVE_MEMORY_H
-: <a class="el" href="config_8h.html#e93a78f9d076138897af441c9f86f285">config.h</a>
-<li>HAVE_OPEN
-: <a class="el" href="config_8h.html#f774525bc701ed09c9ab1bc93827bea0">config.h</a>
-<li>HAVE_REALLOC
-: <a class="el" href="config_8h.html#0302094a0ee567c610a36c63104ebda5">config.h</a>
-<li>HAVE_STDARG_H
-: <a class="el" href="config_8h.html#3a3f8c7f8da8cac799fb620a2dbf2b15">config.h</a>
-<li>HAVE_STDINT_H
-: <a class="el" href="config_8h.html#b6cd6d1c63c1e26ea2d4537b77148354">config.h</a>
-<li>HAVE_STDLIB_H
-: <a class="el" href="config_8h.html#9e0e434ec1a6ddbd97db12b5a32905e0">config.h</a>
-<li>HAVE_STRERROR
-: <a class="el" href="config_8h.html#992653625041edef146772df96f7bca9">config.h</a>
-<li>HAVE_STRING_H
-: <a class="el" href="config_8h.html#d4c234dd1625255dc626a15886306e7d">config.h</a>
-<li>HAVE_STRINGS_H
-: <a class="el" href="config_8h.html#405d10d46190bcb0320524c54eafc850">config.h</a>
-<li>HAVE_STRNCASECMP
-: <a class="el" href="config_8h.html#6b9c27181277250e218629da3b335a16">config.h</a>
-<li>HAVE_STRNDUP
-: <a class="el" href="config_8h.html#3a51807b746f8e1a067ebdf86faf9a57">config.h</a>
-<li>HAVE_SYS_PARAM_H
-: <a class="el" href="config_8h.html#05aa9fc25e1231d8eb347390558e4e22">config.h</a>
-<li>HAVE_SYS_STAT_H
-: <a class="el" href="config_8h.html#ce156430ba007d19b4348a950d0c692b">config.h</a>
-<li>HAVE_SYS_TYPES_H
-: <a class="el" href="config_8h.html#69dc70bea5d1f8bd2be9740e974fa666">config.h</a>
-<li>HAVE_SYSLOG_H
-: <a class="el" href="config_8h.html#695d4e005378df4a1f286cb3d0f4b333">config.h</a>
-<li>HAVE_UNISTD_H
-: <a class="el" href="config_8h.html#219b06937831d0da94d801ab13987639">config.h</a>
-<li>HAVE_VASPRINTF
-: <a class="el" href="config_8h.html#4fe6a935417fff94aee592b4e7823041">config.h</a>
-<li>HAVE_VPRINTF
-: <a class="el" href="config_8h.html#11e8ffa0e0ee1d52812402f2eac05fa7">config.h</a>
-<li>HAVE_VSNPRINTF
-: <a class="el" href="config_8h.html#4ac6a60cb19181437136206238f16497">config.h</a>
-<li>HAVE_VSYSLOG
-: <a class="el" href="config_8h.html#17b116b63c7e0c28953090da138f10fa">config.h</a>
+
+
+<h3><a class="anchor" id="index_h">- h -</a></h3><ul>
 <li>hexdigit
-: <a class="el" href="bits_8h.html#1cf38b22d3a118ad48d9282c32c048aa">bits.h</a>
+: <a class="el" href="bits_8h.html#a1cf38b22d3a118ad48d9282c32c048aa">bits.h</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_i">- i -</a></h3><ul>
 <li>is_error
-: <a class="el" href="bits_8h.html#4a887e5fb7cde221bcab9c6f39d93fc1">bits.h</a>
+: <a class="el" href="bits_8h.html#a4a887e5fb7cde221bcab9c6f39d93fc1">bits.h</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_j">- j -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_j">- j -</a></h3><ul>
+<li>JASSERT
+: <a class="el" href="debug_8h.html#a8ca29550d5b1b73948f4a7bce53f2385">debug.h</a>
+</li>
+<li>json_bool
+: <a class="el" href="json__object_8h.html#a81f02022906fafc71eb9197049f07f73">json_object.h</a>
+</li>
+<li>JSON_C_TO_STRING_PLAIN
+: <a class="el" href="json__object_8h.html#a3294cb92765cdeb497cfd346644d1059">json_object.h</a>
+</li>
+<li>JSON_C_TO_STRING_PRETTY
+: <a class="el" href="json__object_8h.html#a2025bc677c35f130e117dfda5bf1ef73">json_object.h</a>
+</li>
+<li>JSON_C_TO_STRING_SPACED
+: <a class="el" href="json__object_8h.html#aa821746c8668e6ad62bed90ec9e00103">json_object.h</a>
+</li>
 <li>JSON_FILE_BUF_SIZE
-: <a class="el" href="json__util_8h.html#084b6afc8f7fbef88976aabe4aca7efd">json_util.h</a>
+: <a class="el" href="json__util_8h.html#a084b6afc8f7fbef88976aabe4aca7efd">json_util.h</a>
+</li>
 <li>json_hex_chars
-: <a class="el" href="json__object_8h.html#20dbe4913551cefa6b4b0a77fd4397c4">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a20dbe4913551cefa6b4b0a77fd4397c4">json_object.h</a>
+</li>
 <li>json_max
-: <a class="el" href="bits_8h.html#57d63d199d4b9ea40359253618951300">bits.h</a>
+: <a class="el" href="bits_8h.html#a57d63d199d4b9ea40359253618951300">bits.h</a>
+</li>
 <li>json_min
-: <a class="el" href="bits_8h.html#3dde282dc23d0eaa3c4840df8dc262d4">bits.h</a>
+: <a class="el" href="bits_8h.html#a3dde282dc23d0eaa3c4840df8dc262d4">bits.h</a>
+</li>
 <li>json_number_chars
-: <a class="el" href="json__object_8h.html#27427f89f2fc995639e366635fbe58ac">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a27427f89f2fc995639e366635fbe58ac">json_object.h</a>
+</li>
 <li>json_object
-: <a class="el" href="json__object_8h.html#f27907ced0f5a43409ad96430fe0f914">json_object.h</a>
+: <a class="el" href="json__object_8h.html#af27907ced0f5a43409ad96430fe0f914">json_object.h</a>
+</li>
 <li>json_object_array_add()
-: <a class="el" href="json__object_8h.html#cc89c0f58947d499e2868ac8b62bed49">json_object.h</a>
+: <a class="el" href="json__object_8h.html#acc89c0f58947d499e2868ac8b62bed49">json_object.h</a>
+</li>
 <li>json_object_array_get_idx()
-: <a class="el" href="json__object_8h.html#5c9120a6d644ea12a61e2ec8520130c6">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a5c9120a6d644ea12a61e2ec8520130c6">json_object.h</a>
+</li>
 <li>json_object_array_length()
-: <a class="el" href="json__object_8h.html#2e62d4b19de8f297595f3b4aaa0ec453">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a2e62d4b19de8f297595f3b4aaa0ec453">json_object.h</a>
+</li>
 <li>json_object_array_put_idx()
-: <a class="el" href="json__object_8h.html#2d19d21b495e1e0d3f711093d97a5104">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a2d19d21b495e1e0d3f711093d97a5104">json_object.h</a>
+</li>
+<li>json_object_array_sort()
+: <a class="el" href="json__object_8h.html#aa1b05eeaa9c92f079facece87d6a0149">json_object.h</a>
+</li>
 <li>JSON_OBJECT_DEF_HASH_ENTRIES
-: <a class="el" href="json__object_8h.html#268a63dd1b2e6d81559e268a4529e9bf">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a268a63dd1b2e6d81559e268a4529e9bf">json_object.h</a>
+</li>
 <li>json_object_delete_fn
-: <a class="el" href="json__object__private_8h.html#c96402e72ae5c12d690ec95ed441ec70">json_object_private.h</a>
+: <a class="el" href="json__object__private_8h.html#ac96402e72ae5c12d690ec95ed441ec70">json_object_private.h</a>
+</li>
 <li>json_object_from_file()
-: <a class="el" href="json__util_8h.html#befd9aa2f4d36ffc0f8474e042e9a398">json_util.h</a>
+: <a class="el" href="json__util_8h.html#a8fa0bba6b7ddb149a2159d99bae709ce">json_util.h</a>
+</li>
 <li>json_object_get()
-: <a class="el" href="json__object_8h.html#cc3628d97c6308dc967006e4268c4e7f">json_object.h</a>
+: <a class="el" href="json__object_8h.html#acc3628d97c6308dc967006e4268c4e7f">json_object.h</a>
+</li>
 <li>json_object_get_array()
-: <a class="el" href="json__object_8h.html#ba4e8df5e00bdc91a89bfb775e04ed70">json_object.h</a>
+: <a class="el" href="json__object_8h.html#aba4e8df5e00bdc91a89bfb775e04ed70">json_object.h</a>
+</li>
 <li>json_object_get_boolean()
-: <a class="el" href="json__object_8h.html#1765227e33016c7fee2abe31800080d1">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a3be3153ae5158ed24a49d74fbf14149f">json_object.h</a>
+</li>
 <li>json_object_get_double()
-: <a class="el" href="json__object_8h.html#9cf586fba906a597a121423045cb2a45">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a9cf586fba906a597a121423045cb2a45">json_object.h</a>
+</li>
 <li>json_object_get_int()
-: <a class="el" href="json__object_8h.html#28e392cc4d04c34628ed6dddd8a3ba6b">json_object.h</a>
+: <a class="el" href="json__object_8h.html#ae6cab7d4c7c707b9053035a6405d3891">json_object.h</a>
+</li>
+<li>json_object_get_int64()
+: <a class="el" href="json__object_8h.html#a3493894ebd226249118582e640af6944">json_object.h</a>
+</li>
 <li>json_object_get_object()
-: <a class="el" href="json__object_8h.html#9840421d6b45a7d00a42e13e379b54b5">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a9840421d6b45a7d00a42e13e379b54b5">json_object.h</a>
+</li>
 <li>json_object_get_string()
-: <a class="el" href="json__object_8h.html#d24f1c4c22b2a7d33e7b562c01f2ca65">json_object.h</a>
+: <a class="el" href="json__object_8h.html#ad24f1c4c22b2a7d33e7b562c01f2ca65">json_object.h</a>
+</li>
+<li>json_object_get_string_len()
+: <a class="el" href="json__object_8h.html#ad821384d0d8515d5ed4eec44d7101772">json_object.h</a>
+</li>
 <li>json_object_get_type()
-: <a class="el" href="json__object_8h.html#dc5e998b4897b6e450bd0975a58d2f72">json_object.h</a>
+: <a class="el" href="json__object_8h.html#adc5e998b4897b6e450bd0975a58d2f72">json_object.h</a>
+</li>
 <li>json_object_is_type()
-: <a class="el" href="json__object_8h.html#b6dc8b19f8da310e78f402f83d6ae6c5">json_object.h</a>
+: <a class="el" href="json__object_8h.html#ab6dc8b19f8da310e78f402f83d6ae6c5">json_object.h</a>
+</li>
 <li>json_object_iter
-: <a class="el" href="json__object_8h.html#f88126730e765f2068968f4b16fd074f">json_object.h</a>
+: <a class="el" href="json__object_8h.html#af88126730e765f2068968f4b16fd074f">json_object.h</a>
+</li>
+<li>json_object_iter_begin()
+: <a class="el" href="json__object__iterator_8h.html#a925eb97b5aa5b64986a0f663f53cf0fa">json_object_iterator.h</a>
+</li>
+<li>json_object_iter_end()
+: <a class="el" href="json__object__iterator_8h.html#a1fa3784395fb14496e3f1a1633028fd4">json_object_iterator.h</a>
+</li>
+<li>json_object_iter_equal()
+: <a class="el" href="json__object__iterator_8h.html#a878ca25f72b339882aa2607ac938e79c">json_object_iterator.h</a>
+</li>
+<li>json_object_iter_init_default()
+: <a class="el" href="json__object__iterator_8h.html#af30f56ca510d59da42e5592f9a436c10">json_object_iterator.h</a>
+</li>
+<li>json_object_iter_next()
+: <a class="el" href="json__object__iterator_8h.html#aa98a310c340f6d9b4eeecb673aa5e240">json_object_iterator.h</a>
+</li>
+<li>json_object_iter_peek_name()
+: <a class="el" href="json__object__iterator_8h.html#af17775b9b812a4206a84e4d3fb5774ab">json_object_iterator.h</a>
+</li>
+<li>json_object_iter_peek_value()
+: <a class="el" href="json__object__iterator_8h.html#a47b0af7f1722c10475dffd29efc0b89d">json_object_iterator.h</a>
+</li>
 <li>json_object_new_array()
-: <a class="el" href="json__object_8h.html#9b5af06e9a99e16c6d9b6459a685ea3f">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a9b5af06e9a99e16c6d9b6459a685ea3f">json_object.h</a>
+</li>
 <li>json_object_new_boolean()
-: <a class="el" href="json__object_8h.html#1bb59b93df42cafe49e8ff8c500690a6">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a93cfacfdd1000c739ad19df0a080cb85">json_object.h</a>
+</li>
 <li>json_object_new_double()
-: <a class="el" href="json__object_8h.html#2e9c761833a4f5d0a0c60640377e3cec">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a2e9c761833a4f5d0a0c60640377e3cec">json_object.h</a>
+</li>
 <li>json_object_new_int()
-: <a class="el" href="json__object_8h.html#f4dc3777b8751243c620a2cc65c89e26">json_object.h</a>
+: <a class="el" href="json__object_8h.html#aa7db8ceb1afe1b93afc63c10b8c57560">json_object.h</a>
+</li>
+<li>json_object_new_int64()
+: <a class="el" href="json__object_8h.html#a54a27690a1927354966189166bba6ca3">json_object.h</a>
+</li>
 <li>json_object_new_object()
-: <a class="el" href="json__object_8h.html#f0ed3555604f39ac74b5e28bc5b1f82c">json_object.h</a>
+: <a class="el" href="json__object_8h.html#af0ed3555604f39ac74b5e28bc5b1f82c">json_object.h</a>
+</li>
 <li>json_object_new_string()
-: <a class="el" href="json__object_8h.html#48eb92a8208e6718e55edf1130e8e4b8">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a48eb92a8208e6718e55edf1130e8e4b8">json_object.h</a>
+</li>
 <li>json_object_new_string_len()
-: <a class="el" href="json__object_8h.html#9d14fd03ed7520c4aa33ab53b4569414">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a9d14fd03ed7520c4aa33ab53b4569414">json_object.h</a>
+</li>
 <li>json_object_object_add()
-: <a class="el" href="json__object_8h.html#04448b1c63173e1bfe49965835732075">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a04448b1c63173e1bfe49965835732075">json_object.h</a>
+</li>
 <li>json_object_object_del()
-: <a class="el" href="json__object_8h.html#03653c18aafccd1ffba1ad318e342845">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a03653c18aafccd1ffba1ad318e342845">json_object.h</a>
+</li>
 <li>json_object_object_foreach
-: <a class="el" href="json__object_8h.html#cf5f514a9e0061c10fc08055762639ee">json_object.h</a>
+: <a class="el" href="json__object_8h.html#acf5f514a9e0061c10fc08055762639ee">json_object.h</a>
+</li>
 <li>json_object_object_foreachC
-: <a class="el" href="json__object_8h.html#71f07006c12d78f7bbf4cb716a5af3a6">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a71f07006c12d78f7bbf4cb716a5af3a6">json_object.h</a>
+</li>
 <li>json_object_object_get()
-: <a class="el" href="json__object_8h.html#c11730ad909d1f9eb077d1ce9ff8b153">json_object.h</a>
+: <a class="el" href="json__object_8h.html#ac11730ad909d1f9eb077d1ce9ff8b153">json_object.h</a>
+</li>
+<li>json_object_object_get_ex()
+: <a class="el" href="json__object_8h.html#af3f38b3395b1af8e9d3ac73818c3a936">json_object.h</a>
+</li>
 <li>json_object_put()
-: <a class="el" href="json__object_8h.html#ccc34b38e15e46357d64a0beed3d0150">json_object.h</a>
+: <a class="el" href="json__object_8h.html#accc34b38e15e46357d64a0beed3d0150">json_object.h</a>
+</li>
 <li>json_object_to_file()
-: <a class="el" href="json__util_8h.html#00f5c43b3035faa4e4f3e55cf59707ee">json_util.h</a>
+: <a class="el" href="json__util_8h.html#a00f5c43b3035faa4e4f3e55cf59707ee">json_util.h</a>
+</li>
+<li>json_object_to_file_ext()
+: <a class="el" href="json__util_8h.html#a1ddcf96dd176ed447ce4df383190cfa8">json_util.h</a>
+</li>
 <li>json_object_to_json_string()
-: <a class="el" href="json__object_8h.html#1f62a660e2619559d1f3f54cd7483ff8">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a1f62a660e2619559d1f3f54cd7483ff8">json_object.h</a>
+</li>
+<li>json_object_to_json_string_ext()
+: <a class="el" href="json__object_8h.html#a84421dab94ccad42e901e534c6d7b658">json_object.h</a>
+</li>
 <li>json_object_to_json_string_fn
-: <a class="el" href="json__object__private_8h.html#98a52f3a465575f19a4f1b7556959953">json_object_private.h</a>
+: <a class="el" href="json__object__private_8h.html#a778fe57040398137cf9ccf9f2dd53282">json_object_private.h</a>
+</li>
+<li>json_parse_int64()
+: <a class="el" href="json__util_8h.html#a9bb9882ef2859ca2c1ee17805679bc25">json_util.h</a>
+</li>
 <li>json_tokener
-: <a class="el" href="json__object_8h.html#4dd5e5b65aee7f376f529f86b210ff49">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a4dd5e5b65aee7f376f529f86b210ff49">json_object.h</a>
+</li>
 <li>json_tokener_continue
-: <a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb599b26e920ca765df91c84e999561d8fb0">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59a9b26e920ca765df91c84e999561d8fb0">json_tokener.h</a>
+</li>
 <li>json_tokener_error
-: <a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb59">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59">json_tokener.h</a>
+</li>
 <li>json_tokener_error_depth
-: <a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb5959b2c36d9cc30c3038e09b9ddee6c86c">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59a59b2c36d9cc30c3038e09b9ddee6c86c">json_tokener.h</a>
+</li>
+<li>json_tokener_error_desc()
+: <a class="el" href="json__tokener_8h.html#a04c5625212aed3216cc303429e47f642">json_tokener.h</a>
+</li>
 <li>json_tokener_error_parse_array
-: <a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb59574846740b785146f164a209dc89574e">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59a574846740b785146f164a209dc89574e">json_tokener.h</a>
+</li>
 <li>json_tokener_error_parse_boolean
-: <a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb59ddbdfe084e20709da3d20c8ae8ca278c">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59addbdfe084e20709da3d20c8ae8ca278c">json_tokener.h</a>
+</li>
 <li>json_tokener_error_parse_comment
-: <a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb593588c05b1da8b909a8cbdef66b0a1a28">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59a3588c05b1da8b909a8cbdef66b0a1a28">json_tokener.h</a>
+</li>
 <li>json_tokener_error_parse_eof
-: <a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb598f774f4c7869afdd9b92295fca3a9ded">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59a8f774f4c7869afdd9b92295fca3a9ded">json_tokener.h</a>
+</li>
 <li>json_tokener_error_parse_null
-: <a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb59641bbb8d881fdd1e463f20a1a203b77c">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59a641bbb8d881fdd1e463f20a1a203b77c">json_tokener.h</a>
+</li>
 <li>json_tokener_error_parse_number
-: <a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb59b1b3ad685eb97235d269cc5b9eb7ab81">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59ab1b3ad685eb97235d269cc5b9eb7ab81">json_tokener.h</a>
+</li>
 <li>json_tokener_error_parse_object_key_name
-: <a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb592003bd8e96c6680cd22419c5ceafd4c0">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59a2003bd8e96c6680cd22419c5ceafd4c0">json_tokener.h</a>
+</li>
 <li>json_tokener_error_parse_object_key_sep
-: <a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb59f91a2a819b0d6344d6d4e1d2579f28fd">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59af91a2a819b0d6344d6d4e1d2579f28fd">json_tokener.h</a>
+</li>
 <li>json_tokener_error_parse_object_value_sep
-: <a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb599ddb98741aebf7ac44735b4a43717013">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59a9ddb98741aebf7ac44735b4a43717013">json_tokener.h</a>
+</li>
 <li>json_tokener_error_parse_string
-: <a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb59033ce89ce7b8f9e591e4bea92121c4c7">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59a033ce89ce7b8f9e591e4bea92121c4c7">json_tokener.h</a>
+</li>
 <li>json_tokener_error_parse_unexpected
-: <a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb593309fa8ea4ab3ee0a81c55b69d223710">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59a3309fa8ea4ab3ee0a81c55b69d223710">json_tokener.h</a>
+</li>
 <li>json_tokener_errors
-: <a class="el" href="json__tokener_8h.html#6ede8ee7a4ec1fed68d10ea77294c966">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a6ede8ee7a4ec1fed68d10ea77294c966">json_tokener.h</a>
+</li>
 <li>json_tokener_free()
-: <a class="el" href="json__tokener_8h.html#f6645ff27c0ca82c6e314390814fcbeb">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af6645ff27c0ca82c6e314390814fcbeb">json_tokener.h</a>
+</li>
+<li>json_tokener_get_error()
+: <a class="el" href="json__tokener_8h.html#ae8dff7f1ea11702aecf418e0da5574fe">json_tokener.h</a>
+</li>
 <li>JSON_TOKENER_MAX_DEPTH
-: <a class="el" href="json__tokener_8h.html#c4299cf4ed799b028e61cf7b2b0d5f1f">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#ac4299cf4ed799b028e61cf7b2b0d5f1f">json_tokener.h</a>
+</li>
 <li>json_tokener_new()
-: <a class="el" href="json__tokener_8h.html#55d6e8a6f6d90992c063a39e21769c52">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a55d6e8a6f6d90992c063a39e21769c52">json_tokener.h</a>
+</li>
 <li>json_tokener_parse()
-: <a class="el" href="json__tokener_8h.html#bf031fdf1e5caab71e2225a99588c6bb">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#abf031fdf1e5caab71e2225a99588c6bb">json_tokener.h</a>
+</li>
 <li>json_tokener_parse_ex()
-: <a class="el" href="json__tokener_8h.html#0d9a666c21879647e8831f9cfa691673">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a0d9a666c21879647e8831f9cfa691673">json_tokener.h</a>
+</li>
+<li>json_tokener_parse_verbose()
+: <a class="el" href="json__tokener_8h.html#a1c8f5d8baad383dc8879615d2b02b53c">json_tokener.h</a>
+</li>
 <li>json_tokener_reset()
-: <a class="el" href="json__tokener_8h.html#e23dd7ad4737bfc18409af6173ab2b09">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#ae23dd7ad4737bfc18409af6173ab2b09">json_tokener.h</a>
+</li>
 <li>json_tokener_state
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e2">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2">json_tokener.h</a>
+</li>
 <li>json_tokener_state_array
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e2b3d763300f1914865be09d603ddc11f4">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2ab3d763300f1914865be09d603ddc11f4">json_tokener.h</a>
+</li>
 <li>json_tokener_state_array_add
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e2a2a01798ebe318ea91c38a886418f771">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2aa2a01798ebe318ea91c38a886418f771">json_tokener.h</a>
+</li>
 <li>json_tokener_state_array_sep
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e24ec7762aeab3424cbb14354c94025865">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a4ec7762aeab3424cbb14354c94025865">json_tokener.h</a>
+</li>
 <li>json_tokener_state_boolean
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e23525b15ecd0a698281b3914115b6bd3e">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a3525b15ecd0a698281b3914115b6bd3e">json_tokener.h</a>
+</li>
 <li>json_tokener_state_comment
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e28c2680b8873a8dce85f0b1ac25882dc9">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a8c2680b8873a8dce85f0b1ac25882dc9">json_tokener.h</a>
+</li>
 <li>json_tokener_state_comment_end
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e262cef297a37a98b1239ea4bbd39723e1">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a62cef297a37a98b1239ea4bbd39723e1">json_tokener.h</a>
+</li>
 <li>json_tokener_state_comment_eol
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e2d8151350b1ef50298bafbab244ac1162">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2ad8151350b1ef50298bafbab244ac1162">json_tokener.h</a>
+</li>
 <li>json_tokener_state_comment_start
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e20ff1d1935d49188aa1e6b998d43e655c">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a0ff1d1935d49188aa1e6b998d43e655c">json_tokener.h</a>
+</li>
 <li>json_tokener_state_eatws
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e29db152607ec1872a000f1fcd8757297d">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a9db152607ec1872a000f1fcd8757297d">json_tokener.h</a>
+</li>
 <li>json_tokener_state_escape_unicode
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e26c852da2e694be56799c58c201d6dca0">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a6c852da2e694be56799c58c201d6dca0">json_tokener.h</a>
+</li>
 <li>json_tokener_state_finish
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e2d80b689cb709967b67a348de3d8601d2">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2ad80b689cb709967b67a348de3d8601d2">json_tokener.h</a>
+</li>
 <li>json_tokener_state_null
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e2668fb2654c59608945370003403a5792">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a668fb2654c59608945370003403a5792">json_tokener.h</a>
+</li>
 <li>json_tokener_state_number
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e27ce18d281d322af690b45f3b8b599e81">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a7ce18d281d322af690b45f3b8b599e81">json_tokener.h</a>
+</li>
 <li>json_tokener_state_object_field
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e277375940a10806e81d99876d13be67fc">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a77375940a10806e81d99876d13be67fc">json_tokener.h</a>
+</li>
 <li>json_tokener_state_object_field_end
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e20220aea1d9204aadfffde92c7f73f5f7">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a0220aea1d9204aadfffde92c7f73f5f7">json_tokener.h</a>
+</li>
 <li>json_tokener_state_object_field_start
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e28c7dbda177a5d83a36a64f7cb99b9a29">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a8c7dbda177a5d83a36a64f7cb99b9a29">json_tokener.h</a>
+</li>
 <li>json_tokener_state_object_sep
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e2daf3e06c5fc04fd4f04040cd67698215">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2adaf3e06c5fc04fd4f04040cd67698215">json_tokener.h</a>
+</li>
 <li>json_tokener_state_object_value
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e24c7b7deac37355491572f6da84f208aa">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a4c7b7deac37355491572f6da84f208aa">json_tokener.h</a>
+</li>
 <li>json_tokener_state_object_value_add
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e2de6bee72f2147e634b19eb84e58eb162">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2ade6bee72f2147e634b19eb84e58eb162">json_tokener.h</a>
+</li>
 <li>json_tokener_state_start
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e27c4c0bed1ebde45f5a99de4278792d72">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a7c4c0bed1ebde45f5a99de4278792d72">json_tokener.h</a>
+</li>
 <li>json_tokener_state_string
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e2a90ea4c327a285bfbbce49d42d491d65">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2aa90ea4c327a285bfbbce49d42d491d65">json_tokener.h</a>
+</li>
 <li>json_tokener_state_string_escape
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e21cf793d73587f68c4f2b3b4f65ff728e">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a1cf793d73587f68c4f2b3b4f65ff728e">json_tokener.h</a>
+</li>
 <li>json_tokener_success
-: <a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb59fe2fa9bde03155019b2df30f66a5fcd0">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59afe2fa9bde03155019b2df30f66a5fcd0">json_tokener.h</a>
+</li>
 <li>json_type
-: <a class="el" href="json__object_8h.html#c75c61993722a9b8aaa44704072ec06c">json_object.h</a>
+: <a class="el" href="json__object_8h.html#aba5eff84f8638d22f50403175f270c96">json_object.h</a>
+</li>
 <li>json_type_array
-: <a class="el" href="json__object_8h.html#c75c61993722a9b8aaa44704072ec06ce536c8c9da4648e6b9348abddde6113c">json_object.h</a>
+: <a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06cae536c8c9da4648e6b9348abddde6113c">json_object.h</a>
+</li>
 <li>json_type_boolean
-: <a class="el" href="json__object_8h.html#c75c61993722a9b8aaa44704072ec06c5d15299e90dbb9935ff6d3e2c22a285c">json_object.h</a>
+: <a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06ca5d15299e90dbb9935ff6d3e2c22a285c">json_object.h</a>
+</li>
 <li>json_type_double
-: <a class="el" href="json__object_8h.html#c75c61993722a9b8aaa44704072ec06cc6ac2d9a16577d00210fea64d16b47cd">json_object.h</a>
+: <a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06cac6ac2d9a16577d00210fea64d16b47cd">json_object.h</a>
+</li>
 <li>json_type_int
-: <a class="el" href="json__object_8h.html#c75c61993722a9b8aaa44704072ec06c7bf325c213b43c5f970ae2d4443ab956">json_object.h</a>
+: <a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06ca7bf325c213b43c5f970ae2d4443ab956">json_object.h</a>
+</li>
 <li>json_type_null
-: <a class="el" href="json__object_8h.html#c75c61993722a9b8aaa44704072ec06c127e62d156e13517471fcde3378979c1">json_object.h</a>
+: <a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06ca127e62d156e13517471fcde3378979c1">json_object.h</a>
+</li>
 <li>json_type_object
-: <a class="el" href="json__object_8h.html#c75c61993722a9b8aaa44704072ec06cc966c8008f0b2c07da59ee8a60ad440f">json_object.h</a>
+: <a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06cac966c8008f0b2c07da59ee8a60ad440f">json_object.h</a>
+</li>
 <li>json_type_string
-: <a class="el" href="json__object_8h.html#c75c61993722a9b8aaa44704072ec06cc9f56e57c09245522d764015a054faa6">json_object.h</a>
+: <a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06cac9f56e57c09245522d764015a054faa6">json_object.h</a>
+</li>
+<li>json_type_to_name()
+: <a class="el" href="json__util_8h.html#a74031a1b948dc9fed3f367ea6ce78389">json_util.h</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_l">- l -</a></h3><ul>
 <li>lh_abort()
-: <a class="el" href="linkhash_8h.html#1294160fa0e80cee04cd745a401f43a4">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#a1294160fa0e80cee04cd745a401f43a4">linkhash.h</a>
+</li>
 <li>lh_char_equal()
-: <a class="el" href="linkhash_8h.html#e4e9f21fb1a556c7a50c6b7ea61f2079">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#ae4e9f21fb1a556c7a50c6b7ea61f2079">linkhash.h</a>
+</li>
 <li>lh_char_hash()
-: <a class="el" href="linkhash_8h.html#1fcf495b9c4ce169630cb31f638b8435">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#a1fcf495b9c4ce169630cb31f638b8435">linkhash.h</a>
+</li>
 <li>LH_EMPTY
-: <a class="el" href="linkhash_8h.html#93fad7f8ae44575dc89c9567859972d2">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#a93fad7f8ae44575dc89c9567859972d2">linkhash.h</a>
+</li>
 <li>lh_entry_free_fn
-: <a class="el" href="linkhash_8h.html#671553d0ee3c2a123190ba0f8ed2b635">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#a671553d0ee3c2a123190ba0f8ed2b635">linkhash.h</a>
+</li>
 <li>lh_equal_fn
-: <a class="el" href="linkhash_8h.html#91fd85fc81b0c7c83c62f00e84729091">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#a91fd85fc81b0c7c83c62f00e84729091">linkhash.h</a>
+</li>
 <li>lh_foreach
-: <a class="el" href="linkhash_8h.html#d7dd67da915065dce2c6f44cb03e2d82">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#ad7dd67da915065dce2c6f44cb03e2d82">linkhash.h</a>
+</li>
 <li>lh_foreach_safe
-: <a class="el" href="linkhash_8h.html#bcbb0df08b4976d0649b826b6bacfca1">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#abcbb0df08b4976d0649b826b6bacfca1">linkhash.h</a>
+</li>
 <li>LH_FREED
-: <a class="el" href="linkhash_8h.html#c69428f2de0a6fb080b6fb373d506aa7">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#ac69428f2de0a6fb080b6fb373d506aa7">linkhash.h</a>
+</li>
 <li>lh_hash_fn
-: <a class="el" href="linkhash_8h.html#38bae27995dcfb6ee3fb109a9be229b2">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#a38bae27995dcfb6ee3fb109a9be229b2">linkhash.h</a>
+</li>
 <li>lh_kchar_table_new()
-: <a class="el" href="linkhash_8h.html#0aaf11e11ee5b0925279a52eab04bc38">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#a0aaf11e11ee5b0925279a52eab04bc38">linkhash.h</a>
+</li>
 <li>lh_kptr_table_new()
-: <a class="el" href="linkhash_8h.html#705513954267a16cc1d40a284a7c441e">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#a705513954267a16cc1d40a284a7c441e">linkhash.h</a>
+</li>
+<li>LH_LOAD_FACTOR
+: <a class="el" href="linkhash_8h.html#a66b61772c29d85eb52b697e0b0dc0aaf">linkhash.h</a>
+</li>
 <li>LH_PRIME
-: <a class="el" href="linkhash_8h.html#032f1bd115df254dda325437203ce5fb">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#a032f1bd115df254dda325437203ce5fb">linkhash.h</a>
+</li>
 <li>lh_ptr_equal()
-: <a class="el" href="linkhash_8h.html#6ce3cb97560072c40f5caeaba85f756a">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#a6ce3cb97560072c40f5caeaba85f756a">linkhash.h</a>
+</li>
 <li>lh_ptr_hash()
-: <a class="el" href="linkhash_8h.html#2e560f0d3e5a20f6b0bfa4049737db23">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#a2e560f0d3e5a20f6b0bfa4049737db23">linkhash.h</a>
+</li>
 <li>lh_table
-: <a class="el" href="json__object_8h.html#766e90057496fc6712d6be0da180a21f">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a766e90057496fc6712d6be0da180a21f">json_object.h</a>
+</li>
 <li>lh_table_delete()
-: <a class="el" href="linkhash_8h.html#2fed2c78f70d229edb2d00775ffe593c">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#a2fed2c78f70d229edb2d00775ffe593c">linkhash.h</a>
+</li>
 <li>lh_table_delete_entry()
-: <a class="el" href="linkhash_8h.html#e5885a71c3457190fb1dc2d6e20dde3b">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#ae5885a71c3457190fb1dc2d6e20dde3b">linkhash.h</a>
+</li>
 <li>lh_table_free()
-: <a class="el" href="linkhash_8h.html#81653acf740cf8c9fe672e6cd16df0cf">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#a81653acf740cf8c9fe672e6cd16df0cf">linkhash.h</a>
+</li>
 <li>lh_table_insert()
-: <a class="el" href="linkhash_8h.html#22b897763cc34a98c21c7fe82d151004">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#a22b897763cc34a98c21c7fe82d151004">linkhash.h</a>
+</li>
 <li>lh_table_lookup()
-: <a class="el" href="linkhash_8h.html#49c27f18a174eaf126d1b7953df13cb1">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#a49c27f18a174eaf126d1b7953df13cb1">linkhash.h</a>
+</li>
 <li>lh_table_lookup_entry()
-: <a class="el" href="linkhash_8h.html#d3b6ca2d967a6c3021ee6c39e014a918">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#ad3b6ca2d967a6c3021ee6c39e014a918">linkhash.h</a>
+</li>
+<li>lh_table_lookup_ex()
+: <a class="el" href="linkhash_8h.html#a81c270bb0dd9d5c8a3e7ae20bc4d67f3">linkhash.h</a>
+</li>
 <li>lh_table_new()
-: <a class="el" href="linkhash_8h.html#c3ba464ac43c083397b1f1d34f2ddf55">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#ac3ba464ac43c083397b1f1d34f2ddf55">linkhash.h</a>
+</li>
 <li>lh_table_resize()
-: <a class="el" href="linkhash_8h.html#5322eccf3394af7dc1ebb22af8f8c562">linkhash.h</a>
-<li>LT_OBJDIR
-: <a class="el" href="config_8h.html#c2d5925d76379847dd9fc4747b061659">config.h</a>
+: <a class="el" href="linkhash_8h.html#a5322eccf3394af7dc1ebb22af8f8c562">linkhash.h</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
-<li>mc_abort()
-: <a class="el" href="debug_8h.html#44913dbc4f1abf6614d42b22b941c092">debug.h</a>
+
+
+<h3><a class="anchor" id="index_m">- m -</a></h3><ul>
 <li>MC_ABORT
-: <a class="el" href="debug_8h.html#25591d3d4754c0c6d1f2b5463fb4977e">debug.h</a>
+: <a class="el" href="debug_8h.html#a25591d3d4754c0c6d1f2b5463fb4977e">debug.h</a>
+</li>
+<li>mc_abort()
+: <a class="el" href="debug_8h.html#a44913dbc4f1abf6614d42b22b941c092">debug.h</a>
+</li>
 <li>mc_debug()
-: <a class="el" href="debug_8h.html#600cf4cbbe19c0c15ca3710210e35aba">debug.h</a>
+: <a class="el" href="debug_8h.html#a600cf4cbbe19c0c15ca3710210e35aba">debug.h</a>
+</li>
 <li>MC_DEBUG
-: <a class="el" href="debug_8h.html#fda355b35d18bf2e6a2a22d5c8eef42c">debug.h</a>
+: <a class="el" href="debug_8h.html#afda355b35d18bf2e6a2a22d5c8eef42c">debug.h</a>
+</li>
 <li>MC_ERROR
-: <a class="el" href="debug_8h.html#11ba39cecbe449af5b86fa2f78e9da9d">debug.h</a>
+: <a class="el" href="debug_8h.html#a11ba39cecbe449af5b86fa2f78e9da9d">debug.h</a>
+</li>
 <li>mc_error()
-: <a class="el" href="debug_8h.html#bf22ea3a331c7ff21c23da91a07c7cb2">debug.h</a>
-<li>mc_get_debug()
-: <a class="el" href="debug_8h.html#3b3ab3ae8b438384fb109a2e38646b6e">debug.h</a>
+: <a class="el" href="debug_8h.html#abf22ea3a331c7ff21c23da91a07c7cb2">debug.h</a>
+</li>
 <li>MC_GET_DEBUG
-: <a class="el" href="debug_8h.html#cb272a4b4444b69cd995236f167f90ba">debug.h</a>
+: <a class="el" href="debug_8h.html#acb272a4b4444b69cd995236f167f90ba">debug.h</a>
+</li>
+<li>mc_get_debug()
+: <a class="el" href="debug_8h.html#a3b3ab3ae8b438384fb109a2e38646b6e">debug.h</a>
+</li>
 <li>mc_info()
-: <a class="el" href="debug_8h.html#cbb92996a994e316ff65ed3a026e12a4">debug.h</a>
+: <a class="el" href="debug_8h.html#acbb92996a994e316ff65ed3a026e12a4">debug.h</a>
+</li>
 <li>MC_INFO
-: <a class="el" href="debug_8h.html#5ef640ce1e9e61c5f6632aefbbfa0041">debug.h</a>
-<li>MC_SET_DEBUG
-: <a class="el" href="debug_8h.html#50f21a239fa040a10ad4cfdb4278b02b">debug.h</a>
+: <a class="el" href="debug_8h.html#a5ef640ce1e9e61c5f6632aefbbfa0041">debug.h</a>
+</li>
 <li>mc_set_debug()
-: <a class="el" href="debug_8h.html#f65a73617b71476020a005b20bf02726">debug.h</a>
-<li>MC_SET_SYSLOG
-: <a class="el" href="debug_8h.html#cf1e895cb5eb7f334cbe51901e6bb918">debug.h</a>
+: <a class="el" href="debug_8h.html#af65a73617b71476020a005b20bf02726">debug.h</a>
+</li>
+<li>MC_SET_DEBUG
+: <a class="el" href="debug_8h.html#a50f21a239fa040a10ad4cfdb4278b02b">debug.h</a>
+</li>
 <li>mc_set_syslog()
-: <a class="el" href="debug_8h.html#adb888da410116384e75a00db30da705">debug.h</a>
+: <a class="el" href="debug_8h.html#aadb888da410116384e75a00db30da705">debug.h</a>
+</li>
+<li>MC_SET_SYSLOG
+: <a class="el" href="debug_8h.html#acf1e895cb5eb7f334cbe51901e6bb918">debug.h</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
-<li>PACKAGE
-: <a class="el" href="config_8h.html#ca8570fb706c81df371b7f9bc454ae03">config.h</a>
-<li>PACKAGE_BUGREPORT
-: <a class="el" href="config_8h.html#1d1d2d7f8d2f95b376954d649ab03233">config.h</a>
-<li>PACKAGE_NAME
-: <a class="el" href="config_8h.html#1c0439e4355794c09b64274849eb0279">config.h</a>
-<li>PACKAGE_STRING
-: <a class="el" href="config_8h.html#c73e6f903c16eca7710f92e36e1c6fbf">config.h</a>
-<li>PACKAGE_TARNAME
-: <a class="el" href="config_8h.html#f415af6bfede0e8d5453708afe68651c">config.h</a>
-<li>PACKAGE_VERSION
-: <a class="el" href="config_8h.html#a326a05d5e30f9e9a4bb0b4469d5d0c0">config.h</a>
+
+
+<h3><a class="anchor" id="index_p">- p -</a></h3><ul>
 <li>printbuf
-: <a class="el" href="json__object_8h.html#ce274df280df67463ff417b1b3392395">json_object.h</a>
+: <a class="el" href="json__object_8h.html#ace274df280df67463ff417b1b3392395">json_object.h</a>
+</li>
 <li>printbuf_free()
-: <a class="el" href="printbuf_8h.html#b525221c767ac65c58ddeea8a655a4e8">printbuf.h</a>
+: <a class="el" href="printbuf_8h.html#ab525221c767ac65c58ddeea8a655a4e8">printbuf.h</a>
+</li>
+<li>printbuf_length
+: <a class="el" href="printbuf_8h.html#acdd84ad88987c0166b7ba0e3f1f8f1bb">printbuf.h</a>
+</li>
 <li>printbuf_memappend()
-: <a class="el" href="printbuf_8h.html#22f09779a19db59a83e7cb8c2ce4c75f">printbuf.h</a>
+: <a class="el" href="printbuf_8h.html#a22f09779a19db59a83e7cb8c2ce4c75f">printbuf.h</a>
+</li>
 <li>printbuf_memappend_fast
-: <a class="el" href="printbuf_8h.html#6f3a4dc87fab41c37e3eff42f40dc346">printbuf.h</a>
+: <a class="el" href="printbuf_8h.html#a6f3a4dc87fab41c37e3eff42f40dc346">printbuf.h</a>
+</li>
+<li>printbuf_memset()
+: <a class="el" href="printbuf_8h.html#ad7fc6ec4c296e85abf404244614cded5">printbuf.h</a>
+</li>
 <li>printbuf_new()
-: <a class="el" href="printbuf_8h.html#3e390ebc7660a18335edd89f640fd415">printbuf.h</a>
+: <a class="el" href="printbuf_8h.html#a3e390ebc7660a18335edd89f640fd415">printbuf.h</a>
+</li>
 <li>printbuf_reset()
-: <a class="el" href="printbuf_8h.html#4393ee3dedb376af11c96fe97532292e">printbuf.h</a>
+: <a class="el" href="printbuf_8h.html#a4393ee3dedb376af11c96fe97532292e">printbuf.h</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_s">- s -</a></h3><ul>
 <li>sprintbuf()
-: <a class="el" href="printbuf_8h.html#df6214db6c8ce994c7f7f1180863c8a4">printbuf.h</a>
-<li>STDC_HEADERS
-: <a class="el" href="config_8h.html#550e5c272cc3cf3814651721167dcd23">config.h</a>
+: <a class="el" href="printbuf_8h.html#adf6214db6c8ce994c7f7f1180863c8a4">printbuf.h</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_t">- t -</a></h3><ul>
 <li>TRUE
-: <a class="el" href="json__object_8h.html#a8cecfc5c5c054d2875c03e77b7be15d">json_object.h</a>
-</ul>
-<h3><a class="anchor" name="index_v">- v -</a></h3><ul>
-<li>VERSION
-: <a class="el" href="config_8h.html#1c6d5de492ac61ad29aec7aa9a436bbf">config.h</a>
+: <a class="el" href="json__object_8h.html#aa8cecfc5c5c054d2875c03e77b7be15d">json_object.h</a>
+</li>
 </ul>
 </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by&nbsp;
 <a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>
 </html>
index ab678f8..4855185 100644 (file)
@@ -1,14 +1,18 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>json-c: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
 <div class="navigation" id="top">
   <div class="tabs">
     <ul>
       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
       <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
       <li class="current"><a href="files.html"><span>Files</span></a></li>
     </ul>
@@ -32,6 +36,7 @@
   </div>
   <div class="tabs">
     <ul>
+      <li><a href="#index__"><span>_</span></a></li>
       <li><a href="#index_a"><span>a</span></a></li>
       <li><a href="#index_e"><span>e</span></a></li>
       <li><a href="#index_f"><span>f</span></a></li>
       <li><a href="#index_l"><span>l</span></a></li>
       <li><a href="#index_m"><span>m</span></a></li>
       <li><a href="#index_p"><span>p</span></a></li>
-      <li><a href="#index_s"><span>s</span></a></li>
       <li><a href="#index_t"><span>t</span></a></li>
-      <li><a href="#index_v"><span>v</span></a></li>
     </ul>
   </div>
 </div>
 <div class="contents">
 &nbsp;
-<p>
-<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
+
+<h3><a class="anchor" id="index__">- _ -</a></h3><ul>
+<li>__STRING
+: <a class="el" href="debug_8h.html#a375c4dc9f0fb338999de81aab826f9d6">debug.h</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_a">- a -</a></h3><ul>
 <li>ARRAY_LIST_DEFAULT_SIZE
-: <a class="el" href="arraylist_8h.html#cd30d910b398421574eb1f59e78617f5">arraylist.h</a>
+: <a class="el" href="arraylist_8h.html#acd30d910b398421574eb1f59e78617f5">arraylist.h</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_e">- e -</a></h3><ul>
+<li>error_description
+: <a class="el" href="bits_8h.html#a45afe86501cd57ee2beeef9d67a4d40c">bits.h</a>
+</li>
 <li>error_ptr
-: <a class="el" href="bits_8h.html#863a898e607f8c2ff87b7052e326740f">bits.h</a>
+: <a class="el" href="bits_8h.html#a863a898e607f8c2ff87b7052e326740f">bits.h</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_f">- f -</a></h3><ul>
 <li>FALSE
-: <a class="el" href="json__object_8h.html#a93f0eb578d23995850d61f7d61c55c1">json_object.h</a>
+: <a class="el" href="json__object_8h.html#aa93f0eb578d23995850d61f7d61c55c1">json_object.h</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
-<li>HAVE_DLFCN_H
-: <a class="el" href="config_8h.html#0ee1617ff2f6885ef384a3dd46f9b9d7">config.h</a>
-<li>HAVE_FCNTL_H
-: <a class="el" href="config_8h.html#765d75020849aa0a9b6becd9a5b7a193">config.h</a>
-<li>HAVE_INTTYPES_H
-: <a class="el" href="config_8h.html#b90a030ff2790ebdc176660a6dd2a478">config.h</a>
-<li>HAVE_LIMITS_H
-: <a class="el" href="config_8h.html#c70f0930238c8d095d7cc2ee8b522c77">config.h</a>
-<li>HAVE_MALLOC
-: <a class="el" href="config_8h.html#14503280ca0cb757db915eea09282bfc">config.h</a>
-<li>HAVE_MEMORY_H
-: <a class="el" href="config_8h.html#e93a78f9d076138897af441c9f86f285">config.h</a>
-<li>HAVE_OPEN
-: <a class="el" href="config_8h.html#f774525bc701ed09c9ab1bc93827bea0">config.h</a>
-<li>HAVE_REALLOC
-: <a class="el" href="config_8h.html#0302094a0ee567c610a36c63104ebda5">config.h</a>
-<li>HAVE_STDARG_H
-: <a class="el" href="config_8h.html#3a3f8c7f8da8cac799fb620a2dbf2b15">config.h</a>
-<li>HAVE_STDINT_H
-: <a class="el" href="config_8h.html#b6cd6d1c63c1e26ea2d4537b77148354">config.h</a>
-<li>HAVE_STDLIB_H
-: <a class="el" href="config_8h.html#9e0e434ec1a6ddbd97db12b5a32905e0">config.h</a>
-<li>HAVE_STRERROR
-: <a class="el" href="config_8h.html#992653625041edef146772df96f7bca9">config.h</a>
-<li>HAVE_STRING_H
-: <a class="el" href="config_8h.html#d4c234dd1625255dc626a15886306e7d">config.h</a>
-<li>HAVE_STRINGS_H
-: <a class="el" href="config_8h.html#405d10d46190bcb0320524c54eafc850">config.h</a>
-<li>HAVE_STRNCASECMP
-: <a class="el" href="config_8h.html#6b9c27181277250e218629da3b335a16">config.h</a>
-<li>HAVE_STRNDUP
-: <a class="el" href="config_8h.html#3a51807b746f8e1a067ebdf86faf9a57">config.h</a>
-<li>HAVE_SYS_PARAM_H
-: <a class="el" href="config_8h.html#05aa9fc25e1231d8eb347390558e4e22">config.h</a>
-<li>HAVE_SYS_STAT_H
-: <a class="el" href="config_8h.html#ce156430ba007d19b4348a950d0c692b">config.h</a>
-<li>HAVE_SYS_TYPES_H
-: <a class="el" href="config_8h.html#69dc70bea5d1f8bd2be9740e974fa666">config.h</a>
-<li>HAVE_SYSLOG_H
-: <a class="el" href="config_8h.html#695d4e005378df4a1f286cb3d0f4b333">config.h</a>
-<li>HAVE_UNISTD_H
-: <a class="el" href="config_8h.html#219b06937831d0da94d801ab13987639">config.h</a>
-<li>HAVE_VASPRINTF
-: <a class="el" href="config_8h.html#4fe6a935417fff94aee592b4e7823041">config.h</a>
-<li>HAVE_VPRINTF
-: <a class="el" href="config_8h.html#11e8ffa0e0ee1d52812402f2eac05fa7">config.h</a>
-<li>HAVE_VSNPRINTF
-: <a class="el" href="config_8h.html#4ac6a60cb19181437136206238f16497">config.h</a>
-<li>HAVE_VSYSLOG
-: <a class="el" href="config_8h.html#17b116b63c7e0c28953090da138f10fa">config.h</a>
+
+
+<h3><a class="anchor" id="index_h">- h -</a></h3><ul>
 <li>hexdigit
-: <a class="el" href="bits_8h.html#1cf38b22d3a118ad48d9282c32c048aa">bits.h</a>
+: <a class="el" href="bits_8h.html#a1cf38b22d3a118ad48d9282c32c048aa">bits.h</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_i">- i -</a></h3><ul>
 <li>is_error
-: <a class="el" href="bits_8h.html#4a887e5fb7cde221bcab9c6f39d93fc1">bits.h</a>
+: <a class="el" href="bits_8h.html#a4a887e5fb7cde221bcab9c6f39d93fc1">bits.h</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_j">- j -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_j">- j -</a></h3><ul>
+<li>JASSERT
+: <a class="el" href="debug_8h.html#a8ca29550d5b1b73948f4a7bce53f2385">debug.h</a>
+</li>
+<li>JSON_C_TO_STRING_PLAIN
+: <a class="el" href="json__object_8h.html#a3294cb92765cdeb497cfd346644d1059">json_object.h</a>
+</li>
+<li>JSON_C_TO_STRING_PRETTY
+: <a class="el" href="json__object_8h.html#a2025bc677c35f130e117dfda5bf1ef73">json_object.h</a>
+</li>
+<li>JSON_C_TO_STRING_SPACED
+: <a class="el" href="json__object_8h.html#aa821746c8668e6ad62bed90ec9e00103">json_object.h</a>
+</li>
 <li>JSON_FILE_BUF_SIZE
-: <a class="el" href="json__util_8h.html#084b6afc8f7fbef88976aabe4aca7efd">json_util.h</a>
+: <a class="el" href="json__util_8h.html#a084b6afc8f7fbef88976aabe4aca7efd">json_util.h</a>
+</li>
 <li>json_max
-: <a class="el" href="bits_8h.html#57d63d199d4b9ea40359253618951300">bits.h</a>
+: <a class="el" href="bits_8h.html#a57d63d199d4b9ea40359253618951300">bits.h</a>
+</li>
 <li>json_min
-: <a class="el" href="bits_8h.html#3dde282dc23d0eaa3c4840df8dc262d4">bits.h</a>
+: <a class="el" href="bits_8h.html#a3dde282dc23d0eaa3c4840df8dc262d4">bits.h</a>
+</li>
 <li>JSON_OBJECT_DEF_HASH_ENTRIES
-: <a class="el" href="json__object_8h.html#268a63dd1b2e6d81559e268a4529e9bf">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a268a63dd1b2e6d81559e268a4529e9bf">json_object.h</a>
+</li>
 <li>json_object_object_foreach
-: <a class="el" href="json__object_8h.html#cf5f514a9e0061c10fc08055762639ee">json_object.h</a>
+: <a class="el" href="json__object_8h.html#acf5f514a9e0061c10fc08055762639ee">json_object.h</a>
+</li>
 <li>json_object_object_foreachC
-: <a class="el" href="json__object_8h.html#71f07006c12d78f7bbf4cb716a5af3a6">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a71f07006c12d78f7bbf4cb716a5af3a6">json_object.h</a>
+</li>
 <li>JSON_TOKENER_MAX_DEPTH
-: <a class="el" href="json__tokener_8h.html#c4299cf4ed799b028e61cf7b2b0d5f1f">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#ac4299cf4ed799b028e61cf7b2b0d5f1f">json_tokener.h</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_l">- l -</a></h3><ul>
 <li>LH_EMPTY
-: <a class="el" href="linkhash_8h.html#93fad7f8ae44575dc89c9567859972d2">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#a93fad7f8ae44575dc89c9567859972d2">linkhash.h</a>
+</li>
 <li>lh_foreach
-: <a class="el" href="linkhash_8h.html#d7dd67da915065dce2c6f44cb03e2d82">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#ad7dd67da915065dce2c6f44cb03e2d82">linkhash.h</a>
+</li>
 <li>lh_foreach_safe
-: <a class="el" href="linkhash_8h.html#bcbb0df08b4976d0649b826b6bacfca1">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#abcbb0df08b4976d0649b826b6bacfca1">linkhash.h</a>
+</li>
 <li>LH_FREED
-: <a class="el" href="linkhash_8h.html#c69428f2de0a6fb080b6fb373d506aa7">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#ac69428f2de0a6fb080b6fb373d506aa7">linkhash.h</a>
+</li>
+<li>LH_LOAD_FACTOR
+: <a class="el" href="linkhash_8h.html#a66b61772c29d85eb52b697e0b0dc0aaf">linkhash.h</a>
+</li>
 <li>LH_PRIME
-: <a class="el" href="linkhash_8h.html#032f1bd115df254dda325437203ce5fb">linkhash.h</a>
-<li>LT_OBJDIR
-: <a class="el" href="config_8h.html#c2d5925d76379847dd9fc4747b061659">config.h</a>
+: <a class="el" href="linkhash_8h.html#a032f1bd115df254dda325437203ce5fb">linkhash.h</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_m">- m -</a></h3><ul>
 <li>MC_ABORT
-: <a class="el" href="debug_8h.html#25591d3d4754c0c6d1f2b5463fb4977e">debug.h</a>
+: <a class="el" href="debug_8h.html#a25591d3d4754c0c6d1f2b5463fb4977e">debug.h</a>
+</li>
 <li>MC_DEBUG
-: <a class="el" href="debug_8h.html#fda355b35d18bf2e6a2a22d5c8eef42c">debug.h</a>
+: <a class="el" href="debug_8h.html#afda355b35d18bf2e6a2a22d5c8eef42c">debug.h</a>
+</li>
 <li>MC_ERROR
-: <a class="el" href="debug_8h.html#11ba39cecbe449af5b86fa2f78e9da9d">debug.h</a>
+: <a class="el" href="debug_8h.html#a11ba39cecbe449af5b86fa2f78e9da9d">debug.h</a>
+</li>
 <li>MC_GET_DEBUG
-: <a class="el" href="debug_8h.html#cb272a4b4444b69cd995236f167f90ba">debug.h</a>
+: <a class="el" href="debug_8h.html#acb272a4b4444b69cd995236f167f90ba">debug.h</a>
+</li>
 <li>MC_INFO
-: <a class="el" href="debug_8h.html#5ef640ce1e9e61c5f6632aefbbfa0041">debug.h</a>
+: <a class="el" href="debug_8h.html#a5ef640ce1e9e61c5f6632aefbbfa0041">debug.h</a>
+</li>
 <li>MC_SET_DEBUG
-: <a class="el" href="debug_8h.html#50f21a239fa040a10ad4cfdb4278b02b">debug.h</a>
+: <a class="el" href="debug_8h.html#a50f21a239fa040a10ad4cfdb4278b02b">debug.h</a>
+</li>
 <li>MC_SET_SYSLOG
-: <a class="el" href="debug_8h.html#cf1e895cb5eb7f334cbe51901e6bb918">debug.h</a>
+: <a class="el" href="debug_8h.html#acf1e895cb5eb7f334cbe51901e6bb918">debug.h</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
-<li>PACKAGE
-: <a class="el" href="config_8h.html#ca8570fb706c81df371b7f9bc454ae03">config.h</a>
-<li>PACKAGE_BUGREPORT
-: <a class="el" href="config_8h.html#1d1d2d7f8d2f95b376954d649ab03233">config.h</a>
-<li>PACKAGE_NAME
-: <a class="el" href="config_8h.html#1c0439e4355794c09b64274849eb0279">config.h</a>
-<li>PACKAGE_STRING
-: <a class="el" href="config_8h.html#c73e6f903c16eca7710f92e36e1c6fbf">config.h</a>
-<li>PACKAGE_TARNAME
-: <a class="el" href="config_8h.html#f415af6bfede0e8d5453708afe68651c">config.h</a>
-<li>PACKAGE_VERSION
-: <a class="el" href="config_8h.html#a326a05d5e30f9e9a4bb0b4469d5d0c0">config.h</a>
+
+
+<h3><a class="anchor" id="index_p">- p -</a></h3><ul>
+<li>printbuf_length
+: <a class="el" href="printbuf_8h.html#acdd84ad88987c0166b7ba0e3f1f8f1bb">printbuf.h</a>
+</li>
 <li>printbuf_memappend_fast
-: <a class="el" href="printbuf_8h.html#6f3a4dc87fab41c37e3eff42f40dc346">printbuf.h</a>
-</ul>
-<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
-<li>STDC_HEADERS
-: <a class="el" href="config_8h.html#550e5c272cc3cf3814651721167dcd23">config.h</a>
+: <a class="el" href="printbuf_8h.html#a6f3a4dc87fab41c37e3eff42f40dc346">printbuf.h</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_t">- t -</a></h3><ul>
 <li>TRUE
-: <a class="el" href="json__object_8h.html#a8cecfc5c5c054d2875c03e77b7be15d">json_object.h</a>
-</ul>
-<h3><a class="anchor" name="index_v">- v -</a></h3><ul>
-<li>VERSION
-: <a class="el" href="config_8h.html#1c6d5de492ac61ad29aec7aa9a436bbf">config.h</a>
+: <a class="el" href="json__object_8h.html#aa8cecfc5c5c054d2875c03e77b7be15d">json_object.h</a>
+</li>
 </ul>
 </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by&nbsp;
 <a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>
 </html>
index 267701a..4adee68 100644 (file)
@@ -1,14 +1,18 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>json-c: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
 <div class="navigation" id="top">
   <div class="tabs">
     <ul>
       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
       <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
       <li class="current"><a href="files.html"><span>Files</span></a></li>
     </ul>
   </div>
 </div>
 <div class="contents">
-&nbsp;
-<p>
-<ul>
+&nbsp;<ul>
 <li>json_tokener_error
-: <a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb59">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59">json_tokener.h</a>
+</li>
 <li>json_tokener_state
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e2">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2">json_tokener.h</a>
+</li>
 <li>json_type
-: <a class="el" href="json__object_8h.html#c75c61993722a9b8aaa44704072ec06c">json_object.h</a>
+: <a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06c">json_object.h</a>
+</li>
 </ul>
 </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by&nbsp;
 <a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>
 </html>
index f2cd7df..4e90ad5 100644 (file)
@@ -1,14 +1,18 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>json-c: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
 <div class="navigation" id="top">
   <div class="tabs">
     <ul>
       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
       <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
       <li class="current"><a href="files.html"><span>Files</span></a></li>
     </ul>
 </div>
 <div class="contents">
 &nbsp;
-<p>
-<h3><a class="anchor" name="index_j">- j -</a></h3><ul>
+
+<h3><a class="anchor" id="index_j">- j -</a></h3><ul>
 <li>json_tokener_continue
-: <a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb599b26e920ca765df91c84e999561d8fb0">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59a9b26e920ca765df91c84e999561d8fb0">json_tokener.h</a>
+</li>
 <li>json_tokener_error_depth
-: <a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb5959b2c36d9cc30c3038e09b9ddee6c86c">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59a59b2c36d9cc30c3038e09b9ddee6c86c">json_tokener.h</a>
+</li>
 <li>json_tokener_error_parse_array
-: <a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb59574846740b785146f164a209dc89574e">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59a574846740b785146f164a209dc89574e">json_tokener.h</a>
+</li>
 <li>json_tokener_error_parse_boolean
-: <a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb59ddbdfe084e20709da3d20c8ae8ca278c">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59addbdfe084e20709da3d20c8ae8ca278c">json_tokener.h</a>
+</li>
 <li>json_tokener_error_parse_comment
-: <a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb593588c05b1da8b909a8cbdef66b0a1a28">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59a3588c05b1da8b909a8cbdef66b0a1a28">json_tokener.h</a>
+</li>
 <li>json_tokener_error_parse_eof
-: <a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb598f774f4c7869afdd9b92295fca3a9ded">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59a8f774f4c7869afdd9b92295fca3a9ded">json_tokener.h</a>
+</li>
 <li>json_tokener_error_parse_null
-: <a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb59641bbb8d881fdd1e463f20a1a203b77c">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59a641bbb8d881fdd1e463f20a1a203b77c">json_tokener.h</a>
+</li>
 <li>json_tokener_error_parse_number
-: <a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb59b1b3ad685eb97235d269cc5b9eb7ab81">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59ab1b3ad685eb97235d269cc5b9eb7ab81">json_tokener.h</a>
+</li>
 <li>json_tokener_error_parse_object_key_name
-: <a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb592003bd8e96c6680cd22419c5ceafd4c0">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59a2003bd8e96c6680cd22419c5ceafd4c0">json_tokener.h</a>
+</li>
 <li>json_tokener_error_parse_object_key_sep
-: <a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb59f91a2a819b0d6344d6d4e1d2579f28fd">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59af91a2a819b0d6344d6d4e1d2579f28fd">json_tokener.h</a>
+</li>
 <li>json_tokener_error_parse_object_value_sep
-: <a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb599ddb98741aebf7ac44735b4a43717013">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59a9ddb98741aebf7ac44735b4a43717013">json_tokener.h</a>
+</li>
 <li>json_tokener_error_parse_string
-: <a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb59033ce89ce7b8f9e591e4bea92121c4c7">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59a033ce89ce7b8f9e591e4bea92121c4c7">json_tokener.h</a>
+</li>
 <li>json_tokener_error_parse_unexpected
-: <a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb593309fa8ea4ab3ee0a81c55b69d223710">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59a3309fa8ea4ab3ee0a81c55b69d223710">json_tokener.h</a>
+</li>
 <li>json_tokener_state_array
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e2b3d763300f1914865be09d603ddc11f4">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2ab3d763300f1914865be09d603ddc11f4">json_tokener.h</a>
+</li>
 <li>json_tokener_state_array_add
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e2a2a01798ebe318ea91c38a886418f771">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2aa2a01798ebe318ea91c38a886418f771">json_tokener.h</a>
+</li>
 <li>json_tokener_state_array_sep
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e24ec7762aeab3424cbb14354c94025865">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a4ec7762aeab3424cbb14354c94025865">json_tokener.h</a>
+</li>
 <li>json_tokener_state_boolean
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e23525b15ecd0a698281b3914115b6bd3e">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a3525b15ecd0a698281b3914115b6bd3e">json_tokener.h</a>
+</li>
 <li>json_tokener_state_comment
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e28c2680b8873a8dce85f0b1ac25882dc9">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a8c2680b8873a8dce85f0b1ac25882dc9">json_tokener.h</a>
+</li>
 <li>json_tokener_state_comment_end
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e262cef297a37a98b1239ea4bbd39723e1">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a62cef297a37a98b1239ea4bbd39723e1">json_tokener.h</a>
+</li>
 <li>json_tokener_state_comment_eol
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e2d8151350b1ef50298bafbab244ac1162">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2ad8151350b1ef50298bafbab244ac1162">json_tokener.h</a>
+</li>
 <li>json_tokener_state_comment_start
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e20ff1d1935d49188aa1e6b998d43e655c">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a0ff1d1935d49188aa1e6b998d43e655c">json_tokener.h</a>
+</li>
 <li>json_tokener_state_eatws
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e29db152607ec1872a000f1fcd8757297d">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a9db152607ec1872a000f1fcd8757297d">json_tokener.h</a>
+</li>
 <li>json_tokener_state_escape_unicode
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e26c852da2e694be56799c58c201d6dca0">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a6c852da2e694be56799c58c201d6dca0">json_tokener.h</a>
+</li>
 <li>json_tokener_state_finish
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e2d80b689cb709967b67a348de3d8601d2">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2ad80b689cb709967b67a348de3d8601d2">json_tokener.h</a>
+</li>
 <li>json_tokener_state_null
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e2668fb2654c59608945370003403a5792">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a668fb2654c59608945370003403a5792">json_tokener.h</a>
+</li>
 <li>json_tokener_state_number
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e27ce18d281d322af690b45f3b8b599e81">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a7ce18d281d322af690b45f3b8b599e81">json_tokener.h</a>
+</li>
 <li>json_tokener_state_object_field
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e277375940a10806e81d99876d13be67fc">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a77375940a10806e81d99876d13be67fc">json_tokener.h</a>
+</li>
 <li>json_tokener_state_object_field_end
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e20220aea1d9204aadfffde92c7f73f5f7">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a0220aea1d9204aadfffde92c7f73f5f7">json_tokener.h</a>
+</li>
 <li>json_tokener_state_object_field_start
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e28c7dbda177a5d83a36a64f7cb99b9a29">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a8c7dbda177a5d83a36a64f7cb99b9a29">json_tokener.h</a>
+</li>
 <li>json_tokener_state_object_sep
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e2daf3e06c5fc04fd4f04040cd67698215">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2adaf3e06c5fc04fd4f04040cd67698215">json_tokener.h</a>
+</li>
 <li>json_tokener_state_object_value
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e24c7b7deac37355491572f6da84f208aa">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a4c7b7deac37355491572f6da84f208aa">json_tokener.h</a>
+</li>
 <li>json_tokener_state_object_value_add
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e2de6bee72f2147e634b19eb84e58eb162">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2ade6bee72f2147e634b19eb84e58eb162">json_tokener.h</a>
+</li>
 <li>json_tokener_state_start
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e27c4c0bed1ebde45f5a99de4278792d72">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a7c4c0bed1ebde45f5a99de4278792d72">json_tokener.h</a>
+</li>
 <li>json_tokener_state_string
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e2a90ea4c327a285bfbbce49d42d491d65">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2aa90ea4c327a285bfbbce49d42d491d65">json_tokener.h</a>
+</li>
 <li>json_tokener_state_string_escape
-: <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e21cf793d73587f68c4f2b3b4f65ff728e">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a1cf793d73587f68c4f2b3b4f65ff728e">json_tokener.h</a>
+</li>
 <li>json_tokener_success
-: <a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb59fe2fa9bde03155019b2df30f66a5fcd0">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59afe2fa9bde03155019b2df30f66a5fcd0">json_tokener.h</a>
+</li>
 <li>json_type_array
-: <a class="el" href="json__object_8h.html#c75c61993722a9b8aaa44704072ec06ce536c8c9da4648e6b9348abddde6113c">json_object.h</a>
+: <a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06cae536c8c9da4648e6b9348abddde6113c">json_object.h</a>
+</li>
 <li>json_type_boolean
-: <a class="el" href="json__object_8h.html#c75c61993722a9b8aaa44704072ec06c5d15299e90dbb9935ff6d3e2c22a285c">json_object.h</a>
+: <a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06ca5d15299e90dbb9935ff6d3e2c22a285c">json_object.h</a>
+</li>
 <li>json_type_double
-: <a class="el" href="json__object_8h.html#c75c61993722a9b8aaa44704072ec06cc6ac2d9a16577d00210fea64d16b47cd">json_object.h</a>
+: <a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06cac6ac2d9a16577d00210fea64d16b47cd">json_object.h</a>
+</li>
 <li>json_type_int
-: <a class="el" href="json__object_8h.html#c75c61993722a9b8aaa44704072ec06c7bf325c213b43c5f970ae2d4443ab956">json_object.h</a>
+: <a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06ca7bf325c213b43c5f970ae2d4443ab956">json_object.h</a>
+</li>
 <li>json_type_null
-: <a class="el" href="json__object_8h.html#c75c61993722a9b8aaa44704072ec06c127e62d156e13517471fcde3378979c1">json_object.h</a>
+: <a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06ca127e62d156e13517471fcde3378979c1">json_object.h</a>
+</li>
 <li>json_type_object
-: <a class="el" href="json__object_8h.html#c75c61993722a9b8aaa44704072ec06cc966c8008f0b2c07da59ee8a60ad440f">json_object.h</a>
+: <a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06cac966c8008f0b2c07da59ee8a60ad440f">json_object.h</a>
+</li>
 <li>json_type_string
-: <a class="el" href="json__object_8h.html#c75c61993722a9b8aaa44704072ec06cc9f56e57c09245522d764015a054faa6">json_object.h</a>
+: <a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06cac9f56e57c09245522d764015a054faa6">json_object.h</a>
+</li>
 </ul>
 </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by&nbsp;
 <a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>
 </html>
index 38aaf2f..add6cd8 100644 (file)
@@ -1,14 +1,18 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>json-c: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
 <div class="navigation" id="top">
   <div class="tabs">
     <ul>
       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
       <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
       <li class="current"><a href="files.html"><span>Files</span></a></li>
     </ul>
 </div>
 <div class="contents">
 &nbsp;
-<p>
-<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
+
+<h3><a class="anchor" id="index_a">- a -</a></h3><ul>
 <li>array_list_add()
-: <a class="el" href="arraylist_8h.html#6e995608aa464244ff3184fb43574dc8">arraylist.h</a>
+: <a class="el" href="arraylist_8h.html#a6e995608aa464244ff3184fb43574dc8">arraylist.h</a>
+</li>
 <li>array_list_free()
-: <a class="el" href="arraylist_8h.html#cd00fb70f7ca82f23b48b812c3498f67">arraylist.h</a>
+: <a class="el" href="arraylist_8h.html#acd00fb70f7ca82f23b48b812c3498f67">arraylist.h</a>
+</li>
 <li>array_list_get_idx()
-: <a class="el" href="arraylist_8h.html#a16207e545b6c1265299abcfa418dc2b">arraylist.h</a>
+: <a class="el" href="arraylist_8h.html#aa16207e545b6c1265299abcfa418dc2b">arraylist.h</a>
+</li>
 <li>array_list_length()
-: <a class="el" href="arraylist_8h.html#a8393b4aa3dc447660371530439ab70f">arraylist.h</a>
+: <a class="el" href="arraylist_8h.html#aa8393b4aa3dc447660371530439ab70f">arraylist.h</a>
+</li>
 <li>array_list_new()
-: <a class="el" href="arraylist_8h.html#0d4bfac055dfd98e17296142abf4d894">arraylist.h</a>
+: <a class="el" href="arraylist_8h.html#a0d4bfac055dfd98e17296142abf4d894">arraylist.h</a>
+</li>
 <li>array_list_put_idx()
-: <a class="el" href="arraylist_8h.html#21b8e4c59e52fbc5a9a5a098e3f96e76">arraylist.h</a>
+: <a class="el" href="arraylist_8h.html#a21b8e4c59e52fbc5a9a5a098e3f96e76">arraylist.h</a>
+</li>
+<li>array_list_sort()
+: <a class="el" href="arraylist_8h.html#afb67cc8e2e5c9be41c3e644536079169">arraylist.h</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_j">- j -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_j">- j -</a></h3><ul>
 <li>json_object_array_add()
-: <a class="el" href="json__object_8h.html#cc89c0f58947d499e2868ac8b62bed49">json_object.h</a>
+: <a class="el" href="json__object_8h.html#acc89c0f58947d499e2868ac8b62bed49">json_object.h</a>
+</li>
 <li>json_object_array_get_idx()
-: <a class="el" href="json__object_8h.html#5c9120a6d644ea12a61e2ec8520130c6">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a5c9120a6d644ea12a61e2ec8520130c6">json_object.h</a>
+</li>
 <li>json_object_array_length()
-: <a class="el" href="json__object_8h.html#2e62d4b19de8f297595f3b4aaa0ec453">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a2e62d4b19de8f297595f3b4aaa0ec453">json_object.h</a>
+</li>
 <li>json_object_array_put_idx()
-: <a class="el" href="json__object_8h.html#2d19d21b495e1e0d3f711093d97a5104">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a2d19d21b495e1e0d3f711093d97a5104">json_object.h</a>
+</li>
+<li>json_object_array_sort()
+: <a class="el" href="json__object_8h.html#aa1b05eeaa9c92f079facece87d6a0149">json_object.h</a>
+</li>
 <li>json_object_from_file()
-: <a class="el" href="json__util_8h.html#befd9aa2f4d36ffc0f8474e042e9a398">json_util.h</a>
+: <a class="el" href="json__util_8h.html#a8fa0bba6b7ddb149a2159d99bae709ce">json_util.h</a>
+</li>
 <li>json_object_get()
-: <a class="el" href="json__object_8h.html#cc3628d97c6308dc967006e4268c4e7f">json_object.h</a>
+: <a class="el" href="json__object_8h.html#acc3628d97c6308dc967006e4268c4e7f">json_object.h</a>
+</li>
 <li>json_object_get_array()
-: <a class="el" href="json__object_8h.html#ba4e8df5e00bdc91a89bfb775e04ed70">json_object.h</a>
+: <a class="el" href="json__object_8h.html#aba4e8df5e00bdc91a89bfb775e04ed70">json_object.h</a>
+</li>
 <li>json_object_get_boolean()
-: <a class="el" href="json__object_8h.html#1765227e33016c7fee2abe31800080d1">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a3be3153ae5158ed24a49d74fbf14149f">json_object.h</a>
+</li>
 <li>json_object_get_double()
-: <a class="el" href="json__object_8h.html#9cf586fba906a597a121423045cb2a45">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a9cf586fba906a597a121423045cb2a45">json_object.h</a>
+</li>
 <li>json_object_get_int()
-: <a class="el" href="json__object_8h.html#28e392cc4d04c34628ed6dddd8a3ba6b">json_object.h</a>
+: <a class="el" href="json__object_8h.html#ae6cab7d4c7c707b9053035a6405d3891">json_object.h</a>
+</li>
+<li>json_object_get_int64()
+: <a class="el" href="json__object_8h.html#a3493894ebd226249118582e640af6944">json_object.h</a>
+</li>
 <li>json_object_get_object()
-: <a class="el" href="json__object_8h.html#9840421d6b45a7d00a42e13e379b54b5">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a9840421d6b45a7d00a42e13e379b54b5">json_object.h</a>
+</li>
 <li>json_object_get_string()
-: <a class="el" href="json__object_8h.html#d24f1c4c22b2a7d33e7b562c01f2ca65">json_object.h</a>
+: <a class="el" href="json__object_8h.html#ad24f1c4c22b2a7d33e7b562c01f2ca65">json_object.h</a>
+</li>
+<li>json_object_get_string_len()
+: <a class="el" href="json__object_8h.html#ad821384d0d8515d5ed4eec44d7101772">json_object.h</a>
+</li>
 <li>json_object_get_type()
-: <a class="el" href="json__object_8h.html#dc5e998b4897b6e450bd0975a58d2f72">json_object.h</a>
+: <a class="el" href="json__object_8h.html#adc5e998b4897b6e450bd0975a58d2f72">json_object.h</a>
+</li>
 <li>json_object_is_type()
-: <a class="el" href="json__object_8h.html#b6dc8b19f8da310e78f402f83d6ae6c5">json_object.h</a>
+: <a class="el" href="json__object_8h.html#ab6dc8b19f8da310e78f402f83d6ae6c5">json_object.h</a>
+</li>
+<li>json_object_iter_begin()
+: <a class="el" href="json__object__iterator_8h.html#a925eb97b5aa5b64986a0f663f53cf0fa">json_object_iterator.h</a>
+</li>
+<li>json_object_iter_end()
+: <a class="el" href="json__object__iterator_8h.html#a1fa3784395fb14496e3f1a1633028fd4">json_object_iterator.h</a>
+</li>
+<li>json_object_iter_equal()
+: <a class="el" href="json__object__iterator_8h.html#a878ca25f72b339882aa2607ac938e79c">json_object_iterator.h</a>
+</li>
+<li>json_object_iter_init_default()
+: <a class="el" href="json__object__iterator_8h.html#af30f56ca510d59da42e5592f9a436c10">json_object_iterator.h</a>
+</li>
+<li>json_object_iter_next()
+: <a class="el" href="json__object__iterator_8h.html#aa98a310c340f6d9b4eeecb673aa5e240">json_object_iterator.h</a>
+</li>
+<li>json_object_iter_peek_name()
+: <a class="el" href="json__object__iterator_8h.html#af17775b9b812a4206a84e4d3fb5774ab">json_object_iterator.h</a>
+</li>
+<li>json_object_iter_peek_value()
+: <a class="el" href="json__object__iterator_8h.html#a47b0af7f1722c10475dffd29efc0b89d">json_object_iterator.h</a>
+</li>
 <li>json_object_new_array()
-: <a class="el" href="json__object_8h.html#9b5af06e9a99e16c6d9b6459a685ea3f">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a9b5af06e9a99e16c6d9b6459a685ea3f">json_object.h</a>
+</li>
 <li>json_object_new_boolean()
-: <a class="el" href="json__object_8h.html#1bb59b93df42cafe49e8ff8c500690a6">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a93cfacfdd1000c739ad19df0a080cb85">json_object.h</a>
+</li>
 <li>json_object_new_double()
-: <a class="el" href="json__object_8h.html#2e9c761833a4f5d0a0c60640377e3cec">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a2e9c761833a4f5d0a0c60640377e3cec">json_object.h</a>
+</li>
 <li>json_object_new_int()
-: <a class="el" href="json__object_8h.html#f4dc3777b8751243c620a2cc65c89e26">json_object.h</a>
+: <a class="el" href="json__object_8h.html#aa7db8ceb1afe1b93afc63c10b8c57560">json_object.h</a>
+</li>
+<li>json_object_new_int64()
+: <a class="el" href="json__object_8h.html#a54a27690a1927354966189166bba6ca3">json_object.h</a>
+</li>
 <li>json_object_new_object()
-: <a class="el" href="json__object_8h.html#f0ed3555604f39ac74b5e28bc5b1f82c">json_object.h</a>
+: <a class="el" href="json__object_8h.html#af0ed3555604f39ac74b5e28bc5b1f82c">json_object.h</a>
+</li>
 <li>json_object_new_string()
-: <a class="el" href="json__object_8h.html#48eb92a8208e6718e55edf1130e8e4b8">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a48eb92a8208e6718e55edf1130e8e4b8">json_object.h</a>
+</li>
 <li>json_object_new_string_len()
-: <a class="el" href="json__object_8h.html#9d14fd03ed7520c4aa33ab53b4569414">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a9d14fd03ed7520c4aa33ab53b4569414">json_object.h</a>
+</li>
 <li>json_object_object_add()
-: <a class="el" href="json__object_8h.html#04448b1c63173e1bfe49965835732075">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a04448b1c63173e1bfe49965835732075">json_object.h</a>
+</li>
 <li>json_object_object_del()
-: <a class="el" href="json__object_8h.html#03653c18aafccd1ffba1ad318e342845">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a03653c18aafccd1ffba1ad318e342845">json_object.h</a>
+</li>
 <li>json_object_object_get()
-: <a class="el" href="json__object_8h.html#c11730ad909d1f9eb077d1ce9ff8b153">json_object.h</a>
+: <a class="el" href="json__object_8h.html#ac11730ad909d1f9eb077d1ce9ff8b153">json_object.h</a>
+</li>
+<li>json_object_object_get_ex()
+: <a class="el" href="json__object_8h.html#af3f38b3395b1af8e9d3ac73818c3a936">json_object.h</a>
+</li>
 <li>json_object_put()
-: <a class="el" href="json__object_8h.html#ccc34b38e15e46357d64a0beed3d0150">json_object.h</a>
+: <a class="el" href="json__object_8h.html#accc34b38e15e46357d64a0beed3d0150">json_object.h</a>
+</li>
 <li>json_object_to_file()
-: <a class="el" href="json__util_8h.html#00f5c43b3035faa4e4f3e55cf59707ee">json_util.h</a>
+: <a class="el" href="json__util_8h.html#a00f5c43b3035faa4e4f3e55cf59707ee">json_util.h</a>
+</li>
+<li>json_object_to_file_ext()
+: <a class="el" href="json__util_8h.html#a1ddcf96dd176ed447ce4df383190cfa8">json_util.h</a>
+</li>
 <li>json_object_to_json_string()
-: <a class="el" href="json__object_8h.html#1f62a660e2619559d1f3f54cd7483ff8">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a1f62a660e2619559d1f3f54cd7483ff8">json_object.h</a>
+</li>
+<li>json_object_to_json_string_ext()
+: <a class="el" href="json__object_8h.html#a84421dab94ccad42e901e534c6d7b658">json_object.h</a>
+</li>
+<li>json_parse_int64()
+: <a class="el" href="json__util_8h.html#a9bb9882ef2859ca2c1ee17805679bc25">json_util.h</a>
+</li>
+<li>json_tokener_error_desc()
+: <a class="el" href="json__tokener_8h.html#a04c5625212aed3216cc303429e47f642">json_tokener.h</a>
+</li>
 <li>json_tokener_free()
-: <a class="el" href="json__tokener_8h.html#f6645ff27c0ca82c6e314390814fcbeb">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#af6645ff27c0ca82c6e314390814fcbeb">json_tokener.h</a>
+</li>
+<li>json_tokener_get_error()
+: <a class="el" href="json__tokener_8h.html#ae8dff7f1ea11702aecf418e0da5574fe">json_tokener.h</a>
+</li>
 <li>json_tokener_new()
-: <a class="el" href="json__tokener_8h.html#55d6e8a6f6d90992c063a39e21769c52">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a55d6e8a6f6d90992c063a39e21769c52">json_tokener.h</a>
+</li>
 <li>json_tokener_parse()
-: <a class="el" href="json__tokener_8h.html#bf031fdf1e5caab71e2225a99588c6bb">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#abf031fdf1e5caab71e2225a99588c6bb">json_tokener.h</a>
+</li>
 <li>json_tokener_parse_ex()
-: <a class="el" href="json__tokener_8h.html#0d9a666c21879647e8831f9cfa691673">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a0d9a666c21879647e8831f9cfa691673">json_tokener.h</a>
+</li>
+<li>json_tokener_parse_verbose()
+: <a class="el" href="json__tokener_8h.html#a1c8f5d8baad383dc8879615d2b02b53c">json_tokener.h</a>
+</li>
 <li>json_tokener_reset()
-: <a class="el" href="json__tokener_8h.html#e23dd7ad4737bfc18409af6173ab2b09">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#ae23dd7ad4737bfc18409af6173ab2b09">json_tokener.h</a>
+</li>
+<li>json_type_to_name()
+: <a class="el" href="json__util_8h.html#a74031a1b948dc9fed3f367ea6ce78389">json_util.h</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_l">- l -</a></h3><ul>
 <li>lh_abort()
-: <a class="el" href="linkhash_8h.html#1294160fa0e80cee04cd745a401f43a4">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#a1294160fa0e80cee04cd745a401f43a4">linkhash.h</a>
+</li>
 <li>lh_char_equal()
-: <a class="el" href="linkhash_8h.html#e4e9f21fb1a556c7a50c6b7ea61f2079">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#ae4e9f21fb1a556c7a50c6b7ea61f2079">linkhash.h</a>
+</li>
 <li>lh_char_hash()
-: <a class="el" href="linkhash_8h.html#1fcf495b9c4ce169630cb31f638b8435">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#a1fcf495b9c4ce169630cb31f638b8435">linkhash.h</a>
+</li>
 <li>lh_kchar_table_new()
-: <a class="el" href="linkhash_8h.html#0aaf11e11ee5b0925279a52eab04bc38">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#a0aaf11e11ee5b0925279a52eab04bc38">linkhash.h</a>
+</li>
 <li>lh_kptr_table_new()
-: <a class="el" href="linkhash_8h.html#705513954267a16cc1d40a284a7c441e">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#a705513954267a16cc1d40a284a7c441e">linkhash.h</a>
+</li>
 <li>lh_ptr_equal()
-: <a class="el" href="linkhash_8h.html#6ce3cb97560072c40f5caeaba85f756a">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#a6ce3cb97560072c40f5caeaba85f756a">linkhash.h</a>
+</li>
 <li>lh_ptr_hash()
-: <a class="el" href="linkhash_8h.html#2e560f0d3e5a20f6b0bfa4049737db23">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#a2e560f0d3e5a20f6b0bfa4049737db23">linkhash.h</a>
+</li>
 <li>lh_table_delete()
-: <a class="el" href="linkhash_8h.html#2fed2c78f70d229edb2d00775ffe593c">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#a2fed2c78f70d229edb2d00775ffe593c">linkhash.h</a>
+</li>
 <li>lh_table_delete_entry()
-: <a class="el" href="linkhash_8h.html#e5885a71c3457190fb1dc2d6e20dde3b">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#ae5885a71c3457190fb1dc2d6e20dde3b">linkhash.h</a>
+</li>
 <li>lh_table_free()
-: <a class="el" href="linkhash_8h.html#81653acf740cf8c9fe672e6cd16df0cf">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#a81653acf740cf8c9fe672e6cd16df0cf">linkhash.h</a>
+</li>
 <li>lh_table_insert()
-: <a class="el" href="linkhash_8h.html#22b897763cc34a98c21c7fe82d151004">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#a22b897763cc34a98c21c7fe82d151004">linkhash.h</a>
+</li>
 <li>lh_table_lookup()
-: <a class="el" href="linkhash_8h.html#49c27f18a174eaf126d1b7953df13cb1">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#a49c27f18a174eaf126d1b7953df13cb1">linkhash.h</a>
+</li>
 <li>lh_table_lookup_entry()
-: <a class="el" href="linkhash_8h.html#d3b6ca2d967a6c3021ee6c39e014a918">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#ad3b6ca2d967a6c3021ee6c39e014a918">linkhash.h</a>
+</li>
+<li>lh_table_lookup_ex()
+: <a class="el" href="linkhash_8h.html#a81c270bb0dd9d5c8a3e7ae20bc4d67f3">linkhash.h</a>
+</li>
 <li>lh_table_new()
-: <a class="el" href="linkhash_8h.html#c3ba464ac43c083397b1f1d34f2ddf55">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#ac3ba464ac43c083397b1f1d34f2ddf55">linkhash.h</a>
+</li>
 <li>lh_table_resize()
-: <a class="el" href="linkhash_8h.html#5322eccf3394af7dc1ebb22af8f8c562">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#a5322eccf3394af7dc1ebb22af8f8c562">linkhash.h</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_m">- m -</a></h3><ul>
 <li>mc_abort()
-: <a class="el" href="debug_8h.html#44913dbc4f1abf6614d42b22b941c092">debug.h</a>
+: <a class="el" href="debug_8h.html#a44913dbc4f1abf6614d42b22b941c092">debug.h</a>
+</li>
 <li>mc_debug()
-: <a class="el" href="debug_8h.html#600cf4cbbe19c0c15ca3710210e35aba">debug.h</a>
+: <a class="el" href="debug_8h.html#a600cf4cbbe19c0c15ca3710210e35aba">debug.h</a>
+</li>
 <li>mc_error()
-: <a class="el" href="debug_8h.html#bf22ea3a331c7ff21c23da91a07c7cb2">debug.h</a>
+: <a class="el" href="debug_8h.html#abf22ea3a331c7ff21c23da91a07c7cb2">debug.h</a>
+</li>
 <li>mc_get_debug()
-: <a class="el" href="debug_8h.html#3b3ab3ae8b438384fb109a2e38646b6e">debug.h</a>
+: <a class="el" href="debug_8h.html#a3b3ab3ae8b438384fb109a2e38646b6e">debug.h</a>
+</li>
 <li>mc_info()
-: <a class="el" href="debug_8h.html#cbb92996a994e316ff65ed3a026e12a4">debug.h</a>
+: <a class="el" href="debug_8h.html#acbb92996a994e316ff65ed3a026e12a4">debug.h</a>
+</li>
 <li>mc_set_debug()
-: <a class="el" href="debug_8h.html#f65a73617b71476020a005b20bf02726">debug.h</a>
+: <a class="el" href="debug_8h.html#af65a73617b71476020a005b20bf02726">debug.h</a>
+</li>
 <li>mc_set_syslog()
-: <a class="el" href="debug_8h.html#adb888da410116384e75a00db30da705">debug.h</a>
+: <a class="el" href="debug_8h.html#aadb888da410116384e75a00db30da705">debug.h</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_p">- p -</a></h3><ul>
 <li>printbuf_free()
-: <a class="el" href="printbuf_8h.html#b525221c767ac65c58ddeea8a655a4e8">printbuf.h</a>
+: <a class="el" href="printbuf_8h.html#ab525221c767ac65c58ddeea8a655a4e8">printbuf.h</a>
+</li>
 <li>printbuf_memappend()
-: <a class="el" href="printbuf_8h.html#22f09779a19db59a83e7cb8c2ce4c75f">printbuf.h</a>
+: <a class="el" href="printbuf_8h.html#a22f09779a19db59a83e7cb8c2ce4c75f">printbuf.h</a>
+</li>
+<li>printbuf_memset()
+: <a class="el" href="printbuf_8h.html#ad7fc6ec4c296e85abf404244614cded5">printbuf.h</a>
+</li>
 <li>printbuf_new()
-: <a class="el" href="printbuf_8h.html#3e390ebc7660a18335edd89f640fd415">printbuf.h</a>
+: <a class="el" href="printbuf_8h.html#a3e390ebc7660a18335edd89f640fd415">printbuf.h</a>
+</li>
 <li>printbuf_reset()
-: <a class="el" href="printbuf_8h.html#4393ee3dedb376af11c96fe97532292e">printbuf.h</a>
+: <a class="el" href="printbuf_8h.html#a4393ee3dedb376af11c96fe97532292e">printbuf.h</a>
+</li>
 </ul>
-<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
+
+
+<h3><a class="anchor" id="index_s">- s -</a></h3><ul>
 <li>sprintbuf()
-: <a class="el" href="printbuf_8h.html#df6214db6c8ce994c7f7f1180863c8a4">printbuf.h</a>
+: <a class="el" href="printbuf_8h.html#adf6214db6c8ce994c7f7f1180863c8a4">printbuf.h</a>
+</li>
 </ul>
 </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by&nbsp;
 <a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>
 </html>
index de00ca6..dc1aefc 100644 (file)
@@ -1,14 +1,18 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>json-c: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
 <div class="navigation" id="top">
   <div class="tabs">
     <ul>
       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
       <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
       <li class="current"><a href="files.html"><span>Files</span></a></li>
     </ul>
   </div>
 </div>
 <div class="contents">
-&nbsp;
-<p>
-<ul>
+&nbsp;<ul>
 <li>array_list
-: <a class="el" href="json__object_8h.html#6d6d32d8b026ea2025df519b9e90f44a">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a6d6d32d8b026ea2025df519b9e90f44a">json_object.h</a>
+</li>
 <li>array_list_free_fn
-: <a class="el" href="arraylist_8h.html#ad83e4ed3c8ea274e6f18459276d774b">arraylist.h</a>
-<li>boolean
-: <a class="el" href="json__object_8h.html#621c38f1f10a1c565d897e3178b16d6e">json_object.h</a>
+: <a class="el" href="arraylist_8h.html#aad83e4ed3c8ea274e6f18459276d774b">arraylist.h</a>
+</li>
+<li>json_bool
+: <a class="el" href="json__object_8h.html#a81f02022906fafc71eb9197049f07f73">json_object.h</a>
+</li>
 <li>json_object
-: <a class="el" href="json__object_8h.html#f27907ced0f5a43409ad96430fe0f914">json_object.h</a>
+: <a class="el" href="json__object_8h.html#af27907ced0f5a43409ad96430fe0f914">json_object.h</a>
+</li>
 <li>json_object_delete_fn
-: <a class="el" href="json__object__private_8h.html#c96402e72ae5c12d690ec95ed441ec70">json_object_private.h</a>
+: <a class="el" href="json__object__private_8h.html#ac96402e72ae5c12d690ec95ed441ec70">json_object_private.h</a>
+</li>
 <li>json_object_iter
-: <a class="el" href="json__object_8h.html#f88126730e765f2068968f4b16fd074f">json_object.h</a>
+: <a class="el" href="json__object_8h.html#af88126730e765f2068968f4b16fd074f">json_object.h</a>
+</li>
 <li>json_object_to_json_string_fn
-: <a class="el" href="json__object__private_8h.html#98a52f3a465575f19a4f1b7556959953">json_object_private.h</a>
+: <a class="el" href="json__object__private_8h.html#a778fe57040398137cf9ccf9f2dd53282">json_object_private.h</a>
+</li>
 <li>json_tokener
-: <a class="el" href="json__object_8h.html#4dd5e5b65aee7f376f529f86b210ff49">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a4dd5e5b65aee7f376f529f86b210ff49">json_object.h</a>
+</li>
+<li>json_type
+: <a class="el" href="json__object_8h.html#aba5eff84f8638d22f50403175f270c96">json_object.h</a>
+</li>
 <li>lh_entry_free_fn
-: <a class="el" href="linkhash_8h.html#671553d0ee3c2a123190ba0f8ed2b635">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#a671553d0ee3c2a123190ba0f8ed2b635">linkhash.h</a>
+</li>
 <li>lh_equal_fn
-: <a class="el" href="linkhash_8h.html#91fd85fc81b0c7c83c62f00e84729091">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#a91fd85fc81b0c7c83c62f00e84729091">linkhash.h</a>
+</li>
 <li>lh_hash_fn
-: <a class="el" href="linkhash_8h.html#38bae27995dcfb6ee3fb109a9be229b2">linkhash.h</a>
+: <a class="el" href="linkhash_8h.html#a38bae27995dcfb6ee3fb109a9be229b2">linkhash.h</a>
+</li>
 <li>lh_table
-: <a class="el" href="json__object_8h.html#766e90057496fc6712d6be0da180a21f">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a766e90057496fc6712d6be0da180a21f">json_object.h</a>
+</li>
 <li>printbuf
-: <a class="el" href="json__object_8h.html#ce274df280df67463ff417b1b3392395">json_object.h</a>
+: <a class="el" href="json__object_8h.html#ace274df280df67463ff417b1b3392395">json_object.h</a>
+</li>
 </ul>
 </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by&nbsp;
 <a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>
 </html>
index 19a7370..f35f9c5 100644 (file)
@@ -1,14 +1,18 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>json-c: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
 <div class="navigation" id="top">
   <div class="tabs">
     <ul>
       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
       <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
       <li class="current"><a href="files.html"><span>Files</span></a></li>
     </ul>
   </div>
 </div>
 <div class="contents">
-&nbsp;
-<p>
-<ul>
+&nbsp;<ul>
 <li>json_hex_chars
-: <a class="el" href="json__object_8h.html#20dbe4913551cefa6b4b0a77fd4397c4">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a20dbe4913551cefa6b4b0a77fd4397c4">json_object.h</a>
+</li>
 <li>json_number_chars
-: <a class="el" href="json__object_8h.html#27427f89f2fc995639e366635fbe58ac">json_object.h</a>
+: <a class="el" href="json__object_8h.html#a27427f89f2fc995639e366635fbe58ac">json_object.h</a>
+</li>
 <li>json_tokener_errors
-: <a class="el" href="json__tokener_8h.html#6ede8ee7a4ec1fed68d10ea77294c966">json_tokener.h</a>
+: <a class="el" href="json__tokener_8h.html#a6ede8ee7a4ec1fed68d10ea77294c966">json_tokener.h</a>
+</li>
 </ul>
 </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by&nbsp;
 <a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>
 </html>
index 3e96998..5baf1b7 100644 (file)
@@ -1,25 +1,27 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>json-c: Main Page</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
 <div class="navigation" id="top">
   <div class="tabs">
     <ul>
       <li class="current"><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
       <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
       <li><a href="files.html"><span>Files</span></a></li>
     </ul>
   </div>
 </div>
 <div class="contents">
-<h1>json-c Documentation</h1>
-<p>
-<h3 align="center">0.2 </h3></div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
+<h1>json-c Documentation</h1><h3 class="version">0.10 </h3></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:46 2012 for json-c by&nbsp;
 <a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>
 </html>
index af84aab..3b531d2 100644 (file)
@@ -1,14 +1,18 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>json-c: json.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
 <div class="navigation" id="top">
   <div class="tabs">
     <ul>
       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
       <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
       <li class="current"><a href="files.html"><span>Files</span></a></li>
     </ul>
 </div>
 <div class="contents">
 <h1>json.h File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
 </table>
 </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by&nbsp;
 <a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>
 </html>
diff --git a/doc/html/json__inttypes_8h.html b/doc/html/json__inttypes_8h.html
new file mode 100644 (file)
index 0000000..980a119
--- /dev/null
@@ -0,0 +1,35 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>json-c: json_inttypes.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>json_inttypes.h File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
+</table>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
index 4d3596a..d417ba1 100644 (file)
@@ -1,14 +1,18 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>json-c: json_object.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
 <div class="navigation" id="top">
   <div class="tabs">
     <ul>
       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
       <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
       <li class="current"><a href="files.html"><span>Files</span></a></li>
     </ul>
 </div>
 <div class="contents">
 <h1>json_object.h File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#268a63dd1b2e6d81559e268a4529e9bf">JSON_OBJECT_DEF_HASH_ENTRIES</a>&nbsp;&nbsp;&nbsp;16</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#a93f0eb578d23995850d61f7d61c55c1">FALSE</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="json__object_8h.html#621c38f1f10a1c565d897e3178b16d6e">boolean</a>)0)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#a8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="json__object_8h.html#621c38f1f10a1c565d897e3178b16d6e">boolean</a>)1)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#cf5f514a9e0061c10fc08055762639ee">json_object_object_foreach</a>(obj, key, val)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#71f07006c12d78f7bbf4cb716a5af3a6">json_object_object_foreachC</a>(obj, iter)&nbsp;&nbsp;&nbsp;for(iter.entry = json_object_get_object(obj)-&gt;head; (iter.entry ? (iter.key = (char*)iter.entry-&gt;k, iter.val = (struct <a class="el" href="structjson__object.html">json_object</a>*)iter.entry-&gt;v, iter.entry) : 0); iter.entry = iter.entry-&gt;next)</td></tr>
-
-<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#621c38f1f10a1c565d897e3178b16d6e">boolean</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <a class="el" href="structprintbuf.html">printbuf</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#ce274df280df67463ff417b1b3392395">printbuf</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <a class="el" href="structlh__table.html">lh_table</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#766e90057496fc6712d6be0da180a21f">lh_table</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <a class="el" href="structarray__list.html">array_list</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#6d6d32d8b026ea2025df519b9e90f44a">array_list</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <a class="el" href="structjson__object.html">json_object</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#f27907ced0f5a43409ad96430fe0f914">json_object</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <a class="el" href="structjson__object__iter.html">json_object_iter</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#f88126730e765f2068968f4b16fd074f">json_object_iter</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <a class="el" href="structjson__tokener.html">json_tokener</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#4dd5e5b65aee7f376f529f86b210ff49">json_tokener</a></td></tr>
-
-<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#c75c61993722a9b8aaa44704072ec06c">json_type</a> { <br>
-&nbsp;&nbsp;<a class="el" href="json__object_8h.html#c75c61993722a9b8aaa44704072ec06c127e62d156e13517471fcde3378979c1">json_type_null</a>, 
-<a class="el" href="json__object_8h.html#c75c61993722a9b8aaa44704072ec06c5d15299e90dbb9935ff6d3e2c22a285c">json_type_boolean</a>, 
-<a class="el" href="json__object_8h.html#c75c61993722a9b8aaa44704072ec06cc6ac2d9a16577d00210fea64d16b47cd">json_type_double</a>, 
-<a class="el" href="json__object_8h.html#c75c61993722a9b8aaa44704072ec06c7bf325c213b43c5f970ae2d4443ab956">json_type_int</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="json__object_8h.html#c75c61993722a9b8aaa44704072ec06cc966c8008f0b2c07da59ee8a60ad440f">json_type_object</a>, 
-<a class="el" href="json__object_8h.html#c75c61993722a9b8aaa44704072ec06ce536c8c9da4648e6b9348abddde6113c">json_type_array</a>, 
-<a class="el" href="json__object_8h.html#c75c61993722a9b8aaa44704072ec06cc9f56e57c09245522d764015a054faa6">json_type_string</a>
-<br>
+<tr><td colspan="2"><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__object__iter.html">json_object_iter</a></td></tr>
+<tr><td colspan="2"><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#a268a63dd1b2e6d81559e268a4529e9bf">JSON_OBJECT_DEF_HASH_ENTRIES</a>&nbsp;&nbsp;&nbsp;16</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#a3294cb92765cdeb497cfd346644d1059">JSON_C_TO_STRING_PLAIN</a>&nbsp;&nbsp;&nbsp;0</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#aa821746c8668e6ad62bed90ec9e00103">JSON_C_TO_STRING_SPACED</a>&nbsp;&nbsp;&nbsp;(1&lt;&lt;0)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#a2025bc677c35f130e117dfda5bf1ef73">JSON_C_TO_STRING_PRETTY</a>&nbsp;&nbsp;&nbsp;(1&lt;&lt;1)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#aa93f0eb578d23995850d61f7d61c55c1">FALSE</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="json__object_8h.html#a81f02022906fafc71eb9197049f07f73">json_bool</a>)0)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#aa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="json__object_8h.html#a81f02022906fafc71eb9197049f07f73">json_bool</a>)1)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#acf5f514a9e0061c10fc08055762639ee">json_object_object_foreach</a>(obj, key, val)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#a71f07006c12d78f7bbf4cb716a5af3a6">json_object_object_foreachC</a>(obj, iter)&nbsp;&nbsp;&nbsp;for(iter.entry = json_object_get_object(obj)-&gt;head; (iter.entry ? (iter.key = (char*)iter.entry-&gt;k, iter.val = (struct <a class="el" href="structjson__object.html">json_object</a>*)iter.entry-&gt;v, iter.entry) : 0); iter.entry = iter.entry-&gt;next)</td></tr>
+<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#a81f02022906fafc71eb9197049f07f73">json_bool</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structprintbuf.html">printbuf</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#ace274df280df67463ff417b1b3392395">printbuf</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structlh__table.html">lh_table</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#a766e90057496fc6712d6be0da180a21f">lh_table</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structarray__list.html">array_list</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#a6d6d32d8b026ea2025df519b9e90f44a">array_list</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structjson__object.html">json_object</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#af27907ced0f5a43409ad96430fe0f914">json_object</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structjson__object__iter.html">json_object_iter</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#af88126730e765f2068968f4b16fd074f">json_object_iter</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structjson__tokener.html">json_tokener</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#a4dd5e5b65aee7f376f529f86b210ff49">json_tokener</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06c">json_type</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#aba5eff84f8638d22f50403175f270c96">json_type</a></td></tr>
+<tr><td colspan="2"><h2>Enumerations</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06c">json_type</a> { <br/>
+&nbsp;&nbsp;<a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06ca127e62d156e13517471fcde3378979c1">json_type_null</a>, 
+<a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06ca5d15299e90dbb9935ff6d3e2c22a285c">json_type_boolean</a>, 
+<a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06cac6ac2d9a16577d00210fea64d16b47cd">json_type_double</a>, 
+<a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06ca7bf325c213b43c5f970ae2d4443ab956">json_type_int</a>, 
+<br/>
+&nbsp;&nbsp;<a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06cac966c8008f0b2c07da59ee8a60ad440f">json_type_object</a>, 
+<a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06cae536c8c9da4648e6b9348abddde6113c">json_type_array</a>, 
+<a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06cac9f56e57c09245522d764015a054faa6">json_type_string</a>
+<br/>
  }</td></tr>
-
-<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#cc3628d97c6308dc967006e4268c4e7f">json_object_get</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#ccc34b38e15e46357d64a0beed3d0150">json_object_put</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#b6dc8b19f8da310e78f402f83d6ae6c5">json_object_is_type</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj, enum <a class="el" href="json__object_8h.html#c75c61993722a9b8aaa44704072ec06c">json_type</a> type)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum <a class="el" href="json__object_8h.html#c75c61993722a9b8aaa44704072ec06c">json_type</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#dc5e998b4897b6e450bd0975a58d2f72">json_object_get_type</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#1f62a660e2619559d1f3f54cd7483ff8">json_object_to_json_string</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#f0ed3555604f39ac74b5e28bc5b1f82c">json_object_new_object</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#9840421d6b45a7d00a42e13e379b54b5">json_object_get_object</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#04448b1c63173e1bfe49965835732075">json_object_object_add</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj, const char *key, struct <a class="el" href="structjson__object.html">json_object</a> *val)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#c11730ad909d1f9eb077d1ce9ff8b153">json_object_object_get</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj, const char *key)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#03653c18aafccd1ffba1ad318e342845">json_object_object_del</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj, const char *key)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#9b5af06e9a99e16c6d9b6459a685ea3f">json_object_new_array</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structarray__list.html">array_list</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#ba4e8df5e00bdc91a89bfb775e04ed70">json_object_get_array</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#2e62d4b19de8f297595f3b4aaa0ec453">json_object_array_length</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#cc89c0f58947d499e2868ac8b62bed49">json_object_array_add</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj, struct <a class="el" href="structjson__object.html">json_object</a> *val)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#2d19d21b495e1e0d3f711093d97a5104">json_object_array_put_idx</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj, int idx, struct <a class="el" href="structjson__object.html">json_object</a> *val)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#5c9120a6d644ea12a61e2ec8520130c6">json_object_array_get_idx</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj, int idx)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#1bb59b93df42cafe49e8ff8c500690a6">json_object_new_boolean</a> (<a class="el" href="json__object_8h.html#621c38f1f10a1c565d897e3178b16d6e">boolean</a> b)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="json__object_8h.html#621c38f1f10a1c565d897e3178b16d6e">boolean</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#1765227e33016c7fee2abe31800080d1">json_object_get_boolean</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#f4dc3777b8751243c620a2cc65c89e26">json_object_new_int</a> (int i)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#28e392cc4d04c34628ed6dddd8a3ba6b">json_object_get_int</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#2e9c761833a4f5d0a0c60640377e3cec">json_object_new_double</a> (double d)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#9cf586fba906a597a121423045cb2a45">json_object_get_double</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#48eb92a8208e6718e55edf1130e8e4b8">json_object_new_string</a> (const char *s)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#9d14fd03ed7520c4aa33ab53b4569414">json_object_new_string_len</a> (const char *s, int len)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#d24f1c4c22b2a7d33e7b562c01f2ca65">json_object_get_string</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj)</td></tr>
-
-<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#27427f89f2fc995639e366635fbe58ac">json_number_chars</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#20dbe4913551cefa6b4b0a77fd4397c4">json_hex_chars</a></td></tr>
-
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#acc3628d97c6308dc967006e4268c4e7f">json_object_get</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#accc34b38e15e46357d64a0beed3d0150">json_object_put</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#ab6dc8b19f8da310e78f402f83d6ae6c5">json_object_is_type</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj, enum <a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06c">json_type</a> type)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum <a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06c">json_type</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#adc5e998b4897b6e450bd0975a58d2f72">json_object_get_type</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#a1f62a660e2619559d1f3f54cd7483ff8">json_object_to_json_string</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#a84421dab94ccad42e901e534c6d7b658">json_object_to_json_string_ext</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj, int flags)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#af0ed3555604f39ac74b5e28bc5b1f82c">json_object_new_object</a> (void)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#a9840421d6b45a7d00a42e13e379b54b5">json_object_get_object</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#a04448b1c63173e1bfe49965835732075">json_object_object_add</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj, const char *key, struct <a class="el" href="structjson__object.html">json_object</a> *val)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#ac11730ad909d1f9eb077d1ce9ff8b153">json_object_object_get</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj, const char *key)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="json__object_8h.html#a81f02022906fafc71eb9197049f07f73">json_bool</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#af3f38b3395b1af8e9d3ac73818c3a936">json_object_object_get_ex</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj, const char *key, struct <a class="el" href="structjson__object.html">json_object</a> **value)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#a03653c18aafccd1ffba1ad318e342845">json_object_object_del</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj, const char *key)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#a9b5af06e9a99e16c6d9b6459a685ea3f">json_object_new_array</a> (void)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structarray__list.html">array_list</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#aba4e8df5e00bdc91a89bfb775e04ed70">json_object_get_array</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#a2e62d4b19de8f297595f3b4aaa0ec453">json_object_array_length</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#aa1b05eeaa9c92f079facece87d6a0149">json_object_array_sort</a> (struct <a class="el" href="structjson__object.html">json_object</a> *jso, int(*sort_fn)(const void *, const void *))</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#acc89c0f58947d499e2868ac8b62bed49">json_object_array_add</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj, struct <a class="el" href="structjson__object.html">json_object</a> *val)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#a2d19d21b495e1e0d3f711093d97a5104">json_object_array_put_idx</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj, int idx, struct <a class="el" href="structjson__object.html">json_object</a> *val)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#a5c9120a6d644ea12a61e2ec8520130c6">json_object_array_get_idx</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj, int idx)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#a93cfacfdd1000c739ad19df0a080cb85">json_object_new_boolean</a> (<a class="el" href="json__object_8h.html#a81f02022906fafc71eb9197049f07f73">json_bool</a> b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="json__object_8h.html#a81f02022906fafc71eb9197049f07f73">json_bool</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#a3be3153ae5158ed24a49d74fbf14149f">json_object_get_boolean</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#aa7db8ceb1afe1b93afc63c10b8c57560">json_object_new_int</a> (int32_t i)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#a54a27690a1927354966189166bba6ca3">json_object_new_int64</a> (int64_t i)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#ae6cab7d4c7c707b9053035a6405d3891">json_object_get_int</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int64_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#a3493894ebd226249118582e640af6944">json_object_get_int64</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#a2e9c761833a4f5d0a0c60640377e3cec">json_object_new_double</a> (double d)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#a9cf586fba906a597a121423045cb2a45">json_object_get_double</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#a48eb92a8208e6718e55edf1130e8e4b8">json_object_new_string</a> (const char *s)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#a9d14fd03ed7520c4aa33ab53b4569414">json_object_new_string_len</a> (const char *s, int len)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#ad24f1c4c22b2a7d33e7b562c01f2ca65">json_object_get_string</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#ad821384d0d8515d5ed4eec44d7101772">json_object_get_string_len</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj)</td></tr>
+<tr><td colspan="2"><h2>Variables</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#a27427f89f2fc995639e366635fbe58ac">json_number_chars</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object_8h.html#a20dbe4913551cefa6b4b0a77fd4397c4">json_hex_chars</a></td></tr>
 </table>
-<hr><h2>Define Documentation</h2>
-<a class="anchor" name="a93f0eb578d23995850d61f7d61c55c1"></a><!-- doxytag: member="json_object.h::FALSE" ref="a93f0eb578d23995850d61f7d61c55c1" args="" -->
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="aa93f0eb578d23995850d61f7d61c55c1"></a><!-- doxytag: member="json_object.h::FALSE" ref="aa93f0eb578d23995850d61f7d61c55c1" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define FALSE&nbsp;&nbsp;&nbsp;((<a class="el" href="json__object_8h.html#621c38f1f10a1c565d897e3178b16d6e">boolean</a>)0)          </td>
+          <td class="memname">#define FALSE&nbsp;&nbsp;&nbsp;((<a class="el" href="json__object_8h.html#a81f02022906fafc71eb9197049f07f73">json_bool</a>)0)</td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
+</div>
+</div>
+<a class="anchor" id="a3294cb92765cdeb497cfd346644d1059"></a><!-- doxytag: member="json_object.h::JSON_C_TO_STRING_PLAIN" ref="a3294cb92765cdeb497cfd346644d1059" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define JSON_C_TO_STRING_PLAIN&nbsp;&nbsp;&nbsp;0</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>A flag for the <a class="el" href="json__object_8h.html#a84421dab94ccad42e901e534c6d7b658">json_object_to_json_string_ext()</a> and <a class="el" href="json__util_8h.html#a1ddcf96dd176ed447ce4df383190cfa8">json_object_to_file_ext()</a> functions which causes the output to have no extra whitespace or formatting applied. </p>
 
 </div>
-</div><p>
-<a class="anchor" name="268a63dd1b2e6d81559e268a4529e9bf"></a><!-- doxytag: member="json_object.h::JSON_OBJECT_DEF_HASH_ENTRIES" ref="268a63dd1b2e6d81559e268a4529e9bf" args="" -->
+</div>
+<a class="anchor" id="a2025bc677c35f130e117dfda5bf1ef73"></a><!-- doxytag: member="json_object.h::JSON_C_TO_STRING_PRETTY" ref="a2025bc677c35f130e117dfda5bf1ef73" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define JSON_OBJECT_DEF_HASH_ENTRIES&nbsp;&nbsp;&nbsp;16          </td>
+          <td class="memname">#define JSON_C_TO_STRING_PRETTY&nbsp;&nbsp;&nbsp;(1&lt;&lt;1)</td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
+<p>A flag for the <a class="el" href="json__object_8h.html#a84421dab94ccad42e901e534c6d7b658">json_object_to_json_string_ext()</a> and <a class="el" href="json__util_8h.html#a1ddcf96dd176ed447ce4df383190cfa8">json_object_to_file_ext()</a> functions which causes the output to be formatted.</p>
+<p>See the "Two Space Tab" option at <a href="http://jsonformatter.curiousconcept.com/">http://jsonformatter.curiousconcept.com/</a> for an example of the format. </p>
 
-<p>
+</div>
+</div>
+<a class="anchor" id="aa821746c8668e6ad62bed90ec9e00103"></a><!-- doxytag: member="json_object.h::JSON_C_TO_STRING_SPACED" ref="aa821746c8668e6ad62bed90ec9e00103" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define JSON_C_TO_STRING_SPACED&nbsp;&nbsp;&nbsp;(1&lt;&lt;0)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>A flag for the <a class="el" href="json__object_8h.html#a84421dab94ccad42e901e534c6d7b658">json_object_to_json_string_ext()</a> and <a class="el" href="json__util_8h.html#a1ddcf96dd176ed447ce4df383190cfa8">json_object_to_file_ext()</a> functions which causes the output to have minimal whitespace inserted to make things slightly more readable. </p>
+
+</div>
+</div>
+<a class="anchor" id="a268a63dd1b2e6d81559e268a4529e9bf"></a><!-- doxytag: member="json_object.h::JSON_OBJECT_DEF_HASH_ENTRIES" ref="a268a63dd1b2e6d81559e268a4529e9bf" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define JSON_OBJECT_DEF_HASH_ENTRIES&nbsp;&nbsp;&nbsp;16</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
 
 </div>
-</div><p>
-<a class="anchor" name="cf5f514a9e0061c10fc08055762639ee"></a><!-- doxytag: member="json_object.h::json_object_object_foreach" ref="cf5f514a9e0061c10fc08055762639ee" args="(obj, key, val)" -->
+</div>
+<a class="anchor" id="acf5f514a9e0061c10fc08055762639ee"></a><!-- doxytag: member="json_object.h::json_object_object_foreach" ref="acf5f514a9e0061c10fc08055762639ee" args="(obj, key, val)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define json_object_object_foreach          </td>
+          <td class="memname">#define json_object_object_foreach</td>
           <td>(</td>
-          <td class="paramtype">obj,         <tr>
+          <td class="paramtype">obj, </td>
+        </tr>
+        <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">key,         <tr>
+          <td class="paramtype">key, </td>
+        </tr>
+        <tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype">val&nbsp;</td>
-          <td class="paramname">          </td>
+          <td class="paramname"></td>
           <td>&nbsp;)&nbsp;</td>
           <td></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
-
-<p>
 <b>Value:</b><div class="fragment"><pre class="fragment"><span class="keywordtype">char</span> *key; <span class="keyword">struct </span><a class="code" href="structjson__object.html">json_object</a> *val; <span class="keyword">struct </span><a class="code" href="structlh__entry.html">lh_entry</a> *entry; \
- <span class="keywordflow">for</span>(entry = <a class="code" href="json__object_8h.html#9840421d6b45a7d00a42e13e379b54b5">json_object_get_object</a>(obj)-&gt;head; (entry ? (key = (<span class="keywordtype">char</span>*)entry-&gt;<a class="code" href="structlh__entry.html#6b176b3582c9cf553af6431750f5c3b6">k</a>, val = (<span class="keyword">struct</span> <a class="code" href="structjson__object.html">json_object</a>*)entry-&gt;<a class="code" href="structlh__entry.html#1b676732ab2ad3eeaedf6ec60a6a0835">v</a>, entry) : 0); entry = entry-&gt;<a class="code" href="structlh__entry.html#7c40c46e72d9a0ba071a8d49d535bc67">next</a>)
-</pre></div>Iterate through all keys and values of an object <dl compact><dt><b>Parameters:</b></dt><dd>
+ <span class="keywordflow">for</span>(entry = <a class="code" href="json__object_8h.html#a9840421d6b45a7d00a42e13e379b54b5">json_object_get_object</a>(obj)-&gt;head; (entry ? (key = (<span class="keywordtype">char</span>*)entry-&gt;<a class="code" href="structlh__entry.html#a6b176b3582c9cf553af6431750f5c3b6">k</a>, val = (<span class="keyword">struct</span> <a class="code" href="structjson__object.html">json_object</a>*)entry-&gt;<a class="code" href="structlh__entry.html#a1b676732ab2ad3eeaedf6ec60a6a0835">v</a>, entry) : 0); entry = entry-&gt;<a class="code" href="structlh__entry.html#a7c40c46e72d9a0ba071a8d49d535bc67">next</a>)
+</pre></div><p>Iterate through all keys and values of an object </p>
+<dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>obj</em>&nbsp;</td><td>the <a class="el" href="structjson__object.html">json_object</a> instance </td></tr>
     <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>the local name for the char* key variable defined in the body </td></tr>
     <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>the local name for the json_object* object variable defined in the body </td></tr>
   </table>
+  </dd>
 </dl>
 
 </div>
-</div><p>
-<a class="anchor" name="71f07006c12d78f7bbf4cb716a5af3a6"></a><!-- doxytag: member="json_object.h::json_object_object_foreachC" ref="71f07006c12d78f7bbf4cb716a5af3a6" args="(obj, iter)" -->
+</div>
+<a class="anchor" id="a71f07006c12d78f7bbf4cb716a5af3a6"></a><!-- doxytag: member="json_object.h::json_object_object_foreachC" ref="a71f07006c12d78f7bbf4cb716a5af3a6" args="(obj, iter)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define json_object_object_foreachC          </td>
+          <td class="memname">#define json_object_object_foreachC</td>
           <td>(</td>
-          <td class="paramtype">obj,         <tr>
+          <td class="paramtype">obj, </td>
+        </tr>
+        <tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype">iter&nbsp;</td>
-          <td class="paramname">          </td>
+          <td class="paramname"></td>
           <td>&nbsp;)&nbsp;</td>
           <td>&nbsp;&nbsp;&nbsp;for(iter.entry = json_object_get_object(obj)-&gt;head; (iter.entry ? (iter.key = (char*)iter.entry-&gt;k, iter.val = (struct <a class="el" href="structjson__object.html">json_object</a>*)iter.entry-&gt;v, iter.entry) : 0); iter.entry = iter.entry-&gt;next)</td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
-
-<p>
-Iterate through all keys and values of an object (ANSI C Safe) <dl compact><dt><b>Parameters:</b></dt><dd>
+<p>Iterate through all keys and values of an object (ANSI C Safe) </p>
+<dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>obj</em>&nbsp;</td><td>the <a class="el" href="structjson__object.html">json_object</a> instance </td></tr>
     <tr><td valign="top"></td><td valign="top"><em>iter</em>&nbsp;</td><td>the object iterator </td></tr>
   </table>
+  </dd>
 </dl>
 
 </div>
-</div><p>
-<a class="anchor" name="a8cecfc5c5c054d2875c03e77b7be15d"></a><!-- doxytag: member="json_object.h::TRUE" ref="a8cecfc5c5c054d2875c03e77b7be15d" args="" -->
+</div>
+<a class="anchor" id="aa8cecfc5c5c054d2875c03e77b7be15d"></a><!-- doxytag: member="json_object.h::TRUE" ref="aa8cecfc5c5c054d2875c03e77b7be15d" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TRUE&nbsp;&nbsp;&nbsp;((<a class="el" href="json__object_8h.html#621c38f1f10a1c565d897e3178b16d6e">boolean</a>)1)          </td>
+          <td class="memname">#define TRUE&nbsp;&nbsp;&nbsp;((<a class="el" href="json__object_8h.html#a81f02022906fafc71eb9197049f07f73">json_bool</a>)1)</td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="6d6d32d8b026ea2025df519b9e90f44a"></a><!-- doxytag: member="json_object.h::array_list" ref="6d6d32d8b026ea2025df519b9e90f44a" args="" -->
+</div>
+<hr/><h2>Typedef Documentation</h2>
+<a class="anchor" id="a6d6d32d8b026ea2025df519b9e90f44a"></a><!-- doxytag: member="json_object.h::array_list" ref="a6d6d32d8b026ea2025df519b9e90f44a" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">typedef struct <a class="el" href="structarray__list.html">array_list</a> <a class="el" href="structarray__list.html">array_list</a>          </td>
+          <td class="memname">typedef struct <a class="el" href="structarray__list.html">array_list</a> <a class="el" href="structarray__list.html">array_list</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="621c38f1f10a1c565d897e3178b16d6e"></a><!-- doxytag: member="json_object.h::boolean" ref="621c38f1f10a1c565d897e3178b16d6e" args="" -->
+</div>
+<a class="anchor" id="a81f02022906fafc71eb9197049f07f73"></a><!-- doxytag: member="json_object.h::json_bool" ref="a81f02022906fafc71eb9197049f07f73" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">typedef int <a class="el" href="json__object_8h.html#621c38f1f10a1c565d897e3178b16d6e">boolean</a>          </td>
+          <td class="memname">typedef int <a class="el" href="json__object_8h.html#a81f02022906fafc71eb9197049f07f73">json_bool</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="f27907ced0f5a43409ad96430fe0f914"></a><!-- doxytag: member="json_object.h::json_object" ref="f27907ced0f5a43409ad96430fe0f914" args="" -->
+</div>
+<a class="anchor" id="af27907ced0f5a43409ad96430fe0f914"></a><!-- doxytag: member="json_object.h::json_object" ref="af27907ced0f5a43409ad96430fe0f914" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">typedef struct <a class="el" href="structjson__object.html">json_object</a> <a class="el" href="structjson__object.html">json_object</a>          </td>
+          <td class="memname">typedef struct <a class="el" href="structjson__object.html">json_object</a> <a class="el" href="structjson__object.html">json_object</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="f88126730e765f2068968f4b16fd074f"></a><!-- doxytag: member="json_object.h::json_object_iter" ref="f88126730e765f2068968f4b16fd074f" args="" -->
+</div>
+<a class="anchor" id="af88126730e765f2068968f4b16fd074f"></a><!-- doxytag: member="json_object.h::json_object_iter" ref="af88126730e765f2068968f4b16fd074f" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">typedef struct <a class="el" href="structjson__object__iter.html">json_object_iter</a> <a class="el" href="structjson__object__iter.html">json_object_iter</a>          </td>
+          <td class="memname">typedef struct <a class="el" href="structjson__object__iter.html">json_object_iter</a> <a class="el" href="structjson__object__iter.html">json_object_iter</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="4dd5e5b65aee7f376f529f86b210ff49"></a><!-- doxytag: member="json_object.h::json_tokener" ref="4dd5e5b65aee7f376f529f86b210ff49" args="" -->
+</div>
+<a class="anchor" id="a4dd5e5b65aee7f376f529f86b210ff49"></a><!-- doxytag: member="json_object.h::json_tokener" ref="a4dd5e5b65aee7f376f529f86b210ff49" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">typedef struct <a class="el" href="structjson__tokener.html">json_tokener</a> <a class="el" href="structjson__tokener.html">json_tokener</a>          </td>
+          <td class="memname">typedef struct <a class="el" href="structjson__tokener.html">json_tokener</a> <a class="el" href="structjson__tokener.html">json_tokener</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="766e90057496fc6712d6be0da180a21f"></a><!-- doxytag: member="json_object.h::lh_table" ref="766e90057496fc6712d6be0da180a21f" args="" -->
+</div>
+<a class="anchor" id="aba5eff84f8638d22f50403175f270c96"></a><!-- doxytag: member="json_object.h::json_type" ref="aba5eff84f8638d22f50403175f270c96" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">typedef struct <a class="el" href="structlh__table.html">lh_table</a> <a class="el" href="structlh__table.html">lh_table</a>          </td>
+          <td class="memname">typedef enum <a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06c">json_type</a>  <a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06c">json_type</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="ce274df280df67463ff417b1b3392395"></a><!-- doxytag: member="json_object.h::printbuf" ref="ce274df280df67463ff417b1b3392395" args="" -->
+</div>
+<a class="anchor" id="a766e90057496fc6712d6be0da180a21f"></a><!-- doxytag: member="json_object.h::lh_table" ref="a766e90057496fc6712d6be0da180a21f" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">typedef struct <a class="el" href="structprintbuf.html">printbuf</a> <a class="el" href="structprintbuf.html">printbuf</a>          </td>
+          <td class="memname">typedef struct <a class="el" href="structlh__table.html">lh_table</a> <a class="el" href="structlh__table.html">lh_table</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<hr><h2>Enumeration Type Documentation</h2>
-<a class="anchor" name="c75c61993722a9b8aaa44704072ec06c"></a><!-- doxytag: member="json_object.h::json_type" ref="c75c61993722a9b8aaa44704072ec06c" args="" -->
+</div>
+<a class="anchor" id="ace274df280df67463ff417b1b3392395"></a><!-- doxytag: member="json_object.h::printbuf" ref="ace274df280df67463ff417b1b3392395" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">enum <a class="el" href="json__object_8h.html#c75c61993722a9b8aaa44704072ec06c">json_type</a>          </td>
+          <td class="memname">typedef struct <a class="el" href="structprintbuf.html">printbuf</a> <a class="el" href="structprintbuf.html">printbuf</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-<dl compact><dt><b>Enumerator: </b></dt><dd>
-<table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" name="c75c61993722a9b8aaa44704072ec06c127e62d156e13517471fcde3378979c1"></a><!-- doxytag: member="json_type_null" ref="c75c61993722a9b8aaa44704072ec06c127e62d156e13517471fcde3378979c1" args="" -->json_type_null</em>&nbsp;</td><td>
+</div>
+</div>
+<hr/><h2>Enumeration Type Documentation</h2>
+<a class="anchor" id="ac75c61993722a9b8aaa44704072ec06c"></a><!-- doxytag: member="json_object.h::json_type" ref="ac75c61993722a9b8aaa44704072ec06c" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06c">json_type</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" id="ac75c61993722a9b8aaa44704072ec06ca127e62d156e13517471fcde3378979c1"></a><!-- doxytag: member="json_type_null" ref="ac75c61993722a9b8aaa44704072ec06ca127e62d156e13517471fcde3378979c1" args="" -->json_type_null</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="c75c61993722a9b8aaa44704072ec06c5d15299e90dbb9935ff6d3e2c22a285c"></a><!-- doxytag: member="json_type_boolean" ref="c75c61993722a9b8aaa44704072ec06c5d15299e90dbb9935ff6d3e2c22a285c" args="" -->json_type_boolean</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="ac75c61993722a9b8aaa44704072ec06ca5d15299e90dbb9935ff6d3e2c22a285c"></a><!-- doxytag: member="json_type_boolean" ref="ac75c61993722a9b8aaa44704072ec06ca5d15299e90dbb9935ff6d3e2c22a285c" args="" -->json_type_boolean</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="c75c61993722a9b8aaa44704072ec06cc6ac2d9a16577d00210fea64d16b47cd"></a><!-- doxytag: member="json_type_double" ref="c75c61993722a9b8aaa44704072ec06cc6ac2d9a16577d00210fea64d16b47cd" args="" -->json_type_double</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="ac75c61993722a9b8aaa44704072ec06cac6ac2d9a16577d00210fea64d16b47cd"></a><!-- doxytag: member="json_type_double" ref="ac75c61993722a9b8aaa44704072ec06cac6ac2d9a16577d00210fea64d16b47cd" args="" -->json_type_double</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="c75c61993722a9b8aaa44704072ec06c7bf325c213b43c5f970ae2d4443ab956"></a><!-- doxytag: member="json_type_int" ref="c75c61993722a9b8aaa44704072ec06c7bf325c213b43c5f970ae2d4443ab956" args="" -->json_type_int</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="ac75c61993722a9b8aaa44704072ec06ca7bf325c213b43c5f970ae2d4443ab956"></a><!-- doxytag: member="json_type_int" ref="ac75c61993722a9b8aaa44704072ec06ca7bf325c213b43c5f970ae2d4443ab956" args="" -->json_type_int</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="c75c61993722a9b8aaa44704072ec06cc966c8008f0b2c07da59ee8a60ad440f"></a><!-- doxytag: member="json_type_object" ref="c75c61993722a9b8aaa44704072ec06cc966c8008f0b2c07da59ee8a60ad440f" args="" -->json_type_object</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="ac75c61993722a9b8aaa44704072ec06cac966c8008f0b2c07da59ee8a60ad440f"></a><!-- doxytag: member="json_type_object" ref="ac75c61993722a9b8aaa44704072ec06cac966c8008f0b2c07da59ee8a60ad440f" args="" -->json_type_object</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="c75c61993722a9b8aaa44704072ec06ce536c8c9da4648e6b9348abddde6113c"></a><!-- doxytag: member="json_type_array" ref="c75c61993722a9b8aaa44704072ec06ce536c8c9da4648e6b9348abddde6113c" args="" -->json_type_array</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="ac75c61993722a9b8aaa44704072ec06cae536c8c9da4648e6b9348abddde6113c"></a><!-- doxytag: member="json_type_array" ref="ac75c61993722a9b8aaa44704072ec06cae536c8c9da4648e6b9348abddde6113c" args="" -->json_type_array</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="c75c61993722a9b8aaa44704072ec06cc9f56e57c09245522d764015a054faa6"></a><!-- doxytag: member="json_type_string" ref="c75c61993722a9b8aaa44704072ec06cc9f56e57c09245522d764015a054faa6" args="" -->json_type_string</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="ac75c61993722a9b8aaa44704072ec06cac9f56e57c09245522d764015a054faa6"></a><!-- doxytag: member="json_type_string" ref="ac75c61993722a9b8aaa44704072ec06cac9f56e57c09245522d764015a054faa6" args="" -->json_type_string</em>&nbsp;</td><td>
 </td></tr>
 </table>
+</dd>
 </dl>
 
 </div>
-</div><p>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="cc89c0f58947d499e2868ac8b62bed49"></a><!-- doxytag: member="json_object.h::json_object_array_add" ref="cc89c0f58947d499e2868ac8b62bed49" args="(struct json_object *obj, struct json_object *val)" -->
+</div>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="acc89c0f58947d499e2868ac8b62bed49"></a><!-- doxytag: member="json_object.h::json_object_array_add" ref="acc89c0f58947d499e2868ac8b62bed49" args="(struct json_object *obj, struct json_object *val)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int json_object_array_add           </td>
+          <td class="memname">int json_object_array_add </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td>
           <td class="paramname"> <em>obj</em>, </td>
@@ -394,25 +409,24 @@ Iterate through all keys and values of an object (ANSI C Safe) <dl compact><dt><
       </table>
 </div>
 <div class="memdoc">
-
-<p>
-Add an element to the end of a <a class="el" href="structjson__object.html">json_object</a> of type json_type_array<p>
-The reference count will *not* be incremented. This is to make adding fields to objects in code more compact. If you want to retain a reference to an added object you must wrap the passed object with json_object_get<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
+<p>Add an element to the end of a <a class="el" href="structjson__object.html">json_object</a> of type json_type_array</p>
+<p>The reference count will *not* be incremented. This is to make adding fields to objects in code more compact. If you want to retain a reference to an added object you must wrap the passed object with json_object_get</p>
+<dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>obj</em>&nbsp;</td><td>the <a class="el" href="structjson__object.html">json_object</a> instance </td></tr>
     <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>the <a class="el" href="structjson__object.html">json_object</a> to be added </td></tr>
   </table>
+  </dd>
 </dl>
 
 </div>
-</div><p>
-<a class="anchor" name="5c9120a6d644ea12a61e2ec8520130c6"></a><!-- doxytag: member="json_object.h::json_object_array_get_idx" ref="5c9120a6d644ea12a61e2ec8520130c6" args="(struct json_object *obj, int idx)" -->
+</div>
+<a class="anchor" id="a5c9120a6d644ea12a61e2ec8520130c6"></a><!-- doxytag: member="json_object.h::json_object_array_get_idx" ref="a5c9120a6d644ea12a61e2ec8520130c6" args="(struct json_object *obj, int idx)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* json_object_array_get_idx           </td>
+          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* json_object_array_get_idx </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td>
           <td class="paramname"> <em>obj</em>, </td>
@@ -431,50 +445,50 @@ The reference count will *not* be incremented. This is to make adding fields to
       </table>
 </div>
 <div class="memdoc">
-
-<p>
-Get the element at specificed index of the array (a <a class="el" href="structjson__object.html">json_object</a> of type json_type_array) <dl compact><dt><b>Parameters:</b></dt><dd>
+<p>Get the element at specificed index of the array (a <a class="el" href="structjson__object.html">json_object</a> of type json_type_array) </p>
+<dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>obj</em>&nbsp;</td><td>the <a class="el" href="structjson__object.html">json_object</a> instance </td></tr>
     <tr><td valign="top"></td><td valign="top"><em>idx</em>&nbsp;</td><td>the index to get the element at </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>the <a class="el" href="structjson__object.html">json_object</a> at the specified index (or NULL) </dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>the <a class="el" href="structjson__object.html">json_object</a> at the specified index (or NULL) </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="2e62d4b19de8f297595f3b4aaa0ec453"></a><!-- doxytag: member="json_object.h::json_object_array_length" ref="2e62d4b19de8f297595f3b4aaa0ec453" args="(struct json_object *obj)" -->
+</div>
+<a class="anchor" id="a2e62d4b19de8f297595f3b4aaa0ec453"></a><!-- doxytag: member="json_object.h::json_object_array_length" ref="a2e62d4b19de8f297595f3b4aaa0ec453" args="(struct json_object *obj)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int json_object_array_length           </td>
+          <td class="memname">int json_object_array_length </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td>
-          <td class="paramname"> <em>obj</em>          </td>
+          <td class="paramname"> <em>obj</em></td>
           <td>&nbsp;)&nbsp;</td>
           <td></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
-
-<p>
-Get the length of a <a class="el" href="structjson__object.html">json_object</a> of type json_type_array <dl compact><dt><b>Parameters:</b></dt><dd>
+<p>Get the length of a <a class="el" href="structjson__object.html">json_object</a> of type json_type_array </p>
+<dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>obj</em>&nbsp;</td><td>the <a class="el" href="structjson__object.html">json_object</a> instance </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>an int </dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>an int </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="2d19d21b495e1e0d3f711093d97a5104"></a><!-- doxytag: member="json_object.h::json_object_array_put_idx" ref="2d19d21b495e1e0d3f711093d97a5104" args="(struct json_object *obj, int idx, struct json_object *val)" -->
+</div>
+<a class="anchor" id="a2d19d21b495e1e0d3f711093d97a5104"></a><!-- doxytag: member="json_object.h::json_object_array_put_idx" ref="a2d19d21b495e1e0d3f711093d97a5104" args="(struct json_object *obj, int idx, struct json_object *val)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int json_object_array_put_idx           </td>
+          <td class="memname">int json_object_array_put_idx </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td>
           <td class="paramname"> <em>obj</em>, </td>
@@ -499,244 +513,334 @@ Get the length of a <a class="el" href="structjson__object.html">json_object</a>
       </table>
 </div>
 <div class="memdoc">
-
-<p>
-Insert or replace an element at a specified index in an array (a <a class="el" href="structjson__object.html">json_object</a> of type json_type_array)<p>
-The reference count will *not* be incremented. This is to make adding fields to objects in code more compact. If you want to retain a reference to an added object you must wrap the passed object with json_object_get<p>
-The reference count of a replaced object will be decremented.<p>
-The array size will be automatically be expanded to the size of the index if the index is larger than the current size.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
+<p>Insert or replace an element at a specified index in an array (a <a class="el" href="structjson__object.html">json_object</a> of type json_type_array)</p>
+<p>The reference count will *not* be incremented. This is to make adding fields to objects in code more compact. If you want to retain a reference to an added object you must wrap the passed object with json_object_get</p>
+<p>The reference count of a replaced object will be decremented.</p>
+<p>The array size will be automatically be expanded to the size of the index if the index is larger than the current size.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>obj</em>&nbsp;</td><td>the <a class="el" href="structjson__object.html">json_object</a> instance </td></tr>
     <tr><td valign="top"></td><td valign="top"><em>idx</em>&nbsp;</td><td>the index to insert the element at </td></tr>
     <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>the <a class="el" href="structjson__object.html">json_object</a> to be added </td></tr>
   </table>
+  </dd>
 </dl>
 
 </div>
-</div><p>
-<a class="anchor" name="cc3628d97c6308dc967006e4268c4e7f"></a><!-- doxytag: member="json_object.h::json_object_get" ref="cc3628d97c6308dc967006e4268c4e7f" args="(struct json_object *obj)" -->
+</div>
+<a class="anchor" id="aa1b05eeaa9c92f079facece87d6a0149"></a><!-- doxytag: member="json_object.h::json_object_array_sort" ref="aa1b05eeaa9c92f079facece87d6a0149" args="(struct json_object *jso, int(*sort_fn)(const void *, const void *))" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* json_object_get           </td>
+          <td class="memname">void json_object_array_sort </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td>
-          <td class="paramname"> <em>obj</em>          </td>
+          <td class="paramname"> <em>jso</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int(*)(const void *, const void *)&nbsp;</td>
+          <td class="paramname"> <em>sort_fn</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Sorts the elements of jso of type json_type_array</p>
+<p>Pointers to the <a class="el" href="structjson__object.html">json_object</a> pointers will be passed as the two arguments to </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>obj</em>&nbsp;</td><td>the <a class="el" href="structjson__object.html">json_object</a> instance </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>sort_fn</em>&nbsp;</td><td>a sorting function </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="acc3628d97c6308dc967006e4268c4e7f"></a><!-- doxytag: member="json_object.h::json_object_get" ref="acc3628d97c6308dc967006e4268c4e7f" args="(struct json_object *obj)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* json_object_get </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td>
+          <td class="paramname"> <em>obj</em></td>
           <td>&nbsp;)&nbsp;</td>
           <td><code> [read]</code></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
-
-<p>
-Increment the reference count of <a class="el" href="structjson__object.html">json_object</a> <dl compact><dt><b>Parameters:</b></dt><dd>
+<p>Increment the reference count of <a class="el" href="structjson__object.html">json_object</a>, thereby grabbing shared ownership of obj.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>obj</em>&nbsp;</td><td>the <a class="el" href="structjson__object.html">json_object</a> instance </td></tr>
   </table>
+  </dd>
 </dl>
 
 </div>
-</div><p>
-<a class="anchor" name="ba4e8df5e00bdc91a89bfb775e04ed70"></a><!-- doxytag: member="json_object.h::json_object_get_array" ref="ba4e8df5e00bdc91a89bfb775e04ed70" args="(struct json_object *obj)" -->
+</div>
+<a class="anchor" id="aba4e8df5e00bdc91a89bfb775e04ed70"></a><!-- doxytag: member="json_object.h::json_object_get_array" ref="aba4e8df5e00bdc91a89bfb775e04ed70" args="(struct json_object *obj)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structarray__list.html">array_list</a>* json_object_get_array           </td>
+          <td class="memname">struct <a class="el" href="structarray__list.html">array_list</a>* json_object_get_array </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td>
-          <td class="paramname"> <em>obj</em>          </td>
+          <td class="paramname"> <em>obj</em></td>
           <td>&nbsp;)&nbsp;</td>
           <td><code> [read]</code></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
-
-<p>
-Get the arraylist of a <a class="el" href="structjson__object.html">json_object</a> of type json_type_array <dl compact><dt><b>Parameters:</b></dt><dd>
+<p>Get the arraylist of a <a class="el" href="structjson__object.html">json_object</a> of type json_type_array </p>
+<dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>obj</em>&nbsp;</td><td>the <a class="el" href="structjson__object.html">json_object</a> instance </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>an arraylist </dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>an arraylist </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="1765227e33016c7fee2abe31800080d1"></a><!-- doxytag: member="json_object.h::json_object_get_boolean" ref="1765227e33016c7fee2abe31800080d1" args="(struct json_object *obj)" -->
+</div>
+<a class="anchor" id="a3be3153ae5158ed24a49d74fbf14149f"></a><!-- doxytag: member="json_object.h::json_object_get_boolean" ref="a3be3153ae5158ed24a49d74fbf14149f" args="(struct json_object *obj)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="json__object_8h.html#621c38f1f10a1c565d897e3178b16d6e">boolean</a> json_object_get_boolean           </td>
+          <td class="memname"><a class="el" href="json__object_8h.html#a81f02022906fafc71eb9197049f07f73">json_bool</a> json_object_get_boolean </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td>
-          <td class="paramname"> <em>obj</em>          </td>
+          <td class="paramname"> <em>obj</em></td>
           <td>&nbsp;)&nbsp;</td>
           <td></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
-
-<p>
-Get the boolean value of a <a class="el" href="structjson__object.html">json_object</a><p>
-The type is coerced to a boolean if the passed object is not a boolean. integer and double objects will return FALSE if there value is zero or TRUE otherwise. If the passed object is a string it will return TRUE if it has a non zero length. If any other object type is passed TRUE will be returned if the object is not NULL.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
+<p>Get the json_bool value of a <a class="el" href="structjson__object.html">json_object</a></p>
+<p>The type is coerced to a json_bool if the passed object is not a json_bool. integer and double objects will return FALSE if there value is zero or TRUE otherwise. If the passed object is a string it will return TRUE if it has a non zero length. If any other object type is passed TRUE will be returned if the object is not NULL.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>obj</em>&nbsp;</td><td>the <a class="el" href="structjson__object.html">json_object</a> instance </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>a boolean </dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>a json_bool </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="9cf586fba906a597a121423045cb2a45"></a><!-- doxytag: member="json_object.h::json_object_get_double" ref="9cf586fba906a597a121423045cb2a45" args="(struct json_object *obj)" -->
+</div>
+<a class="anchor" id="a9cf586fba906a597a121423045cb2a45"></a><!-- doxytag: member="json_object.h::json_object_get_double" ref="a9cf586fba906a597a121423045cb2a45" args="(struct json_object *obj)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">double json_object_get_double           </td>
+          <td class="memname">double json_object_get_double </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td>
-          <td class="paramname"> <em>obj</em>          </td>
+          <td class="paramname"> <em>obj</em></td>
           <td>&nbsp;)&nbsp;</td>
           <td></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
-
-<p>
-Get the double value of a <a class="el" href="structjson__object.html">json_object</a><p>
-The type is coerced to a double if the passed object is not a double. integer objects will return their dboule conversion. Strings will be parsed as a double. If no conversion exists then 0.0 is returned.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
+<p>Get the double floating point value of a <a class="el" href="structjson__object.html">json_object</a></p>
+<p>The type is coerced to a double if the passed object is not a double. integer objects will return their double conversion. Strings will be parsed as a double. If no conversion exists then 0.0 is returned and errno is set to EINVAL. null is equivalent to 0 (no error values set)</p>
+<p>If the value is too big to fit in a double, then the value is set to the closest infinity with errno set to ERANGE. If strings cannot be converted to their double value, then EINVAL is set &amp; NaN is returned.</p>
+<p>Arrays of length 0 are interpreted as 0 (with no error flags set). Arrays of length 1 are effectively cast to the equivalent object and converted using the above rules. All other arrays set the error to EINVAL &amp; return NaN.</p>
+<p>NOTE: Set errno to 0 directly before a call to this function to determine whether or not conversion was successful (it does not clear the value for you).</p>
+<dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>obj</em>&nbsp;</td><td>the <a class="el" href="structjson__object.html">json_object</a> instance </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>an double </dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>a double floating point number </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="28e392cc4d04c34628ed6dddd8a3ba6b"></a><!-- doxytag: member="json_object.h::json_object_get_int" ref="28e392cc4d04c34628ed6dddd8a3ba6b" args="(struct json_object *obj)" -->
+</div>
+<a class="anchor" id="ae6cab7d4c7c707b9053035a6405d3891"></a><!-- doxytag: member="json_object.h::json_object_get_int" ref="ae6cab7d4c7c707b9053035a6405d3891" args="(struct json_object *obj)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int json_object_get_int           </td>
+          <td class="memname">int32_t json_object_get_int </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td>
-          <td class="paramname"> <em>obj</em>          </td>
+          <td class="paramname"> <em>obj</em></td>
           <td>&nbsp;)&nbsp;</td>
           <td></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
+<p>Get the int value of a <a class="el" href="structjson__object.html">json_object</a></p>
+<p>The type is coerced to a int if the passed object is not a int. double objects will return their integer conversion. Strings will be parsed as an integer. If no conversion exists then 0 is returned and errno is set to EINVAL. null is equivalent to 0 (no error values set)</p>
+<p>Note that integers are stored internally as 64-bit values. If the value of too big or too small to fit into 32-bit, INT32_MAX or INT32_MIN are returned, respectively.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>obj</em>&nbsp;</td><td>the <a class="el" href="structjson__object.html">json_object</a> instance </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>an int </dd></dl>
 
-<p>
-Get the int value of a <a class="el" href="structjson__object.html">json_object</a><p>
-The type is coerced to a int if the passed object is not a int. double objects will return their integer conversion. Strings will be parsed as an integer. If no conversion exists then 0 is returned.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
+</div>
+</div>
+<a class="anchor" id="a3493894ebd226249118582e640af6944"></a><!-- doxytag: member="json_object.h::json_object_get_int64" ref="a3493894ebd226249118582e640af6944" args="(struct json_object *obj)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int64_t json_object_get_int64 </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td>
+          <td class="paramname"> <em>obj</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Get the int value of a <a class="el" href="structjson__object.html">json_object</a></p>
+<p>The type is coerced to a int64 if the passed object is not a int64. double objects will return their int64 conversion. Strings will be parsed as an int64. If no conversion exists then 0 is returned.</p>
+<p>NOTE: Set errno to 0 directly before a call to this function to determine whether or not conversion was successful (it does not clear the value for you).</p>
+<dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>obj</em>&nbsp;</td><td>the <a class="el" href="structjson__object.html">json_object</a> instance </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>an int </dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>an int64 </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="9840421d6b45a7d00a42e13e379b54b5"></a><!-- doxytag: member="json_object.h::json_object_get_object" ref="9840421d6b45a7d00a42e13e379b54b5" args="(struct json_object *obj)" -->
+</div>
+<a class="anchor" id="a9840421d6b45a7d00a42e13e379b54b5"></a><!-- doxytag: member="json_object.h::json_object_get_object" ref="a9840421d6b45a7d00a42e13e379b54b5" args="(struct json_object *obj)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structlh__table.html">lh_table</a>* json_object_get_object           </td>
+          <td class="memname">struct <a class="el" href="structlh__table.html">lh_table</a>* json_object_get_object </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td>
-          <td class="paramname"> <em>obj</em>          </td>
+          <td class="paramname"> <em>obj</em></td>
           <td>&nbsp;)&nbsp;</td>
           <td><code> [read]</code></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
-
-<p>
-Get the hashtable of a <a class="el" href="structjson__object.html">json_object</a> of type json_type_object <dl compact><dt><b>Parameters:</b></dt><dd>
+<p>Get the hashtable of a <a class="el" href="structjson__object.html">json_object</a> of type json_type_object </p>
+<dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>obj</em>&nbsp;</td><td>the <a class="el" href="structjson__object.html">json_object</a> instance </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>a linkhash </dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>a linkhash </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="d24f1c4c22b2a7d33e7b562c01f2ca65"></a><!-- doxytag: member="json_object.h::json_object_get_string" ref="d24f1c4c22b2a7d33e7b562c01f2ca65" args="(struct json_object *obj)" -->
+</div>
+<a class="anchor" id="ad24f1c4c22b2a7d33e7b562c01f2ca65"></a><!-- doxytag: member="json_object.h::json_object_get_string" ref="ad24f1c4c22b2a7d33e7b562c01f2ca65" args="(struct json_object *obj)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">const char* json_object_get_string           </td>
+          <td class="memname">const char* json_object_get_string </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td>
-          <td class="paramname"> <em>obj</em>          </td>
+          <td class="paramname"> <em>obj</em></td>
           <td>&nbsp;)&nbsp;</td>
           <td></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
-
-<p>
-Get the string value of a <a class="el" href="structjson__object.html">json_object</a><p>
-If the passed object is not of type json_type_string then the JSON representation of the object is returned.<p>
-The returned string memory is managed by the <a class="el" href="structjson__object.html">json_object</a> and will be freed when the reference count of the <a class="el" href="structjson__object.html">json_object</a> drops to zero.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
+<p>Get the string value of a <a class="el" href="structjson__object.html">json_object</a></p>
+<p>If the passed object is not of type json_type_string then the JSON representation of the object is returned.</p>
+<p>The returned string memory is managed by the <a class="el" href="structjson__object.html">json_object</a> and will be freed when the reference count of the <a class="el" href="structjson__object.html">json_object</a> drops to zero.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>obj</em>&nbsp;</td><td>the <a class="el" href="structjson__object.html">json_object</a> instance </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>a string </dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>a string </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="dc5e998b4897b6e450bd0975a58d2f72"></a><!-- doxytag: member="json_object.h::json_object_get_type" ref="dc5e998b4897b6e450bd0975a58d2f72" args="(struct json_object *obj)" -->
+</div>
+<a class="anchor" id="ad821384d0d8515d5ed4eec44d7101772"></a><!-- doxytag: member="json_object.h::json_object_get_string_len" ref="ad821384d0d8515d5ed4eec44d7101772" args="(struct json_object *obj)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">enum <a class="el" href="json__object_8h.html#c75c61993722a9b8aaa44704072ec06c">json_type</a> json_object_get_type           </td>
+          <td class="memname">int json_object_get_string_len </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td>
-          <td class="paramname"> <em>obj</em>          </td>
+          <td class="paramname"> <em>obj</em></td>
           <td>&nbsp;)&nbsp;</td>
           <td></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
+<p>Get the string length of a <a class="el" href="structjson__object.html">json_object</a></p>
+<p>If the passed object is not of type json_type_string then zero will be returned.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>obj</em>&nbsp;</td><td>the <a class="el" href="structjson__object.html">json_object</a> instance </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>int </dd></dl>
 
-<p>
-Get the type of the <a class="el" href="structjson__object.html">json_object</a> <dl compact><dt><b>Parameters:</b></dt><dd>
+</div>
+</div>
+<a class="anchor" id="adc5e998b4897b6e450bd0975a58d2f72"></a><!-- doxytag: member="json_object.h::json_object_get_type" ref="adc5e998b4897b6e450bd0975a58d2f72" args="(struct json_object *obj)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06c">json_type</a> json_object_get_type </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td>
+          <td class="paramname"> <em>obj</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Get the type of the <a class="el" href="structjson__object.html">json_object</a>. See also <a class="el" href="json__util_8h.html#a74031a1b948dc9fed3f367ea6ce78389">json_type_to_name()</a> to turn this into a string suitable, for instance, for logging.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>obj</em>&nbsp;</td><td>the <a class="el" href="structjson__object.html">json_object</a> instance </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>type being one of: json_type_boolean, json_type_double, json_type_int, json_type_object, json_type_array, json_type_string, </dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>type being one of: json_type_null (i.e. obj == NULL), json_type_boolean, json_type_double, json_type_int, json_type_object, json_type_array, json_type_string, </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="b6dc8b19f8da310e78f402f83d6ae6c5"></a><!-- doxytag: member="json_object.h::json_object_is_type" ref="b6dc8b19f8da310e78f402f83d6ae6c5" args="(struct json_object *obj, enum json_type type)" -->
+</div>
+<a class="anchor" id="ab6dc8b19f8da310e78f402f83d6ae6c5"></a><!-- doxytag: member="json_object.h::json_object_is_type" ref="ab6dc8b19f8da310e78f402f83d6ae6c5" args="(struct json_object *obj, enum json_type type)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int json_object_is_type           </td>
+          <td class="memname">int json_object_is_type </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td>
           <td class="paramname"> <em>obj</em>, </td>
@@ -744,7 +848,7 @@ Get the type of the <a class="el" href="structjson__object.html">json_object</a>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">enum <a class="el" href="json__object_8h.html#c75c61993722a9b8aaa44704072ec06c">json_type</a>&nbsp;</td>
+          <td class="paramtype">enum <a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06c">json_type</a>&nbsp;</td>
           <td class="paramname"> <em>type</em></td><td>&nbsp;</td>
         </tr>
         <tr>
@@ -755,171 +859,194 @@ Get the type of the <a class="el" href="structjson__object.html">json_object</a>
       </table>
 </div>
 <div class="memdoc">
-
-<p>
-Check if the <a class="el" href="structjson__object.html">json_object</a> is of a given type <dl compact><dt><b>Parameters:</b></dt><dd>
+<p>Check if the <a class="el" href="structjson__object.html">json_object</a> is of a given type </p>
+<dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>obj</em>&nbsp;</td><td>the <a class="el" href="structjson__object.html">json_object</a> instance </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>one of: json_type_boolean, json_type_double, json_type_int, json_type_object, json_type_array, json_type_string, </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>one of: json_type_null (i.e. obj == NULL), json_type_boolean, json_type_double, json_type_int, json_type_object, json_type_array, json_type_string, </td></tr>
   </table>
+  </dd>
 </dl>
 
 </div>
-</div><p>
-<a class="anchor" name="9b5af06e9a99e16c6d9b6459a685ea3f"></a><!-- doxytag: member="json_object.h::json_object_new_array" ref="9b5af06e9a99e16c6d9b6459a685ea3f" args="(void)" -->
+</div>
+<a class="anchor" id="a9b5af06e9a99e16c6d9b6459a685ea3f"></a><!-- doxytag: member="json_object.h::json_object_new_array" ref="a9b5af06e9a99e16c6d9b6459a685ea3f" args="(void)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* json_object_new_array           </td>
+          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* json_object_new_array </td>
           <td>(</td>
           <td class="paramtype">void&nbsp;</td>
-          <td class="paramname">          </td>
+          <td class="paramname"></td>
           <td>&nbsp;)&nbsp;</td>
           <td><code> [read]</code></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
+<p>Create a new empty <a class="el" href="structjson__object.html">json_object</a> of type json_type_array </p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>a <a class="el" href="structjson__object.html">json_object</a> of type json_type_array </dd></dl>
 
-<p>
-Create a new empty <a class="el" href="structjson__object.html">json_object</a> of type json_type_array <dl class="return" compact><dt><b>Returns:</b></dt><dd>a <a class="el" href="structjson__object.html">json_object</a> of type json_type_array </dd></dl>
-
 </div>
-</div><p>
-<a class="anchor" name="1bb59b93df42cafe49e8ff8c500690a6"></a><!-- doxytag: member="json_object.h::json_object_new_boolean" ref="1bb59b93df42cafe49e8ff8c500690a6" args="(boolean b)" -->
+</div>
+<a class="anchor" id="a93cfacfdd1000c739ad19df0a080cb85"></a><!-- doxytag: member="json_object.h::json_object_new_boolean" ref="a93cfacfdd1000c739ad19df0a080cb85" args="(json_bool b)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* json_object_new_boolean           </td>
+          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* json_object_new_boolean </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="json__object_8h.html#621c38f1f10a1c565d897e3178b16d6e">boolean</a>&nbsp;</td>
-          <td class="paramname"> <em>b</em>          </td>
+          <td class="paramtype"><a class="el" href="json__object_8h.html#a81f02022906fafc71eb9197049f07f73">json_bool</a>&nbsp;</td>
+          <td class="paramname"> <em>b</em></td>
           <td>&nbsp;)&nbsp;</td>
           <td><code> [read]</code></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
-
-<p>
-Create a new empty <a class="el" href="structjson__object.html">json_object</a> of type json_type_boolean <dl compact><dt><b>Parameters:</b></dt><dd>
+<p>Create a new empty <a class="el" href="structjson__object.html">json_object</a> of type json_type_boolean </p>
+<dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>b</em>&nbsp;</td><td>a boolean TRUE or FALSE (0 or 1) </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>b</em>&nbsp;</td><td>a json_bool TRUE or FALSE (0 or 1) </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>a <a class="el" href="structjson__object.html">json_object</a> of type json_type_boolean </dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>a <a class="el" href="structjson__object.html">json_object</a> of type json_type_boolean </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="2e9c761833a4f5d0a0c60640377e3cec"></a><!-- doxytag: member="json_object.h::json_object_new_double" ref="2e9c761833a4f5d0a0c60640377e3cec" args="(double d)" -->
+</div>
+<a class="anchor" id="a2e9c761833a4f5d0a0c60640377e3cec"></a><!-- doxytag: member="json_object.h::json_object_new_double" ref="a2e9c761833a4f5d0a0c60640377e3cec" args="(double d)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* json_object_new_double           </td>
+          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* json_object_new_double </td>
           <td>(</td>
           <td class="paramtype">double&nbsp;</td>
-          <td class="paramname"> <em>d</em>          </td>
+          <td class="paramname"> <em>d</em></td>
           <td>&nbsp;)&nbsp;</td>
           <td><code> [read]</code></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
-
-<p>
-Create a new empty <a class="el" href="structjson__object.html">json_object</a> of type json_type_double <dl compact><dt><b>Parameters:</b></dt><dd>
+<p>Create a new empty <a class="el" href="structjson__object.html">json_object</a> of type json_type_double </p>
+<dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>the double </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>a <a class="el" href="structjson__object.html">json_object</a> of type json_type_double </dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>a <a class="el" href="structjson__object.html">json_object</a> of type json_type_double </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="f4dc3777b8751243c620a2cc65c89e26"></a><!-- doxytag: member="json_object.h::json_object_new_int" ref="f4dc3777b8751243c620a2cc65c89e26" args="(int i)" -->
+</div>
+<a class="anchor" id="aa7db8ceb1afe1b93afc63c10b8c57560"></a><!-- doxytag: member="json_object.h::json_object_new_int" ref="aa7db8ceb1afe1b93afc63c10b8c57560" args="(int32_t i)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* json_object_new_int           </td>
+          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* json_object_new_int </td>
           <td>(</td>
-          <td class="paramtype">int&nbsp;</td>
-          <td class="paramname"> <em>i</em>          </td>
+          <td class="paramtype">int32_t&nbsp;</td>
+          <td class="paramname"> <em>i</em></td>
           <td>&nbsp;)&nbsp;</td>
           <td><code> [read]</code></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
+<p>Create a new empty <a class="el" href="structjson__object.html">json_object</a> of type json_type_int Note that values are stored as 64-bit values internally. To ensure the full range is maintained, use json_object_new_int64 instead. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>i</em>&nbsp;</td><td>the integer </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>a <a class="el" href="structjson__object.html">json_object</a> of type json_type_int </dd></dl>
 
-<p>
-Create a new empty <a class="el" href="structjson__object.html">json_object</a> of type json_type_int <dl compact><dt><b>Parameters:</b></dt><dd>
+</div>
+</div>
+<a class="anchor" id="a54a27690a1927354966189166bba6ca3"></a><!-- doxytag: member="json_object.h::json_object_new_int64" ref="a54a27690a1927354966189166bba6ca3" args="(int64_t i)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* json_object_new_int64 </td>
+          <td>(</td>
+          <td class="paramtype">int64_t&nbsp;</td>
+          <td class="paramname"> <em>i</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td><code> [read]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Create a new empty <a class="el" href="structjson__object.html">json_object</a> of type json_type_int </p>
+<dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>i</em>&nbsp;</td><td>the integer </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>a <a class="el" href="structjson__object.html">json_object</a> of type json_type_int </dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>a <a class="el" href="structjson__object.html">json_object</a> of type json_type_int </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="f0ed3555604f39ac74b5e28bc5b1f82c"></a><!-- doxytag: member="json_object.h::json_object_new_object" ref="f0ed3555604f39ac74b5e28bc5b1f82c" args="(void)" -->
+</div>
+<a class="anchor" id="af0ed3555604f39ac74b5e28bc5b1f82c"></a><!-- doxytag: member="json_object.h::json_object_new_object" ref="af0ed3555604f39ac74b5e28bc5b1f82c" args="(void)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* json_object_new_object           </td>
+          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* json_object_new_object </td>
           <td>(</td>
           <td class="paramtype">void&nbsp;</td>
-          <td class="paramname">          </td>
+          <td class="paramname"></td>
           <td>&nbsp;)&nbsp;</td>
           <td><code> [read]</code></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
+<p>Create a new empty object with a reference count of 1. The caller of this object initially has sole ownership. Remember, when using json_object_object_add or json_object_array_put_idx, ownership will transfer to the object/array. Call json_object_get if you want to maintain shared ownership or also add this object as a child of multiple objects or arrays. Any ownerships you acquired but did not transfer must be released through json_object_put.</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>a <a class="el" href="structjson__object.html">json_object</a> of type json_type_object </dd></dl>
 
-<p>
-Create a new empty object <dl class="return" compact><dt><b>Returns:</b></dt><dd>a <a class="el" href="structjson__object.html">json_object</a> of type json_type_object </dd></dl>
-
 </div>
-</div><p>
-<a class="anchor" name="48eb92a8208e6718e55edf1130e8e4b8"></a><!-- doxytag: member="json_object.h::json_object_new_string" ref="48eb92a8208e6718e55edf1130e8e4b8" args="(const char *s)" -->
+</div>
+<a class="anchor" id="a48eb92a8208e6718e55edf1130e8e4b8"></a><!-- doxytag: member="json_object.h::json_object_new_string" ref="a48eb92a8208e6718e55edf1130e8e4b8" args="(const char *s)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* json_object_new_string           </td>
+          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* json_object_new_string </td>
           <td>(</td>
           <td class="paramtype">const char *&nbsp;</td>
-          <td class="paramname"> <em>s</em>          </td>
+          <td class="paramname"> <em>s</em></td>
           <td>&nbsp;)&nbsp;</td>
           <td><code> [read]</code></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
-
-<p>
-Create a new empty <a class="el" href="structjson__object.html">json_object</a> of type json_type_string<p>
-A copy of the string is made and the memory is managed by the <a class="el" href="structjson__object.html">json_object</a><p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
+<p>Create a new empty <a class="el" href="structjson__object.html">json_object</a> of type json_type_string</p>
+<p>A copy of the string is made and the memory is managed by the <a class="el" href="structjson__object.html">json_object</a></p>
+<dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>s</em>&nbsp;</td><td>the string </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>a <a class="el" href="structjson__object.html">json_object</a> of type json_type_string </dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>a <a class="el" href="structjson__object.html">json_object</a> of type json_type_string </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="9d14fd03ed7520c4aa33ab53b4569414"></a><!-- doxytag: member="json_object.h::json_object_new_string_len" ref="9d14fd03ed7520c4aa33ab53b4569414" args="(const char *s, int len)" -->
+</div>
+<a class="anchor" id="a9d14fd03ed7520c4aa33ab53b4569414"></a><!-- doxytag: member="json_object.h::json_object_new_string_len" ref="a9d14fd03ed7520c4aa33ab53b4569414" args="(const char *s, int len)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* json_object_new_string_len           </td>
+          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* json_object_new_string_len </td>
           <td>(</td>
           <td class="paramtype">const char *&nbsp;</td>
           <td class="paramname"> <em>s</em>, </td>
@@ -939,16 +1066,14 @@ A copy of the string is made and the memory is managed by the <a class="el" href
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="04448b1c63173e1bfe49965835732075"></a><!-- doxytag: member="json_object.h::json_object_object_add" ref="04448b1c63173e1bfe49965835732075" args="(struct json_object *obj, const char *key, struct json_object *val)" -->
+</div>
+<a class="anchor" id="a04448b1c63173e1bfe49965835732075"></a><!-- doxytag: member="json_object.h::json_object_object_add" ref="a04448b1c63173e1bfe49965835732075" args="(struct json_object *obj, const char *key, struct json_object *val)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void json_object_object_add           </td>
+          <td class="memname">void json_object_object_add </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td>
           <td class="paramname"> <em>obj</em>, </td>
@@ -973,26 +1098,26 @@ A copy of the string is made and the memory is managed by the <a class="el" href
       </table>
 </div>
 <div class="memdoc">
-
-<p>
-Add an object field to a <a class="el" href="structjson__object.html">json_object</a> of type json_type_object<p>
-The reference count will *not* be incremented. This is to make adding fields to objects in code more compact. If you want to retain a reference to an added object you must wrap the passed object with json_object_get<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
+<p>Add an object field to a <a class="el" href="structjson__object.html">json_object</a> of type json_type_object</p>
+<p>The reference count will *not* be incremented. This is to make adding fields to objects in code more compact. If you want to retain a reference to an added object, independent of the lifetime of obj, you must wrap the passed object with json_object_get.</p>
+<p>Upon calling this, the ownership of val transfers to obj. Thus you must make sure that you do in fact have ownership over this object. For instance, json_object_new_object will give you ownership until you transfer it, whereas json_object_object_get does not.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>obj</em>&nbsp;</td><td>the <a class="el" href="structjson__object.html">json_object</a> instance </td></tr>
     <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>the object field name (a private copy will be duplicated) </td></tr>
     <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>a <a class="el" href="structjson__object.html">json_object</a> or NULL member to associate with the given field </td></tr>
   </table>
+  </dd>
 </dl>
 
 </div>
-</div><p>
-<a class="anchor" name="03653c18aafccd1ffba1ad318e342845"></a><!-- doxytag: member="json_object.h::json_object_object_del" ref="03653c18aafccd1ffba1ad318e342845" args="(struct json_object *obj, const char *key)" -->
+</div>
+<a class="anchor" id="a03653c18aafccd1ffba1ad318e342845"></a><!-- doxytag: member="json_object.h::json_object_object_del" ref="a03653c18aafccd1ffba1ad318e342845" args="(struct json_object *obj, const char *key)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void json_object_object_del           </td>
+          <td class="memname">void json_object_object_del </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td>
           <td class="paramname"> <em>obj</em>, </td>
@@ -1011,25 +1136,24 @@ The reference count will *not* be incremented. This is to make adding fields to
       </table>
 </div>
 <div class="memdoc">
-
-<p>
-Delete the given <a class="el" href="structjson__object.html">json_object</a> field<p>
-The reference count will be decremented for the deleted object<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
+<p>Delete the given <a class="el" href="structjson__object.html">json_object</a> field</p>
+<p>The reference count will be decremented for the deleted object. If there are no more owners of the value represented by this key, then the value is freed. Otherwise, the reference to the value will remain in memory.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>obj</em>&nbsp;</td><td>the <a class="el" href="structjson__object.html">json_object</a> instance </td></tr>
     <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>the object field name </td></tr>
   </table>
+  </dd>
 </dl>
 
 </div>
-</div><p>
-<a class="anchor" name="c11730ad909d1f9eb077d1ce9ff8b153"></a><!-- doxytag: member="json_object.h::json_object_object_get" ref="c11730ad909d1f9eb077d1ce9ff8b153" args="(struct json_object *obj, const char *key)" -->
+</div>
+<a class="anchor" id="ac11730ad909d1f9eb077d1ce9ff8b153"></a><!-- doxytag: member="json_object.h::json_object_object_get" ref="ac11730ad909d1f9eb077d1ce9ff8b153" args="(struct json_object *obj, const char *key)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* json_object_object_get           </td>
+          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* json_object_object_get </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td>
           <td class="paramname"> <em>obj</em>, </td>
@@ -1048,103 +1172,183 @@ The reference count will be decremented for the deleted object<p>
       </table>
 </div>
 <div class="memdoc">
+<p>Get the <a class="el" href="structjson__object.html">json_object</a> associate with a given object field</p>
+<p>*No* reference counts will be changed. There is no need to manually adjust reference counts through the json_object_put/json_object_get methods unless you need to have the child (value) reference maintain a different lifetime than the owning parent (obj). Ownership of the returned value is retained by obj (do not do json_object_put unless you have done a json_object_get). If you delete the value from obj (json_object_object_del) and wish to access the returned reference afterwards, make sure you have first gotten shared ownership through json_object_get (&amp; don't forget to do a json_object_put or transfer ownership to prevent a memory leak).</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>obj</em>&nbsp;</td><td>the <a class="el" href="structjson__object.html">json_object</a> instance </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>the object field name </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>the <a class="el" href="structjson__object.html">json_object</a> associated with the given field name </dd></dl>
+<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000001">Deprecated:</a></b></dt><dd>Please use json_object_object_get_ex </dd></dl>
 
-<p>
-Get the <a class="el" href="structjson__object.html">json_object</a> associate with a given object field <dl compact><dt><b>Parameters:</b></dt><dd>
+</div>
+</div>
+<a class="anchor" id="af3f38b3395b1af8e9d3ac73818c3a936"></a><!-- doxytag: member="json_object.h::json_object_object_get_ex" ref="af3f38b3395b1af8e9d3ac73818c3a936" args="(struct json_object *obj, const char *key, struct json_object **value)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="json__object_8h.html#a81f02022906fafc71eb9197049f07f73">json_bool</a> json_object_object_get_ex </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td>
+          <td class="paramname"> <em>obj</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structjson__object.html">json_object</a> **&nbsp;</td>
+          <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Get the <a class="el" href="structjson__object.html">json_object</a> associated with a given object field.</p>
+<p>This returns true if the key is found, false in all other cases (including if obj isn't a json_type_object).</p>
+<p>*No* reference counts will be changed. There is no need to manually adjust reference counts through the json_object_put/json_object_get methods unless you need to have the child (value) reference maintain a different lifetime than the owning parent (obj). Ownership of value is retained by obj.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>obj</em>&nbsp;</td><td>the <a class="el" href="structjson__object.html">json_object</a> instance </td></tr>
     <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>the object field name </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>a pointer where to store a reference to the <a class="el" href="structjson__object.html">json_object</a> associated with the given field name.</td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>the <a class="el" href="structjson__object.html">json_object</a> associated with the given field name </dd></dl>
+<p>It is safe to pass a NULL value. </p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>whether or not the key exists </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="ccc34b38e15e46357d64a0beed3d0150"></a><!-- doxytag: member="json_object.h::json_object_put" ref="ccc34b38e15e46357d64a0beed3d0150" args="(struct json_object *obj)" -->
+</div>
+<a class="anchor" id="accc34b38e15e46357d64a0beed3d0150"></a><!-- doxytag: member="json_object.h::json_object_put" ref="accc34b38e15e46357d64a0beed3d0150" args="(struct json_object *obj)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void json_object_put           </td>
+          <td class="memname">void json_object_put </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td>
-          <td class="paramname"> <em>obj</em>          </td>
+          <td class="paramname"> <em>obj</em></td>
           <td>&nbsp;)&nbsp;</td>
           <td></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
-
-<p>
-Decrement the reference count of <a class="el" href="structjson__object.html">json_object</a> and free if it reaches zero <dl compact><dt><b>Parameters:</b></dt><dd>
+<p>Decrement the reference count of <a class="el" href="structjson__object.html">json_object</a> and free if it reaches zero. You must have ownership of obj prior to doing this or you will cause an imbalance in the reference count.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>obj</em>&nbsp;</td><td>the <a class="el" href="structjson__object.html">json_object</a> instance </td></tr>
   </table>
+  </dd>
 </dl>
 
 </div>
-</div><p>
-<a class="anchor" name="1f62a660e2619559d1f3f54cd7483ff8"></a><!-- doxytag: member="json_object.h::json_object_to_json_string" ref="1f62a660e2619559d1f3f54cd7483ff8" args="(struct json_object *obj)" -->
+</div>
+<a class="anchor" id="a1f62a660e2619559d1f3f54cd7483ff8"></a><!-- doxytag: member="json_object.h::json_object_to_json_string" ref="a1f62a660e2619559d1f3f54cd7483ff8" args="(struct json_object *obj)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">const char* json_object_to_json_string           </td>
+          <td class="memname">const char* json_object_to_json_string </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td>
-          <td class="paramname"> <em>obj</em>          </td>
+          <td class="paramname"> <em>obj</em></td>
           <td>&nbsp;)&nbsp;</td>
           <td></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
-
-<p>
-Stringify object to json format <dl compact><dt><b>Parameters:</b></dt><dd>
+<p>Stringify object to json format. Equivalent to json_object_to_json_string_ext(obj, JSON_C_TO_STRING_SPACED) </p>
+<dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>obj</em>&nbsp;</td><td>the <a class="el" href="structjson__object.html">json_object</a> instance </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>a string in JSON format </dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>a string in JSON format </dd></dl>
 
 </div>
-</div><p>
-<hr><h2>Variable Documentation</h2>
-<a class="anchor" name="20dbe4913551cefa6b4b0a77fd4397c4"></a><!-- doxytag: member="json_object.h::json_hex_chars" ref="20dbe4913551cefa6b4b0a77fd4397c4" args="" -->
+</div>
+<a class="anchor" id="a84421dab94ccad42e901e534c6d7b658"></a><!-- doxytag: member="json_object.h::json_object_to_json_string_ext" ref="a84421dab94ccad42e901e534c6d7b658" args="(struct json_object *obj, int flags)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">const char* <a class="el" href="json__object_8h.html#20dbe4913551cefa6b4b0a77fd4397c4">json_hex_chars</a>          </td>
+          <td class="memname">const char* json_object_to_json_string_ext </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td>
+          <td class="paramname"> <em>obj</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>flags</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
+<p>Stringify object to json format </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>obj</em>&nbsp;</td><td>the <a class="el" href="structjson__object.html">json_object</a> instance </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>formatting options, see JSON_C_TO_STRING_PRETTY and other constants </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>a string in JSON format </dd></dl>
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="27427f89f2fc995639e366635fbe58ac"></a><!-- doxytag: member="json_object.h::json_number_chars" ref="27427f89f2fc995639e366635fbe58ac" args="" -->
+</div>
+<hr/><h2>Variable Documentation</h2>
+<a class="anchor" id="a20dbe4913551cefa6b4b0a77fd4397c4"></a><!-- doxytag: member="json_object.h::json_hex_chars" ref="a20dbe4913551cefa6b4b0a77fd4397c4" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">const char* <a class="el" href="json__object_8h.html#27427f89f2fc995639e366635fbe58ac">json_number_chars</a>          </td>
+          <td class="memname">const char* <a class="el" href="json__object_8h.html#a20dbe4913551cefa6b4b0a77fd4397c4">json_hex_chars</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
+</div>
+</div>
+<a class="anchor" id="a27427f89f2fc995639e366635fbe58ac"></a><!-- doxytag: member="json_object.h::json_number_chars" ref="a27427f89f2fc995639e366635fbe58ac" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* <a class="el" href="json__object_8h.html#a27427f89f2fc995639e366635fbe58ac">json_number_chars</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
 
 </div>
-</div><p>
 </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by&nbsp;
 <a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>
 </html>
diff --git a/doc/html/json__object__iterator_8h.html b/doc/html/json__object__iterator_8h.html
new file mode 100644 (file)
index 0000000..33a650b
--- /dev/null
@@ -0,0 +1,270 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>json-c: json_object_iterator.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>json_object_iterator.h File Reference</h1>
+<p>json-c forces clients to use its private data structures for JSON Object iteration. This API corrects that by abstracting the private json-c details.  
+<a href="#_details">More...</a></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__object__iterator.html">json_object_iterator</a></td></tr>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structjson__object__iterator.html">json_object_iterator</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object__iterator_8h.html#af30f56ca510d59da42e5592f9a436c10">json_object_iter_init_default</a> (void)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structjson__object__iterator.html">json_object_iterator</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object__iterator_8h.html#a925eb97b5aa5b64986a0f663f53cf0fa">json_object_iter_begin</a> (struct <a class="el" href="structjson__object.html">json_object</a> *obj)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structjson__object__iterator.html">json_object_iterator</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object__iterator_8h.html#a1fa3784395fb14496e3f1a1633028fd4">json_object_iter_end</a> (const struct <a class="el" href="structjson__object.html">json_object</a> *obj)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object__iterator_8h.html#aa98a310c340f6d9b4eeecb673aa5e240">json_object_iter_next</a> (struct <a class="el" href="structjson__object__iterator.html">json_object_iterator</a> *iter)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object__iterator_8h.html#af17775b9b812a4206a84e4d3fb5774ab">json_object_iter_peek_name</a> (const struct <a class="el" href="structjson__object__iterator.html">json_object_iterator</a> *iter)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object__iterator_8h.html#a47b0af7f1722c10475dffd29efc0b89d">json_object_iter_peek_value</a> (const struct <a class="el" href="structjson__object__iterator.html">json_object_iterator</a> *iter)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="json__object_8h.html#a81f02022906fafc71eb9197049f07f73">json_bool</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object__iterator_8h.html#a878ca25f72b339882aa2607ac938e79c">json_object_iter_equal</a> (const struct <a class="el" href="structjson__object__iterator.html">json_object_iterator</a> *iter1, const struct <a class="el" href="structjson__object__iterator.html">json_object_iterator</a> *iter2)</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>json-c forces clients to use its private data structures for JSON Object iteration. This API corrects that by abstracting the private json-c details. </p>
+<p>Copyright (c) 2009-2012 Hewlett-Packard Development Company, L.P.</p>
+<p>This library is free software; you can redistribute it and/or modify it under the terms of the MIT license. See COPYING for details.</p>
+<p>API attributes: <br/>
+ * Thread-safe: NO<br/>
+ * Reentrant: NO </p>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="a925eb97b5aa5b64986a0f663f53cf0fa"></a><!-- doxytag: member="json_object_iterator.h::json_object_iter_begin" ref="a925eb97b5aa5b64986a0f663f53cf0fa" args="(struct json_object *obj)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structjson__object__iterator.html">json_object_iterator</a> json_object_iter_begin </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td>
+          <td class="paramname"> <em>obj</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td><code> [read]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Retrieves an iterator to the first pair of the JSON Object.</p>
+<dl class="warning"><dt><b>Warning:</b></dt><dd>Any modification of the underlying pair invalidates all iterators to that pair.</dd></dl>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>obj</em>&nbsp;</td><td>JSON Object instance (MUST be of type <a class="el" href="structjson__object.html">json_object</a>)</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="structjson__object__iterator.html">json_object_iterator</a> If the JSON Object has at least one pair, on return, the iterator refers to the first pair. If the JSON Object doesn't have any pairs, the returned iterator is equivalent to the "end" iterator for the same JSON Object instance.</dd></dl>
+<div class="fragment"><pre class="fragment"> <span class="keyword">struct </span><a class="code" href="structjson__object__iterator.html">json_object_iterator</a> it;
+ <span class="keyword">struct </span><a class="code" href="structjson__object__iterator.html">json_object_iterator</a> itEnd;
+ <span class="keyword">struct </span><a class="code" href="structjson__object.html">json_object</a>* obj;
+
+ obj = <a class="code" href="json__tokener_8h.html#abf031fdf1e5caab71e2225a99588c6bb">json_tokener_parse</a>(<span class="stringliteral">&quot;{&#39;first&#39;:&#39;george&#39;, &#39;age&#39;:100}&quot;</span>);
+ it = <a class="code" href="json__object__iterator_8h.html#a925eb97b5aa5b64986a0f663f53cf0fa">json_object_iter_begin</a>(obj);
+ itEnd = <a class="code" href="json__object__iterator_8h.html#a1fa3784395fb14496e3f1a1633028fd4">json_object_iter_end</a>(obj);
+
+ <span class="keywordflow">while</span> (!<a class="code" href="json__object__iterator_8h.html#a878ca25f72b339882aa2607ac938e79c">json_object_iter_equal</a>(&amp;it, &amp;itEnd)) {
+     printf(<span class="stringliteral">&quot;%s\n&quot;</span>,
+            <a class="code" href="json__object__iterator_8h.html#af17775b9b812a4206a84e4d3fb5774ab">json_object_iter_peek_name</a>(&amp;it));
+     <a class="code" href="json__object__iterator_8h.html#aa98a310c340f6d9b4eeecb673aa5e240">json_object_iter_next</a>(&amp;it);
+ }
+</pre></div> 
+</div>
+</div>
+<a class="anchor" id="a1fa3784395fb14496e3f1a1633028fd4"></a><!-- doxytag: member="json_object_iterator.h::json_object_iter_end" ref="a1fa3784395fb14496e3f1a1633028fd4" args="(const struct json_object *obj)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structjson__object__iterator.html">json_object_iterator</a> json_object_iter_end </td>
+          <td>(</td>
+          <td class="paramtype">const struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td>
+          <td class="paramname"> <em>obj</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td><code> [read]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Retrieves the iterator that represents the position beyond the last pair of the given JSON Object instance.</p>
+<dl class="warning"><dt><b>Warning:</b></dt><dd>Do NOT write code that assumes that the "end" iterator value is NULL, even if it is so in a particular instance of the implementation.</dd></dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>The reason we do not (and MUST NOT) provide "json_object_iter_is_end(json_object_iterator* iter)" type of API is because it would limit the underlying representation of name/value containment (or force us to add additional, otherwise unnecessary, fields to the iterator structure). The "end" iterator and the equality test method, on the other hand, permit us to cleanly abstract pretty much any reasonable underlying representation without burdening the iterator structure with unnecessary data.</dd>
+<dd>
+For performance reasons, memorize the "end" iterator prior to any loop.</dd></dl>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>obj</em>&nbsp;</td><td>JSON Object instance (MUST be of type <a class="el" href="structjson__object.html">json_object</a>)</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="structjson__object__iterator.html">json_object_iterator</a> On return, the iterator refers to the "end" of the Object instance's pairs (i.e., NOT the last pair, but "beyond the last
+              pair" value) </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a878ca25f72b339882aa2607ac938e79c"></a><!-- doxytag: member="json_object_iterator.h::json_object_iter_equal" ref="a878ca25f72b339882aa2607ac938e79c" args="(const struct json_object_iterator *iter1, const struct json_object_iterator *iter2)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="json__object_8h.html#a81f02022906fafc71eb9197049f07f73">json_bool</a> json_object_iter_equal </td>
+          <td>(</td>
+          <td class="paramtype">const struct <a class="el" href="structjson__object__iterator.html">json_object_iterator</a> *&nbsp;</td>
+          <td class="paramname"> <em>iter1</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const struct <a class="el" href="structjson__object__iterator.html">json_object_iterator</a> *&nbsp;</td>
+          <td class="paramname"> <em>iter2</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Tests two iterators for equality. Typically used to test for end of iteration by comparing an iterator to the corresponding "end" iterator (that was derived from the same JSON Object instance).</p>
+<dl class="note"><dt><b>Note:</b></dt><dd>The reason we do not (and MUST NOT) provide "json_object_iter_is_end(json_object_iterator* iter)" type of API is because it would limit the underlying representation of name/value containment (or force us to add additional, otherwise unnecessary, fields to the iterator structure). The equality test method, on the other hand, permits us to cleanly abstract pretty much any reasonable underlying representation.</dd></dl>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>iter1</em>&nbsp;</td><td>Pointer to first valid, non-NULL iterator </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>iter2</em>&nbsp;</td><td>POinter to second valid, non-NULL iterator</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="warning"><dt><b>Warning:</b></dt><dd>if a NULL iterator pointer or an uninitialized or invalid iterator, or iterators derived from different JSON Object instances are passed, bad things will happen!</dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>json_bool non-zero if iterators are equal (i.e., both reference the same name/value pair or are both at "end"); zero if they are not equal. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="af30f56ca510d59da42e5592f9a436c10"></a><!-- doxytag: member="json_object_iterator.h::json_object_iter_init_default" ref="af30f56ca510d59da42e5592f9a436c10" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structjson__object__iterator.html">json_object_iterator</a> json_object_iter_init_default </td>
+          <td>(</td>
+          <td class="paramtype">void&nbsp;</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td><code> [read]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Initializes an iterator structure to a "default" value that is convenient for initializing an iterator variable to a default state (e.g., initialization list in a class' constructor).</p>
+<div class="fragment"><pre class="fragment"> <span class="keyword">struct </span><a class="code" href="structjson__object__iterator.html">json_object_iterator</a> iter = <a class="code" href="json__object__iterator_8h.html#af30f56ca510d59da42e5592f9a436c10">json_object_iter_init_default</a>();
+ MyClass() : iter_(<a class="code" href="json__object__iterator_8h.html#af30f56ca510d59da42e5592f9a436c10">json_object_iter_init_default</a>())
+</pre></div><dl class="note"><dt><b>Note:</b></dt><dd>The initialized value doesn't reference any specific pair, is considered an invalid iterator, and MUST NOT be passed to any json-c API that expects a valid iterator.</dd>
+<dd>
+User and internal code MUST NOT make any assumptions about and dependencies on the value of the "default" iterator value.</dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="structjson__object__iterator.html">json_object_iterator</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="aa98a310c340f6d9b4eeecb673aa5e240"></a><!-- doxytag: member="json_object_iterator.h::json_object_iter_next" ref="aa98a310c340f6d9b4eeecb673aa5e240" args="(struct json_object_iterator *iter)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void json_object_iter_next </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structjson__object__iterator.html">json_object_iterator</a> *&nbsp;</td>
+          <td class="paramname"> <em>iter</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Returns an iterator to the next pair, if any</p>
+<dl class="warning"><dt><b>Warning:</b></dt><dd>Any modification of the underlying pair invalidates all iterators to that pair.</dd></dl>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>iter</em>&nbsp;</td><td>[IN/OUT] Pointer to iterator that references a name/value pair; MUST be a valid, non-end iterator. WARNING: bad things will happen if invalid or "end" iterator is passed. Upon return will contain the reference to the next pair if there is one; if there are no more pairs, will contain the "end" iterator value, which may be compared against the return value of <a class="el" href="json__object__iterator_8h.html#a1fa3784395fb14496e3f1a1633028fd4">json_object_iter_end()</a> for the same JSON Object instance. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="af17775b9b812a4206a84e4d3fb5774ab"></a><!-- doxytag: member="json_object_iterator.h::json_object_iter_peek_name" ref="af17775b9b812a4206a84e4d3fb5774ab" args="(const struct json_object_iterator *iter)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* json_object_iter_peek_name </td>
+          <td>(</td>
+          <td class="paramtype">const struct <a class="el" href="structjson__object__iterator.html">json_object_iterator</a> *&nbsp;</td>
+          <td class="paramname"> <em>iter</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Returns a const pointer to the name of the pair referenced by the given iterator.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>iter</em>&nbsp;</td><td>pointer to iterator that references a name/value pair; MUST be a valid, non-end iterator.</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="warning"><dt><b>Warning:</b></dt><dd>bad things will happen if an invalid or "end" iterator is passed.</dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>const char* Pointer to the name of the referenced name/value pair. The name memory belongs to the name/value pair, will be freed when the pair is deleted or modified, and MUST NOT be modified or freed by the user. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a47b0af7f1722c10475dffd29efc0b89d"></a><!-- doxytag: member="json_object_iterator.h::json_object_iter_peek_value" ref="a47b0af7f1722c10475dffd29efc0b89d" args="(const struct json_object_iterator *iter)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* json_object_iter_peek_value </td>
+          <td>(</td>
+          <td class="paramtype">const struct <a class="el" href="structjson__object__iterator.html">json_object_iterator</a> *&nbsp;</td>
+          <td class="paramname"> <em>iter</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td><code> [read]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Returns a pointer to the json-c instance representing the value of the referenced name/value pair, without altering the instance's reference count.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>iter</em>&nbsp;</td><td>pointer to iterator that references a name/value pair; MUST be a valid, non-end iterator.</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="warning"><dt><b>Warning:</b></dt><dd>bad things will happen if invalid or "end" iterator is passed.</dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>struct json_object* Pointer to the json-c value instance of the referenced name/value pair; the value's reference count is not changed by this function: if you plan to hold on to this json-c node, take a look at <a class="el" href="json__object_8h.html#acc3628d97c6308dc967006e4268c4e7f">json_object_get()</a> and <a class="el" href="json__object_8h.html#accc34b38e15e46357d64a0beed3d0150">json_object_put()</a>. IMPORTANT: json-c API represents the JSON Null value as a NULL <a class="el" href="structjson__object.html">json_object</a> instance pointer. </dd></dl>
+
+</div>
+</div>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
index e7de440..2918e45 100644 (file)
@@ -1,14 +1,18 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>json-c: json_object_private.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
 <div class="navigation" id="top">
   <div class="tabs">
     <ul>
       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
       <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
       <li class="current"><a href="files.html"><span>Files</span></a></li>
     </ul>
 </div>
 <div class="contents">
 <h1>json_object_private.h File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__object.html">json_object</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">union &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="unionjson__object_1_1data.html">json_object::json_object::data</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__object__iter.html">json_object_iter</a></td></tr>
-
-<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object__private_8h.html#c96402e72ae5c12d690ec95ed441ec70">json_object_delete_fn</a> )(struct <a class="el" href="structjson__object.html">json_object</a> *o)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object__private_8h.html#98a52f3a465575f19a4f1b7556959953">json_object_to_json_string_fn</a> )(struct <a class="el" href="structjson__object.html">json_object</a> *o, struct <a class="el" href="structprintbuf.html">printbuf</a> *pb)</td></tr>
-
+<tr><td colspan="2"><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__object.html">json_object</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">union &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="unionjson__object_1_1data.html">json_object::data</a></td></tr>
+<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef void(&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object__private_8h.html#ac96402e72ae5c12d690ec95ed441ec70">json_object_delete_fn</a> )(struct <a class="el" href="structjson__object.html">json_object</a> *o)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef int(&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__object__private_8h.html#a778fe57040398137cf9ccf9f2dd53282">json_object_to_json_string_fn</a> )(struct <a class="el" href="structjson__object.html">json_object</a> *o, struct <a class="el" href="structprintbuf.html">printbuf</a> *pb, int level, int flags)</td></tr>
 </table>
-<hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="c96402e72ae5c12d690ec95ed441ec70"></a><!-- doxytag: member="json_object_private.h::json_object_delete_fn" ref="c96402e72ae5c12d690ec95ed441ec70" args=")(struct json_object *o)" -->
+<hr/><h2>Typedef Documentation</h2>
+<a class="anchor" id="ac96402e72ae5c12d690ec95ed441ec70"></a><!-- doxytag: member="json_object_private.h::json_object_delete_fn" ref="ac96402e72ae5c12d690ec95ed441ec70" args=")(struct json_object *o)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">typedef void( <a class="el" href="json__object__private_8h.html#c96402e72ae5c12d690ec95ed441ec70">json_object_delete_fn</a>)(struct <a class="el" href="structjson__object.html">json_object</a> *o)          </td>
+          <td class="memname">typedef void( <a class="el" href="json__object__private_8h.html#ac96402e72ae5c12d690ec95ed441ec70">json_object_delete_fn</a>)(struct <a class="el" href="structjson__object.html">json_object</a> *o)</td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="98a52f3a465575f19a4f1b7556959953"></a><!-- doxytag: member="json_object_private.h::json_object_to_json_string_fn" ref="98a52f3a465575f19a4f1b7556959953" args=")(struct json_object *o, struct printbuf *pb)" -->
+</div>
+<a class="anchor" id="a778fe57040398137cf9ccf9f2dd53282"></a><!-- doxytag: member="json_object_private.h::json_object_to_json_string_fn" ref="a778fe57040398137cf9ccf9f2dd53282" args=")(struct json_object *o, struct printbuf *pb, int level, int flags)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">typedef int( <a class="el" href="json__object__private_8h.html#98a52f3a465575f19a4f1b7556959953">json_object_to_json_string_fn</a>)(struct <a class="el" href="structjson__object.html">json_object</a> *o, struct <a class="el" href="structprintbuf.html">printbuf</a> *pb)          </td>
+          <td class="memname">typedef int( <a class="el" href="json__object__private_8h.html#a778fe57040398137cf9ccf9f2dd53282">json_object_to_json_string_fn</a>)(struct <a class="el" href="structjson__object.html">json_object</a> *o, struct <a class="el" href="structprintbuf.html">printbuf</a> *pb, int level, int flags)</td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
 </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by&nbsp;
 <a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>
 </html>
index 671e591..fe95ef8 100644 (file)
@@ -1,14 +1,18 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>json-c: json_tokener.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
 <div class="navigation" id="top">
   <div class="tabs">
     <ul>
       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
       <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
       <li class="current"><a href="files.html"><span>Files</span></a></li>
     </ul>
 </div>
 <div class="contents">
 <h1>json_tokener.h File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__tokener__srec.html">json_tokener_srec</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__tokener.html">json_tokener</a></td></tr>
-
-<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__tokener_8h.html#c4299cf4ed799b028e61cf7b2b0d5f1f">JSON_TOKENER_MAX_DEPTH</a>&nbsp;&nbsp;&nbsp;32</td></tr>
-
-<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb59">json_tokener_error</a> { <br>
-&nbsp;&nbsp;<a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb59fe2fa9bde03155019b2df30f66a5fcd0">json_tokener_success</a>, 
-<a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb599b26e920ca765df91c84e999561d8fb0">json_tokener_continue</a>, 
-<a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb5959b2c36d9cc30c3038e09b9ddee6c86c">json_tokener_error_depth</a>, 
-<a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb598f774f4c7869afdd9b92295fca3a9ded">json_tokener_error_parse_eof</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb593309fa8ea4ab3ee0a81c55b69d223710">json_tokener_error_parse_unexpected</a>, 
-<a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb59641bbb8d881fdd1e463f20a1a203b77c">json_tokener_error_parse_null</a>, 
-<a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb59ddbdfe084e20709da3d20c8ae8ca278c">json_tokener_error_parse_boolean</a>, 
-<a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb59b1b3ad685eb97235d269cc5b9eb7ab81">json_tokener_error_parse_number</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb59574846740b785146f164a209dc89574e">json_tokener_error_parse_array</a>, 
-<a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb592003bd8e96c6680cd22419c5ceafd4c0">json_tokener_error_parse_object_key_name</a>, 
-<a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb59f91a2a819b0d6344d6d4e1d2579f28fd">json_tokener_error_parse_object_key_sep</a>, 
-<a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb599ddb98741aebf7ac44735b4a43717013">json_tokener_error_parse_object_value_sep</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb59033ce89ce7b8f9e591e4bea92121c4c7">json_tokener_error_parse_string</a>, 
-<a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb593588c05b1da8b909a8cbdef66b0a1a28">json_tokener_error_parse_comment</a>
-<br>
+<tr><td colspan="2"><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__tokener__srec.html">json_tokener_srec</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__tokener.html">json_tokener</a></td></tr>
+<tr><td colspan="2"><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__tokener_8h.html#ac4299cf4ed799b028e61cf7b2b0d5f1f">JSON_TOKENER_MAX_DEPTH</a>&nbsp;&nbsp;&nbsp;32</td></tr>
+<tr><td colspan="2"><h2>Enumerations</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59">json_tokener_error</a> { <br/>
+&nbsp;&nbsp;<a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59afe2fa9bde03155019b2df30f66a5fcd0">json_tokener_success</a>, 
+<a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59a9b26e920ca765df91c84e999561d8fb0">json_tokener_continue</a>, 
+<a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59a59b2c36d9cc30c3038e09b9ddee6c86c">json_tokener_error_depth</a>, 
+<a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59a8f774f4c7869afdd9b92295fca3a9ded">json_tokener_error_parse_eof</a>, 
+<br/>
+&nbsp;&nbsp;<a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59a3309fa8ea4ab3ee0a81c55b69d223710">json_tokener_error_parse_unexpected</a>, 
+<a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59a641bbb8d881fdd1e463f20a1a203b77c">json_tokener_error_parse_null</a>, 
+<a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59addbdfe084e20709da3d20c8ae8ca278c">json_tokener_error_parse_boolean</a>, 
+<a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59ab1b3ad685eb97235d269cc5b9eb7ab81">json_tokener_error_parse_number</a>, 
+<br/>
+&nbsp;&nbsp;<a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59a574846740b785146f164a209dc89574e">json_tokener_error_parse_array</a>, 
+<a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59a2003bd8e96c6680cd22419c5ceafd4c0">json_tokener_error_parse_object_key_name</a>, 
+<a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59af91a2a819b0d6344d6d4e1d2579f28fd">json_tokener_error_parse_object_key_sep</a>, 
+<a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59a9ddb98741aebf7ac44735b4a43717013">json_tokener_error_parse_object_value_sep</a>, 
+<br/>
+&nbsp;&nbsp;<a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59a033ce89ce7b8f9e591e4bea92121c4c7">json_tokener_error_parse_string</a>, 
+<a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59a3588c05b1da8b909a8cbdef66b0a1a28">json_tokener_error_parse_comment</a>
+<br/>
  }</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e2">json_tokener_state</a> { <br>
-&nbsp;&nbsp;<a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e29db152607ec1872a000f1fcd8757297d">json_tokener_state_eatws</a>, 
-<a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e27c4c0bed1ebde45f5a99de4278792d72">json_tokener_state_start</a>, 
-<a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e2d80b689cb709967b67a348de3d8601d2">json_tokener_state_finish</a>, 
-<a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e2668fb2654c59608945370003403a5792">json_tokener_state_null</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e20ff1d1935d49188aa1e6b998d43e655c">json_tokener_state_comment_start</a>, 
-<a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e28c2680b8873a8dce85f0b1ac25882dc9">json_tokener_state_comment</a>, 
-<a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e2d8151350b1ef50298bafbab244ac1162">json_tokener_state_comment_eol</a>, 
-<a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e262cef297a37a98b1239ea4bbd39723e1">json_tokener_state_comment_end</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e2a90ea4c327a285bfbbce49d42d491d65">json_tokener_state_string</a>, 
-<a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e21cf793d73587f68c4f2b3b4f65ff728e">json_tokener_state_string_escape</a>, 
-<a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e26c852da2e694be56799c58c201d6dca0">json_tokener_state_escape_unicode</a>, 
-<a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e23525b15ecd0a698281b3914115b6bd3e">json_tokener_state_boolean</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e27ce18d281d322af690b45f3b8b599e81">json_tokener_state_number</a>, 
-<a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e2b3d763300f1914865be09d603ddc11f4">json_tokener_state_array</a>, 
-<a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e2a2a01798ebe318ea91c38a886418f771">json_tokener_state_array_add</a>, 
-<a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e24ec7762aeab3424cbb14354c94025865">json_tokener_state_array_sep</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e28c7dbda177a5d83a36a64f7cb99b9a29">json_tokener_state_object_field_start</a>, 
-<a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e277375940a10806e81d99876d13be67fc">json_tokener_state_object_field</a>, 
-<a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e20220aea1d9204aadfffde92c7f73f5f7">json_tokener_state_object_field_end</a>, 
-<a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e24c7b7deac37355491572f6da84f208aa">json_tokener_state_object_value</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e2de6bee72f2147e634b19eb84e58eb162">json_tokener_state_object_value_add</a>, 
-<a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e2daf3e06c5fc04fd4f04040cd67698215">json_tokener_state_object_sep</a>
-<br>
+<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2">json_tokener_state</a> { <br/>
+&nbsp;&nbsp;<a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a9db152607ec1872a000f1fcd8757297d">json_tokener_state_eatws</a>, 
+<a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a7c4c0bed1ebde45f5a99de4278792d72">json_tokener_state_start</a>, 
+<a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2ad80b689cb709967b67a348de3d8601d2">json_tokener_state_finish</a>, 
+<a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a668fb2654c59608945370003403a5792">json_tokener_state_null</a>, 
+<br/>
+&nbsp;&nbsp;<a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a0ff1d1935d49188aa1e6b998d43e655c">json_tokener_state_comment_start</a>, 
+<a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a8c2680b8873a8dce85f0b1ac25882dc9">json_tokener_state_comment</a>, 
+<a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2ad8151350b1ef50298bafbab244ac1162">json_tokener_state_comment_eol</a>, 
+<a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a62cef297a37a98b1239ea4bbd39723e1">json_tokener_state_comment_end</a>, 
+<br/>
+&nbsp;&nbsp;<a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2aa90ea4c327a285bfbbce49d42d491d65">json_tokener_state_string</a>, 
+<a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a1cf793d73587f68c4f2b3b4f65ff728e">json_tokener_state_string_escape</a>, 
+<a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a6c852da2e694be56799c58c201d6dca0">json_tokener_state_escape_unicode</a>, 
+<a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a3525b15ecd0a698281b3914115b6bd3e">json_tokener_state_boolean</a>, 
+<br/>
+&nbsp;&nbsp;<a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a7ce18d281d322af690b45f3b8b599e81">json_tokener_state_number</a>, 
+<a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2ab3d763300f1914865be09d603ddc11f4">json_tokener_state_array</a>, 
+<a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2aa2a01798ebe318ea91c38a886418f771">json_tokener_state_array_add</a>, 
+<a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a4ec7762aeab3424cbb14354c94025865">json_tokener_state_array_sep</a>, 
+<br/>
+&nbsp;&nbsp;<a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a8c7dbda177a5d83a36a64f7cb99b9a29">json_tokener_state_object_field_start</a>, 
+<a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a77375940a10806e81d99876d13be67fc">json_tokener_state_object_field</a>, 
+<a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a0220aea1d9204aadfffde92c7f73f5f7">json_tokener_state_object_field_end</a>, 
+<a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2a4c7b7deac37355491572f6da84f208aa">json_tokener_state_object_value</a>, 
+<br/>
+&nbsp;&nbsp;<a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2ade6bee72f2147e634b19eb84e58eb162">json_tokener_state_object_value_add</a>, 
+<a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2adaf3e06c5fc04fd4f04040cd67698215">json_tokener_state_object_sep</a>
+<br/>
  }</td></tr>
-
-<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structjson__tokener.html">json_tokener</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__tokener_8h.html#55d6e8a6f6d90992c063a39e21769c52">json_tokener_new</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__tokener_8h.html#f6645ff27c0ca82c6e314390814fcbeb">json_tokener_free</a> (struct <a class="el" href="structjson__tokener.html">json_tokener</a> *tok)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__tokener_8h.html#e23dd7ad4737bfc18409af6173ab2b09">json_tokener_reset</a> (struct <a class="el" href="structjson__tokener.html">json_tokener</a> *tok)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__tokener_8h.html#bf031fdf1e5caab71e2225a99588c6bb">json_tokener_parse</a> (const char *str)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__tokener_8h.html#0d9a666c21879647e8831f9cfa691673">json_tokener_parse_ex</a> (struct <a class="el" href="structjson__tokener.html">json_tokener</a> *tok, const char *str, int len)</td></tr>
-
-<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__tokener_8h.html#6ede8ee7a4ec1fed68d10ea77294c966">json_tokener_errors</a> []</td></tr>
-
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__tokener_8h.html#a04c5625212aed3216cc303429e47f642">json_tokener_error_desc</a> (enum <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59">json_tokener_error</a> jerr)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59">json_tokener_error</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__tokener_8h.html#ae8dff7f1ea11702aecf418e0da5574fe">json_tokener_get_error</a> (struct <a class="el" href="structjson__tokener.html">json_tokener</a> *tok)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structjson__tokener.html">json_tokener</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__tokener_8h.html#a55d6e8a6f6d90992c063a39e21769c52">json_tokener_new</a> (void)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__tokener_8h.html#af6645ff27c0ca82c6e314390814fcbeb">json_tokener_free</a> (struct <a class="el" href="structjson__tokener.html">json_tokener</a> *tok)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__tokener_8h.html#ae23dd7ad4737bfc18409af6173ab2b09">json_tokener_reset</a> (struct <a class="el" href="structjson__tokener.html">json_tokener</a> *tok)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__tokener_8h.html#abf031fdf1e5caab71e2225a99588c6bb">json_tokener_parse</a> (const char *str)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__tokener_8h.html#a1c8f5d8baad383dc8879615d2b02b53c">json_tokener_parse_verbose</a> (const char *str, enum <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59">json_tokener_error</a> *error)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__tokener_8h.html#a0d9a666c21879647e8831f9cfa691673">json_tokener_parse_ex</a> (struct <a class="el" href="structjson__tokener.html">json_tokener</a> *tok, const char *str, int len)</td></tr>
+<tr><td colspan="2"><h2>Variables</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__tokener_8h.html#a6ede8ee7a4ec1fed68d10ea77294c966">json_tokener_errors</a> []</td></tr>
 </table>
-<hr><h2>Define Documentation</h2>
-<a class="anchor" name="c4299cf4ed799b028e61cf7b2b0d5f1f"></a><!-- doxytag: member="json_tokener.h::JSON_TOKENER_MAX_DEPTH" ref="c4299cf4ed799b028e61cf7b2b0d5f1f" args="" -->
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="ac4299cf4ed799b028e61cf7b2b0d5f1f"></a><!-- doxytag: member="json_tokener.h::JSON_TOKENER_MAX_DEPTH" ref="ac4299cf4ed799b028e61cf7b2b0d5f1f" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define JSON_TOKENER_MAX_DEPTH&nbsp;&nbsp;&nbsp;32          </td>
+          <td class="memname">#define JSON_TOKENER_MAX_DEPTH&nbsp;&nbsp;&nbsp;32</td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<hr><h2>Enumeration Type Documentation</h2>
-<a class="anchor" name="0a31f0df8a532ef8be5c09ba40eacb59"></a><!-- doxytag: member="json_tokener.h::json_tokener_error" ref="0a31f0df8a532ef8be5c09ba40eacb59" args="" -->
+</div>
+<hr/><h2>Enumeration Type Documentation</h2>
+<a class="anchor" id="a0a31f0df8a532ef8be5c09ba40eacb59"></a><!-- doxytag: member="json_tokener.h::json_tokener_error" ref="a0a31f0df8a532ef8be5c09ba40eacb59" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">enum <a class="el" href="json__tokener_8h.html#0a31f0df8a532ef8be5c09ba40eacb59">json_tokener_error</a>          </td>
+          <td class="memname">enum <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59">json_tokener_error</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
-
-<p>
-<dl compact><dt><b>Enumerator: </b></dt><dd>
-<table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" name="0a31f0df8a532ef8be5c09ba40eacb59fe2fa9bde03155019b2df30f66a5fcd0"></a><!-- doxytag: member="json_tokener_success" ref="0a31f0df8a532ef8be5c09ba40eacb59fe2fa9bde03155019b2df30f66a5fcd0" args="" -->json_tokener_success</em>&nbsp;</td><td>
+<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" id="a0a31f0df8a532ef8be5c09ba40eacb59afe2fa9bde03155019b2df30f66a5fcd0"></a><!-- doxytag: member="json_tokener_success" ref="a0a31f0df8a532ef8be5c09ba40eacb59afe2fa9bde03155019b2df30f66a5fcd0" args="" -->json_tokener_success</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="0a31f0df8a532ef8be5c09ba40eacb599b26e920ca765df91c84e999561d8fb0"></a><!-- doxytag: member="json_tokener_continue" ref="0a31f0df8a532ef8be5c09ba40eacb599b26e920ca765df91c84e999561d8fb0" args="" -->json_tokener_continue</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="a0a31f0df8a532ef8be5c09ba40eacb59a9b26e920ca765df91c84e999561d8fb0"></a><!-- doxytag: member="json_tokener_continue" ref="a0a31f0df8a532ef8be5c09ba40eacb59a9b26e920ca765df91c84e999561d8fb0" args="" -->json_tokener_continue</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="0a31f0df8a532ef8be5c09ba40eacb5959b2c36d9cc30c3038e09b9ddee6c86c"></a><!-- doxytag: member="json_tokener_error_depth" ref="0a31f0df8a532ef8be5c09ba40eacb5959b2c36d9cc30c3038e09b9ddee6c86c" args="" -->json_tokener_error_depth</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="a0a31f0df8a532ef8be5c09ba40eacb59a59b2c36d9cc30c3038e09b9ddee6c86c"></a><!-- doxytag: member="json_tokener_error_depth" ref="a0a31f0df8a532ef8be5c09ba40eacb59a59b2c36d9cc30c3038e09b9ddee6c86c" args="" -->json_tokener_error_depth</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="0a31f0df8a532ef8be5c09ba40eacb598f774f4c7869afdd9b92295fca3a9ded"></a><!-- doxytag: member="json_tokener_error_parse_eof" ref="0a31f0df8a532ef8be5c09ba40eacb598f774f4c7869afdd9b92295fca3a9ded" args="" -->json_tokener_error_parse_eof</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="a0a31f0df8a532ef8be5c09ba40eacb59a8f774f4c7869afdd9b92295fca3a9ded"></a><!-- doxytag: member="json_tokener_error_parse_eof" ref="a0a31f0df8a532ef8be5c09ba40eacb59a8f774f4c7869afdd9b92295fca3a9ded" args="" -->json_tokener_error_parse_eof</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="0a31f0df8a532ef8be5c09ba40eacb593309fa8ea4ab3ee0a81c55b69d223710"></a><!-- doxytag: member="json_tokener_error_parse_unexpected" ref="0a31f0df8a532ef8be5c09ba40eacb593309fa8ea4ab3ee0a81c55b69d223710" args="" -->json_tokener_error_parse_unexpected</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="a0a31f0df8a532ef8be5c09ba40eacb59a3309fa8ea4ab3ee0a81c55b69d223710"></a><!-- doxytag: member="json_tokener_error_parse_unexpected" ref="a0a31f0df8a532ef8be5c09ba40eacb59a3309fa8ea4ab3ee0a81c55b69d223710" args="" -->json_tokener_error_parse_unexpected</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="0a31f0df8a532ef8be5c09ba40eacb59641bbb8d881fdd1e463f20a1a203b77c"></a><!-- doxytag: member="json_tokener_error_parse_null" ref="0a31f0df8a532ef8be5c09ba40eacb59641bbb8d881fdd1e463f20a1a203b77c" args="" -->json_tokener_error_parse_null</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="a0a31f0df8a532ef8be5c09ba40eacb59a641bbb8d881fdd1e463f20a1a203b77c"></a><!-- doxytag: member="json_tokener_error_parse_null" ref="a0a31f0df8a532ef8be5c09ba40eacb59a641bbb8d881fdd1e463f20a1a203b77c" args="" -->json_tokener_error_parse_null</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="0a31f0df8a532ef8be5c09ba40eacb59ddbdfe084e20709da3d20c8ae8ca278c"></a><!-- doxytag: member="json_tokener_error_parse_boolean" ref="0a31f0df8a532ef8be5c09ba40eacb59ddbdfe084e20709da3d20c8ae8ca278c" args="" -->json_tokener_error_parse_boolean</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="a0a31f0df8a532ef8be5c09ba40eacb59addbdfe084e20709da3d20c8ae8ca278c"></a><!-- doxytag: member="json_tokener_error_parse_boolean" ref="a0a31f0df8a532ef8be5c09ba40eacb59addbdfe084e20709da3d20c8ae8ca278c" args="" -->json_tokener_error_parse_boolean</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="0a31f0df8a532ef8be5c09ba40eacb59b1b3ad685eb97235d269cc5b9eb7ab81"></a><!-- doxytag: member="json_tokener_error_parse_number" ref="0a31f0df8a532ef8be5c09ba40eacb59b1b3ad685eb97235d269cc5b9eb7ab81" args="" -->json_tokener_error_parse_number</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="a0a31f0df8a532ef8be5c09ba40eacb59ab1b3ad685eb97235d269cc5b9eb7ab81"></a><!-- doxytag: member="json_tokener_error_parse_number" ref="a0a31f0df8a532ef8be5c09ba40eacb59ab1b3ad685eb97235d269cc5b9eb7ab81" args="" -->json_tokener_error_parse_number</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="0a31f0df8a532ef8be5c09ba40eacb59574846740b785146f164a209dc89574e"></a><!-- doxytag: member="json_tokener_error_parse_array" ref="0a31f0df8a532ef8be5c09ba40eacb59574846740b785146f164a209dc89574e" args="" -->json_tokener_error_parse_array</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="a0a31f0df8a532ef8be5c09ba40eacb59a574846740b785146f164a209dc89574e"></a><!-- doxytag: member="json_tokener_error_parse_array" ref="a0a31f0df8a532ef8be5c09ba40eacb59a574846740b785146f164a209dc89574e" args="" -->json_tokener_error_parse_array</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="0a31f0df8a532ef8be5c09ba40eacb592003bd8e96c6680cd22419c5ceafd4c0"></a><!-- doxytag: member="json_tokener_error_parse_object_key_name" ref="0a31f0df8a532ef8be5c09ba40eacb592003bd8e96c6680cd22419c5ceafd4c0" args="" -->json_tokener_error_parse_object_key_name</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="a0a31f0df8a532ef8be5c09ba40eacb59a2003bd8e96c6680cd22419c5ceafd4c0"></a><!-- doxytag: member="json_tokener_error_parse_object_key_name" ref="a0a31f0df8a532ef8be5c09ba40eacb59a2003bd8e96c6680cd22419c5ceafd4c0" args="" -->json_tokener_error_parse_object_key_name</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="0a31f0df8a532ef8be5c09ba40eacb59f91a2a819b0d6344d6d4e1d2579f28fd"></a><!-- doxytag: member="json_tokener_error_parse_object_key_sep" ref="0a31f0df8a532ef8be5c09ba40eacb59f91a2a819b0d6344d6d4e1d2579f28fd" args="" -->json_tokener_error_parse_object_key_sep</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="a0a31f0df8a532ef8be5c09ba40eacb59af91a2a819b0d6344d6d4e1d2579f28fd"></a><!-- doxytag: member="json_tokener_error_parse_object_key_sep" ref="a0a31f0df8a532ef8be5c09ba40eacb59af91a2a819b0d6344d6d4e1d2579f28fd" args="" -->json_tokener_error_parse_object_key_sep</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="0a31f0df8a532ef8be5c09ba40eacb599ddb98741aebf7ac44735b4a43717013"></a><!-- doxytag: member="json_tokener_error_parse_object_value_sep" ref="0a31f0df8a532ef8be5c09ba40eacb599ddb98741aebf7ac44735b4a43717013" args="" -->json_tokener_error_parse_object_value_sep</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="a0a31f0df8a532ef8be5c09ba40eacb59a9ddb98741aebf7ac44735b4a43717013"></a><!-- doxytag: member="json_tokener_error_parse_object_value_sep" ref="a0a31f0df8a532ef8be5c09ba40eacb59a9ddb98741aebf7ac44735b4a43717013" args="" -->json_tokener_error_parse_object_value_sep</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="0a31f0df8a532ef8be5c09ba40eacb59033ce89ce7b8f9e591e4bea92121c4c7"></a><!-- doxytag: member="json_tokener_error_parse_string" ref="0a31f0df8a532ef8be5c09ba40eacb59033ce89ce7b8f9e591e4bea92121c4c7" args="" -->json_tokener_error_parse_string</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="a0a31f0df8a532ef8be5c09ba40eacb59a033ce89ce7b8f9e591e4bea92121c4c7"></a><!-- doxytag: member="json_tokener_error_parse_string" ref="a0a31f0df8a532ef8be5c09ba40eacb59a033ce89ce7b8f9e591e4bea92121c4c7" args="" -->json_tokener_error_parse_string</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="0a31f0df8a532ef8be5c09ba40eacb593588c05b1da8b909a8cbdef66b0a1a28"></a><!-- doxytag: member="json_tokener_error_parse_comment" ref="0a31f0df8a532ef8be5c09ba40eacb593588c05b1da8b909a8cbdef66b0a1a28" args="" -->json_tokener_error_parse_comment</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="a0a31f0df8a532ef8be5c09ba40eacb59a3588c05b1da8b909a8cbdef66b0a1a28"></a><!-- doxytag: member="json_tokener_error_parse_comment" ref="a0a31f0df8a532ef8be5c09ba40eacb59a3588c05b1da8b909a8cbdef66b0a1a28" args="" -->json_tokener_error_parse_comment</em>&nbsp;</td><td>
 </td></tr>
 </table>
+</dd>
 </dl>
 
 </div>
-</div><p>
-<a class="anchor" name="f026dec71e4548e6200eb2f902f1c4e2"></a><!-- doxytag: member="json_tokener.h::json_tokener_state" ref="f026dec71e4548e6200eb2f902f1c4e2" args="" -->
+</div>
+<a class="anchor" id="af026dec71e4548e6200eb2f902f1c4e2"></a><!-- doxytag: member="json_tokener.h::json_tokener_state" ref="af026dec71e4548e6200eb2f902f1c4e2" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">enum <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e2">json_tokener_state</a>          </td>
+          <td class="memname">enum <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2">json_tokener_state</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
-
-<p>
-<dl compact><dt><b>Enumerator: </b></dt><dd>
-<table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" name="f026dec71e4548e6200eb2f902f1c4e29db152607ec1872a000f1fcd8757297d"></a><!-- doxytag: member="json_tokener_state_eatws" ref="f026dec71e4548e6200eb2f902f1c4e29db152607ec1872a000f1fcd8757297d" args="" -->json_tokener_state_eatws</em>&nbsp;</td><td>
+<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" id="af026dec71e4548e6200eb2f902f1c4e2a9db152607ec1872a000f1fcd8757297d"></a><!-- doxytag: member="json_tokener_state_eatws" ref="af026dec71e4548e6200eb2f902f1c4e2a9db152607ec1872a000f1fcd8757297d" args="" -->json_tokener_state_eatws</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f026dec71e4548e6200eb2f902f1c4e27c4c0bed1ebde45f5a99de4278792d72"></a><!-- doxytag: member="json_tokener_state_start" ref="f026dec71e4548e6200eb2f902f1c4e27c4c0bed1ebde45f5a99de4278792d72" args="" -->json_tokener_state_start</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="af026dec71e4548e6200eb2f902f1c4e2a7c4c0bed1ebde45f5a99de4278792d72"></a><!-- doxytag: member="json_tokener_state_start" ref="af026dec71e4548e6200eb2f902f1c4e2a7c4c0bed1ebde45f5a99de4278792d72" args="" -->json_tokener_state_start</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f026dec71e4548e6200eb2f902f1c4e2d80b689cb709967b67a348de3d8601d2"></a><!-- doxytag: member="json_tokener_state_finish" ref="f026dec71e4548e6200eb2f902f1c4e2d80b689cb709967b67a348de3d8601d2" args="" -->json_tokener_state_finish</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="af026dec71e4548e6200eb2f902f1c4e2ad80b689cb709967b67a348de3d8601d2"></a><!-- doxytag: member="json_tokener_state_finish" ref="af026dec71e4548e6200eb2f902f1c4e2ad80b689cb709967b67a348de3d8601d2" args="" -->json_tokener_state_finish</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f026dec71e4548e6200eb2f902f1c4e2668fb2654c59608945370003403a5792"></a><!-- doxytag: member="json_tokener_state_null" ref="f026dec71e4548e6200eb2f902f1c4e2668fb2654c59608945370003403a5792" args="" -->json_tokener_state_null</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="af026dec71e4548e6200eb2f902f1c4e2a668fb2654c59608945370003403a5792"></a><!-- doxytag: member="json_tokener_state_null" ref="af026dec71e4548e6200eb2f902f1c4e2a668fb2654c59608945370003403a5792" args="" -->json_tokener_state_null</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f026dec71e4548e6200eb2f902f1c4e20ff1d1935d49188aa1e6b998d43e655c"></a><!-- doxytag: member="json_tokener_state_comment_start" ref="f026dec71e4548e6200eb2f902f1c4e20ff1d1935d49188aa1e6b998d43e655c" args="" -->json_tokener_state_comment_start</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="af026dec71e4548e6200eb2f902f1c4e2a0ff1d1935d49188aa1e6b998d43e655c"></a><!-- doxytag: member="json_tokener_state_comment_start" ref="af026dec71e4548e6200eb2f902f1c4e2a0ff1d1935d49188aa1e6b998d43e655c" args="" -->json_tokener_state_comment_start</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f026dec71e4548e6200eb2f902f1c4e28c2680b8873a8dce85f0b1ac25882dc9"></a><!-- doxytag: member="json_tokener_state_comment" ref="f026dec71e4548e6200eb2f902f1c4e28c2680b8873a8dce85f0b1ac25882dc9" args="" -->json_tokener_state_comment</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="af026dec71e4548e6200eb2f902f1c4e2a8c2680b8873a8dce85f0b1ac25882dc9"></a><!-- doxytag: member="json_tokener_state_comment" ref="af026dec71e4548e6200eb2f902f1c4e2a8c2680b8873a8dce85f0b1ac25882dc9" args="" -->json_tokener_state_comment</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f026dec71e4548e6200eb2f902f1c4e2d8151350b1ef50298bafbab244ac1162"></a><!-- doxytag: member="json_tokener_state_comment_eol" ref="f026dec71e4548e6200eb2f902f1c4e2d8151350b1ef50298bafbab244ac1162" args="" -->json_tokener_state_comment_eol</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="af026dec71e4548e6200eb2f902f1c4e2ad8151350b1ef50298bafbab244ac1162"></a><!-- doxytag: member="json_tokener_state_comment_eol" ref="af026dec71e4548e6200eb2f902f1c4e2ad8151350b1ef50298bafbab244ac1162" args="" -->json_tokener_state_comment_eol</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f026dec71e4548e6200eb2f902f1c4e262cef297a37a98b1239ea4bbd39723e1"></a><!-- doxytag: member="json_tokener_state_comment_end" ref="f026dec71e4548e6200eb2f902f1c4e262cef297a37a98b1239ea4bbd39723e1" args="" -->json_tokener_state_comment_end</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="af026dec71e4548e6200eb2f902f1c4e2a62cef297a37a98b1239ea4bbd39723e1"></a><!-- doxytag: member="json_tokener_state_comment_end" ref="af026dec71e4548e6200eb2f902f1c4e2a62cef297a37a98b1239ea4bbd39723e1" args="" -->json_tokener_state_comment_end</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f026dec71e4548e6200eb2f902f1c4e2a90ea4c327a285bfbbce49d42d491d65"></a><!-- doxytag: member="json_tokener_state_string" ref="f026dec71e4548e6200eb2f902f1c4e2a90ea4c327a285bfbbce49d42d491d65" args="" -->json_tokener_state_string</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="af026dec71e4548e6200eb2f902f1c4e2aa90ea4c327a285bfbbce49d42d491d65"></a><!-- doxytag: member="json_tokener_state_string" ref="af026dec71e4548e6200eb2f902f1c4e2aa90ea4c327a285bfbbce49d42d491d65" args="" -->json_tokener_state_string</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f026dec71e4548e6200eb2f902f1c4e21cf793d73587f68c4f2b3b4f65ff728e"></a><!-- doxytag: member="json_tokener_state_string_escape" ref="f026dec71e4548e6200eb2f902f1c4e21cf793d73587f68c4f2b3b4f65ff728e" args="" -->json_tokener_state_string_escape</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="af026dec71e4548e6200eb2f902f1c4e2a1cf793d73587f68c4f2b3b4f65ff728e"></a><!-- doxytag: member="json_tokener_state_string_escape" ref="af026dec71e4548e6200eb2f902f1c4e2a1cf793d73587f68c4f2b3b4f65ff728e" args="" -->json_tokener_state_string_escape</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f026dec71e4548e6200eb2f902f1c4e26c852da2e694be56799c58c201d6dca0"></a><!-- doxytag: member="json_tokener_state_escape_unicode" ref="f026dec71e4548e6200eb2f902f1c4e26c852da2e694be56799c58c201d6dca0" args="" -->json_tokener_state_escape_unicode</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="af026dec71e4548e6200eb2f902f1c4e2a6c852da2e694be56799c58c201d6dca0"></a><!-- doxytag: member="json_tokener_state_escape_unicode" ref="af026dec71e4548e6200eb2f902f1c4e2a6c852da2e694be56799c58c201d6dca0" args="" -->json_tokener_state_escape_unicode</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f026dec71e4548e6200eb2f902f1c4e23525b15ecd0a698281b3914115b6bd3e"></a><!-- doxytag: member="json_tokener_state_boolean" ref="f026dec71e4548e6200eb2f902f1c4e23525b15ecd0a698281b3914115b6bd3e" args="" -->json_tokener_state_boolean</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="af026dec71e4548e6200eb2f902f1c4e2a3525b15ecd0a698281b3914115b6bd3e"></a><!-- doxytag: member="json_tokener_state_boolean" ref="af026dec71e4548e6200eb2f902f1c4e2a3525b15ecd0a698281b3914115b6bd3e" args="" -->json_tokener_state_boolean</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f026dec71e4548e6200eb2f902f1c4e27ce18d281d322af690b45f3b8b599e81"></a><!-- doxytag: member="json_tokener_state_number" ref="f026dec71e4548e6200eb2f902f1c4e27ce18d281d322af690b45f3b8b599e81" args="" -->json_tokener_state_number</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="af026dec71e4548e6200eb2f902f1c4e2a7ce18d281d322af690b45f3b8b599e81"></a><!-- doxytag: member="json_tokener_state_number" ref="af026dec71e4548e6200eb2f902f1c4e2a7ce18d281d322af690b45f3b8b599e81" args="" -->json_tokener_state_number</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f026dec71e4548e6200eb2f902f1c4e2b3d763300f1914865be09d603ddc11f4"></a><!-- doxytag: member="json_tokener_state_array" ref="f026dec71e4548e6200eb2f902f1c4e2b3d763300f1914865be09d603ddc11f4" args="" -->json_tokener_state_array</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="af026dec71e4548e6200eb2f902f1c4e2ab3d763300f1914865be09d603ddc11f4"></a><!-- doxytag: member="json_tokener_state_array" ref="af026dec71e4548e6200eb2f902f1c4e2ab3d763300f1914865be09d603ddc11f4" args="" -->json_tokener_state_array</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f026dec71e4548e6200eb2f902f1c4e2a2a01798ebe318ea91c38a886418f771"></a><!-- doxytag: member="json_tokener_state_array_add" ref="f026dec71e4548e6200eb2f902f1c4e2a2a01798ebe318ea91c38a886418f771" args="" -->json_tokener_state_array_add</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="af026dec71e4548e6200eb2f902f1c4e2aa2a01798ebe318ea91c38a886418f771"></a><!-- doxytag: member="json_tokener_state_array_add" ref="af026dec71e4548e6200eb2f902f1c4e2aa2a01798ebe318ea91c38a886418f771" args="" -->json_tokener_state_array_add</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f026dec71e4548e6200eb2f902f1c4e24ec7762aeab3424cbb14354c94025865"></a><!-- doxytag: member="json_tokener_state_array_sep" ref="f026dec71e4548e6200eb2f902f1c4e24ec7762aeab3424cbb14354c94025865" args="" -->json_tokener_state_array_sep</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="af026dec71e4548e6200eb2f902f1c4e2a4ec7762aeab3424cbb14354c94025865"></a><!-- doxytag: member="json_tokener_state_array_sep" ref="af026dec71e4548e6200eb2f902f1c4e2a4ec7762aeab3424cbb14354c94025865" args="" -->json_tokener_state_array_sep</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f026dec71e4548e6200eb2f902f1c4e28c7dbda177a5d83a36a64f7cb99b9a29"></a><!-- doxytag: member="json_tokener_state_object_field_start" ref="f026dec71e4548e6200eb2f902f1c4e28c7dbda177a5d83a36a64f7cb99b9a29" args="" -->json_tokener_state_object_field_start</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="af026dec71e4548e6200eb2f902f1c4e2a8c7dbda177a5d83a36a64f7cb99b9a29"></a><!-- doxytag: member="json_tokener_state_object_field_start" ref="af026dec71e4548e6200eb2f902f1c4e2a8c7dbda177a5d83a36a64f7cb99b9a29" args="" -->json_tokener_state_object_field_start</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f026dec71e4548e6200eb2f902f1c4e277375940a10806e81d99876d13be67fc"></a><!-- doxytag: member="json_tokener_state_object_field" ref="f026dec71e4548e6200eb2f902f1c4e277375940a10806e81d99876d13be67fc" args="" -->json_tokener_state_object_field</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="af026dec71e4548e6200eb2f902f1c4e2a77375940a10806e81d99876d13be67fc"></a><!-- doxytag: member="json_tokener_state_object_field" ref="af026dec71e4548e6200eb2f902f1c4e2a77375940a10806e81d99876d13be67fc" args="" -->json_tokener_state_object_field</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f026dec71e4548e6200eb2f902f1c4e20220aea1d9204aadfffde92c7f73f5f7"></a><!-- doxytag: member="json_tokener_state_object_field_end" ref="f026dec71e4548e6200eb2f902f1c4e20220aea1d9204aadfffde92c7f73f5f7" args="" -->json_tokener_state_object_field_end</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="af026dec71e4548e6200eb2f902f1c4e2a0220aea1d9204aadfffde92c7f73f5f7"></a><!-- doxytag: member="json_tokener_state_object_field_end" ref="af026dec71e4548e6200eb2f902f1c4e2a0220aea1d9204aadfffde92c7f73f5f7" args="" -->json_tokener_state_object_field_end</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f026dec71e4548e6200eb2f902f1c4e24c7b7deac37355491572f6da84f208aa"></a><!-- doxytag: member="json_tokener_state_object_value" ref="f026dec71e4548e6200eb2f902f1c4e24c7b7deac37355491572f6da84f208aa" args="" -->json_tokener_state_object_value</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="af026dec71e4548e6200eb2f902f1c4e2a4c7b7deac37355491572f6da84f208aa"></a><!-- doxytag: member="json_tokener_state_object_value" ref="af026dec71e4548e6200eb2f902f1c4e2a4c7b7deac37355491572f6da84f208aa" args="" -->json_tokener_state_object_value</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f026dec71e4548e6200eb2f902f1c4e2de6bee72f2147e634b19eb84e58eb162"></a><!-- doxytag: member="json_tokener_state_object_value_add" ref="f026dec71e4548e6200eb2f902f1c4e2de6bee72f2147e634b19eb84e58eb162" args="" -->json_tokener_state_object_value_add</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="af026dec71e4548e6200eb2f902f1c4e2ade6bee72f2147e634b19eb84e58eb162"></a><!-- doxytag: member="json_tokener_state_object_value_add" ref="af026dec71e4548e6200eb2f902f1c4e2ade6bee72f2147e634b19eb84e58eb162" args="" -->json_tokener_state_object_value_add</em>&nbsp;</td><td>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f026dec71e4548e6200eb2f902f1c4e2daf3e06c5fc04fd4f04040cd67698215"></a><!-- doxytag: member="json_tokener_state_object_sep" ref="f026dec71e4548e6200eb2f902f1c4e2daf3e06c5fc04fd4f04040cd67698215" args="" -->json_tokener_state_object_sep</em>&nbsp;</td><td>
+<tr><td valign="top"><em><a class="anchor" id="af026dec71e4548e6200eb2f902f1c4e2adaf3e06c5fc04fd4f04040cd67698215"></a><!-- doxytag: member="json_tokener_state_object_sep" ref="af026dec71e4548e6200eb2f902f1c4e2adaf3e06c5fc04fd4f04040cd67698215" args="" -->json_tokener_state_object_sep</em>&nbsp;</td><td>
 </td></tr>
 </table>
+</dd>
 </dl>
 
 </div>
-</div><p>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="f6645ff27c0ca82c6e314390814fcbeb"></a><!-- doxytag: member="json_tokener.h::json_tokener_free" ref="f6645ff27c0ca82c6e314390814fcbeb" args="(struct json_tokener *tok)" -->
+</div>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="a04c5625212aed3216cc303429e47f642"></a><!-- doxytag: member="json_tokener.h::json_tokener_error_desc" ref="a04c5625212aed3216cc303429e47f642" args="(enum json_tokener_error jerr)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void json_tokener_free           </td>
+          <td class="memname">const char* json_tokener_error_desc </td>
+          <td>(</td>
+          <td class="paramtype">enum <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59">json_tokener_error</a>&nbsp;</td>
+          <td class="paramname"> <em>jerr</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Given an error previously returned by <a class="el" href="json__tokener_8h.html#ae8dff7f1ea11702aecf418e0da5574fe">json_tokener_get_error()</a>, return a human readable description of the error.</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>a generic error message is returned if an invalid error value is provided. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="af6645ff27c0ca82c6e314390814fcbeb"></a><!-- doxytag: member="json_tokener.h::json_tokener_free" ref="af6645ff27c0ca82c6e314390814fcbeb" args="(struct json_tokener *tok)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void json_tokener_free </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structjson__tokener.html">json_tokener</a> *&nbsp;</td>
-          <td class="paramname"> <em>tok</em>          </td>
+          <td class="paramname"> <em>tok</em></td>
           <td>&nbsp;)&nbsp;</td>
           <td></td>
         </tr>
 </div>
 <div class="memdoc">
 
-<p>
+</div>
+</div>
+<a class="anchor" id="ae8dff7f1ea11702aecf418e0da5574fe"></a><!-- doxytag: member="json_tokener.h::json_tokener_get_error" ref="ae8dff7f1ea11702aecf418e0da5574fe" args="(struct json_tokener *tok)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59">json_tokener_error</a> json_tokener_get_error </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structjson__tokener.html">json_tokener</a> *&nbsp;</td>
+          <td class="paramname"> <em>tok</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Retrieve the error caused by the last call to <a class="el" href="json__tokener_8h.html#a0d9a666c21879647e8831f9cfa691673">json_tokener_parse_ex()</a>, or json_tokener_success if there is no error.</p>
+<p>When parsing a JSON string in pieces, if the tokener is in the middle of parsing this will return json_tokener_continue.</p>
+<p>See also <a class="el" href="json__tokener_8h.html#a04c5625212aed3216cc303429e47f642">json_tokener_error_desc()</a>. </p>
 
 </div>
-</div><p>
-<a class="anchor" name="55d6e8a6f6d90992c063a39e21769c52"></a><!-- doxytag: member="json_tokener.h::json_tokener_new" ref="55d6e8a6f6d90992c063a39e21769c52" args="(void)" -->
+</div>
+<a class="anchor" id="a55d6e8a6f6d90992c063a39e21769c52"></a><!-- doxytag: member="json_tokener.h::json_tokener_new" ref="a55d6e8a6f6d90992c063a39e21769c52" args="(void)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structjson__tokener.html">json_tokener</a>* json_tokener_new           </td>
+          <td class="memname">struct <a class="el" href="structjson__tokener.html">json_tokener</a>* json_tokener_new </td>
           <td>(</td>
           <td class="paramtype">void&nbsp;</td>
-          <td class="paramname">          </td>
+          <td class="paramname"></td>
           <td>&nbsp;)&nbsp;</td>
           <td><code> [read]</code></td>
         </tr>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="bf031fdf1e5caab71e2225a99588c6bb"></a><!-- doxytag: member="json_tokener.h::json_tokener_parse" ref="bf031fdf1e5caab71e2225a99588c6bb" args="(const char *str)" -->
+</div>
+<a class="anchor" id="abf031fdf1e5caab71e2225a99588c6bb"></a><!-- doxytag: member="json_tokener.h::json_tokener_parse" ref="abf031fdf1e5caab71e2225a99588c6bb" args="(const char *str)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* json_tokener_parse           </td>
+          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* json_tokener_parse </td>
           <td>(</td>
           <td class="paramtype">const char *&nbsp;</td>
-          <td class="paramname"> <em>str</em>          </td>
+          <td class="paramname"> <em>str</em></td>
           <td>&nbsp;)&nbsp;</td>
           <td><code> [read]</code></td>
         </tr>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="0d9a666c21879647e8831f9cfa691673"></a><!-- doxytag: member="json_tokener.h::json_tokener_parse_ex" ref="0d9a666c21879647e8831f9cfa691673" args="(struct json_tokener *tok, const char *str, int len)" -->
+</div>
+<a class="anchor" id="a0d9a666c21879647e8831f9cfa691673"></a><!-- doxytag: member="json_tokener.h::json_tokener_parse_ex" ref="a0d9a666c21879647e8831f9cfa691673" args="(struct json_tokener *tok, const char *str, int len)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* json_tokener_parse_ex           </td>
+          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* json_tokener_parse_ex </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structjson__tokener.html">json_tokener</a> *&nbsp;</td>
           <td class="paramname"> <em>tok</em>, </td>
       </table>
 </div>
 <div class="memdoc">
+<p>Parse a string and return a non-NULL <a class="el" href="structjson__object.html">json_object</a> if a valid JSON value is found. The string does not need to be a JSON object or array; it can also be a string, number or boolean value.</p>
+<p>A partial JSON string can be parsed. If the parsing is incomplete, NULL will be returned and <a class="el" href="json__tokener_8h.html#ae8dff7f1ea11702aecf418e0da5574fe">json_tokener_get_error()</a> will be return json_tokener_continue. <a class="el" href="json__tokener_8h.html#a0d9a666c21879647e8831f9cfa691673">json_tokener_parse_ex()</a> can then be called with additional bytes in str to continue the parsing.</p>
+<p>If <a class="el" href="json__tokener_8h.html#a0d9a666c21879647e8831f9cfa691673">json_tokener_parse_ex()</a> returns NULL and the error anything other than json_tokener_continue, a fatal error has occurred and parsing must be halted. Then tok object must not be re-used until <a class="el" href="json__tokener_8h.html#ae23dd7ad4737bfc18409af6173ab2b09">json_tokener_reset()</a> is called.</p>
+<p>When a valid JSON value is parsed, a non-NULL <a class="el" href="structjson__object.html">json_object</a> will be returned. Also, <a class="el" href="json__tokener_8h.html#ae8dff7f1ea11702aecf418e0da5574fe">json_tokener_get_error()</a> will return json_tokener_success. Be sure to check the type with <a class="el" href="json__object_8h.html#ab6dc8b19f8da310e78f402f83d6ae6c5">json_object_is_type()</a> or <a class="el" href="json__object_8h.html#adc5e998b4897b6e450bd0975a58d2f72">json_object_get_type()</a> before using the object.</p>
+<p><b>XXX</b> this shouldn't use internal fields: Trailing characters after the parsed value do not automatically cause an error. It is up to the caller to decide whether to treat this as an error or to handle the additional characters, perhaps by parsing another json value starting from that point.</p>
+<p>Extra characters can be detected by comparing the tok-&gt;char_offset against the length of the last len parameter passed in.</p>
+<p>The tokener does <b>not</b> maintain an internal buffer so the caller is responsible for calling json_tokener_parse_ex with an appropriate str parameter starting with the extra characters.</p>
+<p>Example: </p>
+<div class="fragment"><pre class="fragment"><a class="code" href="structjson__object.html">json_object</a> *jobj = NULL;
+<span class="keyword">const</span> <span class="keywordtype">char</span> *mystring = NULL;
+<span class="keywordtype">int</span> stringlen = 0;
+<span class="keyword">enum</span> <a class="code" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59">json_tokener_error</a> jerr;
+<span class="keywordflow">do</span> {
+        mystring = ...  <span class="comment">// get JSON string, e.g. read from file, etc...</span>
+        stringlen = strlen(mystring);
+        jobj = <a class="code" href="json__tokener_8h.html#a0d9a666c21879647e8831f9cfa691673">json_tokener_parse_ex</a>(tok, mystring, stringlen);
+} <span class="keywordflow">while</span> ((jerr = <a class="code" href="json__tokener_8h.html#ae8dff7f1ea11702aecf418e0da5574fe">json_tokener_get_error</a>(tok)) == <a class="code" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59a9b26e920ca765df91c84e999561d8fb0">json_tokener_continue</a>);
+<span class="keywordflow">if</span> (jerr != <a class="code" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59afe2fa9bde03155019b2df30f66a5fcd0">json_tokener_success</a>)
+{
+        fprintf(stderr, <span class="stringliteral">&quot;Error: %s\n&quot;</span>, <a class="code" href="json__tokener_8h.html#a04c5625212aed3216cc303429e47f642">json_tokener_error_desc</a>(jerr));
+        <span class="comment">// Handle errors, as appropriate for your application.</span>
+}
+<span class="keywordflow">if</span> (tok-&gt;char_offset &lt; stringlen) <span class="comment">// XXX shouldn&#39;t access internal fields</span>
+{
+        <span class="comment">// Handle extra characters after parsed object as desired.</span>
+        <span class="comment">// e.g. issue an error, parse another object from that point, etc...</span>
+}
+<span class="comment">// Success, use jobj here.</span>
+</pre></div><dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>tok</em>&nbsp;</td><td>a <a class="el" href="structjson__tokener.html">json_tokener</a> previously allocated with <a class="el" href="json__tokener_8h.html#a55d6e8a6f6d90992c063a39e21769c52">json_tokener_new()</a> </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>str</em>&nbsp;</td><td>an string with any valid JSON expression, or portion of. This does not need to be null terminated. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>the length of str </td></tr>
+  </table>
+  </dd>
+</dl>
 
-<p>
+</div>
+</div>
+<a class="anchor" id="a1c8f5d8baad383dc8879615d2b02b53c"></a><!-- doxytag: member="json_tokener.h::json_tokener_parse_verbose" ref="a1c8f5d8baad383dc8879615d2b02b53c" args="(const char *str, enum json_tokener_error *error)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* json_tokener_parse_verbose </td>
+          <td>(</td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>str</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">enum <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59">json_tokener_error</a> *&nbsp;</td>
+          <td class="paramname"> <em>error</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td><code> [read]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
 
 </div>
-</div><p>
-<a class="anchor" name="e23dd7ad4737bfc18409af6173ab2b09"></a><!-- doxytag: member="json_tokener.h::json_tokener_reset" ref="e23dd7ad4737bfc18409af6173ab2b09" args="(struct json_tokener *tok)" -->
+</div>
+<a class="anchor" id="ae23dd7ad4737bfc18409af6173ab2b09"></a><!-- doxytag: member="json_tokener.h::json_tokener_reset" ref="ae23dd7ad4737bfc18409af6173ab2b09" args="(struct json_tokener *tok)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void json_tokener_reset           </td>
+          <td class="memname">void json_tokener_reset </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structjson__tokener.html">json_tokener</a> *&nbsp;</td>
-          <td class="paramname"> <em>tok</em>          </td>
+          <td class="paramname"> <em>tok</em></td>
           <td>&nbsp;)&nbsp;</td>
           <td></td>
         </tr>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<hr><h2>Variable Documentation</h2>
-<a class="anchor" name="6ede8ee7a4ec1fed68d10ea77294c966"></a><!-- doxytag: member="json_tokener.h::json_tokener_errors" ref="6ede8ee7a4ec1fed68d10ea77294c966" args="[]" -->
+</div>
+<hr/><h2>Variable Documentation</h2>
+<a class="anchor" id="a6ede8ee7a4ec1fed68d10ea77294c966"></a><!-- doxytag: member="json_tokener.h::json_tokener_errors" ref="a6ede8ee7a4ec1fed68d10ea77294c966" args="[]" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">const char* <a class="el" href="json__tokener_8h.html#6ede8ee7a4ec1fed68d10ea77294c966">json_tokener_errors</a>[]          </td>
+          <td class="memname">const char* <a class="el" href="json__tokener_8h.html#a6ede8ee7a4ec1fed68d10ea77294c966">json_tokener_errors</a>[]</td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
+<p><b>XXX</b> do not use json_tokener_errors directly. After v0.10 this will be removed.</p>
+<p>See <a class="el" href="json__tokener_8h.html#a04c5625212aed3216cc303429e47f642">json_tokener_error_desc()</a> instead. </p>
 
-<p>
-
 </div>
-</div><p>
 </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by&nbsp;
 <a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>
 </html>
index 7085320..5a544ea 100644 (file)
@@ -1,14 +1,18 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>json-c: json_util.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
 <div class="navigation" id="top">
   <div class="tabs">
     <ul>
       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
       <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
       <li class="current"><a href="files.html"><span>Files</span></a></li>
     </ul>
 </div>
 <div class="contents">
 <h1>json_util.h File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__util_8h.html#084b6afc8f7fbef88976aabe4aca7efd">JSON_FILE_BUF_SIZE</a>&nbsp;&nbsp;&nbsp;4096</td></tr>
-
-<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__util_8h.html#befd9aa2f4d36ffc0f8474e042e9a398">json_object_from_file</a> (char *filename)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__util_8h.html#00f5c43b3035faa4e4f3e55cf59707ee">json_object_to_file</a> (char *filename, struct <a class="el" href="structjson__object.html">json_object</a> *obj)</td></tr>
-
+<tr><td colspan="2"><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__util_8h.html#a084b6afc8f7fbef88976aabe4aca7efd">JSON_FILE_BUF_SIZE</a>&nbsp;&nbsp;&nbsp;4096</td></tr>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__util_8h.html#a8fa0bba6b7ddb149a2159d99bae709ce">json_object_from_file</a> (const char *filename)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__util_8h.html#a00f5c43b3035faa4e4f3e55cf59707ee">json_object_to_file</a> (char *filename, struct <a class="el" href="structjson__object.html">json_object</a> *obj)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__util_8h.html#a1ddcf96dd176ed447ce4df383190cfa8">json_object_to_file_ext</a> (char *filename, struct <a class="el" href="structjson__object.html">json_object</a> *obj, int flags)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__util_8h.html#a9bb9882ef2859ca2c1ee17805679bc25">json_parse_int64</a> (const char *buf, int64_t *retval)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="json__util_8h.html#a74031a1b948dc9fed3f367ea6ce78389">json_type_to_name</a> (enum <a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06c">json_type</a> o_type)</td></tr>
 </table>
-<hr><h2>Define Documentation</h2>
-<a class="anchor" name="084b6afc8f7fbef88976aabe4aca7efd"></a><!-- doxytag: member="json_util.h::JSON_FILE_BUF_SIZE" ref="084b6afc8f7fbef88976aabe4aca7efd" args="" -->
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="a084b6afc8f7fbef88976aabe4aca7efd"></a><!-- doxytag: member="json_util.h::JSON_FILE_BUF_SIZE" ref="a084b6afc8f7fbef88976aabe4aca7efd" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define JSON_FILE_BUF_SIZE&nbsp;&nbsp;&nbsp;4096          </td>
+          <td class="memname">#define JSON_FILE_BUF_SIZE&nbsp;&nbsp;&nbsp;4096</td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="befd9aa2f4d36ffc0f8474e042e9a398"></a><!-- doxytag: member="json_util.h::json_object_from_file" ref="befd9aa2f4d36ffc0f8474e042e9a398" args="(char *filename)" -->
+</div>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="a8fa0bba6b7ddb149a2159d99bae709ce"></a><!-- doxytag: member="json_util.h::json_object_from_file" ref="a8fa0bba6b7ddb149a2159d99bae709ce" args="(const char *filename)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* json_object_from_file           </td>
+          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* json_object_from_file </td>
           <td>(</td>
-          <td class="paramtype">char *&nbsp;</td>
-          <td class="paramname"> <em>filename</em>          </td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>filename</em></td>
           <td>&nbsp;)&nbsp;</td>
           <td><code> [read]</code></td>
         </tr>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="00f5c43b3035faa4e4f3e55cf59707ee"></a><!-- doxytag: member="json_util.h::json_object_to_file" ref="00f5c43b3035faa4e4f3e55cf59707ee" args="(char *filename, struct json_object *obj)" -->
+</div>
+<a class="anchor" id="a00f5c43b3035faa4e4f3e55cf59707ee"></a><!-- doxytag: member="json_util.h::json_object_to_file" ref="a00f5c43b3035faa4e4f3e55cf59707ee" args="(char *filename, struct json_object *obj)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int json_object_to_file           </td>
+          <td class="memname">int json_object_to_file </td>
           <td>(</td>
           <td class="paramtype">char *&nbsp;</td>
           <td class="paramname"> <em>filename</em>, </td>
 </div>
 <div class="memdoc">
 
-<p>
+</div>
+</div>
+<a class="anchor" id="a1ddcf96dd176ed447ce4df383190cfa8"></a><!-- doxytag: member="json_util.h::json_object_to_file_ext" ref="a1ddcf96dd176ed447ce4df383190cfa8" args="(char *filename, struct json_object *obj, int flags)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int json_object_to_file_ext </td>
+          <td>(</td>
+          <td class="paramtype">char *&nbsp;</td>
+          <td class="paramname"> <em>filename</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td>
+          <td class="paramname"> <em>obj</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>flags</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
 
 </div>
-</div><p>
 </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
+<a class="anchor" id="a9bb9882ef2859ca2c1ee17805679bc25"></a><!-- doxytag: member="json_util.h::json_parse_int64" ref="a9bb9882ef2859ca2c1ee17805679bc25" args="(const char *buf, int64_t *retval)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int json_parse_int64 </td>
+          <td>(</td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>buf</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int64_t *&nbsp;</td>
+          <td class="paramname"> <em>retval</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a74031a1b948dc9fed3f367ea6ce78389"></a><!-- doxytag: member="json_util.h::json_type_to_name" ref="a74031a1b948dc9fed3f367ea6ce78389" args="(enum json_type o_type)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* json_type_to_name </td>
+          <td>(</td>
+          <td class="paramtype">enum <a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06c">json_type</a>&nbsp;</td>
+          <td class="paramname"> <em>o_type</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return a string describing the type of the object. e.g. "int", or "object", etc... </p>
+
+</div>
+</div>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by&nbsp;
 <a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>
 </html>
index 45569a7..b250287 100644 (file)
@@ -1,14 +1,18 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>json-c: linkhash.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
 <div class="navigation" id="top">
   <div class="tabs">
     <ul>
       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
       <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
       <li class="current"><a href="files.html"><span>Files</span></a></li>
     </ul>
 </div>
 <div class="contents">
 <h1>linkhash.h File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__entry.html">lh_entry</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html">lh_table</a></td></tr>
-
-<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#032f1bd115df254dda325437203ce5fb">LH_PRIME</a>&nbsp;&nbsp;&nbsp;0x9e370001UL</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#93fad7f8ae44575dc89c9567859972d2">LH_EMPTY</a>&nbsp;&nbsp;&nbsp;(void*)-1</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#c69428f2de0a6fb080b6fb373d506aa7">LH_FREED</a>&nbsp;&nbsp;&nbsp;(void*)-2</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#d7dd67da915065dce2c6f44cb03e2d82">lh_foreach</a>(table, entry)&nbsp;&nbsp;&nbsp;for(entry = table-&gt;head; entry; entry = entry-&gt;next)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#bcbb0df08b4976d0649b826b6bacfca1">lh_foreach_safe</a>(table, entry, tmp)&nbsp;&nbsp;&nbsp;for(entry = table-&gt;head; entry &amp;&amp; ((tmp = entry-&gt;next) || 1); entry = tmp)</td></tr>
-
-<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> )(struct <a class="el" href="structlh__entry.html">lh_entry</a> *e)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef unsigned long(&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#38bae27995dcfb6ee3fb109a9be229b2">lh_hash_fn</a> )(const void *k)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#91fd85fc81b0c7c83c62f00e84729091">lh_equal_fn</a> )(const void *k1, const void *k2)</td></tr>
-
-<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#2e560f0d3e5a20f6b0bfa4049737db23">lh_ptr_hash</a> (const void *k)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#6ce3cb97560072c40f5caeaba85f756a">lh_ptr_equal</a> (const void *k1, const void *k2)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#1fcf495b9c4ce169630cb31f638b8435">lh_char_hash</a> (const void *k)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#e4e9f21fb1a556c7a50c6b7ea61f2079">lh_char_equal</a> (const void *k1, const void *k2)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#c3ba464ac43c083397b1f1d34f2ddf55">lh_table_new</a> (int size, const char *name, <a class="el" href="linkhash_8h.html#671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *free_fn, <a class="el" href="linkhash_8h.html#38bae27995dcfb6ee3fb109a9be229b2">lh_hash_fn</a> *hash_fn, <a class="el" href="linkhash_8h.html#91fd85fc81b0c7c83c62f00e84729091">lh_equal_fn</a> *equal_fn)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#0aaf11e11ee5b0925279a52eab04bc38">lh_kchar_table_new</a> (int size, const char *name, <a class="el" href="linkhash_8h.html#671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *free_fn)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#705513954267a16cc1d40a284a7c441e">lh_kptr_table_new</a> (int size, const char *name, <a class="el" href="linkhash_8h.html#671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *free_fn)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#81653acf740cf8c9fe672e6cd16df0cf">lh_table_free</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#22b897763cc34a98c21c7fe82d151004">lh_table_insert</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, void *k, const void *v)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlh__entry.html">lh_entry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#d3b6ca2d967a6c3021ee6c39e014a918">lh_table_lookup_entry</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, const void *k)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#49c27f18a174eaf126d1b7953df13cb1">lh_table_lookup</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, const void *k)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#e5885a71c3457190fb1dc2d6e20dde3b">lh_table_delete_entry</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, struct <a class="el" href="structlh__entry.html">lh_entry</a> *e)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#2fed2c78f70d229edb2d00775ffe593c">lh_table_delete</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, const void *k)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#1294160fa0e80cee04cd745a401f43a4">lh_abort</a> (const char *msg,...)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#5322eccf3394af7dc1ebb22af8f8c562">lh_table_resize</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, int new_size)</td></tr>
-
+<tr><td colspan="2"><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__entry.html">lh_entry</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html">lh_table</a></td></tr>
+<tr><td colspan="2"><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a032f1bd115df254dda325437203ce5fb">LH_PRIME</a>&nbsp;&nbsp;&nbsp;0x9e370001UL</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a66b61772c29d85eb52b697e0b0dc0aaf">LH_LOAD_FACTOR</a>&nbsp;&nbsp;&nbsp;0.66</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a93fad7f8ae44575dc89c9567859972d2">LH_EMPTY</a>&nbsp;&nbsp;&nbsp;(void*)-1</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#ac69428f2de0a6fb080b6fb373d506aa7">LH_FREED</a>&nbsp;&nbsp;&nbsp;(void*)-2</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#ad7dd67da915065dce2c6f44cb03e2d82">lh_foreach</a>(table, entry)&nbsp;&nbsp;&nbsp;for(entry = table-&gt;head; entry; entry = entry-&gt;next)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#abcbb0df08b4976d0649b826b6bacfca1">lh_foreach_safe</a>(table, entry, tmp)&nbsp;&nbsp;&nbsp;for(entry = table-&gt;head; entry &amp;&amp; ((tmp = entry-&gt;next) || 1); entry = tmp)</td></tr>
+<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef void(&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> )(struct <a class="el" href="structlh__entry.html">lh_entry</a> *e)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef unsigned long(&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a38bae27995dcfb6ee3fb109a9be229b2">lh_hash_fn</a> )(const void *k)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef int(&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a91fd85fc81b0c7c83c62f00e84729091">lh_equal_fn</a> )(const void *k1, const void *k2)</td></tr>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">unsigned long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a2e560f0d3e5a20f6b0bfa4049737db23">lh_ptr_hash</a> (const void *k)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a6ce3cb97560072c40f5caeaba85f756a">lh_ptr_equal</a> (const void *k1, const void *k2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">unsigned long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a1fcf495b9c4ce169630cb31f638b8435">lh_char_hash</a> (const void *k)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#ae4e9f21fb1a556c7a50c6b7ea61f2079">lh_char_equal</a> (const void *k1, const void *k2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#ac3ba464ac43c083397b1f1d34f2ddf55">lh_table_new</a> (int size, const char *name, <a class="el" href="linkhash_8h.html#a671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *free_fn, <a class="el" href="linkhash_8h.html#a38bae27995dcfb6ee3fb109a9be229b2">lh_hash_fn</a> *hash_fn, <a class="el" href="linkhash_8h.html#a91fd85fc81b0c7c83c62f00e84729091">lh_equal_fn</a> *equal_fn)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a0aaf11e11ee5b0925279a52eab04bc38">lh_kchar_table_new</a> (int size, const char *name, <a class="el" href="linkhash_8h.html#a671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *free_fn)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a705513954267a16cc1d40a284a7c441e">lh_kptr_table_new</a> (int size, const char *name, <a class="el" href="linkhash_8h.html#a671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *free_fn)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a81653acf740cf8c9fe672e6cd16df0cf">lh_table_free</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a22b897763cc34a98c21c7fe82d151004">lh_table_insert</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, void *k, const void *v)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structlh__entry.html">lh_entry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#ad3b6ca2d967a6c3021ee6c39e014a918">lh_table_lookup_entry</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, const void *k)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a49c27f18a174eaf126d1b7953df13cb1">lh_table_lookup</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, const void *k)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="json__object_8h.html#a81f02022906fafc71eb9197049f07f73">json_bool</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a81c270bb0dd9d5c8a3e7ae20bc4d67f3">lh_table_lookup_ex</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, const void *k, void **v)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#ae5885a71c3457190fb1dc2d6e20dde3b">lh_table_delete_entry</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, struct <a class="el" href="structlh__entry.html">lh_entry</a> *e)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a2fed2c78f70d229edb2d00775ffe593c">lh_table_delete</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, const void *k)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a1294160fa0e80cee04cd745a401f43a4">lh_abort</a> (const char *msg,...)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a5322eccf3394af7dc1ebb22af8f8c562">lh_table_resize</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, int new_size)</td></tr>
 </table>
-<hr><h2>Define Documentation</h2>
-<a class="anchor" name="93fad7f8ae44575dc89c9567859972d2"></a><!-- doxytag: member="linkhash.h::LH_EMPTY" ref="93fad7f8ae44575dc89c9567859972d2" args="" -->
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="a93fad7f8ae44575dc89c9567859972d2"></a><!-- doxytag: member="linkhash.h::LH_EMPTY" ref="a93fad7f8ae44575dc89c9567859972d2" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define LH_EMPTY&nbsp;&nbsp;&nbsp;(void*)-1          </td>
+          <td class="memname">#define LH_EMPTY&nbsp;&nbsp;&nbsp;(void*)-1</td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
+<p>sentinel pointer value for empty slots </p>
 
-<p>
-sentinel pointer value for empty slots 
 </div>
-</div><p>
-<a class="anchor" name="d7dd67da915065dce2c6f44cb03e2d82"></a><!-- doxytag: member="linkhash.h::lh_foreach" ref="d7dd67da915065dce2c6f44cb03e2d82" args="(table, entry)" -->
+</div>
+<a class="anchor" id="ad7dd67da915065dce2c6f44cb03e2d82"></a><!-- doxytag: member="linkhash.h::lh_foreach" ref="ad7dd67da915065dce2c6f44cb03e2d82" args="(table, entry)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define lh_foreach          </td>
+          <td class="memname">#define lh_foreach</td>
           <td>(</td>
-          <td class="paramtype">table,         <tr>
+          <td class="paramtype">table, </td>
+        </tr>
+        <tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype">entry&nbsp;</td>
-          <td class="paramname">          </td>
+          <td class="paramname"></td>
           <td>&nbsp;)&nbsp;</td>
           <td>&nbsp;&nbsp;&nbsp;for(entry = table-&gt;head; entry; entry = entry-&gt;next)</td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
+<p>Convenience list iterator. </p>
 
-<p>
-Convenience list iterator. 
 </div>
-</div><p>
-<a class="anchor" name="bcbb0df08b4976d0649b826b6bacfca1"></a><!-- doxytag: member="linkhash.h::lh_foreach_safe" ref="bcbb0df08b4976d0649b826b6bacfca1" args="(table, entry, tmp)" -->
+</div>
+<a class="anchor" id="abcbb0df08b4976d0649b826b6bacfca1"></a><!-- doxytag: member="linkhash.h::lh_foreach_safe" ref="abcbb0df08b4976d0649b826b6bacfca1" args="(table, entry, tmp)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define lh_foreach_safe          </td>
+          <td class="memname">#define lh_foreach_safe</td>
           <td>(</td>
-          <td class="paramtype">table,         <tr>
+          <td class="paramtype">table, </td>
+        </tr>
+        <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">entry,         <tr>
+          <td class="paramtype">entry, </td>
+        </tr>
+        <tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype">tmp&nbsp;</td>
-          <td class="paramname">          </td>
+          <td class="paramname"></td>
           <td>&nbsp;)&nbsp;</td>
           <td>&nbsp;&nbsp;&nbsp;for(entry = table-&gt;head; entry &amp;&amp; ((tmp = entry-&gt;next) || 1); entry = tmp)</td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
+<p>lh_foreach_safe allows calling of deletion routine while iterating. </p>
+
+</div>
+</div>
+<a class="anchor" id="ac69428f2de0a6fb080b6fb373d506aa7"></a><!-- doxytag: member="linkhash.h::LH_FREED" ref="ac69428f2de0a6fb080b6fb373d506aa7" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define LH_FREED&nbsp;&nbsp;&nbsp;(void*)-2</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>sentinel pointer value for freed slots </p>
 
-<p>
-lh_foreach_safe allows calling of deletion routine while iterating. 
 </div>
-</div><p>
-<a class="anchor" name="c69428f2de0a6fb080b6fb373d506aa7"></a><!-- doxytag: member="linkhash.h::LH_FREED" ref="c69428f2de0a6fb080b6fb373d506aa7" args="" -->
+</div>
+<a class="anchor" id="a66b61772c29d85eb52b697e0b0dc0aaf"></a><!-- doxytag: member="linkhash.h::LH_LOAD_FACTOR" ref="a66b61772c29d85eb52b697e0b0dc0aaf" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define LH_FREED&nbsp;&nbsp;&nbsp;(void*)-2          </td>
+          <td class="memname">#define LH_LOAD_FACTOR&nbsp;&nbsp;&nbsp;0.66</td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
+<p>The fraction of filled hash buckets until an insert will cause the table to be resized. This can range from just above 0 up to 1.0. </p>
 
-<p>
-sentinel pointer value for freed slots 
 </div>
-</div><p>
-<a class="anchor" name="032f1bd115df254dda325437203ce5fb"></a><!-- doxytag: member="linkhash.h::LH_PRIME" ref="032f1bd115df254dda325437203ce5fb" args="" -->
+</div>
+<a class="anchor" id="a032f1bd115df254dda325437203ce5fb"></a><!-- doxytag: member="linkhash.h::LH_PRIME" ref="a032f1bd115df254dda325437203ce5fb" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define LH_PRIME&nbsp;&nbsp;&nbsp;0x9e370001UL          </td>
+          <td class="memname">#define LH_PRIME&nbsp;&nbsp;&nbsp;0x9e370001UL</td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
+<p>golden prime used in hash functions </p>
 
-<p>
-golden prime used in hash functions 
 </div>
-</div><p>
-<hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="671553d0ee3c2a123190ba0f8ed2b635"></a><!-- doxytag: member="linkhash.h::lh_entry_free_fn" ref="671553d0ee3c2a123190ba0f8ed2b635" args=")(struct lh_entry *e)" -->
+</div>
+<hr/><h2>Typedef Documentation</h2>
+<a class="anchor" id="a671553d0ee3c2a123190ba0f8ed2b635"></a><!-- doxytag: member="linkhash.h::lh_entry_free_fn" ref="a671553d0ee3c2a123190ba0f8ed2b635" args=")(struct lh_entry *e)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">typedef void( <a class="el" href="linkhash_8h.html#671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a>)(struct <a class="el" href="structlh__entry.html">lh_entry</a> *e)          </td>
+          <td class="memname">typedef void( <a class="el" href="linkhash_8h.html#a671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a>)(struct <a class="el" href="structlh__entry.html">lh_entry</a> *e)</td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
+<p>callback function prototypes </p>
 
-<p>
-callback function prototypes 
 </div>
-</div><p>
-<a class="anchor" name="91fd85fc81b0c7c83c62f00e84729091"></a><!-- doxytag: member="linkhash.h::lh_equal_fn" ref="91fd85fc81b0c7c83c62f00e84729091" args=")(const void *k1, const void *k2)" -->
+</div>
+<a class="anchor" id="a91fd85fc81b0c7c83c62f00e84729091"></a><!-- doxytag: member="linkhash.h::lh_equal_fn" ref="a91fd85fc81b0c7c83c62f00e84729091" args=")(const void *k1, const void *k2)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">typedef int( <a class="el" href="linkhash_8h.html#91fd85fc81b0c7c83c62f00e84729091">lh_equal_fn</a>)(const void *k1, const void *k2)          </td>
+          <td class="memname">typedef int( <a class="el" href="linkhash_8h.html#a91fd85fc81b0c7c83c62f00e84729091">lh_equal_fn</a>)(const void *k1, const void *k2)</td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
+<p>callback function prototypes </p>
 
-<p>
-callback function prototypes 
 </div>
-</div><p>
-<a class="anchor" name="38bae27995dcfb6ee3fb109a9be229b2"></a><!-- doxytag: member="linkhash.h::lh_hash_fn" ref="38bae27995dcfb6ee3fb109a9be229b2" args=")(const void *k)" -->
+</div>
+<a class="anchor" id="a38bae27995dcfb6ee3fb109a9be229b2"></a><!-- doxytag: member="linkhash.h::lh_hash_fn" ref="a38bae27995dcfb6ee3fb109a9be229b2" args=")(const void *k)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">typedef unsigned long( <a class="el" href="linkhash_8h.html#38bae27995dcfb6ee3fb109a9be229b2">lh_hash_fn</a>)(const void *k)          </td>
+          <td class="memname">typedef unsigned long( <a class="el" href="linkhash_8h.html#a38bae27995dcfb6ee3fb109a9be229b2">lh_hash_fn</a>)(const void *k)</td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
+<p>callback function prototypes </p>
 
-<p>
-callback function prototypes 
 </div>
-</div><p>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="1294160fa0e80cee04cd745a401f43a4"></a><!-- doxytag: member="linkhash.h::lh_abort" ref="1294160fa0e80cee04cd745a401f43a4" args="(const char *msg,...)" -->
+</div>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="a1294160fa0e80cee04cd745a401f43a4"></a><!-- doxytag: member="linkhash.h::lh_abort" ref="a1294160fa0e80cee04cd745a401f43a4" args="(const char *msg,...)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void lh_abort           </td>
+          <td class="memname">void lh_abort </td>
           <td>(</td>
           <td class="paramtype">const char *&nbsp;</td>
           <td class="paramname"> <em>msg</em>, </td>
@@ -245,16 +237,14 @@ callback function prototypes
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="e4e9f21fb1a556c7a50c6b7ea61f2079"></a><!-- doxytag: member="linkhash.h::lh_char_equal" ref="e4e9f21fb1a556c7a50c6b7ea61f2079" args="(const void *k1, const void *k2)" -->
+</div>
+<a class="anchor" id="ae4e9f21fb1a556c7a50c6b7ea61f2079"></a><!-- doxytag: member="linkhash.h::lh_char_equal" ref="ae4e9f21fb1a556c7a50c6b7ea61f2079" args="(const void *k1, const void *k2)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int lh_char_equal           </td>
+          <td class="memname">int lh_char_equal </td>
           <td>(</td>
           <td class="paramtype">const void *&nbsp;</td>
           <td class="paramname"> <em>k1</em>, </td>
@@ -274,19 +264,17 @@ callback function prototypes
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="1fcf495b9c4ce169630cb31f638b8435"></a><!-- doxytag: member="linkhash.h::lh_char_hash" ref="1fcf495b9c4ce169630cb31f638b8435" args="(const void *k)" -->
+</div>
+<a class="anchor" id="a1fcf495b9c4ce169630cb31f638b8435"></a><!-- doxytag: member="linkhash.h::lh_char_hash" ref="a1fcf495b9c4ce169630cb31f638b8435" args="(const void *k)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">unsigned long lh_char_hash           </td>
+          <td class="memname">unsigned long lh_char_hash </td>
           <td>(</td>
           <td class="paramtype">const void *&nbsp;</td>
-          <td class="paramname"> <em>k</em>          </td>
+          <td class="paramname"> <em>k</em></td>
           <td>&nbsp;)&nbsp;</td>
           <td></td>
         </tr>
@@ -294,16 +282,14 @@ callback function prototypes
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="0aaf11e11ee5b0925279a52eab04bc38"></a><!-- doxytag: member="linkhash.h::lh_kchar_table_new" ref="0aaf11e11ee5b0925279a52eab04bc38" args="(int size, const char *name, lh_entry_free_fn *free_fn)" -->
+</div>
+<a class="anchor" id="a0aaf11e11ee5b0925279a52eab04bc38"></a><!-- doxytag: member="linkhash.h::lh_kchar_table_new" ref="a0aaf11e11ee5b0925279a52eab04bc38" args="(int size, const char *name, lh_entry_free_fn *free_fn)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structlh__table.html">lh_table</a>* lh_kchar_table_new           </td>
+          <td class="memname">struct <a class="el" href="structlh__table.html">lh_table</a>* lh_kchar_table_new </td>
           <td>(</td>
           <td class="paramtype">int&nbsp;</td>
           <td class="paramname"> <em>size</em>, </td>
@@ -317,7 +303,7 @@ callback function prototypes
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype"><a class="el" href="linkhash_8h.html#671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *&nbsp;</td>
+          <td class="paramtype"><a class="el" href="linkhash_8h.html#a671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *&nbsp;</td>
           <td class="paramname"> <em>free_fn</em></td><td>&nbsp;</td>
         </tr>
         <tr>
@@ -328,25 +314,25 @@ callback function prototypes
       </table>
 </div>
 <div class="memdoc">
-
-<p>
-Convenience function to create a new linkhash table with char keys. <dl compact><dt><b>Parameters:</b></dt><dd>
+<p>Convenience function to create a new linkhash table with char keys. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>initial table size. </td></tr>
     <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>table name. </td></tr>
     <tr><td valign="top"></td><td valign="top"><em>free_fn</em>&nbsp;</td><td>callback function used to free memory for entries. </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>a pointer onto the linkhash table. </dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>a pointer onto the linkhash table. </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="705513954267a16cc1d40a284a7c441e"></a><!-- doxytag: member="linkhash.h::lh_kptr_table_new" ref="705513954267a16cc1d40a284a7c441e" args="(int size, const char *name, lh_entry_free_fn *free_fn)" -->
+</div>
+<a class="anchor" id="a705513954267a16cc1d40a284a7c441e"></a><!-- doxytag: member="linkhash.h::lh_kptr_table_new" ref="a705513954267a16cc1d40a284a7c441e" args="(int size, const char *name, lh_entry_free_fn *free_fn)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structlh__table.html">lh_table</a>* lh_kptr_table_new           </td>
+          <td class="memname">struct <a class="el" href="structlh__table.html">lh_table</a>* lh_kptr_table_new </td>
           <td>(</td>
           <td class="paramtype">int&nbsp;</td>
           <td class="paramname"> <em>size</em>, </td>
@@ -360,7 +346,7 @@ Convenience function to create a new linkhash table with char keys. <dl compact>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype"><a class="el" href="linkhash_8h.html#671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *&nbsp;</td>
+          <td class="paramtype"><a class="el" href="linkhash_8h.html#a671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *&nbsp;</td>
           <td class="paramname"> <em>free_fn</em></td><td>&nbsp;</td>
         </tr>
         <tr>
@@ -371,25 +357,25 @@ Convenience function to create a new linkhash table with char keys. <dl compact>
       </table>
 </div>
 <div class="memdoc">
-
-<p>
-Convenience function to create a new linkhash table with ptr keys. <dl compact><dt><b>Parameters:</b></dt><dd>
+<p>Convenience function to create a new linkhash table with ptr keys. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>initial table size. </td></tr>
     <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>table name. </td></tr>
     <tr><td valign="top"></td><td valign="top"><em>free_fn</em>&nbsp;</td><td>callback function used to free memory for entries. </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>a pointer onto the linkhash table. </dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>a pointer onto the linkhash table. </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="6ce3cb97560072c40f5caeaba85f756a"></a><!-- doxytag: member="linkhash.h::lh_ptr_equal" ref="6ce3cb97560072c40f5caeaba85f756a" args="(const void *k1, const void *k2)" -->
+</div>
+<a class="anchor" id="a6ce3cb97560072c40f5caeaba85f756a"></a><!-- doxytag: member="linkhash.h::lh_ptr_equal" ref="a6ce3cb97560072c40f5caeaba85f756a" args="(const void *k1, const void *k2)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int lh_ptr_equal           </td>
+          <td class="memname">int lh_ptr_equal </td>
           <td>(</td>
           <td class="paramtype">const void *&nbsp;</td>
           <td class="paramname"> <em>k1</em>, </td>
@@ -409,36 +395,33 @@ Convenience function to create a new linkhash table with ptr keys. <dl compact><
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="2e560f0d3e5a20f6b0bfa4049737db23"></a><!-- doxytag: member="linkhash.h::lh_ptr_hash" ref="2e560f0d3e5a20f6b0bfa4049737db23" args="(const void *k)" -->
+</div>
+<a class="anchor" id="a2e560f0d3e5a20f6b0bfa4049737db23"></a><!-- doxytag: member="linkhash.h::lh_ptr_hash" ref="a2e560f0d3e5a20f6b0bfa4049737db23" args="(const void *k)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">unsigned long lh_ptr_hash           </td>
+          <td class="memname">unsigned long lh_ptr_hash </td>
           <td>(</td>
           <td class="paramtype">const void *&nbsp;</td>
-          <td class="paramname"> <em>k</em>          </td>
+          <td class="paramname"> <em>k</em></td>
           <td>&nbsp;)&nbsp;</td>
           <td></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
+<p>Pre-defined hash and equality functions </p>
 
-<p>
-Pre-defined hash and equality functions 
 </div>
-</div><p>
-<a class="anchor" name="2fed2c78f70d229edb2d00775ffe593c"></a><!-- doxytag: member="linkhash.h::lh_table_delete" ref="2fed2c78f70d229edb2d00775ffe593c" args="(struct lh_table *t, const void *k)" -->
+</div>
+<a class="anchor" id="a2fed2c78f70d229edb2d00775ffe593c"></a><!-- doxytag: member="linkhash.h::lh_table_delete" ref="a2fed2c78f70d229edb2d00775ffe593c" args="(struct lh_table *t, const void *k)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int lh_table_delete           </td>
+          <td class="memname">int lh_table_delete </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td>
           <td class="paramname"> <em>t</em>, </td>
@@ -457,25 +440,26 @@ Pre-defined hash and equality functions
       </table>
 </div>
 <div class="memdoc">
-
-<p>
-Delete a record from the table. If a callback free function is provided then it is called for the for the item being deleted. <dl compact><dt><b>Parameters:</b></dt><dd>
+<p>Delete a record from the table. If a callback free function is provided then it is called for the for the item being deleted. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>the table to delete from. </td></tr>
     <tr><td valign="top"></td><td valign="top"><em>k</em>&nbsp;</td><td>a pointer to the key to delete. </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if the item was deleted. <p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>0 if the item was deleted. </dd>
+<dd>
 -1 if it was not found. </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="e5885a71c3457190fb1dc2d6e20dde3b"></a><!-- doxytag: member="linkhash.h::lh_table_delete_entry" ref="e5885a71c3457190fb1dc2d6e20dde3b" args="(struct lh_table *t, struct lh_entry *e)" -->
+</div>
+<a class="anchor" id="ae5885a71c3457190fb1dc2d6e20dde3b"></a><!-- doxytag: member="linkhash.h::lh_table_delete_entry" ref="ae5885a71c3457190fb1dc2d6e20dde3b" args="(struct lh_table *t, struct lh_entry *e)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int lh_table_delete_entry           </td>
+          <td class="memname">int lh_table_delete_entry </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td>
           <td class="paramname"> <em>t</em>, </td>
@@ -494,50 +478,51 @@ Delete a record from the table. If a callback free function is provided then it
       </table>
 </div>
 <div class="memdoc">
-
-<p>
-Delete a record from the table. If a callback free function is provided then it is called for the for the item being deleted. <dl compact><dt><b>Parameters:</b></dt><dd>
+<p>Delete a record from the table. If a callback free function is provided then it is called for the for the item being deleted. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>the table to delete from. </td></tr>
     <tr><td valign="top"></td><td valign="top"><em>e</em>&nbsp;</td><td>a pointer to the entry to delete. </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if the item was deleted. <p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>0 if the item was deleted. </dd>
+<dd>
 -1 if it was not found. </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="81653acf740cf8c9fe672e6cd16df0cf"></a><!-- doxytag: member="linkhash.h::lh_table_free" ref="81653acf740cf8c9fe672e6cd16df0cf" args="(struct lh_table *t)" -->
+</div>
+<a class="anchor" id="a81653acf740cf8c9fe672e6cd16df0cf"></a><!-- doxytag: member="linkhash.h::lh_table_free" ref="a81653acf740cf8c9fe672e6cd16df0cf" args="(struct lh_table *t)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void lh_table_free           </td>
+          <td class="memname">void lh_table_free </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td>
-          <td class="paramname"> <em>t</em>          </td>
+          <td class="paramname"> <em>t</em></td>
           <td>&nbsp;)&nbsp;</td>
           <td></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
-
-<p>
-Free a linkhash table. If a callback free function is provided then it is called for all entries in the table. <dl compact><dt><b>Parameters:</b></dt><dd>
+<p>Free a linkhash table. If a callback free function is provided then it is called for all entries in the table. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>table to free. </td></tr>
   </table>
+  </dd>
 </dl>
 
 </div>
-</div><p>
-<a class="anchor" name="22b897763cc34a98c21c7fe82d151004"></a><!-- doxytag: member="linkhash.h::lh_table_insert" ref="22b897763cc34a98c21c7fe82d151004" args="(struct lh_table *t, void *k, const void *v)" -->
+</div>
+<a class="anchor" id="a22b897763cc34a98c21c7fe82d151004"></a><!-- doxytag: member="linkhash.h::lh_table_insert" ref="a22b897763cc34a98c21c7fe82d151004" args="(struct lh_table *t, void *k, const void *v)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int lh_table_insert           </td>
+          <td class="memname">int lh_table_insert </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td>
           <td class="paramname"> <em>t</em>, </td>
@@ -562,24 +547,24 @@ Free a linkhash table. If a callback free function is provided then it is called
       </table>
 </div>
 <div class="memdoc">
-
-<p>
-Insert a record into the table. <dl compact><dt><b>Parameters:</b></dt><dd>
+<p>Insert a record into the table. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>the table to insert into. </td></tr>
     <tr><td valign="top"></td><td valign="top"><em>k</em>&nbsp;</td><td>a pointer to the key to insert. </td></tr>
     <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>a pointer to the value to insert. </td></tr>
   </table>
+  </dd>
 </dl>
 
 </div>
-</div><p>
-<a class="anchor" name="49c27f18a174eaf126d1b7953df13cb1"></a><!-- doxytag: member="linkhash.h::lh_table_lookup" ref="49c27f18a174eaf126d1b7953df13cb1" args="(struct lh_table *t, const void *k)" -->
+</div>
+<a class="anchor" id="a49c27f18a174eaf126d1b7953df13cb1"></a><!-- doxytag: member="linkhash.h::lh_table_lookup" ref="a49c27f18a174eaf126d1b7953df13cb1" args="(struct lh_table *t, const void *k)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">const void* lh_table_lookup           </td>
+          <td class="memname">const void* lh_table_lookup </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td>
           <td class="paramname"> <em>t</em>, </td>
@@ -598,24 +583,25 @@ Insert a record into the table. <dl compact><dt><b>Parameters:</b></dt><dd>
       </table>
 </div>
 <div class="memdoc">
-
-<p>
-Lookup a record into the table <dl compact><dt><b>Parameters:</b></dt><dd>
+<p>Lookup a record into the table </p>
+<dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>the table to lookup </td></tr>
     <tr><td valign="top"></td><td valign="top"><em>k</em>&nbsp;</td><td>a pointer to the key to lookup </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>a pointer to the found value or NULL if it does not exist. </dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>a pointer to the found value or NULL if it does not exist. </dd></dl>
+<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000002">Deprecated:</a></b></dt><dd>Use lh_table_lookup_ex instead. </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="d3b6ca2d967a6c3021ee6c39e014a918"></a><!-- doxytag: member="linkhash.h::lh_table_lookup_entry" ref="d3b6ca2d967a6c3021ee6c39e014a918" args="(struct lh_table *t, const void *k)" -->
+</div>
+<a class="anchor" id="ad3b6ca2d967a6c3021ee6c39e014a918"></a><!-- doxytag: member="linkhash.h::lh_table_lookup_entry" ref="ad3b6ca2d967a6c3021ee6c39e014a918" args="(struct lh_table *t, const void *k)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structlh__entry.html">lh_entry</a>* lh_table_lookup_entry           </td>
+          <td class="memname">struct <a class="el" href="structlh__entry.html">lh_entry</a>* lh_table_lookup_entry </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td>
           <td class="paramname"> <em>t</em>, </td>
@@ -634,24 +620,67 @@ Lookup a record into the table <dl compact><dt><b>Parameters:</b></dt><dd>
       </table>
 </div>
 <div class="memdoc">
+<p>Lookup a record into the table. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>the table to lookup </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>k</em>&nbsp;</td><td>a pointer to the key to lookup </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>a pointer to the record structure of the value or NULL if it does not exist. </dd></dl>
 
-<p>
-Lookup a record into the table. <dl compact><dt><b>Parameters:</b></dt><dd>
+</div>
+</div>
+<a class="anchor" id="a81c270bb0dd9d5c8a3e7ae20bc4d67f3"></a><!-- doxytag: member="linkhash.h::lh_table_lookup_ex" ref="a81c270bb0dd9d5c8a3e7ae20bc4d67f3" args="(struct lh_table *t, const void *k, void **v)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="json__object_8h.html#a81f02022906fafc71eb9197049f07f73">json_bool</a> lh_table_lookup_ex </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td>
+          <td class="paramname"> <em>t</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const void *&nbsp;</td>
+          <td class="paramname"> <em>k</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void **&nbsp;</td>
+          <td class="paramname"> <em>v</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Lookup a record in the table </p>
+<dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>the table to lookup </td></tr>
     <tr><td valign="top"></td><td valign="top"><em>k</em>&nbsp;</td><td>a pointer to the key to lookup </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>a pointer to a where to store the found value (set to NULL if it doesn't exist). </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>a pointer to the record structure of the value or NULL if it does not exist. </dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>whether or not the key was found </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="c3ba464ac43c083397b1f1d34f2ddf55"></a><!-- doxytag: member="linkhash.h::lh_table_new" ref="c3ba464ac43c083397b1f1d34f2ddf55" args="(int size, const char *name, lh_entry_free_fn *free_fn, lh_hash_fn *hash_fn, lh_equal_fn *equal_fn)" -->
+</div>
+<a class="anchor" id="ac3ba464ac43c083397b1f1d34f2ddf55"></a><!-- doxytag: member="linkhash.h::lh_table_new" ref="ac3ba464ac43c083397b1f1d34f2ddf55" args="(int size, const char *name, lh_entry_free_fn *free_fn, lh_hash_fn *hash_fn, lh_equal_fn *equal_fn)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structlh__table.html">lh_table</a>* lh_table_new           </td>
+          <td class="memname">struct <a class="el" href="structlh__table.html">lh_table</a>* lh_table_new </td>
           <td>(</td>
           <td class="paramtype">int&nbsp;</td>
           <td class="paramname"> <em>size</em>, </td>
@@ -665,19 +694,19 @@ Lookup a record into the table. <dl compact><dt><b>Parameters:</b></dt><dd>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype"><a class="el" href="linkhash_8h.html#671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *&nbsp;</td>
+          <td class="paramtype"><a class="el" href="linkhash_8h.html#a671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *&nbsp;</td>
           <td class="paramname"> <em>free_fn</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype"><a class="el" href="linkhash_8h.html#38bae27995dcfb6ee3fb109a9be229b2">lh_hash_fn</a> *&nbsp;</td>
+          <td class="paramtype"><a class="el" href="linkhash_8h.html#a38bae27995dcfb6ee3fb109a9be229b2">lh_hash_fn</a> *&nbsp;</td>
           <td class="paramname"> <em>hash_fn</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype"><a class="el" href="linkhash_8h.html#91fd85fc81b0c7c83c62f00e84729091">lh_equal_fn</a> *&nbsp;</td>
+          <td class="paramtype"><a class="el" href="linkhash_8h.html#a91fd85fc81b0c7c83c62f00e84729091">lh_equal_fn</a> *&nbsp;</td>
           <td class="paramname"> <em>equal_fn</em></td><td>&nbsp;</td>
         </tr>
         <tr>
@@ -688,9 +717,8 @@ Lookup a record into the table. <dl compact><dt><b>Parameters:</b></dt><dd>
       </table>
 </div>
 <div class="memdoc">
-
-<p>
-Create a new linkhash table. <dl compact><dt><b>Parameters:</b></dt><dd>
+<p>Create a new linkhash table. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>initial table size. The table is automatically resized although this incurs a performance penalty. </td></tr>
     <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>the table name. </td></tr>
@@ -698,17 +726,18 @@ Create a new linkhash table. <dl compact><dt><b>Parameters:</b></dt><dd>
     <tr><td valign="top"></td><td valign="top"><em>hash_fn</em>&nbsp;</td><td>function used to hash keys. 2 standard ones are defined: lh_ptr_hash and lh_char_hash for hashing pointer values and C strings respectively. </td></tr>
     <tr><td valign="top"></td><td valign="top"><em>equal_fn</em>&nbsp;</td><td>comparison function to compare keys. 2 standard ones defined: lh_ptr_hash and lh_char_hash for comparing pointer values and C strings respectively. </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>a pointer onto the linkhash table. </dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>a pointer onto the linkhash table. </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="5322eccf3394af7dc1ebb22af8f8c562"></a><!-- doxytag: member="linkhash.h::lh_table_resize" ref="5322eccf3394af7dc1ebb22af8f8c562" args="(struct lh_table *t, int new_size)" -->
+</div>
+<a class="anchor" id="a5322eccf3394af7dc1ebb22af8f8c562"></a><!-- doxytag: member="linkhash.h::lh_table_resize" ref="a5322eccf3394af7dc1ebb22af8f8c562" args="(struct lh_table *t, int new_size)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void lh_table_resize           </td>
+          <td class="memname">void lh_table_resize </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td>
           <td class="paramname"> <em>t</em>, </td>
@@ -728,13 +757,11 @@ Create a new linkhash table. <dl compact><dt><b>Parameters:</b></dt><dd>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
 </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by&nbsp;
 <a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>
 </html>
diff --git a/doc/html/pages.html b/doc/html/pages.html
new file mode 100644 (file)
index 0000000..49847f2
--- /dev/null
@@ -0,0 +1,31 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>json-c: Page Index</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li class="current"><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>Related Pages</h1>Here is a list of all related documentation pages:<ul>
+<li><a class="el" href="deprecated.html">Deprecated List</a>
+</li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:46 2012 for json-c by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
index d2cfae4..2cbaa70 100644 (file)
@@ -1,14 +1,18 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>json-c: printbuf.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
 <div class="navigation" id="top">
   <div class="tabs">
     <ul>
       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
       <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
       <li class="current"><a href="files.html"><span>Files</span></a></li>
     </ul>
 </div>
 <div class="contents">
 <h1>printbuf.h File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structprintbuf.html">printbuf</a></td></tr>
-
-<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="printbuf_8h.html#6f3a4dc87fab41c37e3eff42f40dc346">printbuf_memappend_fast</a>(p, bufptr, bufsize)</td></tr>
-
-<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structprintbuf.html">printbuf</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="printbuf_8h.html#3e390ebc7660a18335edd89f640fd415">printbuf_new</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="printbuf_8h.html#22f09779a19db59a83e7cb8c2ce4c75f">printbuf_memappend</a> (struct <a class="el" href="structprintbuf.html">printbuf</a> *p, const char *buf, int size)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="printbuf_8h.html#df6214db6c8ce994c7f7f1180863c8a4">sprintbuf</a> (struct <a class="el" href="structprintbuf.html">printbuf</a> *p, const char *msg,...)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="printbuf_8h.html#4393ee3dedb376af11c96fe97532292e">printbuf_reset</a> (struct <a class="el" href="structprintbuf.html">printbuf</a> *p)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="printbuf_8h.html#b525221c767ac65c58ddeea8a655a4e8">printbuf_free</a> (struct <a class="el" href="structprintbuf.html">printbuf</a> *p)</td></tr>
-
+<tr><td colspan="2"><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structprintbuf.html">printbuf</a></td></tr>
+<tr><td colspan="2"><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="printbuf_8h.html#a6f3a4dc87fab41c37e3eff42f40dc346">printbuf_memappend_fast</a>(p, bufptr, bufsize)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="printbuf_8h.html#acdd84ad88987c0166b7ba0e3f1f8f1bb">printbuf_length</a>(p)&nbsp;&nbsp;&nbsp;((p)-&gt;bpos)</td></tr>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structprintbuf.html">printbuf</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="printbuf_8h.html#a3e390ebc7660a18335edd89f640fd415">printbuf_new</a> (void)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="printbuf_8h.html#a22f09779a19db59a83e7cb8c2ce4c75f">printbuf_memappend</a> (struct <a class="el" href="structprintbuf.html">printbuf</a> *p, const char *buf, int size)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="printbuf_8h.html#ad7fc6ec4c296e85abf404244614cded5">printbuf_memset</a> (struct <a class="el" href="structprintbuf.html">printbuf</a> *pb, int offset, int charvalue, int len)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="printbuf_8h.html#adf6214db6c8ce994c7f7f1180863c8a4">sprintbuf</a> (struct <a class="el" href="structprintbuf.html">printbuf</a> *p, const char *msg,...)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="printbuf_8h.html#a4393ee3dedb376af11c96fe97532292e">printbuf_reset</a> (struct <a class="el" href="structprintbuf.html">printbuf</a> *p)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="printbuf_8h.html#ab525221c767ac65c58ddeea8a655a4e8">printbuf_free</a> (struct <a class="el" href="structprintbuf.html">printbuf</a> *p)</td></tr>
 </table>
-<hr><h2>Define Documentation</h2>
-<a class="anchor" name="6f3a4dc87fab41c37e3eff42f40dc346"></a><!-- doxytag: member="printbuf.h::printbuf_memappend_fast" ref="6f3a4dc87fab41c37e3eff42f40dc346" args="(p, bufptr, bufsize)" -->
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="acdd84ad88987c0166b7ba0e3f1f8f1bb"></a><!-- doxytag: member="printbuf.h::printbuf_length" ref="acdd84ad88987c0166b7ba0e3f1f8f1bb" args="(p)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define printbuf_length</td>
+          <td>(</td>
+          <td class="paramtype">p&nbsp;</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td>&nbsp;&nbsp;&nbsp;((p)-&gt;bpos)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a6f3a4dc87fab41c37e3eff42f40dc346"></a><!-- doxytag: member="printbuf.h::printbuf_memappend_fast" ref="a6f3a4dc87fab41c37e3eff42f40dc346" args="(p, bufptr, bufsize)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define printbuf_memappend_fast          </td>
+          <td class="memname">#define printbuf_memappend_fast</td>
           <td>(</td>
-          <td class="paramtype">p,         <tr>
+          <td class="paramtype">p, </td>
+        </tr>
+        <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">bufptr,         <tr>
+          <td class="paramtype">bufptr, </td>
+        </tr>
+        <tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype">bufsize&nbsp;</td>
-          <td class="paramname">          </td>
+          <td class="paramname"></td>
           <td>&nbsp;)&nbsp;</td>
           <td></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
-
-<p>
 <b>Value:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {                                                         \
   <span class="keywordflow">if</span> ((p-&gt;size - p-&gt;bpos) &gt; bufsize) {                       \
     memcpy(p-&gt;buf + p-&gt;bpos, (bufptr), bufsize);             \
     p-&gt;bpos += bufsize;                                      \
-    p-&gt;buf[p-&gt;bpos]= <span class="charliteral">'\0'</span>;                                   \
-  } <span class="keywordflow">else</span> {  <a class="code" href="printbuf_8h.html#22f09779a19db59a83e7cb8c2ce4c75f">printbuf_memappend</a>(p, (bufptr), bufsize); }      \
+    p-&gt;buf[p-&gt;bpos]= <span class="charliteral">&#39;\0&#39;</span>;                                   \
+  } <span class="keywordflow">else</span> {  <a class="code" href="printbuf_8h.html#a22f09779a19db59a83e7cb8c2ce4c75f">printbuf_memappend</a>(p, (bufptr), bufsize); }      \
 } <span class="keywordflow">while</span> (0)
 </pre></div>
 </div>
-</div><p>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="b525221c767ac65c58ddeea8a655a4e8"></a><!-- doxytag: member="printbuf.h::printbuf_free" ref="b525221c767ac65c58ddeea8a655a4e8" args="(struct printbuf *p)" -->
+</div>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="ab525221c767ac65c58ddeea8a655a4e8"></a><!-- doxytag: member="printbuf.h::printbuf_free" ref="ab525221c767ac65c58ddeea8a655a4e8" args="(struct printbuf *p)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void printbuf_free           </td>
+          <td class="memname">void printbuf_free </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structprintbuf.html">printbuf</a> *&nbsp;</td>
-          <td class="paramname"> <em>p</em>          </td>
+          <td class="paramname"> <em>p</em></td>
           <td>&nbsp;)&nbsp;</td>
           <td></td>
         </tr>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="22f09779a19db59a83e7cb8c2ce4c75f"></a><!-- doxytag: member="printbuf.h::printbuf_memappend" ref="22f09779a19db59a83e7cb8c2ce4c75f" args="(struct printbuf *p, const char *buf, int size)" -->
+</div>
+<a class="anchor" id="a22f09779a19db59a83e7cb8c2ce4c75f"></a><!-- doxytag: member="printbuf.h::printbuf_memappend" ref="a22f09779a19db59a83e7cb8c2ce4c75f" args="(struct printbuf *p, const char *buf, int size)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int printbuf_memappend           </td>
+          <td class="memname">int printbuf_memappend </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structprintbuf.html">printbuf</a> *&nbsp;</td>
           <td class="paramname"> <em>p</em>, </td>
 </div>
 <div class="memdoc">
 
-<p>
+</div>
+</div>
+<a class="anchor" id="ad7fc6ec4c296e85abf404244614cded5"></a><!-- doxytag: member="printbuf.h::printbuf_memset" ref="ad7fc6ec4c296e85abf404244614cded5" args="(struct printbuf *pb, int offset, int charvalue, int len)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int printbuf_memset </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structprintbuf.html">printbuf</a> *&nbsp;</td>
+          <td class="paramname"> <em>pb</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>offset</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>charvalue</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Set len bytes of the buffer to charvalue, starting at offset offset. Similar to calling memset(x, charvalue, len);</p>
+<p>The memory allocated for the buffer is extended as necessary.</p>
+<p>If offset is -1, this starts at the end of the current data in the buffer. </p>
 
 </div>
-</div><p>
-<a class="anchor" name="3e390ebc7660a18335edd89f640fd415"></a><!-- doxytag: member="printbuf.h::printbuf_new" ref="3e390ebc7660a18335edd89f640fd415" args="(void)" -->
+</div>
+<a class="anchor" id="a3e390ebc7660a18335edd89f640fd415"></a><!-- doxytag: member="printbuf.h::printbuf_new" ref="a3e390ebc7660a18335edd89f640fd415" args="(void)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structprintbuf.html">printbuf</a>* printbuf_new           </td>
+          <td class="memname">struct <a class="el" href="structprintbuf.html">printbuf</a>* printbuf_new </td>
           <td>(</td>
           <td class="paramtype">void&nbsp;</td>
-          <td class="paramname">          </td>
+          <td class="paramname"></td>
           <td>&nbsp;)&nbsp;</td>
           <td><code> [read]</code></td>
         </tr>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="4393ee3dedb376af11c96fe97532292e"></a><!-- doxytag: member="printbuf.h::printbuf_reset" ref="4393ee3dedb376af11c96fe97532292e" args="(struct printbuf *p)" -->
+</div>
+<a class="anchor" id="a4393ee3dedb376af11c96fe97532292e"></a><!-- doxytag: member="printbuf.h::printbuf_reset" ref="a4393ee3dedb376af11c96fe97532292e" args="(struct printbuf *p)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void printbuf_reset           </td>
+          <td class="memname">void printbuf_reset </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structprintbuf.html">printbuf</a> *&nbsp;</td>
-          <td class="paramname"> <em>p</em>          </td>
+          <td class="paramname"> <em>p</em></td>
           <td>&nbsp;)&nbsp;</td>
           <td></td>
         </tr>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="df6214db6c8ce994c7f7f1180863c8a4"></a><!-- doxytag: member="printbuf.h::sprintbuf" ref="df6214db6c8ce994c7f7f1180863c8a4" args="(struct printbuf *p, const char *msg,...)" -->
+</div>
+<a class="anchor" id="adf6214db6c8ce994c7f7f1180863c8a4"></a><!-- doxytag: member="printbuf.h::sprintbuf" ref="adf6214db6c8ce994c7f7f1180863c8a4" args="(struct printbuf *p, const char *msg,...)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int sprintbuf           </td>
+          <td class="memname">int sprintbuf </td>
           <td>(</td>
           <td class="paramtype">struct <a class="el" href="structprintbuf.html">printbuf</a> *&nbsp;</td>
           <td class="paramname"> <em>p</em>, </td>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
 </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by&nbsp;
 <a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>
 </html>
index 85b8c01..ba2aa57 100644 (file)
@@ -1,14 +1,18 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>json-c: array_list Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
 <div class="navigation" id="top">
   <div class="tabs">
     <ul>
       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
       <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
       <li><a href="files.html"><span>Files</span></a></li>
     </ul>
 </div>
 <div class="contents">
 <h1>array_list Struct Reference</h1><!-- doxytag: class="array_list" --><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void **&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarray__list.html#7ba65feda2b156148c08667cf155b657">array</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarray__list.html#442fcfde196a3cc95a647f0708de814d">length</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarray__list.html#ba48a197d3c8f1d56682da23fe883d0a">size</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="arraylist_8h.html#ad83e4ed3c8ea274e6f18459276d774b">array_list_free_fn</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarray__list.html#b7989cdde357e5c7819c562c7680ab74">free_fn</a></td></tr>
-
+<tr><td colspan="2"><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void **&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarray__list.html#a7ba65feda2b156148c08667cf155b657">array</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarray__list.html#a442fcfde196a3cc95a647f0708de814d">length</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarray__list.html#aba48a197d3c8f1d56682da23fe883d0a">size</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="arraylist_8h.html#aad83e4ed3c8ea274e6f18459276d774b">array_list_free_fn</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarray__list.html#ab7989cdde357e5c7819c562c7680ab74">free_fn</a></td></tr>
 </table>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="7ba65feda2b156148c08667cf155b657"></a><!-- doxytag: member="array_list::array" ref="7ba65feda2b156148c08667cf155b657" args="" -->
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="a7ba65feda2b156148c08667cf155b657"></a><!-- doxytag: member="array_list::array" ref="a7ba65feda2b156148c08667cf155b657" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void** <a class="el" href="structarray__list.html#7ba65feda2b156148c08667cf155b657">array_list::array</a>          </td>
+          <td class="memname">void** <a class="el" href="structarray__list.html#a7ba65feda2b156148c08667cf155b657">array_list::array</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="b7989cdde357e5c7819c562c7680ab74"></a><!-- doxytag: member="array_list::free_fn" ref="b7989cdde357e5c7819c562c7680ab74" args="" -->
+</div>
+<a class="anchor" id="ab7989cdde357e5c7819c562c7680ab74"></a><!-- doxytag: member="array_list::free_fn" ref="ab7989cdde357e5c7819c562c7680ab74" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="arraylist_8h.html#ad83e4ed3c8ea274e6f18459276d774b">array_list_free_fn</a>* <a class="el" href="structarray__list.html#b7989cdde357e5c7819c562c7680ab74">array_list::free_fn</a>          </td>
+          <td class="memname"><a class="el" href="arraylist_8h.html#aad83e4ed3c8ea274e6f18459276d774b">array_list_free_fn</a>* <a class="el" href="structarray__list.html#ab7989cdde357e5c7819c562c7680ab74">array_list::free_fn</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="442fcfde196a3cc95a647f0708de814d"></a><!-- doxytag: member="array_list::length" ref="442fcfde196a3cc95a647f0708de814d" args="" -->
+</div>
+<a class="anchor" id="a442fcfde196a3cc95a647f0708de814d"></a><!-- doxytag: member="array_list::length" ref="a442fcfde196a3cc95a647f0708de814d" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structarray__list.html#442fcfde196a3cc95a647f0708de814d">array_list::length</a>          </td>
+          <td class="memname">int <a class="el" href="structarray__list.html#a442fcfde196a3cc95a647f0708de814d">array_list::length</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="ba48a197d3c8f1d56682da23fe883d0a"></a><!-- doxytag: member="array_list::size" ref="ba48a197d3c8f1d56682da23fe883d0a" args="" -->
+</div>
+<a class="anchor" id="aba48a197d3c8f1d56682da23fe883d0a"></a><!-- doxytag: member="array_list::size" ref="aba48a197d3c8f1d56682da23fe883d0a" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structarray__list.html#ba48a197d3c8f1d56682da23fe883d0a">array_list::size</a>          </td>
+          <td class="memname">int <a class="el" href="structarray__list.html#aba48a197d3c8f1d56682da23fe883d0a">array_list::size</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="arraylist_8h.html">arraylist.h</a></ul>
 </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="arraylist_8h.html">arraylist.h</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by&nbsp;
 <a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>
 </html>
index 966efb9..c8f389c 100644 (file)
@@ -1,14 +1,18 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>json-c: json_object Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
 <div class="navigation" id="top">
   <div class="tabs">
     <ul>
       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
       <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
       <li><a href="files.html"><span>Files</span></a></li>
     </ul>
 </div>
 <div class="contents">
 <h1>json_object Struct Reference</h1><!-- doxytag: class="json_object" --><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">union &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="unionjson__object_1_1data.html">data</a></td></tr>
-
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum <a class="el" href="json__object_8h.html#c75c61993722a9b8aaa44704072ec06c">json_type</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__object.html#28307a4a3fe6cefe27e28fec56b76b3e">o_type</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="json__object__private_8h.html#c96402e72ae5c12d690ec95ed441ec70">json_object_delete_fn</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__object.html#a3a238f4b671c21fa0578fc37a126c2e">_delete</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="json__object__private_8h.html#98a52f3a465575f19a4f1b7556959953">json_object_to_json_string_fn</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__object.html#077a02daac4653f91584dd7f47c3d632">_to_json_string</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__object.html#ca9b93573ba6bb8cf66d87c170a575b2">_ref_count</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structprintbuf.html">printbuf</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__object.html#fdcaa9e24bce7c86c33cb6f6ae65cb56">_pb</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">union <a class="el" href="unionjson__object_1_1data.html">json_object::data</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__object.html#33aff83ffea02b934235c4821cca8cf0">o</a></td></tr>
-
+<tr><td colspan="2"><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">union &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="unionjson__object_1_1data.html">data</a></td></tr>
+<tr><td colspan="2"><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum <a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06c">json_type</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__object.html#a28307a4a3fe6cefe27e28fec56b76b3e">o_type</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="json__object__private_8h.html#ac96402e72ae5c12d690ec95ed441ec70">json_object_delete_fn</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__object.html#aa3a238f4b671c21fa0578fc37a126c2e">_delete</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="json__object__private_8h.html#a778fe57040398137cf9ccf9f2dd53282">json_object_to_json_string_fn</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__object.html#a077a02daac4653f91584dd7f47c3d632">_to_json_string</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__object.html#aca9b93573ba6bb8cf66d87c170a575b2">_ref_count</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structprintbuf.html">printbuf</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__object.html#afdcaa9e24bce7c86c33cb6f6ae65cb56">_pb</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">union <a class="el" href="unionjson__object_1_1data.html">json_object::data</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__object.html#a33aff83ffea02b934235c4821cca8cf0">o</a></td></tr>
 </table>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="a3a238f4b671c21fa0578fc37a126c2e"></a><!-- doxytag: member="json_object::_delete" ref="a3a238f4b671c21fa0578fc37a126c2e" args="" -->
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="aa3a238f4b671c21fa0578fc37a126c2e"></a><!-- doxytag: member="json_object::_delete" ref="aa3a238f4b671c21fa0578fc37a126c2e" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="json__object__private_8h.html#c96402e72ae5c12d690ec95ed441ec70">json_object_delete_fn</a>* <a class="el" href="structjson__object.html#a3a238f4b671c21fa0578fc37a126c2e">json_object::_delete</a>          </td>
+          <td class="memname"><a class="el" href="json__object__private_8h.html#ac96402e72ae5c12d690ec95ed441ec70">json_object_delete_fn</a>* <a class="el" href="structjson__object.html#aa3a238f4b671c21fa0578fc37a126c2e">json_object::_delete</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="fdcaa9e24bce7c86c33cb6f6ae65cb56"></a><!-- doxytag: member="json_object::_pb" ref="fdcaa9e24bce7c86c33cb6f6ae65cb56" args="" -->
+</div>
+<a class="anchor" id="afdcaa9e24bce7c86c33cb6f6ae65cb56"></a><!-- doxytag: member="json_object::_pb" ref="afdcaa9e24bce7c86c33cb6f6ae65cb56" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structprintbuf.html">printbuf</a>* <a class="el" href="structjson__object.html#fdcaa9e24bce7c86c33cb6f6ae65cb56">json_object::_pb</a><code> [read]</code>          </td>
+          <td class="memname">struct <a class="el" href="structprintbuf.html">printbuf</a>* <a class="el" href="structjson__object.html#afdcaa9e24bce7c86c33cb6f6ae65cb56">json_object::_pb</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="ca9b93573ba6bb8cf66d87c170a575b2"></a><!-- doxytag: member="json_object::_ref_count" ref="ca9b93573ba6bb8cf66d87c170a575b2" args="" -->
+</div>
+<a class="anchor" id="aca9b93573ba6bb8cf66d87c170a575b2"></a><!-- doxytag: member="json_object::_ref_count" ref="aca9b93573ba6bb8cf66d87c170a575b2" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structjson__object.html#ca9b93573ba6bb8cf66d87c170a575b2">json_object::_ref_count</a>          </td>
+          <td class="memname">int <a class="el" href="structjson__object.html#aca9b93573ba6bb8cf66d87c170a575b2">json_object::_ref_count</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="077a02daac4653f91584dd7f47c3d632"></a><!-- doxytag: member="json_object::_to_json_string" ref="077a02daac4653f91584dd7f47c3d632" args="" -->
+</div>
+<a class="anchor" id="a077a02daac4653f91584dd7f47c3d632"></a><!-- doxytag: member="json_object::_to_json_string" ref="a077a02daac4653f91584dd7f47c3d632" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="json__object__private_8h.html#98a52f3a465575f19a4f1b7556959953">json_object_to_json_string_fn</a>* <a class="el" href="structjson__object.html#077a02daac4653f91584dd7f47c3d632">json_object::_to_json_string</a>          </td>
+          <td class="memname"><a class="el" href="json__object__private_8h.html#a778fe57040398137cf9ccf9f2dd53282">json_object_to_json_string_fn</a>* <a class="el" href="structjson__object.html#a077a02daac4653f91584dd7f47c3d632">json_object::_to_json_string</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="33aff83ffea02b934235c4821cca8cf0"></a><!-- doxytag: member="json_object::o" ref="33aff83ffea02b934235c4821cca8cf0" args="" -->
+</div>
+<a class="anchor" id="a33aff83ffea02b934235c4821cca8cf0"></a><!-- doxytag: member="json_object::o" ref="a33aff83ffea02b934235c4821cca8cf0" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">union <a class="el" href="unionjson__object_1_1data.html">json_object::data</a>  <a class="el" href="structjson__object.html#33aff83ffea02b934235c4821cca8cf0">json_object::o</a>          </td>
+          <td class="memname">union <a class="el" href="unionjson__object_1_1data.html">json_object::data</a>  <a class="el" href="structjson__object.html#a33aff83ffea02b934235c4821cca8cf0">json_object::o</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="28307a4a3fe6cefe27e28fec56b76b3e"></a><!-- doxytag: member="json_object::o_type" ref="28307a4a3fe6cefe27e28fec56b76b3e" args="" -->
+</div>
+<a class="anchor" id="a28307a4a3fe6cefe27e28fec56b76b3e"></a><!-- doxytag: member="json_object::o_type" ref="a28307a4a3fe6cefe27e28fec56b76b3e" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">enum <a class="el" href="json__object_8h.html#c75c61993722a9b8aaa44704072ec06c">json_type</a> <a class="el" href="structjson__object.html#28307a4a3fe6cefe27e28fec56b76b3e">json_object::o_type</a>          </td>
+          <td class="memname">enum <a class="el" href="json__object_8h.html#ac75c61993722a9b8aaa44704072ec06c">json_type</a> <a class="el" href="structjson__object.html#a28307a4a3fe6cefe27e28fec56b76b3e">json_object::o_type</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="json__object__private_8h.html">json_object_private.h</a></ul>
 </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="json__object__private_8h.html">json_object_private.h</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by&nbsp;
 <a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>
 </html>
index 40e230c..098b6cd 100644 (file)
@@ -1,14 +1,18 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>json-c: json_object_iter Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
 <div class="navigation" id="top">
   <div class="tabs">
     <ul>
       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
       <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
       <li><a href="files.html"><span>Files</span></a></li>
     </ul>
 </div>
 <div class="contents">
 <h1>json_object_iter Struct Reference</h1><!-- doxytag: class="json_object_iter" --><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__object__iter.html#0b76228b3a039075e9d84f88fa72ff53">key</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__object__iter.html#aae14a8d17aacddacb0a57234e0a4491">val</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlh__entry.html">lh_entry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__object__iter.html#64e326f050826c644c02ed5bcd214faa">entry</a></td></tr>
-
+<tr><td colspan="2"><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__object__iter.html#a0b76228b3a039075e9d84f88fa72ff53">key</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__object__iter.html#aaae14a8d17aacddacb0a57234e0a4491">val</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structlh__entry.html">lh_entry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__object__iter.html#a64e326f050826c644c02ed5bcd214faa">entry</a></td></tr>
 </table>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="64e326f050826c644c02ed5bcd214faa"></a><!-- doxytag: member="json_object_iter::entry" ref="64e326f050826c644c02ed5bcd214faa" args="" -->
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="a64e326f050826c644c02ed5bcd214faa"></a><!-- doxytag: member="json_object_iter::entry" ref="a64e326f050826c644c02ed5bcd214faa" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structlh__entry.html">lh_entry</a>* <a class="el" href="structjson__object__iter.html#64e326f050826c644c02ed5bcd214faa">json_object_iter::entry</a><code> [read]</code>          </td>
+          <td class="memname">struct <a class="el" href="structlh__entry.html">lh_entry</a>* <a class="el" href="structjson__object__iter.html#a64e326f050826c644c02ed5bcd214faa">json_object_iter::entry</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="0b76228b3a039075e9d84f88fa72ff53"></a><!-- doxytag: member="json_object_iter::key" ref="0b76228b3a039075e9d84f88fa72ff53" args="" -->
+</div>
+<a class="anchor" id="a0b76228b3a039075e9d84f88fa72ff53"></a><!-- doxytag: member="json_object_iter::key" ref="a0b76228b3a039075e9d84f88fa72ff53" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">char* <a class="el" href="structjson__object__iter.html#0b76228b3a039075e9d84f88fa72ff53">json_object_iter::key</a>          </td>
+          <td class="memname">char* <a class="el" href="structjson__object__iter.html#a0b76228b3a039075e9d84f88fa72ff53">json_object_iter::key</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="aae14a8d17aacddacb0a57234e0a4491"></a><!-- doxytag: member="json_object_iter::val" ref="aae14a8d17aacddacb0a57234e0a4491" args="" -->
+</div>
+<a class="anchor" id="aaae14a8d17aacddacb0a57234e0a4491"></a><!-- doxytag: member="json_object_iter::val" ref="aaae14a8d17aacddacb0a57234e0a4491" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* <a class="el" href="structjson__object__iter.html#aae14a8d17aacddacb0a57234e0a4491">json_object_iter::val</a><code> [read]</code>          </td>
+          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* <a class="el" href="structjson__object__iter.html#aaae14a8d17aacddacb0a57234e0a4491">json_object_iter::val</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="json__object__private_8h.html">json_object_private.h</a></ul>
 </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="json__object_8h.html">json_object.h</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by&nbsp;
 <a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>
 </html>
diff --git a/doc/html/structjson__object__iterator.html b/doc/html/structjson__object__iterator.html
new file mode 100644 (file)
index 0000000..786f3ec
--- /dev/null
@@ -0,0 +1,56 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>json-c: json_object_iterator Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>json_object_iterator Struct Reference</h1><!-- doxytag: class="json_object_iterator" --><table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__object__iterator.html#a69c61c14f5a36b1dc2217e49cd987f47">opaque_</a></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>The opaque iterator that references a name/value pair within a JSON Object instance or the "end" iterator value. </p>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="a69c61c14f5a36b1dc2217e49cd987f47"></a><!-- doxytag: member="json_object_iterator::opaque_" ref="a69c61c14f5a36b1dc2217e49cd987f47" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const void* <a class="el" href="structjson__object__iterator.html#a69c61c14f5a36b1dc2217e49cd987f47">json_object_iterator::opaque_</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="json__object__iterator_8h.html">json_object_iterator.h</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
index a9af431..7c89951 100644 (file)
@@ -1,14 +1,18 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>json-c: json_tokener Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
 <div class="navigation" id="top">
   <div class="tabs">
     <ul>
       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
       <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
       <li><a href="files.html"><span>Files</span></a></li>
     </ul>
 </div>
 <div class="contents">
 <h1>json_tokener Struct Reference</h1><!-- doxytag: class="json_tokener" --><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__tokener.html#9772e2170322a19d8da6ce5d7dc46895">str</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structprintbuf.html">printbuf</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__tokener.html#1cdc7f85d7bde95f81bb08b7e61d6684">pb</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__tokener.html#e0e5102b44cc1fc680be3e0fb5fff028">depth</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__tokener.html#d3bf0aa728ea14549d5aa6ca8dcba070">is_double</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__tokener.html#8eed213c0a37d09c1df66c8567e44471">st_pos</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__tokener.html#9daae2516fd6df23555d33ef01020a76">char_offset</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">ptrdiff_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__tokener.html#cc71f03c5d2edbcb5a036a906e8c2faf">err</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__tokener.html#32fa73e43fb760e6845231a8482eb064">ucs_char</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__tokener.html#ea488b73085ac7c5969ae7fc29e25fa0">quote_char</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structjson__tokener__srec.html">json_tokener_srec</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__tokener.html#1499f97597246a18357b874e1805a678">stack</a> [JSON_TOKENER_MAX_DEPTH]</td></tr>
-
+<tr><td colspan="2"><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__tokener.html#a9772e2170322a19d8da6ce5d7dc46895">str</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structprintbuf.html">printbuf</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__tokener.html#a1cdc7f85d7bde95f81bb08b7e61d6684">pb</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__tokener.html#ae0e5102b44cc1fc680be3e0fb5fff028">depth</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__tokener.html#ad3bf0aa728ea14549d5aa6ca8dcba070">is_double</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__tokener.html#a8eed213c0a37d09c1df66c8567e44471">st_pos</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__tokener.html#a9daae2516fd6df23555d33ef01020a76">char_offset</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59">json_tokener_error</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__tokener.html#adef37cdc2578d8f8920db14315728cbd">err</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__tokener.html#a32fa73e43fb760e6845231a8482eb064">ucs_char</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__tokener.html#aea488b73085ac7c5969ae7fc29e25fa0">quote_char</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structjson__tokener__srec.html">json_tokener_srec</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__tokener.html#a1499f97597246a18357b874e1805a678">stack</a> [JSON_TOKENER_MAX_DEPTH]</td></tr>
 </table>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="9daae2516fd6df23555d33ef01020a76"></a><!-- doxytag: member="json_tokener::char_offset" ref="9daae2516fd6df23555d33ef01020a76" args="" -->
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="a9daae2516fd6df23555d33ef01020a76"></a><!-- doxytag: member="json_tokener::char_offset" ref="a9daae2516fd6df23555d33ef01020a76" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structjson__tokener.html#9daae2516fd6df23555d33ef01020a76">json_tokener::char_offset</a>          </td>
+          <td class="memname">int <a class="el" href="structjson__tokener.html#a9daae2516fd6df23555d33ef01020a76">json_tokener::char_offset</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="e0e5102b44cc1fc680be3e0fb5fff028"></a><!-- doxytag: member="json_tokener::depth" ref="e0e5102b44cc1fc680be3e0fb5fff028" args="" -->
+</div>
+<a class="anchor" id="ae0e5102b44cc1fc680be3e0fb5fff028"></a><!-- doxytag: member="json_tokener::depth" ref="ae0e5102b44cc1fc680be3e0fb5fff028" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structjson__tokener.html#e0e5102b44cc1fc680be3e0fb5fff028">json_tokener::depth</a>          </td>
+          <td class="memname">int <a class="el" href="structjson__tokener.html#ae0e5102b44cc1fc680be3e0fb5fff028">json_tokener::depth</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="cc71f03c5d2edbcb5a036a906e8c2faf"></a><!-- doxytag: member="json_tokener::err" ref="cc71f03c5d2edbcb5a036a906e8c2faf" args="" -->
+</div>
+<a class="anchor" id="adef37cdc2578d8f8920db14315728cbd"></a><!-- doxytag: member="json_tokener::err" ref="adef37cdc2578d8f8920db14315728cbd" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ptrdiff_t <a class="el" href="structjson__tokener.html#cc71f03c5d2edbcb5a036a906e8c2faf">json_tokener::err</a>          </td>
+          <td class="memname">enum <a class="el" href="json__tokener_8h.html#a0a31f0df8a532ef8be5c09ba40eacb59">json_tokener_error</a> <a class="el" href="structjson__tokener.html#adef37cdc2578d8f8920db14315728cbd">json_tokener::err</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="d3bf0aa728ea14549d5aa6ca8dcba070"></a><!-- doxytag: member="json_tokener::is_double" ref="d3bf0aa728ea14549d5aa6ca8dcba070" args="" -->
+</div>
+<a class="anchor" id="ad3bf0aa728ea14549d5aa6ca8dcba070"></a><!-- doxytag: member="json_tokener::is_double" ref="ad3bf0aa728ea14549d5aa6ca8dcba070" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structjson__tokener.html#d3bf0aa728ea14549d5aa6ca8dcba070">json_tokener::is_double</a>          </td>
+          <td class="memname">int <a class="el" href="structjson__tokener.html#ad3bf0aa728ea14549d5aa6ca8dcba070">json_tokener::is_double</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="1cdc7f85d7bde95f81bb08b7e61d6684"></a><!-- doxytag: member="json_tokener::pb" ref="1cdc7f85d7bde95f81bb08b7e61d6684" args="" -->
+</div>
+<a class="anchor" id="a1cdc7f85d7bde95f81bb08b7e61d6684"></a><!-- doxytag: member="json_tokener::pb" ref="a1cdc7f85d7bde95f81bb08b7e61d6684" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structprintbuf.html">printbuf</a>* <a class="el" href="structjson__tokener.html#1cdc7f85d7bde95f81bb08b7e61d6684">json_tokener::pb</a><code> [read]</code>          </td>
+          <td class="memname">struct <a class="el" href="structprintbuf.html">printbuf</a>* <a class="el" href="structjson__tokener.html#a1cdc7f85d7bde95f81bb08b7e61d6684">json_tokener::pb</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="ea488b73085ac7c5969ae7fc29e25fa0"></a><!-- doxytag: member="json_tokener::quote_char" ref="ea488b73085ac7c5969ae7fc29e25fa0" args="" -->
+</div>
+<a class="anchor" id="aea488b73085ac7c5969ae7fc29e25fa0"></a><!-- doxytag: member="json_tokener::quote_char" ref="aea488b73085ac7c5969ae7fc29e25fa0" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">char <a class="el" href="structjson__tokener.html#ea488b73085ac7c5969ae7fc29e25fa0">json_tokener::quote_char</a>          </td>
+          <td class="memname">char <a class="el" href="structjson__tokener.html#aea488b73085ac7c5969ae7fc29e25fa0">json_tokener::quote_char</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="8eed213c0a37d09c1df66c8567e44471"></a><!-- doxytag: member="json_tokener::st_pos" ref="8eed213c0a37d09c1df66c8567e44471" args="" -->
+</div>
+<a class="anchor" id="a8eed213c0a37d09c1df66c8567e44471"></a><!-- doxytag: member="json_tokener::st_pos" ref="a8eed213c0a37d09c1df66c8567e44471" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structjson__tokener.html#8eed213c0a37d09c1df66c8567e44471">json_tokener::st_pos</a>          </td>
+          <td class="memname">int <a class="el" href="structjson__tokener.html#a8eed213c0a37d09c1df66c8567e44471">json_tokener::st_pos</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="1499f97597246a18357b874e1805a678"></a><!-- doxytag: member="json_tokener::stack" ref="1499f97597246a18357b874e1805a678" args="[JSON_TOKENER_MAX_DEPTH]" -->
+</div>
+<a class="anchor" id="a1499f97597246a18357b874e1805a678"></a><!-- doxytag: member="json_tokener::stack" ref="a1499f97597246a18357b874e1805a678" args="[JSON_TOKENER_MAX_DEPTH]" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structjson__tokener__srec.html">json_tokener_srec</a> <a class="el" href="structjson__tokener.html#1499f97597246a18357b874e1805a678">json_tokener::stack</a>[JSON_TOKENER_MAX_DEPTH]<code> [read]</code>          </td>
+          <td class="memname">struct <a class="el" href="structjson__tokener__srec.html">json_tokener_srec</a> <a class="el" href="structjson__tokener.html#a1499f97597246a18357b874e1805a678">json_tokener::stack</a>[JSON_TOKENER_MAX_DEPTH]</td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="9772e2170322a19d8da6ce5d7dc46895"></a><!-- doxytag: member="json_tokener::str" ref="9772e2170322a19d8da6ce5d7dc46895" args="" -->
+</div>
+<a class="anchor" id="a9772e2170322a19d8da6ce5d7dc46895"></a><!-- doxytag: member="json_tokener::str" ref="a9772e2170322a19d8da6ce5d7dc46895" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">char* <a class="el" href="structjson__tokener.html#9772e2170322a19d8da6ce5d7dc46895">json_tokener::str</a>          </td>
+          <td class="memname">char* <a class="el" href="structjson__tokener.html#a9772e2170322a19d8da6ce5d7dc46895">json_tokener::str</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="32fa73e43fb760e6845231a8482eb064"></a><!-- doxytag: member="json_tokener::ucs_char" ref="32fa73e43fb760e6845231a8482eb064" args="" -->
+</div>
+<a class="anchor" id="a32fa73e43fb760e6845231a8482eb064"></a><!-- doxytag: member="json_tokener::ucs_char" ref="a32fa73e43fb760e6845231a8482eb064" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">unsigned int <a class="el" href="structjson__tokener.html#32fa73e43fb760e6845231a8482eb064">json_tokener::ucs_char</a>          </td>
+          <td class="memname">unsigned int <a class="el" href="structjson__tokener.html#a32fa73e43fb760e6845231a8482eb064">json_tokener::ucs_char</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="json__tokener_8h.html">json_tokener.h</a></ul>
 </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="json__tokener_8h.html">json_tokener.h</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by&nbsp;
 <a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>
 </html>
index b704452..5fada3a 100644 (file)
@@ -1,14 +1,18 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>json-c: json_tokener_srec Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
 <div class="navigation" id="top">
   <div class="tabs">
     <ul>
       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
       <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
       <li><a href="files.html"><span>Files</span></a></li>
     </ul>
 </div>
 <div class="contents">
 <h1>json_tokener_srec Struct Reference</h1><!-- doxytag: class="json_tokener_srec" --><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e2">json_tokener_state</a> state&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__tokener__srec.html#868b9912dbb1e4813a630c944f522d48">saved_state</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__tokener__srec.html#d2bb71affec1da5ba1d9952c3bf2c12a">obj</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__tokener__srec.html#466f192f920368a5a6375aeba1e2757f">current</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__tokener__srec.html#99551c172e97ac2e7a3849a50b4f51ca">obj_field_name</a></td></tr>
-
+<tr><td colspan="2"><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2">json_tokener_state</a> state&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__tokener__srec.html#a868b9912dbb1e4813a630c944f522d48">saved_state</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__tokener__srec.html#ad2bb71affec1da5ba1d9952c3bf2c12a">obj</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structjson__object.html">json_object</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__tokener__srec.html#a466f192f920368a5a6375aeba1e2757f">current</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjson__tokener__srec.html#a99551c172e97ac2e7a3849a50b4f51ca">obj_field_name</a></td></tr>
 </table>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="466f192f920368a5a6375aeba1e2757f"></a><!-- doxytag: member="json_tokener_srec::current" ref="466f192f920368a5a6375aeba1e2757f" args="" -->
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="a466f192f920368a5a6375aeba1e2757f"></a><!-- doxytag: member="json_tokener_srec::current" ref="a466f192f920368a5a6375aeba1e2757f" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* <a class="el" href="structjson__tokener__srec.html#466f192f920368a5a6375aeba1e2757f">json_tokener_srec::current</a><code> [read]</code>          </td>
+          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* <a class="el" href="structjson__tokener__srec.html#a466f192f920368a5a6375aeba1e2757f">json_tokener_srec::current</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="d2bb71affec1da5ba1d9952c3bf2c12a"></a><!-- doxytag: member="json_tokener_srec::obj" ref="d2bb71affec1da5ba1d9952c3bf2c12a" args="" -->
+</div>
+<a class="anchor" id="ad2bb71affec1da5ba1d9952c3bf2c12a"></a><!-- doxytag: member="json_tokener_srec::obj" ref="ad2bb71affec1da5ba1d9952c3bf2c12a" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* <a class="el" href="structjson__tokener__srec.html#d2bb71affec1da5ba1d9952c3bf2c12a">json_tokener_srec::obj</a><code> [read]</code>          </td>
+          <td class="memname">struct <a class="el" href="structjson__object.html">json_object</a>* <a class="el" href="structjson__tokener__srec.html#ad2bb71affec1da5ba1d9952c3bf2c12a">json_tokener_srec::obj</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="99551c172e97ac2e7a3849a50b4f51ca"></a><!-- doxytag: member="json_tokener_srec::obj_field_name" ref="99551c172e97ac2e7a3849a50b4f51ca" args="" -->
+</div>
+<a class="anchor" id="a99551c172e97ac2e7a3849a50b4f51ca"></a><!-- doxytag: member="json_tokener_srec::obj_field_name" ref="a99551c172e97ac2e7a3849a50b4f51ca" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">char* <a class="el" href="structjson__tokener__srec.html#99551c172e97ac2e7a3849a50b4f51ca">json_tokener_srec::obj_field_name</a>          </td>
+          <td class="memname">char* <a class="el" href="structjson__tokener__srec.html#a99551c172e97ac2e7a3849a50b4f51ca">json_tokener_srec::obj_field_name</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="868b9912dbb1e4813a630c944f522d48"></a><!-- doxytag: member="json_tokener_srec::saved_state" ref="868b9912dbb1e4813a630c944f522d48" args="" -->
+</div>
+<a class="anchor" id="a868b9912dbb1e4813a630c944f522d48"></a><!-- doxytag: member="json_tokener_srec::saved_state" ref="a868b9912dbb1e4813a630c944f522d48" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">enum <a class="el" href="json__tokener_8h.html#f026dec71e4548e6200eb2f902f1c4e2">json_tokener_state</a> state <a class="el" href="structjson__tokener__srec.html#868b9912dbb1e4813a630c944f522d48">json_tokener_srec::saved_state</a>          </td>
+          <td class="memname">enum <a class="el" href="json__tokener_8h.html#af026dec71e4548e6200eb2f902f1c4e2">json_tokener_state</a> state <a class="el" href="structjson__tokener__srec.html#a868b9912dbb1e4813a630c944f522d48">json_tokener_srec::saved_state</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="json__tokener_8h.html">json_tokener.h</a></ul>
 </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="json__tokener_8h.html">json_tokener.h</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by&nbsp;
 <a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>
 </html>
index 8b23c4b..6c95138 100644 (file)
@@ -1,14 +1,18 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>json-c: lh_entry Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
 <div class="navigation" id="top">
   <div class="tabs">
     <ul>
       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
       <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
       <li><a href="files.html"><span>Files</span></a></li>
     </ul>
 </div>
 <div class="contents">
 <h1>lh_entry Struct Reference</h1><!-- doxytag: class="lh_entry" --><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__entry.html#6b176b3582c9cf553af6431750f5c3b6">k</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__entry.html#1b676732ab2ad3eeaedf6ec60a6a0835">v</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlh__entry.html">lh_entry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__entry.html#7c40c46e72d9a0ba071a8d49d535bc67">next</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlh__entry.html">lh_entry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__entry.html#6fb9c3de01fb5af67d8d429921cc6a3b">prev</a></td></tr>
-
+<tr><td colspan="2"><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__entry.html#a6b176b3582c9cf553af6431750f5c3b6">k</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__entry.html#a1b676732ab2ad3eeaedf6ec60a6a0835">v</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structlh__entry.html">lh_entry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__entry.html#a7c40c46e72d9a0ba071a8d49d535bc67">next</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structlh__entry.html">lh_entry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__entry.html#a6fb9c3de01fb5af67d8d429921cc6a3b">prev</a></td></tr>
 </table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-An entry in the hash table <hr><h2>Field Documentation</h2>
-<a class="anchor" name="6b176b3582c9cf553af6431750f5c3b6"></a><!-- doxytag: member="lh_entry::k" ref="6b176b3582c9cf553af6431750f5c3b6" args="" -->
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>An entry in the hash table </p>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="a6b176b3582c9cf553af6431750f5c3b6"></a><!-- doxytag: member="lh_entry::k" ref="a6b176b3582c9cf553af6431750f5c3b6" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void* <a class="el" href="structlh__entry.html#6b176b3582c9cf553af6431750f5c3b6">lh_entry::k</a>          </td>
+          <td class="memname">void* <a class="el" href="structlh__entry.html#a6b176b3582c9cf553af6431750f5c3b6">lh_entry::k</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
+<p>The key. </p>
 
-<p>
-The key. 
 </div>
-</div><p>
-<a class="anchor" name="7c40c46e72d9a0ba071a8d49d535bc67"></a><!-- doxytag: member="lh_entry::next" ref="7c40c46e72d9a0ba071a8d49d535bc67" args="" -->
+</div>
+<a class="anchor" id="a7c40c46e72d9a0ba071a8d49d535bc67"></a><!-- doxytag: member="lh_entry::next" ref="a7c40c46e72d9a0ba071a8d49d535bc67" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structlh__entry.html">lh_entry</a>* <a class="el" href="structlh__entry.html#7c40c46e72d9a0ba071a8d49d535bc67">lh_entry::next</a><code> [read]</code>          </td>
+          <td class="memname">struct <a class="el" href="structlh__entry.html">lh_entry</a>* <a class="el" href="structlh__entry.html#a7c40c46e72d9a0ba071a8d49d535bc67">lh_entry::next</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
+<p>The next entry </p>
 
-<p>
-The next entry 
 </div>
-</div><p>
-<a class="anchor" name="6fb9c3de01fb5af67d8d429921cc6a3b"></a><!-- doxytag: member="lh_entry::prev" ref="6fb9c3de01fb5af67d8d429921cc6a3b" args="" -->
+</div>
+<a class="anchor" id="a6fb9c3de01fb5af67d8d429921cc6a3b"></a><!-- doxytag: member="lh_entry::prev" ref="a6fb9c3de01fb5af67d8d429921cc6a3b" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structlh__entry.html">lh_entry</a>* <a class="el" href="structlh__entry.html#6fb9c3de01fb5af67d8d429921cc6a3b">lh_entry::prev</a><code> [read]</code>          </td>
+          <td class="memname">struct <a class="el" href="structlh__entry.html">lh_entry</a>* <a class="el" href="structlh__entry.html#a6fb9c3de01fb5af67d8d429921cc6a3b">lh_entry::prev</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
+<p>The previous entry. </p>
 
-<p>
-The previous entry. 
 </div>
-</div><p>
-<a class="anchor" name="1b676732ab2ad3eeaedf6ec60a6a0835"></a><!-- doxytag: member="lh_entry::v" ref="1b676732ab2ad3eeaedf6ec60a6a0835" args="" -->
+</div>
+<a class="anchor" id="a1b676732ab2ad3eeaedf6ec60a6a0835"></a><!-- doxytag: member="lh_entry::v" ref="a1b676732ab2ad3eeaedf6ec60a6a0835" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">const void* <a class="el" href="structlh__entry.html#1b676732ab2ad3eeaedf6ec60a6a0835">lh_entry::v</a>          </td>
+          <td class="memname">const void* <a class="el" href="structlh__entry.html#a1b676732ab2ad3eeaedf6ec60a6a0835">lh_entry::v</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
+<p>The value. </p>
 
-<p>
-The value. 
 </div>
-</div><p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="linkhash_8h.html">linkhash.h</a></ul>
 </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="linkhash_8h.html">linkhash.h</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by&nbsp;
 <a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>
 </html>
index dd6e0de..25bb330 100644 (file)
@@ -1,14 +1,18 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>json-c: lh_table Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
 <div class="navigation" id="top">
   <div class="tabs">
     <ul>
       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
       <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
       <li><a href="files.html"><span>Files</span></a></li>
     </ul>
 </div>
 <div class="contents">
 <h1>lh_table Struct Reference</h1><!-- doxytag: class="lh_table" --><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html#e251575ec2935bcb0e0589ca8e243839">size</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html#a172ed8fe205367b54e0e2cdf9ea8c6c">count</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html#9458e41d842ce40cd37dc13458ced133">collisions</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html#b4cde49bd9ce7a07daaf99af34ddb67e">resizes</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html#fd0385c645413d26e682f725a6f52164">lookups</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html#fd64becd0d2cfbc91a4c9c9a117498b9">inserts</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html#8348bdd7e61c8d72b402f6a152013fbf">deletes</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html#ebf4001cde3746ec8025c1d87d4e6279">name</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlh__entry.html">lh_entry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html#a7d986a3b12a9fa47e349713794c30fb">head</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlh__entry.html">lh_entry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html#479895e45db2bdf9bf5d173fa4b7e277">tail</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlh__entry.html">lh_entry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html#4fd9c5aba38791b26ab0ec614a5caf8f">table</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="linkhash_8h.html#671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html#30ea5903f4f8126abd6aa489ffe14737">free_fn</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="linkhash_8h.html#38bae27995dcfb6ee3fb109a9be229b2">lh_hash_fn</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html#1488d1a4a320b1a9bb2f441859544be1">hash_fn</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="linkhash_8h.html#91fd85fc81b0c7c83c62f00e84729091">lh_equal_fn</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html#a646c287a6a46e09da6c7457c981a359">equal_fn</a></td></tr>
-
+<tr><td colspan="2"><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html#ae251575ec2935bcb0e0589ca8e243839">size</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html#aa172ed8fe205367b54e0e2cdf9ea8c6c">count</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html#a9458e41d842ce40cd37dc13458ced133">collisions</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html#ab4cde49bd9ce7a07daaf99af34ddb67e">resizes</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html#afd0385c645413d26e682f725a6f52164">lookups</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html#afd64becd0d2cfbc91a4c9c9a117498b9">inserts</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html#a8348bdd7e61c8d72b402f6a152013fbf">deletes</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html#aebf4001cde3746ec8025c1d87d4e6279">name</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structlh__entry.html">lh_entry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html#aa7d986a3b12a9fa47e349713794c30fb">head</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structlh__entry.html">lh_entry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html#a479895e45db2bdf9bf5d173fa4b7e277">tail</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structlh__entry.html">lh_entry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html#a4fd9c5aba38791b26ab0ec614a5caf8f">table</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="linkhash_8h.html#a671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html#a30ea5903f4f8126abd6aa489ffe14737">free_fn</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="linkhash_8h.html#a38bae27995dcfb6ee3fb109a9be229b2">lh_hash_fn</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html#a1488d1a4a320b1a9bb2f441859544be1">hash_fn</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="linkhash_8h.html#a91fd85fc81b0c7c83c62f00e84729091">lh_equal_fn</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html#aa646c287a6a46e09da6c7457c981a359">equal_fn</a></td></tr>
 </table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-The hash table structure. <hr><h2>Field Documentation</h2>
-<a class="anchor" name="9458e41d842ce40cd37dc13458ced133"></a><!-- doxytag: member="lh_table::collisions" ref="9458e41d842ce40cd37dc13458ced133" args="" -->
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>The hash table structure. </p>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="a9458e41d842ce40cd37dc13458ced133"></a><!-- doxytag: member="lh_table::collisions" ref="a9458e41d842ce40cd37dc13458ced133" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structlh__table.html#9458e41d842ce40cd37dc13458ced133">lh_table::collisions</a>          </td>
+          <td class="memname">int <a class="el" href="structlh__table.html#a9458e41d842ce40cd37dc13458ced133">lh_table::collisions</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
+<p>Number of collisions. </p>
 
-<p>
-Number of collisions. 
 </div>
-</div><p>
-<a class="anchor" name="a172ed8fe205367b54e0e2cdf9ea8c6c"></a><!-- doxytag: member="lh_table::count" ref="a172ed8fe205367b54e0e2cdf9ea8c6c" args="" -->
+</div>
+<a class="anchor" id="aa172ed8fe205367b54e0e2cdf9ea8c6c"></a><!-- doxytag: member="lh_table::count" ref="aa172ed8fe205367b54e0e2cdf9ea8c6c" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structlh__table.html#a172ed8fe205367b54e0e2cdf9ea8c6c">lh_table::count</a>          </td>
+          <td class="memname">int <a class="el" href="structlh__table.html#aa172ed8fe205367b54e0e2cdf9ea8c6c">lh_table::count</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
+<p>Numbers of entries. </p>
 
-<p>
-Numbers of entries. 
 </div>
-</div><p>
-<a class="anchor" name="8348bdd7e61c8d72b402f6a152013fbf"></a><!-- doxytag: member="lh_table::deletes" ref="8348bdd7e61c8d72b402f6a152013fbf" args="" -->
+</div>
+<a class="anchor" id="a8348bdd7e61c8d72b402f6a152013fbf"></a><!-- doxytag: member="lh_table::deletes" ref="a8348bdd7e61c8d72b402f6a152013fbf" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structlh__table.html#8348bdd7e61c8d72b402f6a152013fbf">lh_table::deletes</a>          </td>
+          <td class="memname">int <a class="el" href="structlh__table.html#a8348bdd7e61c8d72b402f6a152013fbf">lh_table::deletes</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
+<p>Number of deletes. </p>
 
-<p>
-Number of deletes. 
 </div>
-</div><p>
-<a class="anchor" name="a646c287a6a46e09da6c7457c981a359"></a><!-- doxytag: member="lh_table::equal_fn" ref="a646c287a6a46e09da6c7457c981a359" args="" -->
+</div>
+<a class="anchor" id="aa646c287a6a46e09da6c7457c981a359"></a><!-- doxytag: member="lh_table::equal_fn" ref="aa646c287a6a46e09da6c7457c981a359" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="linkhash_8h.html#91fd85fc81b0c7c83c62f00e84729091">lh_equal_fn</a>* <a class="el" href="structlh__table.html#a646c287a6a46e09da6c7457c981a359">lh_table::equal_fn</a>          </td>
+          <td class="memname"><a class="el" href="linkhash_8h.html#a91fd85fc81b0c7c83c62f00e84729091">lh_equal_fn</a>* <a class="el" href="structlh__table.html#aa646c287a6a46e09da6c7457c981a359">lh_table::equal_fn</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="30ea5903f4f8126abd6aa489ffe14737"></a><!-- doxytag: member="lh_table::free_fn" ref="30ea5903f4f8126abd6aa489ffe14737" args="" -->
+</div>
+<a class="anchor" id="a30ea5903f4f8126abd6aa489ffe14737"></a><!-- doxytag: member="lh_table::free_fn" ref="a30ea5903f4f8126abd6aa489ffe14737" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="linkhash_8h.html#671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a>* <a class="el" href="structlh__table.html#30ea5903f4f8126abd6aa489ffe14737">lh_table::free_fn</a>          </td>
+          <td class="memname"><a class="el" href="linkhash_8h.html#a671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a>* <a class="el" href="structlh__table.html#a30ea5903f4f8126abd6aa489ffe14737">lh_table::free_fn</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
+<p>A pointer onto the function responsible for freeing an entry. </p>
 
-<p>
-A pointer onto the function responsible for freeing an entry. 
 </div>
-</div><p>
-<a class="anchor" name="1488d1a4a320b1a9bb2f441859544be1"></a><!-- doxytag: member="lh_table::hash_fn" ref="1488d1a4a320b1a9bb2f441859544be1" args="" -->
+</div>
+<a class="anchor" id="a1488d1a4a320b1a9bb2f441859544be1"></a><!-- doxytag: member="lh_table::hash_fn" ref="a1488d1a4a320b1a9bb2f441859544be1" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="linkhash_8h.html#38bae27995dcfb6ee3fb109a9be229b2">lh_hash_fn</a>* <a class="el" href="structlh__table.html#1488d1a4a320b1a9bb2f441859544be1">lh_table::hash_fn</a>          </td>
+          <td class="memname"><a class="el" href="linkhash_8h.html#a38bae27995dcfb6ee3fb109a9be229b2">lh_hash_fn</a>* <a class="el" href="structlh__table.html#a1488d1a4a320b1a9bb2f441859544be1">lh_table::hash_fn</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="a7d986a3b12a9fa47e349713794c30fb"></a><!-- doxytag: member="lh_table::head" ref="a7d986a3b12a9fa47e349713794c30fb" args="" -->
+</div>
+<a class="anchor" id="aa7d986a3b12a9fa47e349713794c30fb"></a><!-- doxytag: member="lh_table::head" ref="aa7d986a3b12a9fa47e349713794c30fb" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structlh__entry.html">lh_entry</a>* <a class="el" href="structlh__table.html#a7d986a3b12a9fa47e349713794c30fb">lh_table::head</a><code> [read]</code>          </td>
+          <td class="memname">struct <a class="el" href="structlh__entry.html">lh_entry</a>* <a class="el" href="structlh__table.html#aa7d986a3b12a9fa47e349713794c30fb">lh_table::head</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
+<p>The first entry. </p>
 
-<p>
-The first entry. 
 </div>
-</div><p>
-<a class="anchor" name="fd64becd0d2cfbc91a4c9c9a117498b9"></a><!-- doxytag: member="lh_table::inserts" ref="fd64becd0d2cfbc91a4c9c9a117498b9" args="" -->
+</div>
+<a class="anchor" id="afd64becd0d2cfbc91a4c9c9a117498b9"></a><!-- doxytag: member="lh_table::inserts" ref="afd64becd0d2cfbc91a4c9c9a117498b9" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structlh__table.html#fd64becd0d2cfbc91a4c9c9a117498b9">lh_table::inserts</a>          </td>
+          <td class="memname">int <a class="el" href="structlh__table.html#afd64becd0d2cfbc91a4c9c9a117498b9">lh_table::inserts</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
+<p>Number of inserts. </p>
 
-<p>
-Number of inserts. 
 </div>
-</div><p>
-<a class="anchor" name="fd0385c645413d26e682f725a6f52164"></a><!-- doxytag: member="lh_table::lookups" ref="fd0385c645413d26e682f725a6f52164" args="" -->
+</div>
+<a class="anchor" id="afd0385c645413d26e682f725a6f52164"></a><!-- doxytag: member="lh_table::lookups" ref="afd0385c645413d26e682f725a6f52164" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structlh__table.html#fd0385c645413d26e682f725a6f52164">lh_table::lookups</a>          </td>
+          <td class="memname">int <a class="el" href="structlh__table.html#afd0385c645413d26e682f725a6f52164">lh_table::lookups</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
+<p>Number of lookups. </p>
 
-<p>
-Number of lookups. 
 </div>
-</div><p>
-<a class="anchor" name="ebf4001cde3746ec8025c1d87d4e6279"></a><!-- doxytag: member="lh_table::name" ref="ebf4001cde3746ec8025c1d87d4e6279" args="" -->
+</div>
+<a class="anchor" id="aebf4001cde3746ec8025c1d87d4e6279"></a><!-- doxytag: member="lh_table::name" ref="aebf4001cde3746ec8025c1d87d4e6279" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">const char* <a class="el" href="structlh__table.html#ebf4001cde3746ec8025c1d87d4e6279">lh_table::name</a>          </td>
+          <td class="memname">const char* <a class="el" href="structlh__table.html#aebf4001cde3746ec8025c1d87d4e6279">lh_table::name</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
+<p>Name of the hash table. </p>
 
-<p>
-Name of the hash table. 
 </div>
-</div><p>
-<a class="anchor" name="b4cde49bd9ce7a07daaf99af34ddb67e"></a><!-- doxytag: member="lh_table::resizes" ref="b4cde49bd9ce7a07daaf99af34ddb67e" args="" -->
+</div>
+<a class="anchor" id="ab4cde49bd9ce7a07daaf99af34ddb67e"></a><!-- doxytag: member="lh_table::resizes" ref="ab4cde49bd9ce7a07daaf99af34ddb67e" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structlh__table.html#b4cde49bd9ce7a07daaf99af34ddb67e">lh_table::resizes</a>          </td>
+          <td class="memname">int <a class="el" href="structlh__table.html#ab4cde49bd9ce7a07daaf99af34ddb67e">lh_table::resizes</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
+<p>Number of resizes. </p>
 
-<p>
-Number of resizes. 
 </div>
-</div><p>
-<a class="anchor" name="e251575ec2935bcb0e0589ca8e243839"></a><!-- doxytag: member="lh_table::size" ref="e251575ec2935bcb0e0589ca8e243839" args="" -->
+</div>
+<a class="anchor" id="ae251575ec2935bcb0e0589ca8e243839"></a><!-- doxytag: member="lh_table::size" ref="ae251575ec2935bcb0e0589ca8e243839" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structlh__table.html#e251575ec2935bcb0e0589ca8e243839">lh_table::size</a>          </td>
+          <td class="memname">int <a class="el" href="structlh__table.html#ae251575ec2935bcb0e0589ca8e243839">lh_table::size</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
+<p>Size of our hash. </p>
 
-<p>
-Size of our hash. 
 </div>
-</div><p>
-<a class="anchor" name="4fd9c5aba38791b26ab0ec614a5caf8f"></a><!-- doxytag: member="lh_table::table" ref="4fd9c5aba38791b26ab0ec614a5caf8f" args="" -->
+</div>
+<a class="anchor" id="a4fd9c5aba38791b26ab0ec614a5caf8f"></a><!-- doxytag: member="lh_table::table" ref="a4fd9c5aba38791b26ab0ec614a5caf8f" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structlh__entry.html">lh_entry</a>* <a class="el" href="structlh__table.html#4fd9c5aba38791b26ab0ec614a5caf8f">lh_table::table</a><code> [read]</code>          </td>
+          <td class="memname">struct <a class="el" href="structlh__entry.html">lh_entry</a>* <a class="el" href="structlh__table.html#a4fd9c5aba38791b26ab0ec614a5caf8f">lh_table::table</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="479895e45db2bdf9bf5d173fa4b7e277"></a><!-- doxytag: member="lh_table::tail" ref="479895e45db2bdf9bf5d173fa4b7e277" args="" -->
+</div>
+<a class="anchor" id="a479895e45db2bdf9bf5d173fa4b7e277"></a><!-- doxytag: member="lh_table::tail" ref="a479895e45db2bdf9bf5d173fa4b7e277" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structlh__entry.html">lh_entry</a>* <a class="el" href="structlh__table.html#479895e45db2bdf9bf5d173fa4b7e277">lh_table::tail</a><code> [read]</code>          </td>
+          <td class="memname">struct <a class="el" href="structlh__entry.html">lh_entry</a>* <a class="el" href="structlh__table.html#a479895e45db2bdf9bf5d173fa4b7e277">lh_table::tail</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
+<p>The last entry. </p>
 
-<p>
-The last entry. 
 </div>
-</div><p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="linkhash_8h.html">linkhash.h</a></ul>
 </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="linkhash_8h.html">linkhash.h</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by&nbsp;
 <a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>
 </html>
index 9653fbe..eb101d2 100644 (file)
@@ -1,14 +1,18 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>json-c: printbuf Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
 <div class="navigation" id="top">
   <div class="tabs">
     <ul>
       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
       <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
       <li><a href="files.html"><span>Files</span></a></li>
     </ul>
 </div>
 <div class="contents">
 <h1>printbuf Struct Reference</h1><!-- doxytag: class="printbuf" --><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structprintbuf.html#5d7cf8ac260f1f7c50fecaf9bd7bc651">buf</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structprintbuf.html#ba980ad7406329e32f557dfa0eb7b1b2">bpos</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structprintbuf.html#12ce6440eaa06a55b96ebdc5a9778dd5">size</a></td></tr>
-
+<tr><td colspan="2"><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structprintbuf.html#a5d7cf8ac260f1f7c50fecaf9bd7bc651">buf</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structprintbuf.html#aba980ad7406329e32f557dfa0eb7b1b2">bpos</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structprintbuf.html#a12ce6440eaa06a55b96ebdc5a9778dd5">size</a></td></tr>
 </table>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="ba980ad7406329e32f557dfa0eb7b1b2"></a><!-- doxytag: member="printbuf::bpos" ref="ba980ad7406329e32f557dfa0eb7b1b2" args="" -->
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="aba980ad7406329e32f557dfa0eb7b1b2"></a><!-- doxytag: member="printbuf::bpos" ref="aba980ad7406329e32f557dfa0eb7b1b2" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structprintbuf.html#ba980ad7406329e32f557dfa0eb7b1b2">printbuf::bpos</a>          </td>
+          <td class="memname">int <a class="el" href="structprintbuf.html#aba980ad7406329e32f557dfa0eb7b1b2">printbuf::bpos</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="5d7cf8ac260f1f7c50fecaf9bd7bc651"></a><!-- doxytag: member="printbuf::buf" ref="5d7cf8ac260f1f7c50fecaf9bd7bc651" args="" -->
+</div>
+<a class="anchor" id="a5d7cf8ac260f1f7c50fecaf9bd7bc651"></a><!-- doxytag: member="printbuf::buf" ref="a5d7cf8ac260f1f7c50fecaf9bd7bc651" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">char* <a class="el" href="structprintbuf.html#5d7cf8ac260f1f7c50fecaf9bd7bc651">printbuf::buf</a>          </td>
+          <td class="memname">char* <a class="el" href="structprintbuf.html#a5d7cf8ac260f1f7c50fecaf9bd7bc651">printbuf::buf</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="12ce6440eaa06a55b96ebdc5a9778dd5"></a><!-- doxytag: member="printbuf::size" ref="12ce6440eaa06a55b96ebdc5a9778dd5" args="" -->
+</div>
+<a class="anchor" id="a12ce6440eaa06a55b96ebdc5a9778dd5"></a><!-- doxytag: member="printbuf::size" ref="a12ce6440eaa06a55b96ebdc5a9778dd5" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structprintbuf.html#12ce6440eaa06a55b96ebdc5a9778dd5">printbuf::size</a>          </td>
+          <td class="memname">int <a class="el" href="structprintbuf.html#a12ce6440eaa06a55b96ebdc5a9778dd5">printbuf::size</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="printbuf_8h.html">printbuf.h</a></ul>
 </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="printbuf_8h.html">printbuf.h</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by&nbsp;
 <a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>
 </html>
index ab02c62..a444163 100644 (file)
@@ -57,7 +57,7 @@ DIV.tabs SPAN
    white-space      : nowrap;
 }
 
-DIV.tabs INPUT
+DIV.tabs #MSearchBox
 {
    float            : right;
    display          : inline;
index 6992d84..2e8514f 100644 (file)
@@ -1,14 +1,18 @@
-<!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-c: json_object::json_object::data Union Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>json-c: json_object::data Union Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
 <div class="navigation" id="top">
   <div class="tabs">
     <ul>
       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
       <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
       <li><a href="files.html"><span>Files</span></a></li>
     </ul>
   </div>
 </div>
 <div class="contents">
-<h1>json_object::json_object::data Union Reference</h1><!-- doxytag: class="json_object::data" --><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="json__object_8h.html#621c38f1f10a1c565d897e3178b16d6e">boolean</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="unionjson__object_1_1data.html#e4707a819b52b42447594277c31651e9">c_boolean</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="unionjson__object_1_1data.html#efde3d5ac1324bcff45ae8a0c645d05e">c_double</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="unionjson__object_1_1data.html#0ae27a27da5f3fa39fe94ff66ac4c113">c_int</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="unionjson__object_1_1data.html#60b5d5f5559f88626054f356d6750640">c_object</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structarray__list.html">array_list</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="unionjson__object_1_1data.html#c7ced3f07012abe6aa857745a0f9cd29">c_array</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="unionjson__object_1_1data.html#99a48f23969295bbb8f7195fc10764bc">c_string</a></td></tr>
-
+<h1>json_object::data Union Reference</h1><!-- doxytag: class="json_object::data" --><table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="json__object_8h.html#a81f02022906fafc71eb9197049f07f73">json_bool</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="unionjson__object_1_1data.html#a98a3964e5fb0b3a0e9d8786b8facde5c">c_boolean</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="unionjson__object_1_1data.html#a9cc4abdb21302913701ac0c8dc75e55a">c_double</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int64_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="unionjson__object_1_1data.html#a7733181cdb631570913e3a2abfd6937c">c_int64</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="unionjson__object_1_1data.html#a68089c942f154d4df590d8ecb476a69b">c_object</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structarray__list.html">array_list</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="unionjson__object_1_1data.html#a4ad6bf2fd6d8718f55850509edfe2e45">c_array</a></td></tr>
+<tr><td class="memItemLeft" >struct {</td></tr>
+<tr><td class="memItemLeft" >&nbsp;&nbsp;&nbsp;char *&nbsp;&nbsp;&nbsp;<a class="el" href="unionjson__object_1_1data.html#a18a82441c3972195a3bf698bb286634b">str</a></td></tr>
+<tr><td class="memItemLeft" >&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;<a class="el" href="unionjson__object_1_1data.html#ac2386853b8a4e7d0b28a27ed599ccef7">len</a></td></tr>
+<tr><td class="memItemLeft" valign="top">}&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="unionjson__object_1_1data.html#af9cd2e329ad7ab0a86b1b622290a663a">c_string</a></td></tr>
 </table>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="c7ced3f07012abe6aa857745a0f9cd29"></a><!-- doxytag: member="json_object::data::c_array" ref="c7ced3f07012abe6aa857745a0f9cd29" args="" -->
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="a4ad6bf2fd6d8718f55850509edfe2e45"></a><!-- doxytag: member="json_object::data::c_array" ref="a4ad6bf2fd6d8718f55850509edfe2e45" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structarray__list.html">array_list</a>* <a class="el" href="unionjson__object_1_1data.html#c7ced3f07012abe6aa857745a0f9cd29">json_object::json_object::data::c_array</a><code> [read]</code>          </td>
+          <td class="memname">struct <a class="el" href="structarray__list.html">array_list</a>* <a class="el" href="unionjson__object_1_1data.html#a4ad6bf2fd6d8718f55850509edfe2e45">json_object::data::c_array</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="e4707a819b52b42447594277c31651e9"></a><!-- doxytag: member="json_object::data::c_boolean" ref="e4707a819b52b42447594277c31651e9" args="" -->
+</div>
+<a class="anchor" id="a98a3964e5fb0b3a0e9d8786b8facde5c"></a><!-- doxytag: member="json_object::data::c_boolean" ref="a98a3964e5fb0b3a0e9d8786b8facde5c" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="json__object_8h.html#621c38f1f10a1c565d897e3178b16d6e">boolean</a> <a class="el" href="unionjson__object_1_1data.html#e4707a819b52b42447594277c31651e9">json_object::json_object::data::c_boolean</a>          </td>
+          <td class="memname"><a class="el" href="json__object_8h.html#a81f02022906fafc71eb9197049f07f73">json_bool</a> <a class="el" href="unionjson__object_1_1data.html#a98a3964e5fb0b3a0e9d8786b8facde5c">json_object::data::c_boolean</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="efde3d5ac1324bcff45ae8a0c645d05e"></a><!-- doxytag: member="json_object::data::c_double" ref="efde3d5ac1324bcff45ae8a0c645d05e" args="" -->
+</div>
+<a class="anchor" id="a9cc4abdb21302913701ac0c8dc75e55a"></a><!-- doxytag: member="json_object::data::c_double" ref="a9cc4abdb21302913701ac0c8dc75e55a" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">double <a class="el" href="unionjson__object_1_1data.html#efde3d5ac1324bcff45ae8a0c645d05e">json_object::json_object::data::c_double</a>          </td>
+          <td class="memname">double <a class="el" href="unionjson__object_1_1data.html#a9cc4abdb21302913701ac0c8dc75e55a">json_object::data::c_double</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="0ae27a27da5f3fa39fe94ff66ac4c113"></a><!-- doxytag: member="json_object::data::c_int" ref="0ae27a27da5f3fa39fe94ff66ac4c113" args="" -->
+</div>
+<a class="anchor" id="a7733181cdb631570913e3a2abfd6937c"></a><!-- doxytag: member="json_object::data::c_int64" ref="a7733181cdb631570913e3a2abfd6937c" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="unionjson__object_1_1data.html#0ae27a27da5f3fa39fe94ff66ac4c113">json_object::json_object::data::c_int</a>          </td>
+          <td class="memname">int64_t <a class="el" href="unionjson__object_1_1data.html#a7733181cdb631570913e3a2abfd6937c">json_object::data::c_int64</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
-
 </div>
-</div><p>
-<a class="anchor" name="60b5d5f5559f88626054f356d6750640"></a><!-- doxytag: member="json_object::data::c_object" ref="60b5d5f5559f88626054f356d6750640" args="" -->
+</div>
+<a class="anchor" id="a68089c942f154d4df590d8ecb476a69b"></a><!-- doxytag: member="json_object::data::c_object" ref="a68089c942f154d4df590d8ecb476a69b" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">struct <a class="el" href="structlh__table.html">lh_table</a>* <a class="el" href="unionjson__object_1_1data.html#60b5d5f5559f88626054f356d6750640">json_object::json_object::data::c_object</a><code> [read]</code>          </td>
+          <td class="memname">struct <a class="el" href="structlh__table.html">lh_table</a>* <a class="el" href="unionjson__object_1_1data.html#a68089c942f154d4df590d8ecb476a69b">json_object::data::c_object</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
+</div>
+</div>
+<a class="anchor" id="af9cd2e329ad7ab0a86b1b622290a663a"></a><!-- doxytag: member="json_object::data::c_string" ref="af9cd2e329ad7ab0a86b1b622290a663a" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct { ... }   <a class="el" href="unionjson__object_1_1data.html#af9cd2e329ad7ab0a86b1b622290a663a">json_object::data::c_string</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
 
 </div>
-</div><p>
-<a class="anchor" name="99a48f23969295bbb8f7195fc10764bc"></a><!-- doxytag: member="json_object::data::c_string" ref="99a48f23969295bbb8f7195fc10764bc" args="" -->
+</div>
+<a class="anchor" id="ac2386853b8a4e7d0b28a27ed599ccef7"></a><!-- doxytag: member="json_object::data::len" ref="ac2386853b8a4e7d0b28a27ed599ccef7" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">char* <a class="el" href="unionjson__object_1_1data.html#99a48f23969295bbb8f7195fc10764bc">json_object::json_object::data::c_string</a>          </td>
+          <td class="memname">int <a class="el" href="unionjson__object_1_1data.html#ac2386853b8a4e7d0b28a27ed599ccef7">json_object::data::len</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>
+</div>
+</div>
+<a class="anchor" id="a18a82441c3972195a3bf698bb286634b"></a><!-- doxytag: member="json_object::data::str" ref="a18a82441c3972195a3bf698bb286634b" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">char* <a class="el" href="unionjson__object_1_1data.html#a18a82441c3972195a3bf698bb286634b">json_object::data::str</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
 
 </div>
-</div><p>
-<hr>The documentation for this union was generated from the following file:<ul>
-<li><a class="el" href="json__object__private_8h.html">json_object_private.h</a></ul>
 </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
+<hr/>The documentation for this union was generated from the following file:<ul>
+<li><a class="el" href="json__object__private_8h.html">json_object_private.h</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by&nbsp;
 <a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>
 </html>
index a5897de..68b8100 100755 (executable)
@@ -1,38 +1,23 @@
 #!/bin/sh
-# install - install a program, script, or datafile
-
-scriptversion=2006-12-25.00
-
-# 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:
+# $NetBSD: install-sh.in,v 1.5 2010/10/08 19:57:05 tez Exp $
+# This script now also installs multiple files, but might choke on installing
+# multiple files with spaces in the file names.
 #
-# 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.
+# install - install a program, script, or datafile
+# This comes from X11R5 (mit/util/scripts/install.sh).
 #
+# Copyright 1991 by the Massachusetts Institute of Technology
 #
-# FSF changes to this file are in the public domain.
+# Permission to use, copy, modify, distribute, and sell this software and its
+# documentation for any purpose is hereby granted without fee, provided that
+# the above copyright notice appear in all copies and that both that
+# copyright notice and this permission notice appear in supporting
+# documentation, and that the name of M.I.T. not be used in advertising or
+# publicity pertaining to distribution of the software without specific,
+# written prior permission.  M.I.T. makes no representations about the
+# suitability of this software for any purpose.  It is provided "as is"
+# without express or implied warranty.
 #
 # Calling this script install-sh is preferred over install.sh, to prevent
 # `make' implicit rules from creating a file called install from it
@@ -41,479 +26,266 @@ scriptversion=2006-12-25.00
 # 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
+doit="${DOITPROG-}"
+
+
+# put in absolute paths if you don't have them in your path; or use env. vars.
+
+awkprog="${AWKPROG-awk}"
+mvprog="${MVPROG-mv}"
+cpprog="${CPPROG-cp}"
+chmodprog="${CHMODPROG-chmod}"
+chownprog="${CHOWNPROG-chown}"
+chgrpprog="${CHGRPPROG-chgrp}"
+stripprog="${STRIPPROG-strip}"
+rmprog="${RMPROG-rm}"
+mkdirprog="${MKDIRPROG-mkdir}"
+
+instcmd="$cpprog"
+pathcompchmodcmd="$chmodprog 755"
+chmodcmd="$chmodprog 755"
+chowncmd=""
+chgrpcmd=""
+stripcmd=""
+stripflags=""
 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.
+mvcmd="$mvprog"
+src=""
+msrc=""
+dst=""
+dir_arg=""
+suffix=""
+suffixfmt=""
+
+while [ x"$1" != x ]; do
+    case $1 in
+       -b) suffix=".old"
+           shift
+           continue;;
+
+       -B) suffixfmt="$2"
+           shift
+           shift
+           continue;;
+
+       -c) instcmd="$cpprog"
+           shift
+           continue;;
+
+       -d) dir_arg=true
+           shift
+           continue;;
+
+       -m) chmodcmd="$chmodprog $2"
+           shift
+           shift
+           continue;;
+
+       -o) chowncmd="$chownprog $2"
+           shift
+           shift
+           continue;;
+
+       -g) chgrpcmd="$chgrpprog $2"
+           shift
+           shift
+           continue;;
+
+       -s) stripcmd="$stripprog"
+           shift
+           continue;;
+
+       -S) stripcmd="$stripprog"
+           stripflags="-S $2 $stripflags"
+           shift
+           shift
+           continue;;
+
+       *)  if [ x"$msrc" = x ]
+           then
+               msrc="$dst"
+           else
+               msrc="$msrc $dst"
+           fi
+           src="$dst"
+           dst="$1"
+           shift
+           continue;;
+    esac
+done
 
-Environment variables override the default commands:
-  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
-  RMPROG STRIPPROG
-"
+if [ x"$dir_arg" = x ]
+then
+       dstisfile=""
+       if [ ! -d "$dst" ]
+       then
+               if [ x"$msrc" = x"$src" ]
+               then
+                       dstisfile=true
+               else
+                       echo "install: destination is not a directory"
+                       exit 1
+               fi
+       fi
+else
+       msrc="$msrc $dst"
+fi
 
-while test $# -ne 0; do
-  case $1 in
-    -c) ;;
+if [ x"$msrc" = x ]
+then
+       echo "install: no destination specified"
+       exit 1
+fi      
 
-    -C) copy_on_change=true;;
+for srcarg in $msrc; do
 
-    -d) dir_arg=true;;
+if [ x"$dir_arg" != x ]; then
 
-    -g) chgrpcmd="$chgrpprog $2"
-       shift;;
+       dstarg="$srcarg"
+else
+       dstarg="$dst"
+
+# Waiting for this to be detected by the "$instcmd $srcarg $dsttmp" command
+# might cause directories to be created, which would be especially bad 
+# if $src (and thus $dsttmp) contains '*'.
+
+       if [ -f "$srcarg" ]
+       then
+               doinst="$instcmd"
+       elif [ -d "$srcarg" ]
+       then
+               echo "install: $srcarg: not a regular file"
+               exit 1
+       elif [ "$srcarg" = "/dev/null" ]
+       then
+               doinst="$cpprog"
+       else
+               echo "install:  $srcarg does not exist"
+               exit 1
+       fi
+       
+# If destination is a directory, append the input filename; if your system
+# does not like double slashes in filenames, you may need to add some logic
 
-    --help) echo "$usage"; exit $?;;
+       if [ -d "$dstarg" ]
+       then
+               dstarg="$dstarg"/`basename "$srcarg"`
+       fi
+fi
 
-    -m) mode=$2
-       case $mode in
-         *' '* | *'    '* | *'
-'*       | *'*'* | *'?'* | *'['*)
-           echo "$0: invalid mode: $mode" >&2
-           exit 1;;
-       esac
-       shift;;
+## this sed command emulates the dirname command
+dstdir=`echo "$dstarg" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
 
-    -o) chowncmd="$chownprog $2"
-       shift;;
+# Make sure that the destination directory exists.
+#  this part is taken from Noah Friedman's mkinstalldirs script
 
-    -s) stripcmd=$stripprog;;
+# Skip lots of stat calls in the usual case.
+if [ ! -d "$dstdir" ]; then
+defaultIFS='   
+'
+IFS="${IFS-${defaultIFS}}"
 
-    -t) dst_arg=$2
-       shift;;
+oIFS="${IFS}"
+# Some sh's can't handle IFS=/ for some reason.
+IFS='%'
+set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
+IFS="${oIFS}"
 
-    -T) no_target_directory=true;;
+pathcomp=''
 
-    --version) echo "$0 $scriptversion"; exit $?;;
+while [ $# -ne 0 ] ; do
+       pathcomp="${pathcomp}${1}"
+       shift
 
-    --)        shift
-       break;;
+       if [ ! -d "${pathcomp}" ] ;
+        then
+               $doit $mkdirprog "${pathcomp}"
+               if [ x"$chowncmd" != x ]; then $doit $chowncmd "${pathcomp}"; else true ; fi &&
+               if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "${pathcomp}"; else true ; fi &&
+               if [ x"$pathcompchmodcmd" != x ]; then $doit $pathcompchmodcmd "${pathcomp}"; else true ; fi
 
-    -*)        echo "$0: invalid option: $1" >&2
-       exit 1;;
+       else
+               true
+       fi
 
-    *)  break;;
-  esac
-  shift
+       pathcomp="${pathcomp}/"
 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
+       if [ x"$dir_arg" != x ]
+       then
+               if [ -d "$dstarg" ]; then
+                       true
+               else
+                       $doit $mkdirprog "$dstarg" &&
+
+                       if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dstarg"; else true ; fi &&
+                       if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dstarg"; else true ; fi &&
+                       if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dstarg"; else true ; fi
+               fi
        else
-         mkdir_mode=
+
+               if [ x"$dstisfile" = x ]
+               then
+                       file=$srcarg
+               else
+                       file=$dst
+               fi
+
+               dstfile=`basename "$file"`
+               dstfinal="$dstdir/$dstfile"
+
+# Make a temp file name in the proper directory.
+
+               dsttmp=$dstdir/#inst.$$#
+
+# Make a backup file name in the proper directory.
+               case x$suffixfmt in
+               *%*)    suffix=`echo x |
+                       $awkprog -v bname="$dstfinal" -v fmt="$suffixfmt" '
+                       { cnt = 0;
+                         do {
+                               sfx = sprintf(fmt, cnt++);
+                               name = bname sfx;
+                         } while (system("test -f " name) == 0);
+                         print sfx; }' -`;;
+               x)      ;;
+               *)      suffix="$suffixfmt";;
+               esac
+               dstbackup="$dstfinal$suffix"
+
+# Move or copy the file name to the temp name
+
+               $doit $doinst $srcarg "$dsttmp" &&
+
+               trap "rm -f ${dsttmp}" 0 &&
+
+# 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 $instcmd $src $dsttmp" command.
+
+               if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else true;fi &&
+               if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else true;fi &&
+               if [ x"$stripcmd" != x ]; then $doit $stripcmd $stripflags "$dsttmp"; else true;fi &&
+               if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else true;fi &&
+
+# Now rename the file to the real destination.
+
+               if [ x"$suffix" != x ] && [ -f "$dstfinal" ]
+               then
+                       $doit $mvcmd "$dstfinal" "$dstbackup"
+               else
+                       $doit $rmcmd -f "$dstfinal"
+               fi &&
+               $doit $mvcmd "$dsttmp" "$dstfinal"
        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
+done &&
 
-    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-end: "$"
-# End:
+exit 0
diff --git a/json-c.vcproj b/json-c.vcproj
new file mode 100644 (file)
index 0000000..0b88754
--- /dev/null
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+       ProjectType="Visual C++"
+       Version="7.10"
+       Name="json-c"
+       ProjectGUID="{04D8CDBE-FB3E-4362-87E6-07DC3C0083B2}"
+       Keyword="Win32Proj">
+       <Platforms>
+               <Platform
+                       Name="Win32"/>
+       </Platforms>
+       <Configurations>
+               <Configuration
+                       Name="Debug|Win32"
+                       OutputDirectory="Debug"
+                       IntermediateDirectory="Debug"
+                       ConfigurationType="4"
+                       CharacterSet="2">
+                       <Tool
+                               Name="VCCLCompilerTool"
+                               Optimization="0"
+                               PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
+                               MinimalRebuild="TRUE"
+                               BasicRuntimeChecks="3"
+                               RuntimeLibrary="5"
+                               UsePrecompiledHeader="0"
+                               WarningLevel="3"
+                               Detect64BitPortabilityProblems="TRUE"
+                               DebugInformationFormat="4"/>
+                       <Tool
+                               Name="VCCustomBuildTool"/>
+                       <Tool
+                               Name="VCLibrarianTool"
+                               OutputFile="$(OutDir)/jsonD.lib"/>
+                       <Tool
+                               Name="VCMIDLTool"/>
+                       <Tool
+                               Name="VCPostBuildEventTool"/>
+                       <Tool
+                               Name="VCPreBuildEventTool"
+                               CommandLine="copy config.h.win32 config.h"/>
+                       <Tool
+                               Name="VCPreLinkEventTool"/>
+                       <Tool
+                               Name="VCResourceCompilerTool"/>
+                       <Tool
+                               Name="VCWebServiceProxyGeneratorTool"/>
+                       <Tool
+                               Name="VCXMLDataGeneratorTool"/>
+                       <Tool
+                               Name="VCManagedWrapperGeneratorTool"/>
+                       <Tool
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+               </Configuration>
+               <Configuration
+                       Name="Release|Win32"
+                       OutputDirectory="Release"
+                       IntermediateDirectory="Release"
+                       ConfigurationType="4"
+                       CharacterSet="2">
+                       <Tool
+                               Name="VCCLCompilerTool"
+                               PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
+                               RuntimeLibrary="4"
+                               UsePrecompiledHeader="0"
+                               WarningLevel="3"
+                               Detect64BitPortabilityProblems="TRUE"
+                               DebugInformationFormat="3"/>
+                       <Tool
+                               Name="VCCustomBuildTool"/>
+                       <Tool
+                               Name="VCLibrarianTool"
+                               OutputFile="$(OutDir)/json.lib"/>
+                       <Tool
+                               Name="VCMIDLTool"/>
+                       <Tool
+                               Name="VCPostBuildEventTool"/>
+                       <Tool
+                               Name="VCPreBuildEventTool"/>
+                       <Tool
+                               Name="VCPreLinkEventTool"/>
+                       <Tool
+                               Name="VCResourceCompilerTool"/>
+                       <Tool
+                               Name="VCWebServiceProxyGeneratorTool"/>
+                       <Tool
+                               Name="VCXMLDataGeneratorTool"/>
+                       <Tool
+                               Name="VCManagedWrapperGeneratorTool"/>
+                       <Tool
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+               </Configuration>
+       </Configurations>
+       <References>
+       </References>
+       <Files>
+               <Filter
+                       Name="Source Files"
+                       Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+                       UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+                       <File
+                               RelativePath=".\arraylist.c">
+                       </File>
+                       <File
+                               RelativePath=".\debug.c">
+                       </File>
+                       <File
+                               RelativePath=".\json_object.c">
+                       </File>
+                       <File
+                               RelativePath=".\json_tokener.c">
+                       </File>
+                       <File
+                               RelativePath=".\json_util.c">
+                       </File>
+                       <File
+                               RelativePath=".\linkhash.c">
+                       </File>
+                       <File
+                               RelativePath=".\printbuf.c">
+                       </File>
+               </Filter>
+               <Filter
+                       Name="Header Files"
+                       Filter="h;hpp;hxx;hm;inl;inc;xsd"
+                       UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+                       <File
+                               RelativePath=".\arraylist.h">
+                       </File>
+                       <File
+                               RelativePath=".\bits.h">
+                       </File>
+                       <File
+                               RelativePath=".\debug.h">
+                       </File>
+                       <File
+                               RelativePath=".\json_object.h">
+                       </File>
+                       <File
+                               RelativePath=".\json_object_private.h">
+                       </File>
+                       <File
+                               RelativePath=".\json_tokener.h">
+                       </File>
+                       <File
+                               RelativePath=".\json_util.h">
+                       </File>
+                       <File
+                               RelativePath=".\linkhash.h">
+                       </File>
+                       <File
+                               RelativePath=".\printbuf.h">
+                       </File>
+               </Filter>
+               <Filter
+                       Name="Resource Files"
+                       Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+                       UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+               </Filter>
+               <Filter
+                       Name="Documentation"
+                       Filter="">
+                       <File
+                               RelativePath=".\Doxyfile">
+                       </File>
+               </Filter>
+               <File
+                       RelativePath=".\config.h.win32">
+               </File>
+               <File
+                       RelativePath=".\README-WIN32.html">
+               </File>
+               <File
+                       RelativePath=".\README.html">
+               </File>
+       </Files>
+       <Globals>
+       </Globals>
+</VisualStudioProject>
diff --git a/json.h b/json.h
index a5a3432..d49715b 100644 (file)
--- a/json.h
+++ b/json.h
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
  * Michael Clark <michael@metaparadigm.com>
+ * Copyright (c) 2009 Hewlett-Packard Development Company, L.P.
  *
  * This library is free software; you can redistribute it and/or modify
  * it under the terms of the MIT license. See COPYING for details.
@@ -23,6 +24,7 @@ extern "C" {
 #include "json_util.h"
 #include "json_object.h"
 #include "json_tokener.h"
+#include "json_object_iterator.h"
 
 #ifdef __cplusplus
 }
diff --git a/json_config.h.in b/json_config.h.in
new file mode 100644 (file)
index 0000000..7888e02
--- /dev/null
@@ -0,0 +1,3 @@
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef JSON_C_HAVE_INTTYPES_H
diff --git a/json_inttypes.h b/json_inttypes.h
new file mode 100644 (file)
index 0000000..2f84ade
--- /dev/null
@@ -0,0 +1,28 @@
+
+#ifndef _json_inttypes_h_
+#define _json_inttypes_h_
+
+#include "json_config.h"
+
+#if defined(_MSC_VER) && _MSC_VER < 1700
+
+/* Anything less than Visual Studio C++ 10 is missing stdint.h and inttypes.h */
+typedef __int32 int32_t;
+#define INT32_MIN    ((int32_t)_I32_MIN)
+#define INT32_MAX    ((int32_t)_I32_MAX)
+typedef __int64 int64_t;
+#define INT64_MIN    ((int64_t)_I64_MIN)
+#define INT64_MAX    ((int64_t)_I64_MAX)
+#define PRId64 "I64d"
+#define SCNd64 "I64d"
+
+#else
+
+#ifdef JSON_C_HAVE_INTTYPES_H
+#include <inttypes.h>
+#endif
+/* inttypes.h includes stdint.h */
+
+#endif
+
+#endif
index 176fd30..0106b40 100644 (file)
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
  * Michael Clark <michael@metaparadigm.com>
+ * Copyright (c) 2009 Hewlett-Packard Development Company, L.P.
  *
  * This library is free software; you can redistribute it and/or modify
  * it under the terms of the MIT license. See COPYING for details.
 #include "printbuf.h"
 #include "linkhash.h"
 #include "arraylist.h"
+#include "json_inttypes.h"
 #include "json_object.h"
 #include "json_object_private.h"
+#include "json_util.h"
 
 #if !HAVE_STRNDUP
   char* strndup(const char* str, size_t n);
 #endif /* !HAVE_STRNDUP */
 
+// Don't define this.  It's not thread-safe.
 /* #define REFCOUNT_DEBUG 1 */
 
 const char *json_number_chars = "0123456789.+-eE";
-const char *json_hex_chars = "0123456789abcdef";
-
-#ifdef REFCOUNT_DEBUG
-static const char* json_type_name[] = {
-  "null",
-  "boolean",
-  "double",
-  "int",
-  "object",
-  "array",
-  "string",
-};
-#endif /* REFCOUNT_DEBUG */
+const char *json_hex_chars = "0123456789abcdefABCDEF";
 
 static void json_object_generic_delete(struct json_object* jso);
 static struct json_object* json_object_new(enum json_type o_type);
@@ -69,7 +61,7 @@ static void json_object_fini(void) {
               json_object_table->count);
       lh_foreach(json_object_table, ent) {
         struct json_object* obj = (struct json_object*)ent->v;
-        MC_DEBUG("\t%s:%p\n", json_type_name[obj->o_type], obj);
+        MC_DEBUG("\t%s:%p\n", json_type_to_name(obj->o_type), obj);
       }
     }
   }
@@ -81,15 +73,13 @@ static void json_object_fini(void) {
 
 /* string escaping */
 
-static int json_escape_str(struct printbuf *pb, char *str)
+static int json_escape_str(struct printbuf *pb, char *str, int len)
 {
   int pos = 0, start_offset = 0;
   unsigned char c;
-  do {
+  while (len--) {
     c = str[pos];
     switch(c) {
-    case '\0':
-      break;
     case '\b':
     case '\n':
     case '\r':
@@ -118,7 +108,7 @@ static int json_escape_str(struct printbuf *pb, char *str)
        start_offset = ++pos;
       } else pos++;
     }
-  } while(c);
+  }
   if(pos - start_offset > 0)
     printbuf_memappend(pb, str + start_offset, pos - start_offset);
   return 0;
@@ -150,7 +140,7 @@ static void json_object_generic_delete(struct json_object* jso)
 {
 #ifdef REFCOUNT_DEBUG
   MC_DEBUG("json_object_delete_%s: %p\n",
-          json_type_name[jso->o_type], jso);
+          json_type_to_name(jso->o_type), jso);
   lh_table_delete(json_object_table, jso);
 #endif /* REFCOUNT_DEBUG */
   printbuf_free(jso->_pb);
@@ -168,7 +158,7 @@ static struct json_object* json_object_new(enum json_type o_type)
   jso->_delete = &json_object_generic_delete;
 #ifdef REFCOUNT_DEBUG
   lh_table_insert(json_object_table, jso, jso);
-  MC_DEBUG("json_object_new_%s: %p\n", json_type_name[jso->o_type], jso);
+  MC_DEBUG("json_object_new_%s: %p\n", json_type_to_name(jso->o_type), jso);
 #endif /* REFCOUNT_DEBUG */
   return jso;
 }
@@ -178,54 +168,100 @@ static struct json_object* json_object_new(enum json_type o_type)
 
 int json_object_is_type(struct json_object *jso, enum json_type type)
 {
+  if (!jso)
+    return (type == json_type_null);
   return (jso->o_type == type);
 }
 
 enum json_type _json_object_get_type(struct json_object *jso)
 {
+  if (!jso)
+    return json_type_null;
   return jso->o_type;
 }
 
+/* extended conversion to string */
+
+const char* json_object_to_json_string_ext(struct json_object *jso, int flags)
+{
+       if (!jso)
+               return "null";
+
+       if ((!jso->_pb) && !(jso->_pb = printbuf_new()))
+               return NULL;
+
+       printbuf_reset(jso->_pb);
 
-/* json_object_to_json_string */
+       if(jso->_to_json_string(jso, jso->_pb, 0, flags) < 0)
+               return NULL;
+
+       return jso->_pb->buf;
+}
+
+/* backwards-compatible conversion to string */
 
 const char* json_object_to_json_string(struct json_object *jso)
 {
-  if(!jso) return "null";
-  if(!jso->_pb) {
-    if(!(jso->_pb = printbuf_new())) return NULL;
-  } else {
-    printbuf_reset(jso->_pb);
-  }
-  if(jso->_to_json_string(jso, jso->_pb) < 0) return NULL;
-  return jso->_pb->buf;
+       return json_object_to_json_string_ext(jso, JSON_C_TO_STRING_SPACED);
 }
 
+static void indent(struct printbuf *pb, int level, int flags)
+{
+       if (flags & JSON_C_TO_STRING_PRETTY)
+       {
+               printbuf_memset(pb, -1, ' ', level * 2);
+       }
+}
 
 /* json_object_object */
 
 static int json_object_object_to_json_string(struct json_object* jso,
-                                            struct printbuf *pb)
-{
-  int i=0;
-  struct json_object_iter iter;
-  sprintbuf(pb, "{");
-
-  /* CAW: scope operator to make ANSI correctness */
-  /* CAW: switched to json_object_object_foreachC which uses an iterator struct */
-       json_object_object_foreachC(jso, iter) {
-                       if(i) sprintbuf(pb, ",");
-                       sprintbuf(pb, " \"");
-                       json_escape_str(pb, iter.key);
+                                            struct printbuf *pb,
+                                            int level,
+                                                int flags)
+{
+       int had_children = 0;
+       struct json_object_iter iter;
+
+       sprintbuf(pb, "{" /*}*/);
+       if (flags & JSON_C_TO_STRING_PRETTY)
+               sprintbuf(pb, "\n");
+       json_object_object_foreachC(jso, iter)
+       {
+               if (had_children)
+               {
+                       sprintbuf(pb, ",");
+                       if (flags & JSON_C_TO_STRING_PRETTY)
+                               sprintbuf(pb, "\n");
+               }
+               had_children = 1;
+               if (flags & JSON_C_TO_STRING_SPACED)
+                       sprintbuf(pb, " ");
+               indent(pb, level+1, flags);
+               sprintbuf(pb, "\"");
+               json_escape_str(pb, iter.key, strlen(iter.key));
+               if (flags & JSON_C_TO_STRING_SPACED)
                        sprintbuf(pb, "\": ");
-                       if(iter.val == NULL) sprintbuf(pb, "null");
-                       else iter.val->_to_json_string(iter.val, pb);
-                       i++;
+               else
+                       sprintbuf(pb, "\":");
+               if(iter.val == NULL)
+                       sprintbuf(pb, "null");
+               else
+                       iter.val->_to_json_string(iter.val, pb, level+1,flags);
        }
-
-  return sprintbuf(pb, " }");
+       if (flags & JSON_C_TO_STRING_PRETTY)
+       {
+               if (had_children)
+                       sprintbuf(pb, "\n");
+               indent(pb,level,flags);
+       }
+       if (flags & JSON_C_TO_STRING_SPACED)
+               return sprintbuf(pb, /*{*/ " }");
+       else
+               return sprintbuf(pb, /*{*/ "}");
 }
 
+
 static void json_object_lh_entry_free(struct lh_entry *ent)
 {
   free(ent->k);
@@ -269,7 +305,24 @@ void json_object_object_add(struct json_object* jso, const char *key,
 
 struct json_object* json_object_object_get(struct json_object* jso, const char *key)
 {
-  return (struct json_object*) lh_table_lookup(jso->o.c_object, key);
+  struct json_object *result;
+  json_object_object_get_ex(jso, key, &result);
+  return result;
+}
+
+json_bool json_object_object_get_ex(struct json_object* jso, const char *key, struct json_object **value)
+{
+  if (NULL == jso) return FALSE;
+
+  switch(jso->o_type) {
+  case json_type_object:
+    return lh_table_lookup_ex(jso->o.c_object, (void*)key, (void**)value);
+  default:
+    if (value != NULL) {
+      *value = NULL;
+    }
+    return FALSE;
+  }
 }
 
 void json_object_object_del(struct json_object* jso, const char *key)
@@ -281,13 +334,15 @@ void json_object_object_del(struct json_object* jso, const char *key)
 /* json_object_boolean */
 
 static int json_object_boolean_to_json_string(struct json_object* jso,
-                                             struct printbuf *pb)
+                                             struct printbuf *pb,
+                                             int level,
+                                                 int flags)
 {
   if(jso->o.c_boolean) return sprintbuf(pb, "true");
   else return sprintbuf(pb, "false");
 }
 
-struct json_object* json_object_new_boolean(boolean b)
+struct json_object* json_object_new_boolean(json_bool b)
 {
   struct json_object *jso = json_object_new(json_type_boolean);
   if(!jso) return NULL;
@@ -296,18 +351,18 @@ struct json_object* json_object_new_boolean(boolean b)
   return jso;
 }
 
-boolean json_object_get_boolean(struct json_object *jso)
+json_bool json_object_get_boolean(struct json_object *jso)
 {
   if(!jso) return FALSE;
   switch(jso->o_type) {
   case json_type_boolean:
     return jso->o.c_boolean;
   case json_type_int:
-    return (jso->o.c_int != 0);
+    return (jso->o.c_int64 != 0);
   case json_type_double:
     return (jso->o.c_double != 0);
   case json_type_string:
-    return (strlen(jso->o.c_string) != 0);
+    return (jso->o.c_string.len != 0);
   default:
     return FALSE;
   }
@@ -317,34 +372,84 @@ boolean json_object_get_boolean(struct json_object *jso)
 /* json_object_int */
 
 static int json_object_int_to_json_string(struct json_object* jso,
-                                         struct printbuf *pb)
+                                         struct printbuf *pb,
+                                         int level,
+                                         int flags)
+{
+  return sprintbuf(pb, "%"PRId64, jso->o.c_int64);
+}
+
+struct json_object* json_object_new_int(int32_t i)
+{
+  struct json_object *jso = json_object_new(json_type_int);
+  if(!jso) return NULL;
+  jso->_to_json_string = &json_object_int_to_json_string;
+  jso->o.c_int64 = i;
+  return jso;
+}
+
+int32_t json_object_get_int(struct json_object *jso)
 {
-  return sprintbuf(pb, "%d", jso->o.c_int);
+  int64_t cint64;
+  enum json_type o_type;
+
+  if(!jso) return 0;
+
+  o_type = jso->o_type;
+  cint64 = jso->o.c_int64;
+
+  if (o_type == json_type_string)
+  {
+       /*
+        * Parse strings into 64-bit numbers, then use the
+        * 64-to-32-bit number handling below.
+        */
+       if (json_parse_int64(jso->o.c_string.str, &cint64) != 0)
+               return 0; /* whoops, it didn't work. */
+       o_type = json_type_int;
+  }
+
+  switch(o_type) {
+  case json_type_int:
+       /* Make sure we return the correct values for out of range numbers. */
+       if (cint64 <= INT32_MIN)
+               return INT32_MIN;
+       else if (cint64 >= INT32_MAX)
+               return INT32_MAX;
+       else
+               return (int32_t)cint64;
+  case json_type_double:
+    return (int32_t)jso->o.c_double;
+  case json_type_boolean:
+    return jso->o.c_boolean;
+  default:
+    return 0;
+  }
 }
 
-struct json_object* json_object_new_int(int i)
+struct json_object* json_object_new_int64(int64_t i)
 {
   struct json_object *jso = json_object_new(json_type_int);
   if(!jso) return NULL;
   jso->_to_json_string = &json_object_int_to_json_string;
-  jso->o.c_int = i;
+  jso->o.c_int64 = i;
   return jso;
 }
 
-int json_object_get_int(struct json_object *jso)
+int64_t json_object_get_int64(struct json_object *jso)
 {
-  int cint;
+   int64_t cint;
 
   if(!jso) return 0;
   switch(jso->o_type) {
   case json_type_int:
-    return jso->o.c_int;
+    return jso->o.c_int64;
   case json_type_double:
-    return (int)jso->o.c_double;
+    return (int64_t)jso->o.c_double;
   case json_type_boolean:
     return jso->o.c_boolean;
   case json_type_string:
-    if(sscanf(jso->o.c_string, "%d", &cint) == 1) return cint;
+       if (json_parse_int64(jso->o.c_string.str, &cint) == 0) return cint;
   default:
     return 0;
   }
@@ -354,9 +459,11 @@ int json_object_get_int(struct json_object *jso)
 /* json_object_double */
 
 static int json_object_double_to_json_string(struct json_object* jso,
-                                            struct printbuf *pb)
+                                            struct printbuf *pb,
+                                            int level,
+                                                int flags)
 {
-  return sprintbuf(pb, "%lf", jso->o.c_double);
+  return sprintbuf(pb, "%f", jso->o.c_double);
 }
 
 struct json_object* json_object_new_double(double d)
@@ -377,11 +484,11 @@ double json_object_get_double(struct json_object *jso)
   case json_type_double:
     return jso->o.c_double;
   case json_type_int:
-    return jso->o.c_int;
+    return jso->o.c_int64;
   case json_type_boolean:
     return jso->o.c_boolean;
   case json_type_string:
-    if(sscanf(jso->o.c_string, "%lf", &cdouble) == 1) return cdouble;
+    if(sscanf(jso->o.c_string.str, "%lf", &cdouble) == 1) return cdouble;
   default:
     return 0.0;
   }
@@ -391,17 +498,19 @@ double json_object_get_double(struct json_object *jso)
 /* json_object_string */
 
 static int json_object_string_to_json_string(struct json_object* jso,
-                                            struct printbuf *pb)
+                                            struct printbuf *pb,
+                                            int level,
+                                                int flags)
 {
   sprintbuf(pb, "\"");
-  json_escape_str(pb, jso->o.c_string);
+  json_escape_str(pb, jso->o.c_string.str, jso->o.c_string.len);
   sprintbuf(pb, "\"");
   return 0;
 }
 
 static void json_object_string_delete(struct json_object* jso)
 {
-  free(jso->o.c_string);
+  free(jso->o.c_string.str);
   json_object_generic_delete(jso);
 }
 
@@ -411,7 +520,8 @@ struct json_object* json_object_new_string(const char *s)
   if(!jso) return NULL;
   jso->_delete = &json_object_string_delete;
   jso->_to_json_string = &json_object_string_to_json_string;
-  jso->o.c_string = strdup(s);
+  jso->o.c_string.str = strdup(s);
+  jso->o.c_string.len = strlen(s);
   return jso;
 }
 
@@ -421,7 +531,9 @@ struct json_object* json_object_new_string_len(const char *s, int len)
   if(!jso) return NULL;
   jso->_delete = &json_object_string_delete;
   jso->_to_json_string = &json_object_string_to_json_string;
-  jso->o.c_string = strndup(s, len);
+  jso->o.c_string.str = malloc(len);
+  memcpy(jso->o.c_string.str, (void *)s, len);
+  jso->o.c_string.len = len;
   return jso;
 }
 
@@ -430,30 +542,65 @@ const char* json_object_get_string(struct json_object *jso)
   if(!jso) return NULL;
   switch(jso->o_type) {
   case json_type_string:
-    return jso->o.c_string;
+    return jso->o.c_string.str;
   default:
     return json_object_to_json_string(jso);
   }
 }
 
+int json_object_get_string_len(struct json_object *jso)  {
+  if(!jso) return 0;
+  switch(jso->o_type) {
+  case json_type_string:
+    return jso->o.c_string.len;
+  default:
+    return 0;
+  }
+}
+
 
 /* json_object_array */
 
 static int json_object_array_to_json_string(struct json_object* jso,
-                                           struct printbuf *pb)
-{
-  int i;
-  sprintbuf(pb, "[");
-  for(i=0; i < json_object_array_length(jso); i++) {
-         struct json_object *val;
-         if(i) { sprintbuf(pb, ", "); }
-         else { sprintbuf(pb, " "); }
-
-      val = json_object_array_get_idx(jso, i);
-         if(val == NULL) { sprintbuf(pb, "null"); }
-         else { val->_to_json_string(val, pb); }
-  }
-  return sprintbuf(pb, " ]");
+                                            struct printbuf *pb,
+                                            int level,
+                                            int flags)
+{
+       int had_children = 0;
+       int ii;
+       sprintbuf(pb, "[");
+       if (flags & JSON_C_TO_STRING_PRETTY)
+               sprintbuf(pb, "\n");
+       for(ii=0; ii < json_object_array_length(jso); ii++)
+       {
+               struct json_object *val;
+               if (had_children)
+               {
+                       sprintbuf(pb, ",");
+                       if (flags & JSON_C_TO_STRING_PRETTY)
+                               sprintbuf(pb, "\n");
+               }
+               had_children = 1;
+               if (flags & JSON_C_TO_STRING_SPACED)
+                       sprintbuf(pb, " ");
+               indent(pb, level + 1, flags);
+               val = json_object_array_get_idx(jso, ii);
+               if(val == NULL)
+                       sprintbuf(pb, "null");
+               else
+                       val->_to_json_string(val, pb, level+1, flags);
+       }
+       if (flags & JSON_C_TO_STRING_PRETTY)
+       {
+               if (had_children)
+                       sprintbuf(pb, "\n");
+               indent(pb,level,flags);
+       }
+
+       if (flags & JSON_C_TO_STRING_SPACED)
+               return sprintbuf(pb, " ]");
+       else
+               return sprintbuf(pb, "]");
 }
 
 static void json_object_array_entry_free(void *data)
@@ -488,6 +635,11 @@ struct array_list* json_object_get_array(struct json_object *jso)
   }
 }
 
+void json_object_array_sort(struct json_object *jso, int(*sort_fn)(const void *, const void *))
+{
+  array_list_sort(jso->o.c_array, sort_fn);
+}
+
 int json_object_array_length(struct json_object *jso)
 {
   return array_list_length(jso->o.c_array);
index 0cdb8cb..b1837ea 100644 (file)
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
  * Michael Clark <michael@metaparadigm.com>
+ * Copyright (c) 2009 Hewlett-Packard Development Company, L.P.
  *
  * This library is free software; you can redistribute it and/or modify
  * it under the terms of the MIT license. See COPYING for details.
 #ifndef _json_object_h_
 #define _json_object_h_
 
+#include "json_inttypes.h"
+
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 #define JSON_OBJECT_DEF_HASH_ENTRIES 16
 
+/**
+ * A flag for the json_object_to_json_string_ext() and
+ * json_object_to_file_ext() functions which causes the output
+ * to have no extra whitespace or formatting applied.
+ */
+#define JSON_C_TO_STRING_PLAIN      0
+/**
+ * A flag for the json_object_to_json_string_ext() and
+ * json_object_to_file_ext() functions which causes the output to have
+ * minimal whitespace inserted to make things slightly more readable.
+ */
+#define JSON_C_TO_STRING_SPACED     (1<<0)
+/**
+ * A flag for the json_object_to_json_string_ext() and
+ * json_object_to_file_ext() functions which causes
+ * the output to be formatted.
+ *
+ * See the "Two Space Tab" option at http://jsonformatter.curiousconcept.com/
+ * for an example of the format.
+ */
+#define JSON_C_TO_STRING_PRETTY     (1<<1)
+
 #undef FALSE
-#define FALSE ((boolean)0)
+#define FALSE ((json_bool)0)
 
 #undef TRUE
-#define TRUE ((boolean)1)
+#define TRUE ((json_bool)1)
 
 extern const char *json_number_chars;
 extern const char *json_hex_chars;
 
+/* CAW: added for ANSI C iteration correctness */
+struct json_object_iter
+{
+       char *key;
+       struct json_object *val;
+       struct lh_entry *entry;
+};
+
 /* forward structure definitions */
 
-typedef int boolean;
+typedef int json_bool;
 typedef struct printbuf printbuf;
 typedef struct lh_table lh_table;
 typedef struct array_list array_list;
@@ -40,25 +73,31 @@ typedef struct json_tokener json_tokener;
 /* supported object types */
 
 typedef enum json_type {
+  /* If you change this, be sure to update json_type_to_name() too */
   json_type_null,
   json_type_boolean,
   json_type_double,
   json_type_int,
   json_type_object,
   json_type_array,
-  json_type_string
+  json_type_string,
 } json_type;
 
 /* reference counting functions */
 
 /**
- * Increment the reference count of json_object
+ * Increment the reference count of json_object, thereby grabbing shared 
+ * ownership of obj.
+ *
  * @param obj the json_object instance
  */
 extern struct json_object* json_object_get(struct json_object *obj);
 
 /**
- * Decrement the reference count of json_object and free if it reaches zero
+ * Decrement the reference count of json_object and free if it reaches zero.
+ * You must have ownership of obj prior to doing this or you will cause an
+ * imbalance in the reference count.
+ *
  * @param obj the json_object instance
  */
 extern void json_object_put(struct json_object *obj);
@@ -68,6 +107,7 @@ extern void json_object_put(struct json_object *obj);
  * Check if the json_object is of a given type
  * @param obj the json_object instance
  * @param type one of:
+     json_type_null (i.e. obj == NULL),
      json_type_boolean,
      json_type_double,
      json_type_int,
@@ -78,9 +118,12 @@ extern void json_object_put(struct json_object *obj);
 extern int json_object_is_type(struct json_object *obj, enum json_type type);
 
 /**
- * Get the type of the json_object
+ * Get the type of the json_object.  See also json_type_to_name() to turn this
+ * into a string suitable, for instance, for logging.
+ *
  * @param obj the json_object instance
  * @returns type being one of:
+     json_type_null (i.e. obj == NULL),
      json_type_boolean,
      json_type_double,
      json_type_int,
@@ -92,16 +135,32 @@ extern int json_object_is_type(struct json_object *obj, enum json_type type);
 extern enum json_type _json_object_get_type(struct json_object *obj);
 
 
-/** Stringify object to json format
+/** Stringify object to json format.
+ * Equivalent to json_object_to_json_string_ext(obj, JSON_C_TO_STRING_SPACED)
  * @param obj the json_object instance
  * @returns a string in JSON format
  */
 extern const char* json_object_to_json_string(struct json_object *obj);
 
+/** Stringify object to json format
+ * @param obj the json_object instance
+ * @param flags formatting options, see JSON_C_TO_STRING_PRETTY and other constants
+ * @returns a string in JSON format
+ */
+extern const char* json_object_to_json_string_ext(struct json_object *obj, int
+flags);
+
 
 /* object type methods */
 
-/** Create a new empty object
+/** Create a new empty object with a reference count of 1.  The caller of
+ * this object initially has sole ownership.  Remember, when using
+ * json_object_object_add or json_object_array_put_idx, ownership will
+ * transfer to the object/array.  Call json_object_get if you want to maintain
+ * shared ownership or also add this object as a child of multiple objects or
+ * arrays.  Any ownerships you acquired but did not transfer must be released
+ * through json_object_put.
+ *
  * @returns a json_object of type json_type_object
  */
 extern struct json_object* json_object_new_object(void);
@@ -116,7 +175,13 @@ extern struct lh_table* json_object_get_object(struct json_object *obj);
  *
  * The reference count will *not* be incremented. This is to make adding
  * fields to objects in code more compact. If you want to retain a reference
- * to an added object you must wrap the passed object with json_object_get
+ * to an added object, independent of the lifetime of obj, you must wrap the
+ * passed object with json_object_get.
+ *
+ * Upon calling this, the ownership of val transfers to obj.  Thus you must
+ * make sure that you do in fact have ownership over this object.  For instance,
+ * json_object_new_object will give you ownership until you transfer it,
+ * whereas json_object_object_get does not.
  *
  * @param obj the json_object instance
  * @param key the object field name (a private copy will be duplicated)
@@ -126,16 +191,52 @@ extern void json_object_object_add(struct json_object* obj, const char *key,
                                   struct json_object *val);
 
 /** Get the json_object associate with a given object field
+ *
+ * *No* reference counts will be changed.  There is no need to manually adjust
+ * reference counts through the json_object_put/json_object_get methods unless
+ * you need to have the child (value) reference maintain a different lifetime
+ * than the owning parent (obj). Ownership of the returned value is retained
+ * by obj (do not do json_object_put unless you have done a json_object_get).
+ * If you delete the value from obj (json_object_object_del) and wish to access
+ * the returned reference afterwards, make sure you have first gotten shared
+ * ownership through json_object_get (& don't forget to do a json_object_put
+ * or transfer ownership to prevent a memory leak).
+ *
  * @param obj the json_object instance
  * @param key the object field name
  * @returns the json_object associated with the given field name
+ * @deprecated Please use json_object_object_get_ex
  */
 extern struct json_object* json_object_object_get(struct json_object* obj,
                                                  const char *key);
 
+/** Get the json_object associated with a given object field.  
+ *
+ * This returns true if the key is found, false in all other cases (including 
+ * if obj isn't a json_type_object).
+ *
+ * *No* reference counts will be changed.  There is no need to manually adjust
+ * reference counts through the json_object_put/json_object_get methods unless
+ * you need to have the child (value) reference maintain a different lifetime
+ * than the owning parent (obj).  Ownership of value is retained by obj.
+ *
+ * @param obj the json_object instance
+ * @param key the object field name
+ * @param value a pointer where to store a reference to the json_object 
+ *              associated with the given field name.
+ *
+ *              It is safe to pass a NULL value.
+ * @returns whether or not the key exists
+ */
+extern json_bool json_object_object_get_ex(struct json_object* obj,
+                                                 const char *key,
+                                                  struct json_object **value);
+
 /** Delete the given json_object field
  *
- * The reference count will be decremented for the deleted object
+ * The reference count will be decremented for the deleted object.  If there
+ * are no more owners of the value represented by this key, then the value is
+ * freed.  Otherwise, the reference to the value will remain in memory.
  *
  * @param obj the json_object instance
  * @param key the object field name
@@ -145,7 +246,8 @@ extern void json_object_object_del(struct json_object* obj, const char *key);
 /** Iterate through all keys and values of an object
  * @param obj the json_object instance
  * @param key the local name for the char* key variable defined in the body
- * @param val the local name for the json_object* object variable defined in the body
+ * @param val the local name for the json_object* object variable defined in
+ *            the body
  */
 #if defined(__GNUC__) && !defined(__STRICT_ANSI__)
 
@@ -187,6 +289,16 @@ extern struct array_list* json_object_get_array(struct json_object *obj);
  */
 extern int json_object_array_length(struct json_object *obj);
 
+/** Sorts the elements of jso of type json_type_array
+*
+* Pointers to the json_object pointers will be passed as the two arguments
+* to @sort_fn
+*
+* @param obj the json_object instance
+* @param sort_fn a sorting function
+*/
+extern void json_object_array_sort(struct json_object *jso, int(*sort_fn)(const void *, const void *));
+
 /** Add an element to the end of a json_object of type json_type_array
  *
  * The reference count will *not* be incremented. This is to make adding
@@ -225,46 +337,76 @@ extern int json_object_array_put_idx(struct json_object *obj, int idx,
 extern struct json_object* json_object_array_get_idx(struct json_object *obj,
                                                     int idx);
 
-/* boolean type methods */
+/* json_bool type methods */
 
 /** Create a new empty json_object of type json_type_boolean
- * @param b a boolean TRUE or FALSE (0 or 1)
+ * @param b a json_bool TRUE or FALSE (0 or 1)
  * @returns a json_object of type json_type_boolean
  */
-extern struct json_object* json_object_new_boolean(boolean b);
+extern struct json_object* json_object_new_boolean(json_bool b);
 
-/** Get the boolean value of a json_object
+/** Get the json_bool value of a json_object
  *
- * The type is coerced to a boolean if the passed object is not a boolean.
+ * The type is coerced to a json_bool if the passed object is not a json_bool.
  * integer and double objects will return FALSE if there value is zero
  * or TRUE otherwise. If the passed object is a string it will return
  * TRUE if it has a non zero length. If any other object type is passed
  * TRUE will be returned if the object is not NULL.
  *
  * @param obj the json_object instance
- * @returns a boolean
+ * @returns a json_bool
  */
-extern boolean json_object_get_boolean(struct json_object *obj);
+extern json_bool json_object_get_boolean(struct json_object *obj);
 
 
 /* int type methods */
 
 /** Create a new empty json_object of type json_type_int
+ * Note that values are stored as 64-bit values internally.
+ * To ensure the full range is maintained, use json_object_new_int64 instead.
+ * @param i the integer
+ * @returns a json_object of type json_type_int
+ */
+extern struct json_object* json_object_new_int(int32_t i);
+
+
+/** Create a new empty json_object of type json_type_int
  * @param i the integer
  * @returns a json_object of type json_type_int
  */
-extern struct json_object* json_object_new_int(int i);
+extern struct json_object* json_object_new_int64(int64_t i);
+
 
 /** Get the int value of a json_object
  *
  * The type is coerced to a int if the passed object is not a int.
  * double objects will return their integer conversion. Strings will be
- * parsed as an integer. If no conversion exists then 0 is returned.
+ * parsed as an integer. If no conversion exists then 0 is returned
+ * and errno is set to EINVAL. null is equivalent to 0 (no error values set)
+ *
+ * Note that integers are stored internally as 64-bit values.
+ * If the value of too big or too small to fit into 32-bit, INT32_MAX or
+ * INT32_MIN are returned, respectively.
  *
  * @param obj the json_object instance
  * @returns an int
  */
-extern int json_object_get_int(struct json_object *obj);
+extern int32_t json_object_get_int(struct json_object *obj);
+
+/** Get the int value of a json_object
+ *
+ * The type is coerced to a int64 if the passed object is not a int64.
+ * double objects will return their int64 conversion. Strings will be
+ * parsed as an int64. If no conversion exists then 0 is returned.
+ *
+ * NOTE: Set errno to 0 directly before a call to this function to determine
+ * whether or not conversion was successful (it does not clear the value for
+ * you).
+ *
+ * @param obj the json_object instance
+ * @returns an int64
+ */
+extern int64_t json_object_get_int64(struct json_object *obj);
 
 
 /* double type methods */
@@ -275,14 +417,28 @@ extern int json_object_get_int(struct json_object *obj);
  */
 extern struct json_object* json_object_new_double(double d);
 
-/** Get the double value of a json_object
+/** Get the double floating point value of a json_object
  *
  * The type is coerced to a double if the passed object is not a double.
- * integer objects will return their dboule conversion. Strings will be
- * parsed as a double. If no conversion exists then 0.0 is returned.
+ * integer objects will return their double conversion. Strings will be
+ * parsed as a double. If no conversion exists then 0.0 is returned and
+ * errno is set to EINVAL. null is equivalent to 0 (no error values set)
+ *
+ * If the value is too big to fit in a double, then the value is set to
+ * the closest infinity with errno set to ERANGE. If strings cannot be
+ * converted to their double value, then EINVAL is set & NaN is returned.
+ *
+ * Arrays of length 0 are interpreted as 0 (with no error flags set).
+ * Arrays of length 1 are effectively cast to the equivalent object and
+ * converted using the above rules.  All other arrays set the error to
+ * EINVAL & return NaN.
+ *
+ * NOTE: Set errno to 0 directly before a call to this function to
+ * determine whether or not conversion was successful (it does not clear
+ * the value for you).
  *
  * @param obj the json_object instance
- * @returns an double
+ * @returns a double floating point number
  */
 extern double json_object_get_double(struct json_object *obj);
 
@@ -313,6 +469,16 @@ extern struct json_object* json_object_new_string_len(const char *s, int len);
  */
 extern const char* json_object_get_string(struct json_object *obj);
 
+/** Get the string length of a json_object
+ *
+ * If the passed object is not of type json_type_string then zero
+ * will be returned.
+ *
+ * @param obj the json_object instance
+ * @returns int
+ */
+extern int json_object_get_string_len(struct json_object *obj);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/json_object_iterator.c b/json_object_iterator.c
new file mode 100644 (file)
index 0000000..7066649
--- /dev/null
@@ -0,0 +1,168 @@
+/**
+*******************************************************************************
+* @file json_object_iterator.c
+*
+* Copyright (c) 2009-2012 Hewlett-Packard Development Company, L.P.
+*
+* This library is free software; you can redistribute it and/or modify
+* it under the terms of the MIT license. See COPYING for details.
+*
+* @brief  json-c forces clients to use its private data
+*         structures for JSON Object iteration.  This API
+*         implementation corrects that by abstracting the
+*         private json-c details.
+*
+*******************************************************************************
+*/
+
+#include <stddef.h>
+
+#include "json.h"
+#include "json_object_private.h"
+
+#include "json_object_iterator.h"
+
+/**
+ * How It Works
+ *
+ * For each JSON Object, json-c maintains a linked list of zero
+ * or more lh_entry (link-hash entry) structures inside the
+ * Object's link-hash table (lh_table).
+ *
+ * Each lh_entry structure on the JSON Object's linked list
+ * represents a single name/value pair.  The "next" field of the
+ * last lh_entry in the list is set to NULL, which terminates
+ * the list.
+ *
+ * We represent a valid iterator that refers to an actual
+ * name/value pair via a pointer to the pair's lh_entry
+ * structure set as the iterator's opaque_ field.
+ *
+ * We follow json-c's current pair list representation by
+ * representing a valid "end" iterator (one that refers past the
+ * last pair) with a NULL value in the iterator's opaque_ field.
+ *
+ * A JSON Object without any pairs in it will have the "head"
+ * field of its lh_table structure set to NULL.  For such an
+ * object, json_object_iter_begin will return an iterator with
+ * the opaque_ field set to NULL, which is equivalent to the
+ * "end" iterator.
+ *
+ * When iterating, we simply update the iterator's opaque_ field
+ * to point to the next lh_entry structure in the linked list.
+ * opaque_ will become NULL once we iterate past the last pair
+ * in the list, which makes the iterator equivalent to the "end"
+ * iterator.
+ */
+
+/// Our current representation of the "end" iterator;
+///
+/// @note May not always be NULL
+static const void* kObjectEndIterValue = NULL;
+
+/**
+ * ****************************************************************************
+ */
+struct json_object_iterator
+json_object_iter_begin(struct json_object* obj)
+{
+    struct json_object_iterator iter;
+    struct lh_table* pTable;
+
+    /// @note json_object_get_object will return NULL if passed NULL
+    ///       or a non-json_type_object instance
+    pTable = json_object_get_object(obj);
+    JASSERT(NULL != pTable);
+
+    /// @note For a pair-less Object, head is NULL, which matches our
+    ///       definition of the "end" iterator
+    iter.opaque_ = pTable->head;
+    return iter;
+}
+
+/**
+ * ****************************************************************************
+ */
+struct json_object_iterator
+json_object_iter_end(const struct json_object* obj)
+{
+    struct json_object_iterator iter;
+
+    JASSERT(NULL != obj);
+    JASSERT(json_object_is_type(obj, json_type_object));
+
+    iter.opaque_ = kObjectEndIterValue;
+
+    return iter;
+}
+
+/**
+ * ****************************************************************************
+ */
+void
+json_object_iter_next(struct json_object_iterator* iter)
+{
+    JASSERT(NULL != iter);
+    JASSERT(kObjectEndIterValue != iter->opaque_);
+
+    iter->opaque_ = ((struct lh_entry *)iter->opaque_)->next;
+}
+
+
+/**
+ * ****************************************************************************
+ */
+const char*
+json_object_iter_peek_name(const struct json_object_iterator* iter)
+{
+    JASSERT(NULL != iter);
+    JASSERT(kObjectEndIterValue != iter->opaque_);
+
+    return (const char*)(((struct lh_entry *)iter->opaque_)->k);
+}
+
+
+/**
+ * ****************************************************************************
+ */
+struct json_object*
+json_object_iter_peek_value(const struct json_object_iterator* iter)
+{
+    JASSERT(NULL != iter);
+    JASSERT(kObjectEndIterValue != iter->opaque_);
+
+    return (struct json_object*)(((struct lh_entry *)iter->opaque_)->v);
+}
+
+
+/**
+ * ****************************************************************************
+ */
+json_bool
+json_object_iter_equal(const struct json_object_iterator* iter1,
+                       const struct json_object_iterator* iter2)
+{
+    JASSERT(NULL != iter1);
+    JASSERT(NULL != iter2);
+
+    return (iter1->opaque_ == iter2->opaque_);
+}
+
+
+/**
+ * ****************************************************************************
+ */
+struct json_object_iterator
+json_object_iter_init_default(void)
+{
+    struct json_object_iterator iter;
+
+    /**
+     * @note Make this a negative, invalid value, such that
+     *       accidental access to it would likely be trapped by the
+     *       hardware as an invalid address.
+     */
+    iter.opaque_ = NULL;
+
+    return iter;
+}
diff --git a/json_object_iterator.h b/json_object_iterator.h
new file mode 100644 (file)
index 0000000..f6e7ca6
--- /dev/null
@@ -0,0 +1,239 @@
+/**
+*******************************************************************************
+* @file json_object_iterator.h
+*
+* Copyright (c) 2009-2012 Hewlett-Packard Development Company, L.P.
+*
+* This library is free software; you can redistribute it and/or modify
+* it under the terms of the MIT license. See COPYING for details.
+*
+* @brief  json-c forces clients to use its private data
+*         structures for JSON Object iteration.  This API
+*         corrects that by abstracting the private json-c
+*         details.
+*
+* API attributes: <br>
+*   * Thread-safe: NO<br>
+*   * Reentrant: NO
+*
+*******************************************************************************
+*/
+
+
+#ifndef JSON_OBJECT_ITERATOR_H
+#define JSON_OBJECT_ITERATOR_H
+
+#include <stddef.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Forward declaration for the opaque iterator information.
+ */
+struct json_object_iter_info_;
+
+/**
+ * The opaque iterator that references a name/value pair within
+ * a JSON Object instance or the "end" iterator value.
+ */
+struct json_object_iterator {
+    const void* opaque_;
+};
+
+
+/**
+ * forward declaration of json-c's JSON value instance structure
+ */
+struct json_object;
+
+
+/**
+ * Initializes an iterator structure to a "default" value that
+ * is convenient for initializing an iterator variable to a
+ * default state (e.g., initialization list in a class'
+ * constructor).
+ *
+ * @code
+ * struct json_object_iterator iter = json_object_iter_init_default();
+ * MyClass() : iter_(json_object_iter_init_default())
+ * @endcode
+ *
+ * @note The initialized value doesn't reference any specific
+ *       pair, is considered an invalid iterator, and MUST NOT
+ *       be passed to any json-c API that expects a valid
+ *       iterator.
+ *
+ * @note User and internal code MUST NOT make any assumptions
+ *       about and dependencies on the value of the "default"
+ *       iterator value.
+ *
+ * @return json_object_iterator
+ */
+struct json_object_iterator
+json_object_iter_init_default(void);
+
+/** Retrieves an iterator to the first pair of the JSON Object.
+ *
+ * @warning    Any modification of the underlying pair invalidates all
+ *             iterators to that pair.
+ *
+ * @param obj  JSON Object instance (MUST be of type json_object)
+ *
+ * @return json_object_iterator If the JSON Object has at
+ *              least one pair, on return, the iterator refers
+ *              to the first pair. If the JSON Object doesn't
+ *              have any pairs, the returned iterator is
+ *              equivalent to the "end" iterator for the same
+ *              JSON Object instance.
+ *
+ * @code
+ * struct json_object_iterator it;
+ * struct json_object_iterator itEnd;
+ * struct json_object* obj;
+ *
+ * obj = json_tokener_parse("{'first':'george', 'age':100}");
+ * it = json_object_iter_begin(obj);
+ * itEnd = json_object_iter_end(obj);
+ *
+ * while (!json_object_iter_equal(&it, &itEnd)) {
+ *     printf("%s\n",
+ *            json_object_iter_peek_name(&it));
+ *     json_object_iter_next(&it);
+ * }
+ *
+ * @endcode
+ */
+struct json_object_iterator
+json_object_iter_begin(struct json_object* obj);
+
+/** Retrieves the iterator that represents the position beyond the
+ *  last pair of the given JSON Object instance.
+ *
+ *  @warning Do NOT write code that assumes that the "end"
+ *        iterator value is NULL, even if it is so in a
+ *        particular instance of the implementation.
+ *
+ *  @note The reason we do not (and MUST NOT) provide
+ *        "json_object_iter_is_end(json_object_iterator* iter)"
+ *        type of API is because it would limit the underlying
+ *        representation of name/value containment (or force us
+ *        to add additional, otherwise unnecessary, fields to
+ *        the iterator structure). The "end" iterator and the
+ *        equality test method, on the other hand, permit us to
+ *        cleanly abstract pretty much any reasonable underlying
+ *        representation without burdening the iterator
+ *        structure with unnecessary data.
+ *
+ *  @note For performance reasons, memorize the "end" iterator prior
+ *        to any loop.
+ *
+ * @param obj JSON Object instance (MUST be of type json_object)
+ *
+ * @return json_object_iterator On return, the iterator refers
+ *              to the "end" of the Object instance's pairs
+ *              (i.e., NOT the last pair, but "beyond the last
+ *              pair" value)
+ */
+struct json_object_iterator
+json_object_iter_end(const struct json_object* obj);
+
+/** Returns an iterator to the next pair, if any
+ *
+ * @warning    Any modification of the underlying pair
+ *             invalidates all iterators to that pair.
+ *
+ * @param iter [IN/OUT] Pointer to iterator that references a
+ *         name/value pair; MUST be a valid, non-end iterator.
+ *         WARNING: bad things will happen if invalid or "end"
+ *         iterator is passed. Upon return will contain the
+ *         reference to the next pair if there is one; if there
+ *         are no more pairs, will contain the "end" iterator
+ *         value, which may be compared against the return value
+ *         of json_object_iter_end() for the same JSON Object
+ *         instance.
+ */
+void
+json_object_iter_next(struct json_object_iterator* iter);
+
+
+/** Returns a const pointer to the name of the pair referenced
+ *  by the given iterator.
+ *
+ * @param iter pointer to iterator that references a name/value
+ *             pair; MUST be a valid, non-end iterator.
+ *
+ * @warning    bad things will happen if an invalid or
+ *                     "end" iterator is passed.
+ *
+ * @return const char* Pointer to the name of the referenced
+ *         name/value pair.  The name memory belongs to the
+ *         name/value pair, will be freed when the pair is
+ *         deleted or modified, and MUST NOT be modified or
+ *         freed by the user.
+ */
+const char*
+json_object_iter_peek_name(const struct json_object_iterator* iter);
+
+
+/** Returns a pointer to the json-c instance representing the
+ *  value of the referenced name/value pair, without altering
+ *  the instance's reference count.
+ *
+ * @param iter         pointer to iterator that references a name/value
+ *                     pair; MUST be a valid, non-end iterator.
+ *
+ * @warning    bad things will happen if invalid or
+ *             "end" iterator is passed.
+ *
+ * @return struct json_object* Pointer to the json-c value
+ *         instance of the referenced name/value pair;  the
+ *         value's reference count is not changed by this
+ *         function: if you plan to hold on to this json-c node,
+ *         take a look at json_object_get() and
+ *         json_object_put(). IMPORTANT: json-c API represents
+ *         the JSON Null value as a NULL json_object instance
+ *         pointer.
+ */
+struct json_object*
+json_object_iter_peek_value(const struct json_object_iterator* iter);
+
+
+/** Tests two iterators for equality.  Typically used to test
+ *  for end of iteration by comparing an iterator to the
+ *  corresponding "end" iterator (that was derived from the same
+ *  JSON Object instance).
+ *
+ *  @note The reason we do not (and MUST NOT) provide
+ *        "json_object_iter_is_end(json_object_iterator* iter)"
+ *        type of API is because it would limit the underlying
+ *        representation of name/value containment (or force us
+ *        to add additional, otherwise unnecessary, fields to
+ *        the iterator structure). The equality test method, on
+ *        the other hand, permits us to cleanly abstract pretty
+ *        much any reasonable underlying representation.
+ *
+ * @param iter1 Pointer to first valid, non-NULL iterator
+ * @param iter2 POinter to second valid, non-NULL iterator
+ *
+ * @warning    if a NULL iterator pointer or an uninitialized
+ *             or invalid iterator, or iterators derived from
+ *             different JSON Object instances are passed, bad things
+ *             will happen!
+ *
+ * @return json_bool non-zero if iterators are equal (i.e., both
+ *         reference the same name/value pair or are both at
+ *         "end"); zero if they are not equal.
+ */
+json_bool
+json_object_iter_equal(const struct json_object_iterator* iter1,
+                       const struct json_object_iterator* iter2);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif // JSON_OBJECT_ITERATOR_H
index 9fb4011..597332b 100644 (file)
@@ -18,7 +18,9 @@ extern "C" {
 
 typedef void (json_object_delete_fn)(struct json_object *o);
 typedef int (json_object_to_json_string_fn)(struct json_object *o,
-                                           struct printbuf *pb);
+                                               struct printbuf *pb,
+                                               int level,
+                                               int flags);
 
 struct json_object
 {
@@ -28,23 +30,18 @@ struct json_object
   int _ref_count;
   struct printbuf *_pb;
   union data {
-    boolean c_boolean;
+    json_bool c_boolean;
     double c_double;
-    int c_int;
+    int64_t c_int64;
     struct lh_table *c_object;
     struct array_list *c_array;
-    char *c_string;
+    struct {
+        char *str;
+        int len;
+    } c_string;
   } o;
 };
 
-/* CAW: added for ANSI C iteration correctness */
-struct json_object_iter
-{
-       char *key;
-       struct json_object *val;
-       struct lh_entry *entry;
-};
-
 #ifdef __cplusplus
 }
 #endif
index 04f11ba..1c82484 100644 (file)
 #include <stddef.h>
 #include <ctype.h>
 #include <string.h>
+#include <limits.h>
 
 #include "bits.h"
 #include "debug.h"
 #include "printbuf.h"
 #include "arraylist.h"
+#include "json_inttypes.h"
 #include "json_object.h"
 #include "json_tokener.h"
-
+#include "json_util.h"
 
 #if !HAVE_STRNCASECMP && defined(_MSC_VER)
   /* MSC has the version as _strnicmp */
@@ -41,10 +43,11 @@ static const char* json_null_str = "null";
 static const char* json_true_str = "true";
 static const char* json_false_str = "false";
 
+// XXX after v0.10 this array will become static:
 const char* json_tokener_errors[] = {
   "success",
   "continue",
-  "nesting to deep",
+  "nesting too deep",
   "unexpected end of data",
   "unexpected character",
   "null expected",
@@ -58,6 +61,24 @@ const char* json_tokener_errors[] = {
   "expected comment",
 };
 
+const char *json_tokener_error_desc(enum json_tokener_error jerr)
+{
+       if (jerr < 0 || jerr > sizeof(json_tokener_errors))
+               return "Unknown error, invalid json_tokener_error value passed to json_tokener_error_desc()";
+       return json_tokener_errors[jerr];
+}
+
+enum json_tokener_error json_tokener_get_error(json_tokener *tok)
+{
+       return tok->err;
+}
+
+/* Stuff for decoding unicode sequences */
+#define IS_HIGH_SURROGATE(uc) (((uc) & 0xFC00) == 0xD800)
+#define IS_LOW_SURROGATE(uc)  (((uc) & 0xFC00) == 0xDC00)
+#define DECODE_SURROGATE_PAIR(hi,lo) ((((hi) & 0x3FF) << 10) + ((lo) & 0x3FF) + 0x10000)
+static unsigned char utf8_replacement_char[3] = { 0xEF, 0xBF, 0xBD };
+
 
 struct json_tokener* json_tokener_new(void)
 {
@@ -101,15 +122,30 @@ void json_tokener_reset(struct json_tokener *tok)
 
 struct json_object* json_tokener_parse(const char *str)
 {
-  struct json_tokener* tok;
-  struct json_object* obj;
-
-  tok = json_tokener_new();
-  obj = json_tokener_parse_ex(tok, str, -1);
-  if(tok->err != json_tokener_success)
-    obj = (struct json_object*)error_ptr(-tok->err);
-  json_tokener_free(tok);
-  return obj;
+    enum json_tokener_error jerr_ignored;
+    struct json_object* obj;
+    obj = json_tokener_parse_verbose(str, &jerr_ignored);
+    return obj;
+}
+
+struct json_object* json_tokener_parse_verbose(const char *str, enum json_tokener_error *error)
+{
+    struct json_tokener* tok;
+    struct json_object* obj;
+
+    tok = json_tokener_new();
+    if (!tok)
+      return NULL;
+    obj = json_tokener_parse_ex(tok, str, -1);
+    *error = tok->err;
+    if(tok->err != json_tokener_success) {
+               if (obj != NULL)
+                       json_object_put(obj);
+        obj = NULL;
+    }
+
+    json_tokener_free(tok);
+    return obj;
 }
 
 
@@ -176,6 +212,7 @@ char* strndup(const char* str, size_t n)
 #define ADVANCE_CHAR(str, tok) \
   ( ++(str), ((tok)->char_offset)++, c)
 
+
 /* End optimization macro defs */
 
 
@@ -195,7 +232,7 @@ struct json_object* json_tokener_parse_ex(struct json_tokener *tok,
 
     case json_tokener_state_eatws:
       /* Advance until we change state */
-      while (isspace(c)) {
+      while (isspace((int)c)) {
        if ((!ADVANCE_CHAR(str, tok)) || (!POP_CHAR(c, tok)))
          goto out;
       }
@@ -398,40 +435,97 @@ struct json_object* json_tokener_parse_ex(struct json_tokener *tok,
       break;
 
     case json_tokener_state_escape_unicode:
-            /* Note that the following code is inefficient for handling large
-       * chunks of extended chars, calling printbuf_memappend() once
-       * for each multi-byte character of input.
-       * This is a good area for future optimization.
-       */
        {
-         /* Advance until we change state */
+          unsigned int got_hi_surrogate = 0;
+
+         /* Handle a 4-byte sequence, or two sequences if a surrogate pair */
          while(1) {
            if(strchr(json_hex_chars, c)) {
              tok->ucs_char += ((unsigned int)hexdigit(c) << ((3-tok->st_pos++)*4));
              if(tok->st_pos == 4) {
-               unsigned char utf_out[3];
+               unsigned char unescaped_utf[4];
+
+                if (got_hi_surrogate) {
+                 if (IS_LOW_SURROGATE(tok->ucs_char)) {
+                    /* Recalculate the ucs_char, then fall thru to process normally */
+                    tok->ucs_char = DECODE_SURROGATE_PAIR(got_hi_surrogate, tok->ucs_char);
+                  } else {
+                    /* Hi surrogate was not followed by a low surrogate */
+                    /* Replace the hi and process the rest normally */
+                   printbuf_memappend_fast(tok->pb, (char*)utf8_replacement_char, 3);
+                  }
+                  got_hi_surrogate = 0;
+                }
+
                if (tok->ucs_char < 0x80) {
-                 utf_out[0] = tok->ucs_char;
-                 printbuf_memappend_fast(tok->pb, (char*)utf_out, 1);
+                 unescaped_utf[0] = tok->ucs_char;
+                 printbuf_memappend_fast(tok->pb, (char*)unescaped_utf, 1);
                } else if (tok->ucs_char < 0x800) {
-                 utf_out[0] = 0xc0 | (tok->ucs_char >> 6);
-                 utf_out[1] = 0x80 | (tok->ucs_char & 0x3f);
-                 printbuf_memappend_fast(tok->pb, (char*)utf_out, 2);
+                 unescaped_utf[0] = 0xc0 | (tok->ucs_char >> 6);
+                 unescaped_utf[1] = 0x80 | (tok->ucs_char & 0x3f);
+                 printbuf_memappend_fast(tok->pb, (char*)unescaped_utf, 2);
+               } else if (IS_HIGH_SURROGATE(tok->ucs_char)) {
+                  /* Got a high surrogate.  Remember it and look for the
+                   * the beginning of another sequence, which should be the
+                   * low surrogate.
+                   */
+                  got_hi_surrogate = tok->ucs_char;
+                  /* Not at end, and the next two chars should be "\u" */
+                  if ((tok->char_offset+1 != len) &&
+                      (tok->char_offset+2 != len) &&
+                      (str[1] == '\\') &&
+                      (str[2] == 'u'))
+                  {
+                   ADVANCE_CHAR(str, tok);
+                   ADVANCE_CHAR(str, tok);
+
+                    /* Advance to the first char of the next sequence and
+                     * continue processing with the next sequence.
+                     */
+                   if (!ADVANCE_CHAR(str, tok) || !POP_CHAR(c, tok)) {
+                     printbuf_memappend_fast(tok->pb, (char*)utf8_replacement_char, 3);
+                     goto out;
+                    }
+                   tok->ucs_char = 0;
+                    tok->st_pos = 0;
+                    continue; /* other json_tokener_state_escape_unicode */
+                  } else {
+                    /* Got a high surrogate without another sequence following
+                     * it.  Put a replacement char in for the hi surrogate
+                     * and pretend we finished.
+                     */
+                   printbuf_memappend_fast(tok->pb, (char*)utf8_replacement_char, 3);
+                  }
+               } else if (IS_LOW_SURROGATE(tok->ucs_char)) {
+                  /* Got a low surrogate not preceded by a high */
+                 printbuf_memappend_fast(tok->pb, (char*)utf8_replacement_char, 3);
+                } else if (tok->ucs_char < 0x10000) {
+                 unescaped_utf[0] = 0xe0 | (tok->ucs_char >> 12);
+                 unescaped_utf[1] = 0x80 | ((tok->ucs_char >> 6) & 0x3f);
+                 unescaped_utf[2] = 0x80 | (tok->ucs_char & 0x3f);
+                 printbuf_memappend_fast(tok->pb, (char*)unescaped_utf, 3);
+               } else if (tok->ucs_char < 0x110000) {
+                 unescaped_utf[0] = 0xf0 | ((tok->ucs_char >> 18) & 0x07);
+                 unescaped_utf[1] = 0x80 | ((tok->ucs_char >> 12) & 0x3f);
+                 unescaped_utf[2] = 0x80 | ((tok->ucs_char >> 6) & 0x3f);
+                 unescaped_utf[3] = 0x80 | (tok->ucs_char & 0x3f);
+                 printbuf_memappend_fast(tok->pb, (char*)unescaped_utf, 4);
                } else {
-                 utf_out[0] = 0xe0 | (tok->ucs_char >> 12);
-                 utf_out[1] = 0x80 | ((tok->ucs_char >> 6) & 0x3f);
-                 utf_out[2] = 0x80 | (tok->ucs_char & 0x3f);
-                 printbuf_memappend_fast(tok->pb, (char*)utf_out, 3);
-               }
+                  /* Don't know what we got--insert the replacement char */
+                 printbuf_memappend_fast(tok->pb, (char*)utf8_replacement_char, 3);
+                }
                state = saved_state;
                break;
              }
            } else {
              tok->err = json_tokener_error_parse_string;
              goto out;
-                 }
-         if (!ADVANCE_CHAR(str, tok) || !POP_CHAR(c, tok))
+           }
+         if (!ADVANCE_CHAR(str, tok) || !POP_CHAR(c, tok)) {
+            if (got_hi_surrogate) /* Clean up any pending chars */
+             printbuf_memappend_fast(tok->pb, (char*)utf8_replacement_char, 3);
            goto out;
+         }
        }
       }
       break;
@@ -468,7 +562,8 @@ struct json_object* json_tokener_parse_ex(struct json_tokener *tok,
        int case_len=0;
        while(c && strchr(json_number_chars, c)) {
          ++case_len;
-         if(c == '.' || c == 'e') tok->is_double = 1;
+         if(c == '.' || c == 'e' || c == 'E')
+           tok->is_double = 1;
          if (!ADVANCE_CHAR(str, tok) || !POP_CHAR(c, tok)) {
            printbuf_memappend_fast(tok->pb, case_start, case_len);
            goto out;
@@ -478,11 +573,11 @@ struct json_object* json_tokener_parse_ex(struct json_tokener *tok,
           printbuf_memappend_fast(tok->pb, case_start, case_len);
       }
       {
-        int numi;
-        double numd;
-        if(!tok->is_double && sscanf(tok->pb->buf, "%d", &numi) == 1) {
-          current = json_object_new_int(numi);
-        } else if(tok->is_double && sscanf(tok->pb->buf, "%lf", &numd) == 1) {
+       int64_t num64;
+       double  numd;
+       if (!tok->is_double && json_parse_int64(tok->pb->buf, &num64) == 0) {
+               current = json_object_new_int64(num64);
+       } else if(tok->is_double && sscanf(tok->pb->buf, "%lf", &numd) == 1) {
           current = json_object_new_double(numd);
         } else {
           tok->err = json_tokener_error_parse_number;
@@ -621,7 +716,17 @@ struct json_object* json_tokener_parse_ex(struct json_tokener *tok,
       tok->err = json_tokener_error_parse_eof;
   }
 
-  if(tok->err == json_tokener_success) return json_object_get(current);
+  if (tok->err == json_tokener_success) 
+  {
+    json_object *ret = json_object_get(current);
+       int ii;
+
+       /* Partially reset, so we parse additional objects on subsequent calls. */
+    for(ii = tok->depth; ii >= 0; ii--)
+      json_tokener_reset_level(tok, ii);
+    return ret;
+  }
+
   MC_DEBUG("json_tokener_parse_ex: error %s at offset %d\n",
           json_tokener_errors[tok->err], tok->char_offset);
   return NULL;
index 7d40b40..d104c75 100644 (file)
@@ -76,18 +76,108 @@ struct json_tokener
   char *str;
   struct printbuf *pb;
   int depth, is_double, st_pos, char_offset;
-  ptrdiff_t err;
+  enum json_tokener_error err;
   unsigned int ucs_char;
   char quote_char;
   struct json_tokener_srec stack[JSON_TOKENER_MAX_DEPTH];
 };
 
+/**
+ * Given an error previously returned by json_tokener_get_error(),
+ * return a human readable description of the error.
+ *
+ * @return a generic error message is returned if an invalid error value is provided.
+ */
+const char *json_tokener_error_desc(enum json_tokener_error jerr);
+
+/** 
+ * @b XXX do not use json_tokener_errors directly.  
+ * After v0.10 this will be removed.
+ *
+ * See json_tokener_error_desc() instead.
+ */
 extern const char* json_tokener_errors[];
 
+/**
+ * Retrieve the error caused by the last call to json_tokener_parse_ex(),
+ * or json_tokener_success if there is no error.
+ *
+ * When parsing a JSON string in pieces, if the tokener is in the middle
+ * of parsing this will return json_tokener_continue.
+ *
+ * See also json_tokener_error_desc().
+ */
+enum json_tokener_error json_tokener_get_error(struct json_tokener *tok);
+
 extern struct json_tokener* json_tokener_new(void);
 extern void json_tokener_free(struct json_tokener *tok);
 extern void json_tokener_reset(struct json_tokener *tok);
 extern struct json_object* json_tokener_parse(const char *str);
+extern struct json_object* json_tokener_parse_verbose(const char *str, enum json_tokener_error *error);
+
+/** 
+ * Parse a string and return a non-NULL json_object if a valid JSON value
+ * is found.  The string does not need to be a JSON object or array;
+ * it can also be a string, number or boolean value.
+ *
+ * A partial JSON string can be parsed.  If the parsing is incomplete,
+ * NULL will be returned and json_tokener_get_error() will be return 
+ * json_tokener_continue.
+ * json_tokener_parse_ex() can then be called with additional bytes in str
+ * to continue the parsing.  
+ *
+ * If json_tokener_parse_ex() returns NULL and the error anything other than
+ * json_tokener_continue, a fatal error has occurred and parsing must be
+ * halted.  Then tok object must not be re-used until json_tokener_reset() is
+ * called.
+ *
+ * When a valid JSON value is parsed, a non-NULL json_object will be
+ * returned.  Also, json_tokener_get_error() will return json_tokener_success.
+ * Be sure to check the type with json_object_is_type() or
+ * json_object_get_type() before using the object.
+ *
+ * @b XXX this shouldn't use internal fields:
+ * Trailing characters after the parsed value do not automatically cause an 
+ * error.  It is up to the caller to decide whether to treat this as an
+ * error or to handle the additional characters, perhaps by parsing another
+ * json value starting from that point.
+ *
+ * Extra characters can be detected by comparing the tok->char_offset against
+ * the length of the last len parameter passed in.
+ *
+ * The tokener does \b not maintain an internal buffer so the caller is
+ * responsible for calling json_tokener_parse_ex with an appropriate str
+ * parameter starting with the extra characters.
+ *
+ * Example:
+ * @code
+json_object *jobj = NULL;
+const char *mystring = NULL;
+int stringlen = 0;
+enum json_tokener_error jerr;
+do {
+       mystring = ...  // get JSON string, e.g. read from file, etc...
+       stringlen = strlen(mystring);
+       jobj = json_tokener_parse_ex(tok, mystring, stringlen);
+} while ((jerr = json_tokener_get_error(tok)) == json_tokener_continue);
+if (jerr != json_tokener_success)
+{
+       fprintf(stderr, "Error: %s\n", json_tokener_error_desc(jerr));
+       // Handle errors, as appropriate for your application.
+}
+if (tok->char_offset < stringlen) // XXX shouldn't access internal fields
+{
+       // Handle extra characters after parsed object as desired.
+       // e.g. issue an error, parse another object from that point, etc...
+}
+// Success, use jobj here.
+
+@endcode
+ *
+ * @param tok a json_tokener previously allocated with json_tokener_new()
+ * @param str an string with any valid JSON expression, or portion of.  This does not need to be null terminated.
+ * @param len the length of str
+ */
 extern struct json_object* json_tokener_parse_ex(struct json_tokener *tok,
                                                 const char *str, int len);
 
index af6f3d6..e551d2d 100644 (file)
@@ -10,6 +10,7 @@
  */
 
 #include "config.h"
+#undef realloc
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -17,6 +18,7 @@
 #include <limits.h>
 #include <string.h>
 #include <errno.h>
+#include <ctype.h>
 
 #if HAVE_SYS_TYPES_H
 #include <sys/types.h>
 #include "bits.h"
 #include "debug.h"
 #include "printbuf.h"
+#include "json_inttypes.h"
 #include "json_object.h"
 #include "json_tokener.h"
 #include "json_util.h"
 
-struct json_object* json_object_from_file(char *filename)
+struct json_object* json_object_from_file(const char *filename)
 {
   struct printbuf *pb;
   struct json_object *obj;
@@ -62,11 +65,12 @@ struct json_object* json_object_from_file(char *filename)
   if((fd = open(filename, O_RDONLY)) < 0) {
     MC_ERROR("json_object_from_file: error reading file %s: %s\n",
             filename, strerror(errno));
-    return (struct json_object*)error_ptr(-1);
+    return NULL; // XAX this is an API change!
   }
   if(!(pb = printbuf_new())) {
+    close(fd);
     MC_ERROR("json_object_from_file: printbuf_new failed\n");
-    return (struct json_object*)error_ptr(-1);
+    return NULL;
   }
   while((ret = read(fd, buf, JSON_FILE_BUF_SIZE)) > 0) {
     printbuf_memappend(pb, buf, ret);
@@ -76,14 +80,16 @@ struct json_object* json_object_from_file(char *filename)
     MC_ABORT("json_object_from_file: error reading file %s: %s\n",
             filename, strerror(errno));
     printbuf_free(pb);
-    return (struct json_object*)error_ptr(-1);
+    return NULL;
   }
   obj = json_tokener_parse(pb->buf);
   printbuf_free(pb);
   return obj;
 }
 
-int json_object_to_file(char *filename, struct json_object *obj)
+/* extended "format and write to file" function */
+
+int json_object_to_file_ext(char *filename, struct json_object *obj, int flags)
 {
   const char *json_str;
   int fd, ret;
@@ -100,8 +106,10 @@ int json_object_to_file(char *filename, struct json_object *obj)
     return -1;
   }
 
-  if(!(json_str = json_object_to_json_string(obj))) { return -1; }
-
+  if(!(json_str = json_object_to_json_string_ext(obj,flags))) {
+    close(fd);
+    return -1;
+  }
 
   wsize = (unsigned int)(strlen(json_str) & UINT_MAX); /* CAW: probably unnecessary, but the most 64bit safe */
   wpos = 0;
@@ -120,3 +128,112 @@ int json_object_to_file(char *filename, struct json_object *obj)
   close(fd);
   return 0;
 }
+
+// backwards compatible "format and write to file" function
+
+int json_object_to_file(char *filename, struct json_object *obj)
+{
+  return json_object_to_file_ext(filename, obj, JSON_C_TO_STRING_PLAIN);
+}
+
+int json_parse_int64(const char *buf, int64_t *retval)
+{
+       int64_t num64;
+       const char *buf_skip_space;
+       int orig_has_neg;
+       if (sscanf(buf, "%" SCNd64, &num64) != 1)
+       {
+               MC_DEBUG("Failed to parse, sscanf != 1\n");
+               return 1;
+       }
+       buf_skip_space = buf;
+       orig_has_neg = 0;
+       // Skip leading spaces
+       while (isspace((int)*buf_skip_space) && *buf_skip_space)
+               buf_skip_space++;
+       if (*buf_skip_space == '-')
+       {
+               buf_skip_space++;
+               orig_has_neg = 1;
+       }
+       // Skip leading zeros, but keep at least one digit
+       while (buf_skip_space[0] == '0' && buf_skip_space[1] != '\0')
+               buf_skip_space++;
+       if (buf_skip_space[0] == '0' && buf_skip_space[1] == '\0')
+               orig_has_neg = 0; // "-0" is the same as just plain "0"
+       
+       if (errno != ERANGE)
+       {
+               char buf_cmp[100];
+               char *buf_cmp_start = buf_cmp;
+               int recheck_has_neg = 0;
+               int buf_cmp_len;
+               snprintf(buf_cmp_start, sizeof(buf_cmp), "%" PRId64, num64);
+               if (*buf_cmp_start == '-')
+               {
+                       recheck_has_neg = 1;
+                       buf_cmp_start++;
+               }
+               // No need to skip leading spaces or zeros here.
+
+               buf_cmp_len = strlen(buf_cmp_start);
+               /**
+                * If the sign is different, or
+                * some of the digits are different, or
+                * there is another digit present in the original string
+                * then we NOT successfully parsed the value.
+                */
+               if (orig_has_neg != recheck_has_neg ||
+                   strncmp(buf_skip_space, buf_cmp_start, strlen(buf_cmp_start)) != 0 ||
+                       (strlen(buf_skip_space) != buf_cmp_len &&
+                        isdigit((int)buf_skip_space[buf_cmp_len])
+                   )
+                  )
+               {
+                       errno = ERANGE;
+               }
+       }
+       if (errno == ERANGE)
+       {
+               if (orig_has_neg)
+                       num64 = INT64_MIN;
+               else
+                       num64 = INT64_MAX;
+       }
+       *retval = num64;
+       return 0;
+}
+
+#if HAVE_REALLOC == 0
+void* rpl_realloc(void* p, size_t n)
+{
+       if (n == 0)
+               n = 1;
+       if (p == 0)
+               return malloc(n);
+       return realloc(p, n);
+}
+#endif
+
+#define NELEM(a)        (sizeof(a) / sizeof(a[0]))
+static const char* json_type_name[] = {
+  /* If you change this, be sure to update the enum json_type definition too */
+  "null",
+  "boolean",
+  "double",
+  "int",
+  "object",
+  "array",
+  "string",
+};
+
+const char *json_type_to_name(enum json_type o_type)
+{
+       if (o_type < 0 || o_type >= NELEM(json_type_name))
+       {
+               MC_ERROR("json_type_to_name: type %d is out of range [0,%d]\n", o_type, NELEM(json_type_name));
+               return NULL;
+       }
+       return json_type_name[o_type];
+}
+
index 6ab0287..277c3a7 100644 (file)
@@ -21,8 +21,17 @@ extern "C" {
 #define JSON_FILE_BUF_SIZE 4096
 
 /* utility functions */
-extern struct json_object* json_object_from_file(char *filename);
+extern struct json_object* json_object_from_file(const char *filename);
 extern int json_object_to_file(char *filename, struct json_object *obj);
+extern int json_object_to_file_ext(char *filename, struct json_object *obj, int flags);
+extern int json_parse_int64(const char *buf, int64_t *retval);
+
+
+/**
+ * Return a string describing the type of the object.
+ * e.g. "int", or "object", etc...
+ */
+extern const char *json_type_to_name(enum json_type o_type);
 
 #ifdef __cplusplus
 }
diff --git a/libjson.manifest b/libjson.manifest
deleted file mode 100644 (file)
index 4d85805..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<manifest>
-        <request>
-                <domain name="_" />
-        </request>
-</manifest>
-
index 998cf7d..ddedc12 100644 (file)
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
  * Michael Clark <michael@metaparadigm.com>
+ * Copyright (c) 2009 Hewlett-Packard Development Company, L.P.
  *
  * This library is free software; you can redistribute it and/or modify
  * it under the terms of the MIT license. See COPYING for details.
@@ -125,7 +126,7 @@ int lh_table_insert(struct lh_table *t, void *k, const void *v)
        unsigned long h, n;
 
        t->inserts++;
-       if(t->count > t->size * 0.66) lh_table_resize(t, t->size * 2);
+       if(t->count >= t->size * LH_LOAD_FACTOR) lh_table_resize(t, t->size * 2);
 
        h = t->hash_fn(k);
        n = h % t->size;
@@ -158,13 +159,15 @@ struct lh_entry* lh_table_lookup_entry(struct lh_table *t, const void *k)
 {
        unsigned long h = t->hash_fn(k);
        unsigned long n = h % t->size;
+       int count = 0;
 
        t->lookups++;
-       while( 1 ) {
+       while( count < t->size ) {
                if(t->table[n].k == LH_EMPTY) return NULL;
                if(t->table[n].k != LH_FREED &&
                   t->equal_fn(t->table[n].k, k)) return &t->table[n];
                if(++n == t->size) n = 0;
+               count++;
        }
        return NULL;
 }
@@ -172,11 +175,21 @@ struct lh_entry* lh_table_lookup_entry(struct lh_table *t, const void *k)
 
 const void* lh_table_lookup(struct lh_table *t, const void *k)
 {
-       struct lh_entry *e = lh_table_lookup_entry(t, k);
-       if(e) return e->v;
-       return NULL;
+       void *result;
+       lh_table_lookup_ex(t, k, &result);
+       return result;
 }
 
+json_bool lh_table_lookup_ex(struct lh_table* t, const void* k, void **v)
+{
+       struct lh_entry *e = lh_table_lookup_entry(t, k);
+       if (e != NULL) {
+               if (v != NULL) *v = (void *)e->v;
+               return TRUE; /* key found */
+       }
+       if (v != NULL) *v = NULL;
+       return FALSE; /* key not found */
+}
 
 int lh_table_delete_entry(struct lh_table *t, struct lh_entry *e)
 {
index 90f219d..bbb5488 100644 (file)
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
  * Michael Clark <michael@metaparadigm.com>
+ * Copyright (c) 2009 Hewlett-Packard Development Company, L.P.
  *
  * This library is free software; you can redistribute it and/or modify
  * it under the terms of the MIT license. See COPYING for details.
@@ -12,6 +13,8 @@
 #ifndef _linkhash_h_
 #define _linkhash_h_
 
+#include "json_object.h"
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -22,6 +25,13 @@ extern "C" {
 #define LH_PRIME 0x9e370001UL
 
 /**
+ * The fraction of filled hash buckets until an insert will cause the table
+ * to be resized.  
+ * This can range from just above 0 up to 1.0.
+ */
+#define LH_LOAD_FACTOR 0.66
+
+/**
  * sentinel pointer value for empty slots
  */
 #define LH_EMPTY (void*)-1
@@ -234,9 +244,18 @@ extern struct lh_entry* lh_table_lookup_entry(struct lh_table *t, const void *k)
  * @param t the table to lookup
  * @param k a pointer to the key to lookup
  * @return a pointer to the found value or NULL if it does not exist.
+ * @deprecated Use lh_table_lookup_ex instead.
  */
 extern const void* lh_table_lookup(struct lh_table *t, const void *k);
 
+/**
+ * Lookup a record in the table
+ * @param t the table to lookup
+ * @param k a pointer to the key to lookup
+ * @param v a pointer to a where to store the found value (set to NULL if it doesn't exist).
+ * @return whether or not the key was found
+ */
+extern json_bool lh_table_lookup_ex(struct lh_table *t, const void *k, void **v);
 
 /**
  * Delete a record from the table.
index b612e9a..c3098b5 100755 (executable)
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -1,6 +1,6 @@
 # Generated from ltmain.m4sh.
 
-# ltmain.sh (GNU libtool) 2.2.6
+# ltmain.sh (GNU libtool) 2.2.6b
 # Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc.
@@ -65,7 +65,7 @@
 #       compiler:              $LTCC
 #       compiler flags:                $LTCFLAGS
 #       linker:                $LD (gnu? $with_gnu_ld)
-#       $progname:             (GNU libtool) 2.2.6 Debian-2.2.6a-1ubuntu1
+#       $progname:             (GNU libtool) 2.2.6b
 #       automake:              $automake_version
 #       autoconf:              $autoconf_version
 #
@@ -73,9 +73,9 @@
 
 PROGRAM=ltmain.sh
 PACKAGE=libtool
-VERSION="2.2.6 Debian-2.2.6a-1ubuntu1"
+VERSION=2.2.6b
 TIMESTAMP=""
-package_revision=1.3012
+package_revision=1.3017
 
 # Be Bourne compatible
 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
@@ -111,9 +111,9 @@ done
 $lt_unset CDPATH
 
 
-
-
-
+unset CP
+unset MV
+unset RM
 : ${CP="cp -f"}
 : ${ECHO="echo"}
 : ${EGREP="/bin/grep -E"}
@@ -4522,7 +4522,7 @@ func_mode_link ()
       -l*)
        if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
          case $host in
-         *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*)
+         *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
            # These systems don't actually have a C or math library (as such)
            continue
            ;;
@@ -5033,10 +5033,7 @@ func_mode_link ()
        case $pass in
        dlopen) libs="$dlfiles" ;;
        dlpreopen) libs="$dlprefiles" ;;
-       link)
-         libs="$deplibs %DEPLIBS%"
-         test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
-         ;;
+       link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
        esac
       fi
       if test "$linkmode,$pass" = "lib,dlpreopen"; then
@@ -6209,9 +6206,6 @@ func_mode_link ()
            revision="$number_minor"
            lt_irix_increment=no
            ;;
-         *)
-           func_fatal_configuration "$modename: unknown library version type \`$version_type'"
-           ;;
          esac
          ;;
        no)
@@ -6314,6 +6308,7 @@ func_mode_link ()
          func_arith $current - $age
          major=.$func_arith_result
          versuffix="$major.$age.$revision"
+         versuffix2="$major.$age"
          ;;
 
        osf)
@@ -6374,8 +6369,10 @@ func_mode_link ()
          esac
          if test "$need_version" = no; then
            versuffix=
+           versuffix2=
          else
            versuffix=".0.0"
+           versuffix2=".0.0"
          fi
        fi
 
@@ -6383,6 +6380,7 @@ func_mode_link ()
        if test "$avoid_version" = yes && test "$need_version" = no; then
          major=
          versuffix=
+         versuffix2=
          verstring=""
        fi
 
@@ -6482,7 +6480,7 @@ func_mode_link ()
       if test "$build_libtool_libs" = yes; then
        if test -n "$rpath"; then
          case $host in
-         *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*)
+         *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
            # these systems don't actually have a c library (as such)!
            ;;
          *-*-rhapsody* | *-*-darwin1.[012])
diff --git a/missing b/missing
index 894e786..28055d2 100755 (executable)
--- a/missing
+++ b/missing
@@ -1,10 +1,10 @@
 #! /bin/sh
 # Common stub for a few missing GNU programs while installing.
 
-scriptversion=2005-06-08.21
+scriptversion=2009-04-28.21; # UTC
 
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
-#   Free Software Foundation, Inc.
+# 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
@@ -18,9 +18,7 @@ scriptversion=2005-06-08.21
 # 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, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# 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
@@ -33,6 +31,8 @@ if test $# -eq 0; then
 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.
@@ -44,7 +44,7 @@ fi
 
 msg="missing on your system"
 
-case "$1" in
+case $1 in
 --run)
   # Try to run requested program, and just exit if it succeeds.
   run=
@@ -77,6 +77,7 @@ 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
@@ -86,6 +87,9 @@ Supported PROGRAM values:
   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 $?
     ;;
@@ -103,15 +107,22 @@ Send bug reports to <bug-automake@gnu.org>."
 
 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).
-case "$1" in
-  lex|yacc)
+# 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)
+  tar*)
     if test -n "$run"; then
        echo 1>&2 "ERROR: \`tar' requires --run"
        exit 1
@@ -135,7 +146,7 @@ esac
 
 # If it does not exist, or fails to run (possibly an outdated version),
 # try to emulate it.
-case "$1" in
+case $program in
   aclocal*)
     echo 1>&2 "\
 WARNING: \`$1' is $msg.  You should only need it if
@@ -145,7 +156,7 @@ WARNING: \`$1' is $msg.  You should only need it if
     touch aclocal.m4
     ;;
 
-  autoconf)
+  autoconf*)
     echo 1>&2 "\
 WARNING: \`$1' is $msg.  You should only need it if
          you modified \`${configure_ac}'.  You might want to install the
@@ -154,7 +165,7 @@ WARNING: \`$1' is $msg.  You should only need it if
     touch configure
     ;;
 
-  autoheader)
+  autoheader*)
     echo 1>&2 "\
 WARNING: \`$1' is $msg.  You should only need it if
          you modified \`acconfig.h' or \`${configure_ac}'.  You might want
@@ -164,7 +175,7 @@ WARNING: \`$1' is $msg.  You should only need it if
     test -z "$files" && files="config.h"
     touch_files=
     for f in $files; do
-      case "$f" in
+      case $f in
       *:*) touch_files="$touch_files "`echo "$f" |
                                       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
       *) touch_files="$touch_files $f.in";;
@@ -184,7 +195,7 @@ WARNING: \`$1' is $msg.  You should only need it if
           while read f; do touch "$f"; done
     ;;
 
-  autom4te)
+  autom4te*)
     echo 1>&2 "\
 WARNING: \`$1' is needed, but is $msg.
          You might have modified some files without having the
@@ -192,8 +203,8 @@ WARNING: \`$1' is needed, but is $msg.
          You can get \`$1' as part of \`Autoconf' from any GNU
          archive site."
 
-    file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
-    test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
     if test -f "$file"; then
        touch $file
     else
@@ -207,80 +218,78 @@ WARNING: \`$1' is needed, but is $msg.
     fi
     ;;
 
-  bison|yacc)
+  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 [ $# -ne 1 ]; then
+    if test $# -ne 1; then
         eval LASTARG="\${$#}"
-       case "$LASTARG" in
+       case $LASTARG in
        *.y)
            SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
-           if [ -f "$SRCFILE" ]; then
+           if test -f "$SRCFILE"; then
                 cp "$SRCFILE" y.tab.c
            fi
            SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
-           if [ -f "$SRCFILE" ]; then
+           if test -f "$SRCFILE"; then
                 cp "$SRCFILE" y.tab.h
            fi
          ;;
        esac
     fi
-    if [ ! -f y.tab.h ]; then
+    if test ! -f y.tab.h; then
        echo >y.tab.h
     fi
-    if [ ! -f y.tab.c ]; then
+    if test ! -f y.tab.c; then
        echo 'main() { return 0; }' >y.tab.c
     fi
     ;;
 
-  lex|flex)
+  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 [ $# -ne 1 ]; then
+    if test $# -ne 1; then
         eval LASTARG="\${$#}"
-       case "$LASTARG" in
+       case $LASTARG in
        *.l)
            SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
-           if [ -f "$SRCFILE" ]; then
+           if test -f "$SRCFILE"; then
                 cp "$SRCFILE" lex.yy.c
            fi
          ;;
        esac
     fi
-    if [ ! -f lex.yy.c ]; then
+    if test ! -f lex.yy.c; then
        echo 'main() { return 0; }' >lex.yy.c
     fi
     ;;
 
-  help2man)
+  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 's/.*-o \([^ ]*\).*/\1/p'`
-    if test -z "$file"; then
-       file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
-    fi
-    if [ -f "$file" ]; then
+    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 1
+       exit $?
     fi
     ;;
 
-  makeinfo)
+  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
@@ -289,11 +298,17 @@ WARNING: \`$1' is $msg.  You should only need it if
          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 's/.*-o \([^ ]*\).*/\1/p'`
+    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`
+      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
@@ -303,7 +318,7 @@ WARNING: \`$1' is $msg.  You should only need it if
     touch $file
     ;;
 
-  tar)
+  tar*)
     shift
 
     # We have already tried tar in the generic part.
@@ -317,13 +332,13 @@ WARNING: \`$1' is $msg.  You should only need it if
     fi
     firstarg="$1"
     if shift; then
-       case "$firstarg" in
+       case $firstarg in
        *o*)
            firstarg=`echo "$firstarg" | sed s/o//`
            tar "$firstarg" "$@" && exit 0
            ;;
        esac
-       case "$firstarg" in
+       case $firstarg in
        *h*)
            firstarg=`echo "$firstarg" | sed s/h//`
            tar "$firstarg" "$@" && exit 0
@@ -356,5 +371,6 @@ exit 0
 # eval: (add-hook 'write-file-hooks 'time-stamp)
 # time-stamp-start: "scriptversion="
 # time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
 # End:
diff --git a/packaging/json-c.manifest b/packaging/json-c.manifest
new file mode 100644 (file)
index 0000000..017d22d
--- /dev/null
@@ -0,0 +1,5 @@
+<manifest>
+ <request>
+    <domain name="_"/>
+ </request>
+</manifest>
diff --git a/packaging/json-c.spec b/packaging/json-c.spec
new file mode 100644 (file)
index 0000000..41a0957
--- /dev/null
@@ -0,0 +1,67 @@
+Name:           json-c
+Version:        0.10.1
+Release:        1
+License:        MIT
+Summary:        JSON implementation in C
+Url:            http://oss.metaparadigm.com/%{name}
+Group:          System/Libraries
+Source0:        http://oss.metaparadigm.com/json-c/json-c-%{version}.tar.gz
+Source1001:    json-c.manifest
+BuildRequires:  libtool
+BuildRequires:  pkg-config
+
+%description
+JSON-C implements a reference counting object model that allows you to
+easily construct JSON objects in C, output them as JSON formatted
+strings and parse JSON formatted strings back into the C
+representation of JSON objects.
+
+%package -n libjson
+Summary:        JSON shared lib
+Group:          System/Libraries
+
+%description -n libjson
+This package includes the JSON library.
+
+%package -n libjson-devel
+Summary:        Development headers and libraries for json-c
+Group:          Development/Libraries
+Requires:       libjson = %{version}
+
+%description -n libjson-devel
+This package includes header files and scripts needed for developers
+using the json-c library
+
+%prep
+%setup -q
+cp %{SOURCE1001} .
+
+%build
+autoreconf -fiv
+%configure --disable-static --with-pic
+make %{?_smp_mflags}
+
+%check
+make %{?_smp_mflags} check
+
+%install
+%make_install
+
+%post -n libjson -p /sbin/ldconfig
+
+%postun -n libjson -p /sbin/ldconfig
+
+%files -n libjson
+%manifest %{name}.manifest
+%defattr(-,root,root)
+%doc COPYING
+%{_libdir}/libjson.so.*
+
+%files -n libjson-devel
+%manifest %{name}.manifest
+%defattr(-,root,root)
+%{_libdir}/libjson.so
+%{_includedir}/json
+%{_libdir}/pkgconfig/*.pc
+
+%changelog
diff --git a/packaging/libjson.spec b/packaging/libjson.spec
deleted file mode 100644 (file)
index 55bd071..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-Name:       libjson
-Summary:    json-c library
-Version:    0.9.3
-License:    TO BE FILLED IN
-Release:    0
-Group:      Development/Libraries
-URL:       http://oss.metaparadigm.com/json-c
-Source: %{name}-%{version}.tar.gz
-Requires(post): /sbin/ldconfig
-Requires(postun): /sbin/ldconfig
-
-%description
-libjson needed by pulseaudio
-
-%package devel
-Summary:    libjson devel header
-Group:      TO BE FILLED IN
-Requires: %{name} = %{version}
-
-%description devel
-libjson library.
-
-%prep
-%setup -q
-
-%build
-%configure 
-make %{?jobs:-j%jobs}
-
-%install
-rm -rf %{buildroot}
-%make_install
-
-%post
-/sbin/ldconfig
-
-%postun
-/sbin/ldconfig
-
-%files
-%manifest libjson.manifest
-%defattr(-,root,root,-)
-/usr/lib/*.so.*
-
-%files devel
-/usr/lib/pkgconfig/*.pc
-/usr/include/json/*.h
-/usr/lib/*.so
index 97366c3..b951c7b 100644 (file)
@@ -29,6 +29,8 @@
 #include "debug.h"
 #include "printbuf.h"
 
+static int printbuf_extend(struct printbuf *p, int min_size);
+
 struct printbuf* printbuf_new(void)
 {
   struct printbuf *p;
@@ -45,19 +47,40 @@ struct printbuf* printbuf_new(void)
 }
 
 
-int printbuf_memappend(struct printbuf *p, const char *buf, int size)
+/**
+ * Extend the buffer p so it has a size of at least min_size.
+ *
+ * If the current size is large enough, nothing is changed.
+ *
+ * Note: this does not check the available space!  The caller
+ *  is responsible for performing those calculations.
+ */
+static int printbuf_extend(struct printbuf *p, int min_size)
 {
-  char *t;
-  if(p->size - p->bpos <= size) {
-    int new_size = json_max(p->size * 2, p->bpos + size + 8);
+       char *t;
+       int new_size;
+
+       if (p->size >= min_size)
+               return 0;
+
+       new_size = json_max(p->size * 2, min_size + 8);
 #ifdef PRINTBUF_DEBUG
-    MC_DEBUG("printbuf_memappend: realloc "
-            "bpos=%d wrsize=%d old_size=%d new_size=%d\n",
-            p->bpos, size, p->size, new_size);
+       MC_DEBUG("printbuf_memappend: realloc "
+         "bpos=%d min_size=%d old_size=%d new_size=%d\n",
+         p->bpos, min_size, p->size, new_size);
 #endif /* PRINTBUF_DEBUG */
-    if(!(t = (char*)realloc(p->buf, new_size))) return -1;
-    p->size = new_size;
-    p->buf = t;
+       if(!(t = (char*)realloc(p->buf, new_size)))
+               return -1;
+       p->size = new_size;
+       p->buf = t;
+       return 0;
+}
+
+int printbuf_memappend(struct printbuf *p, const char *buf, int size)
+{
+  if (p->size <= p->bpos + size + 1) {
+    if (printbuf_extend(p, p->bpos + size + 1) < 0)
+      return -1;
   }
   memcpy(p->buf + p->bpos, buf, size);
   p->bpos += size;
@@ -65,7 +88,27 @@ int printbuf_memappend(struct printbuf *p, const char *buf, int size)
   return size;
 }
 
-#if !HAVE_VSNPRINTF && defined(WIN32)
+int printbuf_memset(struct printbuf *pb, int offset, int charvalue, int len)
+{
+       int size_needed;
+
+       if (offset == -1)
+               offset = pb->bpos;
+       size_needed = offset + len;
+       if (pb->size < size_needed)
+       {
+               if (printbuf_extend(pb, size_needed) < 0)
+                       return -1;
+       }
+
+       memset(pb->buf + offset, charvalue, len);
+       if (pb->bpos < size_needed)
+               pb->bpos = size_needed;
+
+       return 0;
+}
+
+#if !HAVE_VSNPRINTF && defined(_MSC_VER)
 # define vsnprintf _vsnprintf
 #elif !HAVE_VSNPRINTF /* !HAVE_VSNPRINTF */
 # error Need vsnprintf!
@@ -123,7 +166,7 @@ int sprintbuf(struct printbuf *p, const char *msg, ...)
      would have been written - this code handles both cases. */
   if(size == -1 || size > 127) {
     va_start(ap, msg);
-    if((size = vasprintf(&t, msg, ap)) == -1) { va_end(ap); return -1; }
+    if((size = vasprintf(&t, msg, ap)) < 0) { va_end(ap); return -1; }
     va_end(ap);
     printbuf_memappend(p, t, size);
     free(t);
index 53fa921..b1bde7f 100644 (file)
@@ -20,8 +20,6 @@
 extern "C" {
 #endif
 
-#undef PRINTBUF_DEBUG
-
 struct printbuf {
   char *buf;
   int bpos;
@@ -31,10 +29,12 @@ struct printbuf {
 extern struct printbuf*
 printbuf_new(void);
 
-/* As an optimization, printbuf_memappend is defined as a macro that
- * handles copying data if the buffer is large enough; otherwise it
- * invokes printbuf_memappend_real() which performs the heavy lifting
- * of realloc()ing the buffer and copying data.
+/* As an optimization, printbuf_memappend_fast is defined as a macro
+ * that handles copying data if the buffer is large enough; otherwise
+ * it invokes printbuf_memappend_real() which performs the heavy
+ * lifting of realloc()ing the buffer and copying data.
+ * Your code should not use printbuf_memappend directly--use
+ * printbuf_memappend_fast instead.
  */
 extern int
 printbuf_memappend(struct printbuf *p, const char *buf, int size);
@@ -48,6 +48,19 @@ do {                                                         \
   } else {  printbuf_memappend(p, (bufptr), bufsize); }      \
 } while (0)
 
+#define printbuf_length(p) ((p)->bpos)
+
+/**
+ * Set len bytes of the buffer to charvalue, starting at offset offset.
+ * Similar to calling memset(x, charvalue, len);
+ *
+ * The memory allocated for the buffer is extended as necessary.
+ *
+ * If offset is -1, this starts at the end of the current data in the buffer.
+ */
+extern int
+printbuf_memset(struct printbuf *pb, int offset, int charvalue, int len);
+
 extern int
 sprintbuf(struct printbuf *p, const char *msg, ...);
 
diff --git a/test1.c b/test1.c
deleted file mode 100644 (file)
index d2e6d0b..0000000
--- a/test1.c
+++ /dev/null
@@ -1,164 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <stddef.h>
-#include <string.h>
-
-#include "json.h"
-
-int main(int argc, char **argv)
-{
-  json_tokener *tok;
-  json_object *my_string, *my_int, *my_object, *my_array;
-  json_object *new_obj;
-  int i;
-
-  MC_SET_DEBUG(1);
-
-  my_string = json_object_new_string("\t");
-  printf("my_string=%s\n", json_object_get_string(my_string));
-  printf("my_string.to_string()=%s\n", json_object_to_json_string(my_string));
-  json_object_put(my_string);
-
-  my_string = json_object_new_string("\\");
-  printf("my_string=%s\n", json_object_get_string(my_string));
-  printf("my_string.to_string()=%s\n", json_object_to_json_string(my_string));
-  json_object_put(my_string);
-
-  my_string = json_object_new_string("foo");
-  printf("my_string=%s\n", json_object_get_string(my_string));
-  printf("my_string.to_string()=%s\n", json_object_to_json_string(my_string));
-
-  my_int = json_object_new_int(9);
-  printf("my_int=%d\n", json_object_get_int(my_int));
-  printf("my_int.to_string()=%s\n", json_object_to_json_string(my_int));
-
-  my_array = json_object_new_array();
-  json_object_array_add(my_array, json_object_new_int(1));
-  json_object_array_add(my_array, json_object_new_int(2));
-  json_object_array_add(my_array, json_object_new_int(3));
-  json_object_array_put_idx(my_array, 4, json_object_new_int(5));
-  printf("my_array=\n");
-  for(i=0; i < json_object_array_length(my_array); i++) {
-    json_object *obj = json_object_array_get_idx(my_array, i);
-    printf("\t[%d]=%s\n", i, json_object_to_json_string(obj));
-  }
-  printf("my_array.to_string()=%s\n", json_object_to_json_string(my_array));    
-
-  my_object = json_object_new_object();
-  json_object_object_add(my_object, "abc", json_object_new_int(12));
-  json_object_object_add(my_object, "foo", json_object_new_string("bar"));
-  json_object_object_add(my_object, "bool0", json_object_new_boolean(0));
-  json_object_object_add(my_object, "bool1", json_object_new_boolean(1));
-  json_object_object_add(my_object, "baz", json_object_new_string("bang"));
-  json_object_object_add(my_object, "baz", json_object_new_string("fark"));
-  json_object_object_del(my_object, "baz");
-  /*json_object_object_add(my_object, "arr", my_array);*/
-  printf("my_object=\n");
-  json_object_object_foreach(my_object, key, val) {
-    printf("\t%s: %s\n", key, json_object_to_json_string(val));
-  }
-  printf("my_object.to_string()=%s\n", json_object_to_json_string(my_object));
-
-  new_obj = json_tokener_parse("\"\003\"");
-  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
-  json_object_put(new_obj);
-
-  new_obj = json_tokener_parse("/* hello */\"foo\"");
-  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
-  json_object_put(new_obj);
-
-  new_obj = json_tokener_parse("// hello\n\"foo\"");
-  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
-  json_object_put(new_obj);
-
-  new_obj = json_tokener_parse("\"\\u0041\\u0042\\u0043\"");
-  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
-  json_object_put(new_obj);
-
-  new_obj = json_tokener_parse("null");
-  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
-  json_object_put(new_obj);
-
-  new_obj = json_tokener_parse("True");
-  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
-  json_object_put(new_obj);
-
-  new_obj = json_tokener_parse("12");
-  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
-  json_object_put(new_obj);
-
-  new_obj = json_tokener_parse("12.3");
-  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
-  json_object_put(new_obj);
-
-  new_obj = json_tokener_parse("[\"\\n\"]");
-  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
-  json_object_put(new_obj);
-
-  new_obj = json_tokener_parse("[\"\\nabc\\n\"]");
-  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
-  json_object_put(new_obj);
-
-  new_obj = json_tokener_parse("[null]");
-  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
-  json_object_put(new_obj);
-
-  new_obj = json_tokener_parse("[]");
-  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
-  json_object_put(new_obj);
-
-  new_obj = json_tokener_parse("[false]");
-  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
-  json_object_put(new_obj);
-
-  new_obj = json_tokener_parse("[\"abc\",null,\"def\",12]");
-  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
-  json_object_put(new_obj);
-
-  new_obj = json_tokener_parse("{}");
-  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
-  json_object_put(new_obj);
-
-  new_obj = json_tokener_parse("{ \"foo\": \"bar\" }");
-  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
-  json_object_put(new_obj);
-
-  new_obj = json_tokener_parse("{ \"foo\": \"bar\", \"baz\": null, \"bool0\": true }");
-  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
-  json_object_put(new_obj);
-
-  new_obj = json_tokener_parse("{ \"foo\": [null, \"foo\"] }");
-  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
-  json_object_put(new_obj);
-
-  new_obj = json_tokener_parse("{ \"abc\": 12, \"foo\": \"bar\", \"bool0\": false, \"bool1\": true, \"arr\": [ 1, 2, 3, null, 5 ] }");
-  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
-  json_object_put(new_obj);
-
-  new_obj = json_tokener_parse("{ foo }");
-  if(is_error(new_obj)) printf("got error as expected\n");
-
-  new_obj = json_tokener_parse("foo");
-  if(is_error(new_obj)) printf("got error as expected\n");
-
-  new_obj = json_tokener_parse("{ \"foo");
-  if(is_error(new_obj)) printf("got error as expected\n");
-
-  /* test incremental parsing */
-  tok = json_tokener_new();
-  new_obj = json_tokener_parse_ex(tok, "{ \"foo", 6);
-  if(is_error(new_obj)) printf("got error as expected\n");
-  new_obj = json_tokener_parse_ex(tok, "\": {\"bar", 8);
-  if(is_error(new_obj)) printf("got error as expected\n");
-  new_obj = json_tokener_parse_ex(tok, "\":13}}", 6);
-  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
-  json_object_put(new_obj);  
-  json_tokener_free(tok);
-
-  json_object_put(my_string);
-  json_object_put(my_int);
-  json_object_put(my_object);
-  //json_object_put(my_array);
-
-  return 0;
-}
diff --git a/test3.c b/test3.c
deleted file mode 100644 (file)
index ac90106..0000000
--- a/test3.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "json.h"
-
-int
-main()
-{
-        struct json_object *jobj;
-        char *input = (char*)malloc(1024);
-
-        while (fgets(input, 1024, stdin) != NULL) {
-                jobj = json_tokener_parse(input);
-                if (is_error(jobj)) {
-                        printf("error parsing json: %s\n",
-                              json_tokener_errors[-(unsigned long)jobj]);
-                } else {
-                        printf("%s\n", json_object_to_json_string(jobj));
-                        json_object_put(jobj);
-                }
-        }
-        return 0;
-}
diff --git a/tests/Makefile.am b/tests/Makefile.am
new file mode 100644 (file)
index 0000000..e2854dd
--- /dev/null
@@ -0,0 +1,49 @@
+
+include ../Makefile.am.inc
+
+LIBJSON_LA=$(top_builddir)/libjson.la
+
+check_PROGRAMS = test1 test1Formatted 
+check_PROGRAMS += test2 test2Formatted
+check_PROGRAMS += test4
+check_PROGRAMS += test_parse_int64
+check_PROGRAMS += test_null
+check_PROGRAMS += test_cast
+check_PROGRAMS += test_parse
+
+test1_LDADD = $(LIBJSON_LA)
+
+test1Formatted_LDADD= $(LIBJSON_LA)
+test1Formatted_SOURCES = test1.c parse_flags.c
+test1Formatted_CPPFLAGS = -DTEST_FORMATTED
+
+test2_LDADD = $(LIBJSON_LA)
+
+test2Formatted_LDADD= $(LIBJSON_LA)
+test2Formatted_SOURCES = test2.c parse_flags.c
+test2Formatted_CPPFLAGS = -DTEST_FORMATTED
+
+test4_LDADD = $(LIBJSON_LA)
+
+test_parse_int64_LDADD = $(LIBJSON_LA)
+
+test_null_LDADD = $(LIBJSON_LA)
+
+test_cast_LDADD = $(LIBJSON_LA)
+
+test_parse_LDADD = $(LIBJSON_LA)
+
+TESTS = test1.test test2.test test4.test parse_int64.test test_null.test test_cast.test test_parse.test
+
+TESTS+= test_printbuf.test
+check_PROGRAMS+=test_printbuf
+test_printbuf_LDADD = $(LIBJSON_LA)
+
+EXTRA_DIST=
+EXTRA_DIST += $(TESTS)
+
+testsubdir=testSubDir
+TESTS_ENVIRONMENT       = top_builddir=$(top_builddir)
+
+distclean-local:
+       -rm -rf $(testsubdir)
diff --git a/tests/Makefile.in b/tests/Makefile.in
new file mode 100644 (file)
index 0000000..2905562
--- /dev/null
@@ -0,0 +1,714 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in 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.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+DIST_COMMON = $(srcdir)/../Makefile.am.inc $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in
+check_PROGRAMS = test1$(EXEEXT) test1Formatted$(EXEEXT) test2$(EXEEXT) \
+       test2Formatted$(EXEEXT) test4$(EXEEXT) \
+       test_parse_int64$(EXEEXT) test_null$(EXEEXT) \
+       test_cast$(EXEEXT) test_parse$(EXEEXT) test_printbuf$(EXEEXT)
+subdir = tests
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h $(top_builddir)/json_config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+test1_SOURCES = test1.c
+test1_OBJECTS = test1.$(OBJEXT)
+test1_DEPENDENCIES = $(LIBJSON_LA)
+am_test1Formatted_OBJECTS = test1Formatted-test1.$(OBJEXT) \
+       test1Formatted-parse_flags.$(OBJEXT)
+test1Formatted_OBJECTS = $(am_test1Formatted_OBJECTS)
+test1Formatted_DEPENDENCIES = $(LIBJSON_LA)
+test2_SOURCES = test2.c
+test2_OBJECTS = test2.$(OBJEXT)
+test2_DEPENDENCIES = $(LIBJSON_LA)
+am_test2Formatted_OBJECTS = test2Formatted-test2.$(OBJEXT) \
+       test2Formatted-parse_flags.$(OBJEXT)
+test2Formatted_OBJECTS = $(am_test2Formatted_OBJECTS)
+test2Formatted_DEPENDENCIES = $(LIBJSON_LA)
+test4_SOURCES = test4.c
+test4_OBJECTS = test4.$(OBJEXT)
+test4_DEPENDENCIES = $(LIBJSON_LA)
+test_cast_SOURCES = test_cast.c
+test_cast_OBJECTS = test_cast.$(OBJEXT)
+test_cast_DEPENDENCIES = $(LIBJSON_LA)
+test_null_SOURCES = test_null.c
+test_null_OBJECTS = test_null.$(OBJEXT)
+test_null_DEPENDENCIES = $(LIBJSON_LA)
+test_parse_SOURCES = test_parse.c
+test_parse_OBJECTS = test_parse.$(OBJEXT)
+test_parse_DEPENDENCIES = $(LIBJSON_LA)
+test_parse_int64_SOURCES = test_parse_int64.c
+test_parse_int64_OBJECTS = test_parse_int64.$(OBJEXT)
+test_parse_int64_DEPENDENCIES = $(LIBJSON_LA)
+test_printbuf_SOURCES = test_printbuf.c
+test_printbuf_OBJECTS = test_printbuf.$(OBJEXT)
+test_printbuf_DEPENDENCIES = $(LIBJSON_LA)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+       $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+       $(LDFLAGS) -o $@
+SOURCES = test1.c $(test1Formatted_SOURCES) test2.c \
+       $(test2Formatted_SOURCES) test4.c test_cast.c test_null.c \
+       test_parse.c test_parse_int64.c test_printbuf.c
+DIST_SOURCES = test1.c $(test1Formatted_SOURCES) test2.c \
+       $(test2Formatted_SOURCES) test4.c test_cast.c test_null.c \
+       test_parse.c test_parse_int64.c test_printbuf.c
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AM_CFLAGS = -Wall -Wwrite-strings -Werror -std=gnu99 -D_GNU_SOURCE -D_REENTRANT
+LIBJSON_LA = $(top_builddir)/libjson.la
+test1_LDADD = $(LIBJSON_LA)
+test1Formatted_LDADD = $(LIBJSON_LA)
+test1Formatted_SOURCES = test1.c parse_flags.c
+test1Formatted_CPPFLAGS = -DTEST_FORMATTED
+test2_LDADD = $(LIBJSON_LA)
+test2Formatted_LDADD = $(LIBJSON_LA)
+test2Formatted_SOURCES = test2.c parse_flags.c
+test2Formatted_CPPFLAGS = -DTEST_FORMATTED
+test4_LDADD = $(LIBJSON_LA)
+test_parse_int64_LDADD = $(LIBJSON_LA)
+test_null_LDADD = $(LIBJSON_LA)
+test_cast_LDADD = $(LIBJSON_LA)
+test_parse_LDADD = $(LIBJSON_LA)
+TESTS = test1.test test2.test test4.test parse_int64.test \
+       test_null.test test_cast.test test_parse.test \
+       test_printbuf.test
+test_printbuf_LDADD = $(LIBJSON_LA)
+EXTRA_DIST = $(TESTS)
+testsubdir = testSubDir
+TESTS_ENVIRONMENT = top_builddir=$(top_builddir)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(srcdir)/../Makefile.am.inc $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu tests/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-checkPROGRAMS:
+       @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+       echo " rm -f" $$list; \
+       rm -f $$list || exit $$?; \
+       test -n "$(EXEEXT)" || exit 0; \
+       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+       echo " rm -f" $$list; \
+       rm -f $$list
+test1$(EXEEXT): $(test1_OBJECTS) $(test1_DEPENDENCIES) 
+       @rm -f test1$(EXEEXT)
+       $(LINK) $(test1_OBJECTS) $(test1_LDADD) $(LIBS)
+test1Formatted$(EXEEXT): $(test1Formatted_OBJECTS) $(test1Formatted_DEPENDENCIES) 
+       @rm -f test1Formatted$(EXEEXT)
+       $(LINK) $(test1Formatted_OBJECTS) $(test1Formatted_LDADD) $(LIBS)
+test2$(EXEEXT): $(test2_OBJECTS) $(test2_DEPENDENCIES) 
+       @rm -f test2$(EXEEXT)
+       $(LINK) $(test2_OBJECTS) $(test2_LDADD) $(LIBS)
+test2Formatted$(EXEEXT): $(test2Formatted_OBJECTS) $(test2Formatted_DEPENDENCIES) 
+       @rm -f test2Formatted$(EXEEXT)
+       $(LINK) $(test2Formatted_OBJECTS) $(test2Formatted_LDADD) $(LIBS)
+test4$(EXEEXT): $(test4_OBJECTS) $(test4_DEPENDENCIES) 
+       @rm -f test4$(EXEEXT)
+       $(LINK) $(test4_OBJECTS) $(test4_LDADD) $(LIBS)
+test_cast$(EXEEXT): $(test_cast_OBJECTS) $(test_cast_DEPENDENCIES) 
+       @rm -f test_cast$(EXEEXT)
+       $(LINK) $(test_cast_OBJECTS) $(test_cast_LDADD) $(LIBS)
+test_null$(EXEEXT): $(test_null_OBJECTS) $(test_null_DEPENDENCIES) 
+       @rm -f test_null$(EXEEXT)
+       $(LINK) $(test_null_OBJECTS) $(test_null_LDADD) $(LIBS)
+test_parse$(EXEEXT): $(test_parse_OBJECTS) $(test_parse_DEPENDENCIES) 
+       @rm -f test_parse$(EXEEXT)
+       $(LINK) $(test_parse_OBJECTS) $(test_parse_LDADD) $(LIBS)
+test_parse_int64$(EXEEXT): $(test_parse_int64_OBJECTS) $(test_parse_int64_DEPENDENCIES) 
+       @rm -f test_parse_int64$(EXEEXT)
+       $(LINK) $(test_parse_int64_OBJECTS) $(test_parse_int64_LDADD) $(LIBS)
+test_printbuf$(EXEEXT): $(test_printbuf_OBJECTS) $(test_printbuf_DEPENDENCIES) 
+       @rm -f test_printbuf$(EXEEXT)
+       $(LINK) $(test_printbuf_OBJECTS) $(test_printbuf_LDADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test1Formatted-parse_flags.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test1Formatted-test1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test2Formatted-parse_flags.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test2Formatted-test2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test4.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_cast.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_null.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_parse.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_parse_int64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_printbuf.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@   $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LTCOMPILE) -c -o $@ $<
+
+test1Formatted-test1.o: test1.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test1Formatted_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test1Formatted-test1.o -MD -MP -MF $(DEPDIR)/test1Formatted-test1.Tpo -c -o test1Formatted-test1.o `test -f 'test1.c' || echo '$(srcdir)/'`test1.c
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/test1Formatted-test1.Tpo $(DEPDIR)/test1Formatted-test1.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='test1.c' object='test1Formatted-test1.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test1Formatted_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test1Formatted-test1.o `test -f 'test1.c' || echo '$(srcdir)/'`test1.c
+
+test1Formatted-test1.obj: test1.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test1Formatted_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test1Formatted-test1.obj -MD -MP -MF $(DEPDIR)/test1Formatted-test1.Tpo -c -o test1Formatted-test1.obj `if test -f 'test1.c'; then $(CYGPATH_W) 'test1.c'; else $(CYGPATH_W) '$(srcdir)/test1.c'; fi`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/test1Formatted-test1.Tpo $(DEPDIR)/test1Formatted-test1.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='test1.c' object='test1Formatted-test1.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test1Formatted_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test1Formatted-test1.obj `if test -f 'test1.c'; then $(CYGPATH_W) 'test1.c'; else $(CYGPATH_W) '$(srcdir)/test1.c'; fi`
+
+test1Formatted-parse_flags.o: parse_flags.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test1Formatted_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test1Formatted-parse_flags.o -MD -MP -MF $(DEPDIR)/test1Formatted-parse_flags.Tpo -c -o test1Formatted-parse_flags.o `test -f 'parse_flags.c' || echo '$(srcdir)/'`parse_flags.c
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/test1Formatted-parse_flags.Tpo $(DEPDIR)/test1Formatted-parse_flags.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='parse_flags.c' object='test1Formatted-parse_flags.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test1Formatted_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test1Formatted-parse_flags.o `test -f 'parse_flags.c' || echo '$(srcdir)/'`parse_flags.c
+
+test1Formatted-parse_flags.obj: parse_flags.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test1Formatted_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test1Formatted-parse_flags.obj -MD -MP -MF $(DEPDIR)/test1Formatted-parse_flags.Tpo -c -o test1Formatted-parse_flags.obj `if test -f 'parse_flags.c'; then $(CYGPATH_W) 'parse_flags.c'; else $(CYGPATH_W) '$(srcdir)/parse_flags.c'; fi`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/test1Formatted-parse_flags.Tpo $(DEPDIR)/test1Formatted-parse_flags.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='parse_flags.c' object='test1Formatted-parse_flags.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test1Formatted_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test1Formatted-parse_flags.obj `if test -f 'parse_flags.c'; then $(CYGPATH_W) 'parse_flags.c'; else $(CYGPATH_W) '$(srcdir)/parse_flags.c'; fi`
+
+test2Formatted-test2.o: test2.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test2Formatted_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test2Formatted-test2.o -MD -MP -MF $(DEPDIR)/test2Formatted-test2.Tpo -c -o test2Formatted-test2.o `test -f 'test2.c' || echo '$(srcdir)/'`test2.c
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/test2Formatted-test2.Tpo $(DEPDIR)/test2Formatted-test2.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='test2.c' object='test2Formatted-test2.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test2Formatted_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test2Formatted-test2.o `test -f 'test2.c' || echo '$(srcdir)/'`test2.c
+
+test2Formatted-test2.obj: test2.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test2Formatted_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test2Formatted-test2.obj -MD -MP -MF $(DEPDIR)/test2Formatted-test2.Tpo -c -o test2Formatted-test2.obj `if test -f 'test2.c'; then $(CYGPATH_W) 'test2.c'; else $(CYGPATH_W) '$(srcdir)/test2.c'; fi`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/test2Formatted-test2.Tpo $(DEPDIR)/test2Formatted-test2.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='test2.c' object='test2Formatted-test2.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test2Formatted_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test2Formatted-test2.obj `if test -f 'test2.c'; then $(CYGPATH_W) 'test2.c'; else $(CYGPATH_W) '$(srcdir)/test2.c'; fi`
+
+test2Formatted-parse_flags.o: parse_flags.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test2Formatted_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test2Formatted-parse_flags.o -MD -MP -MF $(DEPDIR)/test2Formatted-parse_flags.Tpo -c -o test2Formatted-parse_flags.o `test -f 'parse_flags.c' || echo '$(srcdir)/'`parse_flags.c
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/test2Formatted-parse_flags.Tpo $(DEPDIR)/test2Formatted-parse_flags.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='parse_flags.c' object='test2Formatted-parse_flags.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test2Formatted_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test2Formatted-parse_flags.o `test -f 'parse_flags.c' || echo '$(srcdir)/'`parse_flags.c
+
+test2Formatted-parse_flags.obj: parse_flags.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test2Formatted_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test2Formatted-parse_flags.obj -MD -MP -MF $(DEPDIR)/test2Formatted-parse_flags.Tpo -c -o test2Formatted-parse_flags.obj `if test -f 'parse_flags.c'; then $(CYGPATH_W) 'parse_flags.c'; else $(CYGPATH_W) '$(srcdir)/parse_flags.c'; fi`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/test2Formatted-parse_flags.Tpo $(DEPDIR)/test2Formatted-parse_flags.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='parse_flags.c' object='test2Formatted-parse_flags.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test2Formatted_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test2Formatted-parse_flags.obj `if test -f 'parse_flags.c'; then $(CYGPATH_W) 'parse_flags.c'; else $(CYGPATH_W) '$(srcdir)/parse_flags.c'; fi`
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+       @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+       srcdir=$(srcdir); export srcdir; \
+       list=' $(TESTS) '; \
+       $(am__tty_colors); \
+       if test -n "$$list"; then \
+         for tst in $$list; do \
+           if test -f ./$$tst; then dir=./; \
+           elif test -f $$tst; then dir=; \
+           else dir="$(srcdir)/"; fi; \
+           if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+             all=`expr $$all + 1`; \
+             case " $(XFAIL_TESTS) " in \
+             *[\ \     ]$$tst[\ \      ]*) \
+               xpass=`expr $$xpass + 1`; \
+               failed=`expr $$failed + 1`; \
+               col=$$red; res=XPASS; \
+             ;; \
+             *) \
+               col=$$grn; res=PASS; \
+             ;; \
+             esac; \
+           elif test $$? -ne 77; then \
+             all=`expr $$all + 1`; \
+             case " $(XFAIL_TESTS) " in \
+             *[\ \     ]$$tst[\ \      ]*) \
+               xfail=`expr $$xfail + 1`; \
+               col=$$lgn; res=XFAIL; \
+             ;; \
+             *) \
+               failed=`expr $$failed + 1`; \
+               col=$$red; res=FAIL; \
+             ;; \
+             esac; \
+           else \
+             skip=`expr $$skip + 1`; \
+             col=$$blu; res=SKIP; \
+           fi; \
+           echo "$${col}$$res$${std}: $$tst"; \
+         done; \
+         if test "$$all" -eq 1; then \
+           tests="test"; \
+           All=""; \
+         else \
+           tests="tests"; \
+           All="All "; \
+         fi; \
+         if test "$$failed" -eq 0; then \
+           if test "$$xfail" -eq 0; then \
+             banner="$$All$$all $$tests passed"; \
+           else \
+             if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+             banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+           fi; \
+         else \
+           if test "$$xpass" -eq 0; then \
+             banner="$$failed of $$all $$tests failed"; \
+           else \
+             if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+             banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+           fi; \
+         fi; \
+         dashes="$$banner"; \
+         skipped=""; \
+         if test "$$skip" -ne 0; then \
+           if test "$$skip" -eq 1; then \
+             skipped="($$skip test was not run)"; \
+           else \
+             skipped="($$skip tests were not run)"; \
+           fi; \
+           test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+             dashes="$$skipped"; \
+         fi; \
+         report=""; \
+         if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+           report="Please report to $(PACKAGE_BUGREPORT)"; \
+           test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+             dashes="$$report"; \
+         fi; \
+         dashes=`echo "$$dashes" | sed s/./=/g`; \
+         if test "$$failed" -eq 0; then \
+           echo "$$grn$$dashes"; \
+         else \
+           echo "$$red$$dashes"; \
+         fi; \
+         echo "$$banner"; \
+         test -z "$$skipped" || echo "$$skipped"; \
+         test -z "$$report" || echo "$$report"; \
+         echo "$$dashes$$std"; \
+         test "$$failed" -eq 0; \
+       else :; fi
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+       $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+       $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+       mostlyclean-am
+
+distclean: distclean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-local distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+       clean-checkPROGRAMS clean-generic clean-libtool ctags \
+       distclean distclean-compile distclean-generic \
+       distclean-libtool distclean-local distclean-tags distdir dvi \
+       dvi-am html html-am info info-am install install-am \
+       install-data install-data-am install-dvi install-dvi-am \
+       install-exec install-exec-am install-html install-html-am \
+       install-info install-info-am install-man install-pdf \
+       install-pdf-am install-ps install-ps-am install-strip \
+       installcheck installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags uninstall uninstall-am
+
+
+distclean-local:
+       -rm -rf $(testsubdir)
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/parse_flags.c b/tests/parse_flags.c
new file mode 100644 (file)
index 0000000..fafabc8
--- /dev/null
@@ -0,0 +1,42 @@
+#include <stdio.h>
+#include <string.h>
+
+#include "json.h"
+#include "parse_flags.h"
+
+static struct {
+       const char *arg;
+       int flag;
+} format_args[] = {
+       { "plain", JSON_C_TO_STRING_PLAIN },
+       { "spaced", JSON_C_TO_STRING_SPACED },
+       { "pretty", JSON_C_TO_STRING_PRETTY },
+};
+
+#ifndef NELEM
+#define NELEM(x) (sizeof(x) / sizeof(&x[0]))
+#endif
+
+int parse_flags(int argc, char **argv)
+{
+       int arg_idx;
+       int sflags = 0;
+       for (arg_idx = 1; arg_idx < argc ; arg_idx++)
+       {
+               int jj;
+               for (jj = 0; jj < NELEM(format_args); jj++)
+               {
+                       if (strcasecmp(argv[arg_idx], format_args[jj].arg) == 0)
+                       {
+                               sflags |= format_args[jj].flag;
+                               break;
+                       }
+               }
+               if (jj == NELEM(format_args))
+               {
+                       printf("Unknown arg: %s\n", argv[arg_idx]);
+                       exit(1);
+               }
+       }
+       return sflags;
+}
diff --git a/tests/parse_flags.h b/tests/parse_flags.h
new file mode 100644 (file)
index 0000000..c5e2f41
--- /dev/null
@@ -0,0 +1,4 @@
+#ifndef __parse_flags_h
+#define __parse_flags_h
+int parse_flags(int argc, char **argv);
+#endif
diff --git a/tests/parse_int64.test b/tests/parse_int64.test
new file mode 100755 (executable)
index 0000000..2b7fbfb
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+# Common definitions
+if test -z "$srcdir"; then
+    srcdir="${0%/*}"
+    test "$srcdir" = "$0" && srcdir=.
+    test -z "$srcdir" && srcdir=.
+fi
+. "$srcdir/test-defs.sh"
+
+run_output_test test_parse_int64
+exit $?
diff --git a/tests/test-defs.sh b/tests/test-defs.sh
new file mode 100755 (executable)
index 0000000..658a75d
--- /dev/null
@@ -0,0 +1,128 @@
+#!/bin/sh
+
+# Make sure srcdir is an absolute path.  Supply the variable
+# if it does not exist.  We want to be able to run the tests
+# stand-alone!!
+#
+srcdir=${srcdir-.}
+if test ! -d $srcdir ; then
+    echo "test-defs.sh: installation error" 1>&2
+    exit 1
+fi
+
+# Use absolute paths
+case "$srcdir" in
+    /* | [A-Za-z]:\\*) ;;
+    *) srcdir=`\cd $srcdir && pwd` ;;
+esac
+
+case "$top_builddir" in
+    /* | [A-Za-z]:\\*) ;;
+    *) top_builddir=`\cd ${top_builddir-..} && pwd` ;;
+esac
+
+top_builddir=${top_builddir}/tests
+
+progname=`echo "$0" | sed 's,^.*/,,'`
+testname=`echo "$progname" | sed 's,-.*$,,'`
+testsubdir=${testsubdir-testSubDir}
+testsubdir=${testsubdir}/${progname}
+
+# User can set VERBOSE to cause output redirection
+case "$VERBOSE" in
+[Nn]|[Nn][Oo]|0|"")
+       VERBOSE=0
+       exec > /dev/null
+       ;;
+[Yy]|[Yy][Ee][Ss])
+       VERBOSE=1
+       ;;
+esac
+
+rm -rf "$testsubdir" > /dev/null 2>&1
+mkdir -p "$testsubdir"
+CURDIR=$(pwd)
+cd "$testsubdir" \
+   || { echo "Cannot make or change into $testsubdir"; exit 1; }
+
+echo "=== Running test $progname"
+
+CMP="${CMP-cmp}"
+
+use_valgrind=${USE_VALGRIND-1}
+valgrind_path=$(which valgrind 2> /dev/null)
+if [ -z "${valgrind_path}" -o ! -x "${valgrind_path}" ] ; then
+       use_valgrind=0
+fi
+
+#
+# This is a common function to check the results of a test program
+# that is intended to generate consistent output across runs.
+#
+# ${top_builddir} must be set to the top level build directory.
+#
+# Output will be written to the current directory.
+#
+# It must be passed the name of the test command to run, which must be present
+#  in the ${top_builddir} directory.
+#
+# It will compare the output of running that against <name of command>.expected
+#
+run_output_test()
+{
+       if [ "$1" = "-o" ] ; then
+               TEST_OUTPUT="$2"
+               shift
+               shift
+       fi
+       TEST_COMMAND="$1"
+       shift
+       if [ -z "${TEST_OUTPUT}" ] ; then       
+               TEST_OUTPUT=${TEST_COMMAND}
+       fi
+
+       REDIR_OUTPUT="> \"${TEST_OUTPUT}.out\""
+       if [ $VERBOSE -gt 1 ] ; then
+               REDIR_OUTPUT="| tee \"${TEST_OUTPUT}.out\""
+       fi
+
+       if [ $use_valgrind -eq 1 ] ; then
+               eval valgrind --tool=memcheck \
+                       --trace-children=yes \
+                       --demangle=yes \
+                       --log-file="${TEST_OUTPUT}.vg.out" \
+                       --leak-check=full \
+                       --show-reachable=yes \
+                       --run-libc-freeres=yes \
+               "\"${top_builddir}/${TEST_COMMAND}\"" \"\$@\" ${REDIR_OUTPUT}
+               err=$?
+
+       else
+               eval "\"${top_builddir}/${TEST_COMMAND}"\" \"\$@\" ${REDIR_OUTPUT}
+               err=$?
+       fi
+
+       if [ $err -ne 0 ] ; then
+               echo "ERROR: \"${TEST_COMMAND} $@\" exited with non-zero exit status: $err" 1>&2
+       fi
+
+       if [ $use_valgrind -eq 1 ] ; then
+               if ! tail -1 "${TEST_OUTPUT}.vg.out" | grep -q "ERROR SUMMARY: 0 errors" ; then
+                       echo "ERROR: valgrind found errors during execution:" 1>&2
+                       cat "${TEST_OUTPUT}.vg.out"
+                       err=1
+               fi
+       fi
+
+       if ! "$CMP" -s "${top_builddir}/${TEST_OUTPUT}.expected" "${TEST_OUTPUT}.out" ; then
+               echo "ERROR: \"${TEST_COMMAND} $@\" (${TEST_OUTPUT}) failed (set VERBOSE=1 to see full output):" 1>&2
+               (cd "${CURDIR}" ; set -x ; diff "${top_builddir}/${TEST_OUTPUT}.expected" "$testsubdir/${TEST_OUTPUT}.out")
+               echo "cp \"$testsubdir/${TEST_OUTPUT}.out\" \"${top_builddir}/${TEST_OUTPUT}.expected\"" 1>&2
+
+               err=1
+       fi
+
+       return $err
+}
+
+
diff --git a/tests/test1.c b/tests/test1.c
new file mode 100644 (file)
index 0000000..9802eb1
--- /dev/null
@@ -0,0 +1,125 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <stddef.h>
+#include <string.h>
+#include <assert.h>
+
+#include "json.h"
+#include "parse_flags.h"
+
+static int sort_fn (const void *j1, const void *j2)
+{
+  json_object * const *jso1, * const *jso2;
+  int i1, i2;
+
+  jso1 = j1;
+  jso2 = j2;
+  if (!*jso1 && !*jso2) {
+    return 0;
+  }
+  if (!*jso1) {
+    return -1;
+  }
+  if (!*jso2) {
+    return 1;
+  }
+
+  i1 = json_object_get_int(*jso1);
+  i2 = json_object_get_int(*jso2);
+
+  return i1 - i2;
+}
+
+#ifdef TEST_FORMATTED
+#define json_object_to_json_string(obj) json_object_to_json_string_ext(obj,sflags)
+#else
+/* no special define */
+#endif
+
+int main(int argc, char **argv)
+{
+  json_object *my_string, *my_int, *my_object, *my_array;
+  int i;
+#ifdef TEST_FORMATTED
+       int sflags = 0;
+#endif
+
+  MC_SET_DEBUG(1);
+
+#ifdef TEST_FORMATTED
+       sflags = parse_flags(argc, argv);
+#endif
+
+  my_string = json_object_new_string("\t");
+  printf("my_string=%s\n", json_object_get_string(my_string));
+  printf("my_string.to_string()=%s\n", json_object_to_json_string(my_string));
+  json_object_put(my_string);
+
+  my_string = json_object_new_string("\\");
+  printf("my_string=%s\n", json_object_get_string(my_string));
+  printf("my_string.to_string()=%s\n", json_object_to_json_string(my_string));
+  json_object_put(my_string);
+
+  my_string = json_object_new_string("foo");
+  printf("my_string=%s\n", json_object_get_string(my_string));
+  printf("my_string.to_string()=%s\n", json_object_to_json_string(my_string));
+
+  my_int = json_object_new_int(9);
+  printf("my_int=%d\n", json_object_get_int(my_int));
+  printf("my_int.to_string()=%s\n", json_object_to_json_string(my_int));
+
+  my_array = json_object_new_array();
+  json_object_array_add(my_array, json_object_new_int(1));
+  json_object_array_add(my_array, json_object_new_int(2));
+  json_object_array_add(my_array, json_object_new_int(3));
+  json_object_array_put_idx(my_array, 4, json_object_new_int(5));
+  printf("my_array=\n");
+  for(i=0; i < json_object_array_length(my_array); i++) {
+    json_object *obj = json_object_array_get_idx(my_array, i);
+    printf("\t[%d]=%s\n", i, json_object_to_json_string(obj));
+  }
+  printf("my_array.to_string()=%s\n", json_object_to_json_string(my_array));    
+
+  json_object_put(my_array);
+
+  my_array = json_object_new_array();
+  json_object_array_add(my_array, json_object_new_int(3));
+  json_object_array_add(my_array, json_object_new_int(1));
+  json_object_array_add(my_array, json_object_new_int(2));
+  json_object_array_put_idx(my_array, 4, json_object_new_int(0));
+  printf("my_array=\n");
+  for(i=0; i < json_object_array_length(my_array); i++) {
+    json_object *obj = json_object_array_get_idx(my_array, i);
+    printf("\t[%d]=%s\n", i, json_object_to_json_string(obj));
+  }
+  printf("my_array.to_string()=%s\n", json_object_to_json_string(my_array));    
+  json_object_array_sort(my_array, sort_fn);
+  printf("my_array=\n");
+  for(i=0; i < json_object_array_length(my_array); i++) {
+    json_object *obj = json_object_array_get_idx(my_array, i);
+    printf("\t[%d]=%s\n", i, json_object_to_json_string(obj));
+  }
+  printf("my_array.to_string()=%s\n", json_object_to_json_string(my_array));    
+
+  my_object = json_object_new_object();
+  json_object_object_add(my_object, "abc", json_object_new_int(12));
+  json_object_object_add(my_object, "foo", json_object_new_string("bar"));
+  json_object_object_add(my_object, "bool0", json_object_new_boolean(0));
+  json_object_object_add(my_object, "bool1", json_object_new_boolean(1));
+  json_object_object_add(my_object, "baz", json_object_new_string("bang"));
+  json_object_object_add(my_object, "baz", json_object_new_string("fark"));
+  json_object_object_del(my_object, "baz");
+  /*json_object_object_add(my_object, "arr", my_array);*/
+  printf("my_object=\n");
+  json_object_object_foreach(my_object, key, val) {
+    printf("\t%s: %s\n", key, json_object_to_json_string(val));
+  }
+  printf("my_object.to_string()=%s\n", json_object_to_json_string(my_object));
+
+  json_object_put(my_string);
+  json_object_put(my_int);
+  json_object_put(my_object);
+  json_object_put(my_array);
+
+  return 0;
+}
diff --git a/tests/test1.expected b/tests/test1.expected
new file mode 100644 (file)
index 0000000..6653fe0
--- /dev/null
@@ -0,0 +1,35 @@
+my_string=     
+my_string.to_string()="\t"
+my_string=\
+my_string.to_string()="\\"
+my_string=foo
+my_string.to_string()="foo"
+my_int=9
+my_int.to_string()=9
+my_array=
+       [0]=1
+       [1]=2
+       [2]=3
+       [3]=null
+       [4]=5
+my_array.to_string()=[ 1, 2, 3, null, 5 ]
+my_array=
+       [0]=3
+       [1]=1
+       [2]=2
+       [3]=null
+       [4]=0
+my_array.to_string()=[ 3, 1, 2, null, 0 ]
+my_array=
+       [0]=null
+       [1]=0
+       [2]=1
+       [3]=2
+       [4]=3
+my_array.to_string()=[ null, 0, 1, 2, 3 ]
+my_object=
+       abc: 12
+       foo: "bar"
+       bool0: false
+       bool1: true
+my_object.to_string()={ "abc": 12, "foo": "bar", "bool0": false, "bool1": true }
diff --git a/tests/test1.test b/tests/test1.test
new file mode 100755 (executable)
index 0000000..79d2e09
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# Common definitions
+if test -z "$srcdir"; then
+    srcdir="${0%/*}"
+    test "$srcdir" = "$0" && srcdir=.
+    test -z "$srcdir" && srcdir=.
+fi
+. "$srcdir/test-defs.sh"
+
+run_output_test test1
+_err=$?
+
+for flag in plain spaced pretty ; do
+       run_output_test -o test1Formatted_${flag} test1Formatted ${flag}
+       _err2=$?
+       if [ $_err -eq 0 ] ; then
+               _err=$_err2
+       fi
+done
+
+exit $_err
diff --git a/tests/test1Formatted_plain.expected b/tests/test1Formatted_plain.expected
new file mode 100644 (file)
index 0000000..65b19ed
--- /dev/null
@@ -0,0 +1,35 @@
+my_string=     
+my_string.to_string()="\t"
+my_string=\
+my_string.to_string()="\\"
+my_string=foo
+my_string.to_string()="foo"
+my_int=9
+my_int.to_string()=9
+my_array=
+       [0]=1
+       [1]=2
+       [2]=3
+       [3]=null
+       [4]=5
+my_array.to_string()=[1,2,3,null,5]
+my_array=
+       [0]=3
+       [1]=1
+       [2]=2
+       [3]=null
+       [4]=0
+my_array.to_string()=[3,1,2,null,0]
+my_array=
+       [0]=null
+       [1]=0
+       [2]=1
+       [3]=2
+       [4]=3
+my_array.to_string()=[null,0,1,2,3]
+my_object=
+       abc: 12
+       foo: "bar"
+       bool0: false
+       bool1: true
+my_object.to_string()={"abc":12,"foo":"bar","bool0":false,"bool1":true}
diff --git a/tests/test1Formatted_pretty.expected b/tests/test1Formatted_pretty.expected
new file mode 100644 (file)
index 0000000..f2334c4
--- /dev/null
@@ -0,0 +1,58 @@
+my_string=     
+my_string.to_string()="\t"
+my_string=\
+my_string.to_string()="\\"
+my_string=foo
+my_string.to_string()="foo"
+my_int=9
+my_int.to_string()=9
+my_array=
+       [0]=1
+       [1]=2
+       [2]=3
+       [3]=null
+       [4]=5
+my_array.to_string()=[
+  1,
+  2,
+  3,
+  null,
+  5
+]
+my_array=
+       [0]=3
+       [1]=1
+       [2]=2
+       [3]=null
+       [4]=0
+my_array.to_string()=[
+  3,
+  1,
+  2,
+  null,
+  0
+]
+my_array=
+       [0]=null
+       [1]=0
+       [2]=1
+       [3]=2
+       [4]=3
+my_array.to_string()=[
+  null,
+  0,
+  1,
+  2,
+  3
+]
+my_object=
+       abc: 12
+       foo: "bar"
+       bool0: false
+       bool1: true
+my_object.to_string()={
+  "abc":12,
+  "foo":"bar",
+  "bool0":false,
+  "bool1":true
+}
diff --git a/tests/test1Formatted_spaced.expected b/tests/test1Formatted_spaced.expected
new file mode 100644 (file)
index 0000000..6653fe0
--- /dev/null
@@ -0,0 +1,35 @@
+my_string=     
+my_string.to_string()="\t"
+my_string=\
+my_string.to_string()="\\"
+my_string=foo
+my_string.to_string()="foo"
+my_int=9
+my_int.to_string()=9
+my_array=
+       [0]=1
+       [1]=2
+       [2]=3
+       [3]=null
+       [4]=5
+my_array.to_string()=[ 1, 2, 3, null, 5 ]
+my_array=
+       [0]=3
+       [1]=1
+       [2]=2
+       [3]=null
+       [4]=0
+my_array.to_string()=[ 3, 1, 2, null, 0 ]
+my_array=
+       [0]=null
+       [1]=0
+       [2]=1
+       [3]=2
+       [4]=3
+my_array.to_string()=[ null, 0, 1, 2, 3 ]
+my_object=
+       abc: 12
+       foo: "bar"
+       bool0: false
+       bool1: true
+my_object.to_string()={ "abc": 12, "foo": "bar", "bool0": false, "bool1": true }
similarity index 73%
rename from test2.c
rename to tests/test2.c
index 5f95565..4a6b660 100644 (file)
--- a/test2.c
@@ -4,14 +4,28 @@
 #include <string.h>
 
 #include "json.h"
+#include "parse_flags.h"
+
+#ifdef TEST_FORMATTED
+#define json_object_to_json_string(obj) json_object_to_json_string_ext(obj,sflags)
+#else
+/* no special define */
+#endif
 
 
 int main(int argc, char **argv)
 {
   json_object *new_obj;
+#ifdef TEST_FORMATTED
+       int sflags = 0;
+#endif
 
   MC_SET_DEBUG(1);
 
+#ifdef TEST_FORMATTED
+       sflags = parse_flags(argc, argv);
+#endif
+
   new_obj = json_tokener_parse("/* more difficult test case */ { \"glossary\": { \"title\": \"example glossary\", \"GlossDiv\": { \"title\": \"S\", \"GlossList\": [ { \"ID\": \"SGML\", \"SortAs\": \"SGML\", \"GlossTerm\": \"Standard Generalized Markup Language\", \"Acronym\": \"SGML\", \"Abbrev\": \"ISO 8879:1986\", \"GlossDef\": \"A meta-markup language, used to create markup languages such as DocBook.\", \"GlossSeeAlso\": [\"GML\", \"XML\", \"markup\"] } ] } } }");
   printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
   json_object_put(new_obj);
diff --git a/tests/test2.expected b/tests/test2.expected
new file mode 100644 (file)
index 0000000..0b740a9
--- /dev/null
@@ -0,0 +1 @@
+new_obj.to_string()={ "glossary": { "title": "example glossary", "GlossDiv": { "title": "S", "GlossList": [ { "ID": "SGML", "SortAs": "SGML", "GlossTerm": "Standard Generalized Markup Language", "Acronym": "SGML", "Abbrev": "ISO 8879:1986", "GlossDef": "A meta-markup language, used to create markup languages such as DocBook.", "GlossSeeAlso": [ "GML", "XML", "markup" ] } ] } } }
diff --git a/tests/test2.test b/tests/test2.test
new file mode 100755 (executable)
index 0000000..d4a4e79
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# Common definitions
+if test -z "$srcdir"; then
+    srcdir="${0%/*}"
+    test "$srcdir" = "$0" && srcdir=.
+    test -z "$srcdir" && srcdir=.
+fi
+. "$srcdir/test-defs.sh"
+
+run_output_test test2
+_err=$?
+
+for flag in plain spaced pretty ; do
+       run_output_test -o test2Formatted_${flag} test2Formatted ${flag}
+       _err2=$?
+       if [ $_err -eq 0 ] ; then
+               _err=$_err2
+       fi
+done
+
+exit $_err
diff --git a/tests/test2Formatted_plain.expected b/tests/test2Formatted_plain.expected
new file mode 100644 (file)
index 0000000..cc587e9
--- /dev/null
@@ -0,0 +1 @@
+new_obj.to_string()={"glossary":{"title":"example glossary","GlossDiv":{"title":"S","GlossList":[{"ID":"SGML","SortAs":"SGML","GlossTerm":"Standard Generalized Markup Language","Acronym":"SGML","Abbrev":"ISO 8879:1986","GlossDef":"A meta-markup language, used to create markup languages such as DocBook.","GlossSeeAlso":["GML","XML","markup"]}]}}}
diff --git a/tests/test2Formatted_pretty.expected b/tests/test2Formatted_pretty.expected
new file mode 100644 (file)
index 0000000..8d6d740
--- /dev/null
@@ -0,0 +1,23 @@
+new_obj.to_string()={
+  "glossary":{
+    "title":"example glossary",
+    "GlossDiv":{
+      "title":"S",
+      "GlossList":[
+        {
+          "ID":"SGML",
+          "SortAs":"SGML",
+          "GlossTerm":"Standard Generalized Markup Language",
+          "Acronym":"SGML",
+          "Abbrev":"ISO 8879:1986",
+          "GlossDef":"A meta-markup language, used to create markup languages such as DocBook.",
+          "GlossSeeAlso":[
+            "GML",
+            "XML",
+            "markup"
+          ]
+        }
+      ]
+    }
+  }
+}
diff --git a/tests/test2Formatted_spaced.expected b/tests/test2Formatted_spaced.expected
new file mode 100644 (file)
index 0000000..0b740a9
--- /dev/null
@@ -0,0 +1 @@
+new_obj.to_string()={ "glossary": { "title": "example glossary", "GlossDiv": { "title": "S", "GlossList": [ { "ID": "SGML", "SortAs": "SGML", "GlossTerm": "Standard Generalized Markup Language", "Acronym": "SGML", "Abbrev": "ISO 8879:1986", "GlossDef": "A meta-markup language, used to create markup languages such as DocBook.", "GlossSeeAlso": [ "GML", "XML", "markup" ] } ] } } }
diff --git a/tests/test4.c b/tests/test4.c
new file mode 100644 (file)
index 0000000..555afd1
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * gcc -o utf8 utf8.c -I/home/y/include -L./.libs -ljson
+*/
+
+#include <stdio.h>
+#include <string.h>
+#include "config.h"
+
+#include "json_inttypes.h"
+#include "json_object.h"
+#include "json_tokener.h"
+
+void print_hex( const char* s) {
+        const char *iter = s;
+        unsigned char ch;
+        while ((ch = *iter++) != 0) {
+           if( ',' != ch)
+            printf("%x ", ch);
+           else
+            printf( ",");
+        }
+        printf("\n");
+}
+
+int main() {
+    const char *input = "\"\\ud840\\udd26,\\ud840\\udd27,\\ud800\\udd26,\\ud800\\udd27\"";
+    const char *expected = "\xF0\xA0\x84\xA6,\xF0\xA0\x84\xA7,\xF0\x90\x84\xA6,\xF0\x90\x84\xA7";
+    struct json_object *parse_result = json_tokener_parse((char*)input);
+    const char *unjson = json_object_get_string(parse_result);
+
+    printf("input: %s\n", input);
+
+    int strings_match = !strcmp( expected, unjson);
+       int retval = 0;
+    if (strings_match) {
+        printf("JSON parse result is correct: %s\n", unjson);
+        printf("PASS\n");
+    } else {
+        printf("JSON parse result doesn't match expected string\n");
+        printf("expected string bytes: ");
+        print_hex( expected);
+        printf("parsed string bytes:   ");
+        print_hex( unjson);
+        printf("FAIL\n");
+        retval = 1;
+    }
+       json_object_put(parse_result);
+       return retval;
+}
diff --git a/tests/test4.expected b/tests/test4.expected
new file mode 100644 (file)
index 0000000..68d4336
--- /dev/null
@@ -0,0 +1,3 @@
+input: "\ud840\udd26,\ud840\udd27,\ud800\udd26,\ud800\udd27"
+JSON parse result is correct: 𠄦,𠄧,𐄦,𐄧
+PASS
diff --git a/tests/test4.test b/tests/test4.test
new file mode 100755 (executable)
index 0000000..8bcc460
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+# Common definitions
+if test -z "$srcdir"; then
+    srcdir="${0%/*}"
+    test "$srcdir" = "$0" && srcdir=.
+    test -z "$srcdir" && srcdir=.
+fi
+. "$srcdir/test-defs.sh"
+
+run_output_test test4
+exit $?
diff --git a/tests/test_cast.c b/tests/test_cast.c
new file mode 100644 (file)
index 0000000..aad44d0
--- /dev/null
@@ -0,0 +1,106 @@
+/*
+ * Tests if casting within the json_object_get_* functions work correctly.
+ * Also checks the json_object_get_type and json_object_is_type functions.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include "config.h"
+
+#include "json_inttypes.h"
+#include "json_object.h"
+#include "json_tokener.h"
+#include "json_util.h"
+
+static void getit(struct json_object *new_obj, const char *field);
+static void checktype_header(void);
+static void checktype(struct json_object *new_obj, const char *field);
+
+int main(int argc, char **argv)
+{
+       const char *input = "{\n\
+               \"string_of_digits\": \"123\",\n\
+               \"regular_number\": 222,\n\
+               \"decimal_number\": 99.55,\n\
+               \"boolean_true\": true,\n\
+               \"boolean_false\": false,\n\
+               \"big_number\": 2147483649,\n\
+               \"a_null\": null,\n\
+       }";
+       /* Note: 2147483649 = INT_MAX + 2 */
+
+       struct json_object *new_obj;
+
+       new_obj = json_tokener_parse(input);
+       printf("Parsed input: %s\n", input);
+       printf("Result is %s\n", (new_obj == NULL) ? "NULL (error!)" : "not NULL");
+       if (!new_obj)
+               return 1; // oops, we failed.
+
+       getit(new_obj, "string_of_digits");
+       getit(new_obj, "regular_number");
+       getit(new_obj, "decimal_number");
+       getit(new_obj, "boolean_true");
+       getit(new_obj, "boolean_false");
+       getit(new_obj, "big_number");
+       getit(new_obj, "a_null");
+
+       // Now check the behaviour of the json_object_is_type() function.
+       printf("\n================================\n");
+       checktype_header();
+       checktype(new_obj, NULL);
+       checktype(new_obj, "string_of_digits");
+       checktype(new_obj, "regular_number");
+       checktype(new_obj, "decimal_number");
+       checktype(new_obj, "boolean_true");
+       checktype(new_obj, "boolean_false");
+       checktype(new_obj, "big_number");
+       checktype(new_obj, "a_null");
+
+    json_object_put(new_obj);
+
+    return 0;
+}
+
+static void getit(struct json_object *new_obj, const char *field)
+{
+       struct json_object *o = json_object_object_get(new_obj, field);
+
+       enum json_type o_type = json_object_get_type(o);
+       printf("new_obj.%s json_object_get_type()=%s\n", field,
+              json_type_to_name(o_type));
+       printf("new_obj.%s json_object_get_int()=%d\n", field,
+              json_object_get_int(o));
+       printf("new_obj.%s json_object_get_int64()=%" PRId64 "\n", field,
+              json_object_get_int64(o));
+       printf("new_obj.%s json_object_get_boolean()=%d\n", field,
+              json_object_get_boolean(o));
+       printf("new_obj.%s json_object_get_double()=%f\n", field,
+              json_object_get_double(o));
+}
+
+static void checktype_header()
+{
+       printf("json_object_is_type: %s,%s,%s,%s,%s,%s,%s\n",
+               json_type_to_name(json_type_null),
+               json_type_to_name(json_type_boolean),
+               json_type_to_name(json_type_double),
+               json_type_to_name(json_type_int),
+               json_type_to_name(json_type_object),
+               json_type_to_name(json_type_array),
+               json_type_to_name(json_type_string));
+}
+static void checktype(struct json_object *new_obj, const char *field)
+{
+       struct json_object *o = field ? json_object_object_get(new_obj, field) : new_obj;
+       printf("new_obj%s%-18s: %d,%d,%d,%d,%d,%d,%d\n",
+               field ? "." : " ", field ? field : "",
+               json_object_is_type(o, json_type_null),
+               json_object_is_type(o, json_type_boolean),
+               json_object_is_type(o, json_type_double),
+               json_object_is_type(o, json_type_int),
+               json_object_is_type(o, json_type_object),
+               json_object_is_type(o, json_type_array),
+               json_object_is_type(o, json_type_string));
+}
diff --git a/tests/test_cast.expected b/tests/test_cast.expected
new file mode 100644 (file)
index 0000000..76ff823
--- /dev/null
@@ -0,0 +1,56 @@
+Parsed input: {
+               "string_of_digits": "123",
+               "regular_number": 222,
+               "decimal_number": 99.55,
+               "boolean_true": true,
+               "boolean_false": false,
+               "big_number": 2147483649,
+               "a_null": null,
+       }
+Result is not NULL
+new_obj.string_of_digits json_object_get_type()=string
+new_obj.string_of_digits json_object_get_int()=123
+new_obj.string_of_digits json_object_get_int64()=123
+new_obj.string_of_digits json_object_get_boolean()=1
+new_obj.string_of_digits json_object_get_double()=123.000000
+new_obj.regular_number json_object_get_type()=int
+new_obj.regular_number json_object_get_int()=222
+new_obj.regular_number json_object_get_int64()=222
+new_obj.regular_number json_object_get_boolean()=1
+new_obj.regular_number json_object_get_double()=222.000000
+new_obj.decimal_number json_object_get_type()=double
+new_obj.decimal_number json_object_get_int()=99
+new_obj.decimal_number json_object_get_int64()=99
+new_obj.decimal_number json_object_get_boolean()=1
+new_obj.decimal_number json_object_get_double()=99.550000
+new_obj.boolean_true json_object_get_type()=boolean
+new_obj.boolean_true json_object_get_int()=1
+new_obj.boolean_true json_object_get_int64()=1
+new_obj.boolean_true json_object_get_boolean()=1
+new_obj.boolean_true json_object_get_double()=1.000000
+new_obj.boolean_false json_object_get_type()=boolean
+new_obj.boolean_false json_object_get_int()=0
+new_obj.boolean_false json_object_get_int64()=0
+new_obj.boolean_false json_object_get_boolean()=0
+new_obj.boolean_false json_object_get_double()=0.000000
+new_obj.big_number json_object_get_type()=int
+new_obj.big_number json_object_get_int()=2147483647
+new_obj.big_number json_object_get_int64()=2147483649
+new_obj.big_number json_object_get_boolean()=1
+new_obj.big_number json_object_get_double()=2147483649.000000
+new_obj.a_null json_object_get_type()=null
+new_obj.a_null json_object_get_int()=0
+new_obj.a_null json_object_get_int64()=0
+new_obj.a_null json_object_get_boolean()=0
+new_obj.a_null json_object_get_double()=0.000000
+
+================================
+json_object_is_type: null,boolean,double,int,object,array,string
+new_obj                   : 0,0,0,0,1,0,0
+new_obj.string_of_digits  : 0,0,0,0,0,0,1
+new_obj.regular_number    : 0,0,0,1,0,0,0
+new_obj.decimal_number    : 0,0,1,0,0,0,0
+new_obj.boolean_true      : 0,1,0,0,0,0,0
+new_obj.boolean_false     : 0,1,0,0,0,0,0
+new_obj.big_number        : 0,0,0,1,0,0,0
+new_obj.a_null            : 1,0,0,0,0,0,0
diff --git a/tests/test_cast.test b/tests/test_cast.test
new file mode 100755 (executable)
index 0000000..2102467
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+# Common definitions
+if test -z "$srcdir"; then
+    srcdir="${0%/*}"
+    test "$srcdir" = "$0" && srcdir=.
+    test -z "$srcdir" && srcdir=.
+fi
+. "$srcdir/test-defs.sh"
+
+run_output_test test_cast
+exit $?
diff --git a/tests/test_null.c b/tests/test_null.c
new file mode 100644 (file)
index 0000000..73729b8
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+* Tests if binary strings are supported.
+*/
+
+#include <stdio.h>
+#include <string.h>
+#include "config.h"
+
+#include "json_inttypes.h"
+#include "json_object.h"
+
+int main() {
+    // this test has a space after the null character. check that it's still included
+    const char *input = " \0 ";
+    const char *expected = "\" \\u0000 \"";
+    struct json_object *string = json_object_new_string_len(input, 3);
+    const char *json = json_object_to_json_string(string);
+
+    int strings_match =  !strcmp( expected, json);
+    int retval = 0;
+    if (strings_match) {
+        printf("JSON write result is correct: %s\n", json);
+        printf("PASS\n");
+    } else {
+        printf("JSON write result doesn't match expected string\n");
+        printf("expected string: ");
+        printf("%s\n", expected);
+        printf("parsed string:   ");
+        printf("%s\n", json);
+        printf("FAIL\n");
+        retval=1;
+    }
+    json_object_put(string);
+    return retval;
+}
diff --git a/tests/test_null.expected b/tests/test_null.expected
new file mode 100644 (file)
index 0000000..fd7b479
--- /dev/null
@@ -0,0 +1,2 @@
+JSON write result is correct: " \u0000 "
+PASS
diff --git a/tests/test_null.test b/tests/test_null.test
new file mode 100755 (executable)
index 0000000..469ec64
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+# Common definitions
+if test -z "$srcdir"; then
+    srcdir="${0%/*}"
+    test "$srcdir" = "$0" && srcdir=.
+    test -z "$srcdir" && srcdir=.
+fi
+. "$srcdir/test-defs.sh"
+
+run_output_test test_null
+exit $?
diff --git a/tests/test_parse.c b/tests/test_parse.c
new file mode 100644 (file)
index 0000000..0040760
--- /dev/null
@@ -0,0 +1,270 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <stddef.h>
+#include <string.h>
+#include <assert.h>
+
+#include "json.h"
+#include "json_tokener.h"
+
+static void test_basic_parse(void);
+static void test_verbose_parse(void);
+static void test_incremental_parse(void);
+
+int main(int argc, char **argv)
+{
+       MC_SET_DEBUG(1);
+
+       test_basic_parse();
+       printf("==================================\n");
+       test_verbose_parse();
+       printf("==================================\n");
+       test_incremental_parse();
+       printf("==================================\n");
+}
+
+static void test_basic_parse()
+{
+  json_object *new_obj;
+
+  new_obj = json_tokener_parse("\"\003\"");
+  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
+  json_object_put(new_obj);
+
+  new_obj = json_tokener_parse("/* hello */\"foo\"");
+  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
+  json_object_put(new_obj);
+
+  new_obj = json_tokener_parse("// hello\n\"foo\"");
+  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
+  json_object_put(new_obj);
+
+  new_obj = json_tokener_parse("\"\\u0041\\u0042\\u0043\"");
+  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
+  json_object_put(new_obj);
+
+  new_obj = json_tokener_parse("null");
+  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
+  json_object_put(new_obj);
+
+  new_obj = json_tokener_parse("True");
+  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
+  json_object_put(new_obj);
+
+  new_obj = json_tokener_parse("12");
+  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
+  json_object_put(new_obj);
+
+  new_obj = json_tokener_parse("12.3");
+  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
+  json_object_put(new_obj);
+
+  new_obj = json_tokener_parse("[\"\\n\"]");
+  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
+  json_object_put(new_obj);
+
+  new_obj = json_tokener_parse("[\"\\nabc\\n\"]");
+  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
+  json_object_put(new_obj);
+
+  new_obj = json_tokener_parse("[null]");
+  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
+  json_object_put(new_obj);
+
+  new_obj = json_tokener_parse("[]");
+  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
+  json_object_put(new_obj);
+
+  new_obj = json_tokener_parse("[false]");
+  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
+  json_object_put(new_obj);
+
+  new_obj = json_tokener_parse("[\"abc\",null,\"def\",12]");
+  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
+  json_object_put(new_obj);
+
+  new_obj = json_tokener_parse("{}");
+  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
+  json_object_put(new_obj);
+
+  new_obj = json_tokener_parse("{ \"foo\": \"bar\" }");
+  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
+  json_object_put(new_obj);
+
+  new_obj = json_tokener_parse("{ \"foo\": \"bar\", \"baz\": null, \"bool0\": true }");
+  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
+  json_object_put(new_obj);
+
+  new_obj = json_tokener_parse("{ \"foo\": [null, \"foo\"] }");
+  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
+  json_object_put(new_obj);
+
+  new_obj = json_tokener_parse("{ \"abc\": 12, \"foo\": \"bar\", \"bool0\": false, \"bool1\": true, \"arr\": [ 1, 2, 3, null, 5 ] }");
+  printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
+  json_object_put(new_obj);
+}
+
+static void test_verbose_parse()
+{
+       json_object *new_obj;
+       enum json_tokener_error error = json_tokener_success;
+
+       new_obj = json_tokener_parse_verbose("{ foo }", &error);
+       assert (error == json_tokener_error_parse_object_key_name);
+       assert (new_obj == NULL);
+
+       new_obj = json_tokener_parse("{ foo }");
+       assert (new_obj == NULL);
+
+       new_obj = json_tokener_parse("foo");
+       assert (new_obj == NULL);
+       new_obj = json_tokener_parse_verbose("foo", &error);
+       assert (new_obj == NULL);
+
+       /* b/c the string starts with 'f' parsing return a boolean error */
+       assert (error == json_tokener_error_parse_boolean);
+
+       printf("json_tokener_parse_versbose() OK\n");
+}
+
+struct incremental_step {
+       const char *string_to_parse;
+       int length;
+       int char_offset;
+       enum json_tokener_error expected_error;
+       int reset_tokener;
+} incremental_steps[] = {
+
+       /* Check that full json messages can be parsed, both w/ and w/o a reset */
+       { "{ \"foo\": 123 }", -1, -1, json_tokener_success,  0 },
+       { "{ \"foo\": 456 }", -1, -1, json_tokener_success,  1 },
+       { "{ \"foo\": 789 }", -1, -1, json_tokener_success,  1 },
+
+       /*  Check a basic incremental parse */
+       { "{ \"foo",          -1, -1, json_tokener_continue, 0 },
+       { "\": {\"bar",       -1, -1, json_tokener_continue, 0 },
+       { "\":13}}",          -1, -1, json_tokener_success,  1 },
+
+       /* Check that json_tokener_reset actually resets */
+       { "{ \"foo",          -1, -1, json_tokener_continue, 1 },
+       { ": \"bar\"}",       -1, 0, json_tokener_error_parse_unexpected, 1 },
+
+       /* Check incremental parsing with trailing characters */
+       { "{ \"foo",          -1, -1, json_tokener_continue, 0 },
+       { "\": {\"bar",       -1, -1, json_tokener_continue, 0 },
+       { "\":13}}XXXX",      10, 6, json_tokener_success,  0 },
+       { "XXXX",              4, 0, json_tokener_error_parse_unexpected, 1 },
+
+       /* Check that trailing characters can change w/o a reset */
+       { "{\"x\": 123 }\"X\"", -1, 11, json_tokener_success, 0 },
+       { "\"Y\"",            -1, -1, json_tokener_success, 1 },
+
+       /* To stop parsing a number we need to reach a non-digit, e.g. a \0 */
+       { "1",                 1, 1, json_tokener_continue, 0 },
+       { "2",                 2, 1, json_tokener_success, 0 },
+
+       /* Strings have a well defined end point, so we can stop at the quote */
+       { "\"blue\"",         -1, -1, json_tokener_success, 0 },
+
+       { "[1,2,3]",          -1, -1, json_tokener_success, 0 },
+
+       /* This behaviour doesn't entirely follow the json spec, but until we have
+          a way to specify how strict to be we follow Postel's Law and be liberal
+          in what we accept (up to a point). */
+       { "[1,2,3,]",         -1, -1, json_tokener_success, 0 },
+       { "[1,2,,3,]",        -1, 5, json_tokener_error_parse_unexpected, 0 },
+
+       { NULL, json_tokener_success },
+};
+
+static void test_incremental_parse()
+{
+       json_object *new_obj;
+       enum json_tokener_error jerr;
+       json_tokener *tok;
+       const char *string_to_parse;
+       int ii;
+       int num_ok, num_error;
+
+       num_ok = 0;
+       num_error = 0;
+
+       printf("Starting incremental tests.\n");
+
+       string_to_parse = "{ \"foo"; /* } */
+       printf("json_tokener_parse(%s) ... ", string_to_parse);
+       new_obj = json_tokener_parse(string_to_parse);
+       if (new_obj == NULL) printf("got error as expected\n");
+
+       /* test incremental parsing in various forms */
+       tok = json_tokener_new();
+       for (ii = 0; incremental_steps[ii].string_to_parse != NULL; ii++)
+       {
+               int this_step_ok = 0;
+               struct incremental_step *step = &incremental_steps[ii];
+               int length = step->length;
+               int expected_char_offset = step->char_offset;
+               if (length == -1)
+                       length = strlen(step->string_to_parse);
+               if (expected_char_offset == -1)
+                       expected_char_offset = length;
+
+               printf("json_tokener_parse_ex(tok, %-12s, %3d) ... ",
+                       step->string_to_parse, length);
+               new_obj = json_tokener_parse_ex(tok, step->string_to_parse, length);
+
+               jerr = json_tokener_get_error(tok);
+               if (step->expected_error != json_tokener_success)
+               {
+                       if (new_obj != NULL)
+                               printf("ERROR: invalid object returned: %s\n",
+                                       json_object_to_json_string(new_obj));
+                       else if (jerr != step->expected_error)
+                               printf("ERROR: got wrong error: %s\n",
+                                       json_tokener_error_desc(jerr));
+                       else if (tok->char_offset != expected_char_offset)
+                               printf("ERROR: wrong char_offset %d != expected %d\n",
+                                       tok->char_offset,
+                                       expected_char_offset);
+                       else
+                       {
+                               printf("OK: got correct error: %s\n", json_tokener_error_desc(jerr));
+                               this_step_ok = 1;
+                       }
+               }
+               else
+               {
+                       if (new_obj == NULL)
+                               printf("ERROR: expected valid object, instead: %s\n",
+                                       json_tokener_error_desc(jerr));
+                       else if (tok->char_offset != expected_char_offset)
+                               printf("ERROR: wrong char_offset %d != expected %d\n",
+                                       tok->char_offset,
+                                       expected_char_offset);
+                       else
+                       {
+                               printf("OK: got object of type [%s]: %s\n",
+                                       json_type_to_name(json_object_get_type(new_obj)),
+                                       json_object_to_json_string(new_obj));
+                               this_step_ok = 1;
+                       }
+               }
+
+               if (new_obj)
+                       json_object_put(new_obj);
+
+               if (step->reset_tokener)
+                       json_tokener_reset(tok);
+
+               if (this_step_ok)
+                       num_ok++;
+               else
+                       num_error++;
+       }
+
+       json_tokener_free(tok);
+
+       printf("End Incremental Tests OK=%d ERROR=%d\n", num_ok, num_error);
+
+       return;
+}
diff --git a/tests/test_parse.expected b/tests/test_parse.expected
new file mode 100644 (file)
index 0000000..2481bde
--- /dev/null
@@ -0,0 +1,46 @@
+new_obj.to_string()="\u0003"
+new_obj.to_string()="foo"
+new_obj.to_string()="foo"
+new_obj.to_string()="ABC"
+new_obj.to_string()=null
+new_obj.to_string()=true
+new_obj.to_string()=12
+new_obj.to_string()=12.300000
+new_obj.to_string()=[ "\n" ]
+new_obj.to_string()=[ "\nabc\n" ]
+new_obj.to_string()=[ null ]
+new_obj.to_string()=[ ]
+new_obj.to_string()=[ false ]
+new_obj.to_string()=[ "abc", null, "def", 12 ]
+new_obj.to_string()={ }
+new_obj.to_string()={ "foo": "bar" }
+new_obj.to_string()={ "foo": "bar", "baz": null, "bool0": true }
+new_obj.to_string()={ "foo": [ null, "foo" ] }
+new_obj.to_string()={ "abc": 12, "foo": "bar", "bool0": false, "bool1": true, "arr": [ 1, 2, 3, null, 5 ] }
+==================================
+json_tokener_parse_versbose() OK
+==================================
+Starting incremental tests.
+json_tokener_parse({ "foo) ... got error as expected
+json_tokener_parse_ex(tok, { "foo": 123 },  14) ... OK: got object of type [object]: { "foo": 123 }
+json_tokener_parse_ex(tok, { "foo": 456 },  14) ... OK: got object of type [object]: { "foo": 456 }
+json_tokener_parse_ex(tok, { "foo": 789 },  14) ... OK: got object of type [object]: { "foo": 789 }
+json_tokener_parse_ex(tok, { "foo      ,   6) ... OK: got correct error: continue
+json_tokener_parse_ex(tok, ": {"bar    ,   8) ... OK: got correct error: continue
+json_tokener_parse_ex(tok, ":13}}      ,   6) ... OK: got object of type [object]: { "foo": { "bar": 13 } }
+json_tokener_parse_ex(tok, { "foo      ,   6) ... OK: got correct error: continue
+json_tokener_parse_ex(tok, : "bar"}    ,   8) ... OK: got correct error: unexpected character
+json_tokener_parse_ex(tok, { "foo      ,   6) ... OK: got correct error: continue
+json_tokener_parse_ex(tok, ": {"bar    ,   8) ... OK: got correct error: continue
+json_tokener_parse_ex(tok, ":13}}XXXX  ,  10) ... OK: got object of type [object]: { "foo": { "bar": 13 } }
+json_tokener_parse_ex(tok, XXXX        ,   4) ... OK: got correct error: unexpected character
+json_tokener_parse_ex(tok, {"x": 123 }"X",  14) ... OK: got object of type [object]: { "x": 123 }
+json_tokener_parse_ex(tok, "Y"         ,   3) ... OK: got object of type [string]: "Y"
+json_tokener_parse_ex(tok, 1           ,   1) ... OK: got correct error: continue
+json_tokener_parse_ex(tok, 2           ,   2) ... OK: got object of type [int]: 12
+json_tokener_parse_ex(tok, "blue"      ,   6) ... OK: got object of type [string]: "blue"
+json_tokener_parse_ex(tok, [1,2,3]     ,   7) ... OK: got object of type [array]: [ 1, 2, 3 ]
+json_tokener_parse_ex(tok, [1,2,3,]    ,   8) ... OK: got object of type [array]: [ 1, 2, 3 ]
+json_tokener_parse_ex(tok, [1,2,,3,]   ,   9) ... OK: got correct error: unexpected character
+End Incremental Tests OK=20 ERROR=0
+==================================
diff --git a/tests/test_parse.test b/tests/test_parse.test
new file mode 100755 (executable)
index 0000000..70d1c82
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+# Common definitions
+if test -z "$srcdir"; then
+    srcdir="${0%/*}"
+    test "$srcdir" = "$0" && srcdir=.
+    test -z "$srcdir" && srcdir=.
+fi
+. "$srcdir/test-defs.sh"
+
+run_output_test test_parse
+exit $?
diff --git a/tests/test_parse_int64.c b/tests/test_parse_int64.c
new file mode 100644 (file)
index 0000000..0893356
--- /dev/null
@@ -0,0 +1,105 @@
+
+#include <stdio.h>
+#include <string.h>
+
+#include "config.h"
+
+#include "json_inttypes.h"
+#include "json_util.h"
+
+void checkit(const char *buf)
+{
+       int64_t cint64 = -666;
+
+       int retval = json_parse_int64(buf, &cint64);
+       printf("buf=%s parseit=%d, value=%" PRId64 " \n", buf, retval, cint64);
+}
+
+/**
+ * This test calls json_parse_int64 with a variety of different strings.
+ * It's purpose is to ensure that the results are consistent across all
+ * different environments that it might be executed in.
+ *
+ * This always exits with a 0 exit value.  The output should be compared
+ * against previously saved expected output.
+ */
+int main()
+{
+       char buf[100];
+
+       checkit("x");
+
+       checkit("0");
+       checkit("-0");
+
+       checkit("00000000");
+       checkit("-00000000");
+
+       checkit("1");
+
+       strcpy(buf, "2147483647"); // aka INT32_MAX
+       checkit(buf);
+
+       strcpy(buf, "-1");
+       checkit(buf);
+
+       strcpy(buf, "   -1");
+       checkit(buf);
+
+       strcpy(buf, "00001234");
+       checkit(buf);
+
+       strcpy(buf, "0001234x");
+       checkit(buf);
+
+       strcpy(buf, "-00001234");
+       checkit(buf);
+
+       strcpy(buf, "-00001234x");
+       checkit(buf);
+
+       strcpy(buf, "4294967295"); // aka UINT32_MAX
+
+       sprintf(buf, "4294967296");  // aka UINT32_MAX + 1
+
+       strcpy(buf, "21474836470"); // INT32_MAX * 10
+       checkit(buf);
+
+       strcpy(buf, "31474836470"); // INT32_MAX * 10 + a bunch
+       checkit(buf);
+
+       strcpy(buf, "-2147483647"); // INT32_MIN + 1
+       checkit(buf);
+
+       strcpy(buf, "-2147483648"); // INT32_MIN
+       checkit(buf);
+
+       strcpy(buf, "-2147483649"); // INT32_MIN - 1
+       checkit(buf);
+
+       strcpy(buf, "-21474836480"); // INT32_MIN * 10
+       checkit(buf);
+
+       strcpy(buf, "9223372036854775807"); // INT64_MAX
+       checkit(buf);
+
+       strcpy(buf, "9223372036854775808"); // INT64_MAX + 1
+       checkit(buf);
+
+       strcpy(buf, "-9223372036854775808"); // INT64_MIN
+       checkit(buf);
+
+       strcpy(buf, "-9223372036854775809"); // INT64_MIN - 1
+       checkit(buf);
+
+       strcpy(buf, "18446744073709551615"); // UINT64_MAX
+       checkit(buf);
+
+       strcpy(buf, "18446744073709551616"); // UINT64_MAX + 1
+       checkit(buf);
+
+       strcpy(buf, "-18446744073709551616"); // -UINT64_MAX
+       checkit(buf);
+
+       return 0;
+}
diff --git a/tests/test_parse_int64.expected b/tests/test_parse_int64.expected
new file mode 100644 (file)
index 0000000..23a9803
--- /dev/null
@@ -0,0 +1,26 @@
+buf=x parseit=1, value=-666 
+buf=0 parseit=0, value=0 
+buf=-0 parseit=0, value=0 
+buf=00000000 parseit=0, value=0 
+buf=-00000000 parseit=0, value=0 
+buf=1 parseit=0, value=1 
+buf=2147483647 parseit=0, value=2147483647 
+buf=-1 parseit=0, value=-1 
+buf=   -1 parseit=0, value=-1 
+buf=00001234 parseit=0, value=1234 
+buf=0001234x parseit=0, value=1234 
+buf=-00001234 parseit=0, value=-1234 
+buf=-00001234x parseit=0, value=-1234 
+buf=21474836470 parseit=0, value=21474836470 
+buf=31474836470 parseit=0, value=31474836470 
+buf=-2147483647 parseit=0, value=-2147483647 
+buf=-2147483648 parseit=0, value=-2147483648 
+buf=-2147483649 parseit=0, value=-2147483649 
+buf=-21474836480 parseit=0, value=-21474836480 
+buf=9223372036854775807 parseit=0, value=9223372036854775807 
+buf=9223372036854775808 parseit=0, value=9223372036854775807 
+buf=-9223372036854775808 parseit=0, value=-9223372036854775808 
+buf=-9223372036854775809 parseit=0, value=-9223372036854775808 
+buf=18446744073709551615 parseit=0, value=9223372036854775807 
+buf=18446744073709551616 parseit=0, value=9223372036854775807 
+buf=-18446744073709551616 parseit=0, value=-9223372036854775808 
diff --git a/tests/test_printbuf.c b/tests/test_printbuf.c
new file mode 100644 (file)
index 0000000..3676b54
--- /dev/null
@@ -0,0 +1,165 @@
+#include <assert.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <limits.h>
+
+#include "debug.h"
+#include "printbuf.h"
+
+static void test_basic_printbuf_memset(void);
+static void test_printbuf_memset_length(void);
+
+static void test_basic_printbuf_memset()
+{
+       struct printbuf *pb;
+       
+       printf("%s: starting test\n", __func__);
+       pb = printbuf_new();
+       sprintbuf(pb, "blue:%d", 1);
+       printbuf_memset(pb, -1, 'x', 52);
+       printf("Buffer contents:%.*s\n", printbuf_length(pb), pb->buf);
+       printbuf_free(pb);
+       printf("%s: end test\n", __func__);
+}
+
+static void test_printbuf_memset_length()
+{
+       struct printbuf *pb;
+
+       printf("%s: starting test\n", __func__);
+       pb = printbuf_new();
+       printbuf_memset(pb, -1, ' ', 0);
+       printbuf_memset(pb, -1, ' ', 0);
+       printbuf_memset(pb, -1, ' ', 0);
+       printbuf_memset(pb, -1, ' ', 0);
+       printbuf_memset(pb, -1, ' ', 0);
+       printf("Buffer length: %d\n", printbuf_length(pb));
+       printbuf_memset(pb, -1, ' ', 2);
+       printbuf_memset(pb, -1, ' ', 4);
+       printbuf_memset(pb, -1, ' ', 6);
+       printf("Buffer length: %d\n", printbuf_length(pb));
+       printbuf_memset(pb, -1, ' ', 6);
+       printf("Buffer length: %d\n", printbuf_length(pb));
+       printbuf_memset(pb, -1, ' ', 8);
+       printbuf_memset(pb, -1, ' ', 10);
+       printbuf_memset(pb, -1, ' ', 10);
+       printbuf_memset(pb, -1, ' ', 10);
+       printbuf_memset(pb, -1, ' ', 20);
+       printf("Buffer length: %d\n", printbuf_length(pb));
+
+       // No length change should occur
+       printbuf_memset(pb, 0, 'x', 30);
+       printf("Buffer length: %d\n", printbuf_length(pb));
+
+       // This should extend it by one.
+       printbuf_memset(pb, 0, 'x', printbuf_length(pb) + 1);
+       printf("Buffer length: %d\n", printbuf_length(pb));
+
+       printbuf_free(pb);
+       printf("%s: end test\n", __func__);
+}
+
+static void test_printbuf_memappend(int *before_resize);
+static void test_printbuf_memappend(int *before_resize)
+{
+       struct printbuf *pb;
+       int initial_size;
+
+       printf("%s: starting test\n", __func__);
+       pb = printbuf_new();
+       printf("Buffer length: %d\n", printbuf_length(pb));
+
+       initial_size = pb->size;
+
+       while(pb->size == initial_size)
+       {
+               printbuf_memappend_fast(pb, "x", 1);
+       }
+       *before_resize = printbuf_length(pb) - 1;
+       printf("Appended %d bytes for resize: [%s]\n", *before_resize + 1, pb->buf);
+
+       printbuf_reset(pb);
+       printbuf_memappend_fast(pb, "bluexyz123", 3);
+       printf("Partial append: %d, [%s]\n", printbuf_length(pb), pb->buf);
+
+       char with_nulls[] = { 'a', 'b', '\0', 'c' };
+       printbuf_reset(pb);
+       printbuf_memappend_fast(pb, with_nulls, sizeof(with_nulls));
+       printf("With embedded \\0 character: %d, [%s]\n", printbuf_length(pb), pb->buf);
+
+       printbuf_free(pb);
+       pb = printbuf_new();
+       char *data = malloc(*before_resize);
+       memset(data, 'X', *before_resize);
+       printbuf_memappend_fast(pb, data, *before_resize);
+       printf("Append to just before resize: %d, [%s]\n", printbuf_length(pb), pb->buf);
+
+       free(data);
+       printbuf_free(pb);
+
+       pb = printbuf_new();
+       data = malloc(*before_resize + 1);
+       memset(data, 'X', *before_resize + 1);
+       printbuf_memappend_fast(pb, data, *before_resize + 1);
+       printf("Append to just after resize: %d, [%s]\n", printbuf_length(pb), pb->buf);
+       
+       free(data);
+
+       printbuf_free(pb);
+       printf("%s: end test\n", __func__);
+}
+
+static void test_sprintbuf(int before_resize);
+static void test_sprintbuf(int before_resize)
+{
+       struct printbuf *pb;
+
+       printf("%s: starting test\n", __func__);
+       pb = printbuf_new();
+       printf("Buffer length: %d\n", printbuf_length(pb));
+
+       char *data = malloc(before_resize + 1 + 1);
+       memset(data, 'X', before_resize + 1 + 1);
+       data[before_resize + 1] = '\0';
+       sprintbuf(pb, "%s", data);
+       printf("sprintbuf to just after resize(%d+1): %d, [%s], strlen(buf)=%d\n", before_resize, printbuf_length(pb), pb->buf, strlen(pb->buf));
+
+       printbuf_reset(pb);
+       sprintbuf(pb, "plain");
+       printf("%d, [%s]\n", printbuf_length(pb), pb->buf);
+
+       sprintbuf(pb, "%d", 1);
+       printf("%d, [%s]\n", printbuf_length(pb), pb->buf);
+
+       sprintbuf(pb, "%d", INT_MAX);
+       printf("%d, [%s]\n", printbuf_length(pb), pb->buf);
+
+       sprintbuf(pb, "%d", INT_MIN);
+       printf("%d, [%s]\n", printbuf_length(pb), pb->buf);
+
+       sprintbuf(pb, "%s", "%s");
+       printf("%d, [%s]\n", printbuf_length(pb), pb->buf);
+
+       printbuf_free(pb);
+       printf("%s: end test\n", __func__);
+}
+
+int main(int argc, char **argv)
+{
+       int before_resize = 0;
+
+       mc_set_debug(1);
+
+       test_basic_printbuf_memset();
+       printf("========================================\n");
+       test_printbuf_memset_length();
+       printf("========================================\n");
+       test_printbuf_memappend(&before_resize);
+       printf("========================================\n");
+       test_sprintbuf(before_resize);
+       printf("========================================\n");
+
+       return 0;
+}
diff --git a/tests/test_printbuf.expected b/tests/test_printbuf.expected
new file mode 100644 (file)
index 0000000..142db0b
--- /dev/null
@@ -0,0 +1,32 @@
+test_basic_printbuf_memset: starting test
+Buffer contents:blue:1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+test_basic_printbuf_memset: end test
+========================================
+test_printbuf_memset_length: starting test
+Buffer length: 0
+Buffer length: 12
+Buffer length: 18
+Buffer length: 76
+Buffer length: 76
+Buffer length: 77
+test_printbuf_memset_length: end test
+========================================
+test_printbuf_memappend: starting test
+Buffer length: 0
+Appended 32 bytes for resize: [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]
+Partial append: 3, [blu]
+With embedded \0 character: 4, [ab]
+Append to just before resize: 31, [XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX]
+Append to just after resize: 32, [XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX]
+test_printbuf_memappend: end test
+========================================
+test_sprintbuf: starting test
+Buffer length: 0
+sprintbuf to just after resize(31+1): 32, [XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX], strlen(buf)=32
+5, [plain]
+6, [plain1]
+16, [plain12147483647]
+27, [plain12147483647-2147483648]
+29, [plain12147483647-2147483648%s]
+test_sprintbuf: end test
+========================================
diff --git a/tests/test_printbuf.test b/tests/test_printbuf.test
new file mode 100755 (executable)
index 0000000..09d27c2
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+# Common definitions
+if test -z "$srcdir"; then
+    srcdir="${0%/*}"
+    test "$srcdir" = "$0" && srcdir=.
+    test -z "$srcdir" && srcdir=.
+fi
+. "$srcdir/test-defs.sh"
+
+run_output_test test_printbuf
+exit $?