Add new function nmem_strsplitx.
[yaz-moved-to-github.git] / include / yaz / oid_util.h
index 3dafc0d..054c98e 100644 (file)
@@ -1,5 +1,5 @@
-/*
- * Copyright (c) 1995-2007, Index Data
+/* This file is part of the YAZ toolkit.
+ * Copyright (C) 1995-2011 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:
  * (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_util.h,v 1.2 2007-04-12 20:47:27 adam Exp $ */
 
 /**
  * \file oid_util.h
- * \brief Header for OID database
- *
- * More or less protocol-transparent OID database.
- * We could (and should?) extend this so that the user app can add new
- * entries to the list at initialization.
+ * \brief Header for OID basic functions
  */
 #ifndef OID_UTIL_H
 #define OID_UTIL_H
@@ -44,6 +39,8 @@ YAZ_BEGIN_CDECL
 #define OID_SIZE 20
 #define OID_STR_MAX 256
 
+typedef short Odr_oid;   /* terminate by -1 */
+
 typedef enum oid_proto
 {
     PROTO_NOP=0,
@@ -54,33 +51,51 @@ typedef enum oid_proto
     PROTO_HTTP
 } oid_proto;
 
-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;
-    
-YAZ_EXPORT void oid_oidcpy(int *t, const int *s);
-YAZ_EXPORT void oid_oidcat(int *t, const int *s);
-YAZ_EXPORT int oid_oidcmp(const int *o1, const int *o2);
-YAZ_EXPORT int oid_oidlen(const int *o);
-YAZ_EXPORT char *oid_oid_to_dotstring(const int *oid, char *oidbuf);
-YAZ_EXPORT int oid_dotstring_to_oid(const char *name, int *oid);
+
+/** \brief copies OID
+    \param t destination OID
+    \param s source OID
+*/
+YAZ_EXPORT void oid_oidcpy(Odr_oid *t, const Odr_oid *s);
+
+/** \brief appends to OID
+    \param t destination OID
+    \param s source OID
+*/
+YAZ_EXPORT void oid_oidcat(Odr_oid *t, const Odr_oid *s);
+
+
+/** \brief compares OIDs
+    \param o1 first OID
+    \param o2 second OID
+    \retval 0 equal
+    \retval >0 o1 greater than o2
+    \retval <0 o1 less than o2
+*/
+YAZ_EXPORT int oid_oidcmp(const Odr_oid *o1, const Odr_oid *o2);
+
+
+/** \brief returns length of OIDs
+    \param o OID
+    \returns length as number of Odr_oids
+*/
+YAZ_EXPORT int oid_oidlen(const Odr_oid *o);
+
+/** \brief converts OID to string (dot notation)
+    \param oid OID
+    \param oidbuf resulting buffer which should be at least of size OID_STR_MAX
+    \returns result (same as oidbuf)
+*/
+YAZ_EXPORT char *oid_oid_to_dotstring(const Odr_oid *oid, char *oidbuf);
+
+
+/** \brief converts dot string to OID
+    \param name dot string OID, e.g. "1.2.840.10003.2.1"
+    \param oid resulting OID buffer which should be at least of size OID_SIZE
+    \retval 0 OK
+    \retval -1 failure
+*/
+YAZ_EXPORT int oid_dotstring_to_oid(const char *name, Odr_oid *oid);
 
 YAZ_END_CDECL
 
@@ -88,6 +103,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