00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef lestes__md__mem__mem_alloc_manager_g_hh__included
00010 #define lestes__md__mem__mem_alloc_manager_g_hh__included
00011
00012 #include <lestes/md/common.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(lang);
00033 package(cplus);
00034 package(sem);
00035 class ss_object_declaration;
00036 end_package(sem);
00037 end_package(cplus);
00038 end_package(lang);
00039 end_package(lestes);
00040
00041 package(lestes);
00042 package(backend_v2);
00043 package(intercode);
00044 class pi_abstract_function_call;
00045 end_package(intercode);
00046 end_package(backend_v2);
00047 end_package(lestes);
00048
00049 package(lestes);
00050 package(backend_v2);
00051 package(intercode);
00052 class pi_sp;
00053 end_package(intercode);
00054 end_package(backend_v2);
00055 end_package(lestes);
00056
00057 package(lestes);
00058 package(md);
00059 package(literals);
00060 class literal_info_base;
00061 end_package(literals);
00062 end_package(md);
00063 end_package(lestes);
00064
00065 package(lestes);
00066 package(backend_v2);
00067 package(intercode);
00068 class pi_mem_factory;
00069 end_package(intercode);
00070 end_package(backend_v2);
00071 end_package(lestes);
00072
00073 package(lestes);
00074 package(md);
00075 package(types);
00076 class tm_data_type_base;
00077 end_package(types);
00078 end_package(md);
00079 end_package(lestes);
00080
00081 package(lestes);
00082 package(lang);
00083 package(cplus);
00084 package(sem);
00085 class ss_type;
00086 end_package(sem);
00087 end_package(cplus);
00088 end_package(lang);
00089 end_package(lestes);
00090
00091 package(lestes);
00092 package(md);
00093 package(mem);
00094
00095
00096 class mem_alloc_manager;
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106 class mem_alloc_manager : public ::lestes::std::object {
00107 public:
00108
00109 static ptr< mem_alloc_manager > singleton_instance_get();
00110
00111
00112 static void singleton_instance_set(const ptr< mem_alloc_manager > &);
00113
00114
00115 virtual ptr< ::lestes::backend_v2::intercode::pi_mem_factory > allocate_local_tmp(ptr< ::lestes::lang::cplus::sem::ss_function_declaration > function, ptr< ::lestes::lang::cplus::sem::ss_type > decl);
00116
00117
00118 virtual ptr< ::lestes::backend_v2::intercode::pi_mem_factory > allocate_local_tmp(ptr< ::lestes::lang::cplus::sem::ss_function_declaration > function, ptr< ::lestes::md::types::tm_data_type_base > decl);
00119
00120
00121 virtual ptr< ::lestes::backend_v2::intercode::pi_mem_factory > allocate_local_var(ptr< ::lestes::lang::cplus::sem::ss_function_declaration > function, ptr< ::lestes::lang::cplus::sem::ss_object_declaration > decl);
00122
00123
00124 virtual ptr< ::lestes::backend_v2::intercode::pi_mem_factory > allocate_global_var(ptr< ::lestes::lang::cplus::sem::ss_object_declaration > decl);
00125
00126
00127 virtual void init_global_var(ptr< ::lestes::backend_v2::intercode::pi_mem_factory > mem, ptr< ::lestes::md::literals::literal_info_base > value);
00128
00129
00130 virtual void deallocate(ptr< ::lestes::backend_v2::intercode::pi_mem_factory > mem, ptr< ::lestes::backend_v2::intercode::pi_sp > psp, ptr< ::lestes::backend_v2::intercode::pi_sp > nsp);
00131
00132
00133 static ptr< mem_alloc_manager > instance();
00134
00135
00136
00137 static ptr< mem_alloc_manager > create (
00138 );
00139
00140
00141
00142
00143 virtual ptr<reflection_list> reflection_get() const;
00144
00145 virtual ptr<field_list_list> field_values_get() const;
00146
00147 protected:
00148
00149 mem_alloc_manager (
00150 );
00151
00152
00153 virtual void gc_mark();
00154
00155 private:
00156
00157 static ptr< mem_alloc_manager > singleton_instance;
00158 static ptr<reflection_list> reflection;
00159
00160 };
00161
00162
00163 end_package(mem);
00164 end_package(md);
00165 end_package(lestes);
00166
00167 #endif // lestes__md__mem__mem_alloc_manager_g_hh__included