Skip to content
Snippets Groups Projects
Commit f3b29b1f authored by Lev Walkin's avatar Lev Walkin
Browse files

no empty maps

parent b9d0ae34
No related branches found
No related tags found
No related merge requests found
...@@ -315,9 +315,15 @@ asn1c_lang_C_type_SEQUENCE_def(arg_t *arg) { ...@@ -315,9 +315,15 @@ asn1c_lang_C_type_SEQUENCE_def(arg_t *arg) {
OUT("sizeof(struct "); out_name_chain(arg, 1); OUT("),\n"); OUT("sizeof(struct "); out_name_chain(arg, 1); OUT("),\n");
OUT("offsetof(struct "); out_name_chain(arg, 1); OUT(", _asn_ctx),\n"); OUT("offsetof(struct "); out_name_chain(arg, 1); OUT(", _asn_ctx),\n");
OUT("asn_MAP_%s_%d_tag2el,\n", if(tag2el_count) {
MKID(expr->Identifier), expr->_type_unique_index); OUT("asn_MAP_%s_%d_tag2el,\n",
OUT("%d,\t/* Count of tags in the map */\n", tag2el_count); MKID(expr->Identifier),
expr->_type_unique_index);
OUT("%d,\t/* Count of tags in the map */\n", tag2el_count);
} else {
OUT("0,\t/* No top level tags */\n");
OUT("0,\t/* No tags in the map */\n");
}
OUT("%d,\t/* Start extensions */\n", OUT("%d,\t/* Start extensions */\n",
ext_start); ext_start);
OUT("%d\t/* Stop extensions */\n", OUT("%d\t/* Stop extensions */\n",
...@@ -1425,29 +1431,29 @@ _add_tag2el_member(arg_t *arg, tag2el_t **tag2el, int *count, int el_no, fte_e f ...@@ -1425,29 +1431,29 @@ _add_tag2el_member(arg_t *arg, tag2el_t **tag2el, int *count, int el_no, fte_e f
static int static int
emit_tag2member_map(arg_t *arg, tag2el_t *tag2el, int tag2el_count, const char *opt_modifier) { emit_tag2member_map(arg_t *arg, tag2el_t *tag2el, int tag2el_count, const char *opt_modifier) {
asn1p_expr_t *expr = arg->expr; asn1p_expr_t *expr = arg->expr;
int i;
if(!tag2el_count) return 0; /* No top level tags */
OUT("static asn_TYPE_tag2member_t asn_MAP_%s_%d_tag2el%s[] = {\n", OUT("static asn_TYPE_tag2member_t asn_MAP_%s_%d_tag2el%s[] = {\n",
MKID(expr->Identifier), expr->_type_unique_index, MKID(expr->Identifier), expr->_type_unique_index,
opt_modifier?opt_modifier:""); opt_modifier?opt_modifier:"");
if(tag2el_count) { for(i = 0; i < tag2el_count; i++) {
int i; OUT(" { ");
for(i = 0; i < tag2el_count; i++) { _print_tag(arg, &tag2el[i].el_tag);
OUT(" { "); OUT(", ");
_print_tag(arg, &tag2el[i].el_tag); OUT("%d, ", tag2el[i].el_no);
OUT(", "); OUT("%d, ", tag2el[i].toff_first);
OUT("%d, ", tag2el[i].el_no); OUT("%d ", tag2el[i].toff_last);
OUT("%d, ", tag2el[i].toff_first); OUT("}%s /* %s at %d */\n",
OUT("%d ", tag2el[i].toff_last); (i + 1 < tag2el_count) ? "," : "",
OUT("}%s /* %s at %d */\n", tag2el[i].from_expr->Identifier,
(i + 1 < tag2el_count) ? "," : "", tag2el[i].from_expr->_lineno
tag2el[i].from_expr->Identifier, );
tag2el[i].from_expr->_lineno
);
}
} }
OUT("};\n"); OUT("};\n");
return 0;; return 0;
} }
static enum tvm_compat static enum tvm_compat
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment