00001
00002
00003
00004
00005
00006
00007
00008 #ifndef lestes__md__instructions__tm_instr_g_hh__included
00009 #define lestes__md__instructions__tm_instr_g_hh__included
00010
00011 #include <lestes/std/map.hh>
00012 #include <lestes/md/common.hh>
00013 #include <lestes/md/instructions/tm_instr_base.g.hh>
00014 #include <lestes/md/instructions/tm_instr.mdg.hh>
00015
00016 #include <lestes/std/objectize_macros.hh>
00017 package(lestes);
00018 package(std);
00019 class object;
00020 end_package(std);
00021 end_package(lestes);
00022
00023 package(lestes);
00024 package(md);
00025 package(instructions);
00026
00027
00028 class tm_instr;
00029 class tm_instr_op_mem;
00030 class tm_instr_op_reg;
00031 class tm_instr_op_imm;
00032
00033
00034 class tm_instr : public tm_instr_base {
00035 public:
00036
00037 static ptr< ::lestes::std::map< ulint, srp< tm_instr > > > id_to_instance_get();
00038
00039
00040 static void id_to_instance_set(const ptr< ::lestes::std::map< ulint, srp< tm_instr > > > & );
00041
00042
00043 static ptr< tm_instr > instance(ulint id);
00044
00045
00046
00047 static ptr< tm_instr > create (
00048 ulint a__tm_instr_base__id,
00049 ptr< ::lestes::std::vector< srp< tm_instr_op_base > > > a__tm_instr_base__operands_input,
00050 ptr< ::lestes::std::vector< srp< tm_instr_op_base > > > a__tm_instr_base__operands_output,
00051 lstring a__tm_instr_base__asm_output,
00052 ptr< ::lestes::std::map< ulint, lstring > > a__tm_instr_base__properties,
00053 ptr< ::lestes::std::set< ulint > > a__tm_instr_base__versions,
00054 ulint a__tm_instr_base__flags,
00055 ptr< ::lestes::md::instructions::execution_info > a__tm_instr_base__exec_info);
00056
00057
00058
00059
00060 virtual ptr<reflection_list> reflection_get() const;
00061
00062 virtual ptr<field_list_list> field_values_get() const;
00063
00064 protected:
00065
00066 tm_instr (
00067 ulint a__tm_instr_base__id,
00068 ptr< ::lestes::std::vector< srp< tm_instr_op_base > > > a__tm_instr_base__operands_input,
00069 ptr< ::lestes::std::vector< srp< tm_instr_op_base > > > a__tm_instr_base__operands_output,
00070 lstring a__tm_instr_base__asm_output,
00071 ptr< ::lestes::std::map< ulint, lstring > > a__tm_instr_base__properties,
00072 ptr< ::lestes::std::set< ulint > > a__tm_instr_base__versions,
00073 ulint a__tm_instr_base__flags,
00074 ptr< ::lestes::md::instructions::execution_info > a__tm_instr_base__exec_info);
00075
00076
00077 virtual void gc_mark();
00078
00079 private:
00080
00081 static ptr< ::lestes::std::map< ulint, srp< tm_instr > > > id_to_instance;
00082 static ptr<reflection_list> reflection;
00083
00084 };
00085
00086
00087 class tm_instr_op_mem : public tm_instr_op_mem_base {
00088 public:
00089
00090
00091 static ptr< tm_instr_op_mem > create (
00092 ulint a__tm_instr_op_base__id,
00093 ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > a__tm_instr_op_base__allowed_types,
00094 ptr< ::lestes::std::vector< ulint > > a__tm_instr_op_base__destroyed_by,
00095 ulint a__tm_instr_op_base__destroys);
00096
00097
00098 static ptr< tm_instr_op_mem > create (
00099 ulint a__tm_instr_op_base__id,
00100 ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > a__tm_instr_op_base__allowed_types);
00101
00102
00103
00104
00105 virtual ptr<reflection_list> reflection_get() const;
00106
00107 virtual ptr<field_list_list> field_values_get() const;
00108
00109 protected:
00110
00111 tm_instr_op_mem (
00112 ulint a__tm_instr_op_base__id,
00113 ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > a__tm_instr_op_base__allowed_types,
00114 ptr< ::lestes::std::vector< ulint > > a__tm_instr_op_base__destroyed_by,
00115 ulint a__tm_instr_op_base__destroys);
00116
00117
00118 virtual void gc_mark();
00119
00120 private:
00121 static ptr<reflection_list> reflection;
00122
00123 };
00124
00125
00126 class tm_instr_op_reg : public tm_instr_op_reg_base {
00127 public:
00128
00129
00130 static ptr< tm_instr_op_reg > create (
00131 ulint a__tm_instr_op_base__id,
00132 ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > a__tm_instr_op_base__allowed_types,
00133 ptr< ::lestes::std::vector< ulint > > a__tm_instr_op_base__destroyed_by,
00134 ulint a__tm_instr_op_base__destroys,
00135 ptr< ::lestes::std::set< ::lestes::md::registers::tm_register_base::id_type > > a__tm_instr_op_reg_base__allowed_registers);
00136
00137
00138 static ptr< tm_instr_op_reg > create (
00139 ulint a__tm_instr_op_base__id,
00140 ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > a__tm_instr_op_base__allowed_types,
00141 ptr< ::lestes::std::set< ::lestes::md::registers::tm_register_base::id_type > > a__tm_instr_op_reg_base__allowed_registers);
00142
00143
00144
00145
00146 virtual ptr<reflection_list> reflection_get() const;
00147
00148 virtual ptr<field_list_list> field_values_get() const;
00149
00150 protected:
00151
00152 tm_instr_op_reg (
00153 ulint a__tm_instr_op_base__id,
00154 ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > a__tm_instr_op_base__allowed_types,
00155 ptr< ::lestes::std::vector< ulint > > a__tm_instr_op_base__destroyed_by,
00156 ulint a__tm_instr_op_base__destroys,
00157 ptr< ::lestes::std::set< ::lestes::md::registers::tm_register_base::id_type > > a__tm_instr_op_reg_base__allowed_registers);
00158
00159
00160 virtual void gc_mark();
00161
00162 private:
00163 static ptr<reflection_list> reflection;
00164
00165 };
00166
00167
00168 class tm_instr_op_imm : public tm_instr_op_imm_base {
00169 public:
00170
00171
00172 static ptr< tm_instr_op_imm > create (
00173 ulint a__tm_instr_op_base__id,
00174 ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > a__tm_instr_op_base__allowed_types,
00175 ptr< ::lestes::std::vector< ulint > > a__tm_instr_op_base__destroyed_by,
00176 ulint a__tm_instr_op_base__destroys);
00177
00178
00179 static ptr< tm_instr_op_imm > create (
00180 ulint a__tm_instr_op_base__id,
00181 ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > a__tm_instr_op_base__allowed_types);
00182
00183
00184
00185
00186 virtual ptr<reflection_list> reflection_get() const;
00187
00188 virtual ptr<field_list_list> field_values_get() const;
00189
00190 protected:
00191
00192 tm_instr_op_imm (
00193 ulint a__tm_instr_op_base__id,
00194 ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > a__tm_instr_op_base__allowed_types,
00195 ptr< ::lestes::std::vector< ulint > > a__tm_instr_op_base__destroyed_by,
00196 ulint a__tm_instr_op_base__destroys);
00197
00198
00199 virtual void gc_mark();
00200
00201 private:
00202 static ptr<reflection_list> reflection;
00203
00204 };
00205
00206
00207 end_package(instructions);
00208 end_package(md);
00209 end_package(lestes);
00210
00211 #endif // lestes__md__instructions__tm_instr_g_hh__included