blob: d030da7865d4f26cfb62f43ea63c244bf2cd85b4 [file] [log] [blame]
Lev Walkinf15320b2004-06-03 03:38:44 +00001#include <stdlib.h>
2#include <string.h>
3
4#include "asn1parser.h"
5
6/*
7 * Construct a new empty module.
8 */
9asn1p_module_t *
10asn1p_module_new() {
11 asn1p_module_t *mod;
12
13 mod = calloc(1, sizeof *mod);
14 if(mod) {
Lev Walkinf15320b2004-06-03 03:38:44 +000015 TQ_INIT(&(mod->exports));
Lev Walkina9532f42006-09-17 04:52:50 +000016 TQ_INIT(&(mod->imports));
Lev Walkinf15320b2004-06-03 03:38:44 +000017 TQ_INIT(&(mod->members));
18 }
19 return mod;
20}
21
22/*
23 * Destroy the module.
24 */
25void
26asn1p_module_free(asn1p_module_t *mod) {
27 if(mod) {
28 asn1p_expr_t *expr;
29
Lev Walkinb36317c2005-08-12 10:09:10 +000030 if(mod->ModuleName)
31 free(mod->ModuleName);
Lev Walkinf15320b2004-06-03 03:38:44 +000032
33 if(mod->module_oid)
34 asn1p_oid_free(mod->module_oid);
35
36 while((expr = TQ_REMOVE(&(mod->members), next)))
37 asn1p_expr_free(expr);
38
39 free(mod);
40 }
41}
42
43asn1p_t *
44asn1p_new() {
45 asn1p_t *asn;
46 asn = calloc(1, sizeof(*asn));
47 if(asn) {
48 TQ_INIT(&(asn->modules));
49 }
50 return asn;
51}
52
53
54void
Lev Walkin9b5df842006-09-12 04:21:30 +000055asn1p_delete(asn1p_t *asn) {
Lev Walkinf15320b2004-06-03 03:38:44 +000056 if(asn) {
57 asn1p_module_t *mod;
58 while((mod = TQ_REMOVE(&(asn->modules), mod_next)))
59 asn1p_module_free(mod);
60 free(asn);
61 }
62}