X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fotherinfo.c;h=52f6c9a35ab8d42516a4826c7880126f214d29ea;hb=b56b6242e4e9c0011b9a2dae6d67c3ef0789251f;hp=7aac192497f847849a3a7fdbb7c2f13074315c20;hpb=7a4064cd15f6c6b34c1180e1bc51f0d0e90da320;p=yaz-moved-to-github.git diff --git a/src/otherinfo.c b/src/otherinfo.c index 7aac192..52f6c9a 100644 --- a/src/otherinfo.c +++ b/src/otherinfo.c @@ -1,8 +1,6 @@ -/* - * Copyright (C) 1995-2007, Index Data ApS +/* This file is part of the YAZ toolkit. + * Copyright (C) 1995-2010 Index Data * See the file LICENSE for details. - * - * $Id: otherinfo.c,v 1.7 2007-04-12 13:52:57 adam Exp $ */ /** * \file otherinfo.c @@ -73,7 +71,7 @@ void yaz_oi_APDU(Z_APDU *apdu, Z_OtherInformation ***oip) Z_OtherInformationUnit *yaz_oi_update ( Z_OtherInformation **otherInformationP, ODR odr, - const int *oid, int categoryValue, int delete_flag) + const Odr_oid *oid, int categoryValue, int delete_flag) { int i; Z_OtherInformation *otherInformation; @@ -94,6 +92,7 @@ Z_OtherInformationUnit *yaz_oi_update ( { if (!oid) { + /* DS: Want does this do? Returns the first element without a category */ if (!otherInformation->list[i]->category) return otherInformation->list[i]; } @@ -138,12 +137,10 @@ Z_OtherInformationUnit *yaz_oi_update ( { otherInformation->list[i]->category = (Z_InfoCategory*) odr_malloc (odr, sizeof(Z_InfoCategory)); - otherInformation->list[i]->category->categoryTypeId = (int*) + otherInformation->list[i]->category->categoryTypeId = (Odr_oid*) odr_oiddup (odr, oid); - otherInformation->list[i]->category->categoryValue = (int*) - odr_malloc (odr, sizeof(int)); - *otherInformation->list[i]->category->categoryValue = - categoryValue; + otherInformation->list[i]->category->categoryValue = + odr_intdup(odr, categoryValue); } else otherInformation->list[i]->category = 0; @@ -157,7 +154,7 @@ Z_OtherInformationUnit *yaz_oi_update ( void yaz_oi_set_string_oid ( Z_OtherInformation **otherInformation, ODR odr, - const int *oid, int categoryValue, + const Odr_oid *oid, int categoryValue, const char *str) { Z_OtherInformationUnit *oi = @@ -170,7 +167,7 @@ void yaz_oi_set_string_oid ( char *yaz_oi_get_string_oid ( Z_OtherInformation **otherInformation, - const int *oid, int categoryValue, int delete_flag) + const Odr_oid *oid, int categoryValue, int delete_flag) { Z_OtherInformationUnit *oi; @@ -181,9 +178,48 @@ char *yaz_oi_get_string_oid ( 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, odr, 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: * c-basic-offset: 4 + * c-file-style: "Stroustrup" * indent-tabs-mode: nil * End: * vim: shiftwidth=4 tabstop=8 expandtab