-/* $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.
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);
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));
}
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)
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);
}