From 61b40d81b7cd8c5133a9bd16a7026c8f333f772b Mon Sep 17 00:00:00 2001 From: Lev Walkin Date: Sat, 23 Oct 2004 15:07:45 +0000 Subject: CHOICE XER decoder --- libasn1compiler/asn1c_C.c | 14 +++++++++----- tests/19-param-OK.asn1.-P | 4 ++-- tests/31-set-of-OK.asn1.-P | 6 +++--- tests/32-sequence-of-OK.asn1.-P | 2 +- tests/39-sequence-of-OK.asn1.-P | 4 ++-- tests/42-real-life-OK.asn1.-PR | 12 ++++++------ tests/43-recursion-OK.asn1.-P | 4 ++-- tests/44-choice-in-sequence-OK.asn1.-P | 8 ++++---- tests/46-redefine-OK.asn1.-PR | 2 +- tests/47-set-ext-OK.asn1.-P | 4 ++-- tests/60-any-OK.asn1.-P | 4 ++-- tests/65-multi-tag-OK.asn1.-P | 2 +- tests/65-multi-tag-OK.asn1.-Pfnative-types | 2 +- 13 files changed, 36 insertions(+), 32 deletions(-) diff --git a/libasn1compiler/asn1c_C.c b/libasn1compiler/asn1c_C.c index 5b9eae69..2cbe258c 100644 --- a/libasn1compiler/asn1c_C.c +++ b/libasn1compiler/asn1c_C.c @@ -1508,11 +1508,15 @@ emit_type_DEF(arg_t *arg, asn1p_expr_t *expr, enum tvm_compat tv_mode, int tags_ OUT("%s_constraint,\n", p); OUT("%s_decode_ber,\n", p); OUT("%s_encode_der,\n", p); - if(!(expr->expr_type & ASN_CONSTR_MASK) - && (expr->expr_type != ASN_CONSTR_SEQUENCE)) - OUT("%s_decode_xer,\n", p); - else - OUT("0,\t\t\t\t/* Not implemented yet */\n"); + switch(expr->expr_type) { + case ASN_CONSTR_SET: + case ASN_CONSTR_SET_OF: + case ASN_CONSTR_SEQUENCE_OF: + OUT("0,\t\t\t\t/* Not implemented yet */\n"); + break; + default: + OUT("%s_decode_xer,\n", p); + } OUT("%s_encode_xer,\n", p); p = MKID(expr->Identifier); diff --git a/tests/19-param-OK.asn1.-P b/tests/19-param-OK.asn1.-P index 0d07f8b2..fe64c771 100644 --- a/tests/19-param-OK.asn1.-P +++ b/tests/19-param-OK.asn1.-P @@ -114,7 +114,7 @@ asn_TYPE_descriptor_t asn_DEF_toBeSigned = { SEQUENCE_constraint, SEQUENCE_decode_ber, SEQUENCE_encode_der, - 0, /* Not implemented yet */ + SEQUENCE_decode_xer, SEQUENCE_encode_xer, 0, /* Use generic outmost tag fetcher */ asn_DEF_toBeSigned_tags, @@ -175,7 +175,7 @@ asn_TYPE_descriptor_t asn_DEF_Certificate = { SEQUENCE_constraint, SEQUENCE_decode_ber, SEQUENCE_encode_der, - 0, /* Not implemented yet */ + SEQUENCE_decode_xer, SEQUENCE_encode_xer, 0, /* Use generic outmost tag fetcher */ asn_DEF_Certificate_tags, diff --git a/tests/31-set-of-OK.asn1.-P b/tests/31-set-of-OK.asn1.-P index c245bf88..e9ccac14 100644 --- a/tests/31-set-of-OK.asn1.-P +++ b/tests/31-set-of-OK.asn1.-P @@ -122,7 +122,7 @@ asn_TYPE_descriptor_t asn_DEF_Tree = { SEQUENCE_constraint, SEQUENCE_decode_ber, SEQUENCE_encode_der, - 0, /* Not implemented yet */ + SEQUENCE_decode_xer, SEQUENCE_encode_xer, 0, /* Use generic outmost tag fetcher */ asn_DEF_Tree_tags, @@ -289,7 +289,7 @@ asn_TYPE_descriptor_t asn_DEF_anything_member = { SEQUENCE_constraint, SEQUENCE_decode_ber, SEQUENCE_encode_der, - 0, /* Not implemented yet */ + SEQUENCE_decode_xer, SEQUENCE_encode_xer, 0, /* Use generic outmost tag fetcher */ asn_DEF_anything_member_tags, @@ -382,7 +382,7 @@ asn_TYPE_descriptor_t asn_DEF_other = { CHOICE_constraint, CHOICE_decode_ber, CHOICE_encode_der, - 0, /* Not implemented yet */ + CHOICE_decode_xer, CHOICE_encode_xer, CHOICE_outmost_tag, 0, /* No effective tags (pointer) */ diff --git a/tests/32-sequence-of-OK.asn1.-P b/tests/32-sequence-of-OK.asn1.-P index 5c2c9b29..46c7ea82 100644 --- a/tests/32-sequence-of-OK.asn1.-P +++ b/tests/32-sequence-of-OK.asn1.-P @@ -167,7 +167,7 @@ asn_TYPE_descriptor_t asn_DEF_Error = { SEQUENCE_constraint, SEQUENCE_decode_ber, SEQUENCE_encode_der, - 0, /* Not implemented yet */ + SEQUENCE_decode_xer, SEQUENCE_encode_xer, 0, /* Use generic outmost tag fetcher */ asn_DEF_Error_tags, diff --git a/tests/39-sequence-of-OK.asn1.-P b/tests/39-sequence-of-OK.asn1.-P index 1fecb6f5..76aded23 100644 --- a/tests/39-sequence-of-OK.asn1.-P +++ b/tests/39-sequence-of-OK.asn1.-P @@ -108,7 +108,7 @@ asn_TYPE_descriptor_t asn_DEF_T = { SEQUENCE_constraint, SEQUENCE_decode_ber, SEQUENCE_encode_der, - 0, /* Not implemented yet */ + SEQUENCE_decode_xer, SEQUENCE_encode_xer, 0, /* Use generic outmost tag fetcher */ asn_DEF_T_tags, @@ -185,7 +185,7 @@ asn_TYPE_descriptor_t asn_DEF_T2 = { SEQUENCE_constraint, SEQUENCE_decode_ber, SEQUENCE_encode_der, - 0, /* Not implemented yet */ + SEQUENCE_decode_xer, SEQUENCE_encode_xer, 0, /* Use generic outmost tag fetcher */ asn_DEF_T2_tags, diff --git a/tests/42-real-life-OK.asn1.-PR b/tests/42-real-life-OK.asn1.-PR index 951e6693..974c0160 100644 --- a/tests/42-real-life-OK.asn1.-PR +++ b/tests/42-real-life-OK.asn1.-PR @@ -144,7 +144,7 @@ asn_TYPE_descriptor_t asn_DEF_LogLine = { SEQUENCE_constraint, SEQUENCE_decode_ber, SEQUENCE_encode_der, - 0, /* Not implemented yet */ + SEQUENCE_decode_xer, SEQUENCE_encode_xer, 0, /* Use generic outmost tag fetcher */ asn_DEF_LogLine_tags, @@ -294,7 +294,7 @@ asn_TYPE_descriptor_t asn_DEF_VariablePartSet = { SEQUENCE_constraint, SEQUENCE_decode_ber, SEQUENCE_encode_der, - 0, /* Not implemented yet */ + SEQUENCE_decode_xer, SEQUENCE_encode_xer, 0, /* Use generic outmost tag fetcher */ asn_DEF_VariablePartSet_tags, @@ -474,7 +474,7 @@ asn_TYPE_descriptor_t asn_DEF_vrange = { SEQUENCE_constraint, SEQUENCE_decode_ber, SEQUENCE_encode_der, - 0, /* Not implemented yet */ + SEQUENCE_decode_xer, SEQUENCE_encode_xer, 0, /* Use generic outmost tag fetcher */ asn_DEF_vrange_tags, @@ -525,7 +525,7 @@ asn_TYPE_descriptor_t asn_DEF_VariablePart = { CHOICE_constraint, CHOICE_decode_ber, CHOICE_encode_der, - 0, /* Not implemented yet */ + CHOICE_decode_xer, CHOICE_encode_xer, CHOICE_outmost_tag, 0, /* No effective tags (pointer) */ @@ -671,7 +671,7 @@ asn_TYPE_descriptor_t asn_DEF_notify = { SEQUENCE_constraint, SEQUENCE_decode_ber, SEQUENCE_encode_der, - 0, /* Not implemented yet */ + SEQUENCE_decode_xer, SEQUENCE_encode_xer, 0, /* Use generic outmost tag fetcher */ asn_DEF_notify_tags, @@ -724,7 +724,7 @@ asn_TYPE_descriptor_t asn_DEF_ActionItem = { SEQUENCE_constraint, SEQUENCE_decode_ber, SEQUENCE_encode_der, - 0, /* Not implemented yet */ + SEQUENCE_decode_xer, SEQUENCE_encode_xer, 0, /* Use generic outmost tag fetcher */ asn_DEF_ActionItem_tags, diff --git a/tests/43-recursion-OK.asn1.-P b/tests/43-recursion-OK.asn1.-P index 004e0f05..9e8d4074 100644 --- a/tests/43-recursion-OK.asn1.-P +++ b/tests/43-recursion-OK.asn1.-P @@ -175,7 +175,7 @@ asn_TYPE_descriptor_t asn_DEF_Test_structure_1 = { SEQUENCE_constraint, SEQUENCE_decode_ber, SEQUENCE_encode_der, - 0, /* Not implemented yet */ + SEQUENCE_decode_xer, SEQUENCE_encode_xer, 0, /* Use generic outmost tag fetcher */ asn_DEF_Test_structure_1_tags, @@ -330,7 +330,7 @@ asn_TYPE_descriptor_t asn_DEF_Choice_1 = { CHOICE_constraint, CHOICE_decode_ber, CHOICE_encode_der, - 0, /* Not implemented yet */ + CHOICE_decode_xer, CHOICE_encode_xer, CHOICE_outmost_tag, 0, /* No effective tags (pointer) */ diff --git a/tests/44-choice-in-sequence-OK.asn1.-P b/tests/44-choice-in-sequence-OK.asn1.-P index bb51a570..77886f10 100644 --- a/tests/44-choice-in-sequence-OK.asn1.-P +++ b/tests/44-choice-in-sequence-OK.asn1.-P @@ -106,7 +106,7 @@ asn_TYPE_descriptor_t asn_DEF_e = { CHOICE_constraint, CHOICE_decode_ber, CHOICE_encode_der, - 0, /* Not implemented yet */ + CHOICE_decode_xer, CHOICE_encode_xer, CHOICE_outmost_tag, 0, /* No effective tags (pointer) */ @@ -156,7 +156,7 @@ asn_TYPE_descriptor_t asn_DEF_h = { CHOICE_constraint, CHOICE_decode_ber, CHOICE_encode_der, - 0, /* Not implemented yet */ + CHOICE_decode_xer, CHOICE_encode_xer, CHOICE_outmost_tag, 0, /* No effective tags (pointer) */ @@ -223,7 +223,7 @@ asn_TYPE_descriptor_t asn_DEF_b = { CHOICE_constraint, CHOICE_decode_ber, CHOICE_encode_der, - 0, /* Not implemented yet */ + CHOICE_decode_xer, CHOICE_encode_xer, CHOICE_outmost_tag, 0, /* No effective tags (pointer) */ @@ -279,7 +279,7 @@ asn_TYPE_descriptor_t asn_DEF_T = { SEQUENCE_constraint, SEQUENCE_decode_ber, SEQUENCE_encode_der, - 0, /* Not implemented yet */ + SEQUENCE_decode_xer, SEQUENCE_encode_xer, 0, /* Use generic outmost tag fetcher */ asn_DEF_T_tags, diff --git a/tests/46-redefine-OK.asn1.-PR b/tests/46-redefine-OK.asn1.-PR index 5ba6bccf..2dc369cd 100644 --- a/tests/46-redefine-OK.asn1.-PR +++ b/tests/46-redefine-OK.asn1.-PR @@ -70,7 +70,7 @@ asn_TYPE_descriptor_t asn_DEF_ConstructedType = { SEQUENCE_constraint, SEQUENCE_decode_ber, SEQUENCE_encode_der, - 0, /* Not implemented yet */ + SEQUENCE_decode_xer, SEQUENCE_encode_xer, 0, /* Use generic outmost tag fetcher */ asn_DEF_ConstructedType_tags, diff --git a/tests/47-set-ext-OK.asn1.-P b/tests/47-set-ext-OK.asn1.-P index 8c2bc270..cdd6f530 100644 --- a/tests/47-set-ext-OK.asn1.-P +++ b/tests/47-set-ext-OK.asn1.-P @@ -237,7 +237,7 @@ asn_TYPE_descriptor_t asn_DEF_T3 = { CHOICE_constraint, CHOICE_decode_ber, CHOICE_encode_der, - 0, /* Not implemented yet */ + CHOICE_decode_xer, CHOICE_encode_xer, CHOICE_outmost_tag, 0, /* No effective tags (pointer) */ @@ -312,7 +312,7 @@ asn_TYPE_descriptor_t asn_DEF_T4 = { CHOICE_constraint, CHOICE_decode_ber, CHOICE_encode_der, - 0, /* Not implemented yet */ + CHOICE_decode_xer, CHOICE_encode_xer, CHOICE_outmost_tag, 0, /* No effective tags (pointer) */ diff --git a/tests/60-any-OK.asn1.-P b/tests/60-any-OK.asn1.-P index f740e8a8..4f55417c 100644 --- a/tests/60-any-OK.asn1.-P +++ b/tests/60-any-OK.asn1.-P @@ -60,7 +60,7 @@ asn_TYPE_descriptor_t asn_DEF_T1 = { SEQUENCE_constraint, SEQUENCE_decode_ber, SEQUENCE_encode_der, - 0, /* Not implemented yet */ + SEQUENCE_decode_xer, SEQUENCE_encode_xer, 0, /* Use generic outmost tag fetcher */ asn_DEF_T1_tags, @@ -137,7 +137,7 @@ asn_TYPE_descriptor_t asn_DEF_T2 = { SEQUENCE_constraint, SEQUENCE_decode_ber, SEQUENCE_encode_der, - 0, /* Not implemented yet */ + SEQUENCE_decode_xer, SEQUENCE_encode_xer, 0, /* Use generic outmost tag fetcher */ asn_DEF_T2_tags, diff --git a/tests/65-multi-tag-OK.asn1.-P b/tests/65-multi-tag-OK.asn1.-P index 5319d50e..4c398343 100644 --- a/tests/65-multi-tag-OK.asn1.-P +++ b/tests/65-multi-tag-OK.asn1.-P @@ -836,7 +836,7 @@ asn_TYPE_descriptor_t asn_DEF_Ts = { SEQUENCE_constraint, SEQUENCE_decode_ber, SEQUENCE_encode_der, - 0, /* Not implemented yet */ + SEQUENCE_decode_xer, SEQUENCE_encode_xer, 0, /* Use generic outmost tag fetcher */ asn_DEF_Ts_tags, diff --git a/tests/65-multi-tag-OK.asn1.-Pfnative-types b/tests/65-multi-tag-OK.asn1.-Pfnative-types index eb2f1c41..55742035 100644 --- a/tests/65-multi-tag-OK.asn1.-Pfnative-types +++ b/tests/65-multi-tag-OK.asn1.-Pfnative-types @@ -836,7 +836,7 @@ asn_TYPE_descriptor_t asn_DEF_Ts = { SEQUENCE_constraint, SEQUENCE_decode_ber, SEQUENCE_encode_der, - 0, /* Not implemented yet */ + SEQUENCE_decode_xer, SEQUENCE_encode_xer, 0, /* Use generic outmost tag fetcher */ asn_DEF_Ts_tags, -- cgit v1.2.3