Remove all
[com/asn1c.git] / libasn1compiler / asn1compiler.c
diff --git a/libasn1compiler/asn1compiler.c b/libasn1compiler/asn1compiler.c
deleted file mode 100644 (file)
index c3741bc..0000000
+++ /dev/null
@@ -1,282 +0,0 @@
-#include "asn1c_internal.h"
-#include "asn1c_lang.h"
-#include "asn1c_out.h"
-#include "asn1c_save.h"
-#include "asn1c_ioc.h"
-#include "asn1c_naming.h"
-
-static void default_logger_cb(int, const char *fmt, ...);
-static int asn1c_compile_expr(arg_t *arg, const asn1c_ioc_table_and_objset_t *);
-static int asn1c_detach_streams(asn1p_expr_t *expr);
-
-int
-asn1_compile(asn1p_t *asn, const char *datadir, const char *destdir, enum asn1c_flags flags,
-               int argc, int optc, char **argv) {
-       arg_t arg_s;
-       arg_t *arg = &arg_s;
-       asn1p_module_t *mod;
-       int ret;
-
-       c_name_clash_finder_init();
-
-       /*
-        * Initialize target language.
-        */
-       ret = asn1c_with_language(ASN1C_LANGUAGE_C);
-       assert(ret == 0);
-
-       memset(arg, 0, sizeof(*arg));
-       arg->default_cb = asn1c_compile_expr;
-       arg->logger_cb = default_logger_cb;
-       arg->flags = flags;
-       arg->asn = asn;
-
-       /*
-        * Compile each individual top level structure.
-        */
-       TQ_FOR(mod, &(asn->modules), mod_next) {
-               TQ_FOR(arg->expr, &(mod->members), next) {
-                       arg->ns = asn1_namespace_new_from_module(mod, 0);
-
-                       compiler_streams_t *cs = NULL;
-
-                       if(asn1c_attach_streams(arg->expr))
-                               return -1;
-
-                       cs = arg->expr->data;
-                       cs->target = OT_TYPE_DECLS;
-                       arg->target = cs;
-
-                       ret = asn1c_compile_expr(arg, NULL);
-                       if(ret) {
-                               FATAL("Cannot compile \"%s\" (%x:%x) at line %d",
-                                       arg->expr->Identifier,
-                                       arg->expr->expr_type,
-                                       arg->expr->meta_type,
-                                       arg->expr->_lineno);
-                               return ret;
-                       }
-
-                       asn1_namespace_free(arg->ns);
-                       arg->ns = 0;
-               }
-       }
-
-       if(c_name_clash(arg)) {
-               if(arg->flags & A1C_COMPOUND_NAMES) {
-                       FATAL("Name clashes encountered even with -fcompound-names flag");
-                       /* Proceed further for better debugging. */
-               } else {
-                       FATAL("Use \"-fcompound-names\" flag to asn1c to resolve name clashes");
-                       if(arg->flags & A1C_PRINT_COMPILED) {
-                               /* Proceed further for better debugging. */
-                       } else {
-                               return -1;
-                       }
-               }
-       }
-
-       DEBUG("Saving compiled data");
-
-       c_name_clash_finder_destroy();
-
-       /*
-        * Save or print out the compiled result.
-        */
-       if(asn1c_save_compiled_output(arg, datadir, destdir, argc, optc, argv))
-               return -1;
-
-       TQ_FOR(mod, &(asn->modules), mod_next) {
-               TQ_FOR(arg->expr, &(mod->members), next) {
-                       asn1c_detach_streams(arg->expr);
-               }
-       }
-
-       return 0;
-}
-
-static int
-asn1c_compile_expr(arg_t *arg, const asn1c_ioc_table_and_objset_t *opt_ioc) {
-       asn1p_expr_t *expr = arg->expr;
-       int (*type_cb)(arg_t *);
-       int ret;
-
-       assert((int)expr->meta_type >= AMT_INVALID);
-       assert(expr->meta_type < AMT_EXPR_META_MAX);
-       assert((int)expr->expr_type >= A1TC_INVALID);
-       assert(expr->expr_type < ASN_EXPR_TYPE_MAX);
-
-       type_cb = asn1_lang_map[expr->meta_type][expr->expr_type].type_cb;
-       if(type_cb) {
-
-               DEBUG("Compiling %s at line %d",
-                       expr->Identifier,
-                       expr->_lineno);
-
-               if(expr->lhs_params && expr->spec_index == -1) {
-                       int i;
-                       ret = 0;
-                       DEBUG("Parameterized type %s at line %d: %s (%d)",
-                               expr->Identifier, expr->_lineno,
-                               expr->specializations.pspecs_count
-                               ? "compiling" : "unused, skipping",
-                               expr->specializations.pspecs_count);
-                       for(i = 0; i<expr->specializations.pspecs_count; i++) {
-                               arg->expr = expr->specializations
-                                               .pspec[i].my_clone;
-                               ret = asn1c_compile_expr(arg, opt_ioc);
-                               if(ret) break;
-                       }
-                       arg->expr = expr;       /* Restore */
-               } else {
-                       ret = type_cb(arg);
-               }
-       } else {
-               ret = -1;
-               /*
-                * Even if the target language compiler does not know
-                * how to compile the given expression, we know that
-                * certain expressions need not to be compiled at all.
-                */
-               switch(expr->meta_type) {
-               case AMT_OBJECT:
-               case AMT_OBJECTCLASS:
-               case AMT_OBJECTFIELD:
-               case AMT_VALUE:
-               case AMT_VALUESET:
-                       ret = 0;
-                       break;
-               default:
-                       break;
-               }
-       }
-
-       if(ret == -1) {
-               FATAL("Cannot compile \"%s\" (%x:%x) at line %d",
-                       arg->expr->Identifier,
-                       arg->expr->expr_type,
-                       arg->expr->meta_type,
-                       arg->expr->_lineno);
-               OUT("#error Cannot compile \"%s\" (%x/%x) at line %d\n",
-                       arg->expr->Identifier,
-                       arg->expr->meta_type,
-                       arg->expr->expr_type,
-                       arg->expr->_lineno
-               );
-       }
-
-       return ret;
-}
-
-int
-asn1c_attach_streams(asn1p_expr_t *expr) {
-       compiler_streams_t *cs;
-       int i;
-
-       if(expr->data)
-               return 0;       /* Already attached? */
-
-       expr->data = calloc(1, sizeof(compiler_streams_t));
-       if(expr->data == NULL)
-               return -1;
-
-       cs = expr->data;
-       for(i = 0; i < OT_MAX; i++) {
-               TQ_INIT(&(cs->destination[i].chunks));
-       }
-
-       return 0;
-}
-
-int
-asn1c_detach_streams(asn1p_expr_t *expr) {
-       compiler_streams_t *cs;
-       out_chunk_t *m;
-       int i;
-
-       if(!expr->data)
-               return 0;       /* Already detached? */
-
-       cs = expr->data;
-       for(i = 0; i < OT_MAX; i++) {
-               while((m = TQ_REMOVE(&(cs->destination[i].chunks), next))) {
-                       free(m->buf);
-                       free(m);
-               }
-       }
-       free(expr->data);
-       expr->data = (void *)NULL;
-
-       return 0;
-}
-
-static void
-default_logger_cb(int _severity, const char *fmt, ...) {
-       va_list ap;
-       char *pfx = "";
-
-       switch(_severity) {
-       case -1: pfx = "DEBUG: "; break;
-       case 0: pfx = "WARNING: "; break;
-       case 1: pfx = "FATAL: "; break;
-       }
-
-       fprintf(stderr, "%s", pfx);
-       va_start(ap, fmt);
-       vfprintf(stderr, fmt, ap);
-       va_end(ap);
-       fprintf(stderr, "\n");
-}
-
-static void
-asn1c_debug_expr_naming(arg_t *arg) {
-    asn1p_expr_t *expr = arg->expr;
-
-    printf("%s: ", expr->Identifier);
-    printf("%s\n", c_names_format(c_name(arg)));
-
-    printf("\n");
-
-}
-
-void
-asn1c_debug_type_naming(asn1p_t *asn, enum asn1c_flags flags,
-                        char **asn_type_names) {
-    arg_t arg_s;
-    arg_t *arg = &arg_s;
-       asn1p_module_t *mod;
-
-    memset(arg, 0, sizeof(*arg));
-       arg->logger_cb = default_logger_cb;
-       arg->flags = flags;
-       arg->asn = asn;
-
-       c_name_clash_finder_init();
-
-       /*
-        * Compile each individual top level structure.
-        */
-       TQ_FOR(mod, &(asn->modules), mod_next) {
-        int namespace_shown = 0;
-               TQ_FOR(arg->expr, &(mod->members), next) {
-                       arg->ns = asn1_namespace_new_from_module(mod, 0);
-
-            for(char **t = asn_type_names; *t; t++) {
-                if(strcmp(*t, arg->expr->Identifier) == 0) {
-                    if(!namespace_shown) {
-                        namespace_shown = 1;
-                        printf("Namespace %s\n",
-                               asn1_namespace_string(arg->ns));
-                    }
-                    asn1c_debug_expr_naming(arg);
-                }
-            }
-
-            asn1_namespace_free(arg->ns);
-                       arg->ns = 0;
-               }
-       }
-
-       c_name_clash_finder_destroy();
-}
-