use hash for name lookup
diff --git a/libasn1parser/asn1p_y.y b/libasn1parser/asn1p_y.y
index 4d209c3..0b1c9e4 100644
--- a/libasn1parser/asn1p_y.y
+++ b/libasn1parser/asn1p_y.y
@@ -95,15 +95,14 @@
#ifdef AL_IMPORT
#error AL_IMPORT DEFINED ELSEWHERE!
#endif
-#define AL_IMPORT(to,where,from,field) do { \
- if(!(from)) break; \
- while(TQ_FIRST(&((from)->where))) { \
- TQ_ADD(&((to)->where), \
- TQ_REMOVE(&((from)->where), field), \
- field); \
- } \
- assert(TQ_FIRST(&((from)->where)) == 0); \
- } while(0)
+#define AL_IMPORT(to, where, from, field) \
+ do { \
+ if(!(from)) break; \
+ while(TQ_FIRST(&((from)->where))) { \
+ TQ_ADD(&((to)->where), TQ_REMOVE(&((from)->where), field), field); \
+ } \
+ assert(TQ_FIRST(&((from)->where)) == 0); \
+ } while(0)
%}
@@ -589,7 +588,7 @@
$$ = asn1p_module_new();
AL_IMPORT($$, exports, $1, xp_next);
AL_IMPORT($$, imports, $2, xp_next);
- AL_IMPORT($$, members, $3, next);
+ asn1p_module_move_members($$, $3);
asn1p_module_free($1);
asn1p_module_free($2);
@@ -608,7 +607,7 @@
$$ = $2;
break;
}
- AL_IMPORT($$, members, $2, next);
+ asn1p_module_move_members($$, $2);
asn1p_module_free($2);
}
;
@@ -623,14 +622,14 @@
checkmem($$);
assert($1->expr_type != A1TC_INVALID);
assert($1->meta_type != AMT_INVALID);
- TQ_ADD(&($$->members), $1, next);
+ asn1p_module_member_add($$, $1);
}
| ValueAssignment {
$$ = asn1p_module_new();
checkmem($$);
assert($1->expr_type != A1TC_INVALID);
assert($1->meta_type != AMT_INVALID);
- TQ_ADD(&($$->members), $1, next);
+ asn1p_module_member_add($$, $1);
}
/*
* Value set definition
@@ -644,7 +643,7 @@
checkmem($$);
assert($1->expr_type != A1TC_INVALID);
assert($1->meta_type != AMT_INVALID);
- TQ_ADD(&($$->members), $1, next);
+ asn1p_module_member_add($$, $1);
}
| TOK_ENCODING_CONTROL TOK_capitalreference
{ asn1p_lexer_hack_push_encoding_control(); }
@@ -728,11 +727,11 @@
ImportsElement {
$$ = asn1p_xports_new();
checkmem($$);
- TQ_ADD(&($$->members), $1, next);
+ TQ_ADD(&($$->xp_members), $1, next);
}
| ImportsList ',' ImportsElement {
$$ = $1;
- TQ_ADD(&($$->members), $3, next);
+ TQ_ADD(&($$->xp_members), $3, next);
}
;
@@ -789,11 +788,11 @@
ExportsElement {
$$ = asn1p_xports_new();
assert($$);
- TQ_ADD(&($$->members), $1, next);
+ TQ_ADD(&($$->xp_members), $1, next);
}
| ExportsBody ',' ExportsElement {
$$ = $1;
- TQ_ADD(&($$->members), $3, next);
+ TQ_ADD(&($$->xp_members), $3, next);
}
;