00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef lestes__md__types__tm_data_type_g_hh__included
00010 #define lestes__md__types__tm_data_type_g_hh__included
00011
00012 #include <lestes/md/common.hh>
00013 #include <lestes/md/types/tm_data_type_base.g.hh>
00014 #include <lestes/md/types/tm_data_type.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(lang);
00025 package(cplus);
00026 package(sem);
00027 class ss_declaration;
00028 end_package(sem);
00029 end_package(cplus);
00030 end_package(lang);
00031 end_package(lestes);
00032
00033 package(lestes);
00034 package(lang);
00035 package(cplus);
00036 package(sem);
00037 class ss_type;
00038 end_package(sem);
00039 end_package(cplus);
00040 end_package(lang);
00041 end_package(lestes);
00042
00043 package(lestes);
00044 package(lang);
00045 package(cplus);
00046 package(sem);
00047 class ss_class;
00048 end_package(sem);
00049 end_package(cplus);
00050 end_package(lang);
00051 end_package(lestes);
00052
00053 package(lestes);
00054 package(lang);
00055 package(cplus);
00056 package(sem);
00057 class ss_union;
00058 end_package(sem);
00059 end_package(cplus);
00060 end_package(lang);
00061 end_package(lestes);
00062
00063 package(lestes);
00064 package(lang);
00065 package(cplus);
00066 package(sem);
00067 class ss_array;
00068 end_package(sem);
00069 end_package(cplus);
00070 end_package(lang);
00071 end_package(lestes);
00072
00073 package(lestes);
00074 package(md);
00075 package(registers);
00076 class tm_register;
00077 end_package(registers);
00078 end_package(md);
00079 end_package(lestes);
00080
00081 package(lestes);
00082 package(md);
00083 package(types);
00084
00085
00086 class tm_dt_simple;
00087 class tm_dt_bitfield;
00088 class tm_dt_array;
00089 class tm_dt_union;
00090 class tm_dt_struct;
00091 class tm_dt_struct_member;
00092
00093
00094 class tm_dt_simple : public tm_dt_simple_base {
00095 public:
00096
00097 static ptr< ::lestes::std::map< dt_id_type, srp< tm_dt_simple > > > id_to_instance_get();
00098
00099
00100 static void id_to_instance_set(const ptr< ::lestes::std::map< dt_id_type, srp< tm_dt_simple > > > & );
00101
00102
00103 static ptr< tm_dt_simple > instance(dt_id_type id);
00104
00105
00106
00107 static ptr< tm_dt_simple > create (
00108 tm_data_type_base::id_type a__tm_data_type_base__id,
00109 format_type a__tm_data_type_base__format,
00110 ulint a__tm_data_type_base__bitwidth,
00111 ulint a__tm_data_type_base__alignment,
00112 ptr< ::lestes::md::registers::tm_register_base > a__tm_data_type_base__return_reg,
00113 lstring a__tm_data_type_base__asm_output,
00114 lstring a__tm_data_type_base__asm_decl);
00115
00116
00117
00118
00119 virtual ptr<reflection_list> reflection_get() const;
00120
00121 virtual ptr<field_list_list> field_values_get() const;
00122
00123 protected:
00124
00125 tm_dt_simple (
00126 tm_data_type_base::id_type a__tm_data_type_base__id,
00127 format_type a__tm_data_type_base__format,
00128 ulint a__tm_data_type_base__bitwidth,
00129 ulint a__tm_data_type_base__alignment,
00130 ptr< ::lestes::md::registers::tm_register_base > a__tm_data_type_base__return_reg,
00131 lstring a__tm_data_type_base__asm_output,
00132 lstring a__tm_data_type_base__asm_decl);
00133
00134
00135 virtual void gc_mark();
00136
00137 private:
00138
00139 static ptr< ::lestes::std::map< dt_id_type, srp< tm_dt_simple > > > id_to_instance;
00140 static ptr<reflection_list> reflection;
00141
00142 };
00143
00144
00145 class tm_dt_bitfield : public tm_dt_bitfield_base {
00146 public:
00147
00148 static ptr< tm_dt_bitfield > create(ptr< tm_dt_simple > type, ulint bitwidth);
00149
00150
00151
00152 static ptr< tm_dt_bitfield > create (
00153 tm_data_type_base::id_type a__tm_data_type_base__id,
00154 format_type a__tm_data_type_base__format,
00155 ulint a__tm_data_type_base__bitwidth,
00156 ulint a__tm_data_type_base__alignment,
00157 ptr< ::lestes::md::registers::tm_register_base > a__tm_data_type_base__return_reg,
00158 lstring a__tm_data_type_base__asm_output,
00159 lstring a__tm_data_type_base__asm_decl,
00160 ulint a__tm_dt_bitfield_base__bitfield_width);
00161
00162
00163
00164
00165 virtual ptr<reflection_list> reflection_get() const;
00166
00167 virtual ptr<field_list_list> field_values_get() const;
00168
00169 protected:
00170
00171 tm_dt_bitfield (
00172 tm_data_type_base::id_type a__tm_data_type_base__id,
00173 format_type a__tm_data_type_base__format,
00174 ulint a__tm_data_type_base__bitwidth,
00175 ulint a__tm_data_type_base__alignment,
00176 ptr< ::lestes::md::registers::tm_register_base > a__tm_data_type_base__return_reg,
00177 lstring a__tm_data_type_base__asm_output,
00178 lstring a__tm_data_type_base__asm_decl,
00179 ulint a__tm_dt_bitfield_base__bitfield_width);
00180
00181
00182 virtual void gc_mark();
00183
00184 private:
00185 static ptr<reflection_list> reflection;
00186
00187 };
00188
00189
00190 class tm_dt_array : public tm_dt_array_base {
00191 public:
00192
00193 static ptr< ::lestes::std::map< srp< ::lestes::lang::cplus::sem::ss_array >, srp< tm_dt_array > > > id_to_instance_get();
00194
00195
00196 static void id_to_instance_set(const ptr< ::lestes::std::map< srp< ::lestes::lang::cplus::sem::ss_array >, srp< tm_dt_array > > > & );
00197
00198
00199 static ptr< tm_dt_array > instance(ptr< ::lestes::lang::cplus::sem::ss_array > sst);
00200
00201
00202
00203 static ptr< tm_dt_array > create (
00204 tm_data_type_base::id_type a__tm_data_type_base__id,
00205 format_type a__tm_data_type_base__format,
00206 ulint a__tm_data_type_base__bitwidth,
00207 ulint a__tm_data_type_base__alignment,
00208 ptr< ::lestes::md::registers::tm_register_base > a__tm_data_type_base__return_reg,
00209 lstring a__tm_data_type_base__asm_output,
00210 lstring a__tm_data_type_base__asm_decl,
00211 t_size a__tm_dt_array_base__bound);
00212
00213
00214
00215
00216 virtual ptr<reflection_list> reflection_get() const;
00217
00218 virtual ptr<field_list_list> field_values_get() const;
00219
00220 protected:
00221
00222 tm_dt_array (
00223 tm_data_type_base::id_type a__tm_data_type_base__id,
00224 format_type a__tm_data_type_base__format,
00225 ulint a__tm_data_type_base__bitwidth,
00226 ulint a__tm_data_type_base__alignment,
00227 ptr< ::lestes::md::registers::tm_register_base > a__tm_data_type_base__return_reg,
00228 lstring a__tm_data_type_base__asm_output,
00229 lstring a__tm_data_type_base__asm_decl,
00230 t_size a__tm_dt_array_base__bound);
00231
00232
00233 virtual void gc_mark();
00234
00235 private:
00236
00237 static ptr< ::lestes::std::map< srp< ::lestes::lang::cplus::sem::ss_array >, srp< tm_dt_array > > > id_to_instance;
00238 static ptr<reflection_list> reflection;
00239
00240 };
00241
00242
00243 class tm_dt_union : public tm_dt_union_base {
00244 public:
00245
00246 static ptr< ::lestes::std::map< srp< ::lestes::lang::cplus::sem::ss_union >, srp< tm_dt_union > > > id_to_instance_get();
00247
00248
00249 static void id_to_instance_set(const ptr< ::lestes::std::map< srp< ::lestes::lang::cplus::sem::ss_union >, srp< tm_dt_union > > > & );
00250
00251
00252 static ptr< tm_dt_union > instance(ptr< ::lestes::lang::cplus::sem::ss_union > sst);
00253
00254
00255
00256 static ptr< tm_dt_union > create (
00257 tm_data_type_base::id_type a__tm_data_type_base__id,
00258 format_type a__tm_data_type_base__format,
00259 ulint a__tm_data_type_base__bitwidth,
00260 ulint a__tm_data_type_base__alignment,
00261 ptr< ::lestes::md::registers::tm_register_base > a__tm_data_type_base__return_reg,
00262 lstring a__tm_data_type_base__asm_output,
00263 lstring a__tm_data_type_base__asm_decl,
00264 ptr< ::lestes::std::list< srp< tm_data_type_base > > > a__tm_dt_union_base__types);
00265
00266
00267
00268
00269 virtual ptr<reflection_list> reflection_get() const;
00270
00271 virtual ptr<field_list_list> field_values_get() const;
00272
00273 protected:
00274
00275 tm_dt_union (
00276 tm_data_type_base::id_type a__tm_data_type_base__id,
00277 format_type a__tm_data_type_base__format,
00278 ulint a__tm_data_type_base__bitwidth,
00279 ulint a__tm_data_type_base__alignment,
00280 ptr< ::lestes::md::registers::tm_register_base > a__tm_data_type_base__return_reg,
00281 lstring a__tm_data_type_base__asm_output,
00282 lstring a__tm_data_type_base__asm_decl,
00283 ptr< ::lestes::std::list< srp< tm_data_type_base > > > a__tm_dt_union_base__types);
00284
00285
00286 virtual void gc_mark();
00287
00288 private:
00289
00290 static ptr< ::lestes::std::map< srp< ::lestes::lang::cplus::sem::ss_union >, srp< tm_dt_union > > > id_to_instance;
00291 static ptr<reflection_list> reflection;
00292
00293 };
00294
00295
00296 class tm_dt_struct : public tm_dt_struct_base {
00297 public:
00298
00299 static ptr< ::lestes::std::map< srp< ::lestes::lang::cplus::sem::ss_class >, srp< tm_dt_struct > > > id_to_instance_get();
00300
00301
00302 static void id_to_instance_set(const ptr< ::lestes::std::map< srp< ::lestes::lang::cplus::sem::ss_class >, srp< tm_dt_struct > > > & );
00303
00304
00305 static ptr< tm_dt_struct > instance(ptr< ::lestes::lang::cplus::sem::ss_class > sst);
00306
00307
00308
00309 static ptr< tm_dt_struct > create (
00310 tm_data_type_base::id_type a__tm_data_type_base__id,
00311 format_type a__tm_data_type_base__format,
00312 ulint a__tm_data_type_base__bitwidth,
00313 ulint a__tm_data_type_base__alignment,
00314 ptr< ::lestes::md::registers::tm_register_base > a__tm_data_type_base__return_reg,
00315 lstring a__tm_data_type_base__asm_output,
00316 lstring a__tm_data_type_base__asm_decl,
00317 ptr< ::lestes::std::list< srp< tm_dt_struct_member_base > > > a__tm_dt_struct_base__members);
00318
00319
00320
00321
00322 virtual ptr<reflection_list> reflection_get() const;
00323
00324 virtual ptr<field_list_list> field_values_get() const;
00325
00326 protected:
00327
00328 tm_dt_struct (
00329 tm_data_type_base::id_type a__tm_data_type_base__id,
00330 format_type a__tm_data_type_base__format,
00331 ulint a__tm_data_type_base__bitwidth,
00332 ulint a__tm_data_type_base__alignment,
00333 ptr< ::lestes::md::registers::tm_register_base > a__tm_data_type_base__return_reg,
00334 lstring a__tm_data_type_base__asm_output,
00335 lstring a__tm_data_type_base__asm_decl,
00336 ptr< ::lestes::std::list< srp< tm_dt_struct_member_base > > > a__tm_dt_struct_base__members);
00337
00338
00339 virtual void gc_mark();
00340
00341 private:
00342
00343 static ptr< ::lestes::std::map< srp< ::lestes::lang::cplus::sem::ss_class >, srp< tm_dt_struct > > > id_to_instance;
00344 static ptr<reflection_list> reflection;
00345
00346 };
00347
00348
00349 class tm_dt_struct_member : public tm_dt_struct_member_base {
00350 public:
00351
00352
00353 static ptr< tm_dt_struct_member > create (
00354 ulint a__tm_dt_struct_member_base__offset,
00355 ulint a__tm_dt_struct_member_base__bitwidth,
00356 ptr< tm_data_type_base > a__tm_dt_struct_member_base__type,
00357 ptr< ::lestes::lang::cplus::sem::ss_declaration > a__tm_dt_struct_member_base__ss_decl);
00358
00359
00360
00361
00362 virtual ptr<reflection_list> reflection_get() const;
00363
00364 virtual ptr<field_list_list> field_values_get() const;
00365
00366 protected:
00367
00368 tm_dt_struct_member (
00369 ulint a__tm_dt_struct_member_base__offset,
00370 ulint a__tm_dt_struct_member_base__bitwidth,
00371 ptr< tm_data_type_base > a__tm_dt_struct_member_base__type,
00372 ptr< ::lestes::lang::cplus::sem::ss_declaration > a__tm_dt_struct_member_base__ss_decl);
00373
00374
00375 virtual void gc_mark();
00376
00377 private:
00378 static ptr<reflection_list> reflection;
00379
00380 };
00381
00382
00383 end_package(types);
00384 end_package(md);
00385 end_package(lestes);
00386
00387 #endif // lestes__md__types__tm_data_type_g_hh__included