From c74ea225465b3397fea6775ebad9bf07daafd7e5 Mon Sep 17 00:00:00 2001 From: Lev Walkin <vlm@lionet.info> Date: Wed, 25 Aug 2004 02:27:47 +0000 Subject: [PATCH] better ValueSet printing --- ChangeLog | 1 + libasn1print/asn1print.c | 20 +++++++++++++++++--- tests/07-int-OK.asn1.-EF | 2 +- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index d0df5743..2d0efdba 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,7 @@ PER visibility rules for actual constraints checking code generator. * Indirect references in constraints resolver code fixed. * Avoided compilation warning on gcc 3.3.3 systems. + * Better ValueSet printing. 0.9.1: 2004-Aug-23 diff --git a/libasn1print/asn1print.c b/libasn1print/asn1print.c index c90e9665..a07a894c 100644 --- a/libasn1print/asn1print.c +++ b/libasn1print/asn1print.c @@ -442,6 +442,7 @@ asn1print_expr(asn1p_t *asn, asn1p_module_t *mod, asn1p_expr_t *tc, enum asn1pri } if(tc->meta_type != AMT_VALUE + && tc->meta_type != AMT_VALUESET && tc->expr_type != A1TC_EXTENSIBLE) { if(level) { if(tc->Identifier) @@ -503,14 +504,27 @@ asn1print_expr(asn1p_t *asn, asn1p_module_t *mod, asn1p_expr_t *tc, enum asn1pri asn1print_ref(tc->reference, flags); } + if(tc->meta_type == AMT_VALUESET) + printf(" ::="); + /* * Display the descendants (children) of the current type. */ - if(TQ_FIRST(&(tc->members))) { + if(TQ_FIRST(&(tc->members)) + || (tc->expr_type & ASN_CONSTR_MASK) + || tc->meta_type == AMT_VALUESET + || tc->meta_type == AMT_OBJECT + || tc->meta_type == AMT_OBJECTSET + ) { asn1p_expr_t *se; /* SubExpression */ int put_braces = !SEQ_OF; /* Don't need 'em, if SET OF... */ - if(put_braces) printf(" {\n"); + if(put_braces) { + printf(" {"); + if(TQ_FIRST(&tc->members)) + printf("\n"); + else printf(" }"); + } TQ_FOR(se, &(tc->members), next) { /* @@ -528,7 +542,7 @@ asn1print_expr(asn1p_t *asn, asn1p_module_t *mod, asn1p_expr_t *tc, enum asn1pri } } - if(put_braces) { + if(put_braces && TQ_FIRST(&tc->members)) { printf("\n"); INDENT("}"); } diff --git a/tests/07-int-OK.asn1.-EF b/tests/07-int-OK.asn1.-EF index b3d6a0c3..90b23499 100644 --- a/tests/07-int-OK.asn1.-EF +++ b/tests/07-int-OK.asn1.-EF @@ -9,7 +9,7 @@ int123456 INTEGER ::= 123456 Interval ::= INTEGER (1..123456) -SameInterval ::= INTEGER +SameInterval INTEGER ::= { } Reason ::= INTEGER { no-reason(0), -- GitLab