00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef lestes__lang__cplus__sem__ss_type_g_hh__included
00013 #define lestes__lang__cplus__sem__ss_type_g_hh__included
00014
00015 #include <lestes/common.hh>
00016 #include <lestes/std/pair_comparator.hh>
00017 #include <lestes/std/map.hh>
00018 #include <lestes/std/list.hh>
00019 #include <lestes/std/set.hh>
00020 #include <lestes/intercode/intercode.g.hh>
00021 #include <lestes/lang/cplus/sem/or_ics.hh>
00022
00023 #include <lestes/std/objectize_macros.hh>
00024 package(lestes);
00025 package(md);
00026 package(types);
00027 class tm_data_type_base;
00028 end_package(types);
00029 end_package(md);
00030 end_package(lestes);
00031
00032 package(lestes);
00033 package(lang);
00034 package(cplus);
00035 package(sem);
00036
00037
00038
00039 class ss_function_comparator;
00040
00041
00042
00043
00044 class ss_declaration;
00045 class ss_decl_seq;
00046 class ss_base_specifier;
00047 class ss_declaration_time;
00048 class as_name;
00049 class or_ics_functional;
00050 class ss_type;
00051 class or_ics_base;
00052 class or_ics_base_cv;
00053 class ss_type2tm_type_gen_base;
00054 class ss_type_visitor;
00055 class ss_builtin_type;
00056 class ss_const;
00057 class ss_volatile;
00058 class ss_const_volatile;
00059 class ss_referential;
00060 class ss_reference;
00061 class ss_pseudoreference;
00062 class ss_pointer;
00063 class ss_enum;
00064 class ss_array;
00065 class ss_member_pointer;
00066 class ss_function;
00067 class ss_member_function;
00068 class ss_struct_base;
00069 class ss_class;
00070 class ss_union;
00071 class ss_typename_type;
00072
00073
00074
00075 class ss_type : public ::lestes::intercode::ss_base {
00076 public:
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087 virtual bool is_void();
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099 virtual bool is_volatile();
00100
00101 virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v ) abstract;
00102 virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v ) abstract;
00103 virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v ) abstract;
00104 virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v ) abstract;
00105
00106
00107
00108 virtual ptr<reflection_list> reflection_get() const;
00109
00110 virtual ptr<field_list_list> field_values_get() const;
00111
00112 protected:
00113
00114 ss_type (
00115 );
00116
00117
00118 virtual void gc_mark();
00119
00120 private:
00121 static ptr<reflection_list> reflection;
00122
00123 };
00124
00125
00126
00127 class ss_builtin_type : public ss_type {
00128 public:
00129 virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v ) abstract;
00130 virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v ) abstract;
00131 virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v ) abstract;
00132 virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v ) abstract;
00133
00134
00135
00136 virtual ptr<reflection_list> reflection_get() const;
00137
00138 virtual ptr<field_list_list> field_values_get() const;
00139
00140 protected:
00141
00142 ss_builtin_type (
00143 );
00144
00145
00146 virtual void gc_mark();
00147
00148 private:
00149 static ptr<reflection_list> reflection;
00150
00151 };
00152
00153
00154
00155
00156
00157
00158 class ss_const : public ss_type {
00159 public:
00160
00161 ptr< ss_type > what_get() const;
00162
00163
00164 void what_set(const ptr< ss_type > &);
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176 virtual bool is_void();
00177
00178
00179 static ptr< ss_type > instance(ptr< ss_type > type);
00180
00181 virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v );
00182 virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v );
00183 virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v );
00184 virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v );
00185
00186
00187 static ptr< ss_const > create (
00188 ptr< ss_type > a__ss_const__what);
00189
00190
00191
00192
00193 virtual ptr<reflection_list> reflection_get() const;
00194
00195 virtual ptr<field_list_list> field_values_get() const;
00196
00197 protected:
00198
00199 ss_const (
00200 ptr< ss_type > a__ss_const__what);
00201
00202
00203 virtual void gc_mark();
00204
00205 private:
00206 srp< ss_type > what;
00207
00208 static ptr< ::lestes::std::map< srp< ss_type >, srp< ss_type > > > the_instances;
00209 static ptr<reflection_list> reflection;
00210
00211 };
00212
00213
00214
00215
00216
00217
00218 class ss_volatile : public ss_type {
00219 public:
00220
00221 ptr< ss_type > what_get() const;
00222
00223
00224 void what_set(const ptr< ss_type > &);
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236 virtual bool is_void();
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247 virtual bool is_volatile();
00248
00249
00250 static ptr< ss_type > instance(ptr< ss_type > type);
00251
00252 virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v );
00253 virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v );
00254 virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v );
00255 virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v );
00256
00257
00258 static ptr< ss_volatile > create (
00259 ptr< ss_type > a__ss_volatile__what);
00260
00261
00262
00263
00264 virtual ptr<reflection_list> reflection_get() const;
00265
00266 virtual ptr<field_list_list> field_values_get() const;
00267
00268 protected:
00269
00270 ss_volatile (
00271 ptr< ss_type > a__ss_volatile__what);
00272
00273
00274 virtual void gc_mark();
00275
00276 private:
00277 srp< ss_type > what;
00278
00279 static ptr< ::lestes::std::map< srp< ss_type >, srp< ss_type > > > the_instances;
00280 static ptr<reflection_list> reflection;
00281
00282 };
00283
00284
00285
00286
00287
00288
00289 class ss_const_volatile : public ss_type {
00290 public:
00291
00292 ptr< ss_type > what_get() const;
00293
00294
00295 void what_set(const ptr< ss_type > &);
00296
00297
00298
00299
00300
00301
00302
00303
00304
00305
00306
00307 virtual bool is_void();
00308
00309
00310
00311
00312
00313
00314
00315
00316
00317
00318 virtual bool is_volatile();
00319
00320 virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v );
00321 virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v );
00322 virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v );
00323 virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v );
00324
00325
00326 static ptr< ss_const_volatile > create (
00327 ptr< ss_type > a__ss_const_volatile__what);
00328
00329
00330
00331
00332 virtual ptr<reflection_list> reflection_get() const;
00333
00334 virtual ptr<field_list_list> field_values_get() const;
00335
00336 protected:
00337
00338 ss_const_volatile (
00339 ptr< ss_type > a__ss_const_volatile__what);
00340
00341
00342 virtual void gc_mark();
00343
00344 private:
00345 srp< ss_type > what;
00346 static ptr<reflection_list> reflection;
00347
00348 };
00349
00350
00351
00352
00353
00354
00355 class ss_referential : public ss_type {
00356 public:
00357
00358 ptr< ss_type > what_get() const;
00359
00360
00361 void what_set(const ptr< ss_type > &);
00362
00363
00364
00365
00366
00367
00368
00369
00370
00371
00372
00373 virtual bool is_void();
00374
00375
00376
00377
00378
00379
00380
00381
00382
00383
00384 virtual bool is_volatile();
00385
00386 virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v ) abstract;
00387 virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v ) abstract;
00388 virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v ) abstract;
00389 virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v ) abstract;
00390
00391
00392
00393 virtual ptr<reflection_list> reflection_get() const;
00394
00395 virtual ptr<field_list_list> field_values_get() const;
00396
00397 protected:
00398
00399 ss_referential (
00400 ptr< ss_type > a__ss_referential__what);
00401
00402
00403 virtual void gc_mark();
00404
00405 private:
00406 srp< ss_type > what;
00407 static ptr<reflection_list> reflection;
00408
00409 };
00410
00411
00412
00413
00414
00415
00416 class ss_reference : public ss_referential {
00417 public:
00418
00419 static ptr< ss_type > instance(ptr< ss_type > type);
00420
00421 virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v );
00422 virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v );
00423 virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v );
00424 virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v );
00425
00426
00427 static ptr< ss_reference > create (
00428 ptr< ss_type > a__ss_referential__what);
00429
00430
00431
00432
00433 virtual ptr<reflection_list> reflection_get() const;
00434
00435 virtual ptr<field_list_list> field_values_get() const;
00436
00437 protected:
00438
00439 ss_reference (
00440 ptr< ss_type > a__ss_referential__what);
00441
00442
00443 virtual void gc_mark();
00444
00445 private:
00446
00447 static ptr< ::lestes::std::map< srp< ss_type >, srp< ss_type > > > the_instances;
00448 static ptr<reflection_list> reflection;
00449
00450 };
00451
00452
00453
00454
00455
00456
00457 class ss_pseudoreference : public ss_referential {
00458 public:
00459
00460 static ptr< ss_type > instance(ptr< ss_type > type);
00461
00462 virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v );
00463 virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v );
00464 virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v );
00465 virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v );
00466
00467
00468 static ptr< ss_pseudoreference > create (
00469 ptr< ss_type > a__ss_referential__what);
00470
00471
00472
00473
00474 virtual ptr<reflection_list> reflection_get() const;
00475
00476 virtual ptr<field_list_list> field_values_get() const;
00477
00478 protected:
00479
00480 ss_pseudoreference (
00481 ptr< ss_type > a__ss_referential__what);
00482
00483
00484 virtual void gc_mark();
00485
00486 private:
00487
00488 static ptr< ::lestes::std::map< srp< ss_type >, srp< ss_type > > > the_instances;
00489 static ptr<reflection_list> reflection;
00490
00491 };
00492
00493
00494
00495
00496
00497
00498 class ss_pointer : public ss_type {
00499 public:
00500
00501 ptr< ss_type > what_get() const;
00502
00503
00504 void what_set(const ptr< ss_type > &);
00505
00506
00507 static ptr< ss_type > instance(ptr< ss_type > type);
00508
00509 virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v );
00510 virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v );
00511 virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v );
00512 virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v );
00513
00514
00515 static ptr< ss_pointer > create (
00516 ptr< ss_type > a__ss_pointer__what);
00517
00518
00519
00520
00521 virtual ptr<reflection_list> reflection_get() const;
00522
00523 virtual ptr<field_list_list> field_values_get() const;
00524
00525 protected:
00526
00527 ss_pointer (
00528 ptr< ss_type > a__ss_pointer__what);
00529
00530
00531 virtual void gc_mark();
00532
00533 private:
00534 srp< ss_type > what;
00535
00536 static ptr< ::lestes::std::map< srp< ss_type >, srp< ss_type > > > the_instances;
00537 static ptr<reflection_list> reflection;
00538
00539 };
00540
00541
00542
00543 class ss_enum : public ss_type {
00544 public:
00545
00546 ptr< ::lestes::std::list< srp< ss_declaration > > > enumerators_get() const;
00547
00548
00549 void enumerators_set(const ptr< ::lestes::std::list< srp< ss_declaration > > > & );
00550
00551 virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v );
00552 virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v );
00553 virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v );
00554 virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v );
00555
00556
00557 static ptr< ss_enum > create (
00558 ptr< ::lestes::std::list< srp< ss_declaration > > > a__ss_enum__enumerators);
00559
00560
00561
00562
00563 virtual ptr<reflection_list> reflection_get() const;
00564
00565 virtual ptr<field_list_list> field_values_get() const;
00566
00567 protected:
00568
00569 ss_enum (
00570 ptr< ::lestes::std::list< srp< ss_declaration > > > a__ss_enum__enumerators);
00571
00572
00573 virtual void gc_mark();
00574
00575 private:
00576 srp< ::lestes::std::list< srp< ss_declaration > > > enumerators;
00577 static ptr<reflection_list> reflection;
00578
00579 };
00580
00581
00582
00583 class ss_array : public ss_type {
00584 public:
00585
00586 t_size bound_get() const;
00587
00588
00589 void bound_set(t_size);
00590
00591
00592 ptr< ss_type > type_get() const;
00593
00594
00595 void type_set(const ptr< ss_type > &);
00596
00597
00598 static ptr< ss_type > instance(t_size size, ptr< ss_type > type);
00599
00600 virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v );
00601 virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v );
00602 virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v );
00603 virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v );
00604
00605
00606 static ptr< ss_array > create (
00607 t_size a__ss_array__bound,
00608 ptr< ss_type > a__ss_array__type);
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_array (
00620 t_size a__ss_array__bound,
00621 ptr< ss_type > a__ss_array__type);
00622
00623
00624 virtual void gc_mark();
00625
00626 private:
00627 t_size bound;
00628 srp< ss_type > type;
00629
00630 static ptr< ::lestes::std::map< srp < ::lestes::std::pair < t_size, srp < ss_type > > >, srp< ss_type >, ::lestes::std::pair_comparator < srp < ::lestes::std::pair < t_size, srp < ss_type > > > > > > the_instances;
00631 static ptr<reflection_list> reflection;
00632
00633 };
00634
00635
00636
00637 class ss_member_pointer : public ss_type {
00638 public:
00639
00640 ptr< ss_type > base_get() const;
00641
00642
00643 void base_set(const ptr< ss_type > &);
00644
00645
00646 ptr< ss_type > item_get() const;
00647
00648
00649 void item_set(const ptr< ss_type > &);
00650
00651
00652 static ptr< ss_type > instance(ptr< ss_type > base_type, ptr< ss_type > element_type);
00653
00654 virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v );
00655 virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v );
00656 virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v );
00657 virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v );
00658
00659
00660 static ptr< ss_member_pointer > create (
00661 ptr< ss_type > a__ss_member_pointer__base,
00662 ptr< ss_type > a__ss_member_pointer__item);
00663
00664
00665
00666
00667 virtual ptr<reflection_list> reflection_get() const;
00668
00669 virtual ptr<field_list_list> field_values_get() const;
00670
00671 protected:
00672
00673 ss_member_pointer (
00674 ptr< ss_type > a__ss_member_pointer__base,
00675 ptr< ss_type > a__ss_member_pointer__item);
00676
00677
00678 virtual void gc_mark();
00679
00680 private:
00681 srp< ss_type > base;
00682 srp< ss_type > item;
00683
00684 static ptr< ::lestes::std::map< srp < ::lestes::std::pair < srp < ss_type >, srp < ss_type > > >, srp< ss_type >, ::lestes::std::pair_comparator < srp < ::lestes::std::pair < srp < ss_type >, srp < ss_type > > > > > > the_instances;
00685 static ptr<reflection_list> reflection;
00686
00687 };
00688
00689
00690
00691
00692
00693
00694 class ss_function : public ss_type {
00695 public:
00696
00697 ptr< ss_type > returns_get() const;
00698
00699
00700 void returns_set(const ptr< ss_type > &);
00701
00702
00703 ptr< ::lestes::std::list< srp< ss_type > > > params_get() const;
00704
00705
00706 void params_set(const ptr< ::lestes::std::list< srp< ss_type > > > & );
00707
00708
00709 bool ellipsis_get() const;
00710
00711
00712 void ellipsis_set(bool);
00713
00714
00715 static ptr< ss_type > instance(ptr< ss_type > return_type, ptr < ::lestes::std::list < srp<ss_type> > > param_types, bool ellipsis);
00716
00717
00718 bool less_than(ptr< ss_function > other);
00719
00720
00721 bool equal_signature(ptr< ss_function > other);
00722
00723 virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v );
00724 virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v );
00725 virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v );
00726 virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v );
00727
00728
00729 static ptr< ss_function > create (
00730 ptr< ss_type > a__ss_function__returns,
00731 ptr< ::lestes::std::list< srp< ss_type > > > a__ss_function__params,
00732 bool a__ss_function__ellipsis);
00733
00734
00735
00736
00737 virtual ptr<reflection_list> reflection_get() const;
00738
00739 virtual ptr<field_list_list> field_values_get() const;
00740
00741 protected:
00742
00743 ss_function (
00744 ptr< ss_type > a__ss_function__returns,
00745 ptr< ::lestes::std::list< srp< ss_type > > > a__ss_function__params,
00746 bool a__ss_function__ellipsis);
00747
00748
00749 virtual void gc_mark();
00750
00751 private:
00752
00753 static ptr< ::lestes::std::set< srp< ss_function >, ss_function_comparator > > instances;
00754
00755 srp< ss_type > returns;
00756
00757 srp< ::lestes::std::list< srp< ss_type > > > params;
00758
00759
00760
00761
00762 bool ellipsis;
00763 static ptr<reflection_list> reflection;
00764
00765 };
00766
00767
00768
00769 class ss_member_function : public ss_function {
00770 public:
00771
00772 ptr< ss_type > this_type_get() const;
00773
00774
00775 void this_type_set(const ptr< ss_type > &);
00776
00777 virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v );
00778 virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v );
00779 virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v );
00780 virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v );
00781
00782
00783 static ptr< ss_member_function > create (
00784 ptr< ss_type > a__ss_function__returns,
00785 ptr< ::lestes::std::list< srp< ss_type > > > a__ss_function__params,
00786 bool a__ss_function__ellipsis,
00787 ptr< ss_type > a__ss_member_function__this_type);
00788
00789
00790
00791
00792 virtual ptr<reflection_list> reflection_get() const;
00793
00794 virtual ptr<field_list_list> field_values_get() const;
00795
00796 protected:
00797
00798 ss_member_function (
00799 ptr< ss_type > a__ss_function__returns,
00800 ptr< ::lestes::std::list< srp< ss_type > > > a__ss_function__params,
00801 bool a__ss_function__ellipsis,
00802 ptr< ss_type > a__ss_member_function__this_type);
00803
00804
00805 virtual void gc_mark();
00806
00807 private:
00808
00809
00810
00811
00812
00813
00814
00815 srp< ss_type > this_type;
00816 static ptr<reflection_list> reflection;
00817
00818 };
00819
00820
00821
00822 class ss_struct_base : public ss_type {
00823 public:
00824
00825 ptr< ss_decl_seq > members_get() const;
00826
00827
00828 void members_set(const ptr< ss_decl_seq > &);
00829
00830
00831 ptr< ss_declaration > decl_get() const;
00832
00833
00834 void decl_set(const ptr< ss_declaration > &);
00835
00836
00837 bool POD_get() const;
00838
00839
00840 void POD_set(bool);
00841
00842
00843 ptr< ss_declaration_time > completion_time_get() const;
00844
00845
00846 void completion_time_set(const ptr< ss_declaration_time > &);
00847
00848 virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v ) abstract;
00849 virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v ) abstract;
00850 virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v ) abstract;
00851 virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v ) abstract;
00852
00853
00854
00855 virtual ptr<reflection_list> reflection_get() const;
00856
00857 virtual ptr<field_list_list> field_values_get() const;
00858
00859 protected:
00860
00861 ss_struct_base (
00862 ptr< ss_decl_seq > a__ss_struct_base__members,
00863 ptr< ss_declaration > a__ss_struct_base__decl,
00864 bool a__ss_struct_base__POD,
00865 ptr< ss_declaration_time > a__ss_struct_base__completion_time);
00866
00867
00868 virtual void gc_mark();
00869
00870 private:
00871 srp< ss_decl_seq > members;
00872
00873
00874
00875
00876 srp< ss_declaration > decl;
00877
00878 bool POD;
00879
00880
00881
00882
00883 srp< ss_declaration_time > completion_time;
00884 static ptr<reflection_list> reflection;
00885
00886 };
00887
00888
00889
00890
00891
00892
00893 class ss_class : public ss_struct_base {
00894 public:
00895
00896 ptr< ::lestes::std::list< srp< ss_base_specifier > > > bases_get() const;
00897
00898
00899 void bases_set(const ptr< ::lestes::std::list< srp< ss_base_specifier > > > & );
00900
00901
00902 ptr< ::lestes::std::set< srp< ss_class > > > descendants_get() const;
00903
00904
00905 void descendants_set(const ptr< ::lestes::std::set< srp< ss_class > > > & );
00906
00907
00908
00909
00910
00911
00912
00913
00914
00915 bool is_ancestor(ptr< ss_class > descendant);
00916
00917 virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v );
00918 virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v );
00919 virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v );
00920 virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v );
00921
00922
00923 static ptr< ss_class > create (
00924 ptr< ss_decl_seq > a__ss_struct_base__members,
00925 ptr< ss_declaration > a__ss_struct_base__decl,
00926 bool a__ss_struct_base__POD,
00927 ptr< ss_declaration_time > a__ss_struct_base__completion_time,
00928 ptr< ::lestes::std::list< srp< ss_base_specifier > > > a__ss_class__bases,
00929 ptr< ::lestes::std::set< srp< ss_class > > > a__ss_class__descendants);
00930
00931
00932 static ptr< ss_class > create (
00933 ptr< ss_decl_seq > a__ss_struct_base__members,
00934 ptr< ss_declaration > a__ss_struct_base__decl,
00935 bool a__ss_struct_base__POD,
00936 ptr< ss_declaration_time > a__ss_struct_base__completion_time,
00937 ptr< ::lestes::std::list< srp< ss_base_specifier > > > a__ss_class__bases);
00938
00939
00940
00941
00942 virtual ptr<reflection_list> reflection_get() const;
00943
00944 virtual ptr<field_list_list> field_values_get() const;
00945
00946 protected:
00947
00948 ss_class (
00949 ptr< ss_decl_seq > a__ss_struct_base__members,
00950 ptr< ss_declaration > a__ss_struct_base__decl,
00951 bool a__ss_struct_base__POD,
00952 ptr< ss_declaration_time > a__ss_struct_base__completion_time,
00953 ptr< ::lestes::std::list< srp< ss_base_specifier > > > a__ss_class__bases,
00954 ptr< ::lestes::std::set< srp< ss_class > > > a__ss_class__descendants);
00955
00956
00957 virtual void gc_mark();
00958
00959 private:
00960
00961
00962
00963 srp< ::lestes::std::list< srp< ss_base_specifier > > > bases;
00964
00965
00966
00967
00968
00969
00970 srp< ::lestes::std::set< srp< ss_class > > > descendants;
00971 static ptr<reflection_list> reflection;
00972
00973 };
00974
00975
00976
00977 class ss_union : public ss_struct_base {
00978 public:
00979 virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v );
00980 virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v );
00981 virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v );
00982 virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v );
00983
00984
00985 static ptr< ss_union > create (
00986 ptr< ss_decl_seq > a__ss_struct_base__members,
00987 ptr< ss_declaration > a__ss_struct_base__decl,
00988 bool a__ss_struct_base__POD,
00989 ptr< ss_declaration_time > a__ss_struct_base__completion_time);
00990
00991
00992
00993
00994 virtual ptr<reflection_list> reflection_get() const;
00995
00996 virtual ptr<field_list_list> field_values_get() const;
00997
00998 protected:
00999
01000 ss_union (
01001 ptr< ss_decl_seq > a__ss_struct_base__members,
01002 ptr< ss_declaration > a__ss_struct_base__decl,
01003 bool a__ss_struct_base__POD,
01004 ptr< ss_declaration_time > a__ss_struct_base__completion_time);
01005
01006
01007 virtual void gc_mark();
01008
01009 private:
01010 static ptr<reflection_list> reflection;
01011
01012 };
01013
01014
01015
01016
01017
01018
01019
01020
01021
01022
01023
01024
01025
01026
01027
01028 class ss_typename_type : public ss_type {
01029 public:
01030
01031 ptr< ss_decl_seq > contained_in_get() const;
01032
01033
01034 void contained_in_set(const ptr< ss_decl_seq > &);
01035
01036
01037 ptr< ss_declaration_time > decl_time_get() const;
01038
01039
01040 void decl_time_set(const ptr< ss_declaration_time > &);
01041
01042
01043 ptr< as_name > qualified_name_get() const;
01044
01045
01046 void qualified_name_set(const ptr< as_name > &);
01047
01048 virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v ) abstract;
01049 virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v ) abstract;
01050 virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v ) abstract;
01051 virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v ) abstract;
01052
01053
01054
01055 virtual ptr<reflection_list> reflection_get() const;
01056
01057 virtual ptr<field_list_list> field_values_get() const;
01058
01059 protected:
01060
01061 ss_typename_type (
01062 ptr< ss_decl_seq > a__ss_typename_type__contained_in,
01063 ptr< ss_declaration_time > a__ss_typename_type__decl_time,
01064 ptr< as_name > a__ss_typename_type__qualified_name);
01065
01066
01067 virtual void gc_mark();
01068
01069 private:
01070 srp< ss_decl_seq > contained_in;
01071 srp< ss_declaration_time > decl_time;
01072
01073
01074
01075
01076
01077
01078
01079
01080 srp< as_name > qualified_name;
01081 static ptr<reflection_list> reflection;
01082
01083 };
01084
01085
01086 end_package(sem);
01087 end_package(cplus);
01088 end_package(lang);
01089 end_package(lestes);
01090
01091 #endif // lestes__lang__cplus__sem__ss_type_g_hh__included