00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef lestes__md__registers__tm_register_base_g_hh__included
00010 #define lestes__md__registers__tm_register_base_g_hh__included
00011
00012 #include <lestes/std/list.hh>
00013 #include <lestes/std/set.hh>
00014 #include <lestes/md/common.hh>
00015 #include <lestes/md/types/tm_data_type_base.g.hh>
00016
00017 #include <lestes/std/objectize_macros.hh>
00018 package(lestes);
00019 package(std);
00020 class object;
00021 end_package(std);
00022 end_package(lestes);
00023
00024 package(lestes);
00025 package(md);
00026 package(registers);
00027
00028
00029 enum reg_flag_type {
00030 RF_NOSPILL=1
00031 };
00032
00033
00034 class tm_register_base;
00035
00036
00037
00038
00039
00040
00041
00042 class tm_register_base : public ::lestes::std::object {
00043 public:
00044 typedef ulint id_type;
00045
00046
00047 tm_register_base::id_type id_get() const;
00048
00049
00050 void id_set(tm_register_base::id_type);
00051
00052
00053 ulint bitwidth_get() const;
00054
00055
00056 void bitwidth_set(ulint);
00057
00058
00059 ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > compatible_types_get() const;
00060
00061
00062 void compatible_types_set(const ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > & );
00063
00064
00065 ptr< ::lestes::std::set< tm_register_base::id_type > > aliases_get() const;
00066
00067
00068 void aliases_set(const ptr< ::lestes::std::set< tm_register_base::id_type > > & );
00069
00070
00071 ptr< ::lestes::std::set< ulint > > move_templates_get() const;
00072
00073
00074 void move_templates_set(const ptr< ::lestes::std::set< ulint > > & );
00075
00076
00077 lstring asm_output_get() const;
00078
00079
00080 void asm_output_set(lstring);
00081
00082
00083 ulint flags_get() const;
00084
00085
00086 void flags_set(ulint);
00087
00088 bool is_unspillable();
00089
00090
00091
00092 static ptr< tm_register_base > create (
00093 tm_register_base::id_type a__tm_register_base__id,
00094 ulint a__tm_register_base__bitwidth,
00095 ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > a__tm_register_base__compatible_types,
00096 ptr< ::lestes::std::set< tm_register_base::id_type > > a__tm_register_base__aliases,
00097 ptr< ::lestes::std::set< ulint > > a__tm_register_base__move_templates,
00098 lstring a__tm_register_base__asm_output,
00099 ulint a__tm_register_base__flags);
00100
00101
00102 static ptr< tm_register_base > create (
00103 tm_register_base::id_type a__tm_register_base__id,
00104 ulint a__tm_register_base__bitwidth,
00105 ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > a__tm_register_base__compatible_types,
00106 ptr< ::lestes::std::set< tm_register_base::id_type > > a__tm_register_base__aliases,
00107 ptr< ::lestes::std::set< ulint > > a__tm_register_base__move_templates,
00108 lstring a__tm_register_base__asm_output);
00109
00110
00111
00112
00113 virtual ptr<reflection_list> reflection_get() const;
00114
00115 virtual ptr<field_list_list> field_values_get() const;
00116
00117 protected:
00118
00119 tm_register_base (
00120 tm_register_base::id_type a__tm_register_base__id,
00121 ulint a__tm_register_base__bitwidth,
00122 ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > a__tm_register_base__compatible_types,
00123 ptr< ::lestes::std::set< tm_register_base::id_type > > a__tm_register_base__aliases,
00124 ptr< ::lestes::std::set< ulint > > a__tm_register_base__move_templates,
00125 lstring a__tm_register_base__asm_output,
00126 ulint a__tm_register_base__flags);
00127
00128
00129 virtual void gc_mark();
00130
00131 private:
00132
00133 tm_register_base::id_type id;
00134
00135 ulint bitwidth;
00136
00137 srp< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > compatible_types;
00138
00139
00140
00141
00142
00143 srp< ::lestes::std::set< tm_register_base::id_type > > aliases;
00144
00145 srp< ::lestes::std::set< ulint > > move_templates;
00146
00147 lstring asm_output;
00148
00149 ulint flags;
00150 static ptr<reflection_list> reflection;
00151
00152 };
00153
00154
00155 end_package(registers);
00156 end_package(md);
00157 end_package(lestes);
00158
00159 package(lestes);
00160 package(std);
00161 specialize_objectize_for_enum( ::lestes::md::registers::reg_flag_type );
00162 end_package(std);
00163 end_package(lestes);
00164
00165 #endif // lestes__md__registers__tm_register_base_g_hh__included