NativeEnumerated.c vars NULL init and check
[com/asn1c.git] / libasn1parser / asn1p_oid.h
1 /*
2  * Object Identifier definition.
3  */
4 #ifndef ASN1_PARSER_OID_H
5 #define ASN1_PARSER_OID_H
6
7 /********************************
8  * Single Object Identifier Arc *
9  ********************************/
10
11 /*
12  * Object identifier arc (one number in the hierarchy).
13  */
14 typedef struct asn1p_oid_arc_s {
15         asn1c_integer_t number; /* -1 if not yet defined */
16         char *name;     /* 0 if not defined */
17 } asn1p_oid_arc_t;
18
19
20 /*
21  * Arc constructor.
22  */
23 asn1p_oid_arc_t *asn1p_oid_arc_new(
24         const char *optName, asn1c_integer_t optNumber /* = -1 */);
25 /*
26  * Arc destructor.
27  */
28 void asn1p_oid_arc_free(asn1p_oid_arc_t *);
29
30
31 /**************************************************
32  * Object Identifier itself, a collection of arcs *
33  **************************************************/
34
35 /*
36  * Object Identifier as a collection of arcs.
37  */
38 typedef struct asn1p_oid_s {
39         asn1p_oid_arc_t *arcs;
40         int arcs_count;
41 } asn1p_oid_t;
42
43 /*
44  * OID constructors.
45  */
46 asn1p_oid_t *asn1p_oid_new(void);
47 asn1p_oid_t *asn1p_oid_construct(asn1p_oid_arc_t *, int narcs);
48
49 /*
50  * Add another arc using given one as a template
51  */
52 int asn1p_oid_add_arc(asn1p_oid_t *, asn1p_oid_arc_t *template);
53
54 /*
55  * OID destructor.
56  */
57 void asn1p_oid_free(asn1p_oid_t *);
58
59 /*
60  * RETURN VALUES:
61  *      0: The specified OIDs are equal.
62  *      -1 or 1 otherwise.
63  */
64 int asn1p_oid_compare(const asn1p_oid_t *a, const asn1p_oid_t *b);
65
66
67 #endif  /* ASN1_PARSER_OID_H */