aboutsummaryrefslogtreecommitdiffstats
path: root/libasn1compiler
diff options
context:
space:
mode:
authorLev Walkin <vlm@lionet.info>2004-09-17 06:32:12 +0000
committerLev Walkin <vlm@lionet.info>2004-09-17 06:32:12 +0000
commit8dd0eedc2d59a465622bf7412a9737269a846a06 (patch)
treefbbd26e445d6b7f7c927ef21cb207c224057da80 /libasn1compiler
parentf6ac3c8b54ea5015c744fe44b47dfb06e52daec6 (diff)
better type naming
Diffstat (limited to 'libasn1compiler')
-rw-r--r--libasn1compiler/asn1c_C.c5
-rw-r--r--libasn1compiler/asn1c_misc.c24
2 files changed, 11 insertions, 18 deletions
diff --git a/libasn1compiler/asn1c_C.c b/libasn1compiler/asn1c_C.c
index 0e356aeb..a5d04c6b 100644
--- a/libasn1compiler/asn1c_C.c
+++ b/libasn1compiler/asn1c_C.c
@@ -452,7 +452,7 @@ asn1c_lang_C_type_SEx_OF(arg_t *arg) {
arg->embed--;
assert(arg->target->target == OT_TYPE_DECLS);
} else {
- OUT("%s", asn1c_type_name(arg, memb, TNF_RSAFE));
+ OUT("%s", asn1c_type_name(arg, memb, TNF_CTYPE));
}
OUT(") list;\n");
INDENT(-1);
@@ -728,8 +728,7 @@ asn1c_lang_C_type_SIMPLE_TYPE(arg_t *arg) {
if(arg->embed) {
REDIR(OT_TYPE_DECLS);
- OUT("%s\t", asn1c_type_name(arg, arg->expr,
- expr->marker.flags?TNF_RSAFE:TNF_CTYPE));
+ OUT("%s\t", asn1c_type_name(arg, arg->expr, TNF_CTYPE));
OUT("%s", expr->marker.flags?"*":" ");
OUT("%s", MKID(expr->Identifier));
if((expr->marker.flags & EM_DEFAULT) == EM_DEFAULT)
diff --git a/libasn1compiler/asn1c_misc.c b/libasn1compiler/asn1c_misc.c
index 1c4912d6..86edb52b 100644
--- a/libasn1compiler/asn1c_misc.c
+++ b/libasn1compiler/asn1c_misc.c
@@ -112,23 +112,17 @@ asn1c_type_name(arg_t *arg, asn1p_expr_t *expr, enum tnfmt _format) {
return asn1c_type_name(&tmp, tmp.expr, _format);
}
- if(_format == TNF_RSAFE || _format == TNF_CTYPE) {
+ if(_format == TNF_CTYPE) {
/*
- * The recursion-safe format is requested.
- * The problem here is that only constructed types
- * might be referenced with "struct".
- * Change RSAFE to CTYPE if the terminal type
- * is primitive.
+ * If the component references the type itself,
+ * switch to a recursion safe type representation
+ * ("struct foo" instead of "foo_t").
*/
asn1p_expr_t *terminal;
terminal = asn1f_find_terminal_type_ex(
- arg->asn, arg->mod, arg->expr);
- if(terminal) {
- if(terminal->expr_type
- & (ASN_BASIC_MASK | ASN_STRING_MASK))
- _format = TNF_CTYPE;
- if(terminal == top_parent)
- _format = TNF_RSAFE;
+ arg->asn, arg->mod, expr);
+ if(terminal && terminal == top_parent) {
+ _format = TNF_RSAFE;
}
}
break;
@@ -179,7 +173,7 @@ asn1c_type_name(arg_t *arg, asn1p_expr_t *expr, enum tnfmt _format) {
_format = TNF_CTYPE;
typename = ASN_EXPR_TYPE2STR(expr->expr_type);
} else {
- _format = TNF_SAFE;
+ _format = TNF_RSAFE;
typename = expr->Identifier;
}
}
@@ -196,7 +190,7 @@ asn1c_type_name(arg_t *arg, asn1p_expr_t *expr, enum tnfmt _format) {
return asn1c_make_identifier(0, "struct", " ", typename, 0);
}
- assert("!unreachable");
+ assert(!"unreachable");
return typename;
}