ge.g.hh

Go to the documentation of this file.
00001 // This file is automatically generated, do not edit.
00002 
00003 /*!
00004         \file
00005         \brief ge-level pseudoinstructions.
00006         \author jaz
00007 */
00008 
00009 #ifndef lestes__backend_v2__intercode__ge_g_hh__included
00010 #define lestes__backend_v2__intercode__ge_g_hh__included
00011 
00012 #include <lestes/backend_v2/common.hh>
00013 #include <lestes/std/map.hh>
00014 #include <lestes/backend_v2/intercode/pi_mem_factory.g.hh>
00015 #include <lestes/md/registers/tm_register_base.g.hh>
00016 #include <lestes/md/types/tm_data_type_base.g.hh>
00017 #include <lestes/md/instructions/tm_instr_base.g.hh>
00018 #include <lestes/md/literals/literal_info_base.g.hh>
00019 
00020 #include <lestes/std/objectize_macros.hh>
00021 package(lestes);
00022 package(std);
00023 class object;
00024 end_package(std);
00025 end_package(lestes);
00026 
00027 package(lestes);
00028 package(md);
00029 package(literals);
00030 class literal_info_base;
00031 end_package(literals);
00032 end_package(md);
00033 end_package(lestes);
00034 
00035 package(lestes);
00036 package(md);
00037 package(instructions);
00038 class tm_instr_base;
00039 end_package(instructions);
00040 end_package(md);
00041 end_package(lestes);
00042 
00043 package(lestes);
00044 package(md);
00045 package(types);
00046 class tm_data_type_base;
00047 end_package(types);
00048 end_package(md);
00049 end_package(lestes);
00050 
00051 package(lestes);
00052 package(md);
00053 package(registers);
00054 class tm_register_base;
00055 end_package(registers);
00056 end_package(md);
00057 end_package(lestes);
00058 
00059 package(lestes);
00060 package(backend_v2);
00061 package(intercode);
00062 class pi_mem_factory;
00063 end_package(intercode);
00064 end_package(backend_v2);
00065 end_package(lestes);
00066 
00067 package(lestes);
00068 package(backend_v2);
00069 package(intercode);
00070 class pi_pi;
00071 end_package(intercode);
00072 end_package(backend_v2);
00073 end_package(lestes);
00074 
00075 package(lestes);
00076 package(backend_v2);
00077 package(intercode);
00078 class pi_operand;
00079 end_package(intercode);
00080 end_package(backend_v2);
00081 end_package(lestes);
00082 
00083 package(lestes);
00084 package(backend_v2);
00085 package(workers);
00086 class basic_block;
00087 end_package(workers);
00088 end_package(backend_v2);
00089 end_package(lestes);
00090 
00091 package(lestes);
00092 package(lang);
00093 package(cplus);
00094 package(sem);
00095 class ss_function_declaration;
00096 end_package(sem);
00097 end_package(cplus);
00098 end_package(lang);
00099 end_package(lestes);
00100 
00101 package(lestes);
00102 package(backend_v2);
00103 package(intercode);
00104 
00105 
00106 class visitor_ge_pi2lstring_gen_base;
00107 class visitor_ge_operand2lstring_gen_base;
00108 class ge_pi;
00109 class visitor_ge_pi2lstring_gen_base;
00110 class ge_sp;
00111 class ge_call;
00112 class ge_operand;
00113 class visitor_ge_operand2lstring_gen_base;
00114 class ge_operand_reg;
00115 class ge_operand_mem;
00116 class ge_operand_imm;
00117 
00118 
00119 /*! \brief Ge-level intercode pseudoinstruction
00120 
00121 Ge-level intercode is intercode used by backend. Every ge_pi pseudoinstruction represents
00122 single target machine instruction.
00123                 
00124 */
00125 class ge_pi : public ::lestes::std::object {
00126 public:
00127         //! Pseudoinstruction kinds
00128         enum kind_type {
00129                 PI,
00130                 SP,
00131                 CALL
00132         };
00133 //! Property ids
00134         enum property_id_type {
00135                 PROPERTY_SPILLGEN_INFO
00136         };
00137 
00138         //! The method instruction_get returns the value of the field ge_pi::instruction.
00139         ptr< ::lestes::md::instructions::tm_instr_base > instruction_get() const;
00140 
00141         //! The method instruction_set sets the field ge_pi::instruction to the given value.
00142         void instruction_set(const ptr< ::lestes::md::instructions::tm_instr_base > &);
00143 
00144         //! The method pi_source_get returns the value of the field ge_pi::pi_source.
00145         ptr< ::lestes::backend_v2::intercode::pi_pi > pi_source_get() const;
00146 
00147         //! The method pi_source_set sets the field ge_pi::pi_source to the given value.
00148         void pi_source_set(const ptr< ::lestes::backend_v2::intercode::pi_pi > &);
00149 
00150         //! The method operands_input_get returns the value of the field ge_pi::operands_input.
00151         ptr< ::lestes::std::vector< srp< ge_operand > > > operands_input_get() const;
00152 
00153         //! The method operands_input_set sets the field ge_pi::operands_input to the given value.
00154         void operands_input_set(const ptr< ::lestes::std::vector< srp< ge_operand > > > & );
00155 
00156         //! The method operands_output_get returns the value of the field ge_pi::operands_output.
00157         ptr< ::lestes::std::vector< srp< ge_operand > > > operands_output_get() const;
00158 
00159         //! The method operands_output_set sets the field ge_pi::operands_output to the given value.
00160         void operands_output_set(const ptr< ::lestes::std::vector< srp< ge_operand > > > & );
00161 
00162         //! The method dependencies_get returns the value of the field ge_pi::dependencies.
00163         ptr< ::lestes::std::set< srp< ge_pi > > > dependencies_get() const;
00164 
00165         //! The method dependencies_set sets the field ge_pi::dependencies to the given value.
00166         void dependencies_set(const ptr< ::lestes::std::set< srp< ge_pi > > > & );
00167 
00168         //! The method jmp_targets_get returns the value of the field ge_pi::jmp_targets.
00169         ptr< ::lestes::std::vector< srp< ge_sp > > > jmp_targets_get() const;
00170 
00171         //! The method jmp_targets_set sets the field ge_pi::jmp_targets to the given value.
00172         void jmp_targets_set(const ptr< ::lestes::std::vector< srp< ge_sp > > > & );
00173 
00174         //! The method schedule_pos_get returns the value of the field ge_pi::schedule_pos.
00175         ulint schedule_pos_get() const;
00176 
00177         //! The method schedule_pos_set sets the field ge_pi::schedule_pos to the given value.
00178         void schedule_pos_set(ulint);
00179 
00180         //! The method bb_get returns the value of the field ge_pi::bb.
00181         ptr< ::lestes::backend_v2::workers::basic_block > bb_get() const;
00182 
00183         //! The method bb_set sets the field ge_pi::bb to the given value.
00184         void bb_set(const ptr< ::lestes::backend_v2::workers::basic_block > &);
00185 
00186         //! The method properties_get returns the value of the field ge_pi::properties.
00187         ptr< ::lestes::std::map< ulint, lstring > > properties_get() const;
00188 
00189         //! The method properties_set sets the field ge_pi::properties to the given value.
00190         void properties_set(const ptr< ::lestes::std::map< ulint, lstring > > & );
00191 
00192         virtual ge_pi::kind_type kind_get();
00193 
00194         bool validate();
00195 
00196         virtual lstring accept_visitor_ge_pi2lstring_gen_base( ptr< visitor_ge_pi2lstring_gen_base > v );
00197         
00198         //! First generated factory method for class ge_pi.
00199         static ptr< ge_pi > create (
00200                 ptr< ::lestes::md::instructions::tm_instr_base > a__ge_pi__instruction,
00201                 ptr< ::lestes::backend_v2::intercode::pi_pi > a__ge_pi__pi_source,
00202                 ptr< ::lestes::std::vector< srp< ge_operand > > > a__ge_pi__operands_input,
00203                 ptr< ::lestes::std::vector< srp< ge_operand > > > a__ge_pi__operands_output,
00204                 ptr< ::lestes::std::set< srp< ge_pi > > > a__ge_pi__dependencies,
00205                 ptr< ::lestes::std::vector< srp< ge_sp > > > a__ge_pi__jmp_targets,
00206                 ulint a__ge_pi__schedule_pos,
00207                 ptr< ::lestes::backend_v2::workers::basic_block > a__ge_pi__bb,
00208                 ptr< ::lestes::std::map< ulint, lstring > > a__ge_pi__properties);
00209 
00210         //! Second generated factory method for class ge_pi.
00211         static ptr< ge_pi > create (
00212                 ptr< ::lestes::md::instructions::tm_instr_base > a__ge_pi__instruction,
00213                 ptr< ::lestes::backend_v2::intercode::pi_pi > a__ge_pi__pi_source);
00214 
00215         
00216 
00217         //! for purposes of dumping
00218         virtual ptr<reflection_list> reflection_get() const;
00219         //! for purposes of dumping
00220         virtual ptr<field_list_list> field_values_get() const;
00221         
00222 protected:
00223         //! Generated constructor for class ge_pi.
00224         ge_pi (
00225                 ptr< ::lestes::md::instructions::tm_instr_base > a__ge_pi__instruction,
00226                 ptr< ::lestes::backend_v2::intercode::pi_pi > a__ge_pi__pi_source,
00227                 ptr< ::lestes::std::vector< srp< ge_operand > > > a__ge_pi__operands_input,
00228                 ptr< ::lestes::std::vector< srp< ge_operand > > > a__ge_pi__operands_output,
00229                 ptr< ::lestes::std::set< srp< ge_pi > > > a__ge_pi__dependencies,
00230                 ptr< ::lestes::std::vector< srp< ge_sp > > > a__ge_pi__jmp_targets,
00231                 ulint a__ge_pi__schedule_pos,
00232                 ptr< ::lestes::backend_v2::workers::basic_block > a__ge_pi__bb,
00233                 ptr< ::lestes::std::map< ulint, lstring > > a__ge_pi__properties);
00234 
00235         //! Marking routine for class ge_pi. 
00236         virtual void gc_mark();
00237 
00238 private:
00239         //! A description of a target machine instruction represented by this pseudoinstruction.
00240         srp< ::lestes::md::instructions::tm_instr_base > instruction;
00241         /*! \brief A pi-level pseudoinstruction that the ge_pi pseudoinstruction derives from.
00242 
00243         Note: A single pi-pseudoinstruction is usually source for multiple ge-pseudoinstructions.
00244         */
00245         srp< ::lestes::backend_v2::intercode::pi_pi > pi_source;
00246         //! Pseudoinstruction's input operands.
00247         srp< ::lestes::std::vector< srp< ge_operand > > >  operands_input;
00248         //! Pseudoinstruction's output operands.
00249         srp< ::lestes::std::vector< srp< ge_operand > > >  operands_output;
00250         /*! \brief A set of pseudoinstructions that this one depends on.
00251 
00252         This is the crucial information for pseudoinstruction ordering. Each pseudoinstruction from the set must be executed
00253 before this pseudoinstruction.
00254         */
00255         srp< ::lestes::std::set< srp< ge_pi > > >  dependencies;
00256         //! If the pseudoinstruction represents jump instruction then this is the list of its jump targets.
00257         srp< ::lestes::std::vector< srp< ge_sp > > >  jmp_targets;
00258         //! A position in a function body schedule.
00259         ulint schedule_pos;
00260         //! A basic block that contains this pseudoinstruction.
00261         srp< ::lestes::backend_v2::workers::basic_block > bb;
00262         /*! \brief Custom properties
00263 
00264         It allows the pseudoinstruction holding a additional custom properties ( i.e. informatin for debugging )/
00265         */
00266         srp< ::lestes::std::map< ulint, lstring > >  properties;
00267         static ptr<reflection_list> reflection;
00268         
00269 }; // ge_pi
00270 
00271 
00272 /*! \brief Ge-level sequencepoint.
00273 
00274 It represents supplemental pseudoinstruction that has no output to a output asm code. It is used e.g. to mark basic block boundary and jump targets.
00275 */
00276 class ge_sp : public ge_pi {
00277 public:
00278         //! The method is_jmp_target_get returns the value of the field ge_sp::is_jmp_target.
00279         bool is_jmp_target_get() const;
00280 
00281         //! The method is_jmp_target_set sets the field ge_sp::is_jmp_target to the given value.
00282         void is_jmp_target_set(bool);
00283 
00284         virtual ge_pi::kind_type kind_get();
00285 
00286         virtual lstring accept_visitor_ge_pi2lstring_gen_base( ptr< visitor_ge_pi2lstring_gen_base > v );
00287         
00288         //! First generated factory method for class ge_sp.
00289         static ptr< ge_sp > create (
00290                 ptr< ::lestes::md::instructions::tm_instr_base > a__ge_pi__instruction,
00291                 ptr< ::lestes::backend_v2::intercode::pi_pi > a__ge_pi__pi_source,
00292                 ptr< ::lestes::std::vector< srp< ge_operand > > > a__ge_pi__operands_input,
00293                 ptr< ::lestes::std::vector< srp< ge_operand > > > a__ge_pi__operands_output,
00294                 ptr< ::lestes::std::set< srp< ge_pi > > > a__ge_pi__dependencies,
00295                 ptr< ::lestes::std::vector< srp< ge_sp > > > a__ge_pi__jmp_targets,
00296                 ulint a__ge_pi__schedule_pos,
00297                 ptr< ::lestes::backend_v2::workers::basic_block > a__ge_pi__bb,
00298                 ptr< ::lestes::std::map< ulint, lstring > > a__ge_pi__properties,
00299                 bool a__ge_sp__is_jmp_target);
00300 
00301         //! Second generated factory method for class ge_sp.
00302         static ptr< ge_sp > create (
00303                 ptr< ::lestes::md::instructions::tm_instr_base > a__ge_pi__instruction,
00304                 ptr< ::lestes::backend_v2::intercode::pi_pi > a__ge_pi__pi_source);
00305 
00306         
00307 
00308         //! for purposes of dumping
00309         virtual ptr<reflection_list> reflection_get() const;
00310         //! for purposes of dumping
00311         virtual ptr<field_list_list> field_values_get() const;
00312         
00313 protected:
00314         //! Generated constructor for class ge_sp.
00315         ge_sp (
00316                 ptr< ::lestes::md::instructions::tm_instr_base > a__ge_pi__instruction,
00317                 ptr< ::lestes::backend_v2::intercode::pi_pi > a__ge_pi__pi_source,
00318                 ptr< ::lestes::std::vector< srp< ge_operand > > > a__ge_pi__operands_input,
00319                 ptr< ::lestes::std::vector< srp< ge_operand > > > a__ge_pi__operands_output,
00320                 ptr< ::lestes::std::set< srp< ge_pi > > > a__ge_pi__dependencies,
00321                 ptr< ::lestes::std::vector< srp< ge_sp > > > a__ge_pi__jmp_targets,
00322                 ulint a__ge_pi__schedule_pos,
00323                 ptr< ::lestes::backend_v2::workers::basic_block > a__ge_pi__bb,
00324                 ptr< ::lestes::std::map< ulint, lstring > > a__ge_pi__properties,
00325                 bool a__ge_sp__is_jmp_target);
00326 
00327         //! Marking routine for class ge_sp. 
00328         virtual void gc_mark();
00329 
00330 private:
00331         //! Tells whether the sequencepoint is a jump target.
00332         bool is_jmp_target;
00333         static ptr<reflection_list> reflection;
00334         
00335 }; // ge_sp
00336 
00337 
00338 //! Ge-level function call.
00339 class ge_call : public ge_pi {
00340 public:
00341         //! The method function_decl_get returns the value of the field ge_call::function_decl.
00342         ptr< ::lestes::lang::cplus::sem::ss_function_declaration > function_decl_get() const;
00343 
00344         //! The method function_decl_set sets the field ge_call::function_decl to the given value.
00345         void function_decl_set(const ptr< ::lestes::lang::cplus::sem::ss_function_declaration > &);
00346 
00347         virtual ge_pi::kind_type kind_get();
00348 
00349         virtual lstring accept_visitor_ge_pi2lstring_gen_base( ptr< visitor_ge_pi2lstring_gen_base > v );
00350         
00351         //! First generated factory method for class ge_call.
00352         static ptr< ge_call > create (
00353                 ptr< ::lestes::md::instructions::tm_instr_base > a__ge_pi__instruction,
00354                 ptr< ::lestes::backend_v2::intercode::pi_pi > a__ge_pi__pi_source,
00355                 ptr< ::lestes::std::vector< srp< ge_operand > > > a__ge_pi__operands_input,
00356                 ptr< ::lestes::std::vector< srp< ge_operand > > > a__ge_pi__operands_output,
00357                 ptr< ::lestes::std::set< srp< ge_pi > > > a__ge_pi__dependencies,
00358                 ptr< ::lestes::std::vector< srp< ge_sp > > > a__ge_pi__jmp_targets,
00359                 ulint a__ge_pi__schedule_pos,
00360                 ptr< ::lestes::backend_v2::workers::basic_block > a__ge_pi__bb,
00361                 ptr< ::lestes::std::map< ulint, lstring > > a__ge_pi__properties,
00362                 ptr< ::lestes::lang::cplus::sem::ss_function_declaration > a__ge_call__function_decl);
00363 
00364         //! Second generated factory method for class ge_call.
00365         static ptr< ge_call > create (
00366                 ptr< ::lestes::md::instructions::tm_instr_base > a__ge_pi__instruction,
00367                 ptr< ::lestes::backend_v2::intercode::pi_pi > a__ge_pi__pi_source,
00368                 ptr< ::lestes::lang::cplus::sem::ss_function_declaration > a__ge_call__function_decl);
00369 
00370         
00371 
00372         //! for purposes of dumping
00373         virtual ptr<reflection_list> reflection_get() const;
00374         //! for purposes of dumping
00375         virtual ptr<field_list_list> field_values_get() const;
00376         
00377 protected:
00378         //! Generated constructor for class ge_call.
00379         ge_call (
00380                 ptr< ::lestes::md::instructions::tm_instr_base > a__ge_pi__instruction,
00381                 ptr< ::lestes::backend_v2::intercode::pi_pi > a__ge_pi__pi_source,
00382                 ptr< ::lestes::std::vector< srp< ge_operand > > > a__ge_pi__operands_input,
00383                 ptr< ::lestes::std::vector< srp< ge_operand > > > a__ge_pi__operands_output,
00384                 ptr< ::lestes::std::set< srp< ge_pi > > > a__ge_pi__dependencies,
00385                 ptr< ::lestes::std::vector< srp< ge_sp > > > a__ge_pi__jmp_targets,
00386                 ulint a__ge_pi__schedule_pos,
00387                 ptr< ::lestes::backend_v2::workers::basic_block > a__ge_pi__bb,
00388                 ptr< ::lestes::std::map< ulint, lstring > > a__ge_pi__properties,
00389                 ptr< ::lestes::lang::cplus::sem::ss_function_declaration > a__ge_call__function_decl);
00390 
00391         //! Marking routine for class ge_call. 
00392         virtual void gc_mark();
00393 
00394 private:
00395         //! A Ss-intercode represenation of function's declaration.
00396         srp< ::lestes::lang::cplus::sem::ss_function_declaration > function_decl;
00397         static ptr<reflection_list> reflection;
00398         
00399 }; // ge_call
00400 
00401 
00402 //! Base class for an operand of a ge-level pseudoinstruction.
00403 class ge_operand : public ::lestes::std::object {
00404 public:
00405         //! Operand kinds
00406         enum kind_type {
00407                 REGISTER,
00408                 MEMORY,
00409                 IMMEDIATE
00410         };
00411 
00412         //! The method type_get returns the value of the field ge_operand::type.
00413         ptr< ::lestes::md::types::tm_data_type_base > type_get() const;
00414 
00415         //! The method type_set sets the field ge_operand::type to the given value.
00416         void type_set(const ptr< ::lestes::md::types::tm_data_type_base > &);
00417 
00418         //! The method origin_get returns the value of the field ge_operand::origin.
00419         ptr< ge_pi > origin_get() const;
00420 
00421         //! The method origin_set sets the field ge_operand::origin to the given value.
00422         void origin_set(const ptr< ge_pi > &);
00423 
00424         //! The method pi_source_get returns the value of the field ge_operand::pi_source.
00425         ptr< ::lestes::backend_v2::intercode::pi_operand > pi_source_get() const;
00426 
00427         //! The method pi_source_set sets the field ge_operand::pi_source to the given value.
00428         void pi_source_set(const ptr< ::lestes::backend_v2::intercode::pi_operand > &);
00429 
00430         //! Returns kind of operand.
00431         virtual ge_operand::kind_type kind_get() abstract;
00432 
00433         virtual lstring accept_visitor_ge_operand2lstring_gen_base( ptr< visitor_ge_operand2lstring_gen_base > v ) abstract;
00434         
00435 
00436         //! for purposes of dumping
00437         virtual ptr<reflection_list> reflection_get() const;
00438         //! for purposes of dumping
00439         virtual ptr<field_list_list> field_values_get() const;
00440         
00441 protected:
00442         //! Generated constructor for class ge_operand.
00443         ge_operand (
00444                 ptr< ::lestes::md::types::tm_data_type_base > a__ge_operand__type,
00445                 ptr< ge_pi > a__ge_operand__origin,
00446                 ptr< ::lestes::backend_v2::intercode::pi_operand > a__ge_operand__pi_source);
00447 
00448         //! Marking routine for class ge_operand. 
00449         virtual void gc_mark();
00450 
00451 private:
00452         //! A data type of a value that the operand holds.
00453         srp< ::lestes::md::types::tm_data_type_base > type;
00454         //! An pseudoinstruction that crates value of the operand.
00455         srp< ge_pi > origin;
00456         //! A pi-level operand that is source for the operand.
00457         srp< ::lestes::backend_v2::intercode::pi_operand > pi_source;
00458         static ptr<reflection_list> reflection;
00459         
00460 }; // ge_operand
00461 
00462 
00463 //! A register operand.
00464 class ge_operand_reg : public ge_operand {
00465 public:
00466         //! The method assigned_registers_get returns the value of the field ge_operand_reg::assigned_registers.
00467         ptr< ::lestes::std::map< srp< ge_pi >, ulint > > assigned_registers_get() const;
00468 
00469         //! The method assigned_registers_set sets the field ge_operand_reg::assigned_registers to the given value.
00470         void assigned_registers_set(const ptr< ::lestes::std::map< srp< ge_pi >, ulint > > & );
00471 
00472         //! Returns kind of operand.
00473         virtual ge_operand::kind_type kind_get();
00474 
00475         virtual lstring accept_visitor_ge_operand2lstring_gen_base( ptr< visitor_ge_operand2lstring_gen_base > v );
00476         
00477         //! First generated factory method for class ge_operand_reg.
00478         static ptr< ge_operand_reg > create (
00479                 ptr< ::lestes::md::types::tm_data_type_base > a__ge_operand__type,
00480                 ptr< ge_pi > a__ge_operand__origin,
00481                 ptr< ::lestes::backend_v2::intercode::pi_operand > a__ge_operand__pi_source,
00482                 ptr< ::lestes::std::map< srp< ge_pi >, ulint > > a__ge_operand_reg__assigned_registers);
00483 
00484         //! Second generated factory method for class ge_operand_reg.
00485         static ptr< ge_operand_reg > create (
00486                 ptr< ::lestes::md::types::tm_data_type_base > a__ge_operand__type,
00487                 ptr< ge_pi > a__ge_operand__origin,
00488                 ptr< ::lestes::backend_v2::intercode::pi_operand > a__ge_operand__pi_source);
00489 
00490         
00491 
00492         //! for purposes of dumping
00493         virtual ptr<reflection_list> reflection_get() const;
00494         //! for purposes of dumping
00495         virtual ptr<field_list_list> field_values_get() const;
00496         
00497 protected:
00498         //! Generated constructor for class ge_operand_reg.
00499         ge_operand_reg (
00500                 ptr< ::lestes::md::types::tm_data_type_base > a__ge_operand__type,
00501                 ptr< ge_pi > a__ge_operand__origin,
00502                 ptr< ::lestes::backend_v2::intercode::pi_operand > a__ge_operand__pi_source,
00503                 ptr< ::lestes::std::map< srp< ge_pi >, ulint > > a__ge_operand_reg__assigned_registers);
00504 
00505         //! Marking routine for class ge_operand_reg. 
00506         virtual void gc_mark();
00507 
00508 private:
00509         //! Registers assigned to the operand within each pseudoinstruction that use it.
00510         srp< ::lestes::std::map< srp< ge_pi >, ulint > >  assigned_registers;
00511         static ptr<reflection_list> reflection;
00512         
00513 }; // ge_operand_reg
00514 
00515 
00516 //! A memory operand.
00517 class ge_operand_mem : public ge_operand {
00518 public:
00519         //! The method factory_get returns the value of the field ge_operand_mem::factory.
00520         ptr< ::lestes::backend_v2::intercode::pi_mem_factory > factory_get() const;
00521 
00522         //! The method factory_set sets the field ge_operand_mem::factory to the given value.
00523         void factory_set(const ptr< ::lestes::backend_v2::intercode::pi_mem_factory > &);
00524 
00525         //! Returns kind of operand.
00526         virtual ge_operand::kind_type kind_get();
00527 
00528         virtual lstring accept_visitor_ge_operand2lstring_gen_base( ptr< visitor_ge_operand2lstring_gen_base > v );
00529         
00530         //! First generated factory method for class ge_operand_mem.
00531         static ptr< ge_operand_mem > create (
00532                 ptr< ::lestes::md::types::tm_data_type_base > a__ge_operand__type,
00533                 ptr< ge_pi > a__ge_operand__origin,
00534                 ptr< ::lestes::backend_v2::intercode::pi_operand > a__ge_operand__pi_source,
00535                 ptr< ::lestes::backend_v2::intercode::pi_mem_factory > a__ge_operand_mem__factory);
00536 
00537         
00538 
00539         //! for purposes of dumping
00540         virtual ptr<reflection_list> reflection_get() const;
00541         //! for purposes of dumping
00542         virtual ptr<field_list_list> field_values_get() const;
00543         
00544 protected:
00545         //! Generated constructor for class ge_operand_mem.
00546         ge_operand_mem (
00547                 ptr< ::lestes::md::types::tm_data_type_base > a__ge_operand__type,
00548                 ptr< ge_pi > a__ge_operand__origin,
00549                 ptr< ::lestes::backend_v2::intercode::pi_operand > a__ge_operand__pi_source,
00550                 ptr< ::lestes::backend_v2::intercode::pi_mem_factory > a__ge_operand_mem__factory);
00551 
00552         //! Marking routine for class ge_operand_mem. 
00553         virtual void gc_mark();
00554 
00555 private:
00556         //! A place in memory that the operand accesses.
00557         srp< ::lestes::backend_v2::intercode::pi_mem_factory > factory;
00558         static ptr<reflection_list> reflection;
00559         
00560 }; // ge_operand_mem
00561 
00562 
00563 //! An immediate operand.
00564 class ge_operand_imm : public ge_operand {
00565 public:
00566         //! The method value_get returns the value of the field ge_operand_imm::value.
00567         ptr< ::lestes::md::literals::literal_info_base > value_get() const;
00568 
00569         //! The method value_set sets the field ge_operand_imm::value to the given value.
00570         void value_set(const ptr< ::lestes::md::literals::literal_info_base > &);
00571 
00572         //! Returns kind of operand.
00573         virtual ge_operand::kind_type kind_get();
00574 
00575         virtual lstring accept_visitor_ge_operand2lstring_gen_base( ptr< visitor_ge_operand2lstring_gen_base > v );
00576         
00577         //! First generated factory method for class ge_operand_imm.
00578         static ptr< ge_operand_imm > create (
00579                 ptr< ::lestes::md::types::tm_data_type_base > a__ge_operand__type,
00580                 ptr< ge_pi > a__ge_operand__origin,
00581                 ptr< ::lestes::backend_v2::intercode::pi_operand > a__ge_operand__pi_source,
00582                 ptr< ::lestes::md::literals::literal_info_base > a__ge_operand_imm__value);
00583 
00584         
00585 
00586         //! for purposes of dumping
00587         virtual ptr<reflection_list> reflection_get() const;
00588         //! for purposes of dumping
00589         virtual ptr<field_list_list> field_values_get() const;
00590         
00591 protected:
00592         //! Generated constructor for class ge_operand_imm.
00593         ge_operand_imm (
00594                 ptr< ::lestes::md::types::tm_data_type_base > a__ge_operand__type,
00595                 ptr< ge_pi > a__ge_operand__origin,
00596                 ptr< ::lestes::backend_v2::intercode::pi_operand > a__ge_operand__pi_source,
00597                 ptr< ::lestes::md::literals::literal_info_base > a__ge_operand_imm__value);
00598 
00599         //! Marking routine for class ge_operand_imm. 
00600         virtual void gc_mark();
00601 
00602 private:
00603         //! A constant value of the literal.
00604         srp< ::lestes::md::literals::literal_info_base > value;
00605         static ptr<reflection_list> reflection;
00606         
00607 }; // ge_operand_imm
00608 
00609 
00610 end_package(intercode);
00611 end_package(backend_v2);
00612 end_package(lestes);
00613 
00614 package(lestes);
00615 package(std);
00616 specialize_objectize_for_enum( ::lestes::backend_v2::intercode::ge_pi::kind_type );
00617 specialize_objectize_for_enum( ::lestes::backend_v2::intercode::ge_pi::property_id_type );
00618 specialize_objectize_for_enum( ::lestes::backend_v2::intercode::ge_operand::kind_type );
00619 end_package(std);
00620 end_package(lestes);
00621 
00622 #endif // lestes__backend_v2__intercode__ge_g_hh__included

Generated on Mon Feb 12 18:22:35 2007 for lestes by doxygen 1.5.1-20070107