5
#include "asn1parser.h"
9
return calloc(1, sizeof(asn1p_oid_t));
13
asn1p_oid_add_arc(asn1p_oid_t *oid, asn1p_oid_arc_t *template) {
15
p = realloc(oid->arcs, (oid->arcs_count + 1) * sizeof(oid->arcs[0]));
18
oid->arcs[oid->arcs_count].name
19
= template->name?strdup(template->name):0;
20
oid->arcs[oid->arcs_count].number = template->number;
29
asn1p_oid_free(asn1p_oid_t *oid) {
32
while(oid->arcs_count--) {
33
if(oid->arcs[oid->arcs_count].name)
34
free(oid->arcs[oid->arcs_count].name);
42
asn1p_oid_arc_new(const char *optName, asn1c_integer_t optNumber /* = -1 */) {
45
arc = calloc(1, sizeof *arc);
48
arc->name = strdup(optName);
49
arc->number = optNumber;
56
asn1p_oid_arc_free(asn1p_oid_arc_t *arc) {
65
asn1p_oid_compare(asn1p_oid_t *a, asn1p_oid_t *b) {
71
if(b->arcs_count > i) {
72
if(a->arcs_count <= i)
74
} else if(a->arcs_count > i) {
75
if(b->arcs_count <= i)
77
} else if(b->arcs_count <= i && a->arcs_count <= i) {
78
cmp = b->arcs_count - a->arcs_count;
86
cmp = b->arcs[i].number - a->arcs[i].number;