Initial revision


git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@2 59561ff5-6e30-0410-9f3c-9617f08c8826
diff --git a/libasn1parser/asn1p_oid.h b/libasn1parser/asn1p_oid.h
new file mode 100644
index 0000000..cbb6b07
--- /dev/null
+++ b/libasn1parser/asn1p_oid.h
@@ -0,0 +1,66 @@
+/*
+ * Object Identifier definition.
+ */
+#ifndef	ASN1_PARSER_OID_H
+#define	ASN1_PARSER_OID_H
+
+/********************************
+ * Single Object Identifier Arc *
+ ********************************/
+
+/*
+ * Object identifier arc (one number in the hierarchy).
+ */
+typedef struct asn1p_oid_arc_s {
+	asn1_integer_t number;	/* -1 if not yet defined */
+	char *name;	/* 0 if not defined */
+} asn1p_oid_arc_t;
+
+
+/*
+ * Arc constructor.
+ */
+asn1p_oid_arc_t *asn1p_oid_arc_new(
+	const char *optName, asn1_integer_t optNumber /* = -1 */);
+/*
+ * Arc destructor.
+ */
+void asn1p_oid_arc_free(asn1p_oid_arc_t *);
+
+
+/**************************************************
+ * Object Identifier itself, a collection of arcs *
+ **************************************************/
+
+/*
+ * Object Identifier as a collection of arcs.
+ */
+typedef struct asn1p_oid_s {
+	asn1p_oid_arc_t *arcs;
+	int arcs_count;
+} asn1p_oid_t;
+
+/*
+ * OID constructor.
+ */
+asn1p_oid_t *asn1p_oid_new(void);
+
+/*
+ * Add another arc using given one as a template
+ */
+int asn1p_oid_add_arc(asn1p_oid_t *, asn1p_oid_arc_t *template);
+
+/*
+ * OID destructor.
+ */
+void asn1p_oid_free(asn1p_oid_t *);
+
+/*
+ * RETURN VALUES:
+ *	0: The specified OIDs are equal.
+ *	-1 or 1 otherwise.
+ */
+int asn1p_oid_compare(asn1p_oid_t *a, asn1p_oid_t *b);
+
+
+#endif	/* ASN1_PARSER_OID_H */