diff --git a/ChangeLog b/ChangeLog index d0df5743d29b6bc39c389656c3cd24af95c7618d..2d0efdba5e8b1c37347fc30726cd44bfd3784468 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 c90e966552fb4634dcccf055bba61c0fc50a7c88..a07a894cab2856a39ea25ed3ade5a66f252a7371 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 b3d6a0c3265008a65fda51cbb35a1ee2005f8192..90b234991bad7a2045b18f79fef4cd68e62a96dc 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),