diff options
| author | Thomas Haller <thaller@redhat.com> | 2018-01-09 11:12:10 +0100 |
|---|---|---|
| committer | Thomas Haller <thaller@redhat.com> | 2018-01-16 14:49:54 +0100 |
| commit | 0485051707c46e28fc77304592b0eb38136e7bd1 (patch) | |
| tree | 2f8141a5d7df6a20b68c90042a1963de29fc02fa | |
| parent | 85b7062ae273e401bab9200e8cbe8a068571bca9 (diff) | |
| download | NetworkManager-0485051707c46e28fc77304592b0eb38136e7bd1.tar.gz | |
libnm: add compat code for libjansson
| -rw-r--r-- | libnm-core/nm-json.c | 3 | ||||
| -rw-r--r-- | libnm-core/nm-json.h | 23 |
2 files changed, 24 insertions, 2 deletions
diff --git a/libnm-core/nm-json.c b/libnm-core/nm-json.c index 1cca40ce5b..c668992fb2 100644 --- a/libnm-core/nm-json.c +++ b/libnm-core/nm-json.c @@ -62,10 +62,13 @@ json_vt (void) TRY_BIND_SYMBOL (json_object_del); TRY_BIND_SYMBOL (json_object_get); TRY_BIND_SYMBOL (json_object_iter); + TRY_BIND_SYMBOL (json_object_iter_at); TRY_BIND_SYMBOL (json_object_iter_key); TRY_BIND_SYMBOL (json_object_iter_next); TRY_BIND_SYMBOL (json_object_iter_value); +#if JANSSON_VERSION_HEX >= 0x020300 TRY_BIND_SYMBOL (json_object_key_to_iter); +#endif TRY_BIND_SYMBOL (json_object_set_new); TRY_BIND_SYMBOL (json_object_size); TRY_BIND_SYMBOL (json_string); diff --git a/libnm-core/nm-json.h b/libnm-core/nm-json.h index c6c739e9d5..8e6a7a0787 100644 --- a/libnm-core/nm-json.h +++ b/libnm-core/nm-json.h @@ -36,10 +36,13 @@ typedef struct { int (*nm_json_object_del) (json_t *json, const char *key); json_t *(*nm_json_object_get) (const json_t *json, const char *key); void *(*nm_json_object_iter) (json_t *json); + void *(*nm_json_object_iter_at) (json_t *json, const char *key); const char *(*nm_json_object_iter_key) (void *iter); void *(*nm_json_object_iter_next) (json_t *json, void *iter); json_t *(*nm_json_object_iter_value) (void *); +#if JANSSON_VERSION_HEX >= 0x020300 void *(*nm_json_object_key_to_iter) (const char *key); +#endif int (*nm_json_object_set_new) (json_t *json, const char *key, json_t *value); size_t (*nm_json_object_size) (const json_t *json); json_t *(*nm_json_string) (const char *value); @@ -81,24 +84,40 @@ nm_json_decref (const NMJsonVt *vt, json_t *json) #define nm_json_is_object(json) json_is_object (json) #define nm_json_is_array(json) json_is_array (json) #define nm_json_is_true(json) json_is_true (json) -#define nm_json_boolean_value(json) json_boolean_value (json) +#define nm_json_boolean_value(json) json_is_true (json) #define nm_json_array_foreach(vt, array, index, value) \ for(index = 0; \ index < vt->nm_json_array_size (array) && (value = vt->nm_json_array_get (array, index)); \ index++) +#if JANSSON_VERSION_HEX < 0x020300 +#define nm_json_object_foreach(vt, object, key, value) \ + for(key = vt->nm_json_object_iter_key (vt->nm_json_object_iter (object)); \ + key && (value = vt->nm_json_object_iter_value (vt->nm_json_object_iter_at (object, key) )); \ + key = vt->nm_json_object_iter_key (vt->nm_json_object_iter_next (object, vt->nm_json_object_iter_at (object, key)))) +#else #define nm_json_object_foreach(vt, object, key, value) \ for(key = vt->nm_json_object_iter_key (vt->nm_json_object_iter (object)); \ key && (value = vt->nm_json_object_iter_value (vt->nm_json_object_key_to_iter (key))); \ key = vt->nm_json_object_iter_key (vt->nm_json_object_iter_next (object, vt->nm_json_object_key_to_iter (key)))) +#endif -#define nm_json_object_foreach_safe(vt, object, n, key, value) \ +#if JANSSON_VERSION_HEX < 0x020300 +#define nm_json_object_foreach_safe(vt, object, n, key, value) \ + for (key = vt->nm_json_object_iter_key (vt->nm_json_object_iter (object)), \ + n = vt->nm_json_object_iter_next (object, vt->nm_json_object_iter_at (object, key)); \ + key && (value = vt->nm_json_object_iter_value (vt->nm_json_object_iter_at (object, key))); \ + key = vt->nm_json_object_iter_key (n), \ + n = vt->nm_json_object_iter_next (object, vt->nm_json_object_iter_at (object, key))) +#else +#define nm_json_object_foreach_safe(vt, object, n, key, value) \ for(key = vt->nm_json_object_iter_key (vt->nm_json_object_iter (object)), \ n = vt->nm_json_object_iter_next (object, vt->nm_json_object_key_to_iter (key)); \ key && (value = vt->nm_json_object_iter_value (vt->nm_json_object_key_to_iter (key))); \ key = vt->nm_json_object_iter_key (n), \ n = vt->nm_json_object_iter_next (object, vt->nm_json_object_key_to_iter (key))) +#endif #endif /* __NM_JSON_H__ */ |
