1 /* This file is part of the YAZ toolkit. 2 * Copyright (C) Index Data. 3 * All rights reserved. 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions are met: 6 * 7 * * Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * * Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * * Neither the name of Index Data nor the names of its contributors 13 * may be used to endorse or promote products derived from this 14 * software without specific prior written permission. 15 * 16 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY 17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY 20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 */ 27 28 /** 29 * \file oid_util.h 30 * \brief Header for OID basic functions 31 */ 32 #ifndef OID_UTIL_H 33 #define OID_UTIL_H 34 35 #include <yaz/yconfig.h> 36 37 YAZ_BEGIN_CDECL 38 39 #define OID_SIZE 20 40 #define OID_STR_MAX 256 41 42 typedef short Odr_oid; /* terminate by -1 */ 43 44 typedef enum oid_proto 45 { 46 PROTO_NOP=0, 47 PROTO_Z3950, 48 PROTO_HTTP 49 } oid_proto; 50 51 52 /** \brief copies OID 53 \param t destination OID 54 \param s source OID 55 */ 56 YAZ_EXPORT void oid_oidcpy(Odr_oid *t, const Odr_oid *s); 57 58 /** \brief appends to OID 59 \param t destination OID 60 \param s source OID 61 */ 62 YAZ_EXPORT void oid_oidcat(Odr_oid *t, const Odr_oid *s); 63 64 65 /** \brief compares OIDs 66 \param o1 first OID 67 \param o2 second OID 68 \retval 0 equal 69 \retval >0 o1 greater than o2 70 \retval <0 o1 less than o2 71 */ 72 YAZ_EXPORT int oid_oidcmp(const Odr_oid *o1, const Odr_oid *o2); 73 74 75 /** \brief returns length of OIDs 76 \param o OID 77 \returns length as number of Odr_oids 78 */ 79 YAZ_EXPORT int oid_oidlen(const Odr_oid *o); 80 81 /** \brief converts OID to string (dot notation) 82 \param oid OID 83 \param oidbuf resulting buffer which should be at least of size OID_STR_MAX 84 \returns result (same as oidbuf) 85 */ 86 YAZ_EXPORT char *oid_oid_to_dotstring(const Odr_oid *oid, char *oidbuf); 87 88 89 /** \brief converts dot string to OID 90 \param name dot string OID, e.g. "1.2.840.10003.2.1" 91 \param oid resulting OID buffer which should be at least of size OID_SIZE 92 \retval 0 OK 93 \retval -1 failure 94 */ 95 YAZ_EXPORT int oid_dotstring_to_oid(const char *name, Odr_oid *oid); 96 97 YAZ_END_CDECL 98 99 #endif 100 /* 101 * Local variables: 102 * c-basic-offset: 4 103 * c-file-style: "Stroustrup" 104 * indent-tabs-mode: nil 105 * End: 106 * vim: shiftwidth=4 tabstop=8 expandtab 107 */ 108 109