case json_type_null:
return TYPE_UNKNOWN;
}
+ return TYPE_UNKNOWN;
}
bool epc_object_match_pattern(struct epc_object *obj, struct json_object *root)
int ret;
json_object_object_foreach(root, key, value) {
- epc_object_get_object(obj, key, &node);
- if (node->type != epc_type_from_json(json_object_get_type(value)))
+ node = find_child(obj, key);
+
+ if (!node)
+ return 0;
+
+ if (node->type != (int)epc_type_from_json(json_object_get_type(value)))
return 0;
- if (node->type == TYPE_OBJECT) {
+ switch (node->type) {
+ case TYPE_STRING:
+ if (strcmp(node->val.s, json_object_get_string(value)))
+ return 0;
+ break;
+ case TYPE_DOUBLE:
+ if (node->val.d != json_object_get_double(value))
+ return 0;
+ break;
+ case TYPE_INT:
+ if (node->val.i != json_object_get_int(value))
+ return 0;
+ break;
+ case TYPE_BOOL:
+ if (node->val.b != json_object_get_boolean(value))
+ return 0;
+ break;
+ case TYPE_OBJECT:
ret = epc_object_match_pattern(node, value);
if (!ret)
return 0;
+ break;
+ default:
+ return 0;
}
}