int i;
yaz_oi_APDU(a, &oi);
- if (facet_list) {
- yaz_oi_set_facetlist_oid(oi, out, yaz_oid_userinfo_facet_1, 1, facet_list);
- }
+ if (facet_list)
+ yaz_oi_set_facetlist(oi, out, facet_list);
for (i = 0; i < maxOtherInfosSupported; ++i)
{
if (oid_oidlen(extraOtherInfos[i].oid) > 0)
struct yaz_facet_attr *av);
YAZ_EXPORT
-Z_FacetList *extract_facet_request(ODR odr, Z_OtherInformation *search_input);
-
-YAZ_EXPORT
Z_Term *term_create(ODR odr, const char *cstr);
YAZ_EXPORT
YAZ_EXPORT
void facet_list_field_set(ODR odr, Z_FacetList *list, Z_FacetField *field,
int index);
+YAZ_EXPORT
+void yaz_oi_set_facetlist(
+ Z_OtherInformation **otherInformation, ODR odr, Z_FacetList *facet_list);
+
+YAZ_EXPORT
+Z_FacetList *yaz_oi_get_facetlist(Z_OtherInformation **otherInformation);
YAZ_END_CDECL
const Odr_oid *oid, int categoryValue, int delete_flag);
YAZ_EXPORT
-void yaz_oi_set_facetlist_oid (
- Z_OtherInformation **otherInformation, ODR odr,
- const Odr_oid *oid, int categoryValue,
- Z_FacetList *facet_list);
-
-YAZ_EXPORT
-Z_FacetList *yaz_oi_get_facetlist_oid (
- Z_OtherInformation **otherInformation, ODR odr,
- const Odr_oid *oid, int categoryValue, int delete_flag);
-
-YAZ_EXPORT
void yaz_oi_set_string_oid (
Z_OtherInformation **otherInformation, ODR odr,
const Odr_oid *oid, int categoryValue,
#include <yaz/otherinfo.h>
#include <assert.h>
+void yaz_oi_set_facetlist(
+ Z_OtherInformation **otherInformation, ODR odr,
+ Z_FacetList *facet_list)
+{
+ int categoryValue = 1;
+ Z_External *z_external = 0;
+ Z_OtherInformationUnit *oi =
+ yaz_oi_update(otherInformation, odr, yaz_oid_userinfo_facet_1,
+ categoryValue, 0);
+ if (!oi)
+ return;
+ oi->which = Z_OtherInfo_externallyDefinedInfo;
+ z_external = odr_malloc(odr, sizeof(*z_external));
+ z_external->which = Z_External_userFacets;
+ z_external->direct_reference = odr_oiddup(odr, yaz_oid_userinfo_facet_1);
+ z_external->indirect_reference = 0;
+ z_external->descriptor = 0;
+ z_external->u.facetList = facet_list;
+ oi->information.externallyDefinedInfo = z_external;
+}
+
+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;
+ }
+ return 0;
+}
+
/* Little helper to extract a string attribute */
/* Gets the first string, there is usually only one */
/* in case of errors, returns null */
return;
} /* facetattrs */
-
-Z_FacetList *extract_facet_request(ODR odr, Z_OtherInformation *search_input)
-{
- Z_FacetList *facet_list =
- yaz_oi_get_facetlist_oid(&search_input, odr,
- yaz_oid_userinfo_facet_1, 1, 0);
- return facet_list;
-}
-
Z_Term *term_create(ODR odr, const char *cstr)
{
Z_Term *term = odr_malloc(odr, sizeof(*term));
}
}
-Z_OtherInformationUnit *yaz_oi_update (
+Z_OtherInformationUnit *yaz_oi_update(
Z_OtherInformation **otherInformationP, ODR odr,
const Odr_oid *oid, int categoryValue, int delete_flag)
{
return 0;
}
-void yaz_oi_set_facetlist_oid (
- Z_OtherInformation **otherInformation, ODR odr,
- const Odr_oid *oid, int categoryValue,
- Z_FacetList *facet_list)
-{
- Z_External *z_external = 0;
- Z_OtherInformationUnit *oi =
- yaz_oi_update(otherInformation, odr, oid, categoryValue, 0);
- if (!oi)
- return;
- oi->which = Z_OtherInfo_externallyDefinedInfo;
- z_external = odr_malloc(odr, sizeof(*z_external));
- z_external->which = Z_External_userFacets;
- z_external->direct_reference = odr_oiddup(odr, oid);
- z_external->indirect_reference = 0;
- z_external->descriptor = 0;
- z_external->u.facetList = facet_list;
- oi->information.externallyDefinedInfo = z_external;
-}
-
-Z_FacetList *yaz_oi_get_facetlist_oid (
- Z_OtherInformation **otherInformation, ODR odr,
- const Odr_oid *oid, int categoryValue, int delete_flag)
-{
- Z_External *z_external = 0;
- Z_OtherInformationUnit *oi =
- yaz_oi_update(otherInformation, 0, oid, categoryValue, delete_flag);
- if (!oi)
- return 0;
- z_external = oi->information.externallyDefinedInfo;
-
- if (z_external && z_external->which == Z_External_userFacets) {
- return z_external->u.facetList;
- }
- return 0;
-}
-
/*
* Local variables:
Z_OtherInformation **oi;
yaz_oi_APDU(apdu, &oi);
if (facet_list) {
- yaz_oi_set_facetlist_oid(oi, c->odr_out, yaz_oid_userinfo_facet_1, 1, facet_list);
+ yaz_oi_set_facetlist(oi, c->odr_out, facet_list);
}
}
}
if (1)
{
- /* TODO Not general. Only handles one (Facet) OtherInformation. Overwrite */
- Z_FacetList *facet_list = extract_facet_request(rr->stream, rr->search_input);
-
+ Z_FacetList *facet_list = yaz_oi_get_facetlist(&rr->search_input);
if (facet_list) {
yaz_log(YLOG_LOG, "%d Facets in search request.", facet_list->num);
rr->search_info = build_facet_response(rr->stream, facet_list);