diff options
author | Roger Pau Monne <roger.pau@entel.upc.edu> | 2012-01-31 16:48:06 +0000 |
---|---|---|
committer | Roger Pau Monne <roger.pau@entel.upc.edu> | 2012-01-31 16:48:06 +0000 |
commit | ee65792d9386e7eb538dd09674c1c275f2691abb (patch) | |
tree | 290984b181271a662155c02478b9f0ff9281f6d5 /tools/libxl/libxl_json.h | |
parent | 1a4af67d32b1c39b73e09346203f3e12c00b9e41 (diff) | |
download | xen-ee65792d9386e7eb538dd09674c1c275f2691abb.tar.gz xen-ee65792d9386e7eb538dd09674c1c275f2691abb.tar.bz2 xen-ee65792d9386e7eb538dd09674c1c275f2691abb.zip |
libxl: add support for yajl 2.x
This patch adds support for yajl versions 2.x, while retaining 1.x
compatibility. All the needed ifdefs can be found in libxl_json.h.
Signed-off-by: Roger Pau Monne <roger.pau@entel.upc.edu>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
Diffstat (limited to 'tools/libxl/libxl_json.h')
-rw-r--r-- | tools/libxl/libxl_json.h | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/tools/libxl/libxl_json.h b/tools/libxl/libxl_json.h index 720f6df10f..898dec79e7 100644 --- a/tools/libxl/libxl_json.h +++ b/tools/libxl/libxl_json.h @@ -16,7 +16,58 @@ #define LIBXL_JSON_H #include <yajl/yajl_gen.h> +#include <yajl/yajl_parse.h> + +#ifdef HAVE_YAJL_VERSION +# include <yajl/yajl_version.h> +#endif #include <_libxl_types_json.h> +/* YAJL version check */ +#if defined(YAJL_MAJOR) && (YAJL_MAJOR > 1) +# define HAVE_YAJL_V2 1 +#endif + +#ifdef HAVE_YAJL_V2 + +typedef size_t libxl_yajl_length; + +static inline yajl_handle libxl__yajl_alloc(const yajl_callbacks *callbacks, + yajl_alloc_funcs *allocFuncs, + void *ctx) +{ + return yajl_alloc(callbacks, allocFuncs, ctx); +} + +static inline yajl_gen libxl__yajl_gen_alloc(const yajl_alloc_funcs *allocFuncs) +{ + return yajl_gen_alloc(allocFuncs); +} + +#else /* !HAVE_YAJL_V2 */ + +#define yajl_complete_parse yajl_parse_complete + +typedef unsigned int libxl_yajl_length; + +static inline yajl_handle libxl__yajl_alloc(const yajl_callbacks *callbacks, + const yajl_alloc_funcs *allocFuncs, + void *ctx) +{ + yajl_parser_config cfg = { + .allowComments = 1, + .checkUTF8 = 1, + }; + return yajl_alloc(callbacks, &cfg, allocFuncs, ctx); +} + +static inline yajl_gen libxl__yajl_gen_alloc(const yajl_alloc_funcs *allocFuncs) +{ + yajl_gen_config conf = { 1, " " }; + return yajl_gen_alloc(&conf, allocFuncs); +} + +#endif /* !HAVE_YAJL_V2 */ + #endif /* LIBXL_JSON_H */ |