REAL support
diff --git a/libasn1compiler/asn1c_C.c b/libasn1compiler/asn1c_C.c
index 485e990..f17a0d6 100644
--- a/libasn1compiler/asn1c_C.c
+++ b/libasn1compiler/asn1c_C.c
@@ -78,45 +78,21 @@
#define MKID(id) asn1c_make_identifier(0, (id), 0)
int
-asn1c_lang_C_type_ENUMERATED(arg_t *arg) {
- asn1p_expr_t *expr = arg->expr;
- asn1p_expr_t *v;
-
+asn1c_lang_C_type_REAL(arg_t *arg) {
REDIR(OT_DEPS);
-
- OUT("typedef enum %s {\n", MKID(expr->Identifier));
- TQ_FOR(v, &(expr->members), next) {
- switch(v->expr_type) {
- case A1TC_UNIVERVAL:
- OUT("\t%s\t= %lld,\n",
- asn1c_make_identifier(0,
- expr->Identifier,
- v->Identifier, 0),
- v->value->value.v_integer);
- break;
- case A1TC_EXTENSIBLE:
- OUT("\t/*\n");
- OUT("\t * Enumeration is extensible\n");
- OUT("\t */\n");
- break;
- default:
- return -1;
- }
- }
- OUT("} %s_e;\n", MKID(expr->Identifier));
-
return asn1c_lang_C_type_SIMPLE_TYPE(arg);
}
-
int
-asn1c_lang_C_type_INTEGER(arg_t *arg) {
+asn1c_lang_C_type_common_INTEGER(arg_t *arg) {
asn1p_expr_t *expr = arg->expr;
asn1p_expr_t *v;
REDIR(OT_DEPS);
- if(TQ_FIRST(&(expr->members))) {
+ if(expr->expr_type == ASN_BASIC_ENUMERATED
+ || TQ_FIRST(&(expr->members))
+ ) {
OUT("typedef enum %s {\n", MKID(expr->Identifier));
TQ_FOR(v, &(expr->members), next) {
switch(v->expr_type) {
@@ -127,6 +103,11 @@
v->Identifier, 0),
v->value->value.v_integer);
break;
+ case A1TC_EXTENSIBLE:
+ OUT("\t/*\n");
+ OUT("\t * Enumeration is extensible\n");
+ OUT("\t */\n");
+ break;
default:
return -1;
}