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;