X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Ffacet.c;h=40b5e1c29dd4fe5a14f5fe789f3eda406bfdeba9;hb=f720562471a064dba92a465d999aa833e59d69b1;hp=588e802b495f2fffa7d09834746454b316f7eccc;hpb=1597ca1e5e29c86afb20eee69de3db40f4c23ed8;p=yaz-moved-to-github.git diff --git a/src/facet.c b/src/facet.c index 588e802..40b5e1c 100644 --- a/src/facet.c +++ b/src/facet.c @@ -1,9 +1,9 @@ /* This file is part of the YAZ toolkit. - * Copyright (C) 1995-2011 Index Data + * Copyright (C) 1995-2013 Index Data * See the file LICENSE for details. */ -/** +/** * \file facet.c * \brief Facet utilities */ @@ -17,6 +17,7 @@ #include #include #include +#include #include void yaz_oi_set_facetlist( @@ -42,17 +43,21 @@ void yaz_oi_set_facetlist( Z_FacetList *yaz_oi_get_facetlist(Z_OtherInformation **otherInformation) { - int categoryValue = 1; - Z_External *z_external = 0; - Z_OtherInformationUnit *oi = - yaz_oi_update(otherInformation, 0, yaz_oid_userinfo_facet_1, - categoryValue, 0); - if (!oi) - return 0; - z_external = oi->information.externallyDefinedInfo; - - if (z_external && z_external->which == Z_External_userFacets) - return z_external->u.facetList; + Z_OtherInformation *oi = *otherInformation; + if (oi) + { + int i; + for (i = 0; i < oi->num_elements; i++) + { + Z_OtherInformationUnit *oiu = oi->list[i]; + if (oiu->which == Z_OtherInfo_externallyDefinedInfo + && oiu->information.externallyDefinedInfo->which == + Z_External_userFacets) + { + return oiu->information.externallyDefinedInfo->u.facetList; + } + } + } return 0; } @@ -199,6 +204,7 @@ void yaz_facet_attr_get_z_attributes(const Z_AttributeList *attributes, return; } /* facetattrs */ +#if 0 Z_Term *term_create(ODR odr, const char *cstr) { Z_Term *term = odr_malloc(odr, sizeof(*term)); @@ -215,6 +221,16 @@ Z_FacetTerm* facet_term_create(ODR odr, Z_Term *term, int freq) *facet_term->count = freq; return facet_term; } +#endif + +Z_FacetTerm *facet_term_create_cstr(ODR odr, const char *cstr, Odr_int freq) +{ + Z_FacetTerm *facet_term = odr_malloc(odr, sizeof(*facet_term)); + Z_Term *term = z_Term_create(odr, Z_Term_general, cstr, strlen(cstr)); + facet_term->term = term; + facet_term->count = odr_intdup(odr, freq); + return facet_term; +} Z_FacetField* facet_field_create(ODR odr, Z_AttributeList *attributes, int num_terms)