Commit d24c62de authored by Lev Walkin's avatar Lev Walkin

fixing all in module before checking constraints

parent a13e73fe
...@@ -12,7 +12,8 @@ static void _default_error_logger(int _severity, const char *fmt, ...); ...@@ -12,7 +12,8 @@ static void _default_error_logger(int _severity, const char *fmt, ...);
/* /*
* Internal check functions. * Internal check functions.
*/ */
static int asn1f_fix_module(arg_t *arg); static int asn1f_fix_module__phase_1(arg_t *arg);
static int asn1f_fix_module__phase_2(arg_t *arg);
static int asn1f_fix_simple(arg_t *arg); /* For INTEGER/ENUMERATED */ static int asn1f_fix_simple(arg_t *arg); /* For INTEGER/ENUMERATED */
static int asn1f_fix_constructed(arg_t *arg); /* For SEQUENCE/SET/CHOICE */ static int asn1f_fix_constructed(arg_t *arg); /* For SEQUENCE/SET/CHOICE */
static int asn1f_resolve_constraints(arg_t *arg); /* For subtype constraints */ static int asn1f_resolve_constraints(arg_t *arg); /* For subtype constraints */
...@@ -79,7 +80,7 @@ asn1f_process(asn1p_t *asn, enum asn1f_flags flags, ...@@ -79,7 +80,7 @@ asn1f_process(asn1p_t *asn, enum asn1f_flags flags,
* Process each module in the list. * Process each module in the list.
*/ */
TQ_FOR(arg.mod, &(asn->modules), mod_next) { TQ_FOR(arg.mod, &(asn->modules), mod_next) {
int ret = asn1f_fix_module(&arg); int ret = asn1f_fix_module__phase_1(&arg);
/* /*
* These lines are used for illustration purposes. * These lines are used for illustration purposes.
* RET2RVAL() is used everywhere else. * RET2RVAL() is used everywhere else.
...@@ -87,6 +88,13 @@ asn1f_process(asn1p_t *asn, enum asn1f_flags flags, ...@@ -87,6 +88,13 @@ asn1f_process(asn1p_t *asn, enum asn1f_flags flags,
if(ret == -1) fatals++; if(ret == -1) fatals++;
if(ret == 1) warnings++; if(ret == 1) warnings++;
} }
TQ_FOR(arg.mod, &(asn->modules), mod_next) {
int ret = asn1f_fix_module__phase_2(&arg);
if(ret == -1) fatals++;
if(ret == 1) warnings++;
}
memset(&a1f_replace_me_with_proper_interface_arg, 0, sizeof(arg_t));
memset(&a1f_replace_me_with_proper_interface_arg, 0, sizeof(arg_t)); memset(&a1f_replace_me_with_proper_interface_arg, 0, sizeof(arg_t));
...@@ -100,7 +108,7 @@ asn1f_process(asn1p_t *asn, enum asn1f_flags flags, ...@@ -100,7 +108,7 @@ asn1f_process(asn1p_t *asn, enum asn1f_flags flags,
* Check the internals of a single module. * Check the internals of a single module.
*/ */
static int static int
asn1f_fix_module(arg_t *arg) { asn1f_fix_module__phase_1(arg_t *arg) {
asn1p_expr_t *expr; asn1p_expr_t *expr;
int rvalue = 0; int rvalue = 0;
int ret; int ret;
...@@ -239,6 +247,15 @@ asn1f_fix_module(arg_t *arg) { ...@@ -239,6 +247,15 @@ asn1f_fix_module(arg_t *arg) {
assert(arg->expr == expr); assert(arg->expr == expr);
} }
return rvalue;
}
static int
asn1f_fix_module__phase_2(arg_t *arg) {
asn1p_expr_t *expr;
int rvalue = 0;
int ret;
/* /*
* Check semantic validity of constraints. * Check semantic validity of constraints.
*/ */
...@@ -258,7 +275,6 @@ asn1f_fix_module(arg_t *arg) { ...@@ -258,7 +275,6 @@ asn1f_fix_module(arg_t *arg) {
return rvalue; return rvalue;
} }
static int static int
asn1f_fix_simple(arg_t *arg) { asn1f_fix_simple(arg_t *arg) {
int rvalue = 0; int rvalue = 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment