Move type operations to another structure
Every type has free, print, check_constraints, ber_decoder, der_encoder,
xer_decoder, xer_encoder, uper_decoder, uper_encoder and outmost_tag
operations. We move them out to a separate structure asn_TYPE_operation_t.
Combined with previous logic simplification, these operations are based
on ASN.1 basic types, constructed types and string types. So we can
reduce the space occupied by asn_TYPE_descriptor_t variables.
diff --git a/tests/tests-asn1c-compiler/138-oer-constraints-OK.asn1.-Pgen-OER b/tests/tests-asn1c-compiler/138-oer-constraints-OK.asn1.-Pgen-OER
index 0d74625..3dd913e 100644
--- a/tests/tests-asn1c-compiler/138-oer-constraints-OK.asn1.-Pgen-OER
+++ b/tests/tests-asn1c-compiler/138-oer-constraints-OK.asn1.-Pgen-OER
@@ -35,18 +35,8 @@
asn_TYPE_descriptor_t asn_DEF_A_noc = {
"A-noc",
"A-noc",
- NativeInteger_free,
- NativeInteger_print,
- NativeInteger_compare,
+ &asn_OP_NativeInteger,
NativeInteger_constraint,
- NativeInteger_decode_ber,
- NativeInteger_encode_der,
- NativeInteger_decode_xer,
- NativeInteger_encode_xer,
- NativeInteger_decode_oer,
- NativeInteger_encode_oer,
- 0, 0, /* No PER support, use "-gen-PER" to enable */
- 0, /* Use generic outmost tag fetcher */
asn_DEF_A_noc_tags_1,
sizeof(asn_DEF_A_noc_tags_1)
/sizeof(asn_DEF_A_noc_tags_1[0]), /* 1 */
@@ -127,18 +117,8 @@
asn_TYPE_descriptor_t asn_DEF_B_0_0 = {
"B-0-0",
"B-0-0",
- NativeInteger_free,
- NativeInteger_print,
- NativeInteger_compare,
+ &asn_OP_NativeInteger,
B_0_0_constraint,
- NativeInteger_decode_ber,
- NativeInteger_encode_der,
- NativeInteger_decode_xer,
- NativeInteger_encode_xer,
- NativeInteger_decode_oer,
- NativeInteger_encode_oer,
- 0, 0, /* No PER support, use "-gen-PER" to enable */
- 0, /* Use generic outmost tag fetcher */
asn_DEF_B_0_0_tags_1,
sizeof(asn_DEF_B_0_0_tags_1)
/sizeof(asn_DEF_B_0_0_tags_1[0]), /* 1 */
@@ -219,18 +199,8 @@
asn_TYPE_descriptor_t asn_DEF_C_1_2 = {
"C-1-2",
"C-1-2",
- NativeInteger_free,
- NativeInteger_print,
- NativeInteger_compare,
+ &asn_OP_NativeInteger,
C_1_2_constraint,
- NativeInteger_decode_ber,
- NativeInteger_encode_der,
- NativeInteger_decode_xer,
- NativeInteger_encode_xer,
- NativeInteger_decode_oer,
- NativeInteger_encode_oer,
- 0, 0, /* No PER support, use "-gen-PER" to enable */
- 0, /* Use generic outmost tag fetcher */
asn_DEF_C_1_2_tags_1,
sizeof(asn_DEF_C_1_2_tags_1)
/sizeof(asn_DEF_C_1_2_tags_1[0]), /* 1 */
@@ -311,18 +281,8 @@
asn_TYPE_descriptor_t asn_DEF_D_inv = {
"D-inv",
"D-inv",
- NativeInteger_free,
- NativeInteger_print,
- NativeInteger_compare,
+ &asn_OP_NativeInteger,
D_inv_constraint,
- NativeInteger_decode_ber,
- NativeInteger_encode_der,
- NativeInteger_decode_xer,
- NativeInteger_encode_xer,
- NativeInteger_decode_oer,
- NativeInteger_encode_oer,
- 0, 0, /* No PER support, use "-gen-PER" to enable */
- 0, /* Use generic outmost tag fetcher */
asn_DEF_D_inv_tags_1,
sizeof(asn_DEF_D_inv_tags_1)
/sizeof(asn_DEF_D_inv_tags_1[0]), /* 1 */
@@ -403,18 +363,8 @@
asn_TYPE_descriptor_t asn_DEF_E_2_5 = {
"E-2-5",
"E-2-5",
- NativeInteger_free,
- NativeInteger_print,
- NativeInteger_compare,
+ &asn_OP_NativeInteger,
E_2_5_constraint,
- NativeInteger_decode_ber,
- NativeInteger_encode_der,
- NativeInteger_decode_xer,
- NativeInteger_encode_xer,
- NativeInteger_decode_oer,
- NativeInteger_encode_oer,
- 0, 0, /* No PER support, use "-gen-PER" to enable */
- 0, /* Use generic outmost tag fetcher */
asn_DEF_E_2_5_tags_1,
sizeof(asn_DEF_E_2_5_tags_1)
/sizeof(asn_DEF_E_2_5_tags_1[0]), /* 1 */
@@ -495,18 +445,8 @@
asn_TYPE_descriptor_t asn_DEF_F_inv = {
"F-inv",
"F-inv",
- NativeInteger_free,
- NativeInteger_print,
- NativeInteger_compare,
+ &asn_OP_NativeInteger,
F_inv_constraint,
- NativeInteger_decode_ber,
- NativeInteger_encode_der,
- NativeInteger_decode_xer,
- NativeInteger_encode_xer,
- NativeInteger_decode_oer,
- NativeInteger_encode_oer,
- 0, 0, /* No PER support, use "-gen-PER" to enable */
- 0, /* Use generic outmost tag fetcher */
asn_DEF_F_inv_tags_1,
sizeof(asn_DEF_F_inv_tags_1)
/sizeof(asn_DEF_F_inv_tags_1[0]), /* 1 */
@@ -587,18 +527,8 @@
asn_TYPE_descriptor_t asn_DEF_G_3_3 = {
"G-3-3",
"G-3-3",
- NativeInteger_free,
- NativeInteger_print,
- NativeInteger_compare,
+ &asn_OP_NativeInteger,
G_3_3_constraint,
- NativeInteger_decode_ber,
- NativeInteger_encode_der,
- NativeInteger_decode_xer,
- NativeInteger_encode_xer,
- NativeInteger_decode_oer,
- NativeInteger_encode_oer,
- 0, 0, /* No PER support, use "-gen-PER" to enable */
- 0, /* Use generic outmost tag fetcher */
asn_DEF_G_3_3_tags_1,
sizeof(asn_DEF_G_3_3_tags_1)
/sizeof(asn_DEF_G_3_3_tags_1[0]), /* 1 */
@@ -679,18 +609,8 @@
asn_TYPE_descriptor_t asn_DEF_H_4_5 = {
"H-4-5",
"H-4-5",
- NativeInteger_free,
- NativeInteger_print,
- NativeInteger_compare,
+ &asn_OP_NativeInteger,
H_4_5_constraint,
- NativeInteger_decode_ber,
- NativeInteger_encode_der,
- NativeInteger_decode_xer,
- NativeInteger_encode_xer,
- NativeInteger_decode_oer,
- NativeInteger_encode_oer,
- 0, 0, /* No PER support, use "-gen-PER" to enable */
- 0, /* Use generic outmost tag fetcher */
asn_DEF_H_4_5_tags_1,
sizeof(asn_DEF_H_4_5_tags_1)
/sizeof(asn_DEF_H_4_5_tags_1[0]), /* 1 */
@@ -771,18 +691,8 @@
asn_TYPE_descriptor_t asn_DEF_I_0_5 = {
"I-0-5",
"I-0-5",
- NativeInteger_free,
- NativeInteger_print,
- NativeInteger_compare,
+ &asn_OP_NativeInteger,
I_0_5_constraint,
- NativeInteger_decode_ber,
- NativeInteger_encode_der,
- NativeInteger_decode_xer,
- NativeInteger_encode_xer,
- NativeInteger_decode_oer,
- NativeInteger_encode_oer,
- 0, 0, /* No PER support, use "-gen-PER" to enable */
- 0, /* Use generic outmost tag fetcher */
asn_DEF_I_0_5_tags_1,
sizeof(asn_DEF_I_0_5_tags_1)
/sizeof(asn_DEF_I_0_5_tags_1[0]), /* 1 */
@@ -863,18 +773,8 @@
asn_TYPE_descriptor_t asn_DEF_J_4_9 = {
"J-4-9",
"J-4-9",
- NativeInteger_free,
- NativeInteger_print,
- NativeInteger_compare,
+ &asn_OP_NativeInteger,
J_4_9_constraint,
- NativeInteger_decode_ber,
- NativeInteger_encode_der,
- NativeInteger_decode_xer,
- NativeInteger_encode_xer,
- NativeInteger_decode_oer,
- NativeInteger_encode_oer,
- 0, 0, /* No PER support, use "-gen-PER" to enable */
- 0, /* Use generic outmost tag fetcher */
asn_DEF_J_4_9_tags_1,
sizeof(asn_DEF_J_4_9_tags_1)
/sizeof(asn_DEF_J_4_9_tags_1[0]), /* 1 */
@@ -955,18 +855,8 @@
asn_TYPE_descriptor_t asn_DEF_K_inv = {
"K-inv",
"K-inv",
- NativeInteger_free,
- NativeInteger_print,
- NativeInteger_compare,
+ &asn_OP_NativeInteger,
K_inv_constraint,
- NativeInteger_decode_ber,
- NativeInteger_encode_der,
- NativeInteger_decode_xer,
- NativeInteger_encode_xer,
- NativeInteger_decode_oer,
- NativeInteger_encode_oer,
- 0, 0, /* No PER support, use "-gen-PER" to enable */
- 0, /* Use generic outmost tag fetcher */
asn_DEF_K_inv_tags_1,
sizeof(asn_DEF_K_inv_tags_1)
/sizeof(asn_DEF_K_inv_tags_1[0]), /* 1 */
@@ -1047,18 +937,8 @@
asn_TYPE_descriptor_t asn_DEF_L_0_5 = {
"L-0-5",
"L-0-5",
- NativeInteger_free,
- NativeInteger_print,
- NativeInteger_compare,
+ &asn_OP_NativeInteger,
L_0_5_constraint,
- NativeInteger_decode_ber,
- NativeInteger_encode_der,
- NativeInteger_decode_xer,
- NativeInteger_encode_xer,
- NativeInteger_decode_oer,
- NativeInteger_encode_oer,
- 0, 0, /* No PER support, use "-gen-PER" to enable */
- 0, /* Use generic outmost tag fetcher */
asn_DEF_L_0_5_tags_1,
sizeof(asn_DEF_L_0_5_tags_1)
/sizeof(asn_DEF_L_0_5_tags_1[0]), /* 1 */
@@ -1139,18 +1019,8 @@
asn_TYPE_descriptor_t asn_DEF_M_inv = {
"M-inv",
"M-inv",
- NativeInteger_free,
- NativeInteger_print,
- NativeInteger_compare,
+ &asn_OP_NativeInteger,
M_inv_constraint,
- NativeInteger_decode_ber,
- NativeInteger_encode_der,
- NativeInteger_decode_xer,
- NativeInteger_encode_xer,
- NativeInteger_decode_oer,
- NativeInteger_encode_oer,
- 0, 0, /* No PER support, use "-gen-PER" to enable */
- 0, /* Use generic outmost tag fetcher */
asn_DEF_M_inv_tags_1,
sizeof(asn_DEF_M_inv_tags_1)
/sizeof(asn_DEF_M_inv_tags_1[0]), /* 1 */
@@ -1231,18 +1101,8 @@
asn_TYPE_descriptor_t asn_DEF_N_inv = {
"N-inv",
"N-inv",
- NativeInteger_free,
- NativeInteger_print,
- NativeInteger_compare,
+ &asn_OP_NativeInteger,
N_inv_constraint,
- NativeInteger_decode_ber,
- NativeInteger_encode_der,
- NativeInteger_decode_xer,
- NativeInteger_encode_xer,
- NativeInteger_decode_oer,
- NativeInteger_encode_oer,
- 0, 0, /* No PER support, use "-gen-PER" to enable */
- 0, /* Use generic outmost tag fetcher */
asn_DEF_N_inv_tags_1,
sizeof(asn_DEF_N_inv_tags_1)
/sizeof(asn_DEF_N_inv_tags_1[0]), /* 1 */
@@ -1323,18 +1183,8 @@
asn_TYPE_descriptor_t asn_DEF_O_inv = {
"O-inv",
"O-inv",
- NativeInteger_free,
- NativeInteger_print,
- NativeInteger_compare,
+ &asn_OP_NativeInteger,
O_inv_constraint,
- NativeInteger_decode_ber,
- NativeInteger_encode_der,
- NativeInteger_decode_xer,
- NativeInteger_encode_xer,
- NativeInteger_decode_oer,
- NativeInteger_encode_oer,
- 0, 0, /* No PER support, use "-gen-PER" to enable */
- 0, /* Use generic outmost tag fetcher */
asn_DEF_O_inv_tags_1,
sizeof(asn_DEF_O_inv_tags_1)
/sizeof(asn_DEF_O_inv_tags_1[0]), /* 1 */