Code

store: Added support for ALL matchers.
[sysdb.git] / src / core / store-private.h
index c6350b3530c4a2518ce0a515da601c1256768700..a0f4ec61db0ece7ebafaf1ed52a96f83db40290e 100644 (file)
@@ -117,6 +117,7 @@ struct sdb_store_expr {
        sdb_object_t super;
 
        int type; /* see above */
+       int data_type;
 
        sdb_store_expr_t *left;
        sdb_store_expr_t *right;
@@ -124,34 +125,6 @@ struct sdb_store_expr {
        sdb_data_t data;
 };
 
-/*
- * conditionals
- */
-
-/* compares an object using the specified conditional and taking the specified
- * filter into account */
-typedef int (*cmp_cb)(sdb_store_obj_t *, sdb_store_cond_t *,
-               sdb_store_matcher_t *);
-
-struct sdb_store_cond {
-       sdb_object_t super;
-       cmp_cb cmp;
-};
-
-typedef struct {
-       sdb_store_cond_t super;
-       char *name;
-       sdb_store_expr_t *expr;
-} attr_cond_t;
-#define ATTR_C(obj) ((attr_cond_t *)(obj))
-
-typedef struct {
-       sdb_store_cond_t super;
-       int field;
-       sdb_store_expr_t *expr;
-} obj_cond_t;
-#define OBJ_C(obj) ((obj_cond_t *)(obj))
-
 /*
  * matchers
  */
@@ -162,22 +135,14 @@ enum {
        MATCHER_OR,
        MATCHER_AND,
        MATCHER_NOT,
-       MATCHER_NAME,
-       MATCHER_ATTR,
-       MATCHER_SERVICE,
-       MATCHER_METRIC,
-       MATCHER_ATTRIBUTE,
+       MATCHER_ANY,
+       MATCHER_ALL,
        MATCHER_LT,
        MATCHER_LE,
        MATCHER_EQ,
+       MATCHER_NE,
        MATCHER_GE,
        MATCHER_GT,
-       MATCHER_CMP_LT,
-       MATCHER_CMP_LE,
-       MATCHER_CMP_EQ,
-       MATCHER_CMP_NE,
-       MATCHER_CMP_GE,
-       MATCHER_CMP_GT,
        MATCHER_IN,
        MATCHER_REGEX,
        MATCHER_NREGEX,
@@ -190,14 +155,12 @@ enum {
                : ((t) == MATCHER_AND) ? "AND" \
                : ((t) == MATCHER_NOT) ? "NOT" \
                : ((t) == MATCHER_NAME) ? "NAME" \
-               : ((t) == MATCHER_ATTR) ? "ATTR" \
-               : ((t) == MATCHER_SERVICE) ? "SERVICE" \
-               : ((t) == MATCHER_METRIC) ? "METRIC" \
-               : ((t) == MATCHER_ATTRIBUTE) ? "ATTRIBUTE" \
+               : ((t) == MATCHER_ANY) ? "ANY" \
+               : ((t) == MATCHER_ALL) ? "ALL" \
                : ((t) == MATCHER_LT) ? "<" \
                : ((t) == MATCHER_LE) ? "<=" \
                : ((t) == MATCHER_EQ) ? "=" \
-               : ((t) == MATCHER_CMP_NE) ? "!=" \
+               : ((t) == MATCHER_NE) ? "!=" \
                : ((t) == MATCHER_GE) ? ">=" \
                : ((t) == MATCHER_GT) ? ">" \
                : ((t) == MATCHER_IN) ? "IN" \
@@ -240,12 +203,13 @@ typedef struct {
 } uop_matcher_t;
 #define UOP_M(m) ((uop_matcher_t *)(m))
 
-/* child matcher */
+/* iter matcher */
 typedef struct {
        sdb_store_matcher_t super;
+       int type;
        sdb_store_matcher_t *m;
-} child_matcher_t;
-#define CHILD_M(m) ((child_matcher_t *)(m))
+} iter_matcher_t;
+#define ITER_M(m) ((iter_matcher_t *)(m))
 
 /* compare operator matcher */
 typedef struct {
@@ -266,27 +230,12 @@ typedef struct {
 } name_matcher_t;
 #define NAME_M(m) ((name_matcher_t *)(m))
 
-/* match attributes */
-typedef struct {
-       sdb_store_matcher_t super;
-       char *name;
-       string_matcher_t value;
-} attr_matcher_t;
-#define ATTR_M(m) ((attr_matcher_t *)(m))
-
 typedef struct {
        sdb_store_matcher_t super;
        sdb_store_expr_t *expr;
 } isnull_matcher_t;
 #define ISNULL_M(m) ((isnull_matcher_t *)(m))
 
-/* match using conditionals */
-typedef struct {
-       sdb_store_matcher_t super;
-       sdb_store_cond_t *cond;
-} cond_matcher_t;
-#define COND_M(m) ((cond_matcher_t *)(m))
-
 #ifdef __cplusplus
 } /* extern "C" */
 #endif