diff options
author | Thomas Haller <thaller@redhat.com> | 2019-05-09 14:03:23 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2019-05-22 21:24:56 +0200 |
commit | a0de3fdcaa5d76d4118a105653c6e1f46c51878c (patch) | |
tree | f8c7e48a49ff5a01ce4fac91e5d87d6898c470d4 | |
parent | 0751b46a27a6a0421e5e863734644a8228d1cb47 (diff) | |
download | NetworkManager-a0de3fdcaa5d76d4118a105653c6e1f46c51878c.tar.gz |
shared: add nm_jansson_json_as_*() helpers to "shared/nm-glib-aux/nm-jansson.h"
-rw-r--r-- | shared/nm-glib-aux/nm-jansson.h | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/shared/nm-glib-aux/nm-jansson.h b/shared/nm-glib-aux/nm-jansson.h index 5a73231f05..dbf9f8b43a 100644 --- a/shared/nm-glib-aux/nm-jansson.h +++ b/shared/nm-glib-aux/nm-jansson.h @@ -44,6 +44,78 @@ NM_AUTO_DEFINE_FCN0 (json_t *, _nm_auto_decref_json, json_decref) #define nm_auto_decref_json nm_auto(_nm_auto_decref_json) +/*****************************************************************************/ + +static inline int +nm_jansson_json_as_bool (const json_t *elem, + bool *out_val) +{ + if (!elem) + return 0; + + if (!json_is_boolean (elem)) + return -EINVAL; + + NM_SET_OUT (out_val, json_boolean_value (elem)); + return 1; +} + +static inline int +nm_jansson_json_as_int32 (const json_t *elem, + gint32 *out_val) +{ + json_int_t v; + + if (!elem) + return 0; + + if (!json_is_integer (elem)) + return -EINVAL; + + v = json_integer_value (elem); + if ( v < (gint64) G_MININT32 + || v > (gint64) G_MAXINT32) + return -ERANGE; + + NM_SET_OUT (out_val, v); + return 1; +} + +static inline int +nm_jansson_json_as_int (const json_t *elem, + int *out_val) +{ + json_int_t v; + + if (!elem) + return 0; + + if (!json_is_integer (elem)) + return -EINVAL; + + v = json_integer_value (elem); + if ( v < (gint64) G_MININT + || v > (gint64) G_MAXINT) + return -ERANGE; + + NM_SET_OUT (out_val, v); + return 1; +} + +static inline int +nm_jansson_json_as_string (const json_t *elem, + const char **out_val) +{ + if (!elem) + return 0; + + if (!json_is_string (elem)) + return -EINVAL; + + NM_SET_OUT (out_val, json_string_value (elem)); + return 1; +} + #endif /* WITH_JANSON */ #endif /* __NM_JANSSON_H__ */ |