ss_ss2pi_base.g.cc

Go to the documentation of this file.
00001 // This file is automatically generated, do not edit.
00002 
00003 #include <lestes/lang/cplus/sem/ss_declaration.g.hh>
00004 #include <lestes/lang/cplus/sem/ss_type.g.hh>
00005 #include <lestes/lang/cplus/sem/ss_misc.g.hh>
00006 #include <lestes/lang/cplus/sem/ss_literal_info.g.hh>
00007 #include <lestes/backend_v2/intercode/pi.g.hh>
00008 #include <lestes/backend_v2/intercode/pi_mem_factory.g.hh>
00009 #include <lestes/md/literals/literal_info_base.g.hh>
00010 
00011 #include <lestes/std/list.hh>
00012 #include <lestes/std/pair.hh>
00013 #include <lestes/std/reflect.hh>
00014 
00015 #include <lestes/lang/cplus/sem/ss_ss2pi_base.g.hh>
00016 
00017 package(lestes);
00018 package(lang);
00019 package(cplus);
00020 package(sem);
00021 
00022 
00023 // ------------- Class ss_stmt2pi follows. -------------
00024 
00025 /*!
00026    \returns The value of ss_stmt2pi::current_function.
00027    \author lsg
00028  */
00029 ptr< ss_function_declaration > ss_stmt2pi::current_function_get() const
00030 {
00031         return current_function;
00032 }
00033 
00034 /*!
00035    \param[in] x The new value to set ss_stmt2pi::current_function to.
00036    \author lsg
00037  */
00038 void ss_stmt2pi::current_function_set(const ptr< ss_function_declaration > & x)
00039 {
00040         ss_stmt2pi::current_function = x;
00041 }
00042 
00043 /*!
00044    \returns The value of ss_stmt2pi::local_variable_map.
00045    \author lsg
00046  */
00047 ptr< variable_map_type > ss_stmt2pi::local_variable_map_get() const
00048 {
00049         return local_variable_map;
00050 }
00051 
00052 /*!
00053    \param[in] x The new value to set ss_stmt2pi::local_variable_map to.
00054    \author lsg
00055  */
00056 void ss_stmt2pi::local_variable_map_set(const ptr< variable_map_type > & x)
00057 {
00058         ss_stmt2pi::local_variable_map = x;
00059 }
00060 
00061 /*!
00062    \returns The value of ss_stmt2pi::namespace_variable_map.
00063    \author lsg
00064  */
00065 ptr< variable_map_type > ss_stmt2pi::namespace_variable_map_get() const
00066 {
00067         return namespace_variable_map;
00068 }
00069 
00070 /*!
00071    \param[in] x The new value to set ss_stmt2pi::namespace_variable_map to.
00072    \author lsg
00073  */
00074 void ss_stmt2pi::namespace_variable_map_set(const ptr< variable_map_type > & x)
00075 {
00076         ss_stmt2pi::namespace_variable_map = x;
00077 }
00078 
00079 /*!
00080    This factory method for class ss_stmt2pi takes values of all fields as arguments.
00081    \author lsg
00082  */
00083 ptr< ss_stmt2pi > ss_stmt2pi::create(ptr< ss_function_declaration > a__ss_stmt2pi__current_function,
00084                 ptr< variable_map_type > a__ss_stmt2pi__local_variable_map,
00085                 ptr< variable_map_type > a__ss_stmt2pi__namespace_variable_map)
00086 {
00087         return ptr< ss_stmt2pi > ( new ss_stmt2pi(a__ss_stmt2pi__current_function,
00088                 a__ss_stmt2pi__local_variable_map,
00089                 a__ss_stmt2pi__namespace_variable_map) );
00090 }
00091 
00092 /*!
00093    Generated constructor for class ss_stmt2pi.
00094    \author lsg
00095  */
00096 ss_stmt2pi::ss_stmt2pi (ptr< ss_function_declaration > a__ss_stmt2pi__current_function,
00097                 ptr< variable_map_type > a__ss_stmt2pi__local_variable_map,
00098                 ptr< variable_map_type > a__ss_stmt2pi__namespace_variable_map)
00099         : ss_statement_visitor(), current_function(a__ss_stmt2pi__current_function), local_variable_map(a__ss_stmt2pi__local_variable_map), namespace_variable_map(checked(a__ss_stmt2pi__namespace_variable_map))
00100 {}
00101 
00102 ptr< object::reflection_list > ss_stmt2pi::reflection_get() const
00103 {
00104         if (!reflection) {
00105                 typedef class_reflection::field_metadata md;
00106                 typedef class_reflection::field_metadata_list mdlist;
00107                 ptr<mdlist> mdl = mdlist::create();
00108                 mdl->push_back( md::create( "current_function", "ss_function_declaration" ) );
00109                 mdl->push_back( md::create( "local_variable_map", "variable_map_type" ) );
00110                 mdl->push_back( md::create( "namespace_variable_map", "variable_map_type" ) );
00111                 reflection = reflection_list::create( ss_statement_visitor::reflection_get() );
00112                 reflection->push_back( class_reflection::create( "ss_stmt2pi", mdl ) );
00113         }
00114         return reflection;
00115 }
00116 
00117 ptr< object::field_list_list > ss_stmt2pi::field_values_get() const
00118 {
00119         ptr < field_list_list > result = ss_statement_visitor::field_values_get();
00120         result->push_back( value_list::create() );
00121         result->back()->push_back( this->current_function );
00122         result->push_back( value_list::create() );
00123         result->back()->push_back( this->local_variable_map );
00124         result->push_back( value_list::create() );
00125         result->back()->push_back( this->namespace_variable_map );
00126         return result;
00127 }
00128 
00129 
00130 /*!
00131    Marking routine is used for garbage collection.
00132    \author lsg
00133  */
00134 void ss_stmt2pi::gc_mark()
00135 {
00136         ss_statement_visitor::gc_mark();
00137 }
00138 
00139 // End of class ss_stmt2pi.
00140 
00141 // ------------- Class ss_decl2pi follows. -------------
00142 
00143 /*!
00144    \returns The value of ss_decl2pi::caller.
00145    \author lsg
00146  */
00147 ptr< ss_stmt2pi > ss_decl2pi::caller_get() const
00148 {
00149         return caller;
00150 }
00151 
00152 /*!
00153    \param[in] x The new value to set ss_decl2pi::caller to.
00154    \author lsg
00155  */
00156 void ss_decl2pi::caller_set(const ptr< ss_stmt2pi > & x)
00157 {
00158         ss_decl2pi::caller = x;
00159 }
00160 
00161 /*!
00162    \returns The value of ss_decl2pi::statement.
00163    \author lsg
00164  */
00165 ptr< ss_decl_stmt > ss_decl2pi::statement_get() const
00166 {
00167         return statement;
00168 }
00169 
00170 /*!
00171    \param[in] x The new value to set ss_decl2pi::statement to.
00172    \author lsg
00173  */
00174 void ss_decl2pi::statement_set(const ptr< ss_decl_stmt > & x)
00175 {
00176         ss_decl2pi::statement = x;
00177 }
00178 
00179 /*!
00180    This factory method for class ss_decl2pi takes values of all fields as arguments.
00181    \author lsg
00182  */
00183 ptr< ss_decl2pi > ss_decl2pi::create(ptr< ss_stmt2pi > a__ss_decl2pi__caller,
00184                 ptr< ss_decl_stmt > a__ss_decl2pi__statement)
00185 {
00186         return ptr< ss_decl2pi > ( new ss_decl2pi(a__ss_decl2pi__caller,
00187                 a__ss_decl2pi__statement) );
00188 }
00189 
00190 /*!
00191    Generated constructor for class ss_decl2pi.
00192    \author lsg
00193  */
00194 ss_decl2pi::ss_decl2pi (ptr< ss_stmt2pi > a__ss_decl2pi__caller,
00195                 ptr< ss_decl_stmt > a__ss_decl2pi__statement)
00196         : ss_decl2pi_default(), caller(checked(a__ss_decl2pi__caller)), statement(checked(a__ss_decl2pi__statement))
00197 {}
00198 
00199 ptr< object::reflection_list > ss_decl2pi::reflection_get() const
00200 {
00201         if (!reflection) {
00202                 typedef class_reflection::field_metadata md;
00203                 typedef class_reflection::field_metadata_list mdlist;
00204                 ptr<mdlist> mdl = mdlist::create();
00205                 mdl->push_back( md::create( "caller", "ss_stmt2pi" ) );
00206                 mdl->push_back( md::create( "statement", "ss_decl_stmt" ) );
00207                 reflection = reflection_list::create( ss_decl2pi_default::reflection_get() );
00208                 reflection->push_back( class_reflection::create( "ss_decl2pi", mdl ) );
00209         }
00210         return reflection;
00211 }
00212 
00213 ptr< object::field_list_list > ss_decl2pi::field_values_get() const
00214 {
00215         ptr < field_list_list > result = ss_decl2pi_default::field_values_get();
00216         result->push_back( value_list::create() );
00217         result->back()->push_back( this->caller );
00218         result->push_back( value_list::create() );
00219         result->back()->push_back( this->statement );
00220         return result;
00221 }
00222 
00223 
00224 /*!
00225    Marking routine is used for garbage collection.
00226    \author lsg
00227  */
00228 void ss_decl2pi::gc_mark()
00229 {
00230         ss_decl2pi_default::gc_mark();
00231 }
00232 
00233 // End of class ss_decl2pi.
00234 
00235 // ------------- Class ss_decl2mem follows. -------------
00236 
00237 /*!
00238    \returns The value of ss_decl2mem::caller.
00239    \author lsg
00240  */
00241 ptr< ss_stmt2pi > ss_decl2mem::caller_get() const
00242 {
00243         return caller;
00244 }
00245 
00246 /*!
00247    \param[in] x The new value to set ss_decl2mem::caller to.
00248    \author lsg
00249  */
00250 void ss_decl2mem::caller_set(const ptr< ss_stmt2pi > & x)
00251 {
00252         ss_decl2mem::caller = x;
00253 }
00254 
00255 /*!
00256    \returns The value of ss_decl2mem::result.
00257    \author lsg
00258  */
00259 ptr< ::lestes::backend_v2::intercode::pi_mem_factory > ss_decl2mem::result_get() const
00260 {
00261         return result;
00262 }
00263 
00264 /*!
00265    \param[in] x The new value to set ss_decl2mem::result to.
00266    \author lsg
00267  */
00268 void ss_decl2mem::result_set(const ptr< ::lestes::backend_v2::intercode::pi_mem_factory > & x)
00269 {
00270         ss_decl2mem::result = x;
00271 }
00272 
00273 /*!
00274    This factory method for class ss_decl2mem takes values of all fields as arguments.
00275    \author lsg
00276  */
00277 ptr< ss_decl2mem > ss_decl2mem::create(ptr< ss_stmt2pi > a__ss_decl2mem__caller,
00278                 ptr< ::lestes::backend_v2::intercode::pi_mem_factory > a__ss_decl2mem__result)
00279 {
00280         return ptr< ss_decl2mem > ( new ss_decl2mem(a__ss_decl2mem__caller,
00281                 a__ss_decl2mem__result) );
00282 }
00283 
00284 /*!
00285    This factory method for class ss_decl2mem uses initializers.
00286    \author lsg
00287  */
00288 ptr< ss_decl2mem > ss_decl2mem::create(ptr< ss_stmt2pi > a__ss_decl2mem__caller)
00289 {
00290         return ptr< ss_decl2mem > ( new ss_decl2mem(a__ss_decl2mem__caller, NULL) );
00291 }
00292 
00293 /*!
00294    Generated constructor for class ss_decl2mem.
00295    \author lsg
00296  */
00297 ss_decl2mem::ss_decl2mem (ptr< ss_stmt2pi > a__ss_decl2mem__caller,
00298                 ptr< ::lestes::backend_v2::intercode::pi_mem_factory > a__ss_decl2mem__result)
00299         : ss_decl2pi_default(), caller(checked(a__ss_decl2mem__caller)), result(a__ss_decl2mem__result)
00300 {}
00301 
00302 ptr< object::reflection_list > ss_decl2mem::reflection_get() const
00303 {
00304         if (!reflection) {
00305                 typedef class_reflection::field_metadata md;
00306                 typedef class_reflection::field_metadata_list mdlist;
00307                 ptr<mdlist> mdl = mdlist::create();
00308                 mdl->push_back( md::create( "caller", "ss_stmt2pi" ) );
00309                 mdl->push_back( md::create( "result", "pi_mem_factory" ) );
00310                 reflection = reflection_list::create( ss_decl2pi_default::reflection_get() );
00311                 reflection->push_back( class_reflection::create( "ss_decl2mem", mdl ) );
00312         }
00313         return reflection;
00314 }
00315 
00316 ptr< object::field_list_list > ss_decl2mem::field_values_get() const
00317 {
00318         ptr < field_list_list > result = ss_decl2pi_default::field_values_get();
00319         result->push_back( value_list::create() );
00320         result->back()->push_back( this->caller );
00321         result->push_back( value_list::create() );
00322         result->back()->push_back( this->result );
00323         return result;
00324 }
00325 
00326 ptr< ::lestes::backend_v2::intercode::pi_mem_factory > ss_decl2mem::get_real_decl_mem( const ptr< ::lestes::lang::cplus::sem::ss_declaration > & o )
00327 {
00328         lassert2( o, "Cannot visit NULL object." );
00329         o->accept_ss_declaration_visitor( ptr< ss_declaration_visitor >(this) );
00330         return result_get();
00331 }
00332 
00333 
00334 /*!
00335    Marking routine is used for garbage collection.
00336    \author lsg
00337  */
00338 void ss_decl2mem::gc_mark()
00339 {
00340         ss_decl2pi_default::gc_mark();
00341 }
00342 
00343 // End of class ss_decl2mem.
00344 
00345 // ------------- Class ss_type2destructor follows. -------------
00346 
00347 /*!
00348    \returns The value of ss_type2destructor::destructor.
00349    \author lsg
00350  */
00351 ptr< ss_function_declaration > ss_type2destructor::destructor_get() const
00352 {
00353         return destructor;
00354 }
00355 
00356 /*!
00357    \param[in] x The new value to set ss_type2destructor::destructor to.
00358    \author lsg
00359  */
00360 void ss_type2destructor::destructor_set(const ptr< ss_function_declaration > & x)
00361 {
00362         ss_type2destructor::destructor = x;
00363 }
00364 
00365 /*!
00366    This factory method for class ss_type2destructor takes values of all fields as arguments.
00367    \author lsg
00368  */
00369 ptr< ss_type2destructor > ss_type2destructor::create(ptr< ss_function_declaration > a__ss_type2destructor__destructor)
00370 {
00371         return ptr< ss_type2destructor > ( new ss_type2destructor(a__ss_type2destructor__destructor) );
00372 }
00373 
00374 /*!
00375    This factory method for class ss_type2destructor uses initializers.
00376    \author lsg
00377  */
00378 ptr< ss_type2destructor > ss_type2destructor::create()
00379 {
00380         return ptr< ss_type2destructor > ( new ss_type2destructor(NULL) );
00381 }
00382 
00383 /*!
00384    Generated constructor for class ss_type2destructor.
00385    \author lsg
00386  */
00387 ss_type2destructor::ss_type2destructor (ptr< ss_function_declaration > a__ss_type2destructor__destructor)
00388         : ss_type2destructor_base(), destructor(a__ss_type2destructor__destructor)
00389 {}
00390 
00391 ptr< object::reflection_list > ss_type2destructor::reflection_get() const
00392 {
00393         if (!reflection) {
00394                 typedef class_reflection::field_metadata md;
00395                 typedef class_reflection::field_metadata_list mdlist;
00396                 ptr<mdlist> mdl = mdlist::create();
00397                 mdl->push_back( md::create( "destructor", "ss_function_declaration" ) );
00398                 reflection = reflection_list::create( ss_type2destructor_base::reflection_get() );
00399                 reflection->push_back( class_reflection::create( "ss_type2destructor", mdl ) );
00400         }
00401         return reflection;
00402 }
00403 
00404 ptr< object::field_list_list > ss_type2destructor::field_values_get() const
00405 {
00406         ptr < field_list_list > result = ss_type2destructor_base::field_values_get();
00407         result->push_back( value_list::create() );
00408         result->back()->push_back( this->destructor );
00409         return result;
00410 }
00411 
00412 ptr< ss_function_declaration > ss_type2destructor::find_destructor( const ptr< ::lestes::lang::cplus::sem::ss_type > & o )
00413 {
00414         lassert2( o, "Cannot visit NULL object." );
00415         o->accept_ss_type_visitor( ptr< ss_type_visitor >(this) );
00416         return destructor_get();
00417 }
00418 
00419 
00420 /*!
00421    Marking routine is used for garbage collection.
00422    \author lsg
00423  */
00424 void ss_type2destructor::gc_mark()
00425 {
00426         ss_type2destructor_base::gc_mark();
00427 }
00428 
00429 // End of class ss_type2destructor.
00430 
00431 // ------------- Class ss_expr2destination follows. -------------
00432 
00433 /*!
00434    \returns The value of ss_expr2destination::destination.
00435    \author lsg
00436  */
00437 ptr< ss_expression > ss_expr2destination::destination_get() const
00438 {
00439         return destination;
00440 }
00441 
00442 /*!
00443    \param[in] x The new value to set ss_expr2destination::destination to.
00444    \author lsg
00445  */
00446 void ss_expr2destination::destination_set(const ptr< ss_expression > & x)
00447 {
00448         ss_expr2destination::destination = x;
00449 }
00450 
00451 /*!
00452    This factory method for class ss_expr2destination takes values of all fields as arguments.
00453    \author lsg
00454  */
00455 ptr< ss_expr2destination > ss_expr2destination::create(ptr< ss_expression > a__ss_expr2destination__destination)
00456 {
00457         return ptr< ss_expr2destination > ( new ss_expr2destination(a__ss_expr2destination__destination) );
00458 }
00459 
00460 /*!
00461    This factory method for class ss_expr2destination uses initializers.
00462    \author lsg
00463  */
00464 ptr< ss_expr2destination > ss_expr2destination::create()
00465 {
00466         return ptr< ss_expr2destination > ( new ss_expr2destination(NULL) );
00467 }
00468 
00469 /*!
00470    Generated constructor for class ss_expr2destination.
00471    \author lsg
00472  */
00473 ss_expr2destination::ss_expr2destination (ptr< ss_expression > a__ss_expr2destination__destination)
00474         : ss_expr2destination_base(), destination(a__ss_expr2destination__destination)
00475 {}
00476 
00477 ptr< object::reflection_list > ss_expr2destination::reflection_get() const
00478 {
00479         if (!reflection) {
00480                 typedef class_reflection::field_metadata md;
00481                 typedef class_reflection::field_metadata_list mdlist;
00482                 ptr<mdlist> mdl = mdlist::create();
00483                 mdl->push_back( md::create( "destination", "ss_expression" ) );
00484                 reflection = reflection_list::create( ss_expr2destination_base::reflection_get() );
00485                 reflection->push_back( class_reflection::create( "ss_expr2destination", mdl ) );
00486         }
00487         return reflection;
00488 }
00489 
00490 ptr< object::field_list_list > ss_expr2destination::field_values_get() const
00491 {
00492         ptr < field_list_list > result = ss_expr2destination_base::field_values_get();
00493         result->push_back( value_list::create() );
00494         result->back()->push_back( this->destination );
00495         return result;
00496 }
00497 
00498 ptr< ss_expression > ss_expr2destination::get_destination( const ptr< ::lestes::lang::cplus::sem::ss_expression > & o )
00499 {
00500         lassert2( o, "Cannot visit NULL object." );
00501         o->accept_ss_expression_visitor( ptr< ss_expression_visitor >(this) );
00502         return destination_get();
00503 }
00504 
00505 
00506 /*!
00507    Marking routine is used for garbage collection.
00508    \author lsg
00509  */
00510 void ss_expr2destination::gc_mark()
00511 {
00512         ss_expr2destination_base::gc_mark();
00513 }
00514 
00515 // End of class ss_expr2destination.
00516 
00517 // ------------- Class ss_expr2pi follows. -------------
00518 
00519 /*!
00520    \returns The value of ss_expr2pi::caller.
00521    \author lsg
00522  */
00523 ptr< ss_stmt2pi > ss_expr2pi::caller_get() const
00524 {
00525         return caller;
00526 }
00527 
00528 /*!
00529    \param[in] x The new value to set ss_expr2pi::caller to.
00530    \author lsg
00531  */
00532 void ss_expr2pi::caller_set(const ptr< ss_stmt2pi > & x)
00533 {
00534         ss_expr2pi::caller = x;
00535 }
00536 
00537 /*!
00538    \returns The value of ss_expr2pi::result.
00539    \author lsg
00540  */
00541 ptr< ::lestes::backend_v2::intercode::pi_operand > ss_expr2pi::result_get() const
00542 {
00543         return result;
00544 }
00545 
00546 /*!
00547    \param[in] x The new value to set ss_expr2pi::result to.
00548    \author lsg
00549  */
00550 void ss_expr2pi::result_set(const ptr< ::lestes::backend_v2::intercode::pi_operand > & x)
00551 {
00552         ss_expr2pi::result = x;
00553 }
00554 
00555 /*!
00556    \returns The value of ss_expr2pi::psp.
00557    \author lsg
00558  */
00559 ptr< ss_sp > ss_expr2pi::psp_get() const
00560 {
00561         return psp;
00562 }
00563 
00564 /*!
00565    \param[in] x The new value to set ss_expr2pi::psp to.
00566    \author lsg
00567  */
00568 void ss_expr2pi::psp_set(const ptr< ss_sp > & x)
00569 {
00570         ss_expr2pi::psp = x;
00571 }
00572 
00573 /*!
00574    \returns The value of ss_expr2pi::temporaries.
00575    \author lsg
00576  */
00577 ptr< ss_destructor_table > ss_expr2pi::temporaries_get() const
00578 {
00579         return temporaries;
00580 }
00581 
00582 /*!
00583    \param[in] x The new value to set ss_expr2pi::temporaries to.
00584    \author lsg
00585  */
00586 void ss_expr2pi::temporaries_set(const ptr< ss_destructor_table > & x)
00587 {
00588         ss_expr2pi::temporaries = x;
00589 }
00590 
00591 /*!
00592    \returns The value of ss_expr2pi::expr2operand_map.
00593    \author lsg
00594  */
00595 ptr< expression_results_map_type > ss_expr2pi::expr2operand_map_get() const
00596 {
00597         return expr2operand_map;
00598 }
00599 
00600 /*!
00601    \param[in] x The new value to set ss_expr2pi::expr2operand_map to.
00602    \author lsg
00603  */
00604 void ss_expr2pi::expr2operand_map_set(const ptr< expression_results_map_type > & x)
00605 {
00606         ss_expr2pi::expr2operand_map = x;
00607 }
00608 
00609 /*!
00610    \returns The value of ss_expr2pi::returned_pointer.
00611    \author lsg
00612  */
00613 bool ss_expr2pi::returned_pointer_get() const
00614 {
00615         return returned_pointer;
00616 }
00617 
00618 /*!
00619    \param[in] x The new value to set ss_expr2pi::returned_pointer to.
00620    \author lsg
00621  */
00622 void ss_expr2pi::returned_pointer_set(bool x)
00623 {
00624         ss_expr2pi::returned_pointer = x;
00625 }
00626 
00627 /*!
00628    This factory method for class ss_expr2pi takes values of all fields as arguments.
00629    \author lsg
00630  */
00631 ptr< ss_expr2pi > ss_expr2pi::create(ptr< ss_stmt2pi > a__ss_expr2pi__caller,
00632                 ptr< ::lestes::backend_v2::intercode::pi_operand > a__ss_expr2pi__result,
00633                 ptr< ss_sp > a__ss_expr2pi__psp,
00634                 ptr< ss_destructor_table > a__ss_expr2pi__temporaries,
00635                 ptr< expression_results_map_type > a__ss_expr2pi__expr2operand_map,
00636                 bool a__ss_expr2pi__returned_pointer)
00637 {
00638         return ptr< ss_expr2pi > ( new ss_expr2pi(a__ss_expr2pi__caller,
00639                 a__ss_expr2pi__result,
00640                 a__ss_expr2pi__psp,
00641                 a__ss_expr2pi__temporaries,
00642                 a__ss_expr2pi__expr2operand_map,
00643                 a__ss_expr2pi__returned_pointer) );
00644 }
00645 
00646 /*!
00647    This factory method for class ss_expr2pi uses initializers.
00648    \author lsg
00649  */
00650 ptr< ss_expr2pi > ss_expr2pi::create(ptr< ss_stmt2pi > a__ss_expr2pi__caller,
00651                 ptr< ss_sp > a__ss_expr2pi__psp,
00652                 ptr< ss_destructor_table > a__ss_expr2pi__temporaries,
00653                 ptr< expression_results_map_type > a__ss_expr2pi__expr2operand_map)
00654 {
00655         return ptr< ss_expr2pi > ( new ss_expr2pi(a__ss_expr2pi__caller, NULL, a__ss_expr2pi__psp, a__ss_expr2pi__temporaries, a__ss_expr2pi__expr2operand_map, false) );
00656 }
00657 
00658 /*!
00659    Generated constructor for class ss_expr2pi.
00660    \author lsg
00661  */
00662 ss_expr2pi::ss_expr2pi (ptr< ss_stmt2pi > a__ss_expr2pi__caller,
00663                 ptr< ::lestes::backend_v2::intercode::pi_operand > a__ss_expr2pi__result,
00664                 ptr< ss_sp > a__ss_expr2pi__psp,
00665                 ptr< ss_destructor_table > a__ss_expr2pi__temporaries,
00666                 ptr< expression_results_map_type > a__ss_expr2pi__expr2operand_map,
00667                 bool a__ss_expr2pi__returned_pointer)
00668         : ss_expression_visitor(), caller(checked(a__ss_expr2pi__caller)), result(a__ss_expr2pi__result), psp(checked(a__ss_expr2pi__psp)), temporaries(checked(a__ss_expr2pi__temporaries)), expr2operand_map(checked(a__ss_expr2pi__expr2operand_map)), returned_pointer(a__ss_expr2pi__returned_pointer)
00669 {}
00670 
00671 ptr< object::reflection_list > ss_expr2pi::reflection_get() const
00672 {
00673         if (!reflection) {
00674                 typedef class_reflection::field_metadata md;
00675                 typedef class_reflection::field_metadata_list mdlist;
00676                 ptr<mdlist> mdl = mdlist::create();
00677                 mdl->push_back( md::create( "caller", "ss_stmt2pi" ) );
00678                 mdl->push_back( md::create( "result", "pi_operand" ) );
00679                 mdl->push_back( md::create( "psp", "ss_sp" ) );
00680                 mdl->push_back( md::create( "temporaries", "ss_destructor_table" ) );
00681                 mdl->push_back( md::create( "expr2operand_map", "expression_results_map_type" ) );
00682                 mdl->push_back( md::create( "returned_pointer", "bool" ) );
00683                 reflection = reflection_list::create( ss_expression_visitor::reflection_get() );
00684                 reflection->push_back( class_reflection::create( "ss_expr2pi", mdl ) );
00685         }
00686         return reflection;
00687 }
00688 
00689 ptr< object::field_list_list > ss_expr2pi::field_values_get() const
00690 {
00691         ptr < field_list_list > result = ss_expression_visitor::field_values_get();
00692         result->push_back( value_list::create() );
00693         result->back()->push_back( this->caller );
00694         result->push_back( value_list::create() );
00695         result->back()->push_back( this->result );
00696         result->push_back( value_list::create() );
00697         result->back()->push_back( this->psp );
00698         result->push_back( value_list::create() );
00699         result->back()->push_back( this->temporaries );
00700         result->push_back( value_list::create() );
00701         result->back()->push_back( this->expr2operand_map );
00702         result->push_back( value_list::create() );
00703         result->back()->push_back( objectize< bool > ::create( this->returned_pointer ) );
00704         return result;
00705 }
00706 
00707 ptr< ::lestes::backend_v2::intercode::pi_operand > ss_expr2pi::returns( const ptr< ::lestes::lang::cplus::sem::ss_expression > & o )
00708 {
00709         lassert2( o, "Cannot visit NULL object." );
00710         o->accept_ss_expression_visitor( ptr< ss_expression_visitor >(this) );
00711         return result_get();
00712 }
00713 
00714 
00715 /*!
00716    Marking routine is used for garbage collection.
00717    \author lsg
00718  */
00719 void ss_expr2pi::gc_mark()
00720 {
00721         ss_expression_visitor::gc_mark();
00722 }
00723 
00724 // End of class ss_expr2pi.
00725 
00726 // ------------- Class ss_destructor_table follows. -------------
00727 
00728 /*!
00729    \returns The value of ss_destructor_table::compound_stmt.
00730    \author lsg
00731  */
00732 ptr< ss_compound_stmt > ss_destructor_table::compound_stmt_get() const
00733 {
00734         return compound_stmt;
00735 }
00736 
00737 /*!
00738    \param[in] x The new value to set ss_destructor_table::compound_stmt to.
00739    \author lsg
00740  */
00741 void ss_destructor_table::compound_stmt_set(const ptr< ss_compound_stmt > & x)
00742 {
00743         ss_destructor_table::compound_stmt = x;
00744 }
00745 
00746 /*!
00747    \returns The value of ss_destructor_table::destructors.
00748    \author lsg
00749  */
00750 ptr< ::lestes::std::list< srp< destructor_entry_type > > > ss_destructor_table::destructors_get() const
00751 {
00752         return destructors;
00753 }
00754 
00755 /*!
00756    \param[in] x The new value to set ss_destructor_table::destructors to.
00757    \author lsg
00758  */
00759 void ss_destructor_table::destructors_set(const ptr< ::lestes::std::list< srp< destructor_entry_type > > > & x)
00760 {
00761         ss_destructor_table::destructors = x;
00762 }
00763 
00764 /*!
00765    This factory method for class ss_destructor_table takes values of all fields as arguments.
00766    \author lsg
00767  */
00768 ptr< ss_destructor_table > ss_destructor_table::create(ptr< ss_compound_stmt > a__ss_destructor_table__compound_stmt,
00769                 ptr< ::lestes::std::list< srp< destructor_entry_type > > > a__ss_destructor_table__destructors)
00770 {
00771         return ptr< ss_destructor_table > ( new ss_destructor_table(a__ss_destructor_table__compound_stmt,
00772                 a__ss_destructor_table__destructors) );
00773 }
00774 
00775 /*!
00776    This factory method for class ss_destructor_table uses initializers.
00777    \author lsg
00778  */
00779 ptr< ss_destructor_table > ss_destructor_table::create(ptr< ss_compound_stmt > a__ss_destructor_table__compound_stmt)
00780 {
00781         return ptr< ss_destructor_table > ( new ss_destructor_table(a__ss_destructor_table__compound_stmt, ::lestes::std::list< srp< destructor_entry_type > > ::create()) );
00782 }
00783 
00784 /*!
00785    Generated constructor for class ss_destructor_table.
00786    \author lsg
00787  */
00788 ss_destructor_table::ss_destructor_table (ptr< ss_compound_stmt > a__ss_destructor_table__compound_stmt,
00789                 ptr< ::lestes::std::list< srp< destructor_entry_type > > > a__ss_destructor_table__destructors)
00790         : object(), compound_stmt(a__ss_destructor_table__compound_stmt), destructors(checked(a__ss_destructor_table__destructors))
00791 {}
00792 
00793 ptr< object::reflection_list > ss_destructor_table::reflection_get() const
00794 {
00795         if (!reflection) {
00796                 typedef class_reflection::field_metadata md;
00797                 typedef class_reflection::field_metadata_list mdlist;
00798                 ptr<mdlist> mdl = mdlist::create();
00799                 mdl->push_back( md::create( "compound_stmt", "ss_compound_stmt" ) );
00800                 mdl->push_back( md::create( "destructors", "list&lt; srp&lt; destructor_entry_type &gt; &gt;" ) );
00801                 reflection = reflection_list::create( ::lestes::std::object::reflection_get() );
00802                 reflection->push_back( class_reflection::create( "ss_destructor_table", mdl ) );
00803         }
00804         return reflection;
00805 }
00806 
00807 ptr< object::field_list_list > ss_destructor_table::field_values_get() const
00808 {
00809         ptr < field_list_list > result = ::lestes::std::object::field_values_get();
00810         result->push_back( value_list::create() );
00811         result->back()->push_back( this->compound_stmt );
00812         result->push_back( value_list::create() );
00813         result->back()->push_back( this->destructors );
00814         return result;
00815 }
00816 
00817 
00818 /*!
00819    Marking routine is used for garbage collection.
00820    \author lsg
00821  */
00822 void ss_destructor_table::gc_mark()
00823 {
00824 	::lestes::std::object::gc_mark();
00825 }
00826 
00827 // End of class ss_destructor_table.
00828 
00829 // ------------- Class ss_destructor_tables follows. -------------
00830 
00831 /*!
00832    \returns The value of ss_destructor_tables::singleton_instance.
00833    \author lsg
00834  */
00835 ptr< ss_destructor_tables > ss_destructor_tables::singleton_instance_get()
00836 {
00837         return singleton_instance;
00838 }
00839 
00840 /*!
00841    \param[in] x The new value to set ss_destructor_tables::singleton_instance to.
00842    \author lsg
00843  */
00844 void ss_destructor_tables::singleton_instance_set(const ptr< ss_destructor_tables > & x)
00845 {
00846         ss_destructor_tables::singleton_instance = x;
00847 }
00848 
00849 /*!
00850    Generated constructor for class ss_destructor_tables.
00851    \author lsg
00852  */
00853 ss_destructor_tables::ss_destructor_tables ()
00854         : object()
00855 {}
00856 
00857 ptr< object::reflection_list > ss_destructor_tables::reflection_get() const
00858 {
00859         if (!reflection) {
00860                 typedef class_reflection::field_metadata md;
00861                 typedef class_reflection::field_metadata_list mdlist;
00862                 ptr<mdlist> mdl = mdlist::create();
00863                 mdl->push_back( md::create( "singleton_instance", "ss_destructor_tables" ) );
00864                 reflection = reflection_list::create( ::lestes::std::object::reflection_get() );
00865                 reflection->push_back( class_reflection::create( "ss_destructor_tables", mdl ) );
00866         }
00867         return reflection;
00868 }
00869 
00870 ptr< object::field_list_list > ss_destructor_tables::field_values_get() const
00871 {
00872         ptr < field_list_list > result = ::lestes::std::object::field_values_get();
00873         result->push_back( value_list::create() );
00874         result->back()->push_back( this->singleton_instance );
00875         return result;
00876 }
00877 
00878 
00879 /*!
00880    Marking routine is used for garbage collection.
00881    \author lsg
00882  */
00883 void ss_destructor_tables::gc_mark()
00884 {
00885 	::lestes::std::object::gc_mark();
00886 }
00887 
00888 // End of class ss_destructor_tables.
00889 
00890 // ------------- Class ss_destructor_tables_stack follows. -------------
00891 
00892 /*!
00893    \returns The value of ss_destructor_tables_stack::current.
00894    \author lsg
00895  */
00896 ptr< ss_destructor_table > ss_destructor_tables_stack::current_get()
00897 {
00898         return current;
00899 }
00900 
00901 /*!
00902    \param[in] x The new value to set ss_destructor_tables_stack::current to.
00903    \author lsg
00904  */
00905 void ss_destructor_tables_stack::current_set(const ptr< ss_destructor_table > & x)
00906 {
00907         ss_destructor_tables_stack::current = x;
00908 }
00909 
00910 /*!
00911    \returns The value of ss_destructor_tables_stack::tables.
00912    \author lsg
00913  */
00914 ptr< ::lestes::std::list< srp< ss_destructor_table > > > ss_destructor_tables_stack::tables_get()
00915 {
00916         return tables;
00917 }
00918 
00919 /*!
00920    \param[in] x The new value to set ss_destructor_tables_stack::tables to.
00921    \author lsg
00922  */
00923 void ss_destructor_tables_stack::tables_set(const ptr< ::lestes::std::list< srp< ss_destructor_table > > > & x)
00924 {
00925         ss_destructor_tables_stack::tables = x;
00926 }
00927 
00928 /*!
00929    This factory method for class ss_destructor_tables_stack takes values of all fields as arguments.
00930    \author lsg
00931  */
00932 ptr< ss_destructor_tables_stack > ss_destructor_tables_stack::create()
00933 {
00934         return ptr< ss_destructor_tables_stack > ( new ss_destructor_tables_stack() );
00935 }
00936 
00937 /*!
00938    Generated constructor for class ss_destructor_tables_stack.
00939    \author lsg
00940  */
00941 ss_destructor_tables_stack::ss_destructor_tables_stack ()
00942         : ss_destructor_tables()
00943 {}
00944 
00945 ptr< object::reflection_list > ss_destructor_tables_stack::reflection_get() const
00946 {
00947         if (!reflection) {
00948                 typedef class_reflection::field_metadata md;
00949                 typedef class_reflection::field_metadata_list mdlist;
00950                 ptr<mdlist> mdl = mdlist::create();
00951                 mdl->push_back( md::create( "current", "ss_destructor_table" ) );
00952                 mdl->push_back( md::create( "tables", "list&lt; srp&lt; ss_destructor_table &gt; &gt;" ) );
00953                 reflection = reflection_list::create( ss_destructor_tables::reflection_get() );
00954                 reflection->push_back( class_reflection::create( "ss_destructor_tables_stack", mdl ) );
00955         }
00956         return reflection;
00957 }
00958 
00959 ptr< object::field_list_list > ss_destructor_tables_stack::field_values_get() const
00960 {
00961         ptr < field_list_list > result = ss_destructor_tables::field_values_get();
00962         result->push_back( value_list::create() );
00963         result->back()->push_back( this->current );
00964         result->push_back( value_list::create() );
00965         result->back()->push_back( this->tables );
00966         return result;
00967 }
00968 
00969 
00970 /*!
00971    Marking routine is used for garbage collection.
00972    \author lsg
00973  */
00974 void ss_destructor_tables_stack::gc_mark()
00975 {
00976         ss_destructor_tables::gc_mark();
00977 }
00978 
00979 // End of class ss_destructor_tables_stack.
00980 
00981 // ------------- Class ss_linfo2pi_linfo follows. -------------
00982 
00983 /*!
00984    \returns The value of ss_linfo2pi_linfo::pinfo.
00985    \author lsg
00986  */
00987 ptr< ::lestes::md::literals::literal_info_base > ss_linfo2pi_linfo::pinfo_get() const
00988 {
00989         return pinfo;
00990 }
00991 
00992 /*!
00993    \param[in] x The new value to set ss_linfo2pi_linfo::pinfo to.
00994    \author lsg
00995  */
00996 void ss_linfo2pi_linfo::pinfo_set(const ptr< ::lestes::md::literals::literal_info_base > & x)
00997 {
00998         ss_linfo2pi_linfo::pinfo = x;
00999 }
01000 
01001 /*!
01002    This factory method for class ss_linfo2pi_linfo takes values of all fields as arguments.
01003    \author lsg
01004  */
01005 ptr< ss_linfo2pi_linfo > ss_linfo2pi_linfo::create(ptr< ::lestes::md::literals::literal_info_base > a__ss_linfo2pi_linfo__pinfo)
01006 {
01007         return ptr< ss_linfo2pi_linfo > ( new ss_linfo2pi_linfo(a__ss_linfo2pi_linfo__pinfo) );
01008 }
01009 
01010 /*!
01011    This factory method for class ss_linfo2pi_linfo uses initializers.
01012    \author lsg
01013  */
01014 ptr< ss_linfo2pi_linfo > ss_linfo2pi_linfo::create()
01015 {
01016         return ptr< ss_linfo2pi_linfo > ( new ss_linfo2pi_linfo(NULL) );
01017 }
01018 
01019 /*!
01020    Generated constructor for class ss_linfo2pi_linfo.
01021    \author lsg
01022  */
01023 ss_linfo2pi_linfo::ss_linfo2pi_linfo (ptr< ::lestes::md::literals::literal_info_base > a__ss_linfo2pi_linfo__pinfo)
01024         : ss_literal_info_visitor(), pinfo(a__ss_linfo2pi_linfo__pinfo)
01025 {}
01026 
01027 ptr< object::reflection_list > ss_linfo2pi_linfo::reflection_get() const
01028 {
01029         if (!reflection) {
01030                 typedef class_reflection::field_metadata md;
01031                 typedef class_reflection::field_metadata_list mdlist;
01032                 ptr<mdlist> mdl = mdlist::create();
01033                 mdl->push_back( md::create( "pinfo", "literal_info_base" ) );
01034                 reflection = reflection_list::create( ss_literal_info_visitor::reflection_get() );
01035                 reflection->push_back( class_reflection::create( "ss_linfo2pi_linfo", mdl ) );
01036         }
01037         return reflection;
01038 }
01039 
01040 ptr< object::field_list_list > ss_linfo2pi_linfo::field_values_get() const
01041 {
01042         ptr < field_list_list > result = ss_literal_info_visitor::field_values_get();
01043         result->push_back( value_list::create() );
01044         result->back()->push_back( this->pinfo );
01045         return result;
01046 }
01047 
01048 ptr< ::lestes::md::literals::literal_info_base > ss_linfo2pi_linfo::get_pinfo( const ptr< ::lestes::lang::cplus::sem::ss_literal_info > & o )
01049 {
01050         lassert2( o, "Cannot visit NULL object." );
01051         o->accept_ss_literal_info_visitor( ptr< ss_literal_info_visitor >(this) );
01052         return pinfo_get();
01053 }
01054 
01055 
01056 /*!
01057    Marking routine is used for garbage collection.
01058    \author lsg
01059  */
01060 void ss_linfo2pi_linfo::gc_mark()
01061 {
01062         ss_literal_info_visitor::gc_mark();
01063 }
01064 
01065 // End of class ss_linfo2pi_linfo.
01066 
01067 
01068 // static data members follow 
01069 ptr<object::reflection_list> ss_stmt2pi::reflection = reflection;
01070 ptr<object::reflection_list> ss_decl2pi::reflection = reflection;
01071 ptr<object::reflection_list> ss_decl2mem::reflection = reflection;
01072 ptr<object::reflection_list> ss_type2destructor::reflection = reflection;
01073 ptr<object::reflection_list> ss_expr2destination::reflection = reflection;
01074 ptr<object::reflection_list> ss_expr2pi::reflection = reflection;
01075 ptr<object::reflection_list> ss_destructor_table::reflection = reflection;
01076 ptr< ss_destructor_tables > ss_destructor_tables::singleton_instance = NULL;
01077 ptr<object::reflection_list> ss_destructor_tables::reflection = reflection;
01078 ptr< ss_destructor_table > ss_destructor_tables_stack::current = NULL;
01079 ptr< ::lestes::std::list< srp< ss_destructor_table > > > ss_destructor_tables_stack::tables = ::lestes::std::list< srp< ss_destructor_table > > ::create();
01080 ptr<object::reflection_list> ss_destructor_tables_stack::reflection = reflection;
01081 ptr<object::reflection_list> ss_linfo2pi_linfo::reflection = reflection;
01082 
01083 end_package(sem);
01084 end_package(cplus);
01085 end_package(lang);
01086 end_package(lestes);
01087 

Generated on Mon Feb 12 18:23:30 2007 for lestes by doxygen 1.5.1-20070107