00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include <lestes/lang/cplus/sem/visitor.v.g.hh>
00013 #include <lestes/lang/cplus/sem/ss_declaration.g.hh>
00014 #include <lestes/lang/cplus/sem/ss_type.g.hh>
00015 #include <lestes/lang/cplus/sem/ss_misc.g.hh>
00016
00017 #include <lestes/std/list.hh>
00018 #include <lestes/std/pair.hh>
00019 #include <lestes/std/reflect.hh>
00020
00021 #include <lestes/lang/cplus/sem/ss_expr_funcall.g.hh>
00022
00023 package(lestes);
00024 package(lang);
00025 package(cplus);
00026 package(sem);
00027
00028
00029
00030
00031
00032
00033
00034
00035 ptr< ::lestes::std::list< srp< ss_expression > > > ss_funcall_abstr::args_get() const
00036 {
00037 return args;
00038 }
00039
00040
00041
00042
00043
00044 void ss_funcall_abstr::args_set(const ptr< ::lestes::std::list< srp< ss_expression > > > & x)
00045 {
00046 ss_funcall_abstr::args = x;
00047 }
00048
00049
00050
00051
00052
00053 ss_funcall_abstr::ss_funcall_abstr (ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00054 ptr< ss_type > a__ss_expression__type,
00055 ptr< ss_sp > a__ss_expression__psp,
00056 ptr< ss_sp > a__ss_expression__nsp,
00057 ptr< ::lestes::std::list< srp< ss_expression > > > a__ss_funcall_abstr__args)
00058 : ss_expression(a__ss_base_with_location__location,
00059 a__ss_expression__type,
00060 a__ss_expression__psp,
00061 a__ss_expression__nsp), args(checked(a__ss_funcall_abstr__args))
00062 {}
00063
00064 ptr< object::reflection_list > ss_funcall_abstr::reflection_get() const
00065 {
00066 if (!reflection) {
00067 typedef class_reflection::field_metadata md;
00068 typedef class_reflection::field_metadata_list mdlist;
00069 ptr<mdlist> mdl = mdlist::create();
00070 mdl->push_back( md::create( "args", "list< srp< ss_expression > >" ) );
00071 reflection = reflection_list::create( ss_expression::reflection_get() );
00072 reflection->push_back( class_reflection::create( "ss_funcall_abstr", mdl ) );
00073 }
00074 return reflection;
00075 }
00076
00077 ptr< object::field_list_list > ss_funcall_abstr::field_values_get() const
00078 {
00079 ptr < field_list_list > result = ss_expression::field_values_get();
00080 result->push_back( value_list::create() );
00081 result->back()->push_back( this->args );
00082 return result;
00083 }
00084
00085
00086
00087
00088
00089
00090 void ss_funcall_abstr::gc_mark()
00091 {
00092 ss_expression::gc_mark();
00093 }
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103 ptr< ss_expression > ss_pfuncall::fun_ptr_get() const
00104 {
00105 return fun_ptr;
00106 }
00107
00108
00109
00110
00111
00112 void ss_pfuncall::fun_ptr_set(const ptr< ss_expression > & x)
00113 {
00114 ss_pfuncall::fun_ptr = x;
00115 }
00116
00117
00118
00119
00120
00121 ptr< ss_expression > ss_pfuncall::object_get() const
00122 {
00123 return object;
00124 }
00125
00126
00127
00128
00129
00130 void ss_pfuncall::object_set(const ptr< ss_expression > & x)
00131 {
00132 ss_pfuncall::object = x;
00133 }
00134
00135 void ss_pfuncall::accept_ss_expression_visitor( ptr< ss_expression_visitor > v )
00136 {
00137 return v->visit_ss_pfuncall( this );
00138 }
00139
00140
00141
00142
00143
00144 ptr< ss_pfuncall > ss_pfuncall::create(ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00145 ptr< ss_type > a__ss_expression__type,
00146 ptr< ss_sp > a__ss_expression__psp,
00147 ptr< ss_sp > a__ss_expression__nsp,
00148 ptr< ::lestes::std::list< srp< ss_expression > > > a__ss_funcall_abstr__args,
00149 ptr< ss_expression > a__ss_pfuncall__fun_ptr,
00150 ptr< ss_expression > a__ss_pfuncall__object)
00151 {
00152 return ptr< ss_pfuncall > ( new ss_pfuncall(a__ss_base_with_location__location,
00153 a__ss_expression__type,
00154 a__ss_expression__psp,
00155 a__ss_expression__nsp,
00156 a__ss_funcall_abstr__args,
00157 a__ss_pfuncall__fun_ptr,
00158 a__ss_pfuncall__object) );
00159 }
00160
00161
00162
00163
00164
00165 ss_pfuncall::ss_pfuncall (ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00166 ptr< ss_type > a__ss_expression__type,
00167 ptr< ss_sp > a__ss_expression__psp,
00168 ptr< ss_sp > a__ss_expression__nsp,
00169 ptr< ::lestes::std::list< srp< ss_expression > > > a__ss_funcall_abstr__args,
00170 ptr< ss_expression > a__ss_pfuncall__fun_ptr,
00171 ptr< ss_expression > a__ss_pfuncall__object)
00172 : ss_funcall_abstr(a__ss_base_with_location__location,
00173 a__ss_expression__type,
00174 a__ss_expression__psp,
00175 a__ss_expression__nsp,
00176 a__ss_funcall_abstr__args), fun_ptr(checked(a__ss_pfuncall__fun_ptr)), object(checked(a__ss_pfuncall__object))
00177 {}
00178
00179 ptr< object::reflection_list > ss_pfuncall::reflection_get() const
00180 {
00181 if (!reflection) {
00182 typedef class_reflection::field_metadata md;
00183 typedef class_reflection::field_metadata_list mdlist;
00184 ptr<mdlist> mdl = mdlist::create();
00185 mdl->push_back( md::create( "fun_ptr", "ss_expression" ) );
00186 mdl->push_back( md::create( "object", "ss_expression" ) );
00187 reflection = reflection_list::create( ss_funcall_abstr::reflection_get() );
00188 reflection->push_back( class_reflection::create( "ss_pfuncall", mdl ) );
00189 }
00190 return reflection;
00191 }
00192
00193 ptr< object::field_list_list > ss_pfuncall::field_values_get() const
00194 {
00195 ptr < field_list_list > result = ss_funcall_abstr::field_values_get();
00196 result->push_back( value_list::create() );
00197 result->back()->push_back( this->fun_ptr );
00198 result->push_back( value_list::create() );
00199 result->back()->push_back( this->object );
00200 return result;
00201 }
00202
00203
00204
00205
00206
00207
00208 void ss_pfuncall::gc_mark()
00209 {
00210 ss_funcall_abstr::gc_mark();
00211 }
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221 ptr< ss_function_declaration > ss_funcall::function_get() const
00222 {
00223 return function;
00224 }
00225
00226
00227
00228
00229
00230 void ss_funcall::function_set(const ptr< ss_function_declaration > & x)
00231 {
00232 ss_funcall::function = x;
00233 }
00234
00235 void ss_funcall::accept_ss_expression_visitor( ptr< ss_expression_visitor > v )
00236 {
00237 return v->visit_ss_funcall( this );
00238 }
00239
00240
00241
00242
00243
00244 ptr< ss_funcall > ss_funcall::create(ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00245 ptr< ss_type > a__ss_expression__type,
00246 ptr< ss_sp > a__ss_expression__psp,
00247 ptr< ss_sp > a__ss_expression__nsp,
00248 ptr< ::lestes::std::list< srp< ss_expression > > > a__ss_funcall_abstr__args,
00249 ptr< ss_function_declaration > a__ss_funcall__function)
00250 {
00251 return ptr< ss_funcall > ( new ss_funcall(a__ss_base_with_location__location,
00252 a__ss_expression__type,
00253 a__ss_expression__psp,
00254 a__ss_expression__nsp,
00255 a__ss_funcall_abstr__args,
00256 a__ss_funcall__function) );
00257 }
00258
00259
00260
00261
00262
00263 ss_funcall::ss_funcall (ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00264 ptr< ss_type > a__ss_expression__type,
00265 ptr< ss_sp > a__ss_expression__psp,
00266 ptr< ss_sp > a__ss_expression__nsp,
00267 ptr< ::lestes::std::list< srp< ss_expression > > > a__ss_funcall_abstr__args,
00268 ptr< ss_function_declaration > a__ss_funcall__function)
00269 : ss_funcall_abstr(a__ss_base_with_location__location,
00270 a__ss_expression__type,
00271 a__ss_expression__psp,
00272 a__ss_expression__nsp,
00273 a__ss_funcall_abstr__args), function(checked(a__ss_funcall__function))
00274 {}
00275
00276 ptr< object::reflection_list > ss_funcall::reflection_get() const
00277 {
00278 if (!reflection) {
00279 typedef class_reflection::field_metadata md;
00280 typedef class_reflection::field_metadata_list mdlist;
00281 ptr<mdlist> mdl = mdlist::create();
00282 mdl->push_back( md::create( "function", "ss_function_declaration" ) );
00283 reflection = reflection_list::create( ss_funcall_abstr::reflection_get() );
00284 reflection->push_back( class_reflection::create( "ss_funcall", mdl ) );
00285 }
00286 return reflection;
00287 }
00288
00289 ptr< object::field_list_list > ss_funcall::field_values_get() const
00290 {
00291 ptr < field_list_list > result = ss_funcall_abstr::field_values_get();
00292 result->push_back( value_list::create() );
00293 result->back()->push_back( this->function );
00294 return result;
00295 }
00296
00297
00298
00299
00300
00301
00302 void ss_funcall::gc_mark()
00303 {
00304 ss_funcall_abstr::gc_mark();
00305 }
00306
00307
00308
00309
00310
00311
00312
00313
00314
00315 ptr< ss_expression > ss_ifuncall::fun_ptr_get() const
00316 {
00317 return fun_ptr;
00318 }
00319
00320
00321
00322
00323
00324 void ss_ifuncall::fun_ptr_set(const ptr< ss_expression > & x)
00325 {
00326 ss_ifuncall::fun_ptr = x;
00327 }
00328
00329 void ss_ifuncall::accept_ss_expression_visitor( ptr< ss_expression_visitor > v )
00330 {
00331 return v->visit_ss_ifuncall( this );
00332 }
00333
00334
00335
00336
00337
00338 ptr< ss_ifuncall > ss_ifuncall::create(ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00339 ptr< ss_type > a__ss_expression__type,
00340 ptr< ss_sp > a__ss_expression__psp,
00341 ptr< ss_sp > a__ss_expression__nsp,
00342 ptr< ::lestes::std::list< srp< ss_expression > > > a__ss_funcall_abstr__args,
00343 ptr< ss_expression > a__ss_ifuncall__fun_ptr)
00344 {
00345 return ptr< ss_ifuncall > ( new ss_ifuncall(a__ss_base_with_location__location,
00346 a__ss_expression__type,
00347 a__ss_expression__psp,
00348 a__ss_expression__nsp,
00349 a__ss_funcall_abstr__args,
00350 a__ss_ifuncall__fun_ptr) );
00351 }
00352
00353
00354
00355
00356
00357 ss_ifuncall::ss_ifuncall (ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00358 ptr< ss_type > a__ss_expression__type,
00359 ptr< ss_sp > a__ss_expression__psp,
00360 ptr< ss_sp > a__ss_expression__nsp,
00361 ptr< ::lestes::std::list< srp< ss_expression > > > a__ss_funcall_abstr__args,
00362 ptr< ss_expression > a__ss_ifuncall__fun_ptr)
00363 : ss_funcall_abstr(a__ss_base_with_location__location,
00364 a__ss_expression__type,
00365 a__ss_expression__psp,
00366 a__ss_expression__nsp,
00367 a__ss_funcall_abstr__args), fun_ptr(checked(a__ss_ifuncall__fun_ptr))
00368 {}
00369
00370 ptr< object::reflection_list > ss_ifuncall::reflection_get() const
00371 {
00372 if (!reflection) {
00373 typedef class_reflection::field_metadata md;
00374 typedef class_reflection::field_metadata_list mdlist;
00375 ptr<mdlist> mdl = mdlist::create();
00376 mdl->push_back( md::create( "fun_ptr", "ss_expression" ) );
00377 reflection = reflection_list::create( ss_funcall_abstr::reflection_get() );
00378 reflection->push_back( class_reflection::create( "ss_ifuncall", mdl ) );
00379 }
00380 return reflection;
00381 }
00382
00383 ptr< object::field_list_list > ss_ifuncall::field_values_get() const
00384 {
00385 ptr < field_list_list > result = ss_funcall_abstr::field_values_get();
00386 result->push_back( value_list::create() );
00387 result->back()->push_back( this->fun_ptr );
00388 return result;
00389 }
00390
00391
00392
00393
00394
00395
00396 void ss_ifuncall::gc_mark()
00397 {
00398 ss_funcall_abstr::gc_mark();
00399 }
00400
00401
00402
00403
00404
00405
00406
00407
00408
00409 ptr< ss_function_declaration > ss_mfuncall::function_get() const
00410 {
00411 return function;
00412 }
00413
00414
00415
00416
00417
00418 void ss_mfuncall::function_set(const ptr< ss_function_declaration > & x)
00419 {
00420 ss_mfuncall::function = x;
00421 }
00422
00423
00424
00425
00426
00427 ptr< ss_expression > ss_mfuncall::object_get() const
00428 {
00429 return object;
00430 }
00431
00432
00433
00434
00435
00436 void ss_mfuncall::object_set(const ptr< ss_expression > & x)
00437 {
00438 ss_mfuncall::object = x;
00439 }
00440
00441 void ss_mfuncall::accept_ss_expression_visitor( ptr< ss_expression_visitor > v )
00442 {
00443 return v->visit_ss_mfuncall( this );
00444 }
00445
00446
00447
00448
00449
00450 ptr< ss_mfuncall > ss_mfuncall::create(ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00451 ptr< ss_type > a__ss_expression__type,
00452 ptr< ss_sp > a__ss_expression__psp,
00453 ptr< ss_sp > a__ss_expression__nsp,
00454 ptr< ::lestes::std::list< srp< ss_expression > > > a__ss_funcall_abstr__args,
00455 ptr< ss_function_declaration > a__ss_mfuncall__function,
00456 ptr< ss_expression > a__ss_mfuncall__object)
00457 {
00458 return ptr< ss_mfuncall > ( new ss_mfuncall(a__ss_base_with_location__location,
00459 a__ss_expression__type,
00460 a__ss_expression__psp,
00461 a__ss_expression__nsp,
00462 a__ss_funcall_abstr__args,
00463 a__ss_mfuncall__function,
00464 a__ss_mfuncall__object) );
00465 }
00466
00467
00468
00469
00470
00471 ss_mfuncall::ss_mfuncall (ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00472 ptr< ss_type > a__ss_expression__type,
00473 ptr< ss_sp > a__ss_expression__psp,
00474 ptr< ss_sp > a__ss_expression__nsp,
00475 ptr< ::lestes::std::list< srp< ss_expression > > > a__ss_funcall_abstr__args,
00476 ptr< ss_function_declaration > a__ss_mfuncall__function,
00477 ptr< ss_expression > a__ss_mfuncall__object)
00478 : ss_funcall_abstr(a__ss_base_with_location__location,
00479 a__ss_expression__type,
00480 a__ss_expression__psp,
00481 a__ss_expression__nsp,
00482 a__ss_funcall_abstr__args), function(checked(a__ss_mfuncall__function)), object(checked(a__ss_mfuncall__object))
00483 {}
00484
00485 ptr< object::reflection_list > ss_mfuncall::reflection_get() const
00486 {
00487 if (!reflection) {
00488 typedef class_reflection::field_metadata md;
00489 typedef class_reflection::field_metadata_list mdlist;
00490 ptr<mdlist> mdl = mdlist::create();
00491 mdl->push_back( md::create( "function", "ss_function_declaration" ) );
00492 mdl->push_back( md::create( "object", "ss_expression" ) );
00493 reflection = reflection_list::create( ss_funcall_abstr::reflection_get() );
00494 reflection->push_back( class_reflection::create( "ss_mfuncall", mdl ) );
00495 }
00496 return reflection;
00497 }
00498
00499 ptr< object::field_list_list > ss_mfuncall::field_values_get() const
00500 {
00501 ptr < field_list_list > result = ss_funcall_abstr::field_values_get();
00502 result->push_back( value_list::create() );
00503 result->back()->push_back( this->function );
00504 result->push_back( value_list::create() );
00505 result->back()->push_back( this->object );
00506 return result;
00507 }
00508
00509
00510
00511
00512
00513
00514 void ss_mfuncall::gc_mark()
00515 {
00516 ss_funcall_abstr::gc_mark();
00517 }
00518
00519
00520
00521
00522
00523
00524
00525
00526
00527 ptr< ss_function_declaration > ss_vfuncall::function_get() const
00528 {
00529 return function;
00530 }
00531
00532
00533
00534
00535
00536 void ss_vfuncall::function_set(const ptr< ss_function_declaration > & x)
00537 {
00538 ss_vfuncall::function = x;
00539 }
00540
00541
00542
00543
00544
00545 ptr< ss_expression > ss_vfuncall::object_ptr_get() const
00546 {
00547 return object_ptr;
00548 }
00549
00550
00551
00552
00553
00554 void ss_vfuncall::object_ptr_set(const ptr< ss_expression > & x)
00555 {
00556 ss_vfuncall::object_ptr = x;
00557 }
00558
00559 void ss_vfuncall::accept_ss_expression_visitor( ptr< ss_expression_visitor > v )
00560 {
00561 return v->visit_ss_vfuncall( this );
00562 }
00563
00564
00565
00566
00567
00568 ptr< ss_vfuncall > ss_vfuncall::create(ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00569 ptr< ss_type > a__ss_expression__type,
00570 ptr< ss_sp > a__ss_expression__psp,
00571 ptr< ss_sp > a__ss_expression__nsp,
00572 ptr< ::lestes::std::list< srp< ss_expression > > > a__ss_funcall_abstr__args,
00573 ptr< ss_function_declaration > a__ss_vfuncall__function,
00574 ptr< ss_expression > a__ss_vfuncall__object_ptr)
00575 {
00576 return ptr< ss_vfuncall > ( new ss_vfuncall(a__ss_base_with_location__location,
00577 a__ss_expression__type,
00578 a__ss_expression__psp,
00579 a__ss_expression__nsp,
00580 a__ss_funcall_abstr__args,
00581 a__ss_vfuncall__function,
00582 a__ss_vfuncall__object_ptr) );
00583 }
00584
00585
00586
00587
00588
00589 ss_vfuncall::ss_vfuncall (ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00590 ptr< ss_type > a__ss_expression__type,
00591 ptr< ss_sp > a__ss_expression__psp,
00592 ptr< ss_sp > a__ss_expression__nsp,
00593 ptr< ::lestes::std::list< srp< ss_expression > > > a__ss_funcall_abstr__args,
00594 ptr< ss_function_declaration > a__ss_vfuncall__function,
00595 ptr< ss_expression > a__ss_vfuncall__object_ptr)
00596 : ss_funcall_abstr(a__ss_base_with_location__location,
00597 a__ss_expression__type,
00598 a__ss_expression__psp,
00599 a__ss_expression__nsp,
00600 a__ss_funcall_abstr__args), function(checked(a__ss_vfuncall__function)), object_ptr(checked(a__ss_vfuncall__object_ptr))
00601 {}
00602
00603 ptr< object::reflection_list > ss_vfuncall::reflection_get() const
00604 {
00605 if (!reflection) {
00606 typedef class_reflection::field_metadata md;
00607 typedef class_reflection::field_metadata_list mdlist;
00608 ptr<mdlist> mdl = mdlist::create();
00609 mdl->push_back( md::create( "function", "ss_function_declaration" ) );
00610 mdl->push_back( md::create( "object_ptr", "ss_expression" ) );
00611 reflection = reflection_list::create( ss_funcall_abstr::reflection_get() );
00612 reflection->push_back( class_reflection::create( "ss_vfuncall", mdl ) );
00613 }
00614 return reflection;
00615 }
00616
00617 ptr< object::field_list_list > ss_vfuncall::field_values_get() const
00618 {
00619 ptr < field_list_list > result = ss_funcall_abstr::field_values_get();
00620 result->push_back( value_list::create() );
00621 result->back()->push_back( this->function );
00622 result->push_back( value_list::create() );
00623 result->back()->push_back( this->object_ptr );
00624 return result;
00625 }
00626
00627
00628
00629
00630
00631
00632 void ss_vfuncall::gc_mark()
00633 {
00634 ss_funcall_abstr::gc_mark();
00635 }
00636
00637
00638
00639
00640
00641 ptr<object::reflection_list> ss_funcall_abstr::reflection = reflection;
00642 ptr<object::reflection_list> ss_pfuncall::reflection = reflection;
00643 ptr<object::reflection_list> ss_funcall::reflection = reflection;
00644 ptr<object::reflection_list> ss_ifuncall::reflection = reflection;
00645 ptr<object::reflection_list> ss_mfuncall::reflection = reflection;
00646 ptr<object::reflection_list> ss_vfuncall::reflection = reflection;
00647
00648 end_package(sem);
00649 end_package(cplus);
00650 end_package(lang);
00651 end_package(lestes);
00652