pi.g.hh

Go to the documentation of this file.
00001 // This file is automatically generated, do not edit.
00002 
00003 /*!
00004         \file
00005         \brief Classes of pi-level pseudoinstructions used in backend.
00006         \author jaz
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 //! Base class for pi-level pseudoinstruction hierarchy.
00219 class pi_pi : public ::lestes::intercode::pi_base {
00220 public:
00221         //! The method psp_get returns the value of the field pi_pi::psp.
00222         ptr< pi_pi > psp_get() const;
00223 
00224         //! The method psp_set sets the field pi_pi::psp to the given value.
00225         void psp_set(const ptr< pi_pi > &);
00226 
00227         //! The method nsp_get returns the value of the field pi_pi::nsp.
00228         ptr< pi_pi > nsp_get() const;
00229 
00230         //! The method nsp_set sets the field pi_pi::nsp to the given value.
00231         void nsp_set(const ptr< pi_pi > &);
00232 
00233         //! The method level_get returns the value of the field pi_pi::level.
00234         ulint level_get() const;
00235 
00236         //! The method level_set sets the field pi_pi::level to the given value.
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         //! for purposes of dumping
00245         virtual ptr<reflection_list> reflection_get() const;
00246         //! for purposes of dumping
00247         virtual ptr<field_list_list> field_values_get() const;
00248         
00249 protected:
00250         //! Generated constructor for class pi_pi.
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         //! Marking routine for class pi_pi. 
00257         virtual void gc_mark();
00258 
00259 private:
00260         /*! \brief First boundary sequencepoint.
00261 
00262         Each pseudoinstruction has origin in some C++ expression. Every expression has
00263 its boundary sequencepoints. So all pseudoinstructions created from single expression have the same
00264 boundary sequencepoints. These sequencepoints guarantee that pseudoinstruction is not scheduled outside its
00265 context.
00266         */
00267         srp< pi_pi > psp;
00268         /*! \brief Second boundary sequencepoint.
00269 
00270         Each pseudoinstruction has origin in some C++ expression. Every expression has
00271 its boundary sequencepoints. So all pseudoinstructions created from single expression have the same
00272 boundary sequencepoints. These sequencepoints guarantee that pseudoinstruction is not scheduled outside its
00273 context.
00274         */
00275         srp< pi_pi > nsp;
00276         //! Level for topological ordering of pseudoinstructions.
00277         ulint level;
00278         static ptr<reflection_list> reflection;
00279         
00280 }; // pi_pi
00281 
00282 
00283 //! Base class for branches.
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         //! for purposes of dumping
00292         virtual ptr<reflection_list> reflection_get() const;
00293         //! for purposes of dumping
00294         virtual ptr<field_list_list> field_values_get() const;
00295         
00296 protected:
00297         //! Generated constructor for class pi_branch.
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         //! Marking routine for class pi_branch. 
00304         virtual void gc_mark();
00305 
00306 private:
00307         static ptr<reflection_list> reflection;
00308         
00309 }; // pi_branch
00310 
00311 
00312 //! Base class for conditional branches.
00313 class pi_conditional_branch : public pi_branch {
00314 public:
00315         //! The method condition_get returns the value of the field pi_conditional_branch::condition.
00316         ptr< pi_preg > condition_get() const;
00317 
00318         //! The method condition_set sets the field pi_conditional_branch::condition to the given value.
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         //! for purposes of dumping
00327         virtual ptr<reflection_list> reflection_get() const;
00328         //! for purposes of dumping
00329         virtual ptr<field_list_list> field_values_get() const;
00330         
00331 protected:
00332         //! Generated constructor for class pi_conditional_branch.
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         //! Marking routine for class pi_conditional_branch. 
00340         virtual void gc_mark();
00341 
00342 private:
00343         /*! \brief Pseudoregister where result of a pi_cmp pseudoinstruction is stored.
00344 
00345         According to flags stored in this pseudoregister it is decided which branch is followed.
00346         */
00347         srp< pi_preg > condition;
00348         static ptr<reflection_list> reflection;
00349         
00350 }; // pi_conditional_branch
00351 
00352 
00353 //! Base class for unconditional branches.
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         //! for purposes of dumping
00362         virtual ptr<reflection_list> reflection_get() const;
00363         //! for purposes of dumping
00364         virtual ptr<field_list_list> field_values_get() const;
00365         
00366 protected:
00367         //! Generated constructor for class pi_uconditional_branch.
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         //! Marking routine for class pi_uconditional_branch. 
00374         virtual void gc_mark();
00375 
00376 private:
00377         static ptr<reflection_list> reflection;
00378         
00379 }; // pi_uconditional_branch
00380 
00381 
00382 //! Base class for branches that have multiple targes.
00383 class pi_branch_multiple : public pi_branch {
00384 public:
00385         //! The method value_get returns the value of the field pi_branch_multiple::value.
00386         ptr< pi_preg > value_get() const;
00387 
00388         //! The method value_set sets the field pi_branch_multiple::value to the given value.
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         //! for purposes of dumping
00397         virtual ptr<reflection_list> reflection_get() const;
00398         //! for purposes of dumping
00399         virtual ptr<field_list_list> field_values_get() const;
00400         
00401 protected:
00402         //! Generated constructor for class pi_branch_multiple.
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         //! Marking routine for class pi_branch_multiple. 
00410         virtual void gc_mark();
00411 
00412 private:
00413         //! Pseudosregister that holds value that selects a target to be followed.
00414         srp< pi_preg > value;
00415         static ptr<reflection_list> reflection;
00416         
00417 }; // pi_branch_multiple
00418 
00419 
00420 //! Base class for conditional branches that jump to labeled target.
00421 class pi_cb_single_label_target : public pi_conditional_branch {
00422 public:
00423         //! The method destination_get returns the value of the field pi_cb_single_label_target::destination.
00424         ptr< pi_sp > destination_get() const;
00425 
00426         //! The method destination_set sets the field pi_cb_single_label_target::destination to the given value.
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         //! for purposes of dumping
00435         virtual ptr<reflection_list> reflection_get() const;
00436         //! for purposes of dumping
00437         virtual ptr<field_list_list> field_values_get() const;
00438         
00439 protected:
00440         //! Generated constructor for class pi_cb_single_label_target.
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         //! Marking routine for class pi_cb_single_label_target. 
00449         virtual void gc_mark();
00450 
00451 private:
00452         //! The labeled target.
00453         srp< pi_sp > destination;
00454         static ptr<reflection_list> reflection;
00455         
00456 }; // pi_cb_single_label_target
00457 
00458 
00459 //! Base class for conditional branches that jump to address.
00460 class pi_cb_single_address_target : public pi_conditional_branch {
00461 public:
00462         //! The method destination_get returns the value of the field pi_cb_single_address_target::destination.
00463         ptr< pi_preg > destination_get() const;
00464 
00465         //! The method destination_set sets the field pi_cb_single_address_target::destination to the given value.
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         //! for purposes of dumping
00474         virtual ptr<reflection_list> reflection_get() const;
00475         //! for purposes of dumping
00476         virtual ptr<field_list_list> field_values_get() const;
00477         
00478 protected:
00479         //! Generated constructor for class pi_cb_single_address_target.
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         //! Marking routine for class pi_cb_single_address_target. 
00488         virtual void gc_mark();
00489 
00490 private:
00491         //! The target address for jump.
00492         srp< pi_preg > destination;
00493         static ptr<reflection_list> reflection;
00494         
00495 }; // pi_cb_single_address_target
00496 
00497 
00498 //! Base class for unconditional branches that jump to labeled target.
00499 class pi_ub_single_label_target : public pi_uconditional_branch {
00500 public:
00501         //! The method destination_get returns the value of the field pi_ub_single_label_target::destination.
00502         ptr< pi_sp > destination_get() const;
00503 
00504         //! The method destination_set sets the field pi_ub_single_label_target::destination to the given value.
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         //! for purposes of dumping
00513         virtual ptr<reflection_list> reflection_get() const;
00514         //! for purposes of dumping
00515         virtual ptr<field_list_list> field_values_get() const;
00516         
00517 protected:
00518         //! Generated constructor for class pi_ub_single_label_target.
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         //! Marking routine for class pi_ub_single_label_target. 
00526         virtual void gc_mark();
00527 
00528 private:
00529         //! The labeled target.
00530         srp< pi_sp > destination;
00531         static ptr<reflection_list> reflection;
00532         
00533 }; // pi_ub_single_label_target
00534 
00535 
00536 //! Base class for unconditional branches that jump to address.
00537 class pi_ub_single_address_target : public pi_uconditional_branch {
00538 public:
00539         //! The method destination_get returns the value of the field pi_ub_single_address_target::destination.
00540         ptr< pi_preg > destination_get() const;
00541 
00542         //! The method destination_set sets the field pi_ub_single_address_target::destination to the given value.
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         //! for purposes of dumping
00551         virtual ptr<reflection_list> reflection_get() const;
00552         //! for purposes of dumping
00553         virtual ptr<field_list_list> field_values_get() const;
00554         
00555 protected:
00556         //! Generated constructor for class pi_ub_single_address_target.
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         //! Marking routine for class pi_ub_single_address_target. 
00564         virtual void gc_mark();
00565 
00566 private:
00567         //! The target address for jump.
00568         srp< pi_preg > destination;
00569         static ptr<reflection_list> reflection;
00570         
00571 }; // pi_ub_single_address_target
00572 
00573 
00574 //! Base class for conditional branches that jump to multiple labeled targets.
00575 class pi_branch_multiple_label_target : public pi_branch_multiple {
00576 public:
00577         //! The method targets_get returns the value of the field pi_branch_multiple_label_target::targets.
00578         ptr< ::lestes::std::map< srp< ::lestes::md::literals::literal_info_base >, srp< pi_sp > > > targets_get() const;
00579 
00580         //! The method targets_set sets the field pi_branch_multiple_label_target::targets to the given value.
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         //! for purposes of dumping
00589         virtual ptr<reflection_list> reflection_get() const;
00590         //! for purposes of dumping
00591         virtual ptr<field_list_list> field_values_get() const;
00592         
00593 protected:
00594         //! Generated constructor for class pi_branch_multiple_label_target.
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         //! Marking routine for class pi_branch_multiple_label_target. 
00603         virtual void gc_mark();
00604 
00605 private:
00606         /*! \brief The targets for jump.
00607 
00608         Each target is pair of literal and label. If select value is equal to the literal then jump to the label is executed.
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 }; // pi_branch_multiple_label_target
00614 
00615 
00616 //! Base class for conditional branches that jump to multiple addresses.
00617 class pi_branch_multiple_address_target : public pi_branch_multiple {
00618 public:
00619         //! The method targets_get returns the value of the field pi_branch_multiple_address_target::targets.
00620         ptr< ::lestes::std::map< srp< ::lestes::md::literals::literal_info_base >, srp< pi_preg > > > targets_get() const;
00621 
00622         //! The method targets_set sets the field pi_branch_multiple_address_target::targets to the given value.
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         //! for purposes of dumping
00631         virtual ptr<reflection_list> reflection_get() const;
00632         //! for purposes of dumping
00633         virtual ptr<field_list_list> field_values_get() const;
00634         
00635 protected:
00636         //! Generated constructor for class pi_branch_multiple_address_target.
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         //! Marking routine for class pi_branch_multiple_address_target. 
00645         virtual void gc_mark();
00646 
00647 private:
00648         /*! \brief The targets for jump.
00649 
00650         Each target is pair of literal and address. If select value is equal to the literal then jump to the address is executed.
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 }; // pi_branch_multiple_address_target
00656 
00657 
00658 /*! \brief Base class for binary pseudoinstructions.
00659 
00660 Binary pseudoinstruction has two operands (one input and one output).
00661 */
00662 class pi_bpi : public pi_pi {
00663 public:
00664         //! The method source_get returns the value of the field pi_bpi::source.
00665         ptr< pi_non_mem > source_get() const;
00666 
00667         //! The method source_set sets the field pi_bpi::source to the given value.
00668         void source_set(const ptr< pi_non_mem > &);
00669 
00670         //! The method destination_get returns the value of the field pi_bpi::destination.
00671         ptr< pi_preg > destination_get() const;
00672 
00673         //! The method destination_set sets the field pi_bpi::destination to the given value.
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         //! for purposes of dumping
00682         virtual ptr<reflection_list> reflection_get() const;
00683         //! for purposes of dumping
00684         virtual ptr<field_list_list> field_values_get() const;
00685         
00686 protected:
00687         //! Generated constructor for class pi_bpi.
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         //! Marking routine for class pi_bpi. 
00696         virtual void gc_mark();
00697 
00698 private:
00699         //! The input operand.
00700         srp< pi_non_mem > source;
00701         //! The output operand.
00702         srp< pi_preg > destination;
00703         static ptr<reflection_list> reflection;
00704         
00705 }; // pi_bpi
00706 
00707 
00708 /*! \brief Base class for ternary pseudoinstructions.
00709 
00710 Ternary pseudoinstruction has two input and one output operands.
00711 */
00712 class pi_tpi : public pi_pi {
00713 public:
00714         //! The method left_get returns the value of the field pi_tpi::left.
00715         ptr< pi_non_mem > left_get() const;
00716 
00717         //! The method left_set sets the field pi_tpi::left to the given value.
00718         void left_set(const ptr< pi_non_mem > &);
00719 
00720         //! The method right_get returns the value of the field pi_tpi::right.
00721         ptr< pi_non_mem > right_get() const;
00722 
00723         //! The method right_set sets the field pi_tpi::right to the given value.
00724         void right_set(const ptr< pi_non_mem > &);
00725 
00726         //! The method destination_get returns the value of the field pi_tpi::destination.
00727         ptr< pi_preg > destination_get() const;
00728 
00729         //! The method destination_set sets the field pi_tpi::destination to the given value.
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         //! for purposes of dumping
00738         virtual ptr<reflection_list> reflection_get() const;
00739         //! for purposes of dumping
00740         virtual ptr<field_list_list> field_values_get() const;
00741         
00742 protected:
00743         //! Generated constructor for class pi_tpi.
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         //! Marking routine for class pi_tpi. 
00753         virtual void gc_mark();
00754 
00755 private:
00756         //! The left input operand.
00757         srp< pi_non_mem > left;
00758         //! The right input operand.
00759         srp< pi_non_mem > right;
00760         //! The output operand.
00761         srp< pi_preg > destination;
00762         static ptr<reflection_list> reflection;
00763         
00764 }; // pi_tpi
00765 
00766 
00767 //! Base class for function calls.
00768 class pi_abstract_function_call : public pi_pi {
00769 public:
00770         //! The method args_get returns the value of the field pi_abstract_function_call::args.
00771         ptr< ::lestes::std::list< srp< pi_operand > > > args_get() const;
00772 
00773         //! The method args_set sets the field pi_abstract_function_call::args to the given value.
00774         void args_set(const ptr< ::lestes::std::list< srp< pi_operand > > > & );
00775 
00776         //! The method this_arg_get returns the value of the field pi_abstract_function_call::this_arg.
00777         ptr< pi_mem > this_arg_get() const;
00778 
00779         //! The method this_arg_set sets the field pi_abstract_function_call::this_arg to the given value.
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         //! for purposes of dumping
00788         virtual ptr<reflection_list> reflection_get() const;
00789         //! for purposes of dumping
00790         virtual ptr<field_list_list> field_values_get() const;
00791         
00792 protected:
00793         //! Generated constructor for class pi_abstract_function_call.
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         //! Marking routine for class pi_abstract_function_call. 
00802         virtual void gc_mark();
00803 
00804 private:
00805         //! Parameters of the call.
00806         srp< ::lestes::std::list< srp< pi_operand > > >  args;
00807         /*! \brief "this" parameter.
00808 
00809         It is NULL for non-member function calls.
00810         */
00811         srp< pi_mem > this_arg;
00812         static ptr<reflection_list> reflection;
00813         
00814 }; // pi_abstract_function_call
00815 
00816 
00817 /*! \brief Base class for binary double-type pseudoinstructions.
00818 
00819 It has two operands of diferent datatype.
00820 */
00821 class pi_bdtpi : public pi_bpi {
00822 public:
00823         //! The method type1_get returns the value of the field pi_bdtpi::type1.
00824         ptr< ::lestes::md::types::tm_data_type_base > type1_get() const;
00825 
00826         //! The method type1_set sets the field pi_bdtpi::type1 to the given value.
00827         void type1_set(const ptr< ::lestes::md::types::tm_data_type_base > &);
00828 
00829         //! The method type2_get returns the value of the field pi_bdtpi::type2.
00830         ptr< ::lestes::md::types::tm_data_type_base > type2_get() const;
00831 
00832         //! The method type2_set sets the field pi_bdtpi::type2 to the given value.
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         //! for purposes of dumping
00841         virtual ptr<reflection_list> reflection_get() const;
00842         //! for purposes of dumping
00843         virtual ptr<field_list_list> field_values_get() const;
00844         
00845 protected:
00846         //! Generated constructor for class pi_bdtpi.
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         //! Marking routine for class pi_bdtpi. 
00857         virtual void gc_mark();
00858 
00859 private:
00860         //! Datatype of the output operand.
00861         srp< ::lestes::md::types::tm_data_type_base > type1;
00862         //! Datatype of the input operand.
00863         srp< ::lestes::md::types::tm_data_type_base > type2;
00864         static ptr<reflection_list> reflection;
00865         
00866 }; // pi_bdtpi
00867 
00868 
00869 //! Base class for load/store instructions.
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         //! for purposes of dumping
00878         virtual ptr<reflection_list> reflection_get() const;
00879         //! for purposes of dumping
00880         virtual ptr<field_list_list> field_values_get() const;
00881         
00882 protected:
00883         //! Generated constructor for class pi_abstract_move.
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         //! Marking routine for class pi_abstract_move. 
00890         virtual void gc_mark();
00891 
00892 private:
00893         static ptr<reflection_list> reflection;
00894         
00895 }; // pi_abstract_move
00896 
00897 
00898 //! Base class for load/store instructions with operands of the same type.
00899 class pi_abstract_move_st : public pi_abstract_move {
00900 public:
00901         //! The method destination_get returns the value of the field pi_abstract_move_st::destination.
00902         ptr< pi_operand > destination_get() const;
00903 
00904         //! The method destination_set sets the field pi_abstract_move_st::destination to the given value.
00905         void destination_set(const ptr< pi_operand > &);
00906 
00907         //! The method source_get returns the value of the field pi_abstract_move_st::source.
00908         ptr< pi_operand > source_get() const;
00909 
00910         //! The method source_set sets the field pi_abstract_move_st::source to the given value.
00911         void source_set(const ptr< pi_operand > &);
00912 
00913         //! The method type_get returns the value of the field pi_abstract_move_st::type.
00914         ptr< ::lestes::md::types::tm_data_type_base > type_get() const;
00915 
00916         //! The method type_set sets the field pi_abstract_move_st::type to the given value.
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         //! for purposes of dumping
00925         virtual ptr<reflection_list> reflection_get() const;
00926         //! for purposes of dumping
00927         virtual ptr<field_list_list> field_values_get() const;
00928         
00929 protected:
00930         //! Generated constructor for class pi_abstract_move_st.
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         //! Marking routine for class pi_abstract_move_st. 
00940         virtual void gc_mark();
00941 
00942 private:
00943         srp< pi_operand > destination;
00944         srp< pi_operand > source;
00945         //! Datatype of operands.
00946         srp< ::lestes::md::types::tm_data_type_base > type;
00947         static ptr<reflection_list> reflection;
00948         
00949 }; // pi_abstract_move_st
00950 
00951 
00952 //! Base class for load/store instructions with operands of the different types.
00953 class pi_abstract_move_dt : public pi_abstract_move {
00954 public:
00955         //! The method destination_get returns the value of the field pi_abstract_move_dt::destination.
00956         ptr< pi_operand > destination_get() const;
00957 
00958         //! The method destination_set sets the field pi_abstract_move_dt::destination to the given value.
00959         void destination_set(const ptr< pi_operand > &);
00960 
00961         //! The method source_get returns the value of the field pi_abstract_move_dt::source.
00962         ptr< pi_operand > source_get() const;
00963 
00964         //! The method source_set sets the field pi_abstract_move_dt::source to the given value.
00965         void source_set(const ptr< pi_operand > &);
00966 
00967         //! The method type1_get returns the value of the field pi_abstract_move_dt::type1.
00968         ptr< ::lestes::md::types::tm_data_type_base > type1_get() const;
00969 
00970         //! The method type1_set sets the field pi_abstract_move_dt::type1 to the given value.
00971         void type1_set(const ptr< ::lestes::md::types::tm_data_type_base > &);
00972 
00973         //! The method type2_get returns the value of the field pi_abstract_move_dt::type2.
00974         ptr< ::lestes::md::types::tm_data_type_base > type2_get() const;
00975 
00976         //! The method type2_set sets the field pi_abstract_move_dt::type2 to the given value.
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         //! for purposes of dumping
00985         virtual ptr<reflection_list> reflection_get() const;
00986         //! for purposes of dumping
00987         virtual ptr<field_list_list> field_values_get() const;
00988         
00989 protected:
00990         //! Generated constructor for class pi_abstract_move_dt.
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         //! Marking routine for class pi_abstract_move_dt. 
01001         virtual void gc_mark();
01002 
01003 private:
01004         srp< pi_operand > destination;
01005         srp< pi_operand > source;
01006         //! Datatype of output operand.
01007         srp< ::lestes::md::types::tm_data_type_base > type1;
01008         //! Datatype of input operand.
01009         srp< ::lestes::md::types::tm_data_type_base > type2;
01010         static ptr<reflection_list> reflection;
01011         
01012 }; // pi_abstract_move_dt
01013 
01014 
01015 //! Base class for store-via-pointer instructions.
01016 class pi_indirect_store : public pi_abstract_move {
01017 public:
01018         //! The method address_get returns the value of the field pi_indirect_store::address.
01019         ptr< pi_mem_ptr_deref > address_get() const;
01020 
01021         //! The method address_set sets the field pi_indirect_store::address to the given value.
01022         void address_set(const ptr< pi_mem_ptr_deref > &);
01023 
01024         //! The method value_get returns the value of the field pi_indirect_store::value.
01025         ptr< pi_operand > value_get() const;
01026 
01027         //! The method value_set sets the field pi_indirect_store::value to the given value.
01028         void value_set(const ptr< pi_operand > &);
01029 
01030         //! The method type1_get returns the value of the field pi_indirect_store::type1.
01031         ptr< ::lestes::md::types::tm_data_type_base > type1_get() const;
01032 
01033         //! The method type1_set sets the field pi_indirect_store::type1 to the given value.
01034         void type1_set(const ptr< ::lestes::md::types::tm_data_type_base > &);
01035 
01036         //! The method type2_get returns the value of the field pi_indirect_store::type2.
01037         ptr< ::lestes::md::types::tm_data_type_base > type2_get() const;
01038 
01039         //! The method type2_set sets the field pi_indirect_store::type2 to the given value.
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         //! for purposes of dumping
01048         virtual ptr<reflection_list> reflection_get() const;
01049         //! for purposes of dumping
01050         virtual ptr<field_list_list> field_values_get() const;
01051         
01052 protected:
01053         //! Generated constructor for class pi_indirect_store.
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         //! Marking routine for class pi_indirect_store. 
01064         virtual void gc_mark();
01065 
01066 private:
01067         //! Pseudoregister with address of target memory space.
01068         srp< pi_mem_ptr_deref > address;
01069         srp< pi_operand > value;
01070         //! Datatype of output operand.
01071         srp< ::lestes::md::types::tm_data_type_base > type1;
01072         //! Datatype of input operand.
01073         srp< ::lestes::md::types::tm_data_type_base > type2;
01074         static ptr<reflection_list> reflection;
01075         
01076 }; // pi_indirect_store
01077 
01078 
01079 //! Base class for store-via-pointer instructions.
01080 class pi_indirect_load : public pi_abstract_move {
01081 public:
01082         //! The method value_get returns the value of the field pi_indirect_load::value.
01083         ptr< pi_operand > value_get() const;
01084 
01085         //! The method value_set sets the field pi_indirect_load::value to the given value.
01086         void value_set(const ptr< pi_operand > &);
01087 
01088         //! The method address_get returns the value of the field pi_indirect_load::address.
01089         ptr< pi_mem_ptr_deref > address_get() const;
01090 
01091         //! The method address_set sets the field pi_indirect_load::address to the given value.
01092         void address_set(const ptr< pi_mem_ptr_deref > &);
01093 
01094         //! The method type1_get returns the value of the field pi_indirect_load::type1.
01095         ptr< ::lestes::md::types::tm_data_type_base > type1_get() const;
01096 
01097         //! The method type1_set sets the field pi_indirect_load::type1 to the given value.
01098         void type1_set(const ptr< ::lestes::md::types::tm_data_type_base > &);
01099 
01100         //! The method type2_get returns the value of the field pi_indirect_load::type2.
01101         ptr< ::lestes::md::types::tm_data_type_base > type2_get() const;
01102 
01103         //! The method type2_set sets the field pi_indirect_load::type2 to the given value.
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         //! for purposes of dumping
01112         virtual ptr<reflection_list> reflection_get() const;
01113         //! for purposes of dumping
01114         virtual ptr<field_list_list> field_values_get() const;
01115         
01116 protected:
01117         //! Generated constructor for class pi_indirect_load.
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         //! Marking routine for class pi_indirect_load. 
01128         virtual void gc_mark();
01129 
01130 private:
01131         srp< pi_operand > value;
01132         //! Pseudoregister with address of target memory space.
01133         srp< pi_mem_ptr_deref > address;
01134         //! Datatype of output operand.
01135         srp< ::lestes::md::types::tm_data_type_base > type1;
01136         //! Datatype of input operand.
01137         srp< ::lestes::md::types::tm_data_type_base > type2;
01138         static ptr<reflection_list> reflection;
01139         
01140 }; // pi_indirect_load
01141 
01142 
01143 /*! \brief Base class for binary single-type pseudoinstructions.
01144 
01145 It has two operands of the same kind.
01146 */
01147 class pi_bstpi : public pi_bpi {
01148 public:
01149         //! The method type_get returns the value of the field pi_bstpi::type.
01150         ptr< ::lestes::md::types::tm_data_type_base > type_get() const;
01151 
01152         //! The method type_set sets the field pi_bstpi::type to the given value.
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         //! for purposes of dumping
01161         virtual ptr<reflection_list> reflection_get() const;
01162         //! for purposes of dumping
01163         virtual ptr<field_list_list> field_values_get() const;
01164         
01165 protected:
01166         //! Generated constructor for class pi_bstpi.
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         //! Marking routine for class pi_bstpi. 
01176         virtual void gc_mark();
01177 
01178 private:
01179         //! Datatype of operands.
01180         srp< ::lestes::md::types::tm_data_type_base > type;
01181         static ptr<reflection_list> reflection;
01182         
01183 }; // pi_bstpi
01184 
01185 
01186 /*! \brief Base class for ternary single-type pseudoinstructions.
01187 
01188 It has two input operands and one output operands of the same kind.
01189 */
01190 class pi_tstpi : public pi_tpi {
01191 public:
01192         //! The method type_get returns the value of the field pi_tstpi::type.
01193         ptr< ::lestes::md::types::tm_data_type_base > type_get() const;
01194 
01195         //! The method type_set sets the field pi_tstpi::type to the given value.
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         //! for purposes of dumping
01204         virtual ptr<reflection_list> reflection_get() const;
01205         //! for purposes of dumping
01206         virtual ptr<field_list_list> field_values_get() const;
01207         
01208 protected:
01209         //! Generated constructor for class pi_tstpi.
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         //! Marking routine for class pi_tstpi. 
01220         virtual void gc_mark();
01221 
01222 private:
01223         //! Datatype of operands.
01224         srp< ::lestes::md::types::tm_data_type_base > type;
01225         static ptr<reflection_list> reflection;
01226         
01227 }; // pi_tstpi
01228 
01229 
01230 /*! \brief Base class for ternary double-type pseudoinstructions.
01231 
01232 It has two input and one output operand of different types.
01233 */
01234 class pi_tdtpi : public pi_tpi {
01235 public:
01236         //! The method type1_get returns the value of the field pi_tdtpi::type1.
01237         ptr< ::lestes::md::types::tm_data_type_base > type1_get() const;
01238 
01239         //! The method type1_set sets the field pi_tdtpi::type1 to the given value.
01240         void type1_set(const ptr< ::lestes::md::types::tm_data_type_base > &);
01241 
01242         //! The method type2_get returns the value of the field pi_tdtpi::type2.
01243         ptr< ::lestes::md::types::tm_data_type_base > type2_get() const;
01244 
01245         //! The method type2_set sets the field pi_tdtpi::type2 to the given value.
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         //! for purposes of dumping
01254         virtual ptr<reflection_list> reflection_get() const;
01255         //! for purposes of dumping
01256         virtual ptr<field_list_list> field_values_get() const;
01257         
01258 protected:
01259         //! Generated constructor for class pi_tdtpi.
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         //! Marking routine for class pi_tdtpi. 
01271         virtual void gc_mark();
01272 
01273 private:
01274         //! Datatype of output operand and left input operand.
01275         srp< ::lestes::md::types::tm_data_type_base > type1;
01276         //! Datatype of right input operand.
01277         srp< ::lestes::md::types::tm_data_type_base > type2;
01278         static ptr<reflection_list> reflection;
01279         
01280 }; // pi_tdtpi
01281 
01282 
01283 //! Sequence point.
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         //! First generated factory method for class pi_sp.
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         //! for purposes of dumping
01299         virtual ptr<reflection_list> reflection_get() const;
01300         //! for purposes of dumping
01301         virtual ptr<field_list_list> field_values_get() const;
01302         
01303 protected:
01304         //! Generated constructor for class pi_sp.
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         //! Marking routine for class pi_sp. 
01311         virtual void gc_mark();
01312 
01313 private:
01314         static ptr<reflection_list> reflection;
01315         
01316 }; // pi_sp
01317 
01318 
01319 /*! \brief Addition
01320 
01321 destination = left + right
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         //! First generated factory method for class pi_add.
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         //! for purposes of dumping
01342         virtual ptr<reflection_list> reflection_get() const;
01343         //! for purposes of dumping
01344         virtual ptr<field_list_list> field_values_get() const;
01345         
01346 protected:
01347         //! Generated constructor for class pi_add.
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         //! Marking routine for class pi_add. 
01358         virtual void gc_mark();
01359 
01360 private:
01361         static ptr<reflection_list> reflection;
01362         
01363 }; // pi_add
01364 
01365 
01366 /*! \brief Subtraction
01367 
01368 destination = left - right
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         //! First generated factory method for class pi_sub.
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         //! for purposes of dumping
01389         virtual ptr<reflection_list> reflection_get() const;
01390         //! for purposes of dumping
01391         virtual ptr<field_list_list> field_values_get() const;
01392         
01393 protected:
01394         //! Generated constructor for class pi_sub.
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         //! Marking routine for class pi_sub. 
01405         virtual void gc_mark();
01406 
01407 private:
01408         static ptr<reflection_list> reflection;
01409         
01410 }; // pi_sub
01411 
01412 
01413 /*! \brief Multiplication
01414 
01415 destination = left * right
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         //! First generated factory method for class pi_mul.
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         //! for purposes of dumping
01436         virtual ptr<reflection_list> reflection_get() const;
01437         //! for purposes of dumping
01438         virtual ptr<field_list_list> field_values_get() const;
01439         
01440 protected:
01441         //! Generated constructor for class pi_mul.
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         //! Marking routine for class pi_mul. 
01452         virtual void gc_mark();
01453 
01454 private:
01455         static ptr<reflection_list> reflection;
01456         
01457 }; // pi_mul
01458 
01459 
01460 /*! \brief Division
01461 
01462 destination = left / right
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         //! First generated factory method for class pi_div.
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         //! for purposes of dumping
01483         virtual ptr<reflection_list> reflection_get() const;
01484         //! for purposes of dumping
01485         virtual ptr<field_list_list> field_values_get() const;
01486         
01487 protected:
01488         //! Generated constructor for class pi_div.
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         //! Marking routine for class pi_div. 
01499         virtual void gc_mark();
01500 
01501 private:
01502         static ptr<reflection_list> reflection;
01503         
01504 }; // pi_div
01505 
01506 
01507 /*! \brief Division round towards negative infinity
01508 
01509 destination = left / right
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         //! First generated factory method for class pi_divrni.
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         //! for purposes of dumping
01530         virtual ptr<reflection_list> reflection_get() const;
01531         //! for purposes of dumping
01532         virtual ptr<field_list_list> field_values_get() const;
01533         
01534 protected:
01535         //! Generated constructor for class pi_divrni.
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         //! Marking routine for class pi_divrni. 
01546         virtual void gc_mark();
01547 
01548 private:
01549         static ptr<reflection_list> reflection;
01550         
01551 }; // pi_divrni
01552 
01553 
01554 /*! \brief Division round towards positive infinity
01555 
01556 destination = left / right
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         //! First generated factory method for class pi_divrpi.
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         //! for purposes of dumping
01577         virtual ptr<reflection_list> reflection_get() const;
01578         //! for purposes of dumping
01579         virtual ptr<field_list_list> field_values_get() const;
01580         
01581 protected:
01582         //! Generated constructor for class pi_divrpi.
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         //! Marking routine for class pi_divrpi. 
01593         virtual void gc_mark();
01594 
01595 private:
01596         static ptr<reflection_list> reflection;
01597         
01598 }; // pi_divrpi
01599 
01600 
01601 /*! \brief Division round towards zero
01602 
01603 destination = left / right
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         //! First generated factory method for class pi_divrz.
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         //! for purposes of dumping
01624         virtual ptr<reflection_list> reflection_get() const;
01625         //! for purposes of dumping
01626         virtual ptr<field_list_list> field_values_get() const;
01627         
01628 protected:
01629         //! Generated constructor for class pi_divrz.
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         //! Marking routine for class pi_divrz. 
01640         virtual void gc_mark();
01641 
01642 private:
01643         static ptr<reflection_list> reflection;
01644         
01645 }; // pi_divrz
01646 
01647 
01648 /*! \brief Modulo
01649 
01650 destination = left % right (result has the same sign as left)
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         //! First generated factory method for class pi_mod.
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         //! for purposes of dumping
01671         virtual ptr<reflection_list> reflection_get() const;
01672         //! for purposes of dumping
01673         virtual ptr<field_list_list> field_values_get() const;
01674         
01675 protected:
01676         //! Generated constructor for class pi_mod.
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         //! Marking routine for class pi_mod. 
01687         virtual void gc_mark();
01688 
01689 private:
01690         static ptr<reflection_list> reflection;
01691         
01692 }; // pi_mod
01693 
01694 
01695 /*! \brief Reminder
01696 
01697 destination = left % right (result has the same sign as right)
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         //! First generated factory method for class pi_rem.
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         //! for purposes of dumping
01718         virtual ptr<reflection_list> reflection_get() const;
01719         //! for purposes of dumping
01720         virtual ptr<field_list_list> field_values_get() const;
01721         
01722 protected:
01723         //! Generated constructor for class pi_rem.
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         //! Marking routine for class pi_rem. 
01734         virtual void gc_mark();
01735 
01736 private:
01737         static ptr<reflection_list> reflection;
01738         
01739 }; // pi_rem
01740 
01741 
01742 /*! \brief Negation
01743 
01744 destination = -source
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         //! First generated factory method for class pi_neg.
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         //! for purposes of dumping
01764         virtual ptr<reflection_list> reflection_get() const;
01765         //! for purposes of dumping
01766         virtual ptr<field_list_list> field_values_get() const;
01767         
01768 protected:
01769         //! Generated constructor for class pi_neg.
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         //! Marking routine for class pi_neg. 
01779         virtual void gc_mark();
01780 
01781 private:
01782         static ptr<reflection_list> reflection;
01783         
01784 }; // pi_neg
01785 
01786 
01787 /*! \brief Gation
01788 
01789 destination = +source
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         //! First generated factory method for class pi_gat.
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         //! for purposes of dumping
01809         virtual ptr<reflection_list> reflection_get() const;
01810         //! for purposes of dumping
01811         virtual ptr<field_list_list> field_values_get() const;
01812         
01813 protected:
01814         //! Generated constructor for class pi_gat.
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         //! Marking routine for class pi_gat. 
01824         virtual void gc_mark();
01825 
01826 private:
01827         static ptr<reflection_list> reflection;
01828         
01829 }; // pi_gat
01830 
01831 
01832 /*! \brief Left shift
01833 
01834 destination = left <<(logical; zero fill) right
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         //! First generated factory method for class pi_shl.
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         //! for purposes of dumping
01855         virtual ptr<reflection_list> reflection_get() const;
01856         //! for purposes of dumping
01857         virtual ptr<field_list_list> field_values_get() const;
01858         
01859 protected:
01860         //! Generated constructor for class pi_shl.
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         //! Marking routine for class pi_shl. 
01871         virtual void gc_mark();
01872 
01873 private:
01874         static ptr<reflection_list> reflection;
01875         
01876 }; // pi_shl
01877 
01878 
01879 /*! \brief Right shift
01880 
01881 destination = left >>(logical; zero fill) right
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         //! First generated factory method for class pi_shr.
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         //! for purposes of dumping
01902         virtual ptr<reflection_list> reflection_get() const;
01903         //! for purposes of dumping
01904         virtual ptr<field_list_list> field_values_get() const;
01905         
01906 protected:
01907         //! Generated constructor for class pi_shr.
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         //! Marking routine for class pi_shr. 
01918         virtual void gc_mark();
01919 
01920 private:
01921         static ptr<reflection_list> reflection;
01922         
01923 }; // pi_shr
01924 
01925 
01926 /*! \brief Left arithmetic shift
01927 
01928 destination = left <<(aritmetical; sign fill) right
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         //! First generated factory method for class pi_sal.
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         //! for purposes of dumping
01949         virtual ptr<reflection_list> reflection_get() const;
01950         //! for purposes of dumping
01951         virtual ptr<field_list_list> field_values_get() const;
01952         
01953 protected:
01954         //! Generated constructor for class pi_sal.
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         //! Marking routine for class pi_sal. 
01965         virtual void gc_mark();
01966 
01967 private:
01968         static ptr<reflection_list> reflection;
01969         
01970 }; // pi_sal
01971 
01972 
01973 /*! \brief Right arithmetic shift
01974 
01975 destination = left >>(aritmetical; sign fill) right
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         //! First generated factory method for class pi_sar.
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         //! for purposes of dumping
01996         virtual ptr<reflection_list> reflection_get() const;
01997         //! for purposes of dumping
01998         virtual ptr<field_list_list> field_values_get() const;
01999         
02000 protected:
02001         //! Generated constructor for class pi_sar.
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         //! Marking routine for class pi_sar. 
02012         virtual void gc_mark();
02013 
02014 private:
02015         static ptr<reflection_list> reflection;
02016         
02017 }; // pi_sar
02018 
02019 
02020 /*! \brief Bitwise AND
02021 
02022 destination = left & right
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         //! First generated factory method for class pi_band.
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         //! for purposes of dumping
02043         virtual ptr<reflection_list> reflection_get() const;
02044         //! for purposes of dumping
02045         virtual ptr<field_list_list> field_values_get() const;
02046         
02047 protected:
02048         //! Generated constructor for class pi_band.
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         //! Marking routine for class pi_band. 
02059         virtual void gc_mark();
02060 
02061 private:
02062         static ptr<reflection_list> reflection;
02063         
02064 }; // pi_band
02065 
02066 
02067 /*! \brief Bitwise OR
02068 
02069 destination = left | right
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         //! First generated factory method for class pi_bor.
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         //! for purposes of dumping
02090         virtual ptr<reflection_list> reflection_get() const;
02091         //! for purposes of dumping
02092         virtual ptr<field_list_list> field_values_get() const;
02093         
02094 protected:
02095         //! Generated constructor for class pi_bor.
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         //! Marking routine for class pi_bor. 
02106         virtual void gc_mark();
02107 
02108 private:
02109         static ptr<reflection_list> reflection;
02110         
02111 }; // pi_bor
02112 
02113 
02114 /*! \brief Bitwise XOR
02115 
02116 destination = left ^ right
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         //! First generated factory method for class pi_bxor.
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         //! for purposes of dumping
02137         virtual ptr<reflection_list> reflection_get() const;
02138         //! for purposes of dumping
02139         virtual ptr<field_list_list> field_values_get() const;
02140         
02141 protected:
02142         //! Generated constructor for class pi_bxor.
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         //! Marking routine for class pi_bxor. 
02153         virtual void gc_mark();
02154 
02155 private:
02156         static ptr<reflection_list> reflection;
02157         
02158 }; // pi_bxor
02159 
02160 
02161 /*! \brief Bitwise NOT
02162 
02163 destination = ~source
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         //! First generated factory method for class pi_bnot.
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         //! for purposes of dumping
02183         virtual ptr<reflection_list> reflection_get() const;
02184         //! for purposes of dumping
02185         virtual ptr<field_list_list> field_values_get() const;
02186         
02187 protected:
02188         //! Generated constructor for class pi_bnot.
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         //! Marking routine for class pi_bnot. 
02198         virtual void gc_mark();
02199 
02200 private:
02201         static ptr<reflection_list> reflection;
02202         
02203 }; // pi_bnot
02204 
02205 
02206 /*! \brief Logical AND
02207 
02208 destination = left && right
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         //! First generated factory method for class pi_land.
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         //! for purposes of dumping
02229         virtual ptr<reflection_list> reflection_get() const;
02230         //! for purposes of dumping
02231         virtual ptr<field_list_list> field_values_get() const;
02232         
02233 protected:
02234         //! Generated constructor for class pi_land.
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         //! Marking routine for class pi_land. 
02245         virtual void gc_mark();
02246 
02247 private:
02248         static ptr<reflection_list> reflection;
02249         
02250 }; // pi_land
02251 
02252 
02253 /*! \brief Logical OR
02254 
02255 destination = left || right
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         //! First generated factory method for class pi_lor.
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         //! for purposes of dumping
02276         virtual ptr<reflection_list> reflection_get() const;
02277         //! for purposes of dumping
02278         virtual ptr<field_list_list> field_values_get() const;
02279         
02280 protected:
02281         //! Generated constructor for class pi_lor.
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         //! Marking routine for class pi_lor. 
02292         virtual void gc_mark();
02293 
02294 private:
02295         static ptr<reflection_list> reflection;
02296         
02297 }; // pi_lor
02298 
02299 
02300 /*! \brief Logical XOR
02301 
02302 destination = left ^^ right
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         //! First generated factory method for class pi_lxor.
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         //! for purposes of dumping
02323         virtual ptr<reflection_list> reflection_get() const;
02324         //! for purposes of dumping
02325         virtual ptr<field_list_list> field_values_get() const;
02326         
02327 protected:
02328         //! Generated constructor for class pi_lxor.
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         //! Marking routine for class pi_lxor. 
02339         virtual void gc_mark();
02340 
02341 private:
02342         static ptr<reflection_list> reflection;
02343         
02344 }; // pi_lxor
02345 
02346 
02347 /*! \brief Logical NOT
02348 
02349 destination = !source
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         //! First generated factory method for class pi_lnot.
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         //! for purposes of dumping
02369         virtual ptr<reflection_list> reflection_get() const;
02370         //! for purposes of dumping
02371         virtual ptr<field_list_list> field_values_get() const;
02372         
02373 protected:
02374         //! Generated constructor for class pi_lnot.
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         //! Marking routine for class pi_lnot. 
02384         virtual void gc_mark();
02385 
02386 private:
02387         static ptr<reflection_list> reflection;
02388         
02389 }; // pi_lnot
02390 
02391 
02392 /*! \brief Conversion
02393 
02394 destination gets result of conversion of source to destination type.
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         //! First generated factory method for class pi_cvt.
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         //! for purposes of dumping
02415         virtual ptr<reflection_list> reflection_get() const;
02416         //! for purposes of dumping
02417         virtual ptr<field_list_list> field_values_get() const;
02418         
02419 protected:
02420         //! Generated constructor for class pi_cvt.
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         //! Marking routine for class pi_cvt. 
02431         virtual void gc_mark();
02432 
02433 private:
02434         static ptr<reflection_list> reflection;
02435         
02436 }; // pi_cvt
02437 
02438 
02439 /*! \brief Comparison
02440 
02441 destination gets result of comparison of left and right.
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         //! First generated factory method for class pi_cmp.
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         //! for purposes of dumping
02463         virtual ptr<reflection_list> reflection_get() const;
02464         //! for purposes of dumping
02465         virtual ptr<field_list_list> field_values_get() const;
02466         
02467 protected:
02468         //! Generated constructor for class pi_cmp.
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         //! Marking routine for class pi_cmp. 
02480         virtual void gc_mark();
02481 
02482 private:
02483         static ptr<reflection_list> reflection;
02484         
02485 }; // pi_cmp
02486 
02487 
02488 /*! \brief Move/Assignment
02489 
02490 destination <- source
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         //! First generated factory method for class pi_mov.
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         //! for purposes of dumping
02510         virtual ptr<reflection_list> reflection_get() const;
02511         //! for purposes of dumping
02512         virtual ptr<field_list_list> field_values_get() const;
02513         
02514 protected:
02515         //! Generated constructor for class pi_mov.
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         //! Marking routine for class pi_mov. 
02525         virtual void gc_mark();
02526 
02527 private:
02528         static ptr<reflection_list> reflection;
02529         
02530 }; // pi_mov
02531 
02532 
02533 /*! \brief Load
02534 
02535 destination <- source (destination is pseudoregister, source is memory)
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         //! First generated factory method for class pi_ld.
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         //! for purposes of dumping
02555         virtual ptr<reflection_list> reflection_get() const;
02556         //! for purposes of dumping
02557         virtual ptr<field_list_list> field_values_get() const;
02558         
02559 protected:
02560         //! Generated constructor for class pi_ld.
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         //! Marking routine for class pi_ld. 
02570         virtual void gc_mark();
02571 
02572 private:
02573         static ptr<reflection_list> reflection;
02574         
02575 }; // pi_ld
02576 
02577 
02578 /*! \brief Load address
02579 
02580 destination <- ADDRESS_OF(source)(destination is pseudoregister, source is memory)
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         //! First generated factory method for class pi_lda.
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         //! for purposes of dumping
02601         virtual ptr<reflection_list> reflection_get() const;
02602         //! for purposes of dumping
02603         virtual ptr<field_list_list> field_values_get() const;
02604         
02605 protected:
02606         //! Generated constructor for class pi_lda.
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         //! Marking routine for class pi_lda. 
02617         virtual void gc_mark();
02618 
02619 private:
02620         static ptr<reflection_list> reflection;
02621         
02622 }; // pi_lda
02623 
02624 
02625 /*! \brief Load immediate
02626 
02627 destination <- source (destination is pseudoregister, source is literal)
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         //! First generated factory method for class pi_ldi.
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         //! for purposes of dumping
02647         virtual ptr<reflection_list> reflection_get() const;
02648         //! for purposes of dumping
02649         virtual ptr<field_list_list> field_values_get() const;
02650         
02651 protected:
02652         //! Generated constructor for class pi_ldi.
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         //! Marking routine for class pi_ldi. 
02662         virtual void gc_mark();
02663 
02664 private:
02665         static ptr<reflection_list> reflection;
02666         
02667 }; // pi_ldi
02668 
02669 
02670 /*! \brief Load via pointer
02671 
02672 destination <- MEM[source] (destination is pseudoregister, source is pseudoregister)
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         //! First generated factory method for class pi_ldp.
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         //! for purposes of dumping
02693         virtual ptr<reflection_list> reflection_get() const;
02694         //! for purposes of dumping
02695         virtual ptr<field_list_list> field_values_get() const;
02696         
02697 protected:
02698         //! Generated constructor for class pi_ldp.
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         //! Marking routine for class pi_ldp. 
02709         virtual void gc_mark();
02710 
02711 private:
02712         static ptr<reflection_list> reflection;
02713         
02714 }; // pi_ldp
02715 
02716 
02717 /*! \brief Load volatile
02718 
02719 destination <- source (destination is pseudoregister, source is memory)
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         //! First generated factory method for class pi_ldv.
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         //! for purposes of dumping
02739         virtual ptr<reflection_list> reflection_get() const;
02740         //! for purposes of dumping
02741         virtual ptr<field_list_list> field_values_get() const;
02742         
02743 protected:
02744         //! Generated constructor for class pi_ldv.
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         //! Marking routine for class pi_ldv. 
02754         virtual void gc_mark();
02755 
02756 private:
02757         static ptr<reflection_list> reflection;
02758         
02759 }; // pi_ldv
02760 
02761 
02762 /*! \brief Load volatile via pointer
02763 
02764 destination <- MEM[source] (destination is pseudoregister, source is pseudoregister)
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         //! First generated factory method for class pi_ldpv.
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         //! for purposes of dumping
02785         virtual ptr<reflection_list> reflection_get() const;
02786         //! for purposes of dumping
02787         virtual ptr<field_list_list> field_values_get() const;
02788         
02789 protected:
02790         //! Generated constructor for class pi_ldpv.
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         //! Marking routine for class pi_ldpv. 
02801         virtual void gc_mark();
02802 
02803 private:
02804         static ptr<reflection_list> reflection;
02805         
02806 }; // pi_ldpv
02807 
02808 
02809 /*! \brief Store
02810 
02811 destination <- source (destination is memory, source is pseudoregister)
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         //! First generated factory method for class pi_st.
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         //! for purposes of dumping
02831         virtual ptr<reflection_list> reflection_get() const;
02832         //! for purposes of dumping
02833         virtual ptr<field_list_list> field_values_get() const;
02834         
02835 protected:
02836         //! Generated constructor for class pi_st.
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         //! Marking routine for class pi_st. 
02846         virtual void gc_mark();
02847 
02848 private:
02849         static ptr<reflection_list> reflection;
02850         
02851 }; // pi_st
02852 
02853 
02854 /*! \brief Store immediate
02855 
02856 destination <- source (destination is memory, source is literal)
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         //! First generated factory method for class pi_sti.
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         //! for purposes of dumping
02876         virtual ptr<reflection_list> reflection_get() const;
02877         //! for purposes of dumping
02878         virtual ptr<field_list_list> field_values_get() const;
02879         
02880 protected:
02881         //! Generated constructor for class pi_sti.
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         //! Marking routine for class pi_sti. 
02891         virtual void gc_mark();
02892 
02893 private:
02894         static ptr<reflection_list> reflection;
02895         
02896 }; // pi_sti
02897 
02898 
02899 /*! \brief Store via pointer
02900 
02901 MEM[destination] <- source (destination is pseudoregister, source is pseudoregister)
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         //! First generated factory method for class pi_stp.
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         //! for purposes of dumping
02922         virtual ptr<reflection_list> reflection_get() const;
02923         //! for purposes of dumping
02924         virtual ptr<field_list_list> field_values_get() const;
02925         
02926 protected:
02927         //! Generated constructor for class pi_stp.
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         //! Marking routine for class pi_stp. 
02938         virtual void gc_mark();
02939 
02940 private:
02941         static ptr<reflection_list> reflection;
02942         
02943 }; // pi_stp
02944 
02945 
02946 /*! \brief Store volatile
02947 
02948 destination <- source (destination is memory, source is pseudoregister)
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         //! First generated factory method for class pi_stv.
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         //! for purposes of dumping
02968         virtual ptr<reflection_list> reflection_get() const;
02969         //! for purposes of dumping
02970         virtual ptr<field_list_list> field_values_get() const;
02971         
02972 protected:
02973         //! Generated constructor for class pi_stv.
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         //! Marking routine for class pi_stv. 
02983         virtual void gc_mark();
02984 
02985 private:
02986         static ptr<reflection_list> reflection;
02987         
02988 }; // pi_stv
02989 
02990 
02991 /*! \brief Store immediate volatile
02992 
02993 destination <- source (destination is memory, source is immediate)
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         //! First generated factory method for class pi_stiv.
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         //! for purposes of dumping
03013         virtual ptr<reflection_list> reflection_get() const;
03014         //! for purposes of dumping
03015         virtual ptr<field_list_list> field_values_get() const;
03016         
03017 protected:
03018         //! Generated constructor for class pi_stiv.
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         //! Marking routine for class pi_stiv. 
03028         virtual void gc_mark();
03029 
03030 private:
03031         static ptr<reflection_list> reflection;
03032         
03033 }; // pi_stiv
03034 
03035 
03036 /*! \brief Store volatile via pointer
03037 
03038 MEM[destination] <- source (destination is pseudoregister, source is pseudoregister)
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         //! First generated factory method for class pi_stpv.
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         //! for purposes of dumping
03059         virtual ptr<reflection_list> reflection_get() const;
03060         //! for purposes of dumping
03061         virtual ptr<field_list_list> field_values_get() const;
03062         
03063 protected:
03064         //! Generated constructor for class pi_stpv.
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         //! Marking routine for class pi_stpv. 
03075         virtual void gc_mark();
03076 
03077 private:
03078         static ptr<reflection_list> reflection;
03079         
03080 }; // pi_stpv
03081 
03082 
03083 //! Function call
03084 class pi_call : public pi_abstract_function_call {
03085 public:
03086         //! The method type_get returns the value of the field pi_call::type.
03087         ptr< ::lestes::md::types::tm_data_type_base > type_get() const;
03088 
03089         //! The method type_set sets the field pi_call::type to the given value.
03090         void type_set(const ptr< ::lestes::md::types::tm_data_type_base > &);
03091 
03092         //! The method rv_get returns the value of the field pi_call::rv.
03093         ptr< pi_mem > rv_get() const;
03094 
03095         //! The method rv_set sets the field pi_call::rv to the given value.
03096         void rv_set(const ptr< pi_mem > &);
03097 
03098         //! The method f_get returns the value of the field pi_call::f.
03099         ptr< ::lestes::lang::cplus::sem::ss_function_declaration > f_get() const;
03100 
03101         //! The method f_set sets the field pi_call::f to the given value.
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         //! First generated factory method for class pi_call.
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         //! for purposes of dumping
03122         virtual ptr<reflection_list> reflection_get() const;
03123         //! for purposes of dumping
03124         virtual ptr<field_list_list> field_values_get() const;
03125         
03126 protected:
03127         //! Generated constructor for class pi_call.
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         //! Marking routine for class pi_call. 
03139         virtual void gc_mark();
03140 
03141 private:
03142         //! Datatype of return value.
03143         srp< ::lestes::md::types::tm_data_type_base > type;
03144         //! Return value.
03145         srp< pi_mem > rv;
03146         //! Declaration of the function.
03147         srp< ::lestes::lang::cplus::sem::ss_function_declaration > f;
03148         static ptr<reflection_list> reflection;
03149         
03150 }; // pi_call
03151 
03152 
03153 //! Indirect function call
03154 class pi_icall : public pi_abstract_function_call {
03155 public:
03156         //! The method type_get returns the value of the field pi_icall::type.
03157         ptr< ::lestes::md::types::tm_data_type_base > type_get() const;
03158 
03159         //! The method type_set sets the field pi_icall::type to the given value.
03160         void type_set(const ptr< ::lestes::md::types::tm_data_type_base > &);
03161 
03162         //! The method rv_get returns the value of the field pi_icall::rv.
03163         ptr< pi_mem > rv_get() const;
03164 
03165         //! The method rv_set sets the field pi_icall::rv to the given value.
03166         void rv_set(const ptr< pi_mem > &);
03167 
03168         //! The method f_get returns the value of the field pi_icall::f.
03169         ptr< pi_preg > f_get() const;
03170 
03171         //! The method f_set sets the field pi_icall::f to the given value.
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         //! First generated factory method for class pi_icall.
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         //! for purposes of dumping
03192         virtual ptr<reflection_list> reflection_get() const;
03193         //! for purposes of dumping
03194         virtual ptr<field_list_list> field_values_get() const;
03195         
03196 protected:
03197         //! Generated constructor for class pi_icall.
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         //! Marking routine for class pi_icall. 
03209         virtual void gc_mark();
03210 
03211 private:
03212         //! Datatype of return value.
03213         srp< ::lestes::md::types::tm_data_type_base > type;
03214         //! Return value.
03215         srp< pi_mem > rv;
03216         //! Pseudoregister that holds address of function..
03217         srp< pi_preg > f;
03218         static ptr<reflection_list> reflection;
03219         
03220 }; // pi_icall
03221 
03222 
03223 //! Function call that returns void.
03224 class pi_callv : public pi_abstract_function_call {
03225 public:
03226         //! The method f_get returns the value of the field pi_callv::f.
03227         ptr< ::lestes::lang::cplus::sem::ss_function_declaration > f_get() const;
03228 
03229         //! The method f_set sets the field pi_callv::f to the given value.
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         //! First generated factory method for class pi_callv.
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         //! for purposes of dumping
03248         virtual ptr<reflection_list> reflection_get() const;
03249         //! for purposes of dumping
03250         virtual ptr<field_list_list> field_values_get() const;
03251         
03252 protected:
03253         //! Generated constructor for class pi_callv.
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         //! Marking routine for class pi_callv. 
03263         virtual void gc_mark();
03264 
03265 private:
03266         //! Declaration of the function.
03267         srp< ::lestes::lang::cplus::sem::ss_function_declaration > f;
03268         static ptr<reflection_list> reflection;
03269         
03270 }; // pi_callv
03271 
03272 
03273 //! Indirect function call that returns void.
03274 class pi_icallv : public pi_abstract_function_call {
03275 public:
03276         //! The method f_get returns the value of the field pi_icallv::f.
03277         ptr< pi_preg > f_get() const;
03278 
03279         //! The method f_set sets the field pi_icallv::f to the given value.
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         //! First generated factory method for class pi_icallv.
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         //! for purposes of dumping
03298         virtual ptr<reflection_list> reflection_get() const;
03299         //! for purposes of dumping
03300         virtual ptr<field_list_list> field_values_get() const;
03301         
03302 protected:
03303         //! Generated constructor for class pi_icallv.
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         //! Marking routine for class pi_icallv. 
03313         virtual void gc_mark();
03314 
03315 private:
03316         //! Pseudoregister that holds address of function..
03317         srp< pi_preg > f;
03318         static ptr<reflection_list> reflection;
03319         
03320 }; // pi_icallv
03321 
03322 
03323 //! Branch always (jump)
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         //! First generated factory method for class pi_ba.
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         //! for purposes of dumping
03340         virtual ptr<reflection_list> reflection_get() const;
03341         //! for purposes of dumping
03342         virtual ptr<field_list_list> field_values_get() const;
03343         
03344 protected:
03345         //! Generated constructor for class pi_ba.
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         //! Marking routine for class pi_ba. 
03353         virtual void gc_mark();
03354 
03355 private:
03356         static ptr<reflection_list> reflection;
03357         
03358 }; // pi_ba
03359 
03360 
03361 //! Branch never (nop)
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         //! First generated factory method for class pi_bn.
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         //! for purposes of dumping
03378         virtual ptr<reflection_list> reflection_get() const;
03379         //! for purposes of dumping
03380         virtual ptr<field_list_list> field_values_get() const;
03381         
03382 protected:
03383         //! Generated constructor for class pi_bn.
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         //! Marking routine for class pi_bn. 
03391         virtual void gc_mark();
03392 
03393 private:
03394         static ptr<reflection_list> reflection;
03395         
03396 }; // pi_bn
03397 
03398 
03399 /*! \brief Branch if boolean value is true
03400 
03401 if (boolean_value) { goto label}
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         //! First generated factory method for class pi_bt.
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         //! for purposes of dumping
03420         virtual ptr<reflection_list> reflection_get() const;
03421         //! for purposes of dumping
03422         virtual ptr<field_list_list> field_values_get() const;
03423         
03424 protected:
03425         //! Generated constructor for class pi_bt.
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         //! Marking routine for class pi_bt. 
03434         virtual void gc_mark();
03435 
03436 private:
03437         static ptr<reflection_list> reflection;
03438         
03439 }; // pi_bt
03440 
03441 
03442 /*! \brief Branch if boolean value is false
03443 
03444 if (!boolean_value) { goto label}
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         //! First generated factory method for class pi_bf.
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         //! for purposes of dumping
03463         virtual ptr<reflection_list> reflection_get() const;
03464         //! for purposes of dumping
03465         virtual ptr<field_list_list> field_values_get() const;
03466         
03467 protected:
03468         //! Generated constructor for class pi_bf.
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         //! Marking routine for class pi_bf. 
03477         virtual void gc_mark();
03478 
03479 private:
03480         static ptr<reflection_list> reflection;
03481         
03482 }; // pi_bf
03483 
03484 
03485 //! Branch multiple (switch jump)
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         //! First generated factory method for class pi_bm.
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         //! for purposes of dumping
03503         virtual ptr<reflection_list> reflection_get() const;
03504         //! for purposes of dumping
03505         virtual ptr<field_list_list> field_values_get() const;
03506         
03507 protected:
03508         //! Generated constructor for class pi_bm.
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         //! Marking routine for class pi_bm. 
03517         virtual void gc_mark();
03518 
03519 private:
03520         static ptr<reflection_list> reflection;
03521         
03522 }; // pi_bm
03523 
03524 
03525 //! Branch if greater
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         //! First generated factory method for class pi_bg.
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         //! for purposes of dumping
03543         virtual ptr<reflection_list> reflection_get() const;
03544         //! for purposes of dumping
03545         virtual ptr<field_list_list> field_values_get() const;
03546         
03547 protected:
03548         //! Generated constructor for class pi_bg.
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         //! Marking routine for class pi_bg. 
03557         virtual void gc_mark();
03558 
03559 private:
03560         static ptr<reflection_list> reflection;
03561         
03562 }; // pi_bg
03563 
03564 
03565 //! Branch if less
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         //! First generated factory method for class pi_bl.
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         //! for purposes of dumping
03583         virtual ptr<reflection_list> reflection_get() const;
03584         //! for purposes of dumping
03585         virtual ptr<field_list_list> field_values_get() const;
03586         
03587 protected:
03588         //! Generated constructor for class pi_bl.
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         //! Marking routine for class pi_bl. 
03597         virtual void gc_mark();
03598 
03599 private:
03600         static ptr<reflection_list> reflection;
03601         
03602 }; // pi_bl
03603 
03604 
03605 //! Branch if equal
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         //! First generated factory method for class pi_be.
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         //! for purposes of dumping
03623         virtual ptr<reflection_list> reflection_get() const;
03624         //! for purposes of dumping
03625         virtual ptr<field_list_list> field_values_get() const;
03626         
03627 protected:
03628         //! Generated constructor for class pi_be.
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         //! Marking routine for class pi_be. 
03637         virtual void gc_mark();
03638 
03639 private:
03640         static ptr<reflection_list> reflection;
03641         
03642 }; // pi_be
03643 
03644 
03645 //! Branch if not greater
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         //! First generated factory method for class pi_bng.
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         //! for purposes of dumping
03663         virtual ptr<reflection_list> reflection_get() const;
03664         //! for purposes of dumping
03665         virtual ptr<field_list_list> field_values_get() const;
03666         
03667 protected:
03668         //! Generated constructor for class pi_bng.
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         //! Marking routine for class pi_bng. 
03677         virtual void gc_mark();
03678 
03679 private:
03680         static ptr<reflection_list> reflection;
03681         
03682 }; // pi_bng
03683 
03684 
03685 //! Branch if not less
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         //! First generated factory method for class pi_bnl.
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         //! for purposes of dumping
03703         virtual ptr<reflection_list> reflection_get() const;
03704         //! for purposes of dumping
03705         virtual ptr<field_list_list> field_values_get() const;
03706         
03707 protected:
03708         //! Generated constructor for class pi_bnl.
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         //! Marking routine for class pi_bnl. 
03717         virtual void gc_mark();
03718 
03719 private:
03720         static ptr<reflection_list> reflection;
03721         
03722 }; // pi_bnl
03723 
03724 
03725 //! Branch if not equal
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         //! First generated factory method for class pi_bne.
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         //! for purposes of dumping
03743         virtual ptr<reflection_list> reflection_get() const;
03744         //! for purposes of dumping
03745         virtual ptr<field_list_list> field_values_get() const;
03746         
03747 protected:
03748         //! Generated constructor for class pi_bne.
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         //! Marking routine for class pi_bne. 
03757         virtual void gc_mark();
03758 
03759 private:
03760         static ptr<reflection_list> reflection;
03761         
03762 }; // pi_bne
03763 
03764 
03765 //! Indirect branch always (jump)
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         //! First generated factory method for class pi_iba.
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         //! for purposes of dumping
03782         virtual ptr<reflection_list> reflection_get() const;
03783         //! for purposes of dumping
03784         virtual ptr<field_list_list> field_values_get() const;
03785         
03786 protected:
03787         //! Generated constructor for class pi_iba.
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         //! Marking routine for class pi_iba. 
03795         virtual void gc_mark();
03796 
03797 private:
03798         static ptr<reflection_list> reflection;
03799         
03800 }; // pi_iba
03801 
03802 
03803 //! Indirect branch never (nop)
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         //! First generated factory method for class pi_ibn.
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         //! for purposes of dumping
03820         virtual ptr<reflection_list> reflection_get() const;
03821         //! for purposes of dumping
03822         virtual ptr<field_list_list> field_values_get() const;
03823         
03824 protected:
03825         //! Generated constructor for class pi_ibn.
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         //! Marking routine for class pi_ibn. 
03833         virtual void gc_mark();
03834 
03835 private:
03836         static ptr<reflection_list> reflection;
03837         
03838 }; // pi_ibn
03839 
03840 
03841 //! Indirect branch multiple (switch jump)
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         //! First generated factory method for class pi_ibm.
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         //! for purposes of dumping
03859         virtual ptr<reflection_list> reflection_get() const;
03860         //! for purposes of dumping
03861         virtual ptr<field_list_list> field_values_get() const;
03862         
03863 protected:
03864         //! Generated constructor for class pi_ibm.
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         //! Marking routine for class pi_ibm. 
03873         virtual void gc_mark();
03874 
03875 private:
03876         static ptr<reflection_list> reflection;
03877         
03878 }; // pi_ibm
03879 
03880 
03881 //! Indirect branch if greater
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         //! First generated factory method for class pi_ibg.
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         //! for purposes of dumping
03899         virtual ptr<reflection_list> reflection_get() const;
03900         //! for purposes of dumping
03901         virtual ptr<field_list_list> field_values_get() const;
03902         
03903 protected:
03904         //! Generated constructor for class pi_ibg.
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         //! Marking routine for class pi_ibg. 
03913         virtual void gc_mark();
03914 
03915 private:
03916         static ptr<reflection_list> reflection;
03917         
03918 }; // pi_ibg
03919 
03920 
03921 //! Indirect branch if less
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         //! First generated factory method for class pi_ibl.
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         //! for purposes of dumping
03939         virtual ptr<reflection_list> reflection_get() const;
03940         //! for purposes of dumping
03941         virtual ptr<field_list_list> field_values_get() const;
03942         
03943 protected:
03944         //! Generated constructor for class pi_ibl.
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         //! Marking routine for class pi_ibl. 
03953         virtual void gc_mark();
03954 
03955 private:
03956         static ptr<reflection_list> reflection;
03957         
03958 }; // pi_ibl
03959 
03960 
03961 //! Indirect branch if equal
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         //! First generated factory method for class pi_ibe.
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         //! for purposes of dumping
03979         virtual ptr<reflection_list> reflection_get() const;
03980         //! for purposes of dumping
03981         virtual ptr<field_list_list> field_values_get() const;
03982         
03983 protected:
03984         //! Generated constructor for class pi_ibe.
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         //! Marking routine for class pi_ibe. 
03993         virtual void gc_mark();
03994 
03995 private:
03996         static ptr<reflection_list> reflection;
03997         
03998 }; // pi_ibe
03999 
04000 
04001 //! Indirect branch if not greater
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         //! First generated factory method for class pi_ibng.
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         //! for purposes of dumping
04019         virtual ptr<reflection_list> reflection_get() const;
04020         //! for purposes of dumping
04021         virtual ptr<field_list_list> field_values_get() const;
04022         
04023 protected:
04024         //! Generated constructor for class pi_ibng.
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         //! Marking routine for class pi_ibng. 
04033         virtual void gc_mark();
04034 
04035 private:
04036         static ptr<reflection_list> reflection;
04037         
04038 }; // pi_ibng
04039 
04040 
04041 //! Indirect branch if not less
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         //! First generated factory method for class pi_ibnl.
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         //! for purposes of dumping
04059         virtual ptr<reflection_list> reflection_get() const;
04060         //! for purposes of dumping
04061         virtual ptr<field_list_list> field_values_get() const;
04062         
04063 protected:
04064         //! Generated constructor for class pi_ibnl.
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         //! Marking routine for class pi_ibnl. 
04073         virtual void gc_mark();
04074 
04075 private:
04076         static ptr<reflection_list> reflection;
04077         
04078 }; // pi_ibnl
04079 
04080 
04081 //! Indirect branch if not equal
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         //! First generated factory method for class pi_ibne.
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         //! for purposes of dumping
04099         virtual ptr<reflection_list> reflection_get() const;
04100         //! for purposes of dumping
04101         virtual ptr<field_list_list> field_values_get() const;
04102         
04103 protected:
04104         //! Generated constructor for class pi_ibne.
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         //! Marking routine for class pi_ibne. 
04113         virtual void gc_mark();
04114 
04115 private:
04116         static ptr<reflection_list> reflection;
04117         
04118 }; // pi_ibne
04119 
04120 
04121 //! Jump to function's epilogue.
04122 class pi_leave : public pi_pi {
04123 public:
04124         //! The method function_get returns the value of the field pi_leave::function.
04125         ptr< ::lestes::lang::cplus::sem::ss_function_declaration > function_get() const;
04126 
04127         //! The method function_set sets the field pi_leave::function to the given value.
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         //! First generated factory method for class pi_leave.
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         //! for purposes of dumping
04144         virtual ptr<reflection_list> reflection_get() const;
04145         //! for purposes of dumping
04146         virtual ptr<field_list_list> field_values_get() const;
04147         
04148 protected:
04149         //! Generated constructor for class pi_leave.
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         //! Marking routine for class pi_leave. 
04157         virtual void gc_mark();
04158 
04159 private:
04160         //! Function to leave.
04161         srp< ::lestes::lang::cplus::sem::ss_function_declaration > function;
04162         static ptr<reflection_list> reflection;
04163         
04164 }; // pi_leave
04165 
04166 
04167 /*! \brief Set if greater
04168 
04169 destination = ( left > right ? true : false)
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         //! First generated factory method for class pi_sbg.
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         //! for purposes of dumping
04191         virtual ptr<reflection_list> reflection_get() const;
04192         //! for purposes of dumping
04193         virtual ptr<field_list_list> field_values_get() const;
04194         
04195 protected:
04196         //! Generated constructor for class pi_sbg.
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         //! Marking routine for class pi_sbg. 
04208         virtual void gc_mark();
04209 
04210 private:
04211         static ptr<reflection_list> reflection;
04212         
04213 }; // pi_sbg
04214 
04215 
04216 /*! \brief Set if less
04217 
04218 destination = ( left < right ? true : false)
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         //! First generated factory method for class pi_sbl.
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         //! for purposes of dumping
04240         virtual ptr<reflection_list> reflection_get() const;
04241         //! for purposes of dumping
04242         virtual ptr<field_list_list> field_values_get() const;
04243         
04244 protected:
04245         //! Generated constructor for class pi_sbl.
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         //! Marking routine for class pi_sbl. 
04257         virtual void gc_mark();
04258 
04259 private:
04260         static ptr<reflection_list> reflection;
04261         
04262 }; // pi_sbl
04263 
04264 
04265 /*! \brief Set if equal
04266 
04267 destination = ( left == right ? true : false)
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         //! First generated factory method for class pi_sbe.
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         //! for purposes of dumping
04289         virtual ptr<reflection_list> reflection_get() const;
04290         //! for purposes of dumping
04291         virtual ptr<field_list_list> field_values_get() const;
04292         
04293 protected:
04294         //! Generated constructor for class pi_sbe.
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         //! Marking routine for class pi_sbe. 
04306         virtual void gc_mark();
04307 
04308 private:
04309         static ptr<reflection_list> reflection;
04310         
04311 }; // pi_sbe
04312 
04313 
04314 /*! \brief Set if not greater
04315 
04316 destination = ( left <= right ? true : false)
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         //! First generated factory method for class pi_sbng.
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         //! for purposes of dumping
04338         virtual ptr<reflection_list> reflection_get() const;
04339         //! for purposes of dumping
04340         virtual ptr<field_list_list> field_values_get() const;
04341         
04342 protected:
04343         //! Generated constructor for class pi_sbng.
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         //! Marking routine for class pi_sbng. 
04355         virtual void gc_mark();
04356 
04357 private:
04358         static ptr<reflection_list> reflection;
04359         
04360 }; // pi_sbng
04361 
04362 
04363 /*! \brief Set if not less
04364 
04365 destination = ( left >= right ? true : false)
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         //! First generated factory method for class pi_sbnl.
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         //! for purposes of dumping
04387         virtual ptr<reflection_list> reflection_get() const;
04388         //! for purposes of dumping
04389         virtual ptr<field_list_list> field_values_get() const;
04390         
04391 protected:
04392         //! Generated constructor for class pi_sbnl.
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         //! Marking routine for class pi_sbnl. 
04404         virtual void gc_mark();
04405 
04406 private:
04407         static ptr<reflection_list> reflection;
04408         
04409 }; // pi_sbnl
04410 
04411 
04412 /*! \brief Set if not equal
04413 
04414 destination = ( left != right ? true : false)
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         //! First generated factory method for class pi_sbne.
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         //! for purposes of dumping
04436         virtual ptr<reflection_list> reflection_get() const;
04437         //! for purposes of dumping
04438         virtual ptr<field_list_list> field_values_get() const;
04439         
04440 protected:
04441         //! Generated constructor for class pi_sbne.
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         //! Marking routine for class pi_sbne. 
04453         virtual void gc_mark();
04454 
04455 private:
04456         static ptr<reflection_list> reflection;
04457         
04458 }; // pi_sbne
04459 
04460 
04461 //! Base class for pseudoinstruction operand hierarchy.
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         //! The method origin_get returns the value of the field pi_operand::origin.
04477         ptr< pi_pi > origin_get() const;
04478 
04479         //! The method origin_set sets the field pi_operand::origin to the given value.
04480         void origin_set(const ptr< pi_pi > &);
04481 
04482         //! The method type_get returns the value of the field pi_operand::type.
04483         ptr< ::lestes::md::types::tm_data_type_base > type_get() const;
04484 
04485         //! The method type_set sets the field pi_operand::type to the given value.
04486         void type_set(const ptr< ::lestes::md::types::tm_data_type_base > &);
04487 
04488         //! Identifies kind of the operand.
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         //! for purposes of dumping
04495         virtual ptr<reflection_list> reflection_get() const;
04496         //! for purposes of dumping
04497         virtual ptr<field_list_list> field_values_get() const;
04498         
04499 protected:
04500         //! Generated constructor for class pi_operand.
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         //! Marking routine for class pi_operand. 
04506         virtual void gc_mark();
04507 
04508 private:
04509         /*! \brief Pseudoinstruction where the operand has been born.
04510 
04511         If origin has no sense (i.e. for literal) then it is set to NULL.
04512         */
04513         srp< pi_pi > origin;
04514         //! Datatype of the operand.
04515         srp< ::lestes::md::types::tm_data_type_base > type;
04516         static ptr<reflection_list> reflection;
04517         
04518 }; // pi_operand
04519 
04520 
04521 //! Base class for non memory operands.
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         //! for purposes of dumping
04530         virtual ptr<reflection_list> reflection_get() const;
04531         //! for purposes of dumping
04532         virtual ptr<field_list_list> field_values_get() const;
04533         
04534 protected:
04535         //! Generated constructor for class pi_non_mem.
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         //! Marking routine for class pi_non_mem. 
04541         virtual void gc_mark();
04542 
04543 private:
04544         static ptr<reflection_list> reflection;
04545         
04546 }; // pi_non_mem
04547 
04548 
04549 //! Pseudoregister.
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         //! First generated factory method for class pi_preg.
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         //! for purposes of dumping
04564         virtual ptr<reflection_list> reflection_get() const;
04565         //! for purposes of dumping
04566         virtual ptr<field_list_list> field_values_get() const;
04567         
04568 protected:
04569         //! Generated constructor for class pi_preg.
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         //! Marking routine for class pi_preg. 
04575         virtual void gc_mark();
04576 
04577 private:
04578         static ptr<reflection_list> reflection;
04579         
04580 }; // pi_preg
04581 
04582 
04583 //! Literal
04584 class pi_lit : public pi_non_mem {
04585 public:
04586         //! The method value_get returns the value of the field pi_lit::value.
04587         ptr< ::lestes::md::literals::literal_info_base > value_get() const;
04588 
04589         //! The method value_set sets the field pi_lit::value to the given value.
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         //! First generated factory method for class pi_lit.
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         //! for purposes of dumping
04605         virtual ptr<reflection_list> reflection_get() const;
04606         //! for purposes of dumping
04607         virtual ptr<field_list_list> field_values_get() const;
04608         
04609 protected:
04610         //! Generated constructor for class pi_lit.
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         //! Marking routine for class pi_lit. 
04617         virtual void gc_mark();
04618 
04619 private:
04620         //! Constant value of the literal.
04621         srp< ::lestes::md::literals::literal_info_base > value;
04622         static ptr<reflection_list> reflection;
04623         
04624 }; // pi_lit
04625 
04626 
04627 /*! \brief Base class for memory operands.
04628 
04629 Represents allocated memory chunk.
04630 */
04631 class pi_mem : public pi_operand {
04632 public:
04633         //! The method factory_get returns the value of the field pi_mem::factory.
04634         ptr< ::lestes::backend_v2::intercode::pi_mem_factory > factory_get() const;
04635 
04636         //! The method factory_set sets the field pi_mem::factory to the given value.
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         //! for purposes of dumping
04645         virtual ptr<reflection_list> reflection_get() const;
04646         //! for purposes of dumping
04647         virtual ptr<field_list_list> field_values_get() const;
04648         
04649 protected:
04650         //! Generated constructor for class pi_mem.
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         //! Marking routine for class pi_mem. 
04657         virtual void gc_mark();
04658 
04659 private:
04660         //! Memory space that is accessed through the memory operand.
04661         srp< ::lestes::backend_v2::intercode::pi_mem_factory > factory;
04662         static ptr<reflection_list> reflection;
04663         
04664 }; // pi_mem
04665 
04666 
04667 /*! \brief Global memory operand.
04668 
04669 Used for global variables.
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         //! First generated factory method for class pi_mem_decl.
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         //! for purposes of dumping
04686         virtual ptr<reflection_list> reflection_get() const;
04687         //! for purposes of dumping
04688         virtual ptr<field_list_list> field_values_get() const;
04689         
04690 protected:
04691         //! Generated constructor for class pi_mem_decl.
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         //! Marking routine for class pi_mem_decl. 
04698         virtual void gc_mark();
04699 
04700 private:
04701         static ptr<reflection_list> reflection;
04702         
04703 }; // pi_mem_decl
04704 
04705 
04706 /*! \brief Memory where literal is stored.
04707 
04708 Used for accessing literal that can't act as immediate.
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         //! First generated factory method for class pi_mem_lit.
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         //! for purposes of dumping
04725         virtual ptr<reflection_list> reflection_get() const;
04726         //! for purposes of dumping
04727         virtual ptr<field_list_list> field_values_get() const;
04728         
04729 protected:
04730         //! Generated constructor for class pi_mem_lit.
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         //! Marking routine for class pi_mem_lit. 
04737         virtual void gc_mark();
04738 
04739 private:
04740         static ptr<reflection_list> reflection;
04741         
04742 }; // pi_mem_lit
04743 
04744 
04745 /*! \brief Class for member access.
04746 
04747 Used for access to members of memory variables.
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         //! First generated factory method for class pi_mem_member.
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         //! for purposes of dumping
04764         virtual ptr<reflection_list> reflection_get() const;
04765         //! for purposes of dumping
04766         virtual ptr<field_list_list> field_values_get() const;
04767         
04768 protected:
04769         //! Generated constructor for class pi_mem_member.
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         //! Marking routine for class pi_mem_member. 
04776         virtual void gc_mark();
04777 
04778 private:
04779         static ptr<reflection_list> reflection;
04780         
04781 }; // pi_mem_member
04782 
04783 
04784 /*! \brief Stack memory operand.
04785 
04786 Used for local variables.
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         //! First generated factory method for class pi_mem_stack.
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         //! for purposes of dumping
04803         virtual ptr<reflection_list> reflection_get() const;
04804         //! for purposes of dumping
04805         virtual ptr<field_list_list> field_values_get() const;
04806         
04807 protected:
04808         //! Generated constructor for class pi_mem_stack.
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         //! Marking routine for class pi_mem_stack. 
04815         virtual void gc_mark();
04816 
04817 private:
04818         static ptr<reflection_list> reflection;
04819         
04820 }; // pi_mem_stack
04821 
04822 
04823 /*! \brief Wrapper class for pseudoregister to look like memory.
04824 
04825 Used for function parameters (only memory operands can be parameter) for values passed in pregs.
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         //! First generated factory method for class pi_mem_preg.
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         //! for purposes of dumping
04842         virtual ptr<reflection_list> reflection_get() const;
04843         //! for purposes of dumping
04844         virtual ptr<field_list_list> field_values_get() const;
04845         
04846 protected:
04847         //! Generated constructor for class pi_mem_preg.
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         //! Marking routine for class pi_mem_preg. 
04854         virtual void gc_mark();
04855 
04856 private:
04857         static ptr<reflection_list> reflection;
04858         
04859 }; // pi_mem_preg
04860 
04861 
04862 /*! \brief Temporary operand.
04863 
04864 Used in funcalls for passing parameters and return values.
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         //! First generated factory method for class pi_mem_temp.
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         //! for purposes of dumping
04881         virtual ptr<reflection_list> reflection_get() const;
04882         //! for purposes of dumping
04883         virtual ptr<field_list_list> field_values_get() const;
04884         
04885 protected:
04886         //! Generated constructor for class pi_mem_temp.
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         //! Marking routine for class pi_mem_temp. 
04893         virtual void gc_mark();
04894 
04895 private:
04896         static ptr<reflection_list> reflection;
04897         
04898 }; // pi_mem_temp
04899 
04900 
04901 /*! \brief Memory accessed through pointer.
04902 
04903 Used to access memory by pointer dereference.
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         //! First generated factory method for class pi_mem_ptr_deref.
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         //! for purposes of dumping
04920         virtual ptr<reflection_list> reflection_get() const;
04921         //! for purposes of dumping
04922         virtual ptr<field_list_list> field_values_get() const;
04923         
04924 protected:
04925         //! Generated constructor for class pi_mem_ptr_deref.
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         //! Marking routine for class pi_mem_ptr_deref. 
04932         virtual void gc_mark();
04933 
04934 private:
04935         static ptr<reflection_list> reflection;
04936         
04937 }; // pi_mem_ptr_deref
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

Generated on Mon Feb 12 18:27:04 2007 for lestes by doxygen 1.5.1-20070107