00001
00002
00003
00004
00005
00006
00007
00008 #ifndef lestes__md__tasm__asm_generator_base_g_hh__included
00009 #define lestes__md__tasm__asm_generator_base_g_hh__included
00010
00011 #include <lestes/std/vector.hh>
00012 #include <lestes/md/common.hh>
00013 #include <iosfwd>
00014
00015 #include <lestes/std/objectize_macros.hh>
00016 package(lestes);
00017 package(std);
00018 class object;
00019 end_package(std);
00020 end_package(lestes);
00021
00022 package(lestes);
00023 package(backend_v2);
00024 package(structs);
00025 class func_data;
00026 end_package(structs);
00027 end_package(backend_v2);
00028 end_package(lestes);
00029
00030 package(lestes);
00031 package(md);
00032 package(tasm);
00033
00034
00035 class asm_generator_base;
00036
00037
00038
00039
00040
00041
00042
00043 class asm_generator_base : public ::lestes::std::object {
00044 public:
00045
00046 ::std::ostream& output_get() const;
00047
00048
00049
00050
00051
00052
00053
00054
00055 virtual void generate_tu_prologue() abstract;
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065 virtual void generate_tu_body(ptr<vector<srp< ::lestes::backend_v2::structs::func_data> > > tu_data) abstract;
00066
00067
00068 virtual void generate_tu_epilogue() abstract;
00069
00070
00071
00072
00073 virtual ptr<reflection_list> reflection_get() const;
00074
00075 virtual ptr<field_list_list> field_values_get() const;
00076
00077 protected:
00078
00079 asm_generator_base (
00080 ::std::ostream& a__asm_generator_base__output);
00081
00082
00083 virtual void gc_mark();
00084
00085 private:
00086
00087 ::std::ostream& output;
00088 static ptr<reflection_list> reflection;
00089
00090 };
00091
00092
00093 end_package(tasm);
00094 end_package(md);
00095 end_package(lestes);
00096
00097 #endif // lestes__md__tasm__asm_generator_base_g_hh__included