00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef lestes__lang__cplus__sem__ss_statement_g_hh__included
00013 #define lestes__lang__cplus__sem__ss_statement_g_hh__included
00014
00015 #include <lestes/common.hh>
00016 #include <lestes/intercode/intercode.g.hh>
00017 #include <lestes/lang/cplus/sem/ss_expression.g.hh>
00018 #include <lestes/lang/cplus/sem/ss_statement.hh>
00019 #include <lestes/lang/cplus/sem/ss_misc.g.hh>
00020
00021 #include <lestes/std/objectize_macros.hh>
00022 package(lestes);
00023 package(lang);
00024 package(cplus);
00025 package(sem);
00026
00027
00028 class ss_sp;
00029 class ss_decl_seq;
00030 class ss_declaration;
00031 class ss_expression;
00032 class ss_iter_stmt;
00033 class ss_label;
00034 class ss_case_label;
00035 class ss_default_label;
00036 class ss_breakable_stmt_label;
00037 class ss_statement;
00038 class ss_statement_visitor;
00039 class ss_compound_stmt;
00040 class ss_decl_stmt;
00041 class ss_try;
00042 class ss_break;
00043 class ss_return;
00044 class ss_goto;
00045 class ss_expr_stmt;
00046 class ss_continue;
00047 class ss_if_stmt;
00048 class ss_catch;
00049 class ss_breakable_stmt;
00050 class ss_switch_stmt;
00051 class ss_iteration_stmt;
00052 class ss_do;
00053 class ss_while;
00054 class ss_for;
00055
00056
00057
00058 class ss_statement : public ::lestes::intercode::ss_base_with_location {
00059 public:
00060
00061 ptr< ::lestes::std::list< srp< ss_label > > > labels_get() const;
00062
00063
00064 ptr< ss_compound_stmt > parent_get() const;
00065
00066
00067 ptr< ss_sp > psp_get() const;
00068
00069
00070 void psp_set(const ptr< ss_sp > &);
00071
00072
00073 ptr< ss_sp > nsp_get() const;
00074
00075
00076 void nsp_set(const ptr< ss_sp > &);
00077
00078
00079 ptr< ::lestes::std::list< srp< ss_sp > > > sequence_points_get() const;
00080
00081
00082 void parent_set_once_hack(ptr< ss_compound_stmt > );
00083
00084 virtual void accept_ss_statement_visitor( ptr< ss_statement_visitor > v ) abstract;
00085
00086
00087
00088 virtual ptr<reflection_list> reflection_get() const;
00089
00090 virtual ptr<field_list_list> field_values_get() const;
00091
00092 protected:
00093
00094 ss_statement (
00095 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00096 ptr< ::lestes::std::list< srp< ss_label > > > a__ss_statement__labels,
00097 ptr< ss_compound_stmt > a__ss_statement__parent,
00098 ptr< ss_sp > a__ss_statement__psp,
00099 ptr< ss_sp > a__ss_statement__nsp,
00100 ptr< ::lestes::std::list< srp< ss_sp > > > a__ss_statement__sequence_points);
00101
00102
00103 virtual void gc_mark();
00104
00105 private:
00106
00107 srp< ::lestes::std::list< srp< ss_label > > > labels;
00108 srp< ss_compound_stmt > parent;
00109 srp< ss_sp > psp;
00110 srp< ss_sp > nsp;
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120 srp< ::lestes::std::list< srp< ss_sp > > > sequence_points;
00121 static bool parent_set_ward;
00122 static ptr<reflection_list> reflection;
00123
00124 };
00125
00126
00127
00128 class ss_compound_stmt : public ss_statement {
00129 public:
00130 enum behavior_type {
00131 NORMAL,
00132 NO_CREATE,
00133 NO_LEAVE
00134 };
00135
00136
00137 ptr< ss_decl_seq > decl_seq_get() const;
00138
00139
00140 ptr< ::lestes::std::list< srp< ss_statement > > > statements_get() const;
00141
00142
00143 ptr< ss_sp > destructor_sp_get() const;
00144
00145
00146 void destructor_sp_set(const ptr< ss_sp > &);
00147
00148
00149 behavior_type behavior_get() const;
00150
00151
00152 void behavior_set(behavior_type);
00153
00154
00155 static ptr< ss_compound_stmt > root_instance();
00156
00157 virtual void accept_ss_statement_visitor( ptr< ss_statement_visitor > v );
00158
00159
00160 static ptr< ss_compound_stmt > create (
00161 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00162 ptr< ::lestes::std::list< srp< ss_label > > > a__ss_statement__labels,
00163 ptr< ss_compound_stmt > a__ss_statement__parent,
00164 ptr< ss_sp > a__ss_statement__psp,
00165 ptr< ss_sp > a__ss_statement__nsp,
00166 ptr< ::lestes::std::list< srp< ss_sp > > > a__ss_statement__sequence_points,
00167 ptr< ss_decl_seq > a__ss_compound_stmt__decl_seq,
00168 ptr< ::lestes::std::list< srp< ss_statement > > > a__ss_compound_stmt__statements,
00169 ptr< ss_sp > a__ss_compound_stmt__destructor_sp,
00170 behavior_type a__ss_compound_stmt__behavior);
00171
00172
00173 static ptr< ss_compound_stmt > create (
00174 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00175 ptr< ::lestes::std::list< srp< ss_label > > > a__ss_statement__labels,
00176 ptr< ss_compound_stmt > a__ss_statement__parent,
00177 ptr< ss_sp > a__ss_statement__psp,
00178 ptr< ss_sp > a__ss_statement__nsp,
00179 ptr< ::lestes::std::list< srp< ss_sp > > > a__ss_statement__sequence_points,
00180 ptr< ss_decl_seq > a__ss_compound_stmt__decl_seq,
00181 ptr< ::lestes::std::list< srp< ss_statement > > > a__ss_compound_stmt__statements,
00182 ptr< ss_sp > a__ss_compound_stmt__destructor_sp);
00183
00184
00185
00186
00187 virtual ptr<reflection_list> reflection_get() const;
00188
00189 virtual ptr<field_list_list> field_values_get() const;
00190
00191 protected:
00192
00193 ss_compound_stmt (
00194 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00195 ptr< ::lestes::std::list< srp< ss_label > > > a__ss_statement__labels,
00196 ptr< ss_compound_stmt > a__ss_statement__parent,
00197 ptr< ss_sp > a__ss_statement__psp,
00198 ptr< ss_sp > a__ss_statement__nsp,
00199 ptr< ::lestes::std::list< srp< ss_sp > > > a__ss_statement__sequence_points,
00200 ptr< ss_decl_seq > a__ss_compound_stmt__decl_seq,
00201 ptr< ::lestes::std::list< srp< ss_statement > > > a__ss_compound_stmt__statements,
00202 ptr< ss_sp > a__ss_compound_stmt__destructor_sp,
00203 behavior_type a__ss_compound_stmt__behavior);
00204
00205
00206 virtual void gc_mark();
00207
00208 private:
00209
00210 srp< ss_decl_seq > decl_seq;
00211
00212
00213
00214
00215
00216 srp< ::lestes::std::list< srp< ss_statement > > > statements;
00217
00218 srp< ss_sp > destructor_sp;
00219 static ptr< ss_compound_stmt > the_root_instance;
00220 behavior_type behavior;
00221 static ptr<reflection_list> reflection;
00222
00223 };
00224
00225
00226
00227 class ss_decl_stmt : public ss_statement {
00228 public:
00229 enum initializer_kind_enum {
00230 IK_DIRECT_INITIALIZATION,
00231 IK_DEFAULT_INITIALIZATION,
00232 IK_COPY_INITIALIZATION,
00233 IK_NOT_APPLY_INITIALIZATION
00234 };
00235
00236
00237 ptr< ss_declaration > decl_get() const;
00238
00239
00240 void decl_set(const ptr< ss_declaration > &);
00241
00242
00243 ptr< ::lestes::std::list< srp< ss_expression > > > args_get() const;
00244
00245
00246 void args_set(const ptr< ::lestes::std::list< srp< ss_expression > > > & );
00247
00248
00249 initializer_kind_enum initializer_kind_get() const;
00250
00251
00252 void initializer_kind_set(initializer_kind_enum);
00253
00254 virtual void accept_ss_statement_visitor( ptr< ss_statement_visitor > v );
00255
00256
00257 static ptr< ss_decl_stmt > create (
00258 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00259 ptr< ::lestes::std::list< srp< ss_label > > > a__ss_statement__labels,
00260 ptr< ss_compound_stmt > a__ss_statement__parent,
00261 ptr< ss_sp > a__ss_statement__psp,
00262 ptr< ss_sp > a__ss_statement__nsp,
00263 ptr< ::lestes::std::list< srp< ss_sp > > > a__ss_statement__sequence_points,
00264 ptr< ss_declaration > a__ss_decl_stmt__decl,
00265 ptr< ::lestes::std::list< srp< ss_expression > > > a__ss_decl_stmt__args,
00266 initializer_kind_enum a__ss_decl_stmt__initializer_kind);
00267
00268
00269
00270
00271 virtual ptr<reflection_list> reflection_get() const;
00272
00273 virtual ptr<field_list_list> field_values_get() const;
00274
00275 protected:
00276
00277 ss_decl_stmt (
00278 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00279 ptr< ::lestes::std::list< srp< ss_label > > > a__ss_statement__labels,
00280 ptr< ss_compound_stmt > a__ss_statement__parent,
00281 ptr< ss_sp > a__ss_statement__psp,
00282 ptr< ss_sp > a__ss_statement__nsp,
00283 ptr< ::lestes::std::list< srp< ss_sp > > > a__ss_statement__sequence_points,
00284 ptr< ss_declaration > a__ss_decl_stmt__decl,
00285 ptr< ::lestes::std::list< srp< ss_expression > > > a__ss_decl_stmt__args,
00286 initializer_kind_enum a__ss_decl_stmt__initializer_kind);
00287
00288
00289 virtual void gc_mark();
00290
00291 private:
00292 srp< ss_declaration > decl;
00293 srp< ::lestes::std::list< srp< ss_expression > > > args;
00294
00295
00296
00297
00298
00299
00300
00301
00302
00303
00304
00305
00306 initializer_kind_enum initializer_kind;
00307 static ptr<reflection_list> reflection;
00308
00309 };
00310
00311
00312
00313 class ss_try : public ss_statement {
00314 public:
00315
00316 ptr< ss_compound_stmt > block_get() const;
00317
00318
00319 void block_set(const ptr< ss_compound_stmt > &);
00320
00321
00322 ptr< ::lestes::std::list< srp< ss_catch > > > handlers_get() const;
00323
00324
00325 void handlers_set(const ptr< ::lestes::std::list< srp< ss_catch > > > & );
00326
00327 virtual void accept_ss_statement_visitor( ptr< ss_statement_visitor > v );
00328
00329
00330 static ptr< ss_try > create (
00331 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00332 ptr< ::lestes::std::list< srp< ss_label > > > a__ss_statement__labels,
00333 ptr< ss_compound_stmt > a__ss_statement__parent,
00334 ptr< ss_sp > a__ss_statement__psp,
00335 ptr< ss_sp > a__ss_statement__nsp,
00336 ptr< ::lestes::std::list< srp< ss_sp > > > a__ss_statement__sequence_points,
00337 ptr< ss_compound_stmt > a__ss_try__block,
00338 ptr< ::lestes::std::list< srp< ss_catch > > > a__ss_try__handlers);
00339
00340
00341
00342
00343 virtual ptr<reflection_list> reflection_get() const;
00344
00345 virtual ptr<field_list_list> field_values_get() const;
00346
00347 protected:
00348
00349 ss_try (
00350 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00351 ptr< ::lestes::std::list< srp< ss_label > > > a__ss_statement__labels,
00352 ptr< ss_compound_stmt > a__ss_statement__parent,
00353 ptr< ss_sp > a__ss_statement__psp,
00354 ptr< ss_sp > a__ss_statement__nsp,
00355 ptr< ::lestes::std::list< srp< ss_sp > > > a__ss_statement__sequence_points,
00356 ptr< ss_compound_stmt > a__ss_try__block,
00357 ptr< ::lestes::std::list< srp< ss_catch > > > a__ss_try__handlers);
00358
00359
00360 virtual void gc_mark();
00361
00362 private:
00363 srp< ss_compound_stmt > block;
00364 srp< ::lestes::std::list< srp< ss_catch > > > handlers;
00365 static ptr<reflection_list> reflection;
00366
00367 };
00368
00369
00370
00371 class ss_break : public ss_statement {
00372 public:
00373
00374 ptr< ss_breakable_stmt > from_get() const;
00375
00376
00377 void from_set(const ptr< ss_breakable_stmt > &);
00378
00379 virtual void accept_ss_statement_visitor( ptr< ss_statement_visitor > v );
00380
00381
00382 static ptr< ss_break > create (
00383 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00384 ptr< ::lestes::std::list< srp< ss_label > > > a__ss_statement__labels,
00385 ptr< ss_compound_stmt > a__ss_statement__parent,
00386 ptr< ss_sp > a__ss_statement__psp,
00387 ptr< ss_sp > a__ss_statement__nsp,
00388 ptr< ::lestes::std::list< srp< ss_sp > > > a__ss_statement__sequence_points,
00389 ptr< ss_breakable_stmt > a__ss_break__from);
00390
00391
00392
00393
00394 virtual ptr<reflection_list> reflection_get() const;
00395
00396 virtual ptr<field_list_list> field_values_get() const;
00397
00398 protected:
00399
00400 ss_break (
00401 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00402 ptr< ::lestes::std::list< srp< ss_label > > > a__ss_statement__labels,
00403 ptr< ss_compound_stmt > a__ss_statement__parent,
00404 ptr< ss_sp > a__ss_statement__psp,
00405 ptr< ss_sp > a__ss_statement__nsp,
00406 ptr< ::lestes::std::list< srp< ss_sp > > > a__ss_statement__sequence_points,
00407 ptr< ss_breakable_stmt > a__ss_break__from);
00408
00409
00410 virtual void gc_mark();
00411
00412 private:
00413 srp< ss_breakable_stmt > from;
00414 static ptr<reflection_list> reflection;
00415
00416 };
00417
00418
00419
00420 class ss_return : public ss_statement {
00421 public:
00422
00423 ptr< ss_expression > result_get() const;
00424
00425
00426 void result_set(const ptr< ss_expression > &);
00427
00428 virtual void accept_ss_statement_visitor( ptr< ss_statement_visitor > v );
00429
00430
00431 static ptr< ss_return > create (
00432 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00433 ptr< ::lestes::std::list< srp< ss_label > > > a__ss_statement__labels,
00434 ptr< ss_compound_stmt > a__ss_statement__parent,
00435 ptr< ss_sp > a__ss_statement__psp,
00436 ptr< ss_sp > a__ss_statement__nsp,
00437 ptr< ::lestes::std::list< srp< ss_sp > > > a__ss_statement__sequence_points,
00438 ptr< ss_expression > a__ss_return__result);
00439
00440
00441
00442
00443 virtual ptr<reflection_list> reflection_get() const;
00444
00445 virtual ptr<field_list_list> field_values_get() const;
00446
00447 protected:
00448
00449 ss_return (
00450 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00451 ptr< ::lestes::std::list< srp< ss_label > > > a__ss_statement__labels,
00452 ptr< ss_compound_stmt > a__ss_statement__parent,
00453 ptr< ss_sp > a__ss_statement__psp,
00454 ptr< ss_sp > a__ss_statement__nsp,
00455 ptr< ::lestes::std::list< srp< ss_sp > > > a__ss_statement__sequence_points,
00456 ptr< ss_expression > a__ss_return__result);
00457
00458
00459 virtual void gc_mark();
00460
00461 private:
00462
00463 srp< ss_expression > result;
00464 static ptr<reflection_list> reflection;
00465
00466 };
00467
00468
00469
00470 class ss_goto : public ss_statement {
00471 public:
00472
00473 ptr< ss_label > label_get() const;
00474
00475
00476 void label_set(const ptr< ss_label > &);
00477
00478 virtual void accept_ss_statement_visitor( ptr< ss_statement_visitor > v );
00479
00480
00481 static ptr< ss_goto > create (
00482 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00483 ptr< ::lestes::std::list< srp< ss_label > > > a__ss_statement__labels,
00484 ptr< ss_compound_stmt > a__ss_statement__parent,
00485 ptr< ss_sp > a__ss_statement__psp,
00486 ptr< ss_sp > a__ss_statement__nsp,
00487 ptr< ::lestes::std::list< srp< ss_sp > > > a__ss_statement__sequence_points,
00488 ptr< ss_label > a__ss_goto__label);
00489
00490
00491
00492
00493 virtual ptr<reflection_list> reflection_get() const;
00494
00495 virtual ptr<field_list_list> field_values_get() const;
00496
00497 protected:
00498
00499 ss_goto (
00500 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00501 ptr< ::lestes::std::list< srp< ss_label > > > a__ss_statement__labels,
00502 ptr< ss_compound_stmt > a__ss_statement__parent,
00503 ptr< ss_sp > a__ss_statement__psp,
00504 ptr< ss_sp > a__ss_statement__nsp,
00505 ptr< ::lestes::std::list< srp< ss_sp > > > a__ss_statement__sequence_points,
00506 ptr< ss_label > a__ss_goto__label);
00507
00508
00509 virtual void gc_mark();
00510
00511 private:
00512 srp< ss_label > label;
00513 static ptr<reflection_list> reflection;
00514
00515 };
00516
00517
00518
00519 class ss_expr_stmt : public ss_statement {
00520 public:
00521
00522 ptr< ss_expression > expression_get() const;
00523
00524
00525 void expression_set(const ptr< ss_expression > &);
00526
00527 virtual void accept_ss_statement_visitor( ptr< ss_statement_visitor > v );
00528
00529
00530 static ptr< ss_expr_stmt > create (
00531 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00532 ptr< ::lestes::std::list< srp< ss_label > > > a__ss_statement__labels,
00533 ptr< ss_compound_stmt > a__ss_statement__parent,
00534 ptr< ss_sp > a__ss_statement__psp,
00535 ptr< ss_sp > a__ss_statement__nsp,
00536 ptr< ::lestes::std::list< srp< ss_sp > > > a__ss_statement__sequence_points,
00537 ptr< ss_expression > a__ss_expr_stmt__expression);
00538
00539
00540
00541
00542 virtual ptr<reflection_list> reflection_get() const;
00543
00544 virtual ptr<field_list_list> field_values_get() const;
00545
00546 protected:
00547
00548 ss_expr_stmt (
00549 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00550 ptr< ::lestes::std::list< srp< ss_label > > > a__ss_statement__labels,
00551 ptr< ss_compound_stmt > a__ss_statement__parent,
00552 ptr< ss_sp > a__ss_statement__psp,
00553 ptr< ss_sp > a__ss_statement__nsp,
00554 ptr< ::lestes::std::list< srp< ss_sp > > > a__ss_statement__sequence_points,
00555 ptr< ss_expression > a__ss_expr_stmt__expression);
00556
00557
00558 virtual void gc_mark();
00559
00560 private:
00561 srp< ss_expression > expression;
00562 static ptr<reflection_list> reflection;
00563
00564 };
00565
00566
00567
00568 class ss_continue : public ss_statement {
00569 public:
00570
00571 ptr< ss_iteration_stmt > from_get() const;
00572
00573
00574 void from_set(const ptr< ss_iteration_stmt > &);
00575
00576 virtual void accept_ss_statement_visitor( ptr< ss_statement_visitor > v );
00577
00578
00579 static ptr< ss_continue > create (
00580 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00581 ptr< ::lestes::std::list< srp< ss_label > > > a__ss_statement__labels,
00582 ptr< ss_compound_stmt > a__ss_statement__parent,
00583 ptr< ss_sp > a__ss_statement__psp,
00584 ptr< ss_sp > a__ss_statement__nsp,
00585 ptr< ::lestes::std::list< srp< ss_sp > > > a__ss_statement__sequence_points,
00586 ptr< ss_iteration_stmt > a__ss_continue__from);
00587
00588
00589
00590
00591 virtual ptr<reflection_list> reflection_get() const;
00592
00593 virtual ptr<field_list_list> field_values_get() const;
00594
00595 protected:
00596
00597 ss_continue (
00598 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00599 ptr< ::lestes::std::list< srp< ss_label > > > a__ss_statement__labels,
00600 ptr< ss_compound_stmt > a__ss_statement__parent,
00601 ptr< ss_sp > a__ss_statement__psp,
00602 ptr< ss_sp > a__ss_statement__nsp,
00603 ptr< ::lestes::std::list< srp< ss_sp > > > a__ss_statement__sequence_points,
00604 ptr< ss_iteration_stmt > a__ss_continue__from);
00605
00606
00607 virtual void gc_mark();
00608
00609 private:
00610 srp< ss_iteration_stmt > from;
00611 static ptr<reflection_list> reflection;
00612
00613 };
00614
00615
00616
00617 class ss_if_stmt : public ss_statement {
00618 public:
00619
00620 ptr< ss_expression > condition_get() const;
00621
00622
00623 void condition_set(const ptr< ss_expression > &);
00624
00625
00626 ptr< ss_compound_stmt > cthen_get() const;
00627
00628
00629 void cthen_set(const ptr< ss_compound_stmt > &);
00630
00631
00632 ptr< ss_compound_stmt > celse_get() const;
00633
00634
00635 void celse_set(const ptr< ss_compound_stmt > &);
00636
00637 virtual void accept_ss_statement_visitor( ptr< ss_statement_visitor > v );
00638
00639
00640 static ptr< ss_if_stmt > create (
00641 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00642 ptr< ::lestes::std::list< srp< ss_label > > > a__ss_statement__labels,
00643 ptr< ss_compound_stmt > a__ss_statement__parent,
00644 ptr< ss_sp > a__ss_statement__psp,
00645 ptr< ss_sp > a__ss_statement__nsp,
00646 ptr< ::lestes::std::list< srp< ss_sp > > > a__ss_statement__sequence_points,
00647 ptr< ss_expression > a__ss_if_stmt__condition,
00648 ptr< ss_compound_stmt > a__ss_if_stmt__cthen,
00649 ptr< ss_compound_stmt > a__ss_if_stmt__celse);
00650
00651
00652
00653
00654 virtual ptr<reflection_list> reflection_get() const;
00655
00656 virtual ptr<field_list_list> field_values_get() const;
00657
00658 protected:
00659
00660 ss_if_stmt (
00661 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00662 ptr< ::lestes::std::list< srp< ss_label > > > a__ss_statement__labels,
00663 ptr< ss_compound_stmt > a__ss_statement__parent,
00664 ptr< ss_sp > a__ss_statement__psp,
00665 ptr< ss_sp > a__ss_statement__nsp,
00666 ptr< ::lestes::std::list< srp< ss_sp > > > a__ss_statement__sequence_points,
00667 ptr< ss_expression > a__ss_if_stmt__condition,
00668 ptr< ss_compound_stmt > a__ss_if_stmt__cthen,
00669 ptr< ss_compound_stmt > a__ss_if_stmt__celse);
00670
00671
00672 virtual void gc_mark();
00673
00674 private:
00675 srp< ss_expression > condition;
00676 srp< ss_compound_stmt > cthen;
00677 srp< ss_compound_stmt > celse;
00678 static ptr<reflection_list> reflection;
00679
00680 };
00681
00682
00683
00684 class ss_catch : public ss_statement {
00685 public:
00686
00687 ptr< ss_compound_stmt > body_get() const;
00688
00689
00690 void body_set(const ptr< ss_compound_stmt > &);
00691
00692
00693 ptr< ss_declaration > decl_get() const;
00694
00695
00696 void decl_set(const ptr< ss_declaration > &);
00697
00698 virtual void accept_ss_statement_visitor( ptr< ss_statement_visitor > v );
00699
00700
00701 static ptr< ss_catch > create (
00702 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00703 ptr< ::lestes::std::list< srp< ss_label > > > a__ss_statement__labels,
00704 ptr< ss_compound_stmt > a__ss_statement__parent,
00705 ptr< ss_sp > a__ss_statement__psp,
00706 ptr< ss_sp > a__ss_statement__nsp,
00707 ptr< ::lestes::std::list< srp< ss_sp > > > a__ss_statement__sequence_points,
00708 ptr< ss_compound_stmt > a__ss_catch__body,
00709 ptr< ss_declaration > a__ss_catch__decl);
00710
00711
00712
00713
00714 virtual ptr<reflection_list> reflection_get() const;
00715
00716 virtual ptr<field_list_list> field_values_get() const;
00717
00718 protected:
00719
00720 ss_catch (
00721 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00722 ptr< ::lestes::std::list< srp< ss_label > > > a__ss_statement__labels,
00723 ptr< ss_compound_stmt > a__ss_statement__parent,
00724 ptr< ss_sp > a__ss_statement__psp,
00725 ptr< ss_sp > a__ss_statement__nsp,
00726 ptr< ::lestes::std::list< srp< ss_sp > > > a__ss_statement__sequence_points,
00727 ptr< ss_compound_stmt > a__ss_catch__body,
00728 ptr< ss_declaration > a__ss_catch__decl);
00729
00730
00731 virtual void gc_mark();
00732
00733 private:
00734 srp< ss_compound_stmt > body;
00735 srp< ss_declaration > decl;
00736 static ptr<reflection_list> reflection;
00737
00738 };
00739
00740
00741
00742 class ss_breakable_stmt : public ss_statement {
00743 public:
00744
00745 ptr< ss_compound_stmt > body_get() const;
00746
00747
00748 void body_set(const ptr< ss_compound_stmt > &);
00749
00750
00751 ptr< ss_expression > condition_get() const;
00752
00753
00754 void condition_set(const ptr< ss_expression > &);
00755
00756 virtual void accept_ss_statement_visitor( ptr< ss_statement_visitor > v ) abstract;
00757
00758
00759
00760 virtual ptr<reflection_list> reflection_get() const;
00761
00762 virtual ptr<field_list_list> field_values_get() const;
00763
00764 protected:
00765
00766 ss_breakable_stmt (
00767 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00768 ptr< ::lestes::std::list< srp< ss_label > > > a__ss_statement__labels,
00769 ptr< ss_compound_stmt > a__ss_statement__parent,
00770 ptr< ss_sp > a__ss_statement__psp,
00771 ptr< ss_sp > a__ss_statement__nsp,
00772 ptr< ::lestes::std::list< srp< ss_sp > > > a__ss_statement__sequence_points,
00773 ptr< ss_compound_stmt > a__ss_breakable_stmt__body,
00774 ptr< ss_expression > a__ss_breakable_stmt__condition);
00775
00776
00777 virtual void gc_mark();
00778
00779 private:
00780
00781
00782
00783
00784
00785
00786
00787 srp< ss_compound_stmt > body;
00788
00789
00790
00791
00792
00793
00794 srp< ss_expression > condition;
00795 static ptr<reflection_list> reflection;
00796
00797 };
00798
00799
00800
00801 class ss_switch_stmt : public ss_breakable_stmt {
00802 public:
00803
00804 ptr< ::lestes::std::list< srp< ss_case_label > > > case_labels_get() const;
00805
00806
00807 void case_labels_set(const ptr< ::lestes::std::list< srp< ss_case_label > > > & );
00808
00809
00810 ptr< ss_default_label > default_label_get() const;
00811
00812
00813 void default_label_set(const ptr< ss_default_label > &);
00814
00815 virtual void accept_ss_statement_visitor( ptr< ss_statement_visitor > v );
00816
00817
00818 static ptr< ss_switch_stmt > create (
00819 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00820 ptr< ::lestes::std::list< srp< ss_label > > > a__ss_statement__labels,
00821 ptr< ss_compound_stmt > a__ss_statement__parent,
00822 ptr< ss_sp > a__ss_statement__psp,
00823 ptr< ss_sp > a__ss_statement__nsp,
00824 ptr< ::lestes::std::list< srp< ss_sp > > > a__ss_statement__sequence_points,
00825 ptr< ss_compound_stmt > a__ss_breakable_stmt__body,
00826 ptr< ss_expression > a__ss_breakable_stmt__condition,
00827 ptr< ::lestes::std::list< srp< ss_case_label > > > a__ss_switch_stmt__case_labels,
00828 ptr< ss_default_label > a__ss_switch_stmt__default_label);
00829
00830
00831
00832
00833 virtual ptr<reflection_list> reflection_get() const;
00834
00835 virtual ptr<field_list_list> field_values_get() const;
00836
00837 protected:
00838
00839 ss_switch_stmt (
00840 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00841 ptr< ::lestes::std::list< srp< ss_label > > > a__ss_statement__labels,
00842 ptr< ss_compound_stmt > a__ss_statement__parent,
00843 ptr< ss_sp > a__ss_statement__psp,
00844 ptr< ss_sp > a__ss_statement__nsp,
00845 ptr< ::lestes::std::list< srp< ss_sp > > > a__ss_statement__sequence_points,
00846 ptr< ss_compound_stmt > a__ss_breakable_stmt__body,
00847 ptr< ss_expression > a__ss_breakable_stmt__condition,
00848 ptr< ::lestes::std::list< srp< ss_case_label > > > a__ss_switch_stmt__case_labels,
00849 ptr< ss_default_label > a__ss_switch_stmt__default_label);
00850
00851
00852 virtual void gc_mark();
00853
00854 private:
00855
00856 srp< ::lestes::std::list< srp< ss_case_label > > > case_labels;
00857
00858
00859
00860
00861
00862
00863
00864 srp< ss_default_label > default_label;
00865 static ptr<reflection_list> reflection;
00866
00867 };
00868
00869
00870
00871 class ss_iteration_stmt : public ss_breakable_stmt {
00872 public:
00873 virtual void accept_ss_statement_visitor( ptr< ss_statement_visitor > v ) abstract;
00874
00875
00876
00877 virtual ptr<reflection_list> reflection_get() const;
00878
00879 virtual ptr<field_list_list> field_values_get() const;
00880
00881 protected:
00882
00883 ss_iteration_stmt (
00884 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00885 ptr< ::lestes::std::list< srp< ss_label > > > a__ss_statement__labels,
00886 ptr< ss_compound_stmt > a__ss_statement__parent,
00887 ptr< ss_sp > a__ss_statement__psp,
00888 ptr< ss_sp > a__ss_statement__nsp,
00889 ptr< ::lestes::std::list< srp< ss_sp > > > a__ss_statement__sequence_points,
00890 ptr< ss_compound_stmt > a__ss_breakable_stmt__body,
00891 ptr< ss_expression > a__ss_breakable_stmt__condition);
00892
00893
00894 virtual void gc_mark();
00895
00896 private:
00897 static ptr<reflection_list> reflection;
00898
00899 };
00900
00901
00902
00903 class ss_do : public ss_iteration_stmt {
00904 public:
00905 virtual void accept_ss_statement_visitor( ptr< ss_statement_visitor > v );
00906
00907
00908 static ptr< ss_do > create (
00909 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00910 ptr< ::lestes::std::list< srp< ss_label > > > a__ss_statement__labels,
00911 ptr< ss_compound_stmt > a__ss_statement__parent,
00912 ptr< ss_sp > a__ss_statement__psp,
00913 ptr< ss_sp > a__ss_statement__nsp,
00914 ptr< ::lestes::std::list< srp< ss_sp > > > a__ss_statement__sequence_points,
00915 ptr< ss_compound_stmt > a__ss_breakable_stmt__body,
00916 ptr< ss_expression > a__ss_breakable_stmt__condition);
00917
00918
00919
00920
00921 virtual ptr<reflection_list> reflection_get() const;
00922
00923 virtual ptr<field_list_list> field_values_get() const;
00924
00925 protected:
00926
00927 ss_do (
00928 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00929 ptr< ::lestes::std::list< srp< ss_label > > > a__ss_statement__labels,
00930 ptr< ss_compound_stmt > a__ss_statement__parent,
00931 ptr< ss_sp > a__ss_statement__psp,
00932 ptr< ss_sp > a__ss_statement__nsp,
00933 ptr< ::lestes::std::list< srp< ss_sp > > > a__ss_statement__sequence_points,
00934 ptr< ss_compound_stmt > a__ss_breakable_stmt__body,
00935 ptr< ss_expression > a__ss_breakable_stmt__condition);
00936
00937
00938 virtual void gc_mark();
00939
00940 private:
00941 static ptr<reflection_list> reflection;
00942
00943 };
00944
00945
00946
00947 class ss_while : public ss_iteration_stmt {
00948 public:
00949 virtual void accept_ss_statement_visitor( ptr< ss_statement_visitor > v );
00950
00951
00952 static ptr< ss_while > create (
00953 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00954 ptr< ::lestes::std::list< srp< ss_label > > > a__ss_statement__labels,
00955 ptr< ss_compound_stmt > a__ss_statement__parent,
00956 ptr< ss_sp > a__ss_statement__psp,
00957 ptr< ss_sp > a__ss_statement__nsp,
00958 ptr< ::lestes::std::list< srp< ss_sp > > > a__ss_statement__sequence_points,
00959 ptr< ss_compound_stmt > a__ss_breakable_stmt__body,
00960 ptr< ss_expression > a__ss_breakable_stmt__condition);
00961
00962
00963
00964
00965 virtual ptr<reflection_list> reflection_get() const;
00966
00967 virtual ptr<field_list_list> field_values_get() const;
00968
00969 protected:
00970
00971 ss_while (
00972 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00973 ptr< ::lestes::std::list< srp< ss_label > > > a__ss_statement__labels,
00974 ptr< ss_compound_stmt > a__ss_statement__parent,
00975 ptr< ss_sp > a__ss_statement__psp,
00976 ptr< ss_sp > a__ss_statement__nsp,
00977 ptr< ::lestes::std::list< srp< ss_sp > > > a__ss_statement__sequence_points,
00978 ptr< ss_compound_stmt > a__ss_breakable_stmt__body,
00979 ptr< ss_expression > a__ss_breakable_stmt__condition);
00980
00981
00982 virtual void gc_mark();
00983
00984 private:
00985 static ptr<reflection_list> reflection;
00986
00987 };
00988
00989
00990
00991
00992
00993
00994
00995
00996
00997 class ss_for : public ss_iteration_stmt {
00998 public:
00999
01000 ptr< ss_expr_stmt > iteration_get() const;
01001
01002
01003 void iteration_set(const ptr< ss_expr_stmt > &);
01004
01005 virtual void accept_ss_statement_visitor( ptr< ss_statement_visitor > v );
01006
01007
01008 static ptr< ss_for > create (
01009 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
01010 ptr< ::lestes::std::list< srp< ss_label > > > a__ss_statement__labels,
01011 ptr< ss_compound_stmt > a__ss_statement__parent,
01012 ptr< ss_sp > a__ss_statement__psp,
01013 ptr< ss_sp > a__ss_statement__nsp,
01014 ptr< ::lestes::std::list< srp< ss_sp > > > a__ss_statement__sequence_points,
01015 ptr< ss_compound_stmt > a__ss_breakable_stmt__body,
01016 ptr< ss_expression > a__ss_breakable_stmt__condition,
01017 ptr< ss_expr_stmt > a__ss_for__iteration);
01018
01019
01020
01021
01022 virtual ptr<reflection_list> reflection_get() const;
01023
01024 virtual ptr<field_list_list> field_values_get() const;
01025
01026 protected:
01027
01028 ss_for (
01029 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
01030 ptr< ::lestes::std::list< srp< ss_label > > > a__ss_statement__labels,
01031 ptr< ss_compound_stmt > a__ss_statement__parent,
01032 ptr< ss_sp > a__ss_statement__psp,
01033 ptr< ss_sp > a__ss_statement__nsp,
01034 ptr< ::lestes::std::list< srp< ss_sp > > > a__ss_statement__sequence_points,
01035 ptr< ss_compound_stmt > a__ss_breakable_stmt__body,
01036 ptr< ss_expression > a__ss_breakable_stmt__condition,
01037 ptr< ss_expr_stmt > a__ss_for__iteration);
01038
01039
01040 virtual void gc_mark();
01041
01042 private:
01043 srp< ss_expr_stmt > iteration;
01044 static ptr<reflection_list> reflection;
01045
01046 };
01047
01048
01049 end_package(sem);
01050 end_package(cplus);
01051 end_package(lang);
01052 end_package(lestes);
01053
01054 package(lestes);
01055 package(std);
01056 specialize_objectize_for_enum( ::lestes::lang::cplus::sem::ss_compound_stmt::behavior_type );
01057 specialize_objectize_for_enum( ::lestes::lang::cplus::sem::ss_decl_stmt::initializer_kind_enum );
01058 end_package(std);
01059 end_package(lestes);
01060
01061 #endif // lestes__lang__cplus__sem__ss_statement_g_hh__included