00001
00002
00003
00004
00005
00006
00007
00008 #ifndef lestes__md__functions__preasmgen_body_changes_base_g_hh__included
00009 #define lestes__md__functions__preasmgen_body_changes_base_g_hh__included
00010
00011 #include <lestes/md/common.hh>
00012 #include <lestes/std/list.hh>
00013
00014 #include <lestes/std/objectize_macros.hh>
00015 package(lestes);
00016 package(std);
00017 class object;
00018 end_package(std);
00019 end_package(lestes);
00020
00021 package(lestes);
00022 package(lang);
00023 package(cplus);
00024 package(sem);
00025 class ss_function_declaration;
00026 end_package(sem);
00027 end_package(cplus);
00028 end_package(lang);
00029 end_package(lestes);
00030
00031 package(lestes);
00032 package(backend_v2);
00033 package(intercode);
00034 class ge_pi;
00035 end_package(intercode);
00036 end_package(backend_v2);
00037 end_package(lestes);
00038
00039 package(lestes);
00040 package(md);
00041 package(functions);
00042
00043
00044 class preasmgen_body_changes_base;
00045
00046
00047
00048
00049
00050
00051
00052 class preasmgen_body_changes_base : public ::lestes::std::object {
00053 public:
00054
00055 ptr< ::lestes::lang::cplus::sem::ss_function_declaration > function_get() const;
00056
00057
00058 void function_set(const ptr< ::lestes::lang::cplus::sem::ss_function_declaration > &);
00059
00060
00061 ptr< ::lestes::std::list< srp< ::lestes::backend_v2::intercode::ge_pi > > > body_get() const;
00062
00063
00064 void body_set(const ptr< ::lestes::std::list< srp< ::lestes::backend_v2::intercode::ge_pi > > > & );
00065
00066
00067 virtual void process_body() abstract;
00068
00069
00070 virtual ptr<list<srp< ::lestes::backend_v2::intercode::ge_pi > > > get_result() abstract;
00071
00072
00073
00074
00075 virtual ptr<reflection_list> reflection_get() const;
00076
00077 virtual ptr<field_list_list> field_values_get() const;
00078
00079 protected:
00080
00081 preasmgen_body_changes_base (
00082 ptr< ::lestes::lang::cplus::sem::ss_function_declaration > a__preasmgen_body_changes_base__function,
00083 ptr< ::lestes::std::list< srp< ::lestes::backend_v2::intercode::ge_pi > > > a__preasmgen_body_changes_base__body);
00084
00085
00086 virtual void gc_mark();
00087
00088 private:
00089
00090 srp< ::lestes::lang::cplus::sem::ss_function_declaration > function;
00091
00092 srp< ::lestes::std::list< srp< ::lestes::backend_v2::intercode::ge_pi > > > body;
00093 static ptr<reflection_list> reflection;
00094
00095 };
00096
00097
00098 end_package(functions);
00099 end_package(md);
00100 end_package(lestes);
00101
00102 #endif // lestes__md__functions__preasmgen_body_changes_base_g_hh__included