00001
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
00024
00025
00026
00027
00028
00029 ptr< ss_function_declaration > ss_stmt2pi::current_function_get() const
00030 {
00031 return current_function;
00032 }
00033
00034
00035
00036
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
00045
00046
00047 ptr< variable_map_type > ss_stmt2pi::local_variable_map_get() const
00048 {
00049 return local_variable_map;
00050 }
00051
00052
00053
00054
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
00063
00064
00065 ptr< variable_map_type > ss_stmt2pi::namespace_variable_map_get() const
00066 {
00067 return namespace_variable_map;
00068 }
00069
00070
00071
00072
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
00081
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
00094
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
00132
00133
00134 void ss_stmt2pi::gc_mark()
00135 {
00136 ss_statement_visitor::gc_mark();
00137 }
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147 ptr< ss_stmt2pi > ss_decl2pi::caller_get() const
00148 {
00149 return caller;
00150 }
00151
00152
00153
00154
00155
00156 void ss_decl2pi::caller_set(const ptr< ss_stmt2pi > & x)
00157 {
00158 ss_decl2pi::caller = x;
00159 }
00160
00161
00162
00163
00164
00165 ptr< ss_decl_stmt > ss_decl2pi::statement_get() const
00166 {
00167 return statement;
00168 }
00169
00170
00171
00172
00173
00174 void ss_decl2pi::statement_set(const ptr< ss_decl_stmt > & x)
00175 {
00176 ss_decl2pi::statement = x;
00177 }
00178
00179
00180
00181
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
00192
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
00226
00227
00228 void ss_decl2pi::gc_mark()
00229 {
00230 ss_decl2pi_default::gc_mark();
00231 }
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241 ptr< ss_stmt2pi > ss_decl2mem::caller_get() const
00242 {
00243 return caller;
00244 }
00245
00246
00247
00248
00249
00250 void ss_decl2mem::caller_set(const ptr< ss_stmt2pi > & x)
00251 {
00252 ss_decl2mem::caller = x;
00253 }
00254
00255
00256
00257
00258
00259 ptr< ::lestes::backend_v2::intercode::pi_mem_factory > ss_decl2mem::result_get() const
00260 {
00261 return result;
00262 }
00263
00264
00265
00266
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
00275
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
00286
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
00295
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
00336
00337
00338 void ss_decl2mem::gc_mark()
00339 {
00340 ss_decl2pi_default::gc_mark();
00341 }
00342
00343
00344
00345
00346
00347
00348
00349
00350
00351 ptr< ss_function_declaration > ss_type2destructor::destructor_get() const
00352 {
00353 return destructor;
00354 }
00355
00356
00357
00358
00359
00360 void ss_type2destructor::destructor_set(const ptr< ss_function_declaration > & x)
00361 {
00362 ss_type2destructor::destructor = x;
00363 }
00364
00365
00366
00367
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
00376
00377
00378 ptr< ss_type2destructor > ss_type2destructor::create()
00379 {
00380 return ptr< ss_type2destructor > ( new ss_type2destructor(NULL) );
00381 }
00382
00383
00384
00385
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
00422
00423
00424 void ss_type2destructor::gc_mark()
00425 {
00426 ss_type2destructor_base::gc_mark();
00427 }
00428
00429
00430
00431
00432
00433
00434
00435
00436
00437 ptr< ss_expression > ss_expr2destination::destination_get() const
00438 {
00439 return destination;
00440 }
00441
00442
00443
00444
00445
00446 void ss_expr2destination::destination_set(const ptr< ss_expression > & x)
00447 {
00448 ss_expr2destination::destination = x;
00449 }
00450
00451
00452
00453
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
00462
00463
00464 ptr< ss_expr2destination > ss_expr2destination::create()
00465 {
00466 return ptr< ss_expr2destination > ( new ss_expr2destination(NULL) );
00467 }
00468
00469
00470
00471
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
00508
00509
00510 void ss_expr2destination::gc_mark()
00511 {
00512 ss_expr2destination_base::gc_mark();
00513 }
00514
00515
00516
00517
00518
00519
00520
00521
00522
00523 ptr< ss_stmt2pi > ss_expr2pi::caller_get() const
00524 {
00525 return caller;
00526 }
00527
00528
00529
00530
00531
00532 void ss_expr2pi::caller_set(const ptr< ss_stmt2pi > & x)
00533 {
00534 ss_expr2pi::caller = x;
00535 }
00536
00537
00538
00539
00540
00541 ptr< ::lestes::backend_v2::intercode::pi_operand > ss_expr2pi::result_get() const
00542 {
00543 return result;
00544 }
00545
00546
00547
00548
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
00557
00558
00559 ptr< ss_sp > ss_expr2pi::psp_get() const
00560 {
00561 return psp;
00562 }
00563
00564
00565
00566
00567
00568 void ss_expr2pi::psp_set(const ptr< ss_sp > & x)
00569 {
00570 ss_expr2pi::psp = x;
00571 }
00572
00573
00574
00575
00576
00577 ptr< ss_destructor_table > ss_expr2pi::temporaries_get() const
00578 {
00579 return temporaries;
00580 }
00581
00582
00583
00584
00585
00586 void ss_expr2pi::temporaries_set(const ptr< ss_destructor_table > & x)
00587 {
00588 ss_expr2pi::temporaries = x;
00589 }
00590
00591
00592
00593
00594
00595 ptr< expression_results_map_type > ss_expr2pi::expr2operand_map_get() const
00596 {
00597 return expr2operand_map;
00598 }
00599
00600
00601
00602
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
00611
00612
00613 bool ss_expr2pi::returned_pointer_get() const
00614 {
00615 return returned_pointer;
00616 }
00617
00618
00619
00620
00621
00622 void ss_expr2pi::returned_pointer_set(bool x)
00623 {
00624 ss_expr2pi::returned_pointer = x;
00625 }
00626
00627
00628
00629
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
00648
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
00660
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
00717
00718
00719 void ss_expr2pi::gc_mark()
00720 {
00721 ss_expression_visitor::gc_mark();
00722 }
00723
00724
00725
00726
00727
00728
00729
00730
00731
00732 ptr< ss_compound_stmt > ss_destructor_table::compound_stmt_get() const
00733 {
00734 return compound_stmt;
00735 }
00736
00737
00738
00739
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
00748
00749
00750 ptr< ::lestes::std::list< srp< destructor_entry_type > > > ss_destructor_table::destructors_get() const
00751 {
00752 return destructors;
00753 }
00754
00755
00756
00757
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
00766
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
00777
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
00786
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< srp< destructor_entry_type > >" ) );
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
00820
00821
00822 void ss_destructor_table::gc_mark()
00823 {
00824 ::lestes::std::object::gc_mark();
00825 }
00826
00827
00828
00829
00830
00831
00832
00833
00834
00835 ptr< ss_destructor_tables > ss_destructor_tables::singleton_instance_get()
00836 {
00837 return singleton_instance;
00838 }
00839
00840
00841
00842
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
00851
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
00881
00882
00883 void ss_destructor_tables::gc_mark()
00884 {
00885 ::lestes::std::object::gc_mark();
00886 }
00887
00888
00889
00890
00891
00892
00893
00894
00895
00896 ptr< ss_destructor_table > ss_destructor_tables_stack::current_get()
00897 {
00898 return current;
00899 }
00900
00901
00902
00903
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
00912
00913
00914 ptr< ::lestes::std::list< srp< ss_destructor_table > > > ss_destructor_tables_stack::tables_get()
00915 {
00916 return tables;
00917 }
00918
00919
00920
00921
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
00930
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
00939
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< srp< ss_destructor_table > >" ) );
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
00972
00973
00974 void ss_destructor_tables_stack::gc_mark()
00975 {
00976 ss_destructor_tables::gc_mark();
00977 }
00978
00979
00980
00981
00982
00983
00984
00985
00986
00987 ptr< ::lestes::md::literals::literal_info_base > ss_linfo2pi_linfo::pinfo_get() const
00988 {
00989 return pinfo;
00990 }
00991
00992
00993
00994
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
01003
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
01012
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
01021
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
01058
01059
01060 void ss_linfo2pi_linfo::gc_mark()
01061 {
01062 ss_literal_info_visitor::gc_mark();
01063 }
01064
01065
01066
01067
01068
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