X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=include%2Fyaz%2Foid_db.h;h=bbab0b3a8c1bd54699080d185308f8f0493321db;hp=ca75db74d09bd506997bb5f149c8e38f13a345dd;hb=544bbfdbc1da539b17542d740d25b154ebb4c182;hpb=3cdfbd27dfc8dd15619f127ae78bf0f71b27dd6d diff --git a/include/yaz/oid_db.h b/include/yaz/oid_db.h index ca75db7..bbab0b3 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-2010 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.5 2007-04-16 21:53:08 adam Exp $ */ /** * \file oid_db.h @@ -42,6 +41,29 @@ YAZ_BEGIN_CDECL /** \brief OID database */ typedef struct yaz_oid_db *yaz_oid_db_t; + +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 */ @@ -59,8 +81,8 @@ 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 @@ -71,8 +93,8 @@ const int *yaz_string_to_oid(yaz_oid_db_t oid_db, \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 @@ -82,8 +104,8 @@ int *yaz_string_to_oid_nmem(yaz_oid_db_t oid_db, \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,7 +115,7 @@ 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) @@ -103,7 +125,19 @@ const char *yaz_oid_to_string(yaz_oid_db_t oid_db, \returns OID string (named or dot notatition) */ YAZ_EXPORT -const char *yaz_oid_to_string_buf(const int *oid, int *oclass, char *buf); +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 +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,25 +167,39 @@ 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; }; +YAZ_END_CDECL + #define Z3950_PREFIX 1, 2, 840, 10003 #include -YAZ_END_CDECL - #endif /* * Local variables: * c-basic-offset: 4 + * c-file-style: "Stroustrup" * indent-tabs-mode: nil * End: * vim: shiftwidth=4 tabstop=8 expandtab