DEADSOFTWARE

Добавлены строки в отладочную информацию класса (быстрохак)
[dsw-obn.git] / src / generator.h
index e988ba0c3f1c1e1bb5f8a8dd3a8dfb69d761a3f6..03e410ed384f35b620046cde9c969ea17bada88d 100644 (file)
@@ -6,12 +6,15 @@ void oberon_generator_init_context(oberon_context_t * ctx);
 void oberon_generator_init_type(oberon_context_t * ctx, oberon_type_t * type);
 void oberon_generator_init_record(oberon_context_t * ctx, oberon_type_t * type);
 void oberon_generator_init_var(oberon_context_t * ctx, oberon_object_t * var);
+void oberon_generator_init_temp_var(oberon_context_t * ctx, oberon_object_t * var);
 void oberon_generator_init_proc(oberon_context_t * ctx, oberon_object_t * proc);
 void oberon_generator_destroy_context(oberon_context_t * ctx);
 
 void oberon_generator_init_module(oberon_context_t * ctx, oberon_module_t * mod);
 void oberon_generator_fini_module(oberon_module_t * mod);
 
+void oberon_set_typecheck(oberon_object_t * var, bool enable);
+
 /*
  * Функции генерации тела модуля
  */
@@ -27,18 +30,23 @@ void oberon_generate_begin_proc(oberon_context_t * ctx, oberon_object_t * proc);
 void oberon_generate_end_proc(oberon_context_t * ctx);
 void oberon_generate_call_proc(oberon_context_t * ctx, oberon_expr_t * desig);
 
+gen_label_t * oberon_generator_reserve_label(oberon_context_t * ctx);
+void oberon_generate_label(oberon_context_t * ctx, gen_label_t * l);
+void oberon_generate_branch(oberon_context_t * ctx, oberon_expr_t * cond, bool gotoif, gen_label_t * l);
+void oberon_generate_goto(oberon_context_t * ctx, gen_label_t * l);
+
 /*
  * Функции генерации операторов
  */
 
 void oberon_generate_assign(oberon_context_t * ctx, oberon_expr_t * src, oberon_expr_t * dst);
+void oberon_generate_copy(oberon_context_t * ctx, oberon_expr_t * src, oberon_expr_t * dst);
+void oberon_generate_assert_n(oberon_context_t * ctx, oberon_expr_t * cond, int64_t n);
+void oberon_generate_assert(oberon_context_t * ctx, oberon_expr_t * cond);
+void oberon_generate_trap(oberon_context_t * ctx, int64_t n);
+void oberon_generate_halt(oberon_context_t * ctx, int64_t n);
 void oberon_generate_return(oberon_context_t * ctx, oberon_expr_t * expr);
 
-/*
- * Функции генерации кода
- */
+void oberon_set_out_directory(oberon_context_t * ctx, const char * path);
 
-void oberon_generate_code(oberon_context_t * ctx);
-void oberon_generator_dump(oberon_context_t * ctx, char * path);
-void * oberon_generator_get_procedure(oberon_context_t * ctx, const char * name);
-void * oberon_generator_get_var(oberon_context_t * ctx, const char * name);
+void oberon_set_line(oberon_context_t * ctx, int line);