X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=zutil%2Fyaz-ccl.c;h=0aa4c5a2e13213e5d819da4634797f703e4fc82a;hb=b0555501e434d0f71f97ea17f282db2e795ff950;hp=8ed217742167a60a41f436a6101f0be84cf7bc48;hpb=1528b5eb5d95e8a0cb788b30af87178ca6534cf9;p=yaz-moved-to-github.git diff --git a/zutil/yaz-ccl.c b/zutil/yaz-ccl.c index 8ed2177..0aa4c5a 100644 --- a/zutil/yaz-ccl.c +++ b/zutil/yaz-ccl.c @@ -2,7 +2,7 @@ * Copyright (c) 1996-2003, Index Data. * See the file LICENSE for details. * - * $Id: yaz-ccl.c,v 1.21 2003-06-23 12:38:39 adam Exp $ + * $Id: yaz-ccl.c,v 1.23 2003-06-24 23:03:04 adam Exp $ */ #include @@ -44,99 +44,3 @@ Z_AttributesPlusTerm *ccl_scan_query (ODR o, struct ccl_rpn_node *p) return q; } -static void ccl_pquery_complex (WRBUF w, struct ccl_rpn_node *p) -{ - switch (p->kind) - { - case CCL_RPN_AND: - wrbuf_puts(w, "@and "); - break; - case CCL_RPN_OR: - wrbuf_puts(w, "@or "); - break; - case CCL_RPN_NOT: - wrbuf_puts(w, "@not "); - break; - case CCL_RPN_PROX: - if (p->u.p[2] && p->u.p[2]->kind == CCL_RPN_TERM) - { - const char *cp = p->u.p[2]->u.t.term; - /* exlusion distance ordered relation which-code unit-code */ - if (*cp == '!') - { - /* word order specified */ - if (isdigit(cp[1])) - wrbuf_printf(w, "@prox 0 %s 1 2 k 2 ", cp+1); - else - wrbuf_printf(w, "@prox 0 1 1 2 k 2 "); - } - else if (*cp == '%') - { - /* word order not specified */ - if (isdigit(cp[1])) - wrbuf_printf(w, "@prox 0 %s 0 2 k 2 ", cp+1); - else - wrbuf_printf(w, "@prox 0 1 0 2 k 2 "); - } - } - else - wrbuf_puts(w, "@prox 0 2 0 1 k 2 "); - break; - default: - wrbuf_puts(w, "@ bad op (unknown) "); - }; - ccl_pquery(w, p->u.p[0]); - ccl_pquery(w, p->u.p[1]); -} - -void ccl_pquery (WRBUF w, struct ccl_rpn_node *p) -{ - struct ccl_rpn_attr *att; - const char *cp; - - switch (p->kind) - { - case CCL_RPN_AND: - case CCL_RPN_OR: - case CCL_RPN_NOT: - case CCL_RPN_PROX: - ccl_pquery_complex (w, p); - break; - case CCL_RPN_SET: - wrbuf_puts (w, "@set "); - wrbuf_puts (w, p->u.setname); - wrbuf_puts (w, " "); - break; - case CCL_RPN_TERM: - for (att = p->u.t.attr_list; att; att = att->next) - { - char tmpattr[128]; - wrbuf_puts (w, "@attr "); - if (att->set) - { - wrbuf_puts (w, att->set); - wrbuf_puts (w, " "); - } - switch(att->kind) - { - case CCL_RPN_ATTR_NUMERIC: - sprintf(tmpattr, "%d=%d ", att->type, att->value.numeric); - wrbuf_puts (w, tmpattr); - break; - case CCL_RPN_ATTR_STRING: - sprintf(tmpattr, "%d=", att->type); - wrbuf_puts (w, tmpattr); - wrbuf_puts(w, att->value.str); - break; - } - } - for (cp = p->u.t.term; *cp; cp++) - { - if (*cp == ' ' || *cp == '\\') - wrbuf_putc (w, '\\'); - wrbuf_putc (w, *cp); - } - wrbuf_puts (w, " "); - break; - } -}