00001
00002
00003
00004
00005
00006
00007
00008 #ifndef lestes__backend_v2__structs__func_data_g_hh__included
00009 #define lestes__backend_v2__structs__func_data_g_hh__included
00010
00011 #include <lestes/std/list.hh>
00012 #include <lestes/std/vector.hh>
00013 #include <lestes/backend_v2/common.hh>
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(lang);
00024 package(cplus);
00025 package(sem);
00026 class ss_function_declaration;
00027 end_package(sem);
00028 end_package(cplus);
00029 end_package(lang);
00030 end_package(lestes);
00031
00032 package(lestes);
00033 package(backend_v2);
00034 package(intercode);
00035 class pi_pi;
00036 end_package(intercode);
00037 end_package(backend_v2);
00038 end_package(lestes);
00039
00040 package(lestes);
00041 package(backend_v2);
00042 package(intercode);
00043 class pi_sp;
00044 end_package(intercode);
00045 end_package(backend_v2);
00046 end_package(lestes);
00047
00048 package(lestes);
00049 package(backend_v2);
00050 package(intercode);
00051 class ge_pi;
00052 end_package(intercode);
00053 end_package(backend_v2);
00054 end_package(lestes);
00055
00056 package(lestes);
00057 package(backend_v2);
00058 package(workers);
00059 class basic_block;
00060 end_package(workers);
00061 end_package(backend_v2);
00062 end_package(lestes);
00063
00064 package(lestes);
00065 package(backend_v2);
00066 package(workers);
00067 class alloc_interval;
00068 end_package(workers);
00069 end_package(backend_v2);
00070 end_package(lestes);
00071
00072 package(lestes);
00073 package(backend_v2);
00074 package(structs);
00075
00076
00077 class func_data;
00078
00079
00080
00081
00082
00083
00084 class func_data : public ::lestes::std::object {
00085 public:
00086
00087 ptr< ::lestes::lang::cplus::sem::ss_function_declaration > function_decl_get() const;
00088
00089
00090 void function_decl_set(const ptr< ::lestes::lang::cplus::sem::ss_function_declaration > &);
00091
00092
00093 ptr< ::lestes::std::list< srp< ::lestes::backend_v2::intercode::pi_pi > > > pi_body_get() const;
00094
00095
00096 void pi_body_set(const ptr< ::lestes::std::list< srp< ::lestes::backend_v2::intercode::pi_pi > > > & );
00097
00098
00099 ptr< ::lestes::std::list< srp< ::lestes::backend_v2::intercode::ge_pi > > > ge_body_get() const;
00100
00101
00102 void ge_body_set(const ptr< ::lestes::std::list< srp< ::lestes::backend_v2::intercode::ge_pi > > > & );
00103
00104
00105 ptr< ::lestes::std::vector< srp< ::lestes::backend_v2::workers::basic_block > > > bbs_get() const;
00106
00107
00108 void bbs_set(const ptr< ::lestes::std::vector< srp< ::lestes::backend_v2::workers::basic_block > > > & );
00109
00110
00111 ptr< ::lestes::std::vector< srp< ::lestes::backend_v2::workers::alloc_interval > > > alloc_ints_get() const;
00112
00113
00114 void alloc_ints_set(const ptr< ::lestes::std::vector< srp< ::lestes::backend_v2::workers::alloc_interval > > > & );
00115
00116
00117
00118 static ptr< func_data > create (
00119 ptr< ::lestes::lang::cplus::sem::ss_function_declaration > a__func_data__function_decl,
00120 ptr< ::lestes::std::list< srp< ::lestes::backend_v2::intercode::pi_pi > > > a__func_data__pi_body,
00121 ptr< ::lestes::std::list< srp< ::lestes::backend_v2::intercode::ge_pi > > > a__func_data__ge_body,
00122 ptr< ::lestes::std::vector< srp< ::lestes::backend_v2::workers::basic_block > > > a__func_data__bbs,
00123 ptr< ::lestes::std::vector< srp< ::lestes::backend_v2::workers::alloc_interval > > > a__func_data__alloc_ints);
00124
00125
00126 static ptr< func_data > create (
00127 ptr< ::lestes::lang::cplus::sem::ss_function_declaration > a__func_data__function_decl);
00128
00129
00130
00131
00132 virtual ptr<reflection_list> reflection_get() const;
00133
00134 virtual ptr<field_list_list> field_values_get() const;
00135
00136 protected:
00137
00138 func_data (
00139 ptr< ::lestes::lang::cplus::sem::ss_function_declaration > a__func_data__function_decl,
00140 ptr< ::lestes::std::list< srp< ::lestes::backend_v2::intercode::pi_pi > > > a__func_data__pi_body,
00141 ptr< ::lestes::std::list< srp< ::lestes::backend_v2::intercode::ge_pi > > > a__func_data__ge_body,
00142 ptr< ::lestes::std::vector< srp< ::lestes::backend_v2::workers::basic_block > > > a__func_data__bbs,
00143 ptr< ::lestes::std::vector< srp< ::lestes::backend_v2::workers::alloc_interval > > > a__func_data__alloc_ints);
00144
00145
00146 virtual void gc_mark();
00147
00148 private:
00149
00150 srp< ::lestes::lang::cplus::sem::ss_function_declaration > function_decl;
00151
00152 srp< ::lestes::std::list< srp< ::lestes::backend_v2::intercode::pi_pi > > > pi_body;
00153
00154 srp< ::lestes::std::list< srp< ::lestes::backend_v2::intercode::ge_pi > > > ge_body;
00155
00156 srp< ::lestes::std::vector< srp< ::lestes::backend_v2::workers::basic_block > > > bbs;
00157
00158 srp< ::lestes::std::vector< srp< ::lestes::backend_v2::workers::alloc_interval > > > alloc_ints;
00159 static ptr<reflection_list> reflection;
00160
00161 };
00162
00163
00164 end_package(structs);
00165 end_package(backend_v2);
00166 end_package(lestes);
00167
00168 #endif // lestes__backend_v2__structs__func_data_g_hh__included