Code

Let iterator operators fill in the left operand of child operators.
[sysdb.git] / src / core / store-private.h
index 97e8a6c2fcce7fff076b2f0275ead0a2ae42306a..2b6b09662f36a91bad7821ed8baacd152ac7e98c 100644 (file)
@@ -126,6 +126,7 @@ struct sdb_store_expr {
 
        sdb_data_t data;
 };
+#define EXPR_INIT { SDB_OBJECT_INIT, 0, -1, NULL, NULL, SDB_DATA_INIT }
 #define EXPR_TO_STRING(e) \
        (((e)->type == TYPED_EXPR) ? "<typed>" \
                : ((e)->type == ATTR_VALUE) ? "attribute" \
@@ -147,6 +148,7 @@ enum {
        MATCHER_ANY,
        MATCHER_ALL,
        MATCHER_IN,
+       MATCHER_NIN,
 
        /* unary operators */
        MATCHER_ISNULL,
@@ -170,6 +172,7 @@ enum {
                : ((t) == MATCHER_ANY) ? "ANY" \
                : ((t) == MATCHER_ALL) ? "ALL" \
                : ((t) == MATCHER_IN) ? "IN" \
+               : ((t) == MATCHER_NIN) ? "NOT IN" \
                : ((t) == MATCHER_ISNULL) ? "IS NULL" \
                : ((t) == MATCHER_ISNNULL) ? "IS NOT NULL" \
                : ((t) == MATCHER_LT) ? "<" \
@@ -212,7 +215,7 @@ typedef struct {
 /* iter matcher */
 typedef struct {
        sdb_store_matcher_t super;
-       int type;
+       sdb_store_expr_t *iter;
        sdb_store_matcher_t *m;
 } iter_matcher_t;
 #define ITER_M(m) ((iter_matcher_t *)(m))