Support for some CharsDefn
git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@830 59561ff5-6e30-0410-9f3c-9617f08c8826
diff --git a/libasn1print/asn1print.c b/libasn1print/asn1print.c
index db9f106..ecb91f0 100644
--- a/libasn1print/asn1print.c
+++ b/libasn1print/asn1print.c
@@ -215,6 +215,19 @@
case ATV_MAX: printf("MAX"); return 0;
case ATV_FALSE: printf("FALSE"); return 0;
case ATV_TRUE: printf("TRUE"); return 0;
+ case ATV_TUPLE:
+ printf("{%d, %d}",
+ (int)(val->value.v_integer >> 4),
+ (int)(val->value.v_integer & 0x0f));
+ return 0;
+ case ATV_QUADRUPLE:
+ printf("{%d, %d, %d, %d}",
+ (int)((val->value.v_integer >> 24) & 0xff),
+ (int)((val->value.v_integer >> 16) & 0xff),
+ (int)((val->value.v_integer >> 8) & 0xff),
+ (int)((val->value.v_integer >> 0) & 0xff)
+ );
+ return 0;
case ATV_STRING:
{
char *p = val->value.string.buf;
@@ -339,10 +352,9 @@
"", "(" };
unsigned int i;
for(i = 0; i < ct->el_count; i++) {
- enum asn1print_flags nflags = flags;
if(i) fputs(symtable[symno], stdout);
if(ct->type == ACT_CA_CRC) fputs("{", stdout);
- asn1print_constraint(ct->elements[i], nflags);
+ asn1print_constraint(ct->elements[i], flags);
if(ct->type == ACT_CA_CRC) fputs("}", stdout);
if(i+1 < ct->el_count
&& ct->type == ACT_CA_SET)
@@ -350,6 +362,11 @@
}
}
break;
+ case ACT_CA_AEX:
+ assert(ct->el_count == 1);
+ printf("ALL EXCEPT ");
+ asn1print_constraint(ct->elements[0], flags);
+ break;
case ACT_INVALID:
assert(ct->type != ACT_INVALID);
break;