From cee931eec71817d26569c34df7f1a9e7be514843 Mon Sep 17 00:00:00 2001 From: Lev Walkin Date: Tue, 16 Aug 2005 16:56:59 +0000 Subject: [PATCH] new circular references test --- tests/92-circular-loops-OK.asn1 | 49 ++ tests/92-circular-loops-OK.asn1.-P | 519 +++++++++++++++++ ...-circular-loops-OK.asn1.-Pfindirect-choice | 533 ++++++++++++++++++ 3 files changed, 1101 insertions(+) create mode 100644 tests/92-circular-loops-OK.asn1 create mode 100644 tests/92-circular-loops-OK.asn1.-P create mode 100644 tests/92-circular-loops-OK.asn1.-Pfindirect-choice diff --git a/tests/92-circular-loops-OK.asn1 b/tests/92-circular-loops-OK.asn1 new file mode 100644 index 00000000..956e2ac1 --- /dev/null +++ b/tests/92-circular-loops-OK.asn1 @@ -0,0 +1,49 @@ + +-- OK: Everything is fine + +-- iso.org.dod.internet.private.enterprise (1.3.6.1.4.1) +-- .spelio.software.asn1c.test (9363.1.5.1) +-- .92 + +ModuleCircularReferences + { iso org(3) dod(6) internet (1) private(4) enterprise(1) + spelio(9363) software(1) asn1c(5) test(1) 92 } +DEFINITIONS AUTOMATIC TAGS ::= +BEGIN + + Everything ::= SEQUENCE { + ch1 Choice1, + ch2 Choice2, + set Set + } + + -- This type refers to the type directly containing itself. + Choice1 ::= CHOICE { + something Everything, + ..., + some2 Everything + } + + Choice2 ::= CHOICE { + ..., + some3 Everything + } + + Set ::= SET OF SEQUENCE { + int INTEGER, + set Set, + seq Sequence, + set2 Set OPTIONAL, + ..., + set3 Set + } + + Sequence ::= SEQUENCE { + a INTEGER, + seq Sequence OPTIONAL, + ..., + b INTEGER, + set Set OPTIONAL + } + +END diff --git a/tests/92-circular-loops-OK.asn1.-P b/tests/92-circular-loops-OK.asn1.-P new file mode 100644 index 00000000..837b355d --- /dev/null +++ b/tests/92-circular-loops-OK.asn1.-P @@ -0,0 +1,519 @@ + +/*** <<< INCLUDES [Everything] >>> ***/ + +#include +#include +#include +#include + +/*** <<< TYPE-DECLS [Everything] >>> ***/ + +typedef struct Everything { + Choice1_t ch1; + Choice2_t ch2; + Set_t set; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Everything_t; + +/*** <<< FUNC-DECLS [Everything] >>> ***/ + +extern asn_TYPE_descriptor_t asn_DEF_Everything; + +/*** <<< STAT-DEFS [Everything] >>> ***/ + +static asn_TYPE_member_t asn_MBR_Everything_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Everything, ch1), + .tag = (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + .tag_mode = +1, /* EXPLICIT tag at current level */ + .type = (void *)&asn_DEF_Choice1, + .memb_constraints = 0, /* Defer constraints checking to the member type */ + .name = "ch1" + }, + { ATF_NOFLAGS, 0, offsetof(struct Everything, ch2), + .tag = (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + .tag_mode = +1, /* EXPLICIT tag at current level */ + .type = (void *)&asn_DEF_Choice2, + .memb_constraints = 0, /* Defer constraints checking to the member type */ + .name = "ch2" + }, + { ATF_NOFLAGS, 0, offsetof(struct Everything, set), + .tag = (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + .tag_mode = -1, /* IMPLICIT tag at current level */ + .type = (void *)&asn_DEF_Set, + .memb_constraints = 0, /* Defer constraints checking to the member type */ + .name = "set" + }, +}; +static ber_tlv_tag_t asn_DEF_Everything_1_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_TYPE_tag2member_t asn_MAP_Everything_1_tag2el[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ch1 at 15 */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ch2 at 16 */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* set at 18 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Everything_1_specs = { + sizeof(struct Everything), + offsetof(struct Everything, _asn_ctx), + asn_MAP_Everything_1_tag2el, + 3, /* Count of tags in the map */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_Everything = { + "Everything", + "Everything", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_Everything_1_tags, + sizeof(asn_DEF_Everything_1_tags) + /sizeof(asn_DEF_Everything_1_tags[0]), /* 1 */ + asn_DEF_Everything_1_tags, /* Same as above */ + sizeof(asn_DEF_Everything_1_tags) + /sizeof(asn_DEF_Everything_1_tags[0]), /* 1 */ + asn_MBR_Everything_1, + 3, /* Elements count */ + &asn_SPC_Everything_1_specs /* Additional specs */ +}; + + +/*** <<< INCLUDES [Choice1] >>> ***/ + +#include +#include + +/*** <<< DEPS [Choice1] >>> ***/ + +typedef enum Choice1_PR { + Choice1_PR_NOTHING, /* No components present */ + Choice1_PR_something, + /* Extensions may appear below */ + Choice1_PR_some2, +} Choice1_PR; + +/*** <<< TYPE-DECLS [Choice1] >>> ***/ + +typedef struct Choice1 { + Choice1_PR present; + union Choice1_u { + Everything_t something; + /* + * This type is extensible, + * possible extensions are below. + */ + Everything_t some2; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Choice1_t; + +/*** <<< FUNC-DECLS [Choice1] >>> ***/ + +extern asn_TYPE_descriptor_t asn_DEF_Choice1; + +/*** <<< STAT-DEFS [Choice1] >>> ***/ + +static asn_TYPE_member_t asn_MBR_Choice1_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Choice1, choice.something), + .tag = (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + .tag_mode = -1, /* IMPLICIT tag at current level */ + .type = (void *)&asn_DEF_Everything, + .memb_constraints = 0, /* Defer constraints checking to the member type */ + .name = "something" + }, + { ATF_NOFLAGS, 0, offsetof(struct Choice1, choice.some2), + .tag = (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + .tag_mode = -1, /* IMPLICIT tag at current level */ + .type = (void *)&asn_DEF_Everything, + .memb_constraints = 0, /* Defer constraints checking to the member type */ + .name = "some2" + }, +}; +static asn_TYPE_tag2member_t asn_MAP_Choice1_1_tag2el[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* something at 22 */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* some2 at 25 */ +}; +static asn_CHOICE_specifics_t asn_SPC_Choice1_1_specs = { + sizeof(struct Choice1), + offsetof(struct Choice1, _asn_ctx), + offsetof(struct Choice1, present), + sizeof(((struct Choice1 *)0)->present), + asn_MAP_Choice1_1_tag2el, + 2, /* Count of tags in the map */ + 1 /* Whether extensible */ +}; +asn_TYPE_descriptor_t asn_DEF_Choice1 = { + "Choice1", + "Choice1", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + asn_MBR_Choice1_1, + 2, /* Elements count */ + &asn_SPC_Choice1_1_specs /* Additional specs */ +}; + + +/*** <<< INCLUDES [Choice2] >>> ***/ + +#include +#include + +/*** <<< DEPS [Choice2] >>> ***/ + +typedef enum Choice2_PR { + Choice2_PR_NOTHING, /* No components present */ + /* Extensions may appear below */ + Choice2_PR_some3, +} Choice2_PR; + +/*** <<< TYPE-DECLS [Choice2] >>> ***/ + +typedef struct Choice2 { + Choice2_PR present; + union Choice2_u { + /* + * This type is extensible, + * possible extensions are below. + */ + Everything_t some3; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Choice2_t; + +/*** <<< FUNC-DECLS [Choice2] >>> ***/ + +extern asn_TYPE_descriptor_t asn_DEF_Choice2; + +/*** <<< STAT-DEFS [Choice2] >>> ***/ + +static asn_TYPE_member_t asn_MBR_Choice2_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Choice2, choice.some3), + .tag = (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + .tag_mode = -1, /* IMPLICIT tag at current level */ + .type = (void *)&asn_DEF_Everything, + .memb_constraints = 0, /* Defer constraints checking to the member type */ + .name = "some3" + }, +}; +static asn_TYPE_tag2member_t asn_MAP_Choice2_1_tag2el[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* some3 at 30 */ +}; +static asn_CHOICE_specifics_t asn_SPC_Choice2_1_specs = { + sizeof(struct Choice2), + offsetof(struct Choice2, _asn_ctx), + offsetof(struct Choice2, present), + sizeof(((struct Choice2 *)0)->present), + asn_MAP_Choice2_1_tag2el, + 1, /* Count of tags in the map */ + 1 /* Whether extensible */ +}; +asn_TYPE_descriptor_t asn_DEF_Choice2 = { + "Choice2", + "Choice2", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + asn_MBR_Choice2_1, + 1, /* Elements count */ + &asn_SPC_Choice2_1_specs /* Additional specs */ +}; + + +/*** <<< INCLUDES [Set] >>> ***/ + +#include +#include +#include +#include +#include + +/*** <<< FWD-DECLS [Set] >>> ***/ + +struct Set; + +/*** <<< TYPE-DECLS [Set] >>> ***/ + +typedef struct Set { + A_SET_OF(struct Member { + INTEGER_t Int; + struct Set *set; + Sequence_t seq; + struct Set *set2 /* OPTIONAL */; + /* + * This type is extensible, + * possible extensions are below. + */ + struct Set *set3; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } ) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Set_t; + +/*** <<< FUNC-DECLS [Set] >>> ***/ + +extern asn_TYPE_descriptor_t asn_DEF_Set; + +/*** <<< POST-INCLUDE [Set] >>> ***/ + +#include + +/*** <<< STAT-DEFS [Set] >>> ***/ + +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct Member, Int), + .tag = (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + .tag_mode = -1, /* IMPLICIT tag at current level */ + .type = (void *)&asn_DEF_INTEGER, + .memb_constraints = 0, /* Defer constraints checking to the member type */ + .name = "int" + }, + { ATF_POINTER, 0, offsetof(struct Member, set), + .tag = (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + .tag_mode = -1, /* IMPLICIT tag at current level */ + .type = (void *)&asn_DEF_Set, + .memb_constraints = 0, /* Defer constraints checking to the member type */ + .name = "set" + }, + { ATF_NOFLAGS, 0, offsetof(struct Member, seq), + .tag = (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + .tag_mode = -1, /* IMPLICIT tag at current level */ + .type = (void *)&asn_DEF_Sequence, + .memb_constraints = 0, /* Defer constraints checking to the member type */ + .name = "seq" + }, + { ATF_POINTER, 2, offsetof(struct Member, set2), + .tag = (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + .tag_mode = -1, /* IMPLICIT tag at current level */ + .type = (void *)&asn_DEF_Set, + .memb_constraints = 0, /* Defer constraints checking to the member type */ + .name = "set2" + }, + { ATF_POINTER, 0, offsetof(struct Member, set3), + .tag = (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + .tag_mode = -1, /* IMPLICIT tag at current level */ + .type = (void *)&asn_DEF_Set, + .memb_constraints = 0, /* Defer constraints checking to the member type */ + .name = "set3" + }, +}; +static ber_tlv_tag_t asn_DEF_Member_2_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_TYPE_tag2member_t asn_MAP_Member_2_tag2el[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* int at 33 */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* set at 34 */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* seq at 35 */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* set2 at 36 */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* set3 at 39 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_2_specs = { + sizeof(struct Member), + offsetof(struct Member, _asn_ctx), + asn_MAP_Member_2_tag2el, + 5, /* Count of tags in the map */ + 3, /* Start extensions */ + 6 /* Stop extensions */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "", + "", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_Member_2_tags, + sizeof(asn_DEF_Member_2_tags) + /sizeof(asn_DEF_Member_2_tags[0]), /* 1 */ + asn_DEF_Member_2_tags, /* Same as above */ + sizeof(asn_DEF_Member_2_tags) + /sizeof(asn_DEF_Member_2_tags[0]), /* 1 */ + asn_MBR_Member_2, + 5, /* Elements count */ + &asn_SPC_Member_2_specs /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_Set_1[] = { + { ATF_POINTER, 0, 0, + .tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + .tag_mode = 0, + .type = (void *)&asn_DEF_Member_2, + .memb_constraints = 0, /* Defer constraints checking to the member type */ + .name = "" + }, +}; +static ber_tlv_tag_t asn_DEF_Set_1_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (17 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_Set_1_specs = { + sizeof(struct Set), + offsetof(struct Set, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_Set = { + "Set", + "Set", + SET_OF_free, + SET_OF_print, + SET_OF_constraint, + SET_OF_decode_ber, + SET_OF_encode_der, + SET_OF_decode_xer, + SET_OF_encode_xer, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_Set_1_tags, + sizeof(asn_DEF_Set_1_tags) + /sizeof(asn_DEF_Set_1_tags[0]), /* 1 */ + asn_DEF_Set_1_tags, /* Same as above */ + sizeof(asn_DEF_Set_1_tags) + /sizeof(asn_DEF_Set_1_tags[0]), /* 1 */ + asn_MBR_Set_1, + 1, /* Single element */ + &asn_SPC_Set_1_specs /* Additional specs */ +}; + + +/*** <<< INCLUDES [Sequence] >>> ***/ + +#include +#include + +/*** <<< FWD-DECLS [Sequence] >>> ***/ + +struct Sequence; +struct Set; + +/*** <<< TYPE-DECLS [Sequence] >>> ***/ + +typedef struct Sequence { + INTEGER_t a; + struct Sequence *seq /* OPTIONAL */; + /* + * This type is extensible, + * possible extensions are below. + */ + INTEGER_t *b; + struct Set *set /* OPTIONAL */; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Sequence_t; + +/*** <<< FUNC-DECLS [Sequence] >>> ***/ + +extern asn_TYPE_descriptor_t asn_DEF_Sequence; + +/*** <<< POST-INCLUDE [Sequence] >>> ***/ + +#include +#include + +/*** <<< STAT-DEFS [Sequence] >>> ***/ + +static asn_TYPE_member_t asn_MBR_Sequence_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Sequence, a), + .tag = (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + .tag_mode = -1, /* IMPLICIT tag at current level */ + .type = (void *)&asn_DEF_INTEGER, + .memb_constraints = 0, /* Defer constraints checking to the member type */ + .name = "a" + }, + { ATF_POINTER, 3, offsetof(struct Sequence, seq), + .tag = (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + .tag_mode = -1, /* IMPLICIT tag at current level */ + .type = (void *)&asn_DEF_Sequence, + .memb_constraints = 0, /* Defer constraints checking to the member type */ + .name = "seq" + }, + { ATF_POINTER, 0, offsetof(struct Sequence, b), + .tag = (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + .tag_mode = -1, /* IMPLICIT tag at current level */ + .type = (void *)&asn_DEF_INTEGER, + .memb_constraints = 0, /* Defer constraints checking to the member type */ + .name = "b" + }, + { ATF_POINTER, 1, offsetof(struct Sequence, set), + .tag = (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + .tag_mode = -1, /* IMPLICIT tag at current level */ + .type = (void *)&asn_DEF_Set, + .memb_constraints = 0, /* Defer constraints checking to the member type */ + .name = "set" + }, +}; +static ber_tlv_tag_t asn_DEF_Sequence_1_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_TYPE_tag2member_t asn_MAP_Sequence_1_tag2el[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* a at 42 */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* seq at 43 */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* b at 45 */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* set at 46 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Sequence_1_specs = { + sizeof(struct Sequence), + offsetof(struct Sequence, _asn_ctx), + asn_MAP_Sequence_1_tag2el, + 4, /* Count of tags in the map */ + 1, /* Start extensions */ + 5 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_Sequence = { + "Sequence", + "Sequence", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_Sequence_1_tags, + sizeof(asn_DEF_Sequence_1_tags) + /sizeof(asn_DEF_Sequence_1_tags[0]), /* 1 */ + asn_DEF_Sequence_1_tags, /* Same as above */ + sizeof(asn_DEF_Sequence_1_tags) + /sizeof(asn_DEF_Sequence_1_tags[0]), /* 1 */ + asn_MBR_Sequence_1, + 4, /* Elements count */ + &asn_SPC_Sequence_1_specs /* Additional specs */ +}; + diff --git a/tests/92-circular-loops-OK.asn1.-Pfindirect-choice b/tests/92-circular-loops-OK.asn1.-Pfindirect-choice new file mode 100644 index 00000000..7f21fe13 --- /dev/null +++ b/tests/92-circular-loops-OK.asn1.-Pfindirect-choice @@ -0,0 +1,533 @@ + +/*** <<< INCLUDES [Everything] >>> ***/ + +#include +#include +#include +#include + +/*** <<< TYPE-DECLS [Everything] >>> ***/ + +typedef struct Everything { + Choice1_t ch1; + Choice2_t ch2; + Set_t set; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Everything_t; + +/*** <<< FUNC-DECLS [Everything] >>> ***/ + +extern asn_TYPE_descriptor_t asn_DEF_Everything; + +/*** <<< STAT-DEFS [Everything] >>> ***/ + +static asn_TYPE_member_t asn_MBR_Everything_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Everything, ch1), + .tag = (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + .tag_mode = +1, /* EXPLICIT tag at current level */ + .type = (void *)&asn_DEF_Choice1, + .memb_constraints = 0, /* Defer constraints checking to the member type */ + .name = "ch1" + }, + { ATF_NOFLAGS, 0, offsetof(struct Everything, ch2), + .tag = (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + .tag_mode = +1, /* EXPLICIT tag at current level */ + .type = (void *)&asn_DEF_Choice2, + .memb_constraints = 0, /* Defer constraints checking to the member type */ + .name = "ch2" + }, + { ATF_NOFLAGS, 0, offsetof(struct Everything, set), + .tag = (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + .tag_mode = -1, /* IMPLICIT tag at current level */ + .type = (void *)&asn_DEF_Set, + .memb_constraints = 0, /* Defer constraints checking to the member type */ + .name = "set" + }, +}; +static ber_tlv_tag_t asn_DEF_Everything_1_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_TYPE_tag2member_t asn_MAP_Everything_1_tag2el[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ch1 at 15 */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ch2 at 16 */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* set at 18 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Everything_1_specs = { + sizeof(struct Everything), + offsetof(struct Everything, _asn_ctx), + asn_MAP_Everything_1_tag2el, + 3, /* Count of tags in the map */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_Everything = { + "Everything", + "Everything", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_Everything_1_tags, + sizeof(asn_DEF_Everything_1_tags) + /sizeof(asn_DEF_Everything_1_tags[0]), /* 1 */ + asn_DEF_Everything_1_tags, /* Same as above */ + sizeof(asn_DEF_Everything_1_tags) + /sizeof(asn_DEF_Everything_1_tags[0]), /* 1 */ + asn_MBR_Everything_1, + 3, /* Elements count */ + &asn_SPC_Everything_1_specs /* Additional specs */ +}; + + +/*** <<< INCLUDES [Choice1] >>> ***/ + +#include + +/*** <<< DEPS [Choice1] >>> ***/ + +typedef enum Choice1_PR { + Choice1_PR_NOTHING, /* No components present */ + Choice1_PR_something, + /* Extensions may appear below */ + Choice1_PR_some2, +} Choice1_PR; + +/*** <<< FWD-DECLS [Choice1] >>> ***/ + +struct Everything; + +/*** <<< TYPE-DECLS [Choice1] >>> ***/ + +typedef struct Choice1 { + Choice1_PR present; + union Choice1_u { + struct Everything *something; + /* + * This type is extensible, + * possible extensions are below. + */ + struct Everything *some2; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Choice1_t; + +/*** <<< FUNC-DECLS [Choice1] >>> ***/ + +extern asn_TYPE_descriptor_t asn_DEF_Choice1; + +/*** <<< POST-INCLUDE [Choice1] >>> ***/ + +#include + +/*** <<< STAT-DEFS [Choice1] >>> ***/ + +static asn_TYPE_member_t asn_MBR_Choice1_1[] = { + { ATF_POINTER, 0, offsetof(struct Choice1, choice.something), + .tag = (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + .tag_mode = -1, /* IMPLICIT tag at current level */ + .type = (void *)&asn_DEF_Everything, + .memb_constraints = 0, /* Defer constraints checking to the member type */ + .name = "something" + }, + { ATF_POINTER, 0, offsetof(struct Choice1, choice.some2), + .tag = (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + .tag_mode = -1, /* IMPLICIT tag at current level */ + .type = (void *)&asn_DEF_Everything, + .memb_constraints = 0, /* Defer constraints checking to the member type */ + .name = "some2" + }, +}; +static asn_TYPE_tag2member_t asn_MAP_Choice1_1_tag2el[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* something at 22 */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* some2 at 25 */ +}; +static asn_CHOICE_specifics_t asn_SPC_Choice1_1_specs = { + sizeof(struct Choice1), + offsetof(struct Choice1, _asn_ctx), + offsetof(struct Choice1, present), + sizeof(((struct Choice1 *)0)->present), + asn_MAP_Choice1_1_tag2el, + 2, /* Count of tags in the map */ + 1 /* Whether extensible */ +}; +asn_TYPE_descriptor_t asn_DEF_Choice1 = { + "Choice1", + "Choice1", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + asn_MBR_Choice1_1, + 2, /* Elements count */ + &asn_SPC_Choice1_1_specs /* Additional specs */ +}; + + +/*** <<< INCLUDES [Choice2] >>> ***/ + +#include + +/*** <<< DEPS [Choice2] >>> ***/ + +typedef enum Choice2_PR { + Choice2_PR_NOTHING, /* No components present */ + /* Extensions may appear below */ + Choice2_PR_some3, +} Choice2_PR; + +/*** <<< FWD-DECLS [Choice2] >>> ***/ + +struct Everything; + +/*** <<< TYPE-DECLS [Choice2] >>> ***/ + +typedef struct Choice2 { + Choice2_PR present; + union Choice2_u { + /* + * This type is extensible, + * possible extensions are below. + */ + struct Everything *some3; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Choice2_t; + +/*** <<< FUNC-DECLS [Choice2] >>> ***/ + +extern asn_TYPE_descriptor_t asn_DEF_Choice2; + +/*** <<< POST-INCLUDE [Choice2] >>> ***/ + +#include + +/*** <<< STAT-DEFS [Choice2] >>> ***/ + +static asn_TYPE_member_t asn_MBR_Choice2_1[] = { + { ATF_POINTER, 0, offsetof(struct Choice2, choice.some3), + .tag = (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + .tag_mode = -1, /* IMPLICIT tag at current level */ + .type = (void *)&asn_DEF_Everything, + .memb_constraints = 0, /* Defer constraints checking to the member type */ + .name = "some3" + }, +}; +static asn_TYPE_tag2member_t asn_MAP_Choice2_1_tag2el[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* some3 at 30 */ +}; +static asn_CHOICE_specifics_t asn_SPC_Choice2_1_specs = { + sizeof(struct Choice2), + offsetof(struct Choice2, _asn_ctx), + offsetof(struct Choice2, present), + sizeof(((struct Choice2 *)0)->present), + asn_MAP_Choice2_1_tag2el, + 1, /* Count of tags in the map */ + 1 /* Whether extensible */ +}; +asn_TYPE_descriptor_t asn_DEF_Choice2 = { + "Choice2", + "Choice2", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + asn_MBR_Choice2_1, + 1, /* Elements count */ + &asn_SPC_Choice2_1_specs /* Additional specs */ +}; + + +/*** <<< INCLUDES [Set] >>> ***/ + +#include +#include +#include +#include +#include + +/*** <<< FWD-DECLS [Set] >>> ***/ + +struct Set; + +/*** <<< TYPE-DECLS [Set] >>> ***/ + +typedef struct Set { + A_SET_OF(struct Member { + INTEGER_t Int; + struct Set *set; + Sequence_t seq; + struct Set *set2 /* OPTIONAL */; + /* + * This type is extensible, + * possible extensions are below. + */ + struct Set *set3; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } ) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Set_t; + +/*** <<< FUNC-DECLS [Set] >>> ***/ + +extern asn_TYPE_descriptor_t asn_DEF_Set; + +/*** <<< POST-INCLUDE [Set] >>> ***/ + +#include + +/*** <<< STAT-DEFS [Set] >>> ***/ + +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct Member, Int), + .tag = (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + .tag_mode = -1, /* IMPLICIT tag at current level */ + .type = (void *)&asn_DEF_INTEGER, + .memb_constraints = 0, /* Defer constraints checking to the member type */ + .name = "int" + }, + { ATF_POINTER, 0, offsetof(struct Member, set), + .tag = (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + .tag_mode = -1, /* IMPLICIT tag at current level */ + .type = (void *)&asn_DEF_Set, + .memb_constraints = 0, /* Defer constraints checking to the member type */ + .name = "set" + }, + { ATF_NOFLAGS, 0, offsetof(struct Member, seq), + .tag = (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + .tag_mode = -1, /* IMPLICIT tag at current level */ + .type = (void *)&asn_DEF_Sequence, + .memb_constraints = 0, /* Defer constraints checking to the member type */ + .name = "seq" + }, + { ATF_POINTER, 2, offsetof(struct Member, set2), + .tag = (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + .tag_mode = -1, /* IMPLICIT tag at current level */ + .type = (void *)&asn_DEF_Set, + .memb_constraints = 0, /* Defer constraints checking to the member type */ + .name = "set2" + }, + { ATF_POINTER, 0, offsetof(struct Member, set3), + .tag = (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + .tag_mode = -1, /* IMPLICIT tag at current level */ + .type = (void *)&asn_DEF_Set, + .memb_constraints = 0, /* Defer constraints checking to the member type */ + .name = "set3" + }, +}; +static ber_tlv_tag_t asn_DEF_Member_2_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_TYPE_tag2member_t asn_MAP_Member_2_tag2el[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* int at 33 */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* set at 34 */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* seq at 35 */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* set2 at 36 */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* set3 at 39 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_2_specs = { + sizeof(struct Member), + offsetof(struct Member, _asn_ctx), + asn_MAP_Member_2_tag2el, + 5, /* Count of tags in the map */ + 3, /* Start extensions */ + 6 /* Stop extensions */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "", + "", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_Member_2_tags, + sizeof(asn_DEF_Member_2_tags) + /sizeof(asn_DEF_Member_2_tags[0]), /* 1 */ + asn_DEF_Member_2_tags, /* Same as above */ + sizeof(asn_DEF_Member_2_tags) + /sizeof(asn_DEF_Member_2_tags[0]), /* 1 */ + asn_MBR_Member_2, + 5, /* Elements count */ + &asn_SPC_Member_2_specs /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_Set_1[] = { + { ATF_POINTER, 0, 0, + .tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + .tag_mode = 0, + .type = (void *)&asn_DEF_Member_2, + .memb_constraints = 0, /* Defer constraints checking to the member type */ + .name = "" + }, +}; +static ber_tlv_tag_t asn_DEF_Set_1_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (17 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_Set_1_specs = { + sizeof(struct Set), + offsetof(struct Set, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_Set = { + "Set", + "Set", + SET_OF_free, + SET_OF_print, + SET_OF_constraint, + SET_OF_decode_ber, + SET_OF_encode_der, + SET_OF_decode_xer, + SET_OF_encode_xer, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_Set_1_tags, + sizeof(asn_DEF_Set_1_tags) + /sizeof(asn_DEF_Set_1_tags[0]), /* 1 */ + asn_DEF_Set_1_tags, /* Same as above */ + sizeof(asn_DEF_Set_1_tags) + /sizeof(asn_DEF_Set_1_tags[0]), /* 1 */ + asn_MBR_Set_1, + 1, /* Single element */ + &asn_SPC_Set_1_specs /* Additional specs */ +}; + + +/*** <<< INCLUDES [Sequence] >>> ***/ + +#include +#include + +/*** <<< FWD-DECLS [Sequence] >>> ***/ + +struct Sequence; +struct Set; + +/*** <<< TYPE-DECLS [Sequence] >>> ***/ + +typedef struct Sequence { + INTEGER_t a; + struct Sequence *seq /* OPTIONAL */; + /* + * This type is extensible, + * possible extensions are below. + */ + INTEGER_t *b; + struct Set *set /* OPTIONAL */; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Sequence_t; + +/*** <<< FUNC-DECLS [Sequence] >>> ***/ + +extern asn_TYPE_descriptor_t asn_DEF_Sequence; + +/*** <<< POST-INCLUDE [Sequence] >>> ***/ + +#include +#include + +/*** <<< STAT-DEFS [Sequence] >>> ***/ + +static asn_TYPE_member_t asn_MBR_Sequence_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Sequence, a), + .tag = (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + .tag_mode = -1, /* IMPLICIT tag at current level */ + .type = (void *)&asn_DEF_INTEGER, + .memb_constraints = 0, /* Defer constraints checking to the member type */ + .name = "a" + }, + { ATF_POINTER, 3, offsetof(struct Sequence, seq), + .tag = (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + .tag_mode = -1, /* IMPLICIT tag at current level */ + .type = (void *)&asn_DEF_Sequence, + .memb_constraints = 0, /* Defer constraints checking to the member type */ + .name = "seq" + }, + { ATF_POINTER, 0, offsetof(struct Sequence, b), + .tag = (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + .tag_mode = -1, /* IMPLICIT tag at current level */ + .type = (void *)&asn_DEF_INTEGER, + .memb_constraints = 0, /* Defer constraints checking to the member type */ + .name = "b" + }, + { ATF_POINTER, 1, offsetof(struct Sequence, set), + .tag = (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + .tag_mode = -1, /* IMPLICIT tag at current level */ + .type = (void *)&asn_DEF_Set, + .memb_constraints = 0, /* Defer constraints checking to the member type */ + .name = "set" + }, +}; +static ber_tlv_tag_t asn_DEF_Sequence_1_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_TYPE_tag2member_t asn_MAP_Sequence_1_tag2el[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* a at 42 */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* seq at 43 */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* b at 45 */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* set at 46 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Sequence_1_specs = { + sizeof(struct Sequence), + offsetof(struct Sequence, _asn_ctx), + asn_MAP_Sequence_1_tag2el, + 4, /* Count of tags in the map */ + 1, /* Start extensions */ + 5 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_Sequence = { + "Sequence", + "Sequence", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_Sequence_1_tags, + sizeof(asn_DEF_Sequence_1_tags) + /sizeof(asn_DEF_Sequence_1_tags[0]), /* 1 */ + asn_DEF_Sequence_1_tags, /* Same as above */ + sizeof(asn_DEF_Sequence_1_tags) + /sizeof(asn_DEF_Sequence_1_tags[0]), /* 1 */ + asn_MBR_Sequence_1, + 4, /* Elements count */ + &asn_SPC_Sequence_1_specs /* Additional specs */ +}; +