+++ /dev/null
-/* $Id: srw-xcql.c,v 1.1 2003-01-06 08:20:28 adam Exp $
- Copyright (C) 2002-2003
- Index Data Aps
-
-This file is part of the YAZ toolkit.
-
-See the file LICENSE.
-*/
-
-#include <yaz/srw-util.h>
-
-struct cql_node *xcql_to_cqlnode(struct xcql__operandType *p)
-{
- struct cql_node *cn = 0;
- if (p && p->searchClause)
- {
- cn = cql_node_mk_sc(p->searchClause->index,
- p->searchClause->relation->value,
- p->searchClause->term);
- if (p->searchClause->relation->modifiers)
- {
- struct xcql__modifiersType *mods =
- p->searchClause->relation->modifiers;
- struct cql_node **cnp = &cn->u.st.modifiers;
-
- int i;
- for (i = 0; i < mods->__sizeModifier; i++)
- {
- *cnp = cql_node_mk_mod(mods->modifier[i]->type,
- mods->modifier[i]->value);
- cnp = &(*cnp)->u.mod.next;
- }
- }
- if (p->searchClause->prefixes)
- {
- struct xcql__prefixesType *prefixes = p->searchClause->prefixes;
- struct cql_node **cnp = &cn->u.st.prefixes;
-
- int i;
- for (i = 0; i < prefixes->__sizePrefix; i++)
- {
- *cnp = cql_node_mk_mod(prefixes->prefix[i]->name,
- prefixes->prefix[i]->identifier);
- cnp = &(*cnp)->u.mod.next;
- }
- }
- }
- else if (p && p->triple)
- {
- cn = cql_node_mk_boolean(p->triple->boolean->value);
-
- if (p->triple->boolean->modifiers)
- {
- struct xcql__modifiersType *mods =
- p->triple->boolean->modifiers;
- struct cql_node **cnp = &cn->u.bool.modifiers;
-
- int i;
- for (i = 0; i < mods->__sizeModifier; i++)
- {
- *cnp = cql_node_mk_mod(mods->modifier[i]->type,
- mods->modifier[i]->value);
- cnp = &(*cnp)->u.mod.next;
- }
- }
- if (p->triple->prefixes)
- {
- struct xcql__prefixesType *prefixes = p->triple->prefixes;
- struct cql_node **cnp = &cn->u.bool.prefixes;
-
- int i;
- for (i = 0; i < prefixes->__sizePrefix; i++)
- {
- *cnp = cql_node_mk_mod(prefixes->prefix[i]->name,
- prefixes->prefix[i]->identifier);
- cnp = &(*cnp)->u.mod.next;
- }
- }
- cn->u.bool.left = xcql_to_cqlnode(p->triple->leftOperand);
- cn->u.bool.right = xcql_to_cqlnode(p->triple->rightOperand);
- }
- return cn;
-}
-