more PER support
diff --git a/tests/50-constraint-OK.asn1.-Pgen-PER b/tests/50-constraint-OK.asn1.-Pgen-PER
index 3e2911d..bb8d0e5 100644
--- a/tests/50-constraint-OK.asn1.-Pgen-PER
+++ b/tests/50-constraint-OK.asn1.-Pgen-PER
@@ -272,15 +272,19 @@
}
+/*** <<< CTDEFS [Int2] >>> ***/
+
+static asn_per_constraints_t asn_PER_Int2_constr_1 = {
+ { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 } /* (0..MAX) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+
/*** <<< STAT-DEFS [Int2] >>> ***/
static ber_tlv_tag_t asn_DEF_Int2_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
};
-static asn_per_constraints_t asn_PER_Int2_constr_1 = {
- { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 } /* (0..MAX) */,
- { APC_UNCONSTRAINED, -1, -1, 0, 0 }
-};
asn_TYPE_descriptor_t asn_DEF_Int2 = {
"Int2",
"Int2",
@@ -441,15 +445,19 @@
}
+/*** <<< CTDEFS [Int3] >>> ***/
+
+static asn_per_constraints_t asn_PER_Int3_constr_1 = {
+ { APC_CONSTRAINED, 4, 4, 0, 10 } /* (0..10) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+
/*** <<< STAT-DEFS [Int3] >>> ***/
static ber_tlv_tag_t asn_DEF_Int3_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
};
-static asn_per_constraints_t asn_PER_Int3_constr_1 = {
- { APC_CONSTRAINED, 4, 4, 0, 10 } /* (0..10) */,
- { APC_UNCONSTRAINED, -1, -1, 0, 0 }
-};
asn_TYPE_descriptor_t asn_DEF_Int3 = {
"Int3",
"Int3",
@@ -610,15 +618,19 @@
}
+/*** <<< CTDEFS [Int4] >>> ***/
+
+static asn_per_constraints_t asn_PER_Int4_constr_1 = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 1, 10 } /* (1..10,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+
/*** <<< STAT-DEFS [Int4] >>> ***/
static ber_tlv_tag_t asn_DEF_Int4_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
};
-static asn_per_constraints_t asn_PER_Int4_constr_1 = {
- { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 1, 10 } /* (1..10,...) */,
- { APC_UNCONSTRAINED, -1, -1, 0, 0 }
-};
asn_TYPE_descriptor_t asn_DEF_Int4 = {
"Int4",
"Int4",
@@ -779,15 +791,19 @@
}
+/*** <<< CTDEFS [Int5] >>> ***/
+
+static asn_per_constraints_t asn_PER_Int5_constr_1 = {
+ { APC_CONSTRAINED, 0, 0, 5, 5 } /* (5..5) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+
/*** <<< STAT-DEFS [Int5] >>> ***/
static ber_tlv_tag_t asn_DEF_Int5_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
};
-static asn_per_constraints_t asn_PER_Int5_constr_1 = {
- { APC_CONSTRAINED, 0, 0, 5, 5 } /* (5..5) */,
- { APC_UNCONSTRAINED, -1, -1, 0, 0 }
-};
asn_TYPE_descriptor_t asn_DEF_Int5 = {
"Int5",
"Int5",
@@ -948,15 +964,19 @@
}
+/*** <<< CTDEFS [ExtensibleExtensions] >>> ***/
+
+static asn_per_constraints_t asn_PER_ExtensibleExtensions_constr_1 = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 256 } /* (1..256,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+
/*** <<< STAT-DEFS [ExtensibleExtensions] >>> ***/
static ber_tlv_tag_t asn_DEF_ExtensibleExtensions_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
};
-static asn_per_constraints_t asn_PER_ExtensibleExtensions_constr_1 = {
- { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 256 } /* (1..256,...) */,
- { APC_UNCONSTRAINED, -1, -1, 0, 0 }
-};
asn_TYPE_descriptor_t asn_DEF_ExtensibleExtensions = {
"ExtensibleExtensions",
"ExtensibleExtensions",
@@ -1271,15 +1291,19 @@
}
+/*** <<< CTDEFS [Str2] >>> ***/
+
+static asn_per_constraints_t asn_PER_Str2_constr_1 = {
+ { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */,
+ { APC_CONSTRAINED, 5, 5, 0, 30 } /* (SIZE(0..30)) */,
+ 0, 0 /* No PER character map necessary */
+};
+
/*** <<< STAT-DEFS [Str2] >>> ***/
static ber_tlv_tag_t asn_DEF_Str2_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (22 << 2))
};
-static asn_per_constraints_t asn_PER_Str2_constr_1 = {
- { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */,
- { APC_CONSTRAINED, 5, 5, 0, 30 } /* (SIZE(0..30)) */
-};
asn_TYPE_descriptor_t asn_DEF_Str2 = {
"Str2",
"Str2",
@@ -1385,6 +1409,16 @@
}
}
+static int asn_PER_MAP_Str3_1_v2c(unsigned int value) {
+ if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0]))
+ return -1;
+ return permitted_alphabet_table_1[value] - 1;
+}
+static int asn_PER_MAP_Str3_1_c2v(unsigned int code) {
+ if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0]))
+ return -1;
+ return permitted_alphabet_code2value_1[code];
+}
/*
* This type is implemented using Str2,
* so here we adjust the DEF accordingly.
@@ -1466,15 +1500,20 @@
}
+/*** <<< CTDEFS [Str3] >>> ***/
+
+static asn_per_constraints_t asn_PER_Str3_constr_1 = {
+ { APC_CONSTRAINED, 3, 3, 65, 102 } /* (65..102) */,
+ { APC_CONSTRAINED, 5, 5, 10, 27 } /* (SIZE(10..27)) */,
+ asn_PER_MAP_Str3_1_v2c, /* Value to PER code map */
+ asn_PER_MAP_Str3_1_c2v /* PER code to value map */
+};
+
/*** <<< STAT-DEFS [Str3] >>> ***/
static ber_tlv_tag_t asn_DEF_Str3_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (22 << 2))
};
-static asn_per_constraints_t asn_PER_Str3_constr_1 = {
- { APC_CONSTRAINED, 6, 6, 65, 102 } /* (65..102) */,
- { APC_CONSTRAINED, 5, 5, 10, 27 } /* (SIZE(10..27)) */
-};
asn_TYPE_descriptor_t asn_DEF_Str3 = {
"Str3",
"Str3",
@@ -1644,15 +1683,19 @@
}
+/*** <<< CTDEFS [Str4] >>> ***/
+
+static asn_per_constraints_t asn_PER_Str4_constr_1 = {
+ { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */,
+ { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 } /* (SIZE(0..MAX)) */,
+ 0, 0 /* No PER character map necessary */
+};
+
/*** <<< STAT-DEFS [Str4] >>> ***/
static ber_tlv_tag_t asn_DEF_Str4_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (22 << 2))
};
-static asn_per_constraints_t asn_PER_Str4_constr_1 = {
- { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */,
- { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 } /* (SIZE(0..MAX)) */
-};
asn_TYPE_descriptor_t asn_DEF_Str4 = {
"Str4",
"Str4",
@@ -1822,15 +1865,19 @@
}
+/*** <<< CTDEFS [PER-Visible] >>> ***/
+
+static asn_per_constraints_t asn_PER_PER_Visible_constr_1 = {
+ { APC_CONSTRAINED, 3, 3, 65, 70 } /* (65..70) */,
+ { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 } /* (SIZE(0..MAX)) */,
+ 0, 0 /* No PER character map necessary */
+};
+
/*** <<< STAT-DEFS [PER-Visible] >>> ***/
static ber_tlv_tag_t asn_DEF_PER_Visible_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (22 << 2))
};
-static asn_per_constraints_t asn_PER_PER_Visible_constr_1 = {
- { APC_CONSTRAINED, 3, 3, 65, 70 } /* (65..70) */,
- { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 } /* (SIZE(0..MAX)) */
-};
asn_TYPE_descriptor_t asn_DEF_PER_Visible = {
"PER-Visible",
"PER-Visible",
@@ -2000,15 +2047,19 @@
}
+/*** <<< CTDEFS [PER-Visible-2] >>> ***/
+
+static asn_per_constraints_t asn_PER_PER_Visible_2_constr_1 = {
+ { APC_CONSTRAINED, 1, 1, 69, 70 } /* (69..70) */,
+ { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 } /* (SIZE(0..MAX)) */,
+ 0, 0 /* No PER character map necessary */
+};
+
/*** <<< STAT-DEFS [PER-Visible-2] >>> ***/
static ber_tlv_tag_t asn_DEF_PER_Visible_2_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (22 << 2))
};
-static asn_per_constraints_t asn_PER_PER_Visible_2_constr_1 = {
- { APC_CONSTRAINED, 1, 1, 69, 70 } /* (69..70) */,
- { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 } /* (SIZE(0..MAX)) */
-};
asn_TYPE_descriptor_t asn_DEF_PER_Visible_2 = {
"PER-Visible-2",
"PER-Visible-2",
@@ -2178,15 +2229,19 @@
}
+/*** <<< CTDEFS [Not-PER-Visible-1] >>> ***/
+
+static asn_per_constraints_t asn_PER_Not_PER_Visible_1_constr_1 = {
+ { APC_CONSTRAINED, 3, 3, 65, 70 } /* (65..70) */,
+ { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 } /* (SIZE(0..MAX)) */,
+ 0, 0 /* No PER character map necessary */
+};
+
/*** <<< STAT-DEFS [Not-PER-Visible-1] >>> ***/
static ber_tlv_tag_t asn_DEF_Not_PER_Visible_1_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (22 << 2))
};
-static asn_per_constraints_t asn_PER_Not_PER_Visible_1_constr_1 = {
- { APC_CONSTRAINED, 3, 3, 65, 70 } /* (65..70) */,
- { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 } /* (SIZE(0..MAX)) */
-};
asn_TYPE_descriptor_t asn_DEF_Not_PER_Visible_1 = {
"Not-PER-Visible-1",
"Not-PER-Visible-1",
@@ -2356,15 +2411,19 @@
}
+/*** <<< CTDEFS [Not-PER-Visible-2] >>> ***/
+
+static asn_per_constraints_t asn_PER_Not_PER_Visible_2_constr_1 = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 } /* (SIZE(0..MAX)) */,
+ 0, 0 /* No PER character map necessary */
+};
+
/*** <<< STAT-DEFS [Not-PER-Visible-2] >>> ***/
static ber_tlv_tag_t asn_DEF_Not_PER_Visible_2_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (22 << 2))
};
-static asn_per_constraints_t asn_PER_Not_PER_Visible_2_constr_1 = {
- { APC_UNCONSTRAINED, -1, -1, 0, 0 },
- { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 } /* (SIZE(0..MAX)) */
-};
asn_TYPE_descriptor_t asn_DEF_Not_PER_Visible_2 = {
"Not-PER-Visible-2",
"Not-PER-Visible-2",
@@ -2534,15 +2593,19 @@
}
+/*** <<< CTDEFS [Not-PER-Visible-3] >>> ***/
+
+static asn_per_constraints_t asn_PER_Not_PER_Visible_3_constr_1 = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 } /* (SIZE(0..MAX)) */,
+ 0, 0 /* No PER character map necessary */
+};
+
/*** <<< STAT-DEFS [Not-PER-Visible-3] >>> ***/
static ber_tlv_tag_t asn_DEF_Not_PER_Visible_3_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (22 << 2))
};
-static asn_per_constraints_t asn_PER_Not_PER_Visible_3_constr_1 = {
- { APC_UNCONSTRAINED, -1, -1, 0, 0 },
- { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 } /* (SIZE(0..MAX)) */
-};
asn_TYPE_descriptor_t asn_DEF_Not_PER_Visible_3 = {
"Not-PER-Visible-3",
"Not-PER-Visible-3",
@@ -2715,15 +2778,19 @@
}
+/*** <<< CTDEFS [SIZE-but-not-FROM] >>> ***/
+
+static asn_per_constraints_t asn_PER_SIZE_but_not_FROM_constr_1 = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */,
+ 0, 0 /* No PER character map necessary */
+};
+
/*** <<< STAT-DEFS [SIZE-but-not-FROM] >>> ***/
static ber_tlv_tag_t asn_DEF_SIZE_but_not_FROM_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (22 << 2))
};
-static asn_per_constraints_t asn_PER_SIZE_but_not_FROM_constr_1 = {
- { APC_UNCONSTRAINED, -1, -1, 0, 0 },
- { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */
-};
asn_TYPE_descriptor_t asn_DEF_SIZE_but_not_FROM = {
"SIZE-but-not-FROM",
"SIZE-but-not-FROM",
@@ -2896,15 +2963,19 @@
}
+/*** <<< CTDEFS [SIZE-and-FROM] >>> ***/
+
+static asn_per_constraints_t asn_PER_SIZE_and_FROM_constr_1 = {
+ { APC_CONSTRAINED, 2, 2, 65, 68 } /* (65..68) */,
+ { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */,
+ 0, 0 /* No PER character map necessary */
+};
+
/*** <<< STAT-DEFS [SIZE-and-FROM] >>> ***/
static ber_tlv_tag_t asn_DEF_SIZE_and_FROM_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (22 << 2))
};
-static asn_per_constraints_t asn_PER_SIZE_and_FROM_constr_1 = {
- { APC_CONSTRAINED, 2, 2, 65, 68 } /* (65..68) */,
- { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */
-};
asn_TYPE_descriptor_t asn_DEF_SIZE_and_FROM = {
"SIZE-and-FROM",
"SIZE-and-FROM",
@@ -3074,15 +3145,19 @@
}
+/*** <<< CTDEFS [Neither-SIZE-nor-FROM] >>> ***/
+
+static asn_per_constraints_t asn_PER_Neither_SIZE_nor_FROM_constr_1 = {
+ { APC_CONSTRAINED, 3, 3, 65, 70 } /* (65..70) */,
+ { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 } /* (SIZE(0..MAX)) */,
+ 0, 0 /* No PER character map necessary */
+};
+
/*** <<< STAT-DEFS [Neither-SIZE-nor-FROM] >>> ***/
static ber_tlv_tag_t asn_DEF_Neither_SIZE_nor_FROM_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (22 << 2))
};
-static asn_per_constraints_t asn_PER_Neither_SIZE_nor_FROM_constr_1 = {
- { APC_CONSTRAINED, 3, 3, 65, 70 } /* (65..70) */,
- { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 } /* (SIZE(0..MAX)) */
-};
asn_TYPE_descriptor_t asn_DEF_Neither_SIZE_nor_FROM = {
"Neither-SIZE-nor-FROM",
"Neither-SIZE-nor-FROM",
@@ -3246,15 +3321,19 @@
}
+/*** <<< CTDEFS [Utf8-4] >>> ***/
+
+static asn_per_constraints_t asn_PER_Utf8_4_constr_1 = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+
/*** <<< STAT-DEFS [Utf8-4] >>> ***/
static ber_tlv_tag_t asn_DEF_Utf8_4_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (12 << 2))
};
-static asn_per_constraints_t asn_PER_Utf8_4_constr_1 = {
- { APC_UNCONSTRAINED, -1, -1, 0, 0 },
- { APC_UNCONSTRAINED, -1, -1, 0, 0 }
-};
asn_TYPE_descriptor_t asn_DEF_Utf8_4 = {
"Utf8-4",
"Utf8-4",
@@ -3313,12 +3392,6 @@
0,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41, /* abcdefghijklmno */
42,43,44,45,46,47,48,49,50,51,52, 0, 0, 0, 0, 0, /* pqrstuvwxyz */
};
-static int permitted_alphabet_code2value_1[52] = {
-65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,
-81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,
-103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,
-119,120,121,122,};
-
static int check_permitted_alphabet_1(const void *sptr) {
int *table = permitted_alphabet_table_1;
@@ -3452,15 +3525,19 @@
}
+/*** <<< CTDEFS [Utf8-3] >>> ***/
+
+static asn_per_constraints_t asn_PER_Utf8_3_constr_1 = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+
/*** <<< STAT-DEFS [Utf8-3] >>> ***/
static ber_tlv_tag_t asn_DEF_Utf8_3_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (12 << 2))
};
-static asn_per_constraints_t asn_PER_Utf8_3_constr_1 = {
- { APC_UNCONSTRAINED, -1, -1, 0, 0 },
- { APC_UNCONSTRAINED, -1, -1, 0, 0 }
-};
asn_TYPE_descriptor_t asn_DEF_Utf8_3 = {
"Utf8-3",
"Utf8-3",
@@ -3622,15 +3699,19 @@
}
+/*** <<< CTDEFS [Utf8-2] >>> ***/
+
+static asn_per_constraints_t asn_PER_Utf8_2_constr_1 = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+
/*** <<< STAT-DEFS [Utf8-2] >>> ***/
static ber_tlv_tag_t asn_DEF_Utf8_2_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (12 << 2))
};
-static asn_per_constraints_t asn_PER_Utf8_2_constr_1 = {
- { APC_UNCONSTRAINED, -1, -1, 0, 0 },
- { APC_UNCONSTRAINED, -1, -1, 0, 0 }
-};
asn_TYPE_descriptor_t asn_DEF_Utf8_2 = {
"Utf8-2",
"Utf8-2",
@@ -4223,6 +4304,29 @@
}
+/*** <<< CTDEFS [Sequence] >>> ***/
+
+static asn_per_constraints_t asn_PER_enum_c_constr_6 = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_int1_c_constr_2 = {
+ { APC_SEMI_CONSTRAINED, -1, -1, -2, 0 } /* (-2..MAX) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_int4_c_constr_4 = {
+ { APC_CONSTRAINED, 2, 2, 5, 7 } /* (5..7) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_int5_c_constr_13 = {
+ { APC_CONSTRAINED, 0, 0, 5, 5 } /* (5..5) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+
/*** <<< STAT-DEFS [Sequence] >>> ***/
static int asn_DFL_2_set_3(int set_value, void **sptr) {
@@ -4285,10 +4389,6 @@
static ber_tlv_tag_t asn_DEF_enum_c_tags_6[] = {
(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
};
-static asn_per_constraints_t asn_PER_enum_c_constr_6 = {
- { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */,
- { APC_UNCONSTRAINED, -1, -1, 0, 0 }
-};
static /* Use -fall-defs-global to expose */
asn_TYPE_descriptor_t asn_DEF_enum_c_6 = {
"enum-c",
@@ -4314,29 +4414,13 @@
&asn_SPC_enum_c_specs_6 /* Additional specs */
};
-static asn_per_constraints_t asn_PER_memb_int1_c_constr_2 = {
- { APC_SEMI_CONSTRAINED, -1, -1, -2, 0 } /* (-2..MAX) */,
- { APC_UNCONSTRAINED, -1, -1, 0, 0 }
-};
-static asn_per_constraints_t asn_PER_memb_int4_c_constr_4 = {
- { APC_CONSTRAINED, 2, 2, 5, 7 } /* (5..7) */,
- { APC_UNCONSTRAINED, -1, -1, 0, 0 }
-};
-static asn_per_constraints_t asn_PER_memb_enum_c_constr_6 = {
- { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */,
- { APC_UNCONSTRAINED, -1, -1, 0, 0 }
-};
-static asn_per_constraints_t asn_PER_memb_int5_c_constr_13 = {
- { APC_CONSTRAINED, 0, 0, 5, 5 } /* (5..5) */,
- { APC_UNCONSTRAINED, -1, -1, 0, 0 }
-};
static asn_TYPE_member_t asn_MBR_Sequence_1[] = {
{ ATF_POINTER, 1, offsetof(struct Sequence, int1_c),
.tag = (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
.tag_mode = 0,
.type = &asn_DEF_Int1,
.memb_constraints = memb_int1_c_constraint_1,
- .per_constraints = &asn_PER_memb_int1_c_constr_2,
+ .per_constraints = &asn_PER_int1_c_constr_2,
.default_value = asn_DFL_2_set_3, /* DEFAULT 3 */
.name = "int1-c"
},
@@ -4354,7 +4438,7 @@
.tag_mode = 0,
.type = &asn_DEF_Int4,
.memb_constraints = memb_int4_c_constraint_1,
- .per_constraints = &asn_PER_memb_int4_c_constr_4,
+ .per_constraints = &asn_PER_int4_c_constr_4,
.default_value = 0,
.name = "int4-c"
},
@@ -4372,7 +4456,7 @@
.tag_mode = 0,
.type = &asn_DEF_enum_c_6,
.memb_constraints = 0, /* Defer constraints checking to the member type */
- .per_constraints = &asn_PER_memb_enum_c_constr_6,
+ .per_constraints = &asn_PER_enum_c_constr_6,
.default_value = 0,
.name = "enum-c"
},
@@ -4390,7 +4474,7 @@
.tag_mode = 0,
.type = &asn_DEF_Int5,
.memb_constraints = memb_int5_c_constraint_1,
- .per_constraints = &asn_PER_memb_int5_c_constr_13,
+ .per_constraints = &asn_PER_int5_c_constr_13,
.default_value = 0,
.name = "int5-c"
},
@@ -4470,6 +4554,14 @@
#include "Sequence.h"
+/*** <<< CTDEFS [SequenceOf] >>> ***/
+
+static asn_per_constraints_t asn_PER_SequenceOf_constr_1 = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 1, 1, 1, 2 } /* (SIZE(1..2)) */,
+ 0, 0 /* No PER value map */
+};
+
/*** <<< STAT-DEFS [SequenceOf] >>> ***/
static asn_TYPE_member_t asn_MBR_SequenceOf_1[] = {
@@ -4491,10 +4583,6 @@
offsetof(struct SequenceOf, _asn_ctx),
0, /* XER encoding is XMLDelimitedItemList */
};
-static asn_per_constraints_t asn_PER_SequenceOf_constr_1 = {
- { APC_UNCONSTRAINED, -1, -1, 0, 0 },
- { APC_CONSTRAINED, 1, 1, 1, 2 } /* (SIZE(1..2)) */
-};
asn_TYPE_descriptor_t asn_DEF_SequenceOf = {
"SequenceOf",
"SequenceOf",
@@ -4640,6 +4728,14 @@
}
+/*** <<< CTDEFS [Enum0] >>> ***/
+
+static asn_per_constraints_t asn_PER_Enum0_constr_1 = {
+ { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+
/*** <<< STAT-DEFS [Enum0] >>> ***/
static asn_INTEGER_enum_map_t asn_MAP_Enum0_value2enum_1[] = {
@@ -4660,10 +4756,6 @@
static ber_tlv_tag_t asn_DEF_Enum0_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
};
-static asn_per_constraints_t asn_PER_Enum0_constr_1 = {
- { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */,
- { APC_UNCONSTRAINED, -1, -1, 0, 0 }
-};
asn_TYPE_descriptor_t asn_DEF_Enum0 = {
"Enum0",
"Enum0",
@@ -4825,6 +4917,14 @@
}
+/*** <<< CTDEFS [Enum1] >>> ***/
+
+static asn_per_constraints_t asn_PER_Enum1_constr_1 = {
+ { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+
/*** <<< STAT-DEFS [Enum1] >>> ***/
static asn_INTEGER_enum_map_t asn_MAP_Enum1_value2enum_1[] = {
@@ -4845,10 +4945,6 @@
static ber_tlv_tag_t asn_DEF_Enum1_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
};
-static asn_per_constraints_t asn_PER_Enum1_constr_1 = {
- { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */,
- { APC_UNCONSTRAINED, -1, -1, 0, 0 }
-};
asn_TYPE_descriptor_t asn_DEF_Enum1 = {
"Enum1",
"Enum1",
@@ -4959,6 +5055,16 @@
}
}
+static int asn_PER_MAP_Identifier_1_v2c(unsigned int value) {
+ if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0]))
+ return -1;
+ return permitted_alphabet_table_1[value] - 1;
+}
+static int asn_PER_MAP_Identifier_1_c2v(unsigned int code) {
+ if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0]))
+ return -1;
+ return permitted_alphabet_code2value_1[code];
+}
/*
* This type is implemented using VisibleString,
* so here we adjust the DEF accordingly.
@@ -5040,15 +5146,20 @@
}
+/*** <<< CTDEFS [Identifier] >>> ***/
+
+static asn_per_constraints_t asn_PER_Identifier_constr_1 = {
+ { APC_CONSTRAINED, 6, 6, 36, 122 } /* (36..122) */,
+ { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */,
+ asn_PER_MAP_Identifier_1_v2c, /* Value to PER code map */
+ asn_PER_MAP_Identifier_1_c2v /* PER code to value map */
+};
+
/*** <<< STAT-DEFS [Identifier] >>> ***/
static ber_tlv_tag_t asn_DEF_Identifier_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (26 << 2))
};
-static asn_per_constraints_t asn_PER_Identifier_constr_1 = {
- { APC_CONSTRAINED, 7, 7, 36, 122 } /* (36..122) */,
- { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */
-};
asn_TYPE_descriptor_t asn_DEF_Identifier = {
"Identifier",
"Identifier",