00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef lestes__backend_v2__intercode__pi_g_hh__included
00010 #define lestes__backend_v2__intercode__pi_g_hh__included
00011
00012 #include <lestes/backend_v2/common.hh>
00013 #include <lestes/std/map.hh>
00014 #include <lestes/intercode/intercode.g.hh>
00015 #include <lestes/backend_v2/intercode/ge.g.hh>
00016
00017 #include <lestes/std/objectize_macros.hh>
00018 package(lestes);
00019 package(md);
00020 package(literals);
00021 class literal_info_base;
00022 end_package(literals);
00023 end_package(md);
00024 end_package(lestes);
00025
00026 package(lestes);
00027 package(backend_v2);
00028 package(structs);
00029 class pi_operands;
00030 end_package(structs);
00031 end_package(backend_v2);
00032 end_package(lestes);
00033
00034 package(lestes);
00035 package(backend_v2);
00036 package(intercode);
00037 class pi_mem_factory;
00038 end_package(intercode);
00039 end_package(backend_v2);
00040 end_package(lestes);
00041
00042 package(lestes);
00043 package(backend_v2);
00044 package(intercode);
00045 class ge_operand;
00046 end_package(intercode);
00047 end_package(backend_v2);
00048 end_package(lestes);
00049
00050 package(lestes);
00051 package(md);
00052 package(types);
00053 class tm_data_type_base;
00054 end_package(types);
00055 end_package(md);
00056 end_package(lestes);
00057
00058 package(lestes);
00059 package(lang);
00060 package(cplus);
00061 package(sem);
00062 class ss_label;
00063 end_package(sem);
00064 end_package(cplus);
00065 end_package(lang);
00066 end_package(lestes);
00067
00068 package(lestes);
00069 package(lang);
00070 package(cplus);
00071 package(sem);
00072 class ss_declaration;
00073 end_package(sem);
00074 end_package(cplus);
00075 end_package(lang);
00076 end_package(lestes);
00077
00078 package(lestes);
00079 package(lang);
00080 package(cplus);
00081 package(sem);
00082 class ss_function_declaration;
00083 end_package(sem);
00084 end_package(cplus);
00085 end_package(lang);
00086 end_package(lestes);
00087
00088 package(lestes);
00089 package(lang);
00090 package(cplus);
00091 package(lex);
00092 class token_value;
00093 end_package(lex);
00094 end_package(cplus);
00095 end_package(lang);
00096 end_package(lestes);
00097
00098 package(lestes);
00099 package(backend_v2);
00100 package(intercode);
00101
00102
00103 class visitor_pi_pi2pi_operands_gen_base;
00104 class visitor_pi_pi2ulint_gen_base;
00105 class visitor_pi_pi2ge_pi_gen_base;
00106 class visitor_pi_operand2ge_operand_gen_base;
00107 class pi_pi;
00108 class visitor_pi_pi2pi_operands_gen_base;
00109 class visitor_pi_pi2ulint_gen_base;
00110 class visitor_pi_pi2ge_pi_gen_base;
00111 class pi_branch;
00112 class pi_conditional_branch;
00113 class pi_uconditional_branch;
00114 class pi_branch_multiple;
00115 class pi_cb_single_label_target;
00116 class pi_cb_single_address_target;
00117 class pi_ub_single_label_target;
00118 class pi_ub_single_address_target;
00119 class pi_branch_multiple_label_target;
00120 class pi_branch_multiple_address_target;
00121 class pi_bpi;
00122 class pi_tpi;
00123 class pi_abstract_function_call;
00124 class pi_bdtpi;
00125 class pi_abstract_move;
00126 class pi_abstract_move_st;
00127 class pi_abstract_move_dt;
00128 class pi_indirect_store;
00129 class pi_indirect_load;
00130 class pi_bstpi;
00131 class pi_tstpi;
00132 class pi_tdtpi;
00133 class pi_sp;
00134 class pi_add;
00135 class pi_sub;
00136 class pi_mul;
00137 class pi_div;
00138 class pi_divrni;
00139 class pi_divrpi;
00140 class pi_divrz;
00141 class pi_mod;
00142 class pi_rem;
00143 class pi_neg;
00144 class pi_gat;
00145 class pi_shl;
00146 class pi_shr;
00147 class pi_sal;
00148 class pi_sar;
00149 class pi_band;
00150 class pi_bor;
00151 class pi_bxor;
00152 class pi_bnot;
00153 class pi_land;
00154 class pi_lor;
00155 class pi_lxor;
00156 class pi_lnot;
00157 class pi_cvt;
00158 class pi_cmp;
00159 class pi_mov;
00160 class pi_ld;
00161 class pi_lda;
00162 class pi_ldi;
00163 class pi_ldp;
00164 class pi_ldv;
00165 class pi_ldpv;
00166 class pi_st;
00167 class pi_sti;
00168 class pi_stp;
00169 class pi_stv;
00170 class pi_stiv;
00171 class pi_stpv;
00172 class pi_call;
00173 class pi_icall;
00174 class pi_callv;
00175 class pi_icallv;
00176 class pi_ba;
00177 class pi_bn;
00178 class pi_bt;
00179 class pi_bf;
00180 class pi_bm;
00181 class pi_bg;
00182 class pi_bl;
00183 class pi_be;
00184 class pi_bng;
00185 class pi_bnl;
00186 class pi_bne;
00187 class pi_iba;
00188 class pi_ibn;
00189 class pi_ibm;
00190 class pi_ibg;
00191 class pi_ibl;
00192 class pi_ibe;
00193 class pi_ibng;
00194 class pi_ibnl;
00195 class pi_ibne;
00196 class pi_leave;
00197 class pi_sbg;
00198 class pi_sbl;
00199 class pi_sbe;
00200 class pi_sbng;
00201 class pi_sbnl;
00202 class pi_sbne;
00203 class pi_operand;
00204 class visitor_pi_operand2ge_operand_gen_base;
00205 class pi_non_mem;
00206 class pi_preg;
00207 class pi_lit;
00208 class pi_mem;
00209 class pi_mem_decl;
00210 class pi_mem_lit;
00211 class pi_mem_member;
00212 class pi_mem_stack;
00213 class pi_mem_preg;
00214 class pi_mem_temp;
00215 class pi_mem_ptr_deref;
00216
00217
00218
00219 class pi_pi : public ::lestes::intercode::pi_base {
00220 public:
00221
00222 ptr< pi_pi > psp_get() const;
00223
00224
00225 void psp_set(const ptr< pi_pi > &);
00226
00227
00228 ptr< pi_pi > nsp_get() const;
00229
00230
00231 void nsp_set(const ptr< pi_pi > &);
00232
00233
00234 ulint level_get() const;
00235
00236
00237 void level_set(ulint);
00238
00239 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v ) abstract;
00240 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v ) abstract;
00241 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v ) abstract;
00242
00243
00244
00245 virtual ptr<reflection_list> reflection_get() const;
00246
00247 virtual ptr<field_list_list> field_values_get() const;
00248
00249 protected:
00250
00251 pi_pi (
00252 ptr< pi_pi > a__pi_pi__psp,
00253 ptr< pi_pi > a__pi_pi__nsp,
00254 ulint a__pi_pi__level);
00255
00256
00257 virtual void gc_mark();
00258
00259 private:
00260
00261
00262
00263
00264
00265
00266
00267 srp< pi_pi > psp;
00268
00269
00270
00271
00272
00273
00274
00275 srp< pi_pi > nsp;
00276
00277 ulint level;
00278 static ptr<reflection_list> reflection;
00279
00280 };
00281
00282
00283
00284 class pi_branch : public pi_pi {
00285 public:
00286 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v ) abstract;
00287 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v ) abstract;
00288 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v ) abstract;
00289
00290
00291
00292 virtual ptr<reflection_list> reflection_get() const;
00293
00294 virtual ptr<field_list_list> field_values_get() const;
00295
00296 protected:
00297
00298 pi_branch (
00299 ptr< pi_pi > a__pi_pi__psp,
00300 ptr< pi_pi > a__pi_pi__nsp,
00301 ulint a__pi_pi__level);
00302
00303
00304 virtual void gc_mark();
00305
00306 private:
00307 static ptr<reflection_list> reflection;
00308
00309 };
00310
00311
00312
00313 class pi_conditional_branch : public pi_branch {
00314 public:
00315
00316 ptr< pi_preg > condition_get() const;
00317
00318
00319 void condition_set(const ptr< pi_preg > &);
00320
00321 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v ) abstract;
00322 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v ) abstract;
00323 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v ) abstract;
00324
00325
00326
00327 virtual ptr<reflection_list> reflection_get() const;
00328
00329 virtual ptr<field_list_list> field_values_get() const;
00330
00331 protected:
00332
00333 pi_conditional_branch (
00334 ptr< pi_pi > a__pi_pi__psp,
00335 ptr< pi_pi > a__pi_pi__nsp,
00336 ulint a__pi_pi__level,
00337 ptr< pi_preg > a__pi_conditional_branch__condition);
00338
00339
00340 virtual void gc_mark();
00341
00342 private:
00343
00344
00345
00346
00347 srp< pi_preg > condition;
00348 static ptr<reflection_list> reflection;
00349
00350 };
00351
00352
00353
00354 class pi_uconditional_branch : public pi_branch {
00355 public:
00356 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v ) abstract;
00357 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v ) abstract;
00358 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v ) abstract;
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 pi_uconditional_branch (
00369 ptr< pi_pi > a__pi_pi__psp,
00370 ptr< pi_pi > a__pi_pi__nsp,
00371 ulint a__pi_pi__level);
00372
00373
00374 virtual void gc_mark();
00375
00376 private:
00377 static ptr<reflection_list> reflection;
00378
00379 };
00380
00381
00382
00383 class pi_branch_multiple : public pi_branch {
00384 public:
00385
00386 ptr< pi_preg > value_get() const;
00387
00388
00389 void value_set(const ptr< pi_preg > &);
00390
00391 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v ) abstract;
00392 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v ) abstract;
00393 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v ) abstract;
00394
00395
00396
00397 virtual ptr<reflection_list> reflection_get() const;
00398
00399 virtual ptr<field_list_list> field_values_get() const;
00400
00401 protected:
00402
00403 pi_branch_multiple (
00404 ptr< pi_pi > a__pi_pi__psp,
00405 ptr< pi_pi > a__pi_pi__nsp,
00406 ulint a__pi_pi__level,
00407 ptr< pi_preg > a__pi_branch_multiple__value);
00408
00409
00410 virtual void gc_mark();
00411
00412 private:
00413
00414 srp< pi_preg > value;
00415 static ptr<reflection_list> reflection;
00416
00417 };
00418
00419
00420
00421 class pi_cb_single_label_target : public pi_conditional_branch {
00422 public:
00423
00424 ptr< pi_sp > destination_get() const;
00425
00426
00427 void destination_set(const ptr< pi_sp > &);
00428
00429 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v ) abstract;
00430 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v ) abstract;
00431 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v ) abstract;
00432
00433
00434
00435 virtual ptr<reflection_list> reflection_get() const;
00436
00437 virtual ptr<field_list_list> field_values_get() const;
00438
00439 protected:
00440
00441 pi_cb_single_label_target (
00442 ptr< pi_pi > a__pi_pi__psp,
00443 ptr< pi_pi > a__pi_pi__nsp,
00444 ulint a__pi_pi__level,
00445 ptr< pi_preg > a__pi_conditional_branch__condition,
00446 ptr< pi_sp > a__pi_cb_single_label_target__destination);
00447
00448
00449 virtual void gc_mark();
00450
00451 private:
00452
00453 srp< pi_sp > destination;
00454 static ptr<reflection_list> reflection;
00455
00456 };
00457
00458
00459
00460 class pi_cb_single_address_target : public pi_conditional_branch {
00461 public:
00462
00463 ptr< pi_preg > destination_get() const;
00464
00465
00466 void destination_set(const ptr< pi_preg > &);
00467
00468 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v ) abstract;
00469 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v ) abstract;
00470 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v ) abstract;
00471
00472
00473
00474 virtual ptr<reflection_list> reflection_get() const;
00475
00476 virtual ptr<field_list_list> field_values_get() const;
00477
00478 protected:
00479
00480 pi_cb_single_address_target (
00481 ptr< pi_pi > a__pi_pi__psp,
00482 ptr< pi_pi > a__pi_pi__nsp,
00483 ulint a__pi_pi__level,
00484 ptr< pi_preg > a__pi_conditional_branch__condition,
00485 ptr< pi_preg > a__pi_cb_single_address_target__destination);
00486
00487
00488 virtual void gc_mark();
00489
00490 private:
00491
00492 srp< pi_preg > destination;
00493 static ptr<reflection_list> reflection;
00494
00495 };
00496
00497
00498
00499 class pi_ub_single_label_target : public pi_uconditional_branch {
00500 public:
00501
00502 ptr< pi_sp > destination_get() const;
00503
00504
00505 void destination_set(const ptr< pi_sp > &);
00506
00507 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v ) abstract;
00508 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v ) abstract;
00509 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v ) abstract;
00510
00511
00512
00513 virtual ptr<reflection_list> reflection_get() const;
00514
00515 virtual ptr<field_list_list> field_values_get() const;
00516
00517 protected:
00518
00519 pi_ub_single_label_target (
00520 ptr< pi_pi > a__pi_pi__psp,
00521 ptr< pi_pi > a__pi_pi__nsp,
00522 ulint a__pi_pi__level,
00523 ptr< pi_sp > a__pi_ub_single_label_target__destination);
00524
00525
00526 virtual void gc_mark();
00527
00528 private:
00529
00530 srp< pi_sp > destination;
00531 static ptr<reflection_list> reflection;
00532
00533 };
00534
00535
00536
00537 class pi_ub_single_address_target : public pi_uconditional_branch {
00538 public:
00539
00540 ptr< pi_preg > destination_get() const;
00541
00542
00543 void destination_set(const ptr< pi_preg > &);
00544
00545 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v ) abstract;
00546 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v ) abstract;
00547 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v ) abstract;
00548
00549
00550
00551 virtual ptr<reflection_list> reflection_get() const;
00552
00553 virtual ptr<field_list_list> field_values_get() const;
00554
00555 protected:
00556
00557 pi_ub_single_address_target (
00558 ptr< pi_pi > a__pi_pi__psp,
00559 ptr< pi_pi > a__pi_pi__nsp,
00560 ulint a__pi_pi__level,
00561 ptr< pi_preg > a__pi_ub_single_address_target__destination);
00562
00563
00564 virtual void gc_mark();
00565
00566 private:
00567
00568 srp< pi_preg > destination;
00569 static ptr<reflection_list> reflection;
00570
00571 };
00572
00573
00574
00575 class pi_branch_multiple_label_target : public pi_branch_multiple {
00576 public:
00577
00578 ptr< ::lestes::std::map< srp< ::lestes::md::literals::literal_info_base >, srp< pi_sp > > > targets_get() const;
00579
00580
00581 void targets_set(const ptr< ::lestes::std::map< srp< ::lestes::md::literals::literal_info_base >, srp< pi_sp > > > & );
00582
00583 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v ) abstract;
00584 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v ) abstract;
00585 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v ) abstract;
00586
00587
00588
00589 virtual ptr<reflection_list> reflection_get() const;
00590
00591 virtual ptr<field_list_list> field_values_get() const;
00592
00593 protected:
00594
00595 pi_branch_multiple_label_target (
00596 ptr< pi_pi > a__pi_pi__psp,
00597 ptr< pi_pi > a__pi_pi__nsp,
00598 ulint a__pi_pi__level,
00599 ptr< pi_preg > a__pi_branch_multiple__value,
00600 ptr< ::lestes::std::map< srp< ::lestes::md::literals::literal_info_base >, srp< pi_sp > > > a__pi_branch_multiple_label_target__targets);
00601
00602
00603 virtual void gc_mark();
00604
00605 private:
00606
00607
00608
00609
00610 srp< ::lestes::std::map< srp< ::lestes::md::literals::literal_info_base >, srp< pi_sp > > > targets;
00611 static ptr<reflection_list> reflection;
00612
00613 };
00614
00615
00616
00617 class pi_branch_multiple_address_target : public pi_branch_multiple {
00618 public:
00619
00620 ptr< ::lestes::std::map< srp< ::lestes::md::literals::literal_info_base >, srp< pi_preg > > > targets_get() const;
00621
00622
00623 void targets_set(const ptr< ::lestes::std::map< srp< ::lestes::md::literals::literal_info_base >, srp< pi_preg > > > & );
00624
00625 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v ) abstract;
00626 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v ) abstract;
00627 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v ) abstract;
00628
00629
00630
00631 virtual ptr<reflection_list> reflection_get() const;
00632
00633 virtual ptr<field_list_list> field_values_get() const;
00634
00635 protected:
00636
00637 pi_branch_multiple_address_target (
00638 ptr< pi_pi > a__pi_pi__psp,
00639 ptr< pi_pi > a__pi_pi__nsp,
00640 ulint a__pi_pi__level,
00641 ptr< pi_preg > a__pi_branch_multiple__value,
00642 ptr< ::lestes::std::map< srp< ::lestes::md::literals::literal_info_base >, srp< pi_preg > > > a__pi_branch_multiple_address_target__targets);
00643
00644
00645 virtual void gc_mark();
00646
00647 private:
00648
00649
00650
00651
00652 srp< ::lestes::std::map< srp< ::lestes::md::literals::literal_info_base >, srp< pi_preg > > > targets;
00653 static ptr<reflection_list> reflection;
00654
00655 };
00656
00657
00658
00659
00660
00661
00662 class pi_bpi : public pi_pi {
00663 public:
00664
00665 ptr< pi_non_mem > source_get() const;
00666
00667
00668 void source_set(const ptr< pi_non_mem > &);
00669
00670
00671 ptr< pi_preg > destination_get() const;
00672
00673
00674 void destination_set(const ptr< pi_preg > &);
00675
00676 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v ) abstract;
00677 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v ) abstract;
00678 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v ) abstract;
00679
00680
00681
00682 virtual ptr<reflection_list> reflection_get() const;
00683
00684 virtual ptr<field_list_list> field_values_get() const;
00685
00686 protected:
00687
00688 pi_bpi (
00689 ptr< pi_pi > a__pi_pi__psp,
00690 ptr< pi_pi > a__pi_pi__nsp,
00691 ulint a__pi_pi__level,
00692 ptr< pi_non_mem > a__pi_bpi__source,
00693 ptr< pi_preg > a__pi_bpi__destination);
00694
00695
00696 virtual void gc_mark();
00697
00698 private:
00699
00700 srp< pi_non_mem > source;
00701
00702 srp< pi_preg > destination;
00703 static ptr<reflection_list> reflection;
00704
00705 };
00706
00707
00708
00709
00710
00711
00712 class pi_tpi : public pi_pi {
00713 public:
00714
00715 ptr< pi_non_mem > left_get() const;
00716
00717
00718 void left_set(const ptr< pi_non_mem > &);
00719
00720
00721 ptr< pi_non_mem > right_get() const;
00722
00723
00724 void right_set(const ptr< pi_non_mem > &);
00725
00726
00727 ptr< pi_preg > destination_get() const;
00728
00729
00730 void destination_set(const ptr< pi_preg > &);
00731
00732 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v ) abstract;
00733 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v ) abstract;
00734 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v ) abstract;
00735
00736
00737
00738 virtual ptr<reflection_list> reflection_get() const;
00739
00740 virtual ptr<field_list_list> field_values_get() const;
00741
00742 protected:
00743
00744 pi_tpi (
00745 ptr< pi_pi > a__pi_pi__psp,
00746 ptr< pi_pi > a__pi_pi__nsp,
00747 ulint a__pi_pi__level,
00748 ptr< pi_non_mem > a__pi_tpi__left,
00749 ptr< pi_non_mem > a__pi_tpi__right,
00750 ptr< pi_preg > a__pi_tpi__destination);
00751
00752
00753 virtual void gc_mark();
00754
00755 private:
00756
00757 srp< pi_non_mem > left;
00758
00759 srp< pi_non_mem > right;
00760
00761 srp< pi_preg > destination;
00762 static ptr<reflection_list> reflection;
00763
00764 };
00765
00766
00767
00768 class pi_abstract_function_call : public pi_pi {
00769 public:
00770
00771 ptr< ::lestes::std::list< srp< pi_operand > > > args_get() const;
00772
00773
00774 void args_set(const ptr< ::lestes::std::list< srp< pi_operand > > > & );
00775
00776
00777 ptr< pi_mem > this_arg_get() const;
00778
00779
00780 void this_arg_set(const ptr< pi_mem > &);
00781
00782 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v ) abstract;
00783 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v ) abstract;
00784 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v ) abstract;
00785
00786
00787
00788 virtual ptr<reflection_list> reflection_get() const;
00789
00790 virtual ptr<field_list_list> field_values_get() const;
00791
00792 protected:
00793
00794 pi_abstract_function_call (
00795 ptr< pi_pi > a__pi_pi__psp,
00796 ptr< pi_pi > a__pi_pi__nsp,
00797 ulint a__pi_pi__level,
00798 ptr< ::lestes::std::list< srp< pi_operand > > > a__pi_abstract_function_call__args,
00799 ptr< pi_mem > a__pi_abstract_function_call__this_arg);
00800
00801
00802 virtual void gc_mark();
00803
00804 private:
00805
00806 srp< ::lestes::std::list< srp< pi_operand > > > args;
00807
00808
00809
00810
00811 srp< pi_mem > this_arg;
00812 static ptr<reflection_list> reflection;
00813
00814 };
00815
00816
00817
00818
00819
00820
00821 class pi_bdtpi : public pi_bpi {
00822 public:
00823
00824 ptr< ::lestes::md::types::tm_data_type_base > type1_get() const;
00825
00826
00827 void type1_set(const ptr< ::lestes::md::types::tm_data_type_base > &);
00828
00829
00830 ptr< ::lestes::md::types::tm_data_type_base > type2_get() const;
00831
00832
00833 void type2_set(const ptr< ::lestes::md::types::tm_data_type_base > &);
00834
00835 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v ) abstract;
00836 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v ) abstract;
00837 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v ) abstract;
00838
00839
00840
00841 virtual ptr<reflection_list> reflection_get() const;
00842
00843 virtual ptr<field_list_list> field_values_get() const;
00844
00845 protected:
00846
00847 pi_bdtpi (
00848 ptr< pi_pi > a__pi_pi__psp,
00849 ptr< pi_pi > a__pi_pi__nsp,
00850 ulint a__pi_pi__level,
00851 ptr< pi_non_mem > a__pi_bpi__source,
00852 ptr< pi_preg > a__pi_bpi__destination,
00853 ptr< ::lestes::md::types::tm_data_type_base > a__pi_bdtpi__type1,
00854 ptr< ::lestes::md::types::tm_data_type_base > a__pi_bdtpi__type2);
00855
00856
00857 virtual void gc_mark();
00858
00859 private:
00860
00861 srp< ::lestes::md::types::tm_data_type_base > type1;
00862
00863 srp< ::lestes::md::types::tm_data_type_base > type2;
00864 static ptr<reflection_list> reflection;
00865
00866 };
00867
00868
00869
00870 class pi_abstract_move : public pi_pi {
00871 public:
00872 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v ) abstract;
00873 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v ) abstract;
00874 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v ) abstract;
00875
00876
00877
00878 virtual ptr<reflection_list> reflection_get() const;
00879
00880 virtual ptr<field_list_list> field_values_get() const;
00881
00882 protected:
00883
00884 pi_abstract_move (
00885 ptr< pi_pi > a__pi_pi__psp,
00886 ptr< pi_pi > a__pi_pi__nsp,
00887 ulint a__pi_pi__level);
00888
00889
00890 virtual void gc_mark();
00891
00892 private:
00893 static ptr<reflection_list> reflection;
00894
00895 };
00896
00897
00898
00899 class pi_abstract_move_st : public pi_abstract_move {
00900 public:
00901
00902 ptr< pi_operand > destination_get() const;
00903
00904
00905 void destination_set(const ptr< pi_operand > &);
00906
00907
00908 ptr< pi_operand > source_get() const;
00909
00910
00911 void source_set(const ptr< pi_operand > &);
00912
00913
00914 ptr< ::lestes::md::types::tm_data_type_base > type_get() const;
00915
00916
00917 void type_set(const ptr< ::lestes::md::types::tm_data_type_base > &);
00918
00919 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v ) abstract;
00920 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v ) abstract;
00921 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v ) abstract;
00922
00923
00924
00925 virtual ptr<reflection_list> reflection_get() const;
00926
00927 virtual ptr<field_list_list> field_values_get() const;
00928
00929 protected:
00930
00931 pi_abstract_move_st (
00932 ptr< pi_pi > a__pi_pi__psp,
00933 ptr< pi_pi > a__pi_pi__nsp,
00934 ulint a__pi_pi__level,
00935 ptr< pi_operand > a__pi_abstract_move_st__destination,
00936 ptr< pi_operand > a__pi_abstract_move_st__source,
00937 ptr< ::lestes::md::types::tm_data_type_base > a__pi_abstract_move_st__type);
00938
00939
00940 virtual void gc_mark();
00941
00942 private:
00943 srp< pi_operand > destination;
00944 srp< pi_operand > source;
00945
00946 srp< ::lestes::md::types::tm_data_type_base > type;
00947 static ptr<reflection_list> reflection;
00948
00949 };
00950
00951
00952
00953 class pi_abstract_move_dt : public pi_abstract_move {
00954 public:
00955
00956 ptr< pi_operand > destination_get() const;
00957
00958
00959 void destination_set(const ptr< pi_operand > &);
00960
00961
00962 ptr< pi_operand > source_get() const;
00963
00964
00965 void source_set(const ptr< pi_operand > &);
00966
00967
00968 ptr< ::lestes::md::types::tm_data_type_base > type1_get() const;
00969
00970
00971 void type1_set(const ptr< ::lestes::md::types::tm_data_type_base > &);
00972
00973
00974 ptr< ::lestes::md::types::tm_data_type_base > type2_get() const;
00975
00976
00977 void type2_set(const ptr< ::lestes::md::types::tm_data_type_base > &);
00978
00979 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v ) abstract;
00980 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v ) abstract;
00981 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v ) abstract;
00982
00983
00984
00985 virtual ptr<reflection_list> reflection_get() const;
00986
00987 virtual ptr<field_list_list> field_values_get() const;
00988
00989 protected:
00990
00991 pi_abstract_move_dt (
00992 ptr< pi_pi > a__pi_pi__psp,
00993 ptr< pi_pi > a__pi_pi__nsp,
00994 ulint a__pi_pi__level,
00995 ptr< pi_operand > a__pi_abstract_move_dt__destination,
00996 ptr< pi_operand > a__pi_abstract_move_dt__source,
00997 ptr< ::lestes::md::types::tm_data_type_base > a__pi_abstract_move_dt__type1,
00998 ptr< ::lestes::md::types::tm_data_type_base > a__pi_abstract_move_dt__type2);
00999
01000
01001 virtual void gc_mark();
01002
01003 private:
01004 srp< pi_operand > destination;
01005 srp< pi_operand > source;
01006
01007 srp< ::lestes::md::types::tm_data_type_base > type1;
01008
01009 srp< ::lestes::md::types::tm_data_type_base > type2;
01010 static ptr<reflection_list> reflection;
01011
01012 };
01013
01014
01015
01016 class pi_indirect_store : public pi_abstract_move {
01017 public:
01018
01019 ptr< pi_mem_ptr_deref > address_get() const;
01020
01021
01022 void address_set(const ptr< pi_mem_ptr_deref > &);
01023
01024
01025 ptr< pi_operand > value_get() const;
01026
01027
01028 void value_set(const ptr< pi_operand > &);
01029
01030
01031 ptr< ::lestes::md::types::tm_data_type_base > type1_get() const;
01032
01033
01034 void type1_set(const ptr< ::lestes::md::types::tm_data_type_base > &);
01035
01036
01037 ptr< ::lestes::md::types::tm_data_type_base > type2_get() const;
01038
01039
01040 void type2_set(const ptr< ::lestes::md::types::tm_data_type_base > &);
01041
01042 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v ) abstract;
01043 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v ) abstract;
01044 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v ) abstract;
01045
01046
01047
01048 virtual ptr<reflection_list> reflection_get() const;
01049
01050 virtual ptr<field_list_list> field_values_get() const;
01051
01052 protected:
01053
01054 pi_indirect_store (
01055 ptr< pi_pi > a__pi_pi__psp,
01056 ptr< pi_pi > a__pi_pi__nsp,
01057 ulint a__pi_pi__level,
01058 ptr< pi_mem_ptr_deref > a__pi_indirect_store__address,
01059 ptr< pi_operand > a__pi_indirect_store__value,
01060 ptr< ::lestes::md::types::tm_data_type_base > a__pi_indirect_store__type1,
01061 ptr< ::lestes::md::types::tm_data_type_base > a__pi_indirect_store__type2);
01062
01063
01064 virtual void gc_mark();
01065
01066 private:
01067
01068 srp< pi_mem_ptr_deref > address;
01069 srp< pi_operand > value;
01070
01071 srp< ::lestes::md::types::tm_data_type_base > type1;
01072
01073 srp< ::lestes::md::types::tm_data_type_base > type2;
01074 static ptr<reflection_list> reflection;
01075
01076 };
01077
01078
01079
01080 class pi_indirect_load : public pi_abstract_move {
01081 public:
01082
01083 ptr< pi_operand > value_get() const;
01084
01085
01086 void value_set(const ptr< pi_operand > &);
01087
01088
01089 ptr< pi_mem_ptr_deref > address_get() const;
01090
01091
01092 void address_set(const ptr< pi_mem_ptr_deref > &);
01093
01094
01095 ptr< ::lestes::md::types::tm_data_type_base > type1_get() const;
01096
01097
01098 void type1_set(const ptr< ::lestes::md::types::tm_data_type_base > &);
01099
01100
01101 ptr< ::lestes::md::types::tm_data_type_base > type2_get() const;
01102
01103
01104 void type2_set(const ptr< ::lestes::md::types::tm_data_type_base > &);
01105
01106 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v ) abstract;
01107 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v ) abstract;
01108 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v ) abstract;
01109
01110
01111
01112 virtual ptr<reflection_list> reflection_get() const;
01113
01114 virtual ptr<field_list_list> field_values_get() const;
01115
01116 protected:
01117
01118 pi_indirect_load (
01119 ptr< pi_pi > a__pi_pi__psp,
01120 ptr< pi_pi > a__pi_pi__nsp,
01121 ulint a__pi_pi__level,
01122 ptr< pi_operand > a__pi_indirect_load__value,
01123 ptr< pi_mem_ptr_deref > a__pi_indirect_load__address,
01124 ptr< ::lestes::md::types::tm_data_type_base > a__pi_indirect_load__type1,
01125 ptr< ::lestes::md::types::tm_data_type_base > a__pi_indirect_load__type2);
01126
01127
01128 virtual void gc_mark();
01129
01130 private:
01131 srp< pi_operand > value;
01132
01133 srp< pi_mem_ptr_deref > address;
01134
01135 srp< ::lestes::md::types::tm_data_type_base > type1;
01136
01137 srp< ::lestes::md::types::tm_data_type_base > type2;
01138 static ptr<reflection_list> reflection;
01139
01140 };
01141
01142
01143
01144
01145
01146
01147 class pi_bstpi : public pi_bpi {
01148 public:
01149
01150 ptr< ::lestes::md::types::tm_data_type_base > type_get() const;
01151
01152
01153 void type_set(const ptr< ::lestes::md::types::tm_data_type_base > &);
01154
01155 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v ) abstract;
01156 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v ) abstract;
01157 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v ) abstract;
01158
01159
01160
01161 virtual ptr<reflection_list> reflection_get() const;
01162
01163 virtual ptr<field_list_list> field_values_get() const;
01164
01165 protected:
01166
01167 pi_bstpi (
01168 ptr< pi_pi > a__pi_pi__psp,
01169 ptr< pi_pi > a__pi_pi__nsp,
01170 ulint a__pi_pi__level,
01171 ptr< pi_non_mem > a__pi_bpi__source,
01172 ptr< pi_preg > a__pi_bpi__destination,
01173 ptr< ::lestes::md::types::tm_data_type_base > a__pi_bstpi__type);
01174
01175
01176 virtual void gc_mark();
01177
01178 private:
01179
01180 srp< ::lestes::md::types::tm_data_type_base > type;
01181 static ptr<reflection_list> reflection;
01182
01183 };
01184
01185
01186
01187
01188
01189
01190 class pi_tstpi : public pi_tpi {
01191 public:
01192
01193 ptr< ::lestes::md::types::tm_data_type_base > type_get() const;
01194
01195
01196 void type_set(const ptr< ::lestes::md::types::tm_data_type_base > &);
01197
01198 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v ) abstract;
01199 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v ) abstract;
01200 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v ) abstract;
01201
01202
01203
01204 virtual ptr<reflection_list> reflection_get() const;
01205
01206 virtual ptr<field_list_list> field_values_get() const;
01207
01208 protected:
01209
01210 pi_tstpi (
01211 ptr< pi_pi > a__pi_pi__psp,
01212 ptr< pi_pi > a__pi_pi__nsp,
01213 ulint a__pi_pi__level,
01214 ptr< pi_non_mem > a__pi_tpi__left,
01215 ptr< pi_non_mem > a__pi_tpi__right,
01216 ptr< pi_preg > a__pi_tpi__destination,
01217 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
01218
01219
01220 virtual void gc_mark();
01221
01222 private:
01223
01224 srp< ::lestes::md::types::tm_data_type_base > type;
01225 static ptr<reflection_list> reflection;
01226
01227 };
01228
01229
01230
01231
01232
01233
01234 class pi_tdtpi : public pi_tpi {
01235 public:
01236
01237 ptr< ::lestes::md::types::tm_data_type_base > type1_get() const;
01238
01239
01240 void type1_set(const ptr< ::lestes::md::types::tm_data_type_base > &);
01241
01242
01243 ptr< ::lestes::md::types::tm_data_type_base > type2_get() const;
01244
01245
01246 void type2_set(const ptr< ::lestes::md::types::tm_data_type_base > &);
01247
01248 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v ) abstract;
01249 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v ) abstract;
01250 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v ) abstract;
01251
01252
01253
01254 virtual ptr<reflection_list> reflection_get() const;
01255
01256 virtual ptr<field_list_list> field_values_get() const;
01257
01258 protected:
01259
01260 pi_tdtpi (
01261 ptr< pi_pi > a__pi_pi__psp,
01262 ptr< pi_pi > a__pi_pi__nsp,
01263 ulint a__pi_pi__level,
01264 ptr< pi_non_mem > a__pi_tpi__left,
01265 ptr< pi_non_mem > a__pi_tpi__right,
01266 ptr< pi_preg > a__pi_tpi__destination,
01267 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tdtpi__type1,
01268 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tdtpi__type2);
01269
01270
01271 virtual void gc_mark();
01272
01273 private:
01274
01275 srp< ::lestes::md::types::tm_data_type_base > type1;
01276
01277 srp< ::lestes::md::types::tm_data_type_base > type2;
01278 static ptr<reflection_list> reflection;
01279
01280 };
01281
01282
01283
01284 class pi_sp : public pi_pi {
01285 public:
01286 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
01287 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
01288 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
01289
01290
01291 static ptr< pi_sp > create (
01292 ptr< pi_pi > a__pi_pi__psp,
01293 ptr< pi_pi > a__pi_pi__nsp,
01294 ulint a__pi_pi__level);
01295
01296
01297
01298
01299 virtual ptr<reflection_list> reflection_get() const;
01300
01301 virtual ptr<field_list_list> field_values_get() const;
01302
01303 protected:
01304
01305 pi_sp (
01306 ptr< pi_pi > a__pi_pi__psp,
01307 ptr< pi_pi > a__pi_pi__nsp,
01308 ulint a__pi_pi__level);
01309
01310
01311 virtual void gc_mark();
01312
01313 private:
01314 static ptr<reflection_list> reflection;
01315
01316 };
01317
01318
01319
01320
01321
01322
01323 class pi_add : public pi_tstpi {
01324 public:
01325 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
01326 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
01327 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
01328
01329
01330 static ptr< pi_add > create (
01331 ptr< pi_pi > a__pi_pi__psp,
01332 ptr< pi_pi > a__pi_pi__nsp,
01333 ulint a__pi_pi__level,
01334 ptr< pi_non_mem > a__pi_tpi__left,
01335 ptr< pi_non_mem > a__pi_tpi__right,
01336 ptr< pi_preg > a__pi_tpi__destination,
01337 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
01338
01339
01340
01341
01342 virtual ptr<reflection_list> reflection_get() const;
01343
01344 virtual ptr<field_list_list> field_values_get() const;
01345
01346 protected:
01347
01348 pi_add (
01349 ptr< pi_pi > a__pi_pi__psp,
01350 ptr< pi_pi > a__pi_pi__nsp,
01351 ulint a__pi_pi__level,
01352 ptr< pi_non_mem > a__pi_tpi__left,
01353 ptr< pi_non_mem > a__pi_tpi__right,
01354 ptr< pi_preg > a__pi_tpi__destination,
01355 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
01356
01357
01358 virtual void gc_mark();
01359
01360 private:
01361 static ptr<reflection_list> reflection;
01362
01363 };
01364
01365
01366
01367
01368
01369
01370 class pi_sub : public pi_tstpi {
01371 public:
01372 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
01373 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
01374 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
01375
01376
01377 static ptr< pi_sub > create (
01378 ptr< pi_pi > a__pi_pi__psp,
01379 ptr< pi_pi > a__pi_pi__nsp,
01380 ulint a__pi_pi__level,
01381 ptr< pi_non_mem > a__pi_tpi__left,
01382 ptr< pi_non_mem > a__pi_tpi__right,
01383 ptr< pi_preg > a__pi_tpi__destination,
01384 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
01385
01386
01387
01388
01389 virtual ptr<reflection_list> reflection_get() const;
01390
01391 virtual ptr<field_list_list> field_values_get() const;
01392
01393 protected:
01394
01395 pi_sub (
01396 ptr< pi_pi > a__pi_pi__psp,
01397 ptr< pi_pi > a__pi_pi__nsp,
01398 ulint a__pi_pi__level,
01399 ptr< pi_non_mem > a__pi_tpi__left,
01400 ptr< pi_non_mem > a__pi_tpi__right,
01401 ptr< pi_preg > a__pi_tpi__destination,
01402 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
01403
01404
01405 virtual void gc_mark();
01406
01407 private:
01408 static ptr<reflection_list> reflection;
01409
01410 };
01411
01412
01413
01414
01415
01416
01417 class pi_mul : public pi_tstpi {
01418 public:
01419 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
01420 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
01421 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
01422
01423
01424 static ptr< pi_mul > create (
01425 ptr< pi_pi > a__pi_pi__psp,
01426 ptr< pi_pi > a__pi_pi__nsp,
01427 ulint a__pi_pi__level,
01428 ptr< pi_non_mem > a__pi_tpi__left,
01429 ptr< pi_non_mem > a__pi_tpi__right,
01430 ptr< pi_preg > a__pi_tpi__destination,
01431 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
01432
01433
01434
01435
01436 virtual ptr<reflection_list> reflection_get() const;
01437
01438 virtual ptr<field_list_list> field_values_get() const;
01439
01440 protected:
01441
01442 pi_mul (
01443 ptr< pi_pi > a__pi_pi__psp,
01444 ptr< pi_pi > a__pi_pi__nsp,
01445 ulint a__pi_pi__level,
01446 ptr< pi_non_mem > a__pi_tpi__left,
01447 ptr< pi_non_mem > a__pi_tpi__right,
01448 ptr< pi_preg > a__pi_tpi__destination,
01449 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
01450
01451
01452 virtual void gc_mark();
01453
01454 private:
01455 static ptr<reflection_list> reflection;
01456
01457 };
01458
01459
01460
01461
01462
01463
01464 class pi_div : public pi_tstpi {
01465 public:
01466 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
01467 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
01468 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
01469
01470
01471 static ptr< pi_div > create (
01472 ptr< pi_pi > a__pi_pi__psp,
01473 ptr< pi_pi > a__pi_pi__nsp,
01474 ulint a__pi_pi__level,
01475 ptr< pi_non_mem > a__pi_tpi__left,
01476 ptr< pi_non_mem > a__pi_tpi__right,
01477 ptr< pi_preg > a__pi_tpi__destination,
01478 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
01479
01480
01481
01482
01483 virtual ptr<reflection_list> reflection_get() const;
01484
01485 virtual ptr<field_list_list> field_values_get() const;
01486
01487 protected:
01488
01489 pi_div (
01490 ptr< pi_pi > a__pi_pi__psp,
01491 ptr< pi_pi > a__pi_pi__nsp,
01492 ulint a__pi_pi__level,
01493 ptr< pi_non_mem > a__pi_tpi__left,
01494 ptr< pi_non_mem > a__pi_tpi__right,
01495 ptr< pi_preg > a__pi_tpi__destination,
01496 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
01497
01498
01499 virtual void gc_mark();
01500
01501 private:
01502 static ptr<reflection_list> reflection;
01503
01504 };
01505
01506
01507
01508
01509
01510
01511 class pi_divrni : public pi_tstpi {
01512 public:
01513 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
01514 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
01515 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
01516
01517
01518 static ptr< pi_divrni > create (
01519 ptr< pi_pi > a__pi_pi__psp,
01520 ptr< pi_pi > a__pi_pi__nsp,
01521 ulint a__pi_pi__level,
01522 ptr< pi_non_mem > a__pi_tpi__left,
01523 ptr< pi_non_mem > a__pi_tpi__right,
01524 ptr< pi_preg > a__pi_tpi__destination,
01525 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
01526
01527
01528
01529
01530 virtual ptr<reflection_list> reflection_get() const;
01531
01532 virtual ptr<field_list_list> field_values_get() const;
01533
01534 protected:
01535
01536 pi_divrni (
01537 ptr< pi_pi > a__pi_pi__psp,
01538 ptr< pi_pi > a__pi_pi__nsp,
01539 ulint a__pi_pi__level,
01540 ptr< pi_non_mem > a__pi_tpi__left,
01541 ptr< pi_non_mem > a__pi_tpi__right,
01542 ptr< pi_preg > a__pi_tpi__destination,
01543 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
01544
01545
01546 virtual void gc_mark();
01547
01548 private:
01549 static ptr<reflection_list> reflection;
01550
01551 };
01552
01553
01554
01555
01556
01557
01558 class pi_divrpi : public pi_tstpi {
01559 public:
01560 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
01561 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
01562 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
01563
01564
01565 static ptr< pi_divrpi > create (
01566 ptr< pi_pi > a__pi_pi__psp,
01567 ptr< pi_pi > a__pi_pi__nsp,
01568 ulint a__pi_pi__level,
01569 ptr< pi_non_mem > a__pi_tpi__left,
01570 ptr< pi_non_mem > a__pi_tpi__right,
01571 ptr< pi_preg > a__pi_tpi__destination,
01572 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
01573
01574
01575
01576
01577 virtual ptr<reflection_list> reflection_get() const;
01578
01579 virtual ptr<field_list_list> field_values_get() const;
01580
01581 protected:
01582
01583 pi_divrpi (
01584 ptr< pi_pi > a__pi_pi__psp,
01585 ptr< pi_pi > a__pi_pi__nsp,
01586 ulint a__pi_pi__level,
01587 ptr< pi_non_mem > a__pi_tpi__left,
01588 ptr< pi_non_mem > a__pi_tpi__right,
01589 ptr< pi_preg > a__pi_tpi__destination,
01590 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
01591
01592
01593 virtual void gc_mark();
01594
01595 private:
01596 static ptr<reflection_list> reflection;
01597
01598 };
01599
01600
01601
01602
01603
01604
01605 class pi_divrz : public pi_tstpi {
01606 public:
01607 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
01608 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
01609 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
01610
01611
01612 static ptr< pi_divrz > create (
01613 ptr< pi_pi > a__pi_pi__psp,
01614 ptr< pi_pi > a__pi_pi__nsp,
01615 ulint a__pi_pi__level,
01616 ptr< pi_non_mem > a__pi_tpi__left,
01617 ptr< pi_non_mem > a__pi_tpi__right,
01618 ptr< pi_preg > a__pi_tpi__destination,
01619 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
01620
01621
01622
01623
01624 virtual ptr<reflection_list> reflection_get() const;
01625
01626 virtual ptr<field_list_list> field_values_get() const;
01627
01628 protected:
01629
01630 pi_divrz (
01631 ptr< pi_pi > a__pi_pi__psp,
01632 ptr< pi_pi > a__pi_pi__nsp,
01633 ulint a__pi_pi__level,
01634 ptr< pi_non_mem > a__pi_tpi__left,
01635 ptr< pi_non_mem > a__pi_tpi__right,
01636 ptr< pi_preg > a__pi_tpi__destination,
01637 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
01638
01639
01640 virtual void gc_mark();
01641
01642 private:
01643 static ptr<reflection_list> reflection;
01644
01645 };
01646
01647
01648
01649
01650
01651
01652 class pi_mod : public pi_tstpi {
01653 public:
01654 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
01655 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
01656 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
01657
01658
01659 static ptr< pi_mod > create (
01660 ptr< pi_pi > a__pi_pi__psp,
01661 ptr< pi_pi > a__pi_pi__nsp,
01662 ulint a__pi_pi__level,
01663 ptr< pi_non_mem > a__pi_tpi__left,
01664 ptr< pi_non_mem > a__pi_tpi__right,
01665 ptr< pi_preg > a__pi_tpi__destination,
01666 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
01667
01668
01669
01670
01671 virtual ptr<reflection_list> reflection_get() const;
01672
01673 virtual ptr<field_list_list> field_values_get() const;
01674
01675 protected:
01676
01677 pi_mod (
01678 ptr< pi_pi > a__pi_pi__psp,
01679 ptr< pi_pi > a__pi_pi__nsp,
01680 ulint a__pi_pi__level,
01681 ptr< pi_non_mem > a__pi_tpi__left,
01682 ptr< pi_non_mem > a__pi_tpi__right,
01683 ptr< pi_preg > a__pi_tpi__destination,
01684 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
01685
01686
01687 virtual void gc_mark();
01688
01689 private:
01690 static ptr<reflection_list> reflection;
01691
01692 };
01693
01694
01695
01696
01697
01698
01699 class pi_rem : public pi_tstpi {
01700 public:
01701 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
01702 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
01703 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
01704
01705
01706 static ptr< pi_rem > create (
01707 ptr< pi_pi > a__pi_pi__psp,
01708 ptr< pi_pi > a__pi_pi__nsp,
01709 ulint a__pi_pi__level,
01710 ptr< pi_non_mem > a__pi_tpi__left,
01711 ptr< pi_non_mem > a__pi_tpi__right,
01712 ptr< pi_preg > a__pi_tpi__destination,
01713 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
01714
01715
01716
01717
01718 virtual ptr<reflection_list> reflection_get() const;
01719
01720 virtual ptr<field_list_list> field_values_get() const;
01721
01722 protected:
01723
01724 pi_rem (
01725 ptr< pi_pi > a__pi_pi__psp,
01726 ptr< pi_pi > a__pi_pi__nsp,
01727 ulint a__pi_pi__level,
01728 ptr< pi_non_mem > a__pi_tpi__left,
01729 ptr< pi_non_mem > a__pi_tpi__right,
01730 ptr< pi_preg > a__pi_tpi__destination,
01731 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
01732
01733
01734 virtual void gc_mark();
01735
01736 private:
01737 static ptr<reflection_list> reflection;
01738
01739 };
01740
01741
01742
01743
01744
01745
01746 class pi_neg : public pi_bstpi {
01747 public:
01748 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
01749 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
01750 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
01751
01752
01753 static ptr< pi_neg > create (
01754 ptr< pi_pi > a__pi_pi__psp,
01755 ptr< pi_pi > a__pi_pi__nsp,
01756 ulint a__pi_pi__level,
01757 ptr< pi_non_mem > a__pi_bpi__source,
01758 ptr< pi_preg > a__pi_bpi__destination,
01759 ptr< ::lestes::md::types::tm_data_type_base > a__pi_bstpi__type);
01760
01761
01762
01763
01764 virtual ptr<reflection_list> reflection_get() const;
01765
01766 virtual ptr<field_list_list> field_values_get() const;
01767
01768 protected:
01769
01770 pi_neg (
01771 ptr< pi_pi > a__pi_pi__psp,
01772 ptr< pi_pi > a__pi_pi__nsp,
01773 ulint a__pi_pi__level,
01774 ptr< pi_non_mem > a__pi_bpi__source,
01775 ptr< pi_preg > a__pi_bpi__destination,
01776 ptr< ::lestes::md::types::tm_data_type_base > a__pi_bstpi__type);
01777
01778
01779 virtual void gc_mark();
01780
01781 private:
01782 static ptr<reflection_list> reflection;
01783
01784 };
01785
01786
01787
01788
01789
01790
01791 class pi_gat : public pi_bstpi {
01792 public:
01793 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
01794 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
01795 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
01796
01797
01798 static ptr< pi_gat > create (
01799 ptr< pi_pi > a__pi_pi__psp,
01800 ptr< pi_pi > a__pi_pi__nsp,
01801 ulint a__pi_pi__level,
01802 ptr< pi_non_mem > a__pi_bpi__source,
01803 ptr< pi_preg > a__pi_bpi__destination,
01804 ptr< ::lestes::md::types::tm_data_type_base > a__pi_bstpi__type);
01805
01806
01807
01808
01809 virtual ptr<reflection_list> reflection_get() const;
01810
01811 virtual ptr<field_list_list> field_values_get() const;
01812
01813 protected:
01814
01815 pi_gat (
01816 ptr< pi_pi > a__pi_pi__psp,
01817 ptr< pi_pi > a__pi_pi__nsp,
01818 ulint a__pi_pi__level,
01819 ptr< pi_non_mem > a__pi_bpi__source,
01820 ptr< pi_preg > a__pi_bpi__destination,
01821 ptr< ::lestes::md::types::tm_data_type_base > a__pi_bstpi__type);
01822
01823
01824 virtual void gc_mark();
01825
01826 private:
01827 static ptr<reflection_list> reflection;
01828
01829 };
01830
01831
01832
01833
01834
01835
01836 class pi_shl : public pi_tstpi {
01837 public:
01838 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
01839 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
01840 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
01841
01842
01843 static ptr< pi_shl > create (
01844 ptr< pi_pi > a__pi_pi__psp,
01845 ptr< pi_pi > a__pi_pi__nsp,
01846 ulint a__pi_pi__level,
01847 ptr< pi_non_mem > a__pi_tpi__left,
01848 ptr< pi_non_mem > a__pi_tpi__right,
01849 ptr< pi_preg > a__pi_tpi__destination,
01850 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
01851
01852
01853
01854
01855 virtual ptr<reflection_list> reflection_get() const;
01856
01857 virtual ptr<field_list_list> field_values_get() const;
01858
01859 protected:
01860
01861 pi_shl (
01862 ptr< pi_pi > a__pi_pi__psp,
01863 ptr< pi_pi > a__pi_pi__nsp,
01864 ulint a__pi_pi__level,
01865 ptr< pi_non_mem > a__pi_tpi__left,
01866 ptr< pi_non_mem > a__pi_tpi__right,
01867 ptr< pi_preg > a__pi_tpi__destination,
01868 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
01869
01870
01871 virtual void gc_mark();
01872
01873 private:
01874 static ptr<reflection_list> reflection;
01875
01876 };
01877
01878
01879
01880
01881
01882
01883 class pi_shr : public pi_tstpi {
01884 public:
01885 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
01886 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
01887 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
01888
01889
01890 static ptr< pi_shr > create (
01891 ptr< pi_pi > a__pi_pi__psp,
01892 ptr< pi_pi > a__pi_pi__nsp,
01893 ulint a__pi_pi__level,
01894 ptr< pi_non_mem > a__pi_tpi__left,
01895 ptr< pi_non_mem > a__pi_tpi__right,
01896 ptr< pi_preg > a__pi_tpi__destination,
01897 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
01898
01899
01900
01901
01902 virtual ptr<reflection_list> reflection_get() const;
01903
01904 virtual ptr<field_list_list> field_values_get() const;
01905
01906 protected:
01907
01908 pi_shr (
01909 ptr< pi_pi > a__pi_pi__psp,
01910 ptr< pi_pi > a__pi_pi__nsp,
01911 ulint a__pi_pi__level,
01912 ptr< pi_non_mem > a__pi_tpi__left,
01913 ptr< pi_non_mem > a__pi_tpi__right,
01914 ptr< pi_preg > a__pi_tpi__destination,
01915 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
01916
01917
01918 virtual void gc_mark();
01919
01920 private:
01921 static ptr<reflection_list> reflection;
01922
01923 };
01924
01925
01926
01927
01928
01929
01930 class pi_sal : public pi_tstpi {
01931 public:
01932 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
01933 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
01934 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
01935
01936
01937 static ptr< pi_sal > create (
01938 ptr< pi_pi > a__pi_pi__psp,
01939 ptr< pi_pi > a__pi_pi__nsp,
01940 ulint a__pi_pi__level,
01941 ptr< pi_non_mem > a__pi_tpi__left,
01942 ptr< pi_non_mem > a__pi_tpi__right,
01943 ptr< pi_preg > a__pi_tpi__destination,
01944 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
01945
01946
01947
01948
01949 virtual ptr<reflection_list> reflection_get() const;
01950
01951 virtual ptr<field_list_list> field_values_get() const;
01952
01953 protected:
01954
01955 pi_sal (
01956 ptr< pi_pi > a__pi_pi__psp,
01957 ptr< pi_pi > a__pi_pi__nsp,
01958 ulint a__pi_pi__level,
01959 ptr< pi_non_mem > a__pi_tpi__left,
01960 ptr< pi_non_mem > a__pi_tpi__right,
01961 ptr< pi_preg > a__pi_tpi__destination,
01962 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
01963
01964
01965 virtual void gc_mark();
01966
01967 private:
01968 static ptr<reflection_list> reflection;
01969
01970 };
01971
01972
01973
01974
01975
01976
01977 class pi_sar : public pi_tstpi {
01978 public:
01979 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
01980 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
01981 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
01982
01983
01984 static ptr< pi_sar > create (
01985 ptr< pi_pi > a__pi_pi__psp,
01986 ptr< pi_pi > a__pi_pi__nsp,
01987 ulint a__pi_pi__level,
01988 ptr< pi_non_mem > a__pi_tpi__left,
01989 ptr< pi_non_mem > a__pi_tpi__right,
01990 ptr< pi_preg > a__pi_tpi__destination,
01991 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
01992
01993
01994
01995
01996 virtual ptr<reflection_list> reflection_get() const;
01997
01998 virtual ptr<field_list_list> field_values_get() const;
01999
02000 protected:
02001
02002 pi_sar (
02003 ptr< pi_pi > a__pi_pi__psp,
02004 ptr< pi_pi > a__pi_pi__nsp,
02005 ulint a__pi_pi__level,
02006 ptr< pi_non_mem > a__pi_tpi__left,
02007 ptr< pi_non_mem > a__pi_tpi__right,
02008 ptr< pi_preg > a__pi_tpi__destination,
02009 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
02010
02011
02012 virtual void gc_mark();
02013
02014 private:
02015 static ptr<reflection_list> reflection;
02016
02017 };
02018
02019
02020
02021
02022
02023
02024 class pi_band : public pi_tstpi {
02025 public:
02026 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
02027 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
02028 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
02029
02030
02031 static ptr< pi_band > create (
02032 ptr< pi_pi > a__pi_pi__psp,
02033 ptr< pi_pi > a__pi_pi__nsp,
02034 ulint a__pi_pi__level,
02035 ptr< pi_non_mem > a__pi_tpi__left,
02036 ptr< pi_non_mem > a__pi_tpi__right,
02037 ptr< pi_preg > a__pi_tpi__destination,
02038 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
02039
02040
02041
02042
02043 virtual ptr<reflection_list> reflection_get() const;
02044
02045 virtual ptr<field_list_list> field_values_get() const;
02046
02047 protected:
02048
02049 pi_band (
02050 ptr< pi_pi > a__pi_pi__psp,
02051 ptr< pi_pi > a__pi_pi__nsp,
02052 ulint a__pi_pi__level,
02053 ptr< pi_non_mem > a__pi_tpi__left,
02054 ptr< pi_non_mem > a__pi_tpi__right,
02055 ptr< pi_preg > a__pi_tpi__destination,
02056 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
02057
02058
02059 virtual void gc_mark();
02060
02061 private:
02062 static ptr<reflection_list> reflection;
02063
02064 };
02065
02066
02067
02068
02069
02070
02071 class pi_bor : public pi_tstpi {
02072 public:
02073 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
02074 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
02075 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
02076
02077
02078 static ptr< pi_bor > create (
02079 ptr< pi_pi > a__pi_pi__psp,
02080 ptr< pi_pi > a__pi_pi__nsp,
02081 ulint a__pi_pi__level,
02082 ptr< pi_non_mem > a__pi_tpi__left,
02083 ptr< pi_non_mem > a__pi_tpi__right,
02084 ptr< pi_preg > a__pi_tpi__destination,
02085 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
02086
02087
02088
02089
02090 virtual ptr<reflection_list> reflection_get() const;
02091
02092 virtual ptr<field_list_list> field_values_get() const;
02093
02094 protected:
02095
02096 pi_bor (
02097 ptr< pi_pi > a__pi_pi__psp,
02098 ptr< pi_pi > a__pi_pi__nsp,
02099 ulint a__pi_pi__level,
02100 ptr< pi_non_mem > a__pi_tpi__left,
02101 ptr< pi_non_mem > a__pi_tpi__right,
02102 ptr< pi_preg > a__pi_tpi__destination,
02103 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
02104
02105
02106 virtual void gc_mark();
02107
02108 private:
02109 static ptr<reflection_list> reflection;
02110
02111 };
02112
02113
02114
02115
02116
02117
02118 class pi_bxor : public pi_tstpi {
02119 public:
02120 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
02121 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
02122 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
02123
02124
02125 static ptr< pi_bxor > create (
02126 ptr< pi_pi > a__pi_pi__psp,
02127 ptr< pi_pi > a__pi_pi__nsp,
02128 ulint a__pi_pi__level,
02129 ptr< pi_non_mem > a__pi_tpi__left,
02130 ptr< pi_non_mem > a__pi_tpi__right,
02131 ptr< pi_preg > a__pi_tpi__destination,
02132 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
02133
02134
02135
02136
02137 virtual ptr<reflection_list> reflection_get() const;
02138
02139 virtual ptr<field_list_list> field_values_get() const;
02140
02141 protected:
02142
02143 pi_bxor (
02144 ptr< pi_pi > a__pi_pi__psp,
02145 ptr< pi_pi > a__pi_pi__nsp,
02146 ulint a__pi_pi__level,
02147 ptr< pi_non_mem > a__pi_tpi__left,
02148 ptr< pi_non_mem > a__pi_tpi__right,
02149 ptr< pi_preg > a__pi_tpi__destination,
02150 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
02151
02152
02153 virtual void gc_mark();
02154
02155 private:
02156 static ptr<reflection_list> reflection;
02157
02158 };
02159
02160
02161
02162
02163
02164
02165 class pi_bnot : public pi_bstpi {
02166 public:
02167 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
02168 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
02169 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
02170
02171
02172 static ptr< pi_bnot > create (
02173 ptr< pi_pi > a__pi_pi__psp,
02174 ptr< pi_pi > a__pi_pi__nsp,
02175 ulint a__pi_pi__level,
02176 ptr< pi_non_mem > a__pi_bpi__source,
02177 ptr< pi_preg > a__pi_bpi__destination,
02178 ptr< ::lestes::md::types::tm_data_type_base > a__pi_bstpi__type);
02179
02180
02181
02182
02183 virtual ptr<reflection_list> reflection_get() const;
02184
02185 virtual ptr<field_list_list> field_values_get() const;
02186
02187 protected:
02188
02189 pi_bnot (
02190 ptr< pi_pi > a__pi_pi__psp,
02191 ptr< pi_pi > a__pi_pi__nsp,
02192 ulint a__pi_pi__level,
02193 ptr< pi_non_mem > a__pi_bpi__source,
02194 ptr< pi_preg > a__pi_bpi__destination,
02195 ptr< ::lestes::md::types::tm_data_type_base > a__pi_bstpi__type);
02196
02197
02198 virtual void gc_mark();
02199
02200 private:
02201 static ptr<reflection_list> reflection;
02202
02203 };
02204
02205
02206
02207
02208
02209
02210 class pi_land : public pi_tstpi {
02211 public:
02212 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
02213 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
02214 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
02215
02216
02217 static ptr< pi_land > create (
02218 ptr< pi_pi > a__pi_pi__psp,
02219 ptr< pi_pi > a__pi_pi__nsp,
02220 ulint a__pi_pi__level,
02221 ptr< pi_non_mem > a__pi_tpi__left,
02222 ptr< pi_non_mem > a__pi_tpi__right,
02223 ptr< pi_preg > a__pi_tpi__destination,
02224 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
02225
02226
02227
02228
02229 virtual ptr<reflection_list> reflection_get() const;
02230
02231 virtual ptr<field_list_list> field_values_get() const;
02232
02233 protected:
02234
02235 pi_land (
02236 ptr< pi_pi > a__pi_pi__psp,
02237 ptr< pi_pi > a__pi_pi__nsp,
02238 ulint a__pi_pi__level,
02239 ptr< pi_non_mem > a__pi_tpi__left,
02240 ptr< pi_non_mem > a__pi_tpi__right,
02241 ptr< pi_preg > a__pi_tpi__destination,
02242 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
02243
02244
02245 virtual void gc_mark();
02246
02247 private:
02248 static ptr<reflection_list> reflection;
02249
02250 };
02251
02252
02253
02254
02255
02256
02257 class pi_lor : public pi_tstpi {
02258 public:
02259 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
02260 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
02261 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
02262
02263
02264 static ptr< pi_lor > create (
02265 ptr< pi_pi > a__pi_pi__psp,
02266 ptr< pi_pi > a__pi_pi__nsp,
02267 ulint a__pi_pi__level,
02268 ptr< pi_non_mem > a__pi_tpi__left,
02269 ptr< pi_non_mem > a__pi_tpi__right,
02270 ptr< pi_preg > a__pi_tpi__destination,
02271 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
02272
02273
02274
02275
02276 virtual ptr<reflection_list> reflection_get() const;
02277
02278 virtual ptr<field_list_list> field_values_get() const;
02279
02280 protected:
02281
02282 pi_lor (
02283 ptr< pi_pi > a__pi_pi__psp,
02284 ptr< pi_pi > a__pi_pi__nsp,
02285 ulint a__pi_pi__level,
02286 ptr< pi_non_mem > a__pi_tpi__left,
02287 ptr< pi_non_mem > a__pi_tpi__right,
02288 ptr< pi_preg > a__pi_tpi__destination,
02289 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
02290
02291
02292 virtual void gc_mark();
02293
02294 private:
02295 static ptr<reflection_list> reflection;
02296
02297 };
02298
02299
02300
02301
02302
02303
02304 class pi_lxor : public pi_tstpi {
02305 public:
02306 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
02307 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
02308 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
02309
02310
02311 static ptr< pi_lxor > create (
02312 ptr< pi_pi > a__pi_pi__psp,
02313 ptr< pi_pi > a__pi_pi__nsp,
02314 ulint a__pi_pi__level,
02315 ptr< pi_non_mem > a__pi_tpi__left,
02316 ptr< pi_non_mem > a__pi_tpi__right,
02317 ptr< pi_preg > a__pi_tpi__destination,
02318 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
02319
02320
02321
02322
02323 virtual ptr<reflection_list> reflection_get() const;
02324
02325 virtual ptr<field_list_list> field_values_get() const;
02326
02327 protected:
02328
02329 pi_lxor (
02330 ptr< pi_pi > a__pi_pi__psp,
02331 ptr< pi_pi > a__pi_pi__nsp,
02332 ulint a__pi_pi__level,
02333 ptr< pi_non_mem > a__pi_tpi__left,
02334 ptr< pi_non_mem > a__pi_tpi__right,
02335 ptr< pi_preg > a__pi_tpi__destination,
02336 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tstpi__type);
02337
02338
02339 virtual void gc_mark();
02340
02341 private:
02342 static ptr<reflection_list> reflection;
02343
02344 };
02345
02346
02347
02348
02349
02350
02351 class pi_lnot : public pi_bstpi {
02352 public:
02353 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
02354 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
02355 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
02356
02357
02358 static ptr< pi_lnot > create (
02359 ptr< pi_pi > a__pi_pi__psp,
02360 ptr< pi_pi > a__pi_pi__nsp,
02361 ulint a__pi_pi__level,
02362 ptr< pi_non_mem > a__pi_bpi__source,
02363 ptr< pi_preg > a__pi_bpi__destination,
02364 ptr< ::lestes::md::types::tm_data_type_base > a__pi_bstpi__type);
02365
02366
02367
02368
02369 virtual ptr<reflection_list> reflection_get() const;
02370
02371 virtual ptr<field_list_list> field_values_get() const;
02372
02373 protected:
02374
02375 pi_lnot (
02376 ptr< pi_pi > a__pi_pi__psp,
02377 ptr< pi_pi > a__pi_pi__nsp,
02378 ulint a__pi_pi__level,
02379 ptr< pi_non_mem > a__pi_bpi__source,
02380 ptr< pi_preg > a__pi_bpi__destination,
02381 ptr< ::lestes::md::types::tm_data_type_base > a__pi_bstpi__type);
02382
02383
02384 virtual void gc_mark();
02385
02386 private:
02387 static ptr<reflection_list> reflection;
02388
02389 };
02390
02391
02392
02393
02394
02395
02396 class pi_cvt : public pi_bdtpi {
02397 public:
02398 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
02399 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
02400 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
02401
02402
02403 static ptr< pi_cvt > create (
02404 ptr< pi_pi > a__pi_pi__psp,
02405 ptr< pi_pi > a__pi_pi__nsp,
02406 ulint a__pi_pi__level,
02407 ptr< pi_non_mem > a__pi_bpi__source,
02408 ptr< pi_preg > a__pi_bpi__destination,
02409 ptr< ::lestes::md::types::tm_data_type_base > a__pi_bdtpi__type1,
02410 ptr< ::lestes::md::types::tm_data_type_base > a__pi_bdtpi__type2);
02411
02412
02413
02414
02415 virtual ptr<reflection_list> reflection_get() const;
02416
02417 virtual ptr<field_list_list> field_values_get() const;
02418
02419 protected:
02420
02421 pi_cvt (
02422 ptr< pi_pi > a__pi_pi__psp,
02423 ptr< pi_pi > a__pi_pi__nsp,
02424 ulint a__pi_pi__level,
02425 ptr< pi_non_mem > a__pi_bpi__source,
02426 ptr< pi_preg > a__pi_bpi__destination,
02427 ptr< ::lestes::md::types::tm_data_type_base > a__pi_bdtpi__type1,
02428 ptr< ::lestes::md::types::tm_data_type_base > a__pi_bdtpi__type2);
02429
02430
02431 virtual void gc_mark();
02432
02433 private:
02434 static ptr<reflection_list> reflection;
02435
02436 };
02437
02438
02439
02440
02441
02442
02443 class pi_cmp : public pi_tdtpi {
02444 public:
02445 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
02446 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
02447 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
02448
02449
02450 static ptr< pi_cmp > create (
02451 ptr< pi_pi > a__pi_pi__psp,
02452 ptr< pi_pi > a__pi_pi__nsp,
02453 ulint a__pi_pi__level,
02454 ptr< pi_non_mem > a__pi_tpi__left,
02455 ptr< pi_non_mem > a__pi_tpi__right,
02456 ptr< pi_preg > a__pi_tpi__destination,
02457 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tdtpi__type1,
02458 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tdtpi__type2);
02459
02460
02461
02462
02463 virtual ptr<reflection_list> reflection_get() const;
02464
02465 virtual ptr<field_list_list> field_values_get() const;
02466
02467 protected:
02468
02469 pi_cmp (
02470 ptr< pi_pi > a__pi_pi__psp,
02471 ptr< pi_pi > a__pi_pi__nsp,
02472 ulint a__pi_pi__level,
02473 ptr< pi_non_mem > a__pi_tpi__left,
02474 ptr< pi_non_mem > a__pi_tpi__right,
02475 ptr< pi_preg > a__pi_tpi__destination,
02476 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tdtpi__type1,
02477 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tdtpi__type2);
02478
02479
02480 virtual void gc_mark();
02481
02482 private:
02483 static ptr<reflection_list> reflection;
02484
02485 };
02486
02487
02488
02489
02490
02491
02492 class pi_mov : public pi_abstract_move_st {
02493 public:
02494 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
02495 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
02496 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
02497
02498
02499 static ptr< pi_mov > create (
02500 ptr< pi_pi > a__pi_pi__psp,
02501 ptr< pi_pi > a__pi_pi__nsp,
02502 ulint a__pi_pi__level,
02503 ptr< pi_operand > a__pi_abstract_move_st__destination,
02504 ptr< pi_operand > a__pi_abstract_move_st__source,
02505 ptr< ::lestes::md::types::tm_data_type_base > a__pi_abstract_move_st__type);
02506
02507
02508
02509
02510 virtual ptr<reflection_list> reflection_get() const;
02511
02512 virtual ptr<field_list_list> field_values_get() const;
02513
02514 protected:
02515
02516 pi_mov (
02517 ptr< pi_pi > a__pi_pi__psp,
02518 ptr< pi_pi > a__pi_pi__nsp,
02519 ulint a__pi_pi__level,
02520 ptr< pi_operand > a__pi_abstract_move_st__destination,
02521 ptr< pi_operand > a__pi_abstract_move_st__source,
02522 ptr< ::lestes::md::types::tm_data_type_base > a__pi_abstract_move_st__type);
02523
02524
02525 virtual void gc_mark();
02526
02527 private:
02528 static ptr<reflection_list> reflection;
02529
02530 };
02531
02532
02533
02534
02535
02536
02537 class pi_ld : public pi_abstract_move_st {
02538 public:
02539 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
02540 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
02541 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
02542
02543
02544 static ptr< pi_ld > create (
02545 ptr< pi_pi > a__pi_pi__psp,
02546 ptr< pi_pi > a__pi_pi__nsp,
02547 ulint a__pi_pi__level,
02548 ptr< pi_operand > a__pi_abstract_move_st__destination,
02549 ptr< pi_operand > a__pi_abstract_move_st__source,
02550 ptr< ::lestes::md::types::tm_data_type_base > a__pi_abstract_move_st__type);
02551
02552
02553
02554
02555 virtual ptr<reflection_list> reflection_get() const;
02556
02557 virtual ptr<field_list_list> field_values_get() const;
02558
02559 protected:
02560
02561 pi_ld (
02562 ptr< pi_pi > a__pi_pi__psp,
02563 ptr< pi_pi > a__pi_pi__nsp,
02564 ulint a__pi_pi__level,
02565 ptr< pi_operand > a__pi_abstract_move_st__destination,
02566 ptr< pi_operand > a__pi_abstract_move_st__source,
02567 ptr< ::lestes::md::types::tm_data_type_base > a__pi_abstract_move_st__type);
02568
02569
02570 virtual void gc_mark();
02571
02572 private:
02573 static ptr<reflection_list> reflection;
02574
02575 };
02576
02577
02578
02579
02580
02581
02582 class pi_lda : public pi_abstract_move_dt {
02583 public:
02584 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
02585 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
02586 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
02587
02588
02589 static ptr< pi_lda > create (
02590 ptr< pi_pi > a__pi_pi__psp,
02591 ptr< pi_pi > a__pi_pi__nsp,
02592 ulint a__pi_pi__level,
02593 ptr< pi_operand > a__pi_abstract_move_dt__destination,
02594 ptr< pi_operand > a__pi_abstract_move_dt__source,
02595 ptr< ::lestes::md::types::tm_data_type_base > a__pi_abstract_move_dt__type1,
02596 ptr< ::lestes::md::types::tm_data_type_base > a__pi_abstract_move_dt__type2);
02597
02598
02599
02600
02601 virtual ptr<reflection_list> reflection_get() const;
02602
02603 virtual ptr<field_list_list> field_values_get() const;
02604
02605 protected:
02606
02607 pi_lda (
02608 ptr< pi_pi > a__pi_pi__psp,
02609 ptr< pi_pi > a__pi_pi__nsp,
02610 ulint a__pi_pi__level,
02611 ptr< pi_operand > a__pi_abstract_move_dt__destination,
02612 ptr< pi_operand > a__pi_abstract_move_dt__source,
02613 ptr< ::lestes::md::types::tm_data_type_base > a__pi_abstract_move_dt__type1,
02614 ptr< ::lestes::md::types::tm_data_type_base > a__pi_abstract_move_dt__type2);
02615
02616
02617 virtual void gc_mark();
02618
02619 private:
02620 static ptr<reflection_list> reflection;
02621
02622 };
02623
02624
02625
02626
02627
02628
02629 class pi_ldi : public pi_abstract_move_st {
02630 public:
02631 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
02632 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
02633 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
02634
02635
02636 static ptr< pi_ldi > create (
02637 ptr< pi_pi > a__pi_pi__psp,
02638 ptr< pi_pi > a__pi_pi__nsp,
02639 ulint a__pi_pi__level,
02640 ptr< pi_operand > a__pi_abstract_move_st__destination,
02641 ptr< pi_operand > a__pi_abstract_move_st__source,
02642 ptr< ::lestes::md::types::tm_data_type_base > a__pi_abstract_move_st__type);
02643
02644
02645
02646
02647 virtual ptr<reflection_list> reflection_get() const;
02648
02649 virtual ptr<field_list_list> field_values_get() const;
02650
02651 protected:
02652
02653 pi_ldi (
02654 ptr< pi_pi > a__pi_pi__psp,
02655 ptr< pi_pi > a__pi_pi__nsp,
02656 ulint a__pi_pi__level,
02657 ptr< pi_operand > a__pi_abstract_move_st__destination,
02658 ptr< pi_operand > a__pi_abstract_move_st__source,
02659 ptr< ::lestes::md::types::tm_data_type_base > a__pi_abstract_move_st__type);
02660
02661
02662 virtual void gc_mark();
02663
02664 private:
02665 static ptr<reflection_list> reflection;
02666
02667 };
02668
02669
02670
02671
02672
02673
02674 class pi_ldp : public pi_indirect_load {
02675 public:
02676 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
02677 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
02678 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
02679
02680
02681 static ptr< pi_ldp > create (
02682 ptr< pi_pi > a__pi_pi__psp,
02683 ptr< pi_pi > a__pi_pi__nsp,
02684 ulint a__pi_pi__level,
02685 ptr< pi_operand > a__pi_indirect_load__value,
02686 ptr< pi_mem_ptr_deref > a__pi_indirect_load__address,
02687 ptr< ::lestes::md::types::tm_data_type_base > a__pi_indirect_load__type1,
02688 ptr< ::lestes::md::types::tm_data_type_base > a__pi_indirect_load__type2);
02689
02690
02691
02692
02693 virtual ptr<reflection_list> reflection_get() const;
02694
02695 virtual ptr<field_list_list> field_values_get() const;
02696
02697 protected:
02698
02699 pi_ldp (
02700 ptr< pi_pi > a__pi_pi__psp,
02701 ptr< pi_pi > a__pi_pi__nsp,
02702 ulint a__pi_pi__level,
02703 ptr< pi_operand > a__pi_indirect_load__value,
02704 ptr< pi_mem_ptr_deref > a__pi_indirect_load__address,
02705 ptr< ::lestes::md::types::tm_data_type_base > a__pi_indirect_load__type1,
02706 ptr< ::lestes::md::types::tm_data_type_base > a__pi_indirect_load__type2);
02707
02708
02709 virtual void gc_mark();
02710
02711 private:
02712 static ptr<reflection_list> reflection;
02713
02714 };
02715
02716
02717
02718
02719
02720
02721 class pi_ldv : public pi_abstract_move_st {
02722 public:
02723 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
02724 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
02725 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
02726
02727
02728 static ptr< pi_ldv > create (
02729 ptr< pi_pi > a__pi_pi__psp,
02730 ptr< pi_pi > a__pi_pi__nsp,
02731 ulint a__pi_pi__level,
02732 ptr< pi_operand > a__pi_abstract_move_st__destination,
02733 ptr< pi_operand > a__pi_abstract_move_st__source,
02734 ptr< ::lestes::md::types::tm_data_type_base > a__pi_abstract_move_st__type);
02735
02736
02737
02738
02739 virtual ptr<reflection_list> reflection_get() const;
02740
02741 virtual ptr<field_list_list> field_values_get() const;
02742
02743 protected:
02744
02745 pi_ldv (
02746 ptr< pi_pi > a__pi_pi__psp,
02747 ptr< pi_pi > a__pi_pi__nsp,
02748 ulint a__pi_pi__level,
02749 ptr< pi_operand > a__pi_abstract_move_st__destination,
02750 ptr< pi_operand > a__pi_abstract_move_st__source,
02751 ptr< ::lestes::md::types::tm_data_type_base > a__pi_abstract_move_st__type);
02752
02753
02754 virtual void gc_mark();
02755
02756 private:
02757 static ptr<reflection_list> reflection;
02758
02759 };
02760
02761
02762
02763
02764
02765
02766 class pi_ldpv : public pi_indirect_load {
02767 public:
02768 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
02769 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
02770 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
02771
02772
02773 static ptr< pi_ldpv > create (
02774 ptr< pi_pi > a__pi_pi__psp,
02775 ptr< pi_pi > a__pi_pi__nsp,
02776 ulint a__pi_pi__level,
02777 ptr< pi_operand > a__pi_indirect_load__value,
02778 ptr< pi_mem_ptr_deref > a__pi_indirect_load__address,
02779 ptr< ::lestes::md::types::tm_data_type_base > a__pi_indirect_load__type1,
02780 ptr< ::lestes::md::types::tm_data_type_base > a__pi_indirect_load__type2);
02781
02782
02783
02784
02785 virtual ptr<reflection_list> reflection_get() const;
02786
02787 virtual ptr<field_list_list> field_values_get() const;
02788
02789 protected:
02790
02791 pi_ldpv (
02792 ptr< pi_pi > a__pi_pi__psp,
02793 ptr< pi_pi > a__pi_pi__nsp,
02794 ulint a__pi_pi__level,
02795 ptr< pi_operand > a__pi_indirect_load__value,
02796 ptr< pi_mem_ptr_deref > a__pi_indirect_load__address,
02797 ptr< ::lestes::md::types::tm_data_type_base > a__pi_indirect_load__type1,
02798 ptr< ::lestes::md::types::tm_data_type_base > a__pi_indirect_load__type2);
02799
02800
02801 virtual void gc_mark();
02802
02803 private:
02804 static ptr<reflection_list> reflection;
02805
02806 };
02807
02808
02809
02810
02811
02812
02813 class pi_st : public pi_abstract_move_st {
02814 public:
02815 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
02816 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
02817 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
02818
02819
02820 static ptr< pi_st > create (
02821 ptr< pi_pi > a__pi_pi__psp,
02822 ptr< pi_pi > a__pi_pi__nsp,
02823 ulint a__pi_pi__level,
02824 ptr< pi_operand > a__pi_abstract_move_st__destination,
02825 ptr< pi_operand > a__pi_abstract_move_st__source,
02826 ptr< ::lestes::md::types::tm_data_type_base > a__pi_abstract_move_st__type);
02827
02828
02829
02830
02831 virtual ptr<reflection_list> reflection_get() const;
02832
02833 virtual ptr<field_list_list> field_values_get() const;
02834
02835 protected:
02836
02837 pi_st (
02838 ptr< pi_pi > a__pi_pi__psp,
02839 ptr< pi_pi > a__pi_pi__nsp,
02840 ulint a__pi_pi__level,
02841 ptr< pi_operand > a__pi_abstract_move_st__destination,
02842 ptr< pi_operand > a__pi_abstract_move_st__source,
02843 ptr< ::lestes::md::types::tm_data_type_base > a__pi_abstract_move_st__type);
02844
02845
02846 virtual void gc_mark();
02847
02848 private:
02849 static ptr<reflection_list> reflection;
02850
02851 };
02852
02853
02854
02855
02856
02857
02858 class pi_sti : public pi_abstract_move_st {
02859 public:
02860 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
02861 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
02862 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
02863
02864
02865 static ptr< pi_sti > create (
02866 ptr< pi_pi > a__pi_pi__psp,
02867 ptr< pi_pi > a__pi_pi__nsp,
02868 ulint a__pi_pi__level,
02869 ptr< pi_operand > a__pi_abstract_move_st__destination,
02870 ptr< pi_operand > a__pi_abstract_move_st__source,
02871 ptr< ::lestes::md::types::tm_data_type_base > a__pi_abstract_move_st__type);
02872
02873
02874
02875
02876 virtual ptr<reflection_list> reflection_get() const;
02877
02878 virtual ptr<field_list_list> field_values_get() const;
02879
02880 protected:
02881
02882 pi_sti (
02883 ptr< pi_pi > a__pi_pi__psp,
02884 ptr< pi_pi > a__pi_pi__nsp,
02885 ulint a__pi_pi__level,
02886 ptr< pi_operand > a__pi_abstract_move_st__destination,
02887 ptr< pi_operand > a__pi_abstract_move_st__source,
02888 ptr< ::lestes::md::types::tm_data_type_base > a__pi_abstract_move_st__type);
02889
02890
02891 virtual void gc_mark();
02892
02893 private:
02894 static ptr<reflection_list> reflection;
02895
02896 };
02897
02898
02899
02900
02901
02902
02903 class pi_stp : public pi_indirect_store {
02904 public:
02905 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
02906 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
02907 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
02908
02909
02910 static ptr< pi_stp > create (
02911 ptr< pi_pi > a__pi_pi__psp,
02912 ptr< pi_pi > a__pi_pi__nsp,
02913 ulint a__pi_pi__level,
02914 ptr< pi_mem_ptr_deref > a__pi_indirect_store__address,
02915 ptr< pi_operand > a__pi_indirect_store__value,
02916 ptr< ::lestes::md::types::tm_data_type_base > a__pi_indirect_store__type1,
02917 ptr< ::lestes::md::types::tm_data_type_base > a__pi_indirect_store__type2);
02918
02919
02920
02921
02922 virtual ptr<reflection_list> reflection_get() const;
02923
02924 virtual ptr<field_list_list> field_values_get() const;
02925
02926 protected:
02927
02928 pi_stp (
02929 ptr< pi_pi > a__pi_pi__psp,
02930 ptr< pi_pi > a__pi_pi__nsp,
02931 ulint a__pi_pi__level,
02932 ptr< pi_mem_ptr_deref > a__pi_indirect_store__address,
02933 ptr< pi_operand > a__pi_indirect_store__value,
02934 ptr< ::lestes::md::types::tm_data_type_base > a__pi_indirect_store__type1,
02935 ptr< ::lestes::md::types::tm_data_type_base > a__pi_indirect_store__type2);
02936
02937
02938 virtual void gc_mark();
02939
02940 private:
02941 static ptr<reflection_list> reflection;
02942
02943 };
02944
02945
02946
02947
02948
02949
02950 class pi_stv : public pi_abstract_move_st {
02951 public:
02952 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
02953 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
02954 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
02955
02956
02957 static ptr< pi_stv > create (
02958 ptr< pi_pi > a__pi_pi__psp,
02959 ptr< pi_pi > a__pi_pi__nsp,
02960 ulint a__pi_pi__level,
02961 ptr< pi_operand > a__pi_abstract_move_st__destination,
02962 ptr< pi_operand > a__pi_abstract_move_st__source,
02963 ptr< ::lestes::md::types::tm_data_type_base > a__pi_abstract_move_st__type);
02964
02965
02966
02967
02968 virtual ptr<reflection_list> reflection_get() const;
02969
02970 virtual ptr<field_list_list> field_values_get() const;
02971
02972 protected:
02973
02974 pi_stv (
02975 ptr< pi_pi > a__pi_pi__psp,
02976 ptr< pi_pi > a__pi_pi__nsp,
02977 ulint a__pi_pi__level,
02978 ptr< pi_operand > a__pi_abstract_move_st__destination,
02979 ptr< pi_operand > a__pi_abstract_move_st__source,
02980 ptr< ::lestes::md::types::tm_data_type_base > a__pi_abstract_move_st__type);
02981
02982
02983 virtual void gc_mark();
02984
02985 private:
02986 static ptr<reflection_list> reflection;
02987
02988 };
02989
02990
02991
02992
02993
02994
02995 class pi_stiv : public pi_abstract_move_st {
02996 public:
02997 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
02998 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
02999 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
03000
03001
03002 static ptr< pi_stiv > create (
03003 ptr< pi_pi > a__pi_pi__psp,
03004 ptr< pi_pi > a__pi_pi__nsp,
03005 ulint a__pi_pi__level,
03006 ptr< pi_operand > a__pi_abstract_move_st__destination,
03007 ptr< pi_operand > a__pi_abstract_move_st__source,
03008 ptr< ::lestes::md::types::tm_data_type_base > a__pi_abstract_move_st__type);
03009
03010
03011
03012
03013 virtual ptr<reflection_list> reflection_get() const;
03014
03015 virtual ptr<field_list_list> field_values_get() const;
03016
03017 protected:
03018
03019 pi_stiv (
03020 ptr< pi_pi > a__pi_pi__psp,
03021 ptr< pi_pi > a__pi_pi__nsp,
03022 ulint a__pi_pi__level,
03023 ptr< pi_operand > a__pi_abstract_move_st__destination,
03024 ptr< pi_operand > a__pi_abstract_move_st__source,
03025 ptr< ::lestes::md::types::tm_data_type_base > a__pi_abstract_move_st__type);
03026
03027
03028 virtual void gc_mark();
03029
03030 private:
03031 static ptr<reflection_list> reflection;
03032
03033 };
03034
03035
03036
03037
03038
03039
03040 class pi_stpv : public pi_indirect_store {
03041 public:
03042 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
03043 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
03044 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
03045
03046
03047 static ptr< pi_stpv > create (
03048 ptr< pi_pi > a__pi_pi__psp,
03049 ptr< pi_pi > a__pi_pi__nsp,
03050 ulint a__pi_pi__level,
03051 ptr< pi_mem_ptr_deref > a__pi_indirect_store__address,
03052 ptr< pi_operand > a__pi_indirect_store__value,
03053 ptr< ::lestes::md::types::tm_data_type_base > a__pi_indirect_store__type1,
03054 ptr< ::lestes::md::types::tm_data_type_base > a__pi_indirect_store__type2);
03055
03056
03057
03058
03059 virtual ptr<reflection_list> reflection_get() const;
03060
03061 virtual ptr<field_list_list> field_values_get() const;
03062
03063 protected:
03064
03065 pi_stpv (
03066 ptr< pi_pi > a__pi_pi__psp,
03067 ptr< pi_pi > a__pi_pi__nsp,
03068 ulint a__pi_pi__level,
03069 ptr< pi_mem_ptr_deref > a__pi_indirect_store__address,
03070 ptr< pi_operand > a__pi_indirect_store__value,
03071 ptr< ::lestes::md::types::tm_data_type_base > a__pi_indirect_store__type1,
03072 ptr< ::lestes::md::types::tm_data_type_base > a__pi_indirect_store__type2);
03073
03074
03075 virtual void gc_mark();
03076
03077 private:
03078 static ptr<reflection_list> reflection;
03079
03080 };
03081
03082
03083
03084 class pi_call : public pi_abstract_function_call {
03085 public:
03086
03087 ptr< ::lestes::md::types::tm_data_type_base > type_get() const;
03088
03089
03090 void type_set(const ptr< ::lestes::md::types::tm_data_type_base > &);
03091
03092
03093 ptr< pi_mem > rv_get() const;
03094
03095
03096 void rv_set(const ptr< pi_mem > &);
03097
03098
03099 ptr< ::lestes::lang::cplus::sem::ss_function_declaration > f_get() const;
03100
03101
03102 void f_set(const ptr< ::lestes::lang::cplus::sem::ss_function_declaration > &);
03103
03104 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
03105 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
03106 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
03107
03108
03109 static ptr< pi_call > create (
03110 ptr< pi_pi > a__pi_pi__psp,
03111 ptr< pi_pi > a__pi_pi__nsp,
03112 ulint a__pi_pi__level,
03113 ptr< ::lestes::std::list< srp< pi_operand > > > a__pi_abstract_function_call__args,
03114 ptr< pi_mem > a__pi_abstract_function_call__this_arg,
03115 ptr< ::lestes::md::types::tm_data_type_base > a__pi_call__type,
03116 ptr< pi_mem > a__pi_call__rv,
03117 ptr< ::lestes::lang::cplus::sem::ss_function_declaration > a__pi_call__f);
03118
03119
03120
03121
03122 virtual ptr<reflection_list> reflection_get() const;
03123
03124 virtual ptr<field_list_list> field_values_get() const;
03125
03126 protected:
03127
03128 pi_call (
03129 ptr< pi_pi > a__pi_pi__psp,
03130 ptr< pi_pi > a__pi_pi__nsp,
03131 ulint a__pi_pi__level,
03132 ptr< ::lestes::std::list< srp< pi_operand > > > a__pi_abstract_function_call__args,
03133 ptr< pi_mem > a__pi_abstract_function_call__this_arg,
03134 ptr< ::lestes::md::types::tm_data_type_base > a__pi_call__type,
03135 ptr< pi_mem > a__pi_call__rv,
03136 ptr< ::lestes::lang::cplus::sem::ss_function_declaration > a__pi_call__f);
03137
03138
03139 virtual void gc_mark();
03140
03141 private:
03142
03143 srp< ::lestes::md::types::tm_data_type_base > type;
03144
03145 srp< pi_mem > rv;
03146
03147 srp< ::lestes::lang::cplus::sem::ss_function_declaration > f;
03148 static ptr<reflection_list> reflection;
03149
03150 };
03151
03152
03153
03154 class pi_icall : public pi_abstract_function_call {
03155 public:
03156
03157 ptr< ::lestes::md::types::tm_data_type_base > type_get() const;
03158
03159
03160 void type_set(const ptr< ::lestes::md::types::tm_data_type_base > &);
03161
03162
03163 ptr< pi_mem > rv_get() const;
03164
03165
03166 void rv_set(const ptr< pi_mem > &);
03167
03168
03169 ptr< pi_preg > f_get() const;
03170
03171
03172 void f_set(const ptr< pi_preg > &);
03173
03174 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
03175 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
03176 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
03177
03178
03179 static ptr< pi_icall > create (
03180 ptr< pi_pi > a__pi_pi__psp,
03181 ptr< pi_pi > a__pi_pi__nsp,
03182 ulint a__pi_pi__level,
03183 ptr< ::lestes::std::list< srp< pi_operand > > > a__pi_abstract_function_call__args,
03184 ptr< pi_mem > a__pi_abstract_function_call__this_arg,
03185 ptr< ::lestes::md::types::tm_data_type_base > a__pi_icall__type,
03186 ptr< pi_mem > a__pi_icall__rv,
03187 ptr< pi_preg > a__pi_icall__f);
03188
03189
03190
03191
03192 virtual ptr<reflection_list> reflection_get() const;
03193
03194 virtual ptr<field_list_list> field_values_get() const;
03195
03196 protected:
03197
03198 pi_icall (
03199 ptr< pi_pi > a__pi_pi__psp,
03200 ptr< pi_pi > a__pi_pi__nsp,
03201 ulint a__pi_pi__level,
03202 ptr< ::lestes::std::list< srp< pi_operand > > > a__pi_abstract_function_call__args,
03203 ptr< pi_mem > a__pi_abstract_function_call__this_arg,
03204 ptr< ::lestes::md::types::tm_data_type_base > a__pi_icall__type,
03205 ptr< pi_mem > a__pi_icall__rv,
03206 ptr< pi_preg > a__pi_icall__f);
03207
03208
03209 virtual void gc_mark();
03210
03211 private:
03212
03213 srp< ::lestes::md::types::tm_data_type_base > type;
03214
03215 srp< pi_mem > rv;
03216
03217 srp< pi_preg > f;
03218 static ptr<reflection_list> reflection;
03219
03220 };
03221
03222
03223
03224 class pi_callv : public pi_abstract_function_call {
03225 public:
03226
03227 ptr< ::lestes::lang::cplus::sem::ss_function_declaration > f_get() const;
03228
03229
03230 void f_set(const ptr< ::lestes::lang::cplus::sem::ss_function_declaration > &);
03231
03232 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
03233 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
03234 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
03235
03236
03237 static ptr< pi_callv > create (
03238 ptr< pi_pi > a__pi_pi__psp,
03239 ptr< pi_pi > a__pi_pi__nsp,
03240 ulint a__pi_pi__level,
03241 ptr< ::lestes::std::list< srp< pi_operand > > > a__pi_abstract_function_call__args,
03242 ptr< pi_mem > a__pi_abstract_function_call__this_arg,
03243 ptr< ::lestes::lang::cplus::sem::ss_function_declaration > a__pi_callv__f);
03244
03245
03246
03247
03248 virtual ptr<reflection_list> reflection_get() const;
03249
03250 virtual ptr<field_list_list> field_values_get() const;
03251
03252 protected:
03253
03254 pi_callv (
03255 ptr< pi_pi > a__pi_pi__psp,
03256 ptr< pi_pi > a__pi_pi__nsp,
03257 ulint a__pi_pi__level,
03258 ptr< ::lestes::std::list< srp< pi_operand > > > a__pi_abstract_function_call__args,
03259 ptr< pi_mem > a__pi_abstract_function_call__this_arg,
03260 ptr< ::lestes::lang::cplus::sem::ss_function_declaration > a__pi_callv__f);
03261
03262
03263 virtual void gc_mark();
03264
03265 private:
03266
03267 srp< ::lestes::lang::cplus::sem::ss_function_declaration > f;
03268 static ptr<reflection_list> reflection;
03269
03270 };
03271
03272
03273
03274 class pi_icallv : public pi_abstract_function_call {
03275 public:
03276
03277 ptr< pi_preg > f_get() const;
03278
03279
03280 void f_set(const ptr< pi_preg > &);
03281
03282 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
03283 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
03284 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
03285
03286
03287 static ptr< pi_icallv > create (
03288 ptr< pi_pi > a__pi_pi__psp,
03289 ptr< pi_pi > a__pi_pi__nsp,
03290 ulint a__pi_pi__level,
03291 ptr< ::lestes::std::list< srp< pi_operand > > > a__pi_abstract_function_call__args,
03292 ptr< pi_mem > a__pi_abstract_function_call__this_arg,
03293 ptr< pi_preg > a__pi_icallv__f);
03294
03295
03296
03297
03298 virtual ptr<reflection_list> reflection_get() const;
03299
03300 virtual ptr<field_list_list> field_values_get() const;
03301
03302 protected:
03303
03304 pi_icallv (
03305 ptr< pi_pi > a__pi_pi__psp,
03306 ptr< pi_pi > a__pi_pi__nsp,
03307 ulint a__pi_pi__level,
03308 ptr< ::lestes::std::list< srp< pi_operand > > > a__pi_abstract_function_call__args,
03309 ptr< pi_mem > a__pi_abstract_function_call__this_arg,
03310 ptr< pi_preg > a__pi_icallv__f);
03311
03312
03313 virtual void gc_mark();
03314
03315 private:
03316
03317 srp< pi_preg > f;
03318 static ptr<reflection_list> reflection;
03319
03320 };
03321
03322
03323
03324 class pi_ba : public pi_ub_single_label_target {
03325 public:
03326 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
03327 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
03328 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
03329
03330
03331 static ptr< pi_ba > create (
03332 ptr< pi_pi > a__pi_pi__psp,
03333 ptr< pi_pi > a__pi_pi__nsp,
03334 ulint a__pi_pi__level,
03335 ptr< pi_sp > a__pi_ub_single_label_target__destination);
03336
03337
03338
03339
03340 virtual ptr<reflection_list> reflection_get() const;
03341
03342 virtual ptr<field_list_list> field_values_get() const;
03343
03344 protected:
03345
03346 pi_ba (
03347 ptr< pi_pi > a__pi_pi__psp,
03348 ptr< pi_pi > a__pi_pi__nsp,
03349 ulint a__pi_pi__level,
03350 ptr< pi_sp > a__pi_ub_single_label_target__destination);
03351
03352
03353 virtual void gc_mark();
03354
03355 private:
03356 static ptr<reflection_list> reflection;
03357
03358 };
03359
03360
03361
03362 class pi_bn : public pi_ub_single_label_target {
03363 public:
03364 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
03365 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
03366 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
03367
03368
03369 static ptr< pi_bn > create (
03370 ptr< pi_pi > a__pi_pi__psp,
03371 ptr< pi_pi > a__pi_pi__nsp,
03372 ulint a__pi_pi__level,
03373 ptr< pi_sp > a__pi_ub_single_label_target__destination);
03374
03375
03376
03377
03378 virtual ptr<reflection_list> reflection_get() const;
03379
03380 virtual ptr<field_list_list> field_values_get() const;
03381
03382 protected:
03383
03384 pi_bn (
03385 ptr< pi_pi > a__pi_pi__psp,
03386 ptr< pi_pi > a__pi_pi__nsp,
03387 ulint a__pi_pi__level,
03388 ptr< pi_sp > a__pi_ub_single_label_target__destination);
03389
03390
03391 virtual void gc_mark();
03392
03393 private:
03394 static ptr<reflection_list> reflection;
03395
03396 };
03397
03398
03399
03400
03401
03402
03403 class pi_bt : public pi_cb_single_label_target {
03404 public:
03405 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
03406 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
03407 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
03408
03409
03410 static ptr< pi_bt > create (
03411 ptr< pi_pi > a__pi_pi__psp,
03412 ptr< pi_pi > a__pi_pi__nsp,
03413 ulint a__pi_pi__level,
03414 ptr< pi_preg > a__pi_conditional_branch__condition,
03415 ptr< pi_sp > a__pi_cb_single_label_target__destination);
03416
03417
03418
03419
03420 virtual ptr<reflection_list> reflection_get() const;
03421
03422 virtual ptr<field_list_list> field_values_get() const;
03423
03424 protected:
03425
03426 pi_bt (
03427 ptr< pi_pi > a__pi_pi__psp,
03428 ptr< pi_pi > a__pi_pi__nsp,
03429 ulint a__pi_pi__level,
03430 ptr< pi_preg > a__pi_conditional_branch__condition,
03431 ptr< pi_sp > a__pi_cb_single_label_target__destination);
03432
03433
03434 virtual void gc_mark();
03435
03436 private:
03437 static ptr<reflection_list> reflection;
03438
03439 };
03440
03441
03442
03443
03444
03445
03446 class pi_bf : public pi_cb_single_label_target {
03447 public:
03448 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
03449 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
03450 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
03451
03452
03453 static ptr< pi_bf > create (
03454 ptr< pi_pi > a__pi_pi__psp,
03455 ptr< pi_pi > a__pi_pi__nsp,
03456 ulint a__pi_pi__level,
03457 ptr< pi_preg > a__pi_conditional_branch__condition,
03458 ptr< pi_sp > a__pi_cb_single_label_target__destination);
03459
03460
03461
03462
03463 virtual ptr<reflection_list> reflection_get() const;
03464
03465 virtual ptr<field_list_list> field_values_get() const;
03466
03467 protected:
03468
03469 pi_bf (
03470 ptr< pi_pi > a__pi_pi__psp,
03471 ptr< pi_pi > a__pi_pi__nsp,
03472 ulint a__pi_pi__level,
03473 ptr< pi_preg > a__pi_conditional_branch__condition,
03474 ptr< pi_sp > a__pi_cb_single_label_target__destination);
03475
03476
03477 virtual void gc_mark();
03478
03479 private:
03480 static ptr<reflection_list> reflection;
03481
03482 };
03483
03484
03485
03486 class pi_bm : public pi_branch_multiple_label_target {
03487 public:
03488 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
03489 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
03490 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
03491
03492
03493 static ptr< pi_bm > create (
03494 ptr< pi_pi > a__pi_pi__psp,
03495 ptr< pi_pi > a__pi_pi__nsp,
03496 ulint a__pi_pi__level,
03497 ptr< pi_preg > a__pi_branch_multiple__value,
03498 ptr< ::lestes::std::map< srp< ::lestes::md::literals::literal_info_base >, srp< pi_sp > > > a__pi_branch_multiple_label_target__targets);
03499
03500
03501
03502
03503 virtual ptr<reflection_list> reflection_get() const;
03504
03505 virtual ptr<field_list_list> field_values_get() const;
03506
03507 protected:
03508
03509 pi_bm (
03510 ptr< pi_pi > a__pi_pi__psp,
03511 ptr< pi_pi > a__pi_pi__nsp,
03512 ulint a__pi_pi__level,
03513 ptr< pi_preg > a__pi_branch_multiple__value,
03514 ptr< ::lestes::std::map< srp< ::lestes::md::literals::literal_info_base >, srp< pi_sp > > > a__pi_branch_multiple_label_target__targets);
03515
03516
03517 virtual void gc_mark();
03518
03519 private:
03520 static ptr<reflection_list> reflection;
03521
03522 };
03523
03524
03525
03526 class pi_bg : public pi_cb_single_label_target {
03527 public:
03528 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
03529 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
03530 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
03531
03532
03533 static ptr< pi_bg > create (
03534 ptr< pi_pi > a__pi_pi__psp,
03535 ptr< pi_pi > a__pi_pi__nsp,
03536 ulint a__pi_pi__level,
03537 ptr< pi_preg > a__pi_conditional_branch__condition,
03538 ptr< pi_sp > a__pi_cb_single_label_target__destination);
03539
03540
03541
03542
03543 virtual ptr<reflection_list> reflection_get() const;
03544
03545 virtual ptr<field_list_list> field_values_get() const;
03546
03547 protected:
03548
03549 pi_bg (
03550 ptr< pi_pi > a__pi_pi__psp,
03551 ptr< pi_pi > a__pi_pi__nsp,
03552 ulint a__pi_pi__level,
03553 ptr< pi_preg > a__pi_conditional_branch__condition,
03554 ptr< pi_sp > a__pi_cb_single_label_target__destination);
03555
03556
03557 virtual void gc_mark();
03558
03559 private:
03560 static ptr<reflection_list> reflection;
03561
03562 };
03563
03564
03565
03566 class pi_bl : public pi_cb_single_label_target {
03567 public:
03568 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
03569 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
03570 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
03571
03572
03573 static ptr< pi_bl > create (
03574 ptr< pi_pi > a__pi_pi__psp,
03575 ptr< pi_pi > a__pi_pi__nsp,
03576 ulint a__pi_pi__level,
03577 ptr< pi_preg > a__pi_conditional_branch__condition,
03578 ptr< pi_sp > a__pi_cb_single_label_target__destination);
03579
03580
03581
03582
03583 virtual ptr<reflection_list> reflection_get() const;
03584
03585 virtual ptr<field_list_list> field_values_get() const;
03586
03587 protected:
03588
03589 pi_bl (
03590 ptr< pi_pi > a__pi_pi__psp,
03591 ptr< pi_pi > a__pi_pi__nsp,
03592 ulint a__pi_pi__level,
03593 ptr< pi_preg > a__pi_conditional_branch__condition,
03594 ptr< pi_sp > a__pi_cb_single_label_target__destination);
03595
03596
03597 virtual void gc_mark();
03598
03599 private:
03600 static ptr<reflection_list> reflection;
03601
03602 };
03603
03604
03605
03606 class pi_be : public pi_cb_single_label_target {
03607 public:
03608 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
03609 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
03610 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
03611
03612
03613 static ptr< pi_be > create (
03614 ptr< pi_pi > a__pi_pi__psp,
03615 ptr< pi_pi > a__pi_pi__nsp,
03616 ulint a__pi_pi__level,
03617 ptr< pi_preg > a__pi_conditional_branch__condition,
03618 ptr< pi_sp > a__pi_cb_single_label_target__destination);
03619
03620
03621
03622
03623 virtual ptr<reflection_list> reflection_get() const;
03624
03625 virtual ptr<field_list_list> field_values_get() const;
03626
03627 protected:
03628
03629 pi_be (
03630 ptr< pi_pi > a__pi_pi__psp,
03631 ptr< pi_pi > a__pi_pi__nsp,
03632 ulint a__pi_pi__level,
03633 ptr< pi_preg > a__pi_conditional_branch__condition,
03634 ptr< pi_sp > a__pi_cb_single_label_target__destination);
03635
03636
03637 virtual void gc_mark();
03638
03639 private:
03640 static ptr<reflection_list> reflection;
03641
03642 };
03643
03644
03645
03646 class pi_bng : public pi_cb_single_label_target {
03647 public:
03648 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
03649 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
03650 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
03651
03652
03653 static ptr< pi_bng > create (
03654 ptr< pi_pi > a__pi_pi__psp,
03655 ptr< pi_pi > a__pi_pi__nsp,
03656 ulint a__pi_pi__level,
03657 ptr< pi_preg > a__pi_conditional_branch__condition,
03658 ptr< pi_sp > a__pi_cb_single_label_target__destination);
03659
03660
03661
03662
03663 virtual ptr<reflection_list> reflection_get() const;
03664
03665 virtual ptr<field_list_list> field_values_get() const;
03666
03667 protected:
03668
03669 pi_bng (
03670 ptr< pi_pi > a__pi_pi__psp,
03671 ptr< pi_pi > a__pi_pi__nsp,
03672 ulint a__pi_pi__level,
03673 ptr< pi_preg > a__pi_conditional_branch__condition,
03674 ptr< pi_sp > a__pi_cb_single_label_target__destination);
03675
03676
03677 virtual void gc_mark();
03678
03679 private:
03680 static ptr<reflection_list> reflection;
03681
03682 };
03683
03684
03685
03686 class pi_bnl : public pi_cb_single_label_target {
03687 public:
03688 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
03689 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
03690 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
03691
03692
03693 static ptr< pi_bnl > create (
03694 ptr< pi_pi > a__pi_pi__psp,
03695 ptr< pi_pi > a__pi_pi__nsp,
03696 ulint a__pi_pi__level,
03697 ptr< pi_preg > a__pi_conditional_branch__condition,
03698 ptr< pi_sp > a__pi_cb_single_label_target__destination);
03699
03700
03701
03702
03703 virtual ptr<reflection_list> reflection_get() const;
03704
03705 virtual ptr<field_list_list> field_values_get() const;
03706
03707 protected:
03708
03709 pi_bnl (
03710 ptr< pi_pi > a__pi_pi__psp,
03711 ptr< pi_pi > a__pi_pi__nsp,
03712 ulint a__pi_pi__level,
03713 ptr< pi_preg > a__pi_conditional_branch__condition,
03714 ptr< pi_sp > a__pi_cb_single_label_target__destination);
03715
03716
03717 virtual void gc_mark();
03718
03719 private:
03720 static ptr<reflection_list> reflection;
03721
03722 };
03723
03724
03725
03726 class pi_bne : public pi_cb_single_label_target {
03727 public:
03728 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
03729 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
03730 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
03731
03732
03733 static ptr< pi_bne > create (
03734 ptr< pi_pi > a__pi_pi__psp,
03735 ptr< pi_pi > a__pi_pi__nsp,
03736 ulint a__pi_pi__level,
03737 ptr< pi_preg > a__pi_conditional_branch__condition,
03738 ptr< pi_sp > a__pi_cb_single_label_target__destination);
03739
03740
03741
03742
03743 virtual ptr<reflection_list> reflection_get() const;
03744
03745 virtual ptr<field_list_list> field_values_get() const;
03746
03747 protected:
03748
03749 pi_bne (
03750 ptr< pi_pi > a__pi_pi__psp,
03751 ptr< pi_pi > a__pi_pi__nsp,
03752 ulint a__pi_pi__level,
03753 ptr< pi_preg > a__pi_conditional_branch__condition,
03754 ptr< pi_sp > a__pi_cb_single_label_target__destination);
03755
03756
03757 virtual void gc_mark();
03758
03759 private:
03760 static ptr<reflection_list> reflection;
03761
03762 };
03763
03764
03765
03766 class pi_iba : public pi_ub_single_address_target {
03767 public:
03768 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
03769 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
03770 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
03771
03772
03773 static ptr< pi_iba > create (
03774 ptr< pi_pi > a__pi_pi__psp,
03775 ptr< pi_pi > a__pi_pi__nsp,
03776 ulint a__pi_pi__level,
03777 ptr< pi_preg > a__pi_ub_single_address_target__destination);
03778
03779
03780
03781
03782 virtual ptr<reflection_list> reflection_get() const;
03783
03784 virtual ptr<field_list_list> field_values_get() const;
03785
03786 protected:
03787
03788 pi_iba (
03789 ptr< pi_pi > a__pi_pi__psp,
03790 ptr< pi_pi > a__pi_pi__nsp,
03791 ulint a__pi_pi__level,
03792 ptr< pi_preg > a__pi_ub_single_address_target__destination);
03793
03794
03795 virtual void gc_mark();
03796
03797 private:
03798 static ptr<reflection_list> reflection;
03799
03800 };
03801
03802
03803
03804 class pi_ibn : public pi_ub_single_address_target {
03805 public:
03806 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
03807 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
03808 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
03809
03810
03811 static ptr< pi_ibn > create (
03812 ptr< pi_pi > a__pi_pi__psp,
03813 ptr< pi_pi > a__pi_pi__nsp,
03814 ulint a__pi_pi__level,
03815 ptr< pi_preg > a__pi_ub_single_address_target__destination);
03816
03817
03818
03819
03820 virtual ptr<reflection_list> reflection_get() const;
03821
03822 virtual ptr<field_list_list> field_values_get() const;
03823
03824 protected:
03825
03826 pi_ibn (
03827 ptr< pi_pi > a__pi_pi__psp,
03828 ptr< pi_pi > a__pi_pi__nsp,
03829 ulint a__pi_pi__level,
03830 ptr< pi_preg > a__pi_ub_single_address_target__destination);
03831
03832
03833 virtual void gc_mark();
03834
03835 private:
03836 static ptr<reflection_list> reflection;
03837
03838 };
03839
03840
03841
03842 class pi_ibm : public pi_branch_multiple_address_target {
03843 public:
03844 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
03845 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
03846 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
03847
03848
03849 static ptr< pi_ibm > create (
03850 ptr< pi_pi > a__pi_pi__psp,
03851 ptr< pi_pi > a__pi_pi__nsp,
03852 ulint a__pi_pi__level,
03853 ptr< pi_preg > a__pi_branch_multiple__value,
03854 ptr< ::lestes::std::map< srp< ::lestes::md::literals::literal_info_base >, srp< pi_preg > > > a__pi_branch_multiple_address_target__targets);
03855
03856
03857
03858
03859 virtual ptr<reflection_list> reflection_get() const;
03860
03861 virtual ptr<field_list_list> field_values_get() const;
03862
03863 protected:
03864
03865 pi_ibm (
03866 ptr< pi_pi > a__pi_pi__psp,
03867 ptr< pi_pi > a__pi_pi__nsp,
03868 ulint a__pi_pi__level,
03869 ptr< pi_preg > a__pi_branch_multiple__value,
03870 ptr< ::lestes::std::map< srp< ::lestes::md::literals::literal_info_base >, srp< pi_preg > > > a__pi_branch_multiple_address_target__targets);
03871
03872
03873 virtual void gc_mark();
03874
03875 private:
03876 static ptr<reflection_list> reflection;
03877
03878 };
03879
03880
03881
03882 class pi_ibg : public pi_cb_single_address_target {
03883 public:
03884 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
03885 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
03886 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
03887
03888
03889 static ptr< pi_ibg > create (
03890 ptr< pi_pi > a__pi_pi__psp,
03891 ptr< pi_pi > a__pi_pi__nsp,
03892 ulint a__pi_pi__level,
03893 ptr< pi_preg > a__pi_conditional_branch__condition,
03894 ptr< pi_preg > a__pi_cb_single_address_target__destination);
03895
03896
03897
03898
03899 virtual ptr<reflection_list> reflection_get() const;
03900
03901 virtual ptr<field_list_list> field_values_get() const;
03902
03903 protected:
03904
03905 pi_ibg (
03906 ptr< pi_pi > a__pi_pi__psp,
03907 ptr< pi_pi > a__pi_pi__nsp,
03908 ulint a__pi_pi__level,
03909 ptr< pi_preg > a__pi_conditional_branch__condition,
03910 ptr< pi_preg > a__pi_cb_single_address_target__destination);
03911
03912
03913 virtual void gc_mark();
03914
03915 private:
03916 static ptr<reflection_list> reflection;
03917
03918 };
03919
03920
03921
03922 class pi_ibl : public pi_cb_single_address_target {
03923 public:
03924 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
03925 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
03926 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
03927
03928
03929 static ptr< pi_ibl > create (
03930 ptr< pi_pi > a__pi_pi__psp,
03931 ptr< pi_pi > a__pi_pi__nsp,
03932 ulint a__pi_pi__level,
03933 ptr< pi_preg > a__pi_conditional_branch__condition,
03934 ptr< pi_preg > a__pi_cb_single_address_target__destination);
03935
03936
03937
03938
03939 virtual ptr<reflection_list> reflection_get() const;
03940
03941 virtual ptr<field_list_list> field_values_get() const;
03942
03943 protected:
03944
03945 pi_ibl (
03946 ptr< pi_pi > a__pi_pi__psp,
03947 ptr< pi_pi > a__pi_pi__nsp,
03948 ulint a__pi_pi__level,
03949 ptr< pi_preg > a__pi_conditional_branch__condition,
03950 ptr< pi_preg > a__pi_cb_single_address_target__destination);
03951
03952
03953 virtual void gc_mark();
03954
03955 private:
03956 static ptr<reflection_list> reflection;
03957
03958 };
03959
03960
03961
03962 class pi_ibe : public pi_cb_single_address_target {
03963 public:
03964 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
03965 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
03966 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
03967
03968
03969 static ptr< pi_ibe > create (
03970 ptr< pi_pi > a__pi_pi__psp,
03971 ptr< pi_pi > a__pi_pi__nsp,
03972 ulint a__pi_pi__level,
03973 ptr< pi_preg > a__pi_conditional_branch__condition,
03974 ptr< pi_preg > a__pi_cb_single_address_target__destination);
03975
03976
03977
03978
03979 virtual ptr<reflection_list> reflection_get() const;
03980
03981 virtual ptr<field_list_list> field_values_get() const;
03982
03983 protected:
03984
03985 pi_ibe (
03986 ptr< pi_pi > a__pi_pi__psp,
03987 ptr< pi_pi > a__pi_pi__nsp,
03988 ulint a__pi_pi__level,
03989 ptr< pi_preg > a__pi_conditional_branch__condition,
03990 ptr< pi_preg > a__pi_cb_single_address_target__destination);
03991
03992
03993 virtual void gc_mark();
03994
03995 private:
03996 static ptr<reflection_list> reflection;
03997
03998 };
03999
04000
04001
04002 class pi_ibng : public pi_cb_single_address_target {
04003 public:
04004 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
04005 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
04006 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
04007
04008
04009 static ptr< pi_ibng > create (
04010 ptr< pi_pi > a__pi_pi__psp,
04011 ptr< pi_pi > a__pi_pi__nsp,
04012 ulint a__pi_pi__level,
04013 ptr< pi_preg > a__pi_conditional_branch__condition,
04014 ptr< pi_preg > a__pi_cb_single_address_target__destination);
04015
04016
04017
04018
04019 virtual ptr<reflection_list> reflection_get() const;
04020
04021 virtual ptr<field_list_list> field_values_get() const;
04022
04023 protected:
04024
04025 pi_ibng (
04026 ptr< pi_pi > a__pi_pi__psp,
04027 ptr< pi_pi > a__pi_pi__nsp,
04028 ulint a__pi_pi__level,
04029 ptr< pi_preg > a__pi_conditional_branch__condition,
04030 ptr< pi_preg > a__pi_cb_single_address_target__destination);
04031
04032
04033 virtual void gc_mark();
04034
04035 private:
04036 static ptr<reflection_list> reflection;
04037
04038 };
04039
04040
04041
04042 class pi_ibnl : public pi_cb_single_address_target {
04043 public:
04044 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
04045 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
04046 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
04047
04048
04049 static ptr< pi_ibnl > create (
04050 ptr< pi_pi > a__pi_pi__psp,
04051 ptr< pi_pi > a__pi_pi__nsp,
04052 ulint a__pi_pi__level,
04053 ptr< pi_preg > a__pi_conditional_branch__condition,
04054 ptr< pi_preg > a__pi_cb_single_address_target__destination);
04055
04056
04057
04058
04059 virtual ptr<reflection_list> reflection_get() const;
04060
04061 virtual ptr<field_list_list> field_values_get() const;
04062
04063 protected:
04064
04065 pi_ibnl (
04066 ptr< pi_pi > a__pi_pi__psp,
04067 ptr< pi_pi > a__pi_pi__nsp,
04068 ulint a__pi_pi__level,
04069 ptr< pi_preg > a__pi_conditional_branch__condition,
04070 ptr< pi_preg > a__pi_cb_single_address_target__destination);
04071
04072
04073 virtual void gc_mark();
04074
04075 private:
04076 static ptr<reflection_list> reflection;
04077
04078 };
04079
04080
04081
04082 class pi_ibne : public pi_cb_single_address_target {
04083 public:
04084 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
04085 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
04086 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
04087
04088
04089 static ptr< pi_ibne > create (
04090 ptr< pi_pi > a__pi_pi__psp,
04091 ptr< pi_pi > a__pi_pi__nsp,
04092 ulint a__pi_pi__level,
04093 ptr< pi_preg > a__pi_conditional_branch__condition,
04094 ptr< pi_preg > a__pi_cb_single_address_target__destination);
04095
04096
04097
04098
04099 virtual ptr<reflection_list> reflection_get() const;
04100
04101 virtual ptr<field_list_list> field_values_get() const;
04102
04103 protected:
04104
04105 pi_ibne (
04106 ptr< pi_pi > a__pi_pi__psp,
04107 ptr< pi_pi > a__pi_pi__nsp,
04108 ulint a__pi_pi__level,
04109 ptr< pi_preg > a__pi_conditional_branch__condition,
04110 ptr< pi_preg > a__pi_cb_single_address_target__destination);
04111
04112
04113 virtual void gc_mark();
04114
04115 private:
04116 static ptr<reflection_list> reflection;
04117
04118 };
04119
04120
04121
04122 class pi_leave : public pi_pi {
04123 public:
04124
04125 ptr< ::lestes::lang::cplus::sem::ss_function_declaration > function_get() const;
04126
04127
04128 void function_set(const ptr< ::lestes::lang::cplus::sem::ss_function_declaration > &);
04129
04130 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
04131 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
04132 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
04133
04134
04135 static ptr< pi_leave > create (
04136 ptr< pi_pi > a__pi_pi__psp,
04137 ptr< pi_pi > a__pi_pi__nsp,
04138 ulint a__pi_pi__level,
04139 ptr< ::lestes::lang::cplus::sem::ss_function_declaration > a__pi_leave__function);
04140
04141
04142
04143
04144 virtual ptr<reflection_list> reflection_get() const;
04145
04146 virtual ptr<field_list_list> field_values_get() const;
04147
04148 protected:
04149
04150 pi_leave (
04151 ptr< pi_pi > a__pi_pi__psp,
04152 ptr< pi_pi > a__pi_pi__nsp,
04153 ulint a__pi_pi__level,
04154 ptr< ::lestes::lang::cplus::sem::ss_function_declaration > a__pi_leave__function);
04155
04156
04157 virtual void gc_mark();
04158
04159 private:
04160
04161 srp< ::lestes::lang::cplus::sem::ss_function_declaration > function;
04162 static ptr<reflection_list> reflection;
04163
04164 };
04165
04166
04167
04168
04169
04170
04171 class pi_sbg : public pi_tdtpi {
04172 public:
04173 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
04174 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
04175 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
04176
04177
04178 static ptr< pi_sbg > create (
04179 ptr< pi_pi > a__pi_pi__psp,
04180 ptr< pi_pi > a__pi_pi__nsp,
04181 ulint a__pi_pi__level,
04182 ptr< pi_non_mem > a__pi_tpi__left,
04183 ptr< pi_non_mem > a__pi_tpi__right,
04184 ptr< pi_preg > a__pi_tpi__destination,
04185 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tdtpi__type1,
04186 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tdtpi__type2);
04187
04188
04189
04190
04191 virtual ptr<reflection_list> reflection_get() const;
04192
04193 virtual ptr<field_list_list> field_values_get() const;
04194
04195 protected:
04196
04197 pi_sbg (
04198 ptr< pi_pi > a__pi_pi__psp,
04199 ptr< pi_pi > a__pi_pi__nsp,
04200 ulint a__pi_pi__level,
04201 ptr< pi_non_mem > a__pi_tpi__left,
04202 ptr< pi_non_mem > a__pi_tpi__right,
04203 ptr< pi_preg > a__pi_tpi__destination,
04204 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tdtpi__type1,
04205 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tdtpi__type2);
04206
04207
04208 virtual void gc_mark();
04209
04210 private:
04211 static ptr<reflection_list> reflection;
04212
04213 };
04214
04215
04216
04217
04218
04219
04220 class pi_sbl : public pi_tdtpi {
04221 public:
04222 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
04223 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
04224 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
04225
04226
04227 static ptr< pi_sbl > create (
04228 ptr< pi_pi > a__pi_pi__psp,
04229 ptr< pi_pi > a__pi_pi__nsp,
04230 ulint a__pi_pi__level,
04231 ptr< pi_non_mem > a__pi_tpi__left,
04232 ptr< pi_non_mem > a__pi_tpi__right,
04233 ptr< pi_preg > a__pi_tpi__destination,
04234 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tdtpi__type1,
04235 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tdtpi__type2);
04236
04237
04238
04239
04240 virtual ptr<reflection_list> reflection_get() const;
04241
04242 virtual ptr<field_list_list> field_values_get() const;
04243
04244 protected:
04245
04246 pi_sbl (
04247 ptr< pi_pi > a__pi_pi__psp,
04248 ptr< pi_pi > a__pi_pi__nsp,
04249 ulint a__pi_pi__level,
04250 ptr< pi_non_mem > a__pi_tpi__left,
04251 ptr< pi_non_mem > a__pi_tpi__right,
04252 ptr< pi_preg > a__pi_tpi__destination,
04253 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tdtpi__type1,
04254 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tdtpi__type2);
04255
04256
04257 virtual void gc_mark();
04258
04259 private:
04260 static ptr<reflection_list> reflection;
04261
04262 };
04263
04264
04265
04266
04267
04268
04269 class pi_sbe : public pi_tdtpi {
04270 public:
04271 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
04272 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
04273 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
04274
04275
04276 static ptr< pi_sbe > create (
04277 ptr< pi_pi > a__pi_pi__psp,
04278 ptr< pi_pi > a__pi_pi__nsp,
04279 ulint a__pi_pi__level,
04280 ptr< pi_non_mem > a__pi_tpi__left,
04281 ptr< pi_non_mem > a__pi_tpi__right,
04282 ptr< pi_preg > a__pi_tpi__destination,
04283 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tdtpi__type1,
04284 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tdtpi__type2);
04285
04286
04287
04288
04289 virtual ptr<reflection_list> reflection_get() const;
04290
04291 virtual ptr<field_list_list> field_values_get() const;
04292
04293 protected:
04294
04295 pi_sbe (
04296 ptr< pi_pi > a__pi_pi__psp,
04297 ptr< pi_pi > a__pi_pi__nsp,
04298 ulint a__pi_pi__level,
04299 ptr< pi_non_mem > a__pi_tpi__left,
04300 ptr< pi_non_mem > a__pi_tpi__right,
04301 ptr< pi_preg > a__pi_tpi__destination,
04302 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tdtpi__type1,
04303 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tdtpi__type2);
04304
04305
04306 virtual void gc_mark();
04307
04308 private:
04309 static ptr<reflection_list> reflection;
04310
04311 };
04312
04313
04314
04315
04316
04317
04318 class pi_sbng : public pi_tdtpi {
04319 public:
04320 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
04321 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
04322 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
04323
04324
04325 static ptr< pi_sbng > create (
04326 ptr< pi_pi > a__pi_pi__psp,
04327 ptr< pi_pi > a__pi_pi__nsp,
04328 ulint a__pi_pi__level,
04329 ptr< pi_non_mem > a__pi_tpi__left,
04330 ptr< pi_non_mem > a__pi_tpi__right,
04331 ptr< pi_preg > a__pi_tpi__destination,
04332 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tdtpi__type1,
04333 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tdtpi__type2);
04334
04335
04336
04337
04338 virtual ptr<reflection_list> reflection_get() const;
04339
04340 virtual ptr<field_list_list> field_values_get() const;
04341
04342 protected:
04343
04344 pi_sbng (
04345 ptr< pi_pi > a__pi_pi__psp,
04346 ptr< pi_pi > a__pi_pi__nsp,
04347 ulint a__pi_pi__level,
04348 ptr< pi_non_mem > a__pi_tpi__left,
04349 ptr< pi_non_mem > a__pi_tpi__right,
04350 ptr< pi_preg > a__pi_tpi__destination,
04351 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tdtpi__type1,
04352 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tdtpi__type2);
04353
04354
04355 virtual void gc_mark();
04356
04357 private:
04358 static ptr<reflection_list> reflection;
04359
04360 };
04361
04362
04363
04364
04365
04366
04367 class pi_sbnl : public pi_tdtpi {
04368 public:
04369 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
04370 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
04371 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
04372
04373
04374 static ptr< pi_sbnl > create (
04375 ptr< pi_pi > a__pi_pi__psp,
04376 ptr< pi_pi > a__pi_pi__nsp,
04377 ulint a__pi_pi__level,
04378 ptr< pi_non_mem > a__pi_tpi__left,
04379 ptr< pi_non_mem > a__pi_tpi__right,
04380 ptr< pi_preg > a__pi_tpi__destination,
04381 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tdtpi__type1,
04382 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tdtpi__type2);
04383
04384
04385
04386
04387 virtual ptr<reflection_list> reflection_get() const;
04388
04389 virtual ptr<field_list_list> field_values_get() const;
04390
04391 protected:
04392
04393 pi_sbnl (
04394 ptr< pi_pi > a__pi_pi__psp,
04395 ptr< pi_pi > a__pi_pi__nsp,
04396 ulint a__pi_pi__level,
04397 ptr< pi_non_mem > a__pi_tpi__left,
04398 ptr< pi_non_mem > a__pi_tpi__right,
04399 ptr< pi_preg > a__pi_tpi__destination,
04400 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tdtpi__type1,
04401 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tdtpi__type2);
04402
04403
04404 virtual void gc_mark();
04405
04406 private:
04407 static ptr<reflection_list> reflection;
04408
04409 };
04410
04411
04412
04413
04414
04415
04416 class pi_sbne : public pi_tdtpi {
04417 public:
04418 virtual ptr< ::lestes::backend_v2::structs::pi_operands > accept_visitor_pi_pi2pi_operands_gen_base( ptr< visitor_pi_pi2pi_operands_gen_base > v );
04419 virtual ulint accept_visitor_pi_pi2ulint_gen_base( ptr< visitor_pi_pi2ulint_gen_base > v );
04420 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > accept_visitor_pi_pi2ge_pi_gen_base( ptr< visitor_pi_pi2ge_pi_gen_base > v );
04421
04422
04423 static ptr< pi_sbne > create (
04424 ptr< pi_pi > a__pi_pi__psp,
04425 ptr< pi_pi > a__pi_pi__nsp,
04426 ulint a__pi_pi__level,
04427 ptr< pi_non_mem > a__pi_tpi__left,
04428 ptr< pi_non_mem > a__pi_tpi__right,
04429 ptr< pi_preg > a__pi_tpi__destination,
04430 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tdtpi__type1,
04431 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tdtpi__type2);
04432
04433
04434
04435
04436 virtual ptr<reflection_list> reflection_get() const;
04437
04438 virtual ptr<field_list_list> field_values_get() const;
04439
04440 protected:
04441
04442 pi_sbne (
04443 ptr< pi_pi > a__pi_pi__psp,
04444 ptr< pi_pi > a__pi_pi__nsp,
04445 ulint a__pi_pi__level,
04446 ptr< pi_non_mem > a__pi_tpi__left,
04447 ptr< pi_non_mem > a__pi_tpi__right,
04448 ptr< pi_preg > a__pi_tpi__destination,
04449 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tdtpi__type1,
04450 ptr< ::lestes::md::types::tm_data_type_base > a__pi_tdtpi__type2);
04451
04452
04453 virtual void gc_mark();
04454
04455 private:
04456 static ptr<reflection_list> reflection;
04457
04458 };
04459
04460
04461
04462 class pi_operand : public ::lestes::intercode::pi_base {
04463 public:
04464 enum kind_type {
04465 PREG,
04466 LIT,
04467 MEM_DECL,
04468 MEM_LIT,
04469 MEM_STACK,
04470 MEM_PREG,
04471 MEM_TEMP,
04472 MEM_MEMBER,
04473 MEM_PTR_DEREF
04474 };
04475
04476
04477 ptr< pi_pi > origin_get() const;
04478
04479
04480 void origin_set(const ptr< pi_pi > &);
04481
04482
04483 ptr< ::lestes::md::types::tm_data_type_base > type_get() const;
04484
04485
04486 void type_set(const ptr< ::lestes::md::types::tm_data_type_base > &);
04487
04488
04489 virtual kind_type kind_get() abstract;
04490
04491 virtual ptr< ::lestes::backend_v2::intercode::ge_operand > accept_visitor_pi_operand2ge_operand_gen_base( ptr< visitor_pi_operand2ge_operand_gen_base > v ) abstract;
04492
04493
04494
04495 virtual ptr<reflection_list> reflection_get() const;
04496
04497 virtual ptr<field_list_list> field_values_get() const;
04498
04499 protected:
04500
04501 pi_operand (
04502 ptr< pi_pi > a__pi_operand__origin,
04503 ptr< ::lestes::md::types::tm_data_type_base > a__pi_operand__type);
04504
04505
04506 virtual void gc_mark();
04507
04508 private:
04509
04510
04511
04512
04513 srp< pi_pi > origin;
04514
04515 srp< ::lestes::md::types::tm_data_type_base > type;
04516 static ptr<reflection_list> reflection;
04517
04518 };
04519
04520
04521
04522 class pi_non_mem : public pi_operand {
04523 public:
04524 virtual kind_type kind_get() abstract;
04525
04526 virtual ptr< ::lestes::backend_v2::intercode::ge_operand > accept_visitor_pi_operand2ge_operand_gen_base( ptr< visitor_pi_operand2ge_operand_gen_base > v ) abstract;
04527
04528
04529
04530 virtual ptr<reflection_list> reflection_get() const;
04531
04532 virtual ptr<field_list_list> field_values_get() const;
04533
04534 protected:
04535
04536 pi_non_mem (
04537 ptr< pi_pi > a__pi_operand__origin,
04538 ptr< ::lestes::md::types::tm_data_type_base > a__pi_operand__type);
04539
04540
04541 virtual void gc_mark();
04542
04543 private:
04544 static ptr<reflection_list> reflection;
04545
04546 };
04547
04548
04549
04550 class pi_preg : public pi_non_mem {
04551 public:
04552 virtual kind_type kind_get();
04553
04554 virtual ptr< ::lestes::backend_v2::intercode::ge_operand > accept_visitor_pi_operand2ge_operand_gen_base( ptr< visitor_pi_operand2ge_operand_gen_base > v );
04555
04556
04557 static ptr< pi_preg > create (
04558 ptr< pi_pi > a__pi_operand__origin,
04559 ptr< ::lestes::md::types::tm_data_type_base > a__pi_operand__type);
04560
04561
04562
04563
04564 virtual ptr<reflection_list> reflection_get() const;
04565
04566 virtual ptr<field_list_list> field_values_get() const;
04567
04568 protected:
04569
04570 pi_preg (
04571 ptr< pi_pi > a__pi_operand__origin,
04572 ptr< ::lestes::md::types::tm_data_type_base > a__pi_operand__type);
04573
04574
04575 virtual void gc_mark();
04576
04577 private:
04578 static ptr<reflection_list> reflection;
04579
04580 };
04581
04582
04583
04584 class pi_lit : public pi_non_mem {
04585 public:
04586
04587 ptr< ::lestes::md::literals::literal_info_base > value_get() const;
04588
04589
04590 void value_set(const ptr< ::lestes::md::literals::literal_info_base > &);
04591
04592 virtual kind_type kind_get();
04593
04594 virtual ptr< ::lestes::backend_v2::intercode::ge_operand > accept_visitor_pi_operand2ge_operand_gen_base( ptr< visitor_pi_operand2ge_operand_gen_base > v );
04595
04596
04597 static ptr< pi_lit > create (
04598 ptr< pi_pi > a__pi_operand__origin,
04599 ptr< ::lestes::md::types::tm_data_type_base > a__pi_operand__type,
04600 ptr< ::lestes::md::literals::literal_info_base > a__pi_lit__value);
04601
04602
04603
04604
04605 virtual ptr<reflection_list> reflection_get() const;
04606
04607 virtual ptr<field_list_list> field_values_get() const;
04608
04609 protected:
04610
04611 pi_lit (
04612 ptr< pi_pi > a__pi_operand__origin,
04613 ptr< ::lestes::md::types::tm_data_type_base > a__pi_operand__type,
04614 ptr< ::lestes::md::literals::literal_info_base > a__pi_lit__value);
04615
04616
04617 virtual void gc_mark();
04618
04619 private:
04620
04621 srp< ::lestes::md::literals::literal_info_base > value;
04622 static ptr<reflection_list> reflection;
04623
04624 };
04625
04626
04627
04628
04629
04630
04631 class pi_mem : public pi_operand {
04632 public:
04633
04634 ptr< ::lestes::backend_v2::intercode::pi_mem_factory > factory_get() const;
04635
04636
04637 void factory_set(const ptr< ::lestes::backend_v2::intercode::pi_mem_factory > &);
04638
04639 virtual kind_type kind_get() abstract;
04640
04641 virtual ptr< ::lestes::backend_v2::intercode::ge_operand > accept_visitor_pi_operand2ge_operand_gen_base( ptr< visitor_pi_operand2ge_operand_gen_base > v ) abstract;
04642
04643
04644
04645 virtual ptr<reflection_list> reflection_get() const;
04646
04647 virtual ptr<field_list_list> field_values_get() const;
04648
04649 protected:
04650
04651 pi_mem (
04652 ptr< pi_pi > a__pi_operand__origin,
04653 ptr< ::lestes::md::types::tm_data_type_base > a__pi_operand__type,
04654 ptr< ::lestes::backend_v2::intercode::pi_mem_factory > a__pi_mem__factory);
04655
04656
04657 virtual void gc_mark();
04658
04659 private:
04660
04661 srp< ::lestes::backend_v2::intercode::pi_mem_factory > factory;
04662 static ptr<reflection_list> reflection;
04663
04664 };
04665
04666
04667
04668
04669
04670
04671 class pi_mem_decl : public pi_mem {
04672 public:
04673 virtual kind_type kind_get();
04674
04675 virtual ptr< ::lestes::backend_v2::intercode::ge_operand > accept_visitor_pi_operand2ge_operand_gen_base( ptr< visitor_pi_operand2ge_operand_gen_base > v );
04676
04677
04678 static ptr< pi_mem_decl > create (
04679 ptr< pi_pi > a__pi_operand__origin,
04680 ptr< ::lestes::md::types::tm_data_type_base > a__pi_operand__type,
04681 ptr< ::lestes::backend_v2::intercode::pi_mem_factory > a__pi_mem__factory);
04682
04683
04684
04685
04686 virtual ptr<reflection_list> reflection_get() const;
04687
04688 virtual ptr<field_list_list> field_values_get() const;
04689
04690 protected:
04691
04692 pi_mem_decl (
04693 ptr< pi_pi > a__pi_operand__origin,
04694 ptr< ::lestes::md::types::tm_data_type_base > a__pi_operand__type,
04695 ptr< ::lestes::backend_v2::intercode::pi_mem_factory > a__pi_mem__factory);
04696
04697
04698 virtual void gc_mark();
04699
04700 private:
04701 static ptr<reflection_list> reflection;
04702
04703 };
04704
04705
04706
04707
04708
04709
04710 class pi_mem_lit : public pi_mem {
04711 public:
04712 virtual kind_type kind_get();
04713
04714 virtual ptr< ::lestes::backend_v2::intercode::ge_operand > accept_visitor_pi_operand2ge_operand_gen_base( ptr< visitor_pi_operand2ge_operand_gen_base > v );
04715
04716
04717 static ptr< pi_mem_lit > create (
04718 ptr< pi_pi > a__pi_operand__origin,
04719 ptr< ::lestes::md::types::tm_data_type_base > a__pi_operand__type,
04720 ptr< ::lestes::backend_v2::intercode::pi_mem_factory > a__pi_mem__factory);
04721
04722
04723
04724
04725 virtual ptr<reflection_list> reflection_get() const;
04726
04727 virtual ptr<field_list_list> field_values_get() const;
04728
04729 protected:
04730
04731 pi_mem_lit (
04732 ptr< pi_pi > a__pi_operand__origin,
04733 ptr< ::lestes::md::types::tm_data_type_base > a__pi_operand__type,
04734 ptr< ::lestes::backend_v2::intercode::pi_mem_factory > a__pi_mem__factory);
04735
04736
04737 virtual void gc_mark();
04738
04739 private:
04740 static ptr<reflection_list> reflection;
04741
04742 };
04743
04744
04745
04746
04747
04748
04749 class pi_mem_member : public pi_mem {
04750 public:
04751 virtual kind_type kind_get();
04752
04753 virtual ptr< ::lestes::backend_v2::intercode::ge_operand > accept_visitor_pi_operand2ge_operand_gen_base( ptr< visitor_pi_operand2ge_operand_gen_base > v );
04754
04755
04756 static ptr< pi_mem_member > create (
04757 ptr< pi_pi > a__pi_operand__origin,
04758 ptr< ::lestes::md::types::tm_data_type_base > a__pi_operand__type,
04759 ptr< ::lestes::backend_v2::intercode::pi_mem_factory > a__pi_mem__factory);
04760
04761
04762
04763
04764 virtual ptr<reflection_list> reflection_get() const;
04765
04766 virtual ptr<field_list_list> field_values_get() const;
04767
04768 protected:
04769
04770 pi_mem_member (
04771 ptr< pi_pi > a__pi_operand__origin,
04772 ptr< ::lestes::md::types::tm_data_type_base > a__pi_operand__type,
04773 ptr< ::lestes::backend_v2::intercode::pi_mem_factory > a__pi_mem__factory);
04774
04775
04776 virtual void gc_mark();
04777
04778 private:
04779 static ptr<reflection_list> reflection;
04780
04781 };
04782
04783
04784
04785
04786
04787
04788 class pi_mem_stack : public pi_mem {
04789 public:
04790 virtual kind_type kind_get();
04791
04792 virtual ptr< ::lestes::backend_v2::intercode::ge_operand > accept_visitor_pi_operand2ge_operand_gen_base( ptr< visitor_pi_operand2ge_operand_gen_base > v );
04793
04794
04795 static ptr< pi_mem_stack > create (
04796 ptr< pi_pi > a__pi_operand__origin,
04797 ptr< ::lestes::md::types::tm_data_type_base > a__pi_operand__type,
04798 ptr< ::lestes::backend_v2::intercode::pi_mem_factory > a__pi_mem__factory);
04799
04800
04801
04802
04803 virtual ptr<reflection_list> reflection_get() const;
04804
04805 virtual ptr<field_list_list> field_values_get() const;
04806
04807 protected:
04808
04809 pi_mem_stack (
04810 ptr< pi_pi > a__pi_operand__origin,
04811 ptr< ::lestes::md::types::tm_data_type_base > a__pi_operand__type,
04812 ptr< ::lestes::backend_v2::intercode::pi_mem_factory > a__pi_mem__factory);
04813
04814
04815 virtual void gc_mark();
04816
04817 private:
04818 static ptr<reflection_list> reflection;
04819
04820 };
04821
04822
04823
04824
04825
04826
04827 class pi_mem_preg : public pi_mem {
04828 public:
04829 virtual kind_type kind_get();
04830
04831 virtual ptr< ::lestes::backend_v2::intercode::ge_operand > accept_visitor_pi_operand2ge_operand_gen_base( ptr< visitor_pi_operand2ge_operand_gen_base > v );
04832
04833
04834 static ptr< pi_mem_preg > create (
04835 ptr< pi_pi > a__pi_operand__origin,
04836 ptr< ::lestes::md::types::tm_data_type_base > a__pi_operand__type,
04837 ptr< ::lestes::backend_v2::intercode::pi_mem_factory > a__pi_mem__factory);
04838
04839
04840
04841
04842 virtual ptr<reflection_list> reflection_get() const;
04843
04844 virtual ptr<field_list_list> field_values_get() const;
04845
04846 protected:
04847
04848 pi_mem_preg (
04849 ptr< pi_pi > a__pi_operand__origin,
04850 ptr< ::lestes::md::types::tm_data_type_base > a__pi_operand__type,
04851 ptr< ::lestes::backend_v2::intercode::pi_mem_factory > a__pi_mem__factory);
04852
04853
04854 virtual void gc_mark();
04855
04856 private:
04857 static ptr<reflection_list> reflection;
04858
04859 };
04860
04861
04862
04863
04864
04865
04866 class pi_mem_temp : public pi_mem {
04867 public:
04868 virtual kind_type kind_get();
04869
04870 virtual ptr< ::lestes::backend_v2::intercode::ge_operand > accept_visitor_pi_operand2ge_operand_gen_base( ptr< visitor_pi_operand2ge_operand_gen_base > v );
04871
04872
04873 static ptr< pi_mem_temp > create (
04874 ptr< pi_pi > a__pi_operand__origin,
04875 ptr< ::lestes::md::types::tm_data_type_base > a__pi_operand__type,
04876 ptr< ::lestes::backend_v2::intercode::pi_mem_factory > a__pi_mem__factory);
04877
04878
04879
04880
04881 virtual ptr<reflection_list> reflection_get() const;
04882
04883 virtual ptr<field_list_list> field_values_get() const;
04884
04885 protected:
04886
04887 pi_mem_temp (
04888 ptr< pi_pi > a__pi_operand__origin,
04889 ptr< ::lestes::md::types::tm_data_type_base > a__pi_operand__type,
04890 ptr< ::lestes::backend_v2::intercode::pi_mem_factory > a__pi_mem__factory);
04891
04892
04893 virtual void gc_mark();
04894
04895 private:
04896 static ptr<reflection_list> reflection;
04897
04898 };
04899
04900
04901
04902
04903
04904
04905 class pi_mem_ptr_deref : public pi_mem {
04906 public:
04907 virtual kind_type kind_get();
04908
04909 virtual ptr< ::lestes::backend_v2::intercode::ge_operand > accept_visitor_pi_operand2ge_operand_gen_base( ptr< visitor_pi_operand2ge_operand_gen_base > v );
04910
04911
04912 static ptr< pi_mem_ptr_deref > create (
04913 ptr< pi_pi > a__pi_operand__origin,
04914 ptr< ::lestes::md::types::tm_data_type_base > a__pi_operand__type,
04915 ptr< ::lestes::backend_v2::intercode::pi_mem_factory > a__pi_mem__factory);
04916
04917
04918
04919
04920 virtual ptr<reflection_list> reflection_get() const;
04921
04922 virtual ptr<field_list_list> field_values_get() const;
04923
04924 protected:
04925
04926 pi_mem_ptr_deref (
04927 ptr< pi_pi > a__pi_operand__origin,
04928 ptr< ::lestes::md::types::tm_data_type_base > a__pi_operand__type,
04929 ptr< ::lestes::backend_v2::intercode::pi_mem_factory > a__pi_mem__factory);
04930
04931
04932 virtual void gc_mark();
04933
04934 private:
04935 static ptr<reflection_list> reflection;
04936
04937 };
04938
04939
04940 end_package(intercode);
04941 end_package(backend_v2);
04942 end_package(lestes);
04943
04944 package(lestes);
04945 package(std);
04946 specialize_objectize_for_enum( ::lestes::backend_v2::intercode::pi_operand::kind_type );
04947 end_package(std);
04948 end_package(lestes);
04949
04950 #endif // lestes__backend_v2__intercode__pi_g_hh__included