Commit 152a91e4 authored by Lev Walkin's avatar Lev Walkin

modified Member name to guarantee it won't clash with user-defined "identifier"

parent e5270564
......@@ -482,7 +482,7 @@ asn1c_lang_C_type_SEx_OF(arg_t *arg) {
if(tmp_memb.Identifier == 0) {
tmp_memb.Identifier = strdup(
asn1c_make_identifier(0,
expr->Identifier, "member", 0));
expr->Identifier, "Member", 0));
assert(tmp_memb.Identifier);
}
tmp.default_cb(&tmp);
......@@ -538,7 +538,7 @@ asn1c_lang_C_type_SEx_OF_def(arg_t *arg, int seq_of) {
INDENT(+1);
v = TQ_FIRST(&(expr->members));
if(!v->Identifier) {
v->Identifier = strdup("member");
v->Identifier = strdup("Member");
assert(v->Identifier);
}
v->_anonymous_type = 1;
......@@ -1447,7 +1447,7 @@ emit_member_table(arg_t *arg, asn1p_expr_t *expr) {
} else {
char *id = MKID_nr(expr->Identifier);
if(expr->_anonymous_type
&& !strcmp(expr->Identifier, "member"))
&& !strcmp(expr->Identifier, "Member"))
id = asn1c_type_name(arg, expr, TNF_SAFE);
OUT("memb_%s_%d_constraint,\n", id,
++global_memb_unique);
......@@ -1456,7 +1456,14 @@ emit_member_table(arg_t *arg, asn1p_expr_t *expr) {
OUT("0,\t/* Defer constraints checking to the member type */\n");
}
if(C99_MODE) OUT(".name = ");
if(1) {
if(expr->_anonymous_type && !strcmp(expr->Identifier, "Member"))
OUT("\"\"\n");
else
OUT("\"%s\"\n", expr->Identifier);
} else {
OUT("\"%s\"\n", expr->_anonymous_type ? "" : expr->Identifier);
}
OUT("},\n");
INDENT(-1);
......@@ -1466,7 +1473,7 @@ emit_member_table(arg_t *arg, asn1p_expr_t *expr) {
save_target = arg->target->target;
REDIR(OT_CODE);
if(expr->_anonymous_type && !strcmp(expr->Identifier, "member"))
if(expr->_anonymous_type && !strcmp(expr->Identifier, "Member"))
p = asn1c_type_name(arg, expr, TNF_SAFE);
else
p = MKID_nr(expr->Identifier);
......
......@@ -177,7 +177,7 @@ typedef struct Stuff {
asn_struct_ctx_t _asn_ctx;
} *trees;
struct anything {
A_SET_OF(struct anything_member {
A_SET_OF(struct anything_Member {
BIT_STRING_t cup_of_coffee;
/*
* This type is extensible,
......@@ -257,8 +257,8 @@ asn_TYPE_descriptor_t asn_DEF_trees = {
&asn_DEF_trees_specs /* Additional specs */
};
static asn_TYPE_member_t asn_MBR_anything_member[] = {
{ ATF_NOFLAGS, 0, offsetof(struct anything_member, cup_of_coffee),
static asn_TYPE_member_t asn_MBR_anything_Member[] = {
{ ATF_NOFLAGS, 0, offsetof(struct anything_Member, cup_of_coffee),
.tag = (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)),
.tag_mode = 0,
.type = (void *)&asn_DEF_BIT_STRING,
......@@ -266,22 +266,22 @@ static asn_TYPE_member_t asn_MBR_anything_member[] = {
.name = "cup-of-coffee"
},
};
static ber_tlv_tag_t asn_DEF_anything_member_tags[] = {
static ber_tlv_tag_t asn_DEF_anything_Member_tags[] = {
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static asn_TYPE_tag2member_t asn_DEF_anything_member_tag2el[] = {
static asn_TYPE_tag2member_t asn_DEF_anything_Member_tag2el[] = {
{ (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),
offsetof(struct anything_member, _asn_ctx),
asn_DEF_anything_member_tag2el,
static asn_SEQUENCE_specifics_t asn_DEF_anything_Member_specs = {
sizeof(struct anything_Member),
offsetof(struct anything_Member, _asn_ctx),
asn_DEF_anything_Member_tag2el,
1, /* Count of tags in the map */
0, /* Start extensions */
2 /* Stop extensions */
};
static /* Use -fall-defs-global to expose */
asn_TYPE_descriptor_t asn_DEF_anything_member = {
asn_TYPE_descriptor_t asn_DEF_anything_Member = {
"",
"",
SEQUENCE_free,
......@@ -292,15 +292,15 @@ asn_TYPE_descriptor_t asn_DEF_anything_member = {
SEQUENCE_decode_xer,
SEQUENCE_encode_xer,
0, /* Use generic outmost tag fetcher */
asn_DEF_anything_member_tags,
sizeof(asn_DEF_anything_member_tags)
/sizeof(asn_DEF_anything_member_tags[0]), /* 1 */
asn_DEF_anything_member_tags, /* Same as above */
sizeof(asn_DEF_anything_member_tags)
/sizeof(asn_DEF_anything_member_tags[0]), /* 1 */
asn_MBR_anything_member,
asn_DEF_anything_Member_tags,
sizeof(asn_DEF_anything_Member_tags)
/sizeof(asn_DEF_anything_Member_tags[0]), /* 1 */
asn_DEF_anything_Member_tags, /* Same as above */
sizeof(asn_DEF_anything_Member_tags)
/sizeof(asn_DEF_anything_Member_tags[0]), /* 1 */
asn_MBR_anything_Member,
1, /* Elements count */
&asn_DEF_anything_member_specs /* Additional specs */
&asn_DEF_anything_Member_specs /* Additional specs */
};
static asn_TYPE_member_t asn_MBR_anything[] = {
......
......@@ -27,7 +27,7 @@ static asn_TYPE_member_t asn_MBR_T[] = {
.tag_mode = 0,
.type = (void *)&asn_DEF_SimpleType,
.memb_constraints = 0, /* Defer constraints checking to the member type */
.name = ""
.name = "named"
},
};
static ber_tlv_tag_t asn_DEF_T_tags[] = {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment