Update CQL parser to use CQL 1.1 modifiers for booleans and
[yaz-moved-to-github.git] / src / cqlutil.c
index baa54ad..1b842b1 100644 (file)
@@ -1,5 +1,5 @@
-/* $Id: cqlutil.c,v 1.1 2003-10-27 12:21:30 adam Exp $
-   Copyright (C) 2002-2003
+/* $Id: cqlutil.c,v 1.2 2004-03-10 16:34:29 adam Exp $
+   Copyright (C) 2002-2004
    Index Data Aps
 
 This file is part of the YAZ toolkit.
@@ -33,11 +33,6 @@ struct cql_node *cql_node_dup (struct cql_node *cp)
         cn->u.st.modifiers = cql_node_dup(cp->u.st.modifiers);
         cn->u.st.prefixes = cql_node_dup(cp->u.st.prefixes);
         break;
-    case CQL_NODE_MOD:
-        cn = cql_node_mk_mod(cp->u.mod.name,
-                             cp->u.mod.value);
-        cn->u.mod.next = cql_node_dup(cp->u.mod.next);
-        break;
     case CQL_NODE_BOOL:
         cn = cql_node_mk_boolean(cp->u.boolean.value);
         cn->u.boolean.left = cql_node_dup(cp->u.boolean.left);
@@ -67,22 +62,6 @@ struct cql_node *cql_node_mk_sc(const char *index,
     return p;
 }
 
-struct cql_node *cql_node_mk_mod(const char *name,
-                                 const char *value)
-{
-    struct cql_node *p = (struct cql_node *) malloc(sizeof(*p));
-    p->which = CQL_NODE_MOD;
-
-    p->u.mod.name = 0;
-    if (name)
-        p->u.mod.name = strdup(name);
-    p->u.mod.value = 0;
-    if (value)
-        p->u.mod.value = strdup(value);
-    p->u.mod.next = 0;
-    return p;
-}
-
 struct cql_node *cql_node_mk_boolean(const char *op)
 {
     struct cql_node *p = (struct cql_node *) malloc(sizeof(*p));
@@ -111,43 +90,13 @@ struct cql_node *cql_node_prefix(struct cql_node *n, const char *prefix,
     }
     if (cpp)
     {
-        struct cql_node *cp = cql_node_mk_mod(prefix, uri);
-        cp->u.mod.next = *cpp;
+        struct cql_node *cp = cql_node_mk_sc(prefix, "=", uri);
+        cp->u.st.modifiers = *cpp;
         *cpp = cp;
     }
     return n;
 }
 
-struct cql_node *cql_node_mk_proxargs(const char *relation,
-                                      const char *distance,
-                                      const char *unit,
-                                      const char *ordering)
-{
-    struct cql_node *m = 0, *m1;
-
-    if (ordering && *ordering)
-        m = cql_node_mk_mod("ordering", ordering);
-    if (unit && *unit)
-    {
-        m1 = cql_node_mk_mod("unit", unit);
-        m1->u.mod.next = m;
-        m = m1;
-    }
-    if (distance && *distance)
-    {
-        m1 = cql_node_mk_mod("distance", distance);
-        m1->u.mod.next = m;
-        m = m1;
-    }
-    if (relation && *relation)
-    {
-        m1 = cql_node_mk_mod("relation", relation);
-        m1->u.mod.next = m;
-        m = m1;
-    }
-    return m;
-}
-
 void cql_node_destroy(struct cql_node *cn)
 {
     if (!cn)
@@ -161,16 +110,12 @@ void cql_node_destroy(struct cql_node *cn)
         cql_node_destroy(cn->u.st.modifiers);
         cql_node_destroy(cn->u.st.prefixes);
         break;
-    case CQL_NODE_MOD:
-        free (cn->u.mod.name);
-        free (cn->u.mod.value);
-        cql_node_destroy(cn->u.mod.next);
-        break;
     case CQL_NODE_BOOL:
         free (cn->u.boolean.value);
         cql_node_destroy(cn->u.boolean.left);
         cql_node_destroy(cn->u.boolean.right);
         cql_node_destroy(cn->u.boolean.prefixes);
+        cql_node_destroy(cn->u.boolean.modifiers);
     }
     free (cn);
 }