X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fquerytowrbuf.c;h=79a9b6ed62ad8dbc03a12e9de87dec35d701a48c;hp=0716b6fd27bd2a7da0e63f2cf85c78c83cb03cc1;hb=8cb8947e3a7bff4dbf8f124871cb4905df1adce7;hpb=f77061f0ad18ff3a037a10ca4fcb0954e0848fa3 diff --git a/src/querytowrbuf.c b/src/querytowrbuf.c index 0716b6f..79a9b6e 100644 --- a/src/querytowrbuf.c +++ b/src/querytowrbuf.c @@ -1,5 +1,5 @@ /* This file is part of the YAZ toolkit. - * Copyright (C) 1995-2011 Index Data + * Copyright (C) Index Data * See the file LICENSE for details. */ /** \file querytowrbuf.c @@ -56,7 +56,7 @@ static void yaz_attribute_element_to_wrbuf(WRBUF b, if (element->attributeSet) { char oid_name_str[OID_STR_MAX]; - const char *setname = yaz_oid_to_string_buf(element->attributeSet, + const char *setname = yaz_oid_to_string_buf(element->attributeSet, 0, oid_name_str); if (setname) { @@ -65,7 +65,7 @@ static void yaz_attribute_element_to_wrbuf(WRBUF b, } } wrbuf_printf(b, ODR_INT_PRINTF "=", *element->attributeType); - switch (element->which) + switch (element->which) { case Z_AttributeValue_numeric: wrbuf_printf(b, ODR_INT_PRINTF, *element->value.numeric); @@ -80,7 +80,7 @@ static void yaz_attribute_element_to_wrbuf(WRBUF b, wrbuf_puts(b, element->value.complex->list[i]->u.string); else if (element->value.complex->list[i]->which == Z_StringOrNumeric_numeric) - wrbuf_printf(b, ODR_INT_PRINTF, + wrbuf_printf(b, ODR_INT_PRINTF, *element->value.complex->list[i]->u.numeric); } break; @@ -107,13 +107,16 @@ static const char *complex_op_name(const Z_Operator *op) } } -static void yaz_apt_to_wrbuf(WRBUF b, const Z_AttributesPlusTerm *zapt) +static void yaz_attributes_to_wrbuf(WRBUF w, const Z_AttributeList *al) { - int num_attributes = zapt->attributes->num_attributes; int i; - for (i = 0; i < num_attributes; i++) - yaz_attribute_element_to_wrbuf(b,zapt->attributes->attributes[i]); - + for (i = 0; i < al->num_attributes; i++) + yaz_attribute_element_to_wrbuf(w, al->attributes[i]); +} + +static void yaz_apt_to_wrbuf(WRBUF b, const Z_AttributesPlusTerm *zapt) +{ + yaz_attributes_to_wrbuf(b, zapt->attributes); switch (zapt->term->which) { case Z_Term_general: @@ -152,7 +155,7 @@ static void yaz_rpnstructure_to_wrbuf(WRBUF b, const Z_RPNStructure *zs) else wrbuf_putc(b, '0'); - wrbuf_printf(b, " " ODR_INT_PRINTF " %d " + wrbuf_printf(b, " " ODR_INT_PRINTF " %d " ODR_INT_PRINTF " ", *op->u.prox->distance, *op->u.prox->ordered, *op->u.prox->relationType); @@ -202,7 +205,7 @@ void yaz_rpnquery_to_wrbuf(WRBUF b, const Z_RPNQuery *rpn) 0, oid_name_str); if (oid_name) wrbuf_printf(b, "@attrset %s ", oid_name); - } + } yaz_rpnstructure_to_wrbuf(b, rpn->RPNStructure); wrbuf_chop_right(b); } @@ -213,7 +216,7 @@ void yaz_query_to_wrbuf(WRBUF b, const Z_Query *q) assert(b); switch (q->which) { - case Z_Query_type_1: + case Z_Query_type_1: case Z_Query_type_101: wrbuf_puts(b,"RPN "); yaz_rpnquery_to_wrbuf(b, q->u.type_1); @@ -266,6 +269,19 @@ void wrbuf_diags(WRBUF b, int num_diagnostics, Z_DiagRec **diags) } } +void yaz_facet_list_to_wrbuf(WRBUF w, const Z_FacetList *fl) +{ + int i; + for (i = 0; i < fl->num; i++) + { + Z_FacetField *ff = fl->elements[i]; + + if (i) + wrbuf_puts(w, ", "); + yaz_attributes_to_wrbuf(w, ff->attributes); + } +} + /* * Local variables: * c-basic-offset: 4