00001
00002
00003
00004
00005
00006
00007
00008 #ifndef lestes__md__tasm__asm_generator_g_hh__included
00009 #define lestes__md__tasm__asm_generator_g_hh__included
00010
00011 #include <lestes/std/vector.hh>
00012 #include <lestes/md/common.hh>
00013 #include <lestes/md/tasm/asm_generator_base.g.hh>
00014
00015 #include <lestes/std/objectize_macros.hh>
00016 package(lestes);
00017 package(backend_v2);
00018 package(structs);
00019 class func_data;
00020 end_package(structs);
00021 end_package(backend_v2);
00022 end_package(lestes);
00023
00024 package(lestes);
00025 package(md);
00026 package(tasm);
00027
00028
00029 class asm_generator;
00030
00031
00032 class asm_generator : public asm_generator_base {
00033 public:
00034 virtual void generate_tu_prologue();
00035
00036 virtual void generate_tu_body(ptr<vector<srp< ::lestes::backend_v2::structs::func_data> > > tu_data);
00037
00038 virtual void generate_tu_epilogue();
00039
00040 void process_function(ptr< ::lestes::backend_v2::structs::func_data > data);
00041
00042
00043
00044 static ptr< asm_generator > create (
00045 ::std::ostream& a__asm_generator_base__output);
00046
00047
00048
00049
00050 virtual ptr<reflection_list> reflection_get() const;
00051
00052 virtual ptr<field_list_list> field_values_get() const;
00053
00054 protected:
00055
00056 asm_generator (
00057 ::std::ostream& a__asm_generator_base__output);
00058
00059
00060 virtual void gc_mark();
00061
00062 private:
00063 static ptr<reflection_list> reflection;
00064
00065 };
00066
00067
00068 end_package(tasm);
00069 end_package(md);
00070 end_package(lestes);
00071
00072 #endif // lestes__md__tasm__asm_generator_g_hh__included