CANONICAL-XER testing
git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@479 59561ff5-6e30-0410-9f3c-9617f08c8826
diff --git a/tests/31-set-of-OK.asn1.-P b/tests/31-set-of-OK.asn1.-P
index 37533f0..143ab8c 100644
--- a/tests/31-set-of-OK.asn1.-P
+++ b/tests/31-set-of-OK.asn1.-P
@@ -142,6 +142,8 @@
#include <constr_SET_OF.h>
#include <BIT_STRING.h>
#include <constr_SEQUENCE.h>
+#include <INTEGER.h>
+#include <constr_CHOICE.h>
#include <constr_SET.h>
/*** <<< DEPS [Stuff] >>> ***/
@@ -153,7 +155,13 @@
typedef enum Stuff_PR {
Stuff_PR_trees, /* Member trees is present */
Stuff_PR_anything, /* Member anything is present */
+ Stuff_PR_other, /* Member other is present */
} Stuff_PR;
+typedef enum other_PR {
+ other_PR_NOTHING, /* No components present */
+ other_PR_a,
+ other_PR_b,
+} other_PR;
extern asn_TYPE_descriptor_t asn_DEF_Stuff;
/*** <<< TYPE-DECLS [Stuff] >>> ***/
@@ -181,10 +189,24 @@
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} *anything;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ struct other {
+ other_PR present;
+ union {
+ INTEGER_t a;
+ INTEGER_t b;
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } *other;
/* Presence bitmask: ASN_SET_ISPRESENT(pStuff, Stuff_PR_x) */
unsigned int _presence_map
- [((2+(8*sizeof(unsigned int))-1)/(8*sizeof(unsigned int)))];
+ [((3+(8*sizeof(unsigned int))-1)/(8*sizeof(unsigned int)))];
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
@@ -202,7 +224,7 @@
},
};
static ber_tlv_tag_t asn_DEF_trees_tags[] = {
- (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
(ASN_TAG_CLASS_UNIVERSAL | (17 << 2))
};
static asn_SET_OF_specifics_t asn_DEF_trees_specs = {
@@ -245,7 +267,7 @@
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static asn_TYPE_tag2member_t asn_DEF_anything_member_tag2el[] = {
- { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 0, 0, 0 }, /* cup-of-coffee at 26 */
+ { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 0, 0, 0 }, /* cup-of-coffee at 32 */
};
static asn_SEQUENCE_specifics_t asn_DEF_anything_member_specs = {
sizeof(struct anything_member),
@@ -287,7 +309,7 @@
},
};
static ber_tlv_tag_t asn_DEF_anything_tags[] = {
- (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
(ASN_TAG_CLASS_UNIVERSAL | (17 << 2))
};
static asn_SET_OF_specifics_t asn_DEF_anything_specs = {
@@ -317,39 +339,104 @@
&asn_DEF_anything_specs /* Additional specs */
};
-static asn_TYPE_member_t asn_MBR_Stuff[] = {
- { ATF_POINTER, 2, offsetof(struct Stuff, trees),
+static asn_TYPE_member_t asn_MBR_other[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct other, choice.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 to actual type */
+ .name = "a"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct other, choice.b),
+ .tag = (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ .tag_mode = -1, /* IMPLICIT tag at current level */
+ .type = (void *)&asn_DEF_INTEGER,
+ .memb_constraints = 0, /* Defer to actual type */
+ .name = "b"
+ },
+};
+static asn_TYPE_tag2member_t asn_DEF_other_tag2el[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* a at 26 */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 }, /* b at 28 */
+};
+static asn_CHOICE_specifics_t asn_DEF_other_specs = {
+ sizeof(struct other),
+ offsetof(struct other, _asn_ctx),
+ offsetof(struct other, present),
+ sizeof(((struct other *)0)->present),
+ asn_DEF_other_tag2el,
+ 2, /* Count of tags in the map */
+ 0 /* Whether extensible */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_other = {
+ "other",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ 0, /* Not implemented yet */
+ 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_other,
+ 2, /* Elements count */
+ &asn_DEF_other_specs /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_Stuff[] = {
+ { ATF_POINTER, 3, offsetof(struct Stuff, trees),
+ .tag = (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ .tag_mode = -1, /* IMPLICIT tag at current level */
.type = (void *)&asn_DEF_trees,
.memb_constraints = 0, /* Defer to actual type */
.name = "trees"
},
- { ATF_POINTER, 1, offsetof(struct Stuff, anything),
- .tag = (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ { ATF_POINTER, 2, offsetof(struct Stuff, anything),
+ .tag = (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
.tag_mode = -1, /* IMPLICIT tag at current level */
.type = (void *)&asn_DEF_anything,
.memb_constraints = 0, /* Defer to actual type */
.name = "anything"
},
+ { ATF_POINTER, 0, offsetof(struct Stuff, other),
+ .tag = -1 /* Ambiguous tag (CHOICE?) */,
+ .tag_mode = 0,
+ .type = (void *)&asn_DEF_other,
+ .memb_constraints = 0, /* Defer to actual type */
+ .name = "other"
+ },
};
static ber_tlv_tag_t asn_DEF_Stuff_tags[] = {
(ASN_TAG_CLASS_UNIVERSAL | (17 << 2))
};
static asn_TYPE_tag2member_t asn_DEF_Stuff_tag2el[] = {
- { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* trees at 23 */
- { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* anything at 28 */
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* a at 26 */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* trees at 23 */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* anything at 34 */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 }, /* b at 28 */
};
-static uint8_t asn_DEF_Stuff_mmap[(2 + (8 * sizeof(unsigned int)) - 1) / 8] = {
- (0 << 7) | (0 << 6)
+static asn_TYPE_tag2member_t asn_DEF_Stuff_tag2el_cxer[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* trees at 23 */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* anything at 34 */
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* a at 26 */
+};
+static uint8_t asn_DEF_Stuff_mmap[(3 + (8 * sizeof(unsigned int)) - 1) / 8] = {
+ (0 << 7) | (0 << 6) | (0 << 5)
};
static asn_SET_specifics_t asn_DEF_Stuff_specs = {
sizeof(struct Stuff),
offsetof(struct Stuff, _asn_ctx),
offsetof(struct Stuff, _presence_map),
asn_DEF_Stuff_tag2el,
- 2, /* Count of tags in the map */
- 0, /* Whether extensible */
+ 4, /* Count of tags in the map */
+ asn_DEF_Stuff_tag2el_cxer,
+ 3, /* Count of tags in the CANONICAL-XER map */
+ 1, /* Whether extensible */
(unsigned int *)asn_DEF_Stuff_mmap /* Mandatory elements map */
};
asn_TYPE_descriptor_t asn_DEF_Stuff = {
@@ -369,7 +456,7 @@
sizeof(asn_DEF_Stuff_tags)
/sizeof(asn_DEF_Stuff_tags[0]), /* 1 */
asn_MBR_Stuff,
- 2, /* Elements count */
+ 3, /* Elements count */
&asn_DEF_Stuff_specs /* Additional specs */
};