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=3524196ff85187a83dca8bfcf3b93e5ecbf2b688;hb=544bbfdbc1da539b17542d740d25b154ebb4c182;hpb=99ab8b6123275a614abfa69a13ce4f7df59aa7d7 diff --git a/include/yaz/oid_db.h b/include/yaz/oid_db.h index 3524196..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.3 2007-04-13 13:58:00 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,43 +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); - -#define OID_STR_BIB1 "Bib-1" -#define OID_STR_DIAG1 "Diag-1" -#define OID_STR_USMARC "USmarc" -#define OID_STR_XML "XML" -#define OID_STR_SOIF "SOIF" -#define OID_STR_APPLICATION_XML "application-XML" -#define OID_STR_HTML "html" -#define OID_STR_GRS1 "GRS-1" -#define OID_STR_POSTSCRIPT "postscript" -#define OID_STR_SUTRS "SUTRS" -#define OID_STR_OPAC "OPAC" -#define OID_STR_EXPLAIN "Explain" -#define OID_STR_SUMMARY "Summary" -#define OID_STR_EXTENDED "Extended" -#define OID_STR_COOKIE "Cookie" -#define OID_STR_PROXY "Proxy" -#define OID_STR_CLIENT_IP "Client-IP" -#define OID_STR_ILL_1 "ISOILL-1" -#define OID_STR_ADMIN "Admin" -#define OID_STR_XMLES "XML-ES" -#define OID_STR_EXT_UPDATE "DB. Update" -#define OID_STR_ITEMORDER "Item order" -#define OID_STR_USERINFO_1 "UserInfo-1" -#define OID_STR_ID_CHARSET "ID-Charset" -#define OID_STR_CHARNEG_3 "CharSetandLanguageNegotiation-3" -#define OID_STR_CHARNEG_4 "CharSetandLanguageNegotiation-4" -#define OID_STR_VARIANT_1 "Variant-1" +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 { + enum oid_class oclass; + const Odr_oid *oid; + char *name; +}; YAZ_END_CDECL +#define Z3950_PREFIX 1, 2, 840, 10003 + +#include + #endif /* * Local variables: * c-basic-offset: 4 + * c-file-style: "Stroustrup" * indent-tabs-mode: nil * End: * vim: shiftwidth=4 tabstop=8 expandtab