]> granicus.if.org Git - jq/commitdiff
Add jv_object_has()
authorNicolas Williams <nico@cryptonector.com>
Mon, 20 Feb 2017 00:05:38 +0000 (18:05 -0600)
committerNicolas Williams <nico@cryptonector.com>
Sun, 26 Feb 2017 01:13:28 +0000 (19:13 -0600)
src/jv.c
src/jv.h

index e064baf572c6b7eba95357cdeece85c72ec24562..5e54d2f3d2a4f739f5333cfb347edfe50a8a7282 100644 (file)
--- a/src/jv.c
+++ b/src/jv.c
@@ -1106,6 +1106,16 @@ jv jv_object_get(jv object, jv key) {
   return val;
 }
 
+int jv_object_has(jv object, jv key) {
+  assert(jv_get_kind(object) == JV_KIND_OBJECT);
+  assert(jv_get_kind(key) == JV_KIND_STRING);
+  jv* slot = jvp_object_read(object, key);
+  int res = slot ? 1 : 0;
+  jv_free(object);
+  jv_free(key);
+  return res;
+}
+
 jv jv_object_set(jv object, jv key, jv value) {
   assert(jv_get_kind(object) == JV_KIND_OBJECT);
   assert(jv_get_kind(key) == JV_KIND_STRING);
index 9e74c9d8aeb1c0379b9ba45555dfb86b123a6576..b47badad9960c91c2fb3fde17d36ab8dc2351249 100644 (file)
--- a/src/jv.h
+++ b/src/jv.h
@@ -123,6 +123,7 @@ jv jv_string_implode(jv j);
 
 jv jv_object(void);
 jv jv_object_get(jv object, jv key);
+int jv_object_has(jv object, jv key);
 jv jv_object_set(jv object, jv key, jv value);
 jv jv_object_delete(jv object, jv key);
 int jv_object_length(jv object);