First version of CCL. Qualifiers aren't handled yet.
[egate.git] / ccl / cclp.h
diff --git a/ccl/cclp.h b/ccl/cclp.h
new file mode 100644 (file)
index 0000000..d8aa138
--- /dev/null
@@ -0,0 +1,53 @@
+/* CCL - private header file
+ * Europagate, 1995
+ *
+ * $Log: cclp.h,v $
+ * Revision 1.1  1995/02/13 12:35:20  adam
+ * First version of CCL. Qualifiers aren't handled yet.
+ *
+ */
+
+#include "ccl.h"
+
+#define CCL_TOK_EOL   0
+#define CCL_TOK_TERM  1
+#define CCL_TOK_REL   2
+#define CCL_TOK_EQ    3
+#define CCL_TOK_PROX  4
+#define CCL_TOK_LP    5
+#define CCL_TOK_RP    6
+#define CCL_TOK_COMMA 7
+#define CCL_TOK_AND   8
+#define CCL_TOK_OR    7
+#define CCL_TOK_NOT   9
+#define CCL_TOK_MINUS 10
+#define CCL_TOK_SET   11
+
+struct ccl_token {
+    char kind;
+    char len;
+    const char *name;
+    struct ccl_token *next;
+    struct ccl_token *prev;
+};
+
+struct ccl_rpn_attr {
+    struct ccl_rpn_attr *next;
+    int name;
+    int value;
+};
+
+struct ccl_rpn_node {
+    enum rpn_node_kind { AND, OR, NOT, TERM, SET, PROX } kind;
+    union {
+       struct ccl_rpn_node *p[2];
+       struct {
+           char *term;
+           struct ccl_rpn_attr *attr_list;
+       } t;
+       char *setname;
+    } u;
+};
+
+struct ccl_token *ccl_tokenize (const char *command);
+void ccl_rpn_delete (struct ccl_rpn_node *rpn);