structure comparison functions
diff --git a/tests/50-constraint-OK.asn1.-Pfwide-types b/tests/50-constraint-OK.asn1.-Pfwide-types
index 901824e..7003656 100644
--- a/tests/50-constraint-OK.asn1.-Pfwide-types
+++ b/tests/50-constraint-OK.asn1.-Pfwide-types
@@ -35,6 +35,7 @@
 	"Int1",
 	INTEGER_free,
 	INTEGER_print,
+	INTEGER_compare,
 	INTEGER_constraint,
 	INTEGER_decode_ber,
 	INTEGER_encode_der,
@@ -119,6 +120,7 @@
 	"Int2",
 	INTEGER_free,
 	INTEGER_print,
+	INTEGER_compare,
 	Int2_constraint,
 	INTEGER_decode_ber,
 	INTEGER_encode_der,
@@ -207,6 +209,7 @@
 	"Int3",
 	INTEGER_free,
 	INTEGER_print,
+	INTEGER_compare,
 	Int3_constraint,
 	INTEGER_decode_ber,
 	INTEGER_encode_der,
@@ -295,6 +298,7 @@
 	"Int4",
 	INTEGER_free,
 	INTEGER_print,
+	INTEGER_compare,
 	Int4_constraint,
 	INTEGER_decode_ber,
 	INTEGER_encode_der,
@@ -383,6 +387,7 @@
 	"Int5",
 	INTEGER_free,
 	INTEGER_print,
+	INTEGER_compare,
 	Int5_constraint,
 	INTEGER_decode_ber,
 	INTEGER_encode_der,
@@ -471,6 +476,7 @@
 	"ExtensibleExtensions",
 	INTEGER_free,
 	INTEGER_print,
+	INTEGER_compare,
 	ExtensibleExtensions_constraint,
 	INTEGER_decode_ber,
 	INTEGER_encode_der,
@@ -528,6 +534,7 @@
 	"Str1",
 	IA5String_free,
 	IA5String_print,
+	IA5String_compare,
 	IA5String_constraint,
 	IA5String_decode_ber,
 	IA5String_encode_der,
@@ -628,6 +635,7 @@
 	"Str2",
 	IA5String_free,
 	IA5String_print,
+	IA5String_compare,
 	Str2_constraint,
 	IA5String_decode_ber,
 	IA5String_encode_der,
@@ -739,6 +747,7 @@
 	"Str3",
 	IA5String_free,
 	IA5String_print,
+	IA5String_compare,
 	Str3_constraint,
 	IA5String_decode_ber,
 	IA5String_encode_der,
@@ -836,6 +845,7 @@
 	"Str4",
 	IA5String_free,
 	IA5String_print,
+	IA5String_compare,
 	Str4_constraint,
 	IA5String_decode_ber,
 	IA5String_encode_der,
@@ -933,6 +943,7 @@
 	"PER-Visible",
 	IA5String_free,
 	IA5String_print,
+	IA5String_compare,
 	PER_Visible_constraint,
 	IA5String_decode_ber,
 	IA5String_encode_der,
@@ -1030,6 +1041,7 @@
 	"PER-Visible-2",
 	IA5String_free,
 	IA5String_print,
+	IA5String_compare,
 	PER_Visible_2_constraint,
 	IA5String_decode_ber,
 	IA5String_encode_der,
@@ -1127,6 +1139,7 @@
 	"Not-PER-Visible-1",
 	IA5String_free,
 	IA5String_print,
+	IA5String_compare,
 	Not_PER_Visible_1_constraint,
 	IA5String_decode_ber,
 	IA5String_encode_der,
@@ -1224,6 +1237,7 @@
 	"Not-PER-Visible-2",
 	IA5String_free,
 	IA5String_print,
+	IA5String_compare,
 	Not_PER_Visible_2_constraint,
 	IA5String_decode_ber,
 	IA5String_encode_der,
@@ -1321,6 +1335,7 @@
 	"Not-PER-Visible-3",
 	IA5String_free,
 	IA5String_print,
+	IA5String_compare,
 	Not_PER_Visible_3_constraint,
 	IA5String_decode_ber,
 	IA5String_encode_der,
@@ -1421,6 +1436,7 @@
 	"SIZE-but-not-FROM",
 	IA5String_free,
 	IA5String_print,
+	IA5String_compare,
 	SIZE_but_not_FROM_constraint,
 	IA5String_decode_ber,
 	IA5String_encode_der,
@@ -1521,6 +1537,7 @@
 	"SIZE-and-FROM",
 	IA5String_free,
 	IA5String_print,
+	IA5String_compare,
 	SIZE_and_FROM_constraint,
 	IA5String_decode_ber,
 	IA5String_encode_der,
@@ -1618,6 +1635,7 @@
 	"Neither-SIZE-nor-FROM",
 	IA5String_free,
 	IA5String_print,
+	IA5String_compare,
 	Neither_SIZE_nor_FROM_constraint,
 	IA5String_decode_ber,
 	IA5String_encode_der,
@@ -1709,6 +1727,7 @@
 	"Utf8-4",
 	UTF8String_free,
 	UTF8String_print,
+	UTF8String_compare,
 	Utf8_4_constraint,
 	UTF8String_decode_ber,
 	UTF8String_encode_der,
@@ -1828,6 +1847,7 @@
 	"Utf8-3",
 	UTF8String_free,
 	UTF8String_print,
+	UTF8String_compare,
 	Utf8_3_constraint,
 	UTF8String_decode_ber,
 	UTF8String_encode_der,
@@ -1917,6 +1937,7 @@
 	"Utf8-2",
 	UTF8String_free,
 	UTF8String_print,
+	UTF8String_compare,
 	Utf8_2_constraint,
 	UTF8String_decode_ber,
 	UTF8String_encode_der,
@@ -1974,6 +1995,7 @@
 	"Utf8-1",
 	UTF8String_free,
 	UTF8String_print,
+	UTF8String_compare,
 	UTF8String_constraint,
 	UTF8String_decode_ber,
 	UTF8String_encode_der,
@@ -2086,6 +2108,7 @@
 	"VisibleIdentifier",
 	VisibleString_free,
 	VisibleString_print,
+	VisibleString_compare,
 	VisibleIdentifier_constraint,
 	VisibleString_decode_ber,
 	VisibleString_encode_der,
@@ -2324,6 +2347,7 @@
 	"enum-c",
 	ENUMERATED_free,
 	ENUMERATED_print,
+	ENUMERATED_compare,
 	ENUMERATED_constraint,
 	ENUMERATED_decode_ber,
 	ENUMERATED_encode_der,
@@ -2442,6 +2466,7 @@
 	"Sequence",
 	SEQUENCE_free,
 	SEQUENCE_print,
+	SEQUENCE_compare,
 	SEQUENCE_constraint,
 	SEQUENCE_decode_ber,
 	SEQUENCE_encode_der,
@@ -2517,6 +2542,7 @@
 	"SequenceOf",
 	SEQUENCE_OF_free,
 	SEQUENCE_OF_print,
+	SEQUENCE_OF_compare,
 	SEQUENCE_OF_constraint,
 	SEQUENCE_OF_decode_ber,
 	SEQUENCE_OF_encode_der,
@@ -2599,6 +2625,7 @@
 	"Enum0",
 	ENUMERATED_free,
 	ENUMERATED_print,
+	ENUMERATED_compare,
 	ENUMERATED_constraint,
 	ENUMERATED_decode_ber,
 	ENUMERATED_encode_der,
@@ -2705,6 +2732,7 @@
 	"Enum1",
 	NativeEnumerated_free,
 	NativeEnumerated_print,
+	NativeEnumerated_compare,
 	Enum1_constraint,
 	NativeEnumerated_decode_ber,
 	NativeEnumerated_encode_der,
@@ -2817,6 +2845,7 @@
 	"Identifier",
 	VisibleString_free,
 	VisibleString_print,
+	VisibleString_compare,
 	Identifier_constraint,
 	VisibleString_decode_ber,
 	VisibleString_encode_der,