00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef lestes__lang__cplus__sem__ss_misc_g_hh__included
00013 #define lestes__lang__cplus__sem__ss_misc_g_hh__included
00014
00015 #include <lestes/common.hh>
00016 #include <lestes/lang/cplus/sem/ss_enums.g.hh>
00017 #include <lestes/intercode/intercode.g.hh>
00018 #include <lestes/lang/cplus/sem/ss_misc.hh>
00019
00020 #include <lestes/std/objectize_macros.hh>
00021 package(lestes);
00022 package(backend_v2);
00023 package(intercode);
00024 class pi_sp;
00025 end_package(intercode);
00026 end_package(backend_v2);
00027 end_package(lestes);
00028
00029 package(lestes);
00030 package(lang);
00031 package(cplus);
00032 package(sem);
00033
00034
00035 class ss_decl_name;
00036 class ss_compound_stmt;
00037 class ss_expression;
00038 class ss_funcall_abstr;
00039 class ss_statement;
00040 class ss_type;
00041 class ss_enum;
00042 class ss_vol_get;
00043 class ss_class;
00044 class ss_breakable_stmt;
00045 class ss_declaration;
00046 class ss_namespace_definition;
00047 class ss_function_declaration;
00048 class ss_declaration_time;
00049 class ss_decl_seq;
00050 class ss_using_directive;
00051 class ss_label;
00052 class ss_breakable_stmt_label;
00053 class ss_case_label;
00054 class ss_default_label;
00055 class ss_continue_label;
00056 class ss_break_label;
00057 class ss_targetted_label;
00058 class ss_internal_label;
00059 class ss_id_label;
00060 class ss_se;
00061 class ss_sp;
00062 class ss_translation_unit;
00063 class ss_base_specifier;
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085 class ss_declaration_time : public ::lestes::std::object {
00086 public:
00087
00088 bool is_before(ptr< ss_declaration_time > other);
00089
00090
00091 static ptr< ss_declaration_time > infinity();
00092
00093
00094
00095 static ptr< ss_declaration_time > create (
00096 ulint a__ss_declaration_time__time);
00097
00098
00099
00100
00101 virtual ptr<reflection_list> reflection_get() const;
00102
00103 virtual ptr<field_list_list> field_values_get() const;
00104
00105 protected:
00106
00107 ss_declaration_time (
00108 ulint a__ss_declaration_time__time);
00109
00110
00111 virtual void gc_mark();
00112
00113 private:
00114
00115 ulint time;
00116 static ptr< ss_declaration_time > infinity_instance;
00117 static ptr<reflection_list> reflection;
00118
00119 };
00120
00121
00122
00123
00124
00125
00126 class ss_decl_seq : public ::lestes::intercode::ss_base_with_location {
00127 public:
00128
00129 ptr< ::lestes::std::list< srp< ss_declaration > > > contents_get() const;
00130
00131
00132 ptr< ss_decl_seq > parent_get() const;
00133
00134
00135 ptr< ss_compound_stmt > compound_stmt_get() const;
00136
00137
00138 void compound_stmt_set(const ptr< ss_compound_stmt > &);
00139
00140
00141 ptr< ::lestes::std::list< srp< ss_using_directive > > > using_directives_get() const;
00142
00143
00144 ptr< ss_declaration > declared_by_get() const;
00145
00146
00147 void declared_by_set(const ptr< ss_declaration > &);
00148
00149
00150 static ptr< ss_decl_seq > root_instance();
00151
00152
00153
00154 static ptr< ss_decl_seq > create (
00155 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00156 ptr< ::lestes::std::list< srp< ss_declaration > > > a__ss_decl_seq__contents,
00157 ptr< ss_decl_seq > a__ss_decl_seq__parent,
00158 ptr< ss_compound_stmt > a__ss_decl_seq__compound_stmt,
00159 ptr< ::lestes::std::list< srp< ss_using_directive > > > a__ss_decl_seq__using_directives,
00160 ptr< ss_declaration > a__ss_decl_seq__declared_by);
00161
00162
00163 static ptr< ss_decl_seq > create (
00164 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00165 ptr< ::lestes::std::list< srp< ss_declaration > > > a__ss_decl_seq__contents,
00166 ptr< ss_decl_seq > a__ss_decl_seq__parent,
00167 ptr< ss_compound_stmt > a__ss_decl_seq__compound_stmt,
00168 ptr< ss_declaration > a__ss_decl_seq__declared_by);
00169
00170
00171
00172
00173 virtual ptr<reflection_list> reflection_get() const;
00174
00175 virtual ptr<field_list_list> field_values_get() const;
00176
00177 protected:
00178
00179 ss_decl_seq (
00180 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00181 ptr< ::lestes::std::list< srp< ss_declaration > > > a__ss_decl_seq__contents,
00182 ptr< ss_decl_seq > a__ss_decl_seq__parent,
00183 ptr< ss_compound_stmt > a__ss_decl_seq__compound_stmt,
00184 ptr< ::lestes::std::list< srp< ss_using_directive > > > a__ss_decl_seq__using_directives,
00185 ptr< ss_declaration > a__ss_decl_seq__declared_by);
00186
00187
00188 virtual void gc_mark();
00189
00190 private:
00191
00192 srp< ::lestes::std::list< srp< ss_declaration > > > contents;
00193
00194 srp< ss_decl_seq > parent;
00195
00196
00197
00198
00199
00200
00201
00202 srp< ss_compound_stmt > compound_stmt;
00203
00204
00205
00206
00207
00208
00209
00210
00211 srp< ::lestes::std::list< srp< ss_using_directive > > > using_directives;
00212
00213
00214
00215
00216
00217
00218
00219 srp< ss_declaration > declared_by;
00220 static ptr< ss_decl_seq > the_root_instance;
00221 static bool parent_set_ward;
00222 static ptr<reflection_list> reflection;
00223
00224 };
00225
00226
00227
00228 class ss_using_directive : public ::lestes::intercode::ss_base_with_location {
00229 public:
00230
00231 ptr< ss_declaration_time > decl_time_get() const;
00232
00233
00234 void decl_time_set(const ptr< ss_declaration_time > &);
00235
00236
00237 ptr< ss_namespace_definition > nspace_get() const;
00238
00239
00240 void nspace_set(const ptr< ss_namespace_definition > &);
00241
00242
00243
00244 static ptr< ss_using_directive > create (
00245 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00246 ptr< ss_declaration_time > a__ss_using_directive__decl_time,
00247 ptr< ss_namespace_definition > a__ss_using_directive__nspace);
00248
00249
00250
00251
00252 virtual ptr<reflection_list> reflection_get() const;
00253
00254 virtual ptr<field_list_list> field_values_get() const;
00255
00256 protected:
00257
00258 ss_using_directive (
00259 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00260 ptr< ss_declaration_time > a__ss_using_directive__decl_time,
00261 ptr< ss_namespace_definition > a__ss_using_directive__nspace);
00262
00263
00264 virtual void gc_mark();
00265
00266 private:
00267
00268 srp< ss_declaration_time > decl_time;
00269
00270 srp< ss_namespace_definition > nspace;
00271 static ptr<reflection_list> reflection;
00272
00273 };
00274
00275
00276
00277 class ss_label : public ::lestes::intercode::ss_base_with_location {
00278 public:
00279
00280
00281
00282 virtual ptr<reflection_list> reflection_get() const;
00283
00284 virtual ptr<field_list_list> field_values_get() const;
00285
00286 protected:
00287
00288 ss_label (
00289 ptr< ::lestes::std::source_location > a__ss_base_with_location__location);
00290
00291
00292 virtual void gc_mark();
00293
00294 private:
00295 static ptr<reflection_list> reflection;
00296
00297 };
00298
00299
00300
00301 class ss_breakable_stmt_label : public ss_label {
00302 public:
00303
00304 ptr< ss_breakable_stmt > breakable_get() const;
00305
00306
00307 void breakable_set(const ptr< ss_breakable_stmt > &);
00308
00309
00310
00311
00312 virtual ptr<reflection_list> reflection_get() const;
00313
00314 virtual ptr<field_list_list> field_values_get() const;
00315
00316 protected:
00317
00318 ss_breakable_stmt_label (
00319 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00320 ptr< ss_breakable_stmt > a__ss_breakable_stmt_label__breakable);
00321
00322
00323 virtual void gc_mark();
00324
00325 private:
00326
00327 srp< ss_breakable_stmt > breakable;
00328 static ptr<reflection_list> reflection;
00329
00330 };
00331
00332
00333
00334 class ss_case_label : public ss_breakable_stmt_label {
00335 public:
00336
00337 ptr< ss_expression > value_get() const;
00338
00339
00340 void value_set(const ptr< ss_expression > &);
00341
00342
00343
00344 static ptr< ss_case_label > create (
00345 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00346 ptr< ss_breakable_stmt > a__ss_breakable_stmt_label__breakable,
00347 ptr< ss_expression > a__ss_case_label__value);
00348
00349
00350
00351
00352 virtual ptr<reflection_list> reflection_get() const;
00353
00354 virtual ptr<field_list_list> field_values_get() const;
00355
00356 protected:
00357
00358 ss_case_label (
00359 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00360 ptr< ss_breakable_stmt > a__ss_breakable_stmt_label__breakable,
00361 ptr< ss_expression > a__ss_case_label__value);
00362
00363
00364 virtual void gc_mark();
00365
00366 private:
00367 srp< ss_expression > value;
00368 static ptr<reflection_list> reflection;
00369
00370 };
00371
00372
00373
00374 class ss_default_label : public ss_breakable_stmt_label {
00375 public:
00376
00377
00378 static ptr< ss_default_label > create (
00379 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00380 ptr< ss_breakable_stmt > a__ss_breakable_stmt_label__breakable);
00381
00382
00383
00384
00385 virtual ptr<reflection_list> reflection_get() const;
00386
00387 virtual ptr<field_list_list> field_values_get() const;
00388
00389 protected:
00390
00391 ss_default_label (
00392 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00393 ptr< ss_breakable_stmt > a__ss_breakable_stmt_label__breakable);
00394
00395
00396 virtual void gc_mark();
00397
00398 private:
00399 static ptr<reflection_list> reflection;
00400
00401 };
00402
00403
00404
00405 class ss_continue_label : public ss_breakable_stmt_label {
00406 public:
00407
00408
00409 static ptr< ss_continue_label > create (
00410 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00411 ptr< ss_breakable_stmt > a__ss_breakable_stmt_label__breakable);
00412
00413
00414
00415
00416 virtual ptr<reflection_list> reflection_get() const;
00417
00418 virtual ptr<field_list_list> field_values_get() const;
00419
00420 protected:
00421
00422 ss_continue_label (
00423 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00424 ptr< ss_breakable_stmt > a__ss_breakable_stmt_label__breakable);
00425
00426
00427 virtual void gc_mark();
00428
00429 private:
00430 static ptr<reflection_list> reflection;
00431
00432 };
00433
00434
00435
00436 class ss_break_label : public ss_breakable_stmt_label {
00437 public:
00438
00439
00440 static ptr< ss_break_label > create (
00441 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00442 ptr< ss_breakable_stmt > a__ss_breakable_stmt_label__breakable);
00443
00444
00445
00446
00447 virtual ptr<reflection_list> reflection_get() const;
00448
00449 virtual ptr<field_list_list> field_values_get() const;
00450
00451 protected:
00452
00453 ss_break_label (
00454 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00455 ptr< ss_breakable_stmt > a__ss_breakable_stmt_label__breakable);
00456
00457
00458 virtual void gc_mark();
00459
00460 private:
00461 static ptr<reflection_list> reflection;
00462
00463 };
00464
00465
00466
00467 class ss_targetted_label : public ss_label {
00468 public:
00469
00470 ptr< ss_statement > statement_get() const;
00471
00472
00473 void statement_set(const ptr< ss_statement > &);
00474
00475
00476
00477 static ptr< ss_targetted_label > create (
00478 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00479 ptr< ss_statement > a__ss_targetted_label__statement);
00480
00481
00482
00483
00484 virtual ptr<reflection_list> reflection_get() const;
00485
00486 virtual ptr<field_list_list> field_values_get() const;
00487
00488 protected:
00489
00490 ss_targetted_label (
00491 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00492 ptr< ss_statement > a__ss_targetted_label__statement);
00493
00494
00495 virtual void gc_mark();
00496
00497 private:
00498 srp< ss_statement > statement;
00499 static ptr<reflection_list> reflection;
00500
00501 };
00502
00503
00504
00505 class ss_internal_label : public ss_label {
00506 public:
00507
00508
00509 static ptr< ss_internal_label > create (
00510 ptr< ::lestes::std::source_location > a__ss_base_with_location__location);
00511
00512
00513
00514
00515 virtual ptr<reflection_list> reflection_get() const;
00516
00517 virtual ptr<field_list_list> field_values_get() const;
00518
00519 protected:
00520
00521 ss_internal_label (
00522 ptr< ::lestes::std::source_location > a__ss_base_with_location__location);
00523
00524
00525 virtual void gc_mark();
00526
00527 private:
00528 static ptr<reflection_list> reflection;
00529
00530 };
00531
00532
00533
00534 class ss_id_label : public ss_label {
00535 public:
00536
00537 ucn_string name_get() const;
00538
00539
00540 void name_set(ucn_string);
00541
00542
00543 ptr< ss_function_declaration > function_get() const;
00544
00545
00546 void function_set(const ptr< ss_function_declaration > &);
00547
00548
00549
00550 static ptr< ss_id_label > create (
00551 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00552 ucn_string a__ss_id_label__name,
00553 ptr< ss_function_declaration > a__ss_id_label__function);
00554
00555
00556
00557
00558 virtual ptr<reflection_list> reflection_get() const;
00559
00560 virtual ptr<field_list_list> field_values_get() const;
00561
00562 protected:
00563
00564 ss_id_label (
00565 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00566 ucn_string a__ss_id_label__name,
00567 ptr< ss_function_declaration > a__ss_id_label__function);
00568
00569
00570 virtual void gc_mark();
00571
00572 private:
00573 ucn_string name;
00574
00575 srp< ss_function_declaration > function;
00576 static ptr<reflection_list> reflection;
00577
00578 };
00579
00580
00581
00582 class ss_se : public ::lestes::intercode::ss_base_with_location {
00583 public:
00584
00585 ptr< ss_expression > from_get() const;
00586
00587
00588 void from_set(const ptr< ss_expression > &);
00589
00590
00591 ptr< ss_sp > psp_get() const;
00592
00593
00594 void psp_set(const ptr< ss_sp > &);
00595
00596
00597 ptr< ss_sp > nsp_get() const;
00598
00599
00600 void nsp_set(const ptr< ss_sp > &);
00601
00602
00603
00604 static ptr< ss_se > create (
00605 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00606 ptr< ss_expression > a__ss_se__from,
00607 ptr< ss_sp > a__ss_se__psp,
00608 ptr< ss_sp > a__ss_se__nsp);
00609
00610
00611
00612
00613 virtual ptr<reflection_list> reflection_get() const;
00614
00615 virtual ptr<field_list_list> field_values_get() const;
00616
00617 protected:
00618
00619 ss_se (
00620 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00621 ptr< ss_expression > a__ss_se__from,
00622 ptr< ss_sp > a__ss_se__psp,
00623 ptr< ss_sp > a__ss_se__nsp);
00624
00625
00626 virtual void gc_mark();
00627
00628 private:
00629 srp< ss_expression > from;
00630 srp< ss_sp > psp;
00631 srp< ss_sp > nsp;
00632 static ptr<reflection_list> reflection;
00633
00634 };
00635
00636
00637
00638 class ss_sp : public ::lestes::intercode::ss_base_with_location {
00639 public:
00640
00641 ptr< ss_sp > psp_get() const;
00642
00643
00644 void psp_set(const ptr< ss_sp > &);
00645
00646
00647 ptr< ss_sp > nsp_get() const;
00648
00649
00650 void nsp_set(const ptr< ss_sp > &);
00651
00652
00653 ptr< ::lestes::std::list< srp< ss_se > > > pse_get() const;
00654
00655
00656 void pse_set(const ptr< ::lestes::std::list< srp< ss_se > > > & );
00657
00658
00659 ptr< ::lestes::std::list< srp< ss_se > > > nse_get() const;
00660
00661
00662 void nse_set(const ptr< ::lestes::std::list< srp< ss_se > > > & );
00663
00664
00665 ptr< ::lestes::backend_v2::intercode::pi_sp > pi_spe_get() const;
00666
00667
00668 void pi_spe_set(const ptr< ::lestes::backend_v2::intercode::pi_sp > &);
00669
00670
00671 ulint level_get() const;
00672
00673
00674 void level_set(ulint);
00675
00676
00677
00678 static ptr< ss_sp > create (
00679 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00680 ptr< ss_sp > a__ss_sp__psp,
00681 ptr< ss_sp > a__ss_sp__nsp,
00682 ptr< ::lestes::std::list< srp< ss_se > > > a__ss_sp__pse,
00683 ptr< ::lestes::std::list< srp< ss_se > > > a__ss_sp__nse,
00684 ptr< ::lestes::backend_v2::intercode::pi_sp > a__ss_sp__pi_spe,
00685 ulint a__ss_sp__level);
00686
00687
00688 static ptr< ss_sp > create (
00689 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00690 ptr< ss_sp > a__ss_sp__psp,
00691 ptr< ss_sp > a__ss_sp__nsp,
00692 ulint a__ss_sp__level);
00693
00694
00695
00696
00697 virtual ptr<reflection_list> reflection_get() const;
00698
00699 virtual ptr<field_list_list> field_values_get() const;
00700
00701 protected:
00702
00703 ss_sp (
00704 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00705 ptr< ss_sp > a__ss_sp__psp,
00706 ptr< ss_sp > a__ss_sp__nsp,
00707 ptr< ::lestes::std::list< srp< ss_se > > > a__ss_sp__pse,
00708 ptr< ::lestes::std::list< srp< ss_se > > > a__ss_sp__nse,
00709 ptr< ::lestes::backend_v2::intercode::pi_sp > a__ss_sp__pi_spe,
00710 ulint a__ss_sp__level);
00711
00712
00713 virtual void gc_mark();
00714
00715 private:
00716 srp< ss_sp > psp;
00717 srp< ss_sp > nsp;
00718
00719 srp< ::lestes::std::list< srp< ss_se > > > pse;
00720
00721 srp< ::lestes::std::list< srp< ss_se > > > nse;
00722
00723
00724
00725
00726
00727
00728
00729
00730
00731 srp< ::lestes::backend_v2::intercode::pi_sp > pi_spe;
00732
00733
00734
00735
00736
00737
00738
00739
00740
00741
00742
00743 ulint level;
00744 static ptr<reflection_list> reflection;
00745
00746 };
00747
00748
00749
00750
00751
00752
00753 class ss_translation_unit : public ::lestes::intercode::ss_base {
00754 public:
00755
00756 ptr< ss_decl_seq > global_scope_get() const;
00757
00758
00759
00760 static ptr< ss_translation_unit > create (
00761 ptr< ss_decl_seq > a__ss_translation_unit__global_scope);
00762
00763
00764
00765
00766 virtual ptr<reflection_list> reflection_get() const;
00767
00768 virtual ptr<field_list_list> field_values_get() const;
00769
00770 protected:
00771
00772 ss_translation_unit (
00773 ptr< ss_decl_seq > a__ss_translation_unit__global_scope);
00774
00775
00776 virtual void gc_mark();
00777
00778 private:
00779 srp< ss_decl_seq > global_scope;
00780 static ptr<reflection_list> reflection;
00781
00782 };
00783
00784
00785
00786 class ss_base_specifier : public ::lestes::intercode::ss_base_with_location {
00787 public:
00788
00789 ss_access_specifier::type specifier_get() const;
00790
00791
00792 void specifier_set(ss_access_specifier::type);
00793
00794
00795 ptr< ss_class > base_class_get() const;
00796
00797
00798 void base_class_set(const ptr< ss_class > &);
00799
00800
00801 bool virtual_base_get() const;
00802
00803
00804 void virtual_base_set(bool);
00805
00806
00807
00808 static ptr< ss_base_specifier > create (
00809 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00810 ss_access_specifier::type a__ss_base_specifier__specifier,
00811 ptr< ss_class > a__ss_base_specifier__base_class,
00812 bool a__ss_base_specifier__virtual_base);
00813
00814
00815 static ptr< ss_base_specifier > create (
00816 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00817 ss_access_specifier::type a__ss_base_specifier__specifier,
00818 ptr< ss_class > a__ss_base_specifier__base_class);
00819
00820
00821
00822
00823 virtual ptr<reflection_list> reflection_get() const;
00824
00825 virtual ptr<field_list_list> field_values_get() const;
00826
00827 protected:
00828
00829 ss_base_specifier (
00830 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00831 ss_access_specifier::type a__ss_base_specifier__specifier,
00832 ptr< ss_class > a__ss_base_specifier__base_class,
00833 bool a__ss_base_specifier__virtual_base);
00834
00835
00836 virtual void gc_mark();
00837
00838 private:
00839 ss_access_specifier::type specifier;
00840 srp< ss_class > base_class;
00841
00842 bool virtual_base;
00843 static ptr<reflection_list> reflection;
00844
00845 };
00846
00847
00848 end_package(sem);
00849 end_package(cplus);
00850 end_package(lang);
00851 end_package(lestes);
00852
00853 #endif // lestes__lang__cplus__sem__ss_misc_g_hh__included