X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=include%2Fyaz%2Foid_db.h;h=f0b673009d5ef12fb5b220aafb594df08afb1fdd;hp=73e765ab5dbb28d2bac089fd3812c985d0dd73ad;hb=457156ca85763b2329eaf066918e2d379c61d47d;hpb=fe507b6b15788a3a8e58063d9dae52532a5229a5 diff --git a/include/yaz/oid_db.h b/include/yaz/oid_db.h index 73e765a..f0b6730 100644 --- a/include/yaz/oid_db.h +++ b/include/yaz/oid_db.h @@ -1,5 +1,5 @@ -/* - * Copyright (c) 1995-2007, Index Data +/* This file is part of the YAZ toolkit. + * Copyright (C) 1995-2013 Index Data. * All rights reserved. * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -24,7 +24,6 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* $Id: oid_db.h,v 1.6 2007-05-06 20:12:20 adam Exp $ */ /** * \file oid_db.h @@ -42,7 +41,30 @@ YAZ_BEGIN_CDECL /** \brief OID database */ typedef struct yaz_oid_db *yaz_oid_db_t; -/** \brief returns standard OID database + +typedef enum oid_class +{ + CLASS_NOP=0, + CLASS_APPCTX, + CLASS_ABSYN, + CLASS_ATTSET, + CLASS_TRANSYN, + CLASS_DIAGSET, + CLASS_RECSYN, + CLASS_RESFORM, + CLASS_ACCFORM, + CLASS_EXTSERV, + CLASS_USERINFO, + CLASS_ELEMSPEC, + CLASS_VARSET, + CLASS_SCHEMA, + CLASS_TAGSET, + CLASS_GENERAL, + CLASS_NEGOT +} oid_class; + + +/** \brief returns standard OID database \retval OID database handle */ YAZ_EXPORT @@ -50,7 +72,7 @@ yaz_oid_db_t yaz_oid_std(void); /** \brief maps named OID string to raw OID by database lookup \param oid_db OID database - \param oclass class of string (enum oid_class) + \param oclass class of string (enum oid_class) \param name OID name \returns raw OID or NULL if name is unknown (bad) @@ -59,31 +81,31 @@ yaz_oid_db_t yaz_oid_std(void); any named OID in dot-notation (1.2.8). */ YAZ_EXPORT -const int *yaz_string_to_oid(yaz_oid_db_t oid_db, - int oclass, const char *name); +const Odr_oid *yaz_string_to_oid(yaz_oid_db_t oid_db, + oid_class oclass, const char *name); /** \brief creates NMEM malloc'ed OID from string \param oid_db OID database - \param oclass class of string (enum oid_class) + \param oclass class of string (enum oid_class) \param name OID name \param nmem memory for returned OID \returns raw OID or NULL if name is unknown (bad) */ YAZ_EXPORT -int *yaz_string_to_oid_nmem(yaz_oid_db_t oid_db, - int oclass, const char *name, NMEM nmem); +Odr_oid *yaz_string_to_oid_nmem(yaz_oid_db_t oid_db, + oid_class oclass, const char *name, NMEM nmem); /** \brief creates ODR malloc'ed OID from string \param oid_db OID database - \param oclass class of string (enum oid_class) + \param oclass class of string (enum oid_class) \param name OID name \param odr memory for returned OID \returns raw OID or NULL if name is unknown (bad) */ YAZ_EXPORT -int *yaz_string_to_oid_odr(yaz_oid_db_t oid_db, - int oclass, const char *name, ODR odr); +Odr_oid *yaz_string_to_oid_odr(yaz_oid_db_t oid_db, + oid_class oclass, const char *name, ODR odr); /** \brief maps raw OID to string \param oid_db OID database @@ -93,17 +115,29 @@ int *yaz_string_to_oid_odr(yaz_oid_db_t oid_db, */ YAZ_EXPORT const char *yaz_oid_to_string(yaz_oid_db_t oid_db, - const int *oid, int *oclass); + const Odr_oid *oid, oid_class *oclass); /** \brief maps any OID to string (named or dot-notation) \param oid raw OID \param oclass holds OID class if found (output parameter) \param buf string buffer for result (must be of size OID_STR_MAX) - \returns OID string (named or dot notatition) + \returns OID string (named or dot notatition) +*/ +YAZ_EXPORT +const char *yaz_oid_to_string_buf(const Odr_oid *oid, + oid_class *oclass, char *buf); + + +/** \brief maps named from standard database to dot notation + \param oclass class of string (enum oid_class) + \param name named OID + \param oid_buf buffer for result (must be of size OID_STR_MAX) + \returns OID string or NULL if name is not registered in database */ YAZ_EXPORT -const char *yaz_oid_to_string_buf(const int *oid, int *oclass, char *buf); +char *oid_name_to_dotstring(oid_class oclass, const char *name, char *oid_buf); + /** \brief traverses OIDs in a database \param oid_db OID database @@ -111,8 +145,8 @@ const char *yaz_oid_to_string_buf(const int *oid, int *oclass, char *buf); \param client_data data to be passed to func (custom defined) */ YAZ_EXPORT void yaz_oid_trav(yaz_oid_db_t oid_db, - void (*func)(const int *oid, - int oclass, const char *name, + void (*func)(const Odr_oid *oid, + oid_class oclass, const char *name, void *client_data), void *client_data); @@ -122,7 +156,7 @@ YAZ_EXPORT void yaz_oid_trav(yaz_oid_db_t oid_db, \retval 0 OID is not a MARC type */ YAZ_EXPORT -int yaz_oid_is_iso2709(const int *oid); +int yaz_oid_is_iso2709(const Odr_oid *oid); /** \brief adds new OID entry to database \param oid_db database @@ -133,12 +167,25 @@ int yaz_oid_is_iso2709(const int *oid); \retval -1 OID name+oclass already exists */ YAZ_EXPORT -int yaz_oid_add(yaz_oid_db_t oid_db, int oclass, const char *name, - const int *new_oid); +int yaz_oid_add(yaz_oid_db_t oid_db, oid_class oclass, const char *name, + const Odr_oid *new_oid); + + +/** \brief creates empty OID database + \returns database +*/ +YAZ_EXPORT +yaz_oid_db_t yaz_oid_db_new(void); + +/** \brief destroys OID database + \param oid_db database +*/ +YAZ_EXPORT +void yaz_oid_db_destroy(yaz_oid_db_t oid_db); struct yaz_oid_entry { - int oclass; - const int *oid; + enum oid_class oclass; + const Odr_oid *oid; char *name; }; @@ -152,6 +199,7 @@ YAZ_END_CDECL /* * Local variables: * c-basic-offset: 4 + * c-file-style: "Stroustrup" * indent-tabs-mode: nil * End: * vim: shiftwidth=4 tabstop=8 expandtab