]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
json: minor optimization
authorLennart Poettering <lennart@poettering.net>
Fri, 12 Oct 2018 14:21:21 +0000 (16:21 +0200)
committerLennart Poettering <lennart@poettering.net>
Thu, 18 Oct 2018 14:44:51 +0000 (16:44 +0200)
instead of comparing the magic JsonVariants one by one, let's simply
compare that they lie within a specific range.

src/basic/json-internal.h
src/basic/json.c

index 6d195eb672f68a4356e1b6389b03c871318afe1e..98e53ede10cea0db60417161ffad98117605422f 100644 (file)
@@ -35,6 +35,7 @@ assert_cc(sizeof(JsonValue) == 16U);
 #define JSON_VARIANT_MAGIC_EMPTY_STRING ((JsonVariant*) 7)
 #define JSON_VARIANT_MAGIC_EMPTY_ARRAY ((JsonVariant*) 8)
 #define JSON_VARIANT_MAGIC_EMPTY_OBJECT ((JsonVariant*) 9)
+#define _JSON_VARIANT_MAGIC_MAX ((JsonVariant*) 10)
 
 enum { /* JSON tokens */
         JSON_TOKEN_END,
index 72e8e115baf4d7b1a7be099ee0e8a980fec6875d..f3db01eb993e736127dab60d9721f933fdf718a2 100644 (file)
@@ -140,15 +140,10 @@ static bool json_source_equal(JsonSource *a, JsonSource *b) {
 DEFINE_TRIVIAL_CLEANUP_FUNC(JsonSource*, json_source_unref);
 
 static bool json_variant_is_magic(const JsonVariant *v) {
-        return v == JSON_VARIANT_MAGIC_TRUE ||
-                v == JSON_VARIANT_MAGIC_FALSE ||
-                v == JSON_VARIANT_MAGIC_NULL ||
-                v == JSON_VARIANT_MAGIC_ZERO_INTEGER ||
-                v == JSON_VARIANT_MAGIC_ZERO_UNSIGNED ||
-                v == JSON_VARIANT_MAGIC_ZERO_REAL ||
-                v == JSON_VARIANT_MAGIC_EMPTY_STRING ||
-                v == JSON_VARIANT_MAGIC_EMPTY_ARRAY ||
-                v == JSON_VARIANT_MAGIC_EMPTY_OBJECT;
+        if (!v)
+                return false;
+
+        return v < _JSON_VARIANT_MAGIC_MAX;
 }
 
 static JsonVariant *json_variant_dereference(JsonVariant *v) {