Add yaz_facet_list_to_wrbuf YAZ-683
authorAdam Dickmeiss <adam@indexdata.dk>
Wed, 18 Sep 2013 12:44:52 +0000 (14:44 +0200)
committerAdam Dickmeiss <adam@indexdata.dk>
Wed, 18 Sep 2013 12:44:52 +0000 (14:44 +0200)
include/yaz/querytowrbuf.h
src/querytowrbuf.c

index f40daae..def2c59 100644 (file)
@@ -45,6 +45,9 @@ YAZ_EXPORT void yaz_rpnquery_to_wrbuf(WRBUF b, const Z_RPNQuery *rpn);
 YAZ_EXPORT void wrbuf_diags(WRBUF b, int num_diagnostics,Z_DiagRec **diags);
 
 YAZ_EXPORT void yaz_encode_pqf_term(WRBUF b, const char *term, int len);
+
+YAZ_EXPORT void yaz_facet_list_to_wrbuf(WRBUF w, const Z_FacetList *fl);
+
 YAZ_END_CDECL
 
 #endif
index f36844d..5f8db4d 100644 (file)
@@ -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:
@@ -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