00001
00002
00003 #ifndef lestes__lang__cplus__sem__ss_declaration_g_hh__included
00004 #define lestes__lang__cplus__sem__ss_declaration_g_hh__included
00005
00006 #include <lestes/common.hh>
00007 #include <lestes/std/set.hh>
00008 #include <lestes/std/list.hh>
00009 #include <lestes/std/map.hh>
00010 #include <lestes/intercode/intercode.g.hh>
00011 #include <lestes/lang/cplus/sem/ss_enums.g.hh>
00012
00013 #include <lestes/std/objectize_macros.hh>
00014 package(lestes);
00015 package(std);
00016 class object;
00017 end_package(std);
00018 end_package(lestes);
00019
00020 package(lestes);
00021 package(lang);
00022 package(cplus);
00023 package(sem);
00024
00025
00026 class ss_statement;
00027 class ss_decl_name;
00028 class ss_decl_seq;
00029 class ss_declaration_time;
00030 class ss_type;
00031 class ss_struct_base;
00032 class ss_id_label;
00033 class ss_enum;
00034 class ss_expression;
00035 class ss_compound_stmt;
00036 class or_or_functional;
00037 class ss_declaration;
00038 class ss_declaration_visitor;
00039 class ss_decl2ulint_base;
00040 class ss_decl2lstring_base;
00041 class ss_namespace_definition;
00042 class ss_declaration_with_access_specifier;
00043 class ss_object_declaration;
00044 class ss_bitfield_declaration;
00045 class ss_parameter_declaration;
00046 class ss_fake_declaration;
00047 class ss_injected_class_declaration;
00048 class ss_enum_definition;
00049 class ss_typedef_definition;
00050 class ss_enumerator_declaration;
00051 class ss_befriendable_declaration;
00052 class ss_structure_declaration;
00053 class ss_function_declaration;
00054 class ss_method_declaration;
00055 class ss_using_declaration;
00056 class ss_dummy_declaration;
00057 class ss_compound_stmt_declaration;
00058 class ss_builtin_operator_declaration;
00059 class ss_linkage;
00060
00061
00062
00063 class ss_declaration : public ::lestes::intercode::ss_base_with_location {
00064 public:
00065
00066 ptr< ss_declaration_time > visible_since_get() const;
00067
00068
00069 void visible_since_set(const ptr< ss_declaration_time > &);
00070
00071
00072 ptr< ss_declaration_time > decl_time_get() const;
00073
00074
00075 void decl_time_set(const ptr< ss_declaration_time > &);
00076
00077
00078 ptr< ss_decl_name > name_get() const;
00079
00080
00081 void name_set(const ptr< ss_decl_name > &);
00082
00083
00084 ptr< ss_decl_seq > contained_in_get() const;
00085
00086
00087 void contained_in_set(const ptr< ss_decl_seq > &);
00088
00089
00090 ptr< ss_type > type_get() const;
00091
00092
00093 void type_set(const ptr< ss_type > &);
00094
00095
00096 ptr< ss_linkage > linkage_get() const;
00097
00098
00099 void linkage_set(const ptr< ss_linkage > &);
00100
00101 virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v ) abstract;
00102 virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v ) abstract;
00103 virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v ) abstract;
00104
00105
00106
00107 virtual ptr<reflection_list> reflection_get() const;
00108
00109 virtual ptr<field_list_list> field_values_get() const;
00110
00111 protected:
00112
00113 ss_declaration (
00114 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00115 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00116 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00117 ptr< ss_decl_name > a__ss_declaration__name,
00118 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00119 ptr< ss_type > a__ss_declaration__type,
00120 ptr< ss_linkage > a__ss_declaration__linkage);
00121
00122
00123 virtual void gc_mark();
00124
00125 private:
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146 srp< ss_declaration_time > visible_since;
00147 srp< ss_declaration_time > decl_time;
00148 srp< ss_decl_name > name;
00149 srp< ss_decl_seq > contained_in;
00150
00151
00152
00153
00154
00155
00156 srp< ss_type > type;
00157
00158 srp< ss_linkage > linkage;
00159 static ptr<reflection_list> reflection;
00160
00161 };
00162
00163
00164 class ss_namespace_definition : public ss_declaration {
00165 public:
00166
00167 ptr< ss_decl_seq > body_get() const;
00168
00169
00170 void body_set(const ptr< ss_decl_seq > &);
00171
00172 virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v );
00173 virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v );
00174 virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v );
00175
00176
00177 static ptr< ss_namespace_definition > create (
00178 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00179 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00180 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00181 ptr< ss_decl_name > a__ss_declaration__name,
00182 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00183 ptr< ss_type > a__ss_declaration__type,
00184 ptr< ss_linkage > a__ss_declaration__linkage,
00185 ptr< ss_decl_seq > a__ss_namespace_definition__body);
00186
00187
00188
00189
00190 virtual ptr<reflection_list> reflection_get() const;
00191
00192 virtual ptr<field_list_list> field_values_get() const;
00193
00194 protected:
00195
00196 ss_namespace_definition (
00197 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00198 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00199 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00200 ptr< ss_decl_name > a__ss_declaration__name,
00201 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00202 ptr< ss_type > a__ss_declaration__type,
00203 ptr< ss_linkage > a__ss_declaration__linkage,
00204 ptr< ss_decl_seq > a__ss_namespace_definition__body);
00205
00206
00207 virtual void gc_mark();
00208
00209 private:
00210 srp< ss_decl_seq > body;
00211 static ptr<reflection_list> reflection;
00212
00213 };
00214
00215
00216 class ss_declaration_with_access_specifier : public ss_declaration {
00217 public:
00218
00219 ss_access_specifier::type access_specifier_get() const;
00220
00221
00222 void access_specifier_set(ss_access_specifier::type);
00223
00224
00225 ss_storage_class::type storage_class_get() const;
00226
00227
00228 void storage_class_set(ss_storage_class::type);
00229
00230 virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v ) abstract;
00231 virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v ) abstract;
00232 virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v ) abstract;
00233
00234
00235
00236 virtual ptr<reflection_list> reflection_get() const;
00237
00238 virtual ptr<field_list_list> field_values_get() const;
00239
00240 protected:
00241
00242 ss_declaration_with_access_specifier (
00243 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00244 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00245 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00246 ptr< ss_decl_name > a__ss_declaration__name,
00247 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00248 ptr< ss_type > a__ss_declaration__type,
00249 ptr< ss_linkage > a__ss_declaration__linkage,
00250 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00251 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class);
00252
00253
00254 virtual void gc_mark();
00255
00256 private:
00257
00258
00259
00260
00261 ss_access_specifier::type access_specifier;
00262
00263
00264
00265
00266 ss_storage_class::type storage_class;
00267 static ptr<reflection_list> reflection;
00268
00269 };
00270
00271
00272
00273 class ss_object_declaration : public ss_declaration_with_access_specifier {
00274 public:
00275
00276 ptr< ss_declaration_time > initialized_since_get() const;
00277
00278
00279 void initialized_since_set(const ptr< ss_declaration_time > &);
00280
00281
00282 ptr< or_or_functional > initializer_get() const;
00283
00284
00285 void initializer_set(const ptr< or_or_functional > &);
00286
00287 virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v );
00288 virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v );
00289 virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v );
00290
00291
00292 static ptr< ss_object_declaration > create (
00293 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00294 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00295 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00296 ptr< ss_decl_name > a__ss_declaration__name,
00297 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00298 ptr< ss_type > a__ss_declaration__type,
00299 ptr< ss_linkage > a__ss_declaration__linkage,
00300 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00301 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
00302 ptr< ss_declaration_time > a__ss_object_declaration__initialized_since,
00303 ptr< or_or_functional > a__ss_object_declaration__initializer);
00304
00305
00306 static ptr< ss_object_declaration > create (
00307 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00308 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00309 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00310 ptr< ss_decl_name > a__ss_declaration__name,
00311 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00312 ptr< ss_type > a__ss_declaration__type,
00313 ptr< ss_linkage > a__ss_declaration__linkage,
00314 ptr< ss_declaration_time > a__ss_object_declaration__initialized_since,
00315 ptr< or_or_functional > a__ss_object_declaration__initializer);
00316
00317
00318
00319
00320 virtual ptr<reflection_list> reflection_get() const;
00321
00322 virtual ptr<field_list_list> field_values_get() const;
00323
00324 protected:
00325
00326 ss_object_declaration (
00327 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00328 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00329 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00330 ptr< ss_decl_name > a__ss_declaration__name,
00331 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00332 ptr< ss_type > a__ss_declaration__type,
00333 ptr< ss_linkage > a__ss_declaration__linkage,
00334 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00335 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
00336 ptr< ss_declaration_time > a__ss_object_declaration__initialized_since,
00337 ptr< or_or_functional > a__ss_object_declaration__initializer);
00338
00339
00340 virtual void gc_mark();
00341
00342 private:
00343
00344
00345
00346
00347
00348
00349
00350
00351
00352
00353
00354
00355
00356
00357 srp< ss_declaration_time > initialized_since;
00358
00359
00360
00361
00362
00363
00364
00365 srp< or_or_functional > initializer;
00366 static ptr<reflection_list> reflection;
00367
00368 };
00369
00370
00371 class ss_bitfield_declaration : public ss_object_declaration {
00372 public:
00373
00374 t_size width_get() const;
00375
00376
00377 void width_set(t_size);
00378
00379 virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v );
00380 virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v );
00381 virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v );
00382
00383
00384 static ptr< ss_bitfield_declaration > create (
00385 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00386 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00387 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00388 ptr< ss_decl_name > a__ss_declaration__name,
00389 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00390 ptr< ss_type > a__ss_declaration__type,
00391 ptr< ss_linkage > a__ss_declaration__linkage,
00392 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00393 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
00394 ptr< ss_declaration_time > a__ss_object_declaration__initialized_since,
00395 ptr< or_or_functional > a__ss_object_declaration__initializer,
00396 t_size a__ss_bitfield_declaration__width);
00397
00398
00399 static ptr< ss_bitfield_declaration > create (
00400 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00401 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00402 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00403 ptr< ss_decl_name > a__ss_declaration__name,
00404 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00405 ptr< ss_type > a__ss_declaration__type,
00406 ptr< ss_linkage > a__ss_declaration__linkage,
00407 ptr< ss_declaration_time > a__ss_object_declaration__initialized_since,
00408 ptr< or_or_functional > a__ss_object_declaration__initializer,
00409 t_size a__ss_bitfield_declaration__width);
00410
00411
00412
00413
00414 virtual ptr<reflection_list> reflection_get() const;
00415
00416 virtual ptr<field_list_list> field_values_get() const;
00417
00418 protected:
00419
00420 ss_bitfield_declaration (
00421 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00422 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00423 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00424 ptr< ss_decl_name > a__ss_declaration__name,
00425 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00426 ptr< ss_type > a__ss_declaration__type,
00427 ptr< ss_linkage > a__ss_declaration__linkage,
00428 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00429 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
00430 ptr< ss_declaration_time > a__ss_object_declaration__initialized_since,
00431 ptr< or_or_functional > a__ss_object_declaration__initializer,
00432 t_size a__ss_bitfield_declaration__width);
00433
00434
00435 virtual void gc_mark();
00436
00437 private:
00438 t_size width;
00439 static ptr<reflection_list> reflection;
00440
00441 };
00442
00443
00444 class ss_parameter_declaration : public ss_object_declaration {
00445 public:
00446
00447 ulint position_get() const;
00448
00449
00450 void position_set(ulint);
00451
00452 virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v );
00453 virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v );
00454 virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v );
00455
00456
00457 static ptr< ss_parameter_declaration > create (
00458 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00459 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00460 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00461 ptr< ss_decl_name > a__ss_declaration__name,
00462 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00463 ptr< ss_type > a__ss_declaration__type,
00464 ptr< ss_linkage > a__ss_declaration__linkage,
00465 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00466 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
00467 ptr< ss_declaration_time > a__ss_object_declaration__initialized_since,
00468 ptr< or_or_functional > a__ss_object_declaration__initializer,
00469 ulint a__ss_parameter_declaration__position);
00470
00471
00472 static ptr< ss_parameter_declaration > create (
00473 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00474 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00475 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00476 ptr< ss_decl_name > a__ss_declaration__name,
00477 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00478 ptr< ss_type > a__ss_declaration__type,
00479 ptr< ss_linkage > a__ss_declaration__linkage,
00480 ptr< ss_declaration_time > a__ss_object_declaration__initialized_since,
00481 ptr< or_or_functional > a__ss_object_declaration__initializer,
00482 ulint a__ss_parameter_declaration__position);
00483
00484
00485
00486
00487 virtual ptr<reflection_list> reflection_get() const;
00488
00489 virtual ptr<field_list_list> field_values_get() const;
00490
00491 protected:
00492
00493 ss_parameter_declaration (
00494 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00495 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00496 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00497 ptr< ss_decl_name > a__ss_declaration__name,
00498 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00499 ptr< ss_type > a__ss_declaration__type,
00500 ptr< ss_linkage > a__ss_declaration__linkage,
00501 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00502 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
00503 ptr< ss_declaration_time > a__ss_object_declaration__initialized_since,
00504 ptr< or_or_functional > a__ss_object_declaration__initializer,
00505 ulint a__ss_parameter_declaration__position);
00506
00507
00508 virtual void gc_mark();
00509
00510 private:
00511 ulint position;
00512 static ptr<reflection_list> reflection;
00513
00514 };
00515
00516
00517
00518
00519
00520
00521
00522
00523
00524
00525
00526
00527
00528
00529 class ss_fake_declaration : public ss_declaration_with_access_specifier {
00530 public:
00531
00532 ptr< ss_object_declaration > real_decl_get() const;
00533
00534
00535 void real_decl_set(const ptr< ss_object_declaration > &);
00536
00537 virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v );
00538 virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v );
00539 virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v );
00540
00541
00542 static ptr< ss_fake_declaration > create (
00543 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00544 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00545 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00546 ptr< ss_decl_name > a__ss_declaration__name,
00547 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00548 ptr< ss_type > a__ss_declaration__type,
00549 ptr< ss_linkage > a__ss_declaration__linkage,
00550 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00551 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
00552 ptr< ss_object_declaration > a__ss_fake_declaration__real_decl);
00553
00554
00555 static ptr< ss_fake_declaration > create (
00556 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00557 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00558 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00559 ptr< ss_decl_name > a__ss_declaration__name,
00560 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00561 ptr< ss_type > a__ss_declaration__type,
00562 ptr< ss_linkage > a__ss_declaration__linkage,
00563 ptr< ss_object_declaration > a__ss_fake_declaration__real_decl);
00564
00565
00566
00567
00568 virtual ptr<reflection_list> reflection_get() const;
00569
00570 virtual ptr<field_list_list> field_values_get() const;
00571
00572 protected:
00573
00574 ss_fake_declaration (
00575 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00576 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00577 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00578 ptr< ss_decl_name > a__ss_declaration__name,
00579 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00580 ptr< ss_type > a__ss_declaration__type,
00581 ptr< ss_linkage > a__ss_declaration__linkage,
00582 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00583 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
00584 ptr< ss_object_declaration > a__ss_fake_declaration__real_decl);
00585
00586
00587 virtual void gc_mark();
00588
00589 private:
00590
00591 srp< ss_object_declaration > real_decl;
00592 static ptr<reflection_list> reflection;
00593
00594 };
00595
00596
00597
00598
00599
00600
00601
00602
00603 class ss_injected_class_declaration : public ss_declaration_with_access_specifier {
00604 public:
00605
00606 ptr< ss_structure_declaration > real_decl_get() const;
00607
00608
00609 void real_decl_set(const ptr< ss_structure_declaration > &);
00610
00611 virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v );
00612 virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v );
00613 virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v );
00614
00615
00616 static ptr< ss_injected_class_declaration > create (
00617 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00618 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00619 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00620 ptr< ss_decl_name > a__ss_declaration__name,
00621 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00622 ptr< ss_type > a__ss_declaration__type,
00623 ptr< ss_linkage > a__ss_declaration__linkage,
00624 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00625 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
00626 ptr< ss_structure_declaration > a__ss_injected_class_declaration__real_decl);
00627
00628
00629 static ptr< ss_injected_class_declaration > create (
00630 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00631 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00632 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00633 ptr< ss_decl_name > a__ss_declaration__name,
00634 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00635 ptr< ss_type > a__ss_declaration__type,
00636 ptr< ss_linkage > a__ss_declaration__linkage,
00637 ptr< ss_structure_declaration > a__ss_injected_class_declaration__real_decl);
00638
00639
00640
00641
00642 virtual ptr<reflection_list> reflection_get() const;
00643
00644 virtual ptr<field_list_list> field_values_get() const;
00645
00646 protected:
00647
00648 ss_injected_class_declaration (
00649 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00650 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00651 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00652 ptr< ss_decl_name > a__ss_declaration__name,
00653 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00654 ptr< ss_type > a__ss_declaration__type,
00655 ptr< ss_linkage > a__ss_declaration__linkage,
00656 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00657 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
00658 ptr< ss_structure_declaration > a__ss_injected_class_declaration__real_decl);
00659
00660
00661 virtual void gc_mark();
00662
00663 private:
00664
00665 srp< ss_structure_declaration > real_decl;
00666 static ptr<reflection_list> reflection;
00667
00668 };
00669
00670
00671 class ss_enum_definition : public ss_declaration_with_access_specifier {
00672 public:
00673 virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v );
00674 virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v );
00675 virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v );
00676
00677
00678 static ptr< ss_enum_definition > create (
00679 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00680 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00681 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00682 ptr< ss_decl_name > a__ss_declaration__name,
00683 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00684 ptr< ss_type > a__ss_declaration__type,
00685 ptr< ss_linkage > a__ss_declaration__linkage,
00686 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00687 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class);
00688
00689
00690 static ptr< ss_enum_definition > create (
00691 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00692 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00693 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00694 ptr< ss_decl_name > a__ss_declaration__name,
00695 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00696 ptr< ss_type > a__ss_declaration__type,
00697 ptr< ss_linkage > a__ss_declaration__linkage);
00698
00699
00700
00701
00702 virtual ptr<reflection_list> reflection_get() const;
00703
00704 virtual ptr<field_list_list> field_values_get() const;
00705
00706 protected:
00707
00708 ss_enum_definition (
00709 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00710 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00711 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00712 ptr< ss_decl_name > a__ss_declaration__name,
00713 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00714 ptr< ss_type > a__ss_declaration__type,
00715 ptr< ss_linkage > a__ss_declaration__linkage,
00716 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00717 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class);
00718
00719
00720 virtual void gc_mark();
00721
00722 private:
00723 static ptr<reflection_list> reflection;
00724
00725 };
00726
00727
00728 class ss_typedef_definition : public ss_declaration_with_access_specifier {
00729 public:
00730 virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v );
00731 virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v );
00732 virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v );
00733
00734
00735 static ptr< ss_typedef_definition > create (
00736 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00737 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00738 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00739 ptr< ss_decl_name > a__ss_declaration__name,
00740 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00741 ptr< ss_type > a__ss_declaration__type,
00742 ptr< ss_linkage > a__ss_declaration__linkage,
00743 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00744 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class);
00745
00746
00747 static ptr< ss_typedef_definition > create (
00748 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00749 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00750 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00751 ptr< ss_decl_name > a__ss_declaration__name,
00752 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00753 ptr< ss_type > a__ss_declaration__type,
00754 ptr< ss_linkage > a__ss_declaration__linkage);
00755
00756
00757
00758
00759 virtual ptr<reflection_list> reflection_get() const;
00760
00761 virtual ptr<field_list_list> field_values_get() const;
00762
00763 protected:
00764
00765 ss_typedef_definition (
00766 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00767 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00768 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00769 ptr< ss_decl_name > a__ss_declaration__name,
00770 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00771 ptr< ss_type > a__ss_declaration__type,
00772 ptr< ss_linkage > a__ss_declaration__linkage,
00773 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00774 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class);
00775
00776
00777 virtual void gc_mark();
00778
00779 private:
00780 static ptr<reflection_list> reflection;
00781
00782 };
00783
00784
00785 class ss_enumerator_declaration : public ss_declaration_with_access_specifier {
00786 public:
00787
00788 ptr< ss_enum > specifier_get() const;
00789
00790
00791 void specifier_set(const ptr< ss_enum > &);
00792
00793 virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v );
00794 virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v );
00795 virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v );
00796
00797
00798 static ptr< ss_enumerator_declaration > create (
00799 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00800 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00801 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00802 ptr< ss_decl_name > a__ss_declaration__name,
00803 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00804 ptr< ss_type > a__ss_declaration__type,
00805 ptr< ss_linkage > a__ss_declaration__linkage,
00806 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00807 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
00808 ptr< ss_enum > a__ss_enumerator_declaration__specifier);
00809
00810
00811 static ptr< ss_enumerator_declaration > create (
00812 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00813 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00814 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00815 ptr< ss_decl_name > a__ss_declaration__name,
00816 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00817 ptr< ss_type > a__ss_declaration__type,
00818 ptr< ss_linkage > a__ss_declaration__linkage,
00819 ptr< ss_enum > a__ss_enumerator_declaration__specifier);
00820
00821
00822
00823
00824 virtual ptr<reflection_list> reflection_get() const;
00825
00826 virtual ptr<field_list_list> field_values_get() const;
00827
00828 protected:
00829
00830 ss_enumerator_declaration (
00831 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00832 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00833 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00834 ptr< ss_decl_name > a__ss_declaration__name,
00835 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00836 ptr< ss_type > a__ss_declaration__type,
00837 ptr< ss_linkage > a__ss_declaration__linkage,
00838 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00839 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
00840 ptr< ss_enum > a__ss_enumerator_declaration__specifier);
00841
00842
00843 virtual void gc_mark();
00844
00845 private:
00846 srp< ss_enum > specifier;
00847 static ptr<reflection_list> reflection;
00848
00849 };
00850
00851
00852
00853 class ss_befriendable_declaration : public ss_declaration_with_access_specifier {
00854 public:
00855
00856 ptr< ::lestes::std::set< srp< ss_struct_base > > > friend_of_get() const;
00857
00858
00859 void friend_of_set(const ptr< ::lestes::std::set< srp< ss_struct_base > > > & );
00860
00861 virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v ) abstract;
00862 virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v ) abstract;
00863 virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v ) abstract;
00864
00865
00866
00867 virtual ptr<reflection_list> reflection_get() const;
00868
00869 virtual ptr<field_list_list> field_values_get() const;
00870
00871 protected:
00872
00873 ss_befriendable_declaration (
00874 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00875 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00876 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00877 ptr< ss_decl_name > a__ss_declaration__name,
00878 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00879 ptr< ss_type > a__ss_declaration__type,
00880 ptr< ss_linkage > a__ss_declaration__linkage,
00881 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00882 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
00883 ptr< ::lestes::std::set< srp< ss_struct_base > > > a__ss_befriendable_declaration__friend_of);
00884
00885
00886 virtual void gc_mark();
00887
00888 private:
00889
00890 srp< ::lestes::std::set< srp< ss_struct_base > > > friend_of;
00891 static ptr<reflection_list> reflection;
00892
00893 };
00894
00895
00896
00897 class ss_structure_declaration : public ss_befriendable_declaration {
00898 public:
00899
00900 ptr< ss_decl_seq > body_get() const;
00901
00902
00903 void body_set(const ptr< ss_decl_seq > &);
00904
00905 virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v );
00906 virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v );
00907 virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v );
00908
00909
00910 static ptr< ss_structure_declaration > create (
00911 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00912 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00913 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00914 ptr< ss_decl_name > a__ss_declaration__name,
00915 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00916 ptr< ss_type > a__ss_declaration__type,
00917 ptr< ss_linkage > a__ss_declaration__linkage,
00918 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00919 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
00920 ptr< ::lestes::std::set< srp< ss_struct_base > > > a__ss_befriendable_declaration__friend_of,
00921 ptr< ss_decl_seq > a__ss_structure_declaration__body);
00922
00923
00924 static ptr< ss_structure_declaration > create (
00925 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00926 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00927 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00928 ptr< ss_decl_name > a__ss_declaration__name,
00929 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00930 ptr< ss_type > a__ss_declaration__type,
00931 ptr< ss_linkage > a__ss_declaration__linkage,
00932 ptr< ss_decl_seq > a__ss_structure_declaration__body);
00933
00934
00935
00936
00937 virtual ptr<reflection_list> reflection_get() const;
00938
00939 virtual ptr<field_list_list> field_values_get() const;
00940
00941 protected:
00942
00943 ss_structure_declaration (
00944 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00945 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00946 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00947 ptr< ss_decl_name > a__ss_declaration__name,
00948 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00949 ptr< ss_type > a__ss_declaration__type,
00950 ptr< ss_linkage > a__ss_declaration__linkage,
00951 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00952 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
00953 ptr< ::lestes::std::set< srp< ss_struct_base > > > a__ss_befriendable_declaration__friend_of,
00954 ptr< ss_decl_seq > a__ss_structure_declaration__body);
00955
00956
00957 virtual void gc_mark();
00958
00959 private:
00960 srp< ss_decl_seq > body;
00961 static ptr<reflection_list> reflection;
00962
00963 };
00964
00965
00966
00967 class ss_function_declaration : public ss_befriendable_declaration {
00968 public:
00969
00970 ptr< ss_decl_seq > parameters_get() const;
00971
00972
00973 void parameters_set(const ptr< ss_decl_seq > &);
00974
00975
00976 ptr< ss_compound_stmt > body_get() const;
00977
00978
00979 void body_set(const ptr< ss_compound_stmt > &);
00980
00981
00982 ptr< ::lestes::std::map< srp< ss_id_label >, srp< ss_statement > > > labels_get() const;
00983
00984
00985 void labels_set(const ptr< ::lestes::std::map< srp< ss_id_label >, srp< ss_statement > > > & );
00986
00987
00988 ptr< ::lestes::std::list< srp< ss_decl_seq > > > historical_parameters_get() const;
00989
00990
00991 void historical_parameters_set(const ptr< ::lestes::std::list< srp< ss_decl_seq > > > & );
00992
00993
00994 bool is_entry_point();
00995
00996 virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v );
00997 virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v );
00998 virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v );
00999
01000
01001 static ptr< ss_function_declaration > create (
01002 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
01003 ptr< ss_declaration_time > a__ss_declaration__visible_since,
01004 ptr< ss_declaration_time > a__ss_declaration__decl_time,
01005 ptr< ss_decl_name > a__ss_declaration__name,
01006 ptr< ss_decl_seq > a__ss_declaration__contained_in,
01007 ptr< ss_type > a__ss_declaration__type,
01008 ptr< ss_linkage > a__ss_declaration__linkage,
01009 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
01010 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
01011 ptr< ::lestes::std::set< srp< ss_struct_base > > > a__ss_befriendable_declaration__friend_of,
01012 ptr< ss_decl_seq > a__ss_function_declaration__parameters,
01013 ptr< ss_compound_stmt > a__ss_function_declaration__body,
01014 ptr< ::lestes::std::map< srp< ss_id_label >, srp< ss_statement > > > a__ss_function_declaration__labels,
01015 ptr< ::lestes::std::list< srp< ss_decl_seq > > > a__ss_function_declaration__historical_parameters);
01016
01017
01018 static ptr< ss_function_declaration > create (
01019 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
01020 ptr< ss_declaration_time > a__ss_declaration__visible_since,
01021 ptr< ss_declaration_time > a__ss_declaration__decl_time,
01022 ptr< ss_decl_name > a__ss_declaration__name,
01023 ptr< ss_decl_seq > a__ss_declaration__contained_in,
01024 ptr< ss_type > a__ss_declaration__type,
01025 ptr< ss_linkage > a__ss_declaration__linkage,
01026 ptr< ss_decl_seq > a__ss_function_declaration__parameters,
01027 ptr< ss_compound_stmt > a__ss_function_declaration__body);
01028
01029
01030
01031
01032 virtual ptr<reflection_list> reflection_get() const;
01033
01034 virtual ptr<field_list_list> field_values_get() const;
01035
01036 protected:
01037
01038 ss_function_declaration (
01039 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
01040 ptr< ss_declaration_time > a__ss_declaration__visible_since,
01041 ptr< ss_declaration_time > a__ss_declaration__decl_time,
01042 ptr< ss_decl_name > a__ss_declaration__name,
01043 ptr< ss_decl_seq > a__ss_declaration__contained_in,
01044 ptr< ss_type > a__ss_declaration__type,
01045 ptr< ss_linkage > a__ss_declaration__linkage,
01046 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
01047 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
01048 ptr< ::lestes::std::set< srp< ss_struct_base > > > a__ss_befriendable_declaration__friend_of,
01049 ptr< ss_decl_seq > a__ss_function_declaration__parameters,
01050 ptr< ss_compound_stmt > a__ss_function_declaration__body,
01051 ptr< ::lestes::std::map< srp< ss_id_label >, srp< ss_statement > > > a__ss_function_declaration__labels,
01052 ptr< ::lestes::std::list< srp< ss_decl_seq > > > a__ss_function_declaration__historical_parameters);
01053
01054
01055 virtual void gc_mark();
01056
01057 private:
01058 srp< ss_decl_seq > parameters;
01059
01060
01061
01062
01063
01064
01065
01066
01067
01068
01069 srp< ss_compound_stmt > body;
01070
01071 srp< ::lestes::std::map< srp< ss_id_label >, srp< ss_statement > > > labels;
01072
01073
01074
01075
01076
01077
01078
01079
01080
01081 srp< ::lestes::std::list< srp< ss_decl_seq > > > historical_parameters;
01082 static ptr<reflection_list> reflection;
01083
01084 };
01085
01086
01087
01088 class ss_method_declaration : public ss_function_declaration {
01089 public:
01090
01091 bool virtuality_get() const;
01092
01093
01094 void virtuality_set(bool);
01095
01096
01097 bool pure_virtual_get() const;
01098
01099
01100 void pure_virtual_set(bool);
01101
01102
01103 ptr< ss_method_declaration > reimplements_get() const;
01104
01105
01106 void reimplements_set(const ptr< ss_method_declaration > &);
01107
01108 virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v );
01109 virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v );
01110 virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v );
01111
01112
01113 static ptr< ss_method_declaration > create (
01114 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
01115 ptr< ss_declaration_time > a__ss_declaration__visible_since,
01116 ptr< ss_declaration_time > a__ss_declaration__decl_time,
01117 ptr< ss_decl_name > a__ss_declaration__name,
01118 ptr< ss_decl_seq > a__ss_declaration__contained_in,
01119 ptr< ss_type > a__ss_declaration__type,
01120 ptr< ss_linkage > a__ss_declaration__linkage,
01121 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
01122 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
01123 ptr< ::lestes::std::set< srp< ss_struct_base > > > a__ss_befriendable_declaration__friend_of,
01124 ptr< ss_decl_seq > a__ss_function_declaration__parameters,
01125 ptr< ss_compound_stmt > a__ss_function_declaration__body,
01126 ptr< ::lestes::std::map< srp< ss_id_label >, srp< ss_statement > > > a__ss_function_declaration__labels,
01127 ptr< ::lestes::std::list< srp< ss_decl_seq > > > a__ss_function_declaration__historical_parameters,
01128 bool a__ss_method_declaration__virtuality,
01129 bool a__ss_method_declaration__pure_virtual,
01130 ptr< ss_method_declaration > a__ss_method_declaration__reimplements);
01131
01132
01133 static ptr< ss_method_declaration > create (
01134 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
01135 ptr< ss_declaration_time > a__ss_declaration__visible_since,
01136 ptr< ss_declaration_time > a__ss_declaration__decl_time,
01137 ptr< ss_decl_name > a__ss_declaration__name,
01138 ptr< ss_decl_seq > a__ss_declaration__contained_in,
01139 ptr< ss_type > a__ss_declaration__type,
01140 ptr< ss_linkage > a__ss_declaration__linkage,
01141 ptr< ss_decl_seq > a__ss_function_declaration__parameters,
01142 ptr< ss_compound_stmt > a__ss_function_declaration__body,
01143 bool a__ss_method_declaration__virtuality,
01144 bool a__ss_method_declaration__pure_virtual,
01145 ptr< ss_method_declaration > a__ss_method_declaration__reimplements);
01146
01147
01148
01149
01150 virtual ptr<reflection_list> reflection_get() const;
01151
01152 virtual ptr<field_list_list> field_values_get() const;
01153
01154 protected:
01155
01156 ss_method_declaration (
01157 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
01158 ptr< ss_declaration_time > a__ss_declaration__visible_since,
01159 ptr< ss_declaration_time > a__ss_declaration__decl_time,
01160 ptr< ss_decl_name > a__ss_declaration__name,
01161 ptr< ss_decl_seq > a__ss_declaration__contained_in,
01162 ptr< ss_type > a__ss_declaration__type,
01163 ptr< ss_linkage > a__ss_declaration__linkage,
01164 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
01165 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
01166 ptr< ::lestes::std::set< srp< ss_struct_base > > > a__ss_befriendable_declaration__friend_of,
01167 ptr< ss_decl_seq > a__ss_function_declaration__parameters,
01168 ptr< ss_compound_stmt > a__ss_function_declaration__body,
01169 ptr< ::lestes::std::map< srp< ss_id_label >, srp< ss_statement > > > a__ss_function_declaration__labels,
01170 ptr< ::lestes::std::list< srp< ss_decl_seq > > > a__ss_function_declaration__historical_parameters,
01171 bool a__ss_method_declaration__virtuality,
01172 bool a__ss_method_declaration__pure_virtual,
01173 ptr< ss_method_declaration > a__ss_method_declaration__reimplements);
01174
01175
01176 virtual void gc_mark();
01177
01178 private:
01179
01180 bool virtuality;
01181
01182 bool pure_virtual;
01183
01184
01185
01186
01187
01188
01189
01190 srp< ss_method_declaration > reimplements;
01191 static ptr<reflection_list> reflection;
01192
01193 };
01194
01195
01196 class ss_using_declaration : public ss_declaration_with_access_specifier {
01197 public:
01198
01199 ptr< ss_declaration > target_get() const;
01200
01201
01202 void target_set(const ptr< ss_declaration > &);
01203
01204
01205 ptr< ss_declaration > real_target_get() const;
01206
01207
01208 void real_target_set(const ptr< ss_declaration > &);
01209
01210 virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v );
01211 virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v );
01212 virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v );
01213
01214
01215 static ptr< ss_using_declaration > create (
01216 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
01217 ptr< ss_declaration_time > a__ss_declaration__visible_since,
01218 ptr< ss_declaration_time > a__ss_declaration__decl_time,
01219 ptr< ss_decl_name > a__ss_declaration__name,
01220 ptr< ss_decl_seq > a__ss_declaration__contained_in,
01221 ptr< ss_type > a__ss_declaration__type,
01222 ptr< ss_linkage > a__ss_declaration__linkage,
01223 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
01224 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
01225 ptr< ss_declaration > a__ss_using_declaration__target,
01226 ptr< ss_declaration > a__ss_using_declaration__real_target);
01227
01228
01229 static ptr< ss_using_declaration > create (
01230 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
01231 ptr< ss_declaration_time > a__ss_declaration__visible_since,
01232 ptr< ss_declaration_time > a__ss_declaration__decl_time,
01233 ptr< ss_decl_name > a__ss_declaration__name,
01234 ptr< ss_decl_seq > a__ss_declaration__contained_in,
01235 ptr< ss_type > a__ss_declaration__type,
01236 ptr< ss_linkage > a__ss_declaration__linkage,
01237 ptr< ss_declaration > a__ss_using_declaration__target,
01238 ptr< ss_declaration > a__ss_using_declaration__real_target);
01239
01240
01241
01242
01243 virtual ptr<reflection_list> reflection_get() const;
01244
01245 virtual ptr<field_list_list> field_values_get() const;
01246
01247 protected:
01248
01249 ss_using_declaration (
01250 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
01251 ptr< ss_declaration_time > a__ss_declaration__visible_since,
01252 ptr< ss_declaration_time > a__ss_declaration__decl_time,
01253 ptr< ss_decl_name > a__ss_declaration__name,
01254 ptr< ss_decl_seq > a__ss_declaration__contained_in,
01255 ptr< ss_type > a__ss_declaration__type,
01256 ptr< ss_linkage > a__ss_declaration__linkage,
01257 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
01258 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
01259 ptr< ss_declaration > a__ss_using_declaration__target,
01260 ptr< ss_declaration > a__ss_using_declaration__real_target);
01261
01262
01263 virtual void gc_mark();
01264
01265 private:
01266
01267
01268
01269
01270
01271
01272
01273
01274 srp< ss_declaration > target;
01275
01276
01277
01278
01279
01280
01281
01282
01283 srp< ss_declaration > real_target;
01284 static ptr<reflection_list> reflection;
01285
01286 };
01287
01288
01289 class ss_dummy_declaration : public ss_declaration {
01290 public:
01291 virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v ) abstract;
01292 virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v ) abstract;
01293 virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v ) abstract;
01294
01295
01296
01297 virtual ptr<reflection_list> reflection_get() const;
01298
01299 virtual ptr<field_list_list> field_values_get() const;
01300
01301 protected:
01302
01303 ss_dummy_declaration (
01304 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
01305 ptr< ss_declaration_time > a__ss_declaration__visible_since,
01306 ptr< ss_declaration_time > a__ss_declaration__decl_time,
01307 ptr< ss_decl_name > a__ss_declaration__name,
01308 ptr< ss_decl_seq > a__ss_declaration__contained_in,
01309 ptr< ss_type > a__ss_declaration__type,
01310 ptr< ss_linkage > a__ss_declaration__linkage);
01311
01312
01313 virtual void gc_mark();
01314
01315 private:
01316 static ptr<reflection_list> reflection;
01317
01318 };
01319
01320
01321
01322
01323
01324
01325
01326
01327
01328
01329 class ss_compound_stmt_declaration : public ss_dummy_declaration {
01330 public:
01331
01332 ptr< ss_compound_stmt > compound_stmt_get() const;
01333
01334
01335 void compound_stmt_set(const ptr< ss_compound_stmt > &);
01336
01337 virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v );
01338 virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v );
01339 virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v );
01340
01341
01342 static ptr< ss_compound_stmt_declaration > create (
01343 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
01344 ptr< ss_declaration_time > a__ss_declaration__visible_since,
01345 ptr< ss_declaration_time > a__ss_declaration__decl_time,
01346 ptr< ss_decl_name > a__ss_declaration__name,
01347 ptr< ss_decl_seq > a__ss_declaration__contained_in,
01348 ptr< ss_type > a__ss_declaration__type,
01349 ptr< ss_linkage > a__ss_declaration__linkage,
01350 ptr< ss_compound_stmt > a__ss_compound_stmt_declaration__compound_stmt);
01351
01352
01353
01354
01355 virtual ptr<reflection_list> reflection_get() const;
01356
01357 virtual ptr<field_list_list> field_values_get() const;
01358
01359 protected:
01360
01361 ss_compound_stmt_declaration (
01362 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
01363 ptr< ss_declaration_time > a__ss_declaration__visible_since,
01364 ptr< ss_declaration_time > a__ss_declaration__decl_time,
01365 ptr< ss_decl_name > a__ss_declaration__name,
01366 ptr< ss_decl_seq > a__ss_declaration__contained_in,
01367 ptr< ss_type > a__ss_declaration__type,
01368 ptr< ss_linkage > a__ss_declaration__linkage,
01369 ptr< ss_compound_stmt > a__ss_compound_stmt_declaration__compound_stmt);
01370
01371
01372 virtual void gc_mark();
01373
01374 private:
01375 srp< ss_compound_stmt > compound_stmt;
01376 static ptr<reflection_list> reflection;
01377
01378 };
01379
01380
01381
01382
01383
01384
01385
01386
01387 class ss_builtin_operator_declaration : public ss_function_declaration {
01388 public:
01389 virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v );
01390 virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v );
01391 virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v );
01392
01393
01394 static ptr< ss_builtin_operator_declaration > create (
01395 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
01396 ptr< ss_declaration_time > a__ss_declaration__visible_since,
01397 ptr< ss_declaration_time > a__ss_declaration__decl_time,
01398 ptr< ss_decl_name > a__ss_declaration__name,
01399 ptr< ss_decl_seq > a__ss_declaration__contained_in,
01400 ptr< ss_type > a__ss_declaration__type,
01401 ptr< ss_linkage > a__ss_declaration__linkage,
01402 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
01403 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
01404 ptr< ::lestes::std::set< srp< ss_struct_base > > > a__ss_befriendable_declaration__friend_of,
01405 ptr< ss_decl_seq > a__ss_function_declaration__parameters,
01406 ptr< ss_compound_stmt > a__ss_function_declaration__body,
01407 ptr< ::lestes::std::map< srp< ss_id_label >, srp< ss_statement > > > a__ss_function_declaration__labels,
01408 ptr< ::lestes::std::list< srp< ss_decl_seq > > > a__ss_function_declaration__historical_parameters);
01409
01410
01411 static ptr< ss_builtin_operator_declaration > create (
01412 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
01413 ptr< ss_declaration_time > a__ss_declaration__visible_since,
01414 ptr< ss_declaration_time > a__ss_declaration__decl_time,
01415 ptr< ss_decl_name > a__ss_declaration__name,
01416 ptr< ss_decl_seq > a__ss_declaration__contained_in,
01417 ptr< ss_type > a__ss_declaration__type,
01418 ptr< ss_linkage > a__ss_declaration__linkage,
01419 ptr< ss_decl_seq > a__ss_function_declaration__parameters,
01420 ptr< ss_compound_stmt > a__ss_function_declaration__body);
01421
01422
01423
01424
01425 virtual ptr<reflection_list> reflection_get() const;
01426
01427 virtual ptr<field_list_list> field_values_get() const;
01428
01429 protected:
01430
01431 ss_builtin_operator_declaration (
01432 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
01433 ptr< ss_declaration_time > a__ss_declaration__visible_since,
01434 ptr< ss_declaration_time > a__ss_declaration__decl_time,
01435 ptr< ss_decl_name > a__ss_declaration__name,
01436 ptr< ss_decl_seq > a__ss_declaration__contained_in,
01437 ptr< ss_type > a__ss_declaration__type,
01438 ptr< ss_linkage > a__ss_declaration__linkage,
01439 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
01440 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
01441 ptr< ::lestes::std::set< srp< ss_struct_base > > > a__ss_befriendable_declaration__friend_of,
01442 ptr< ss_decl_seq > a__ss_function_declaration__parameters,
01443 ptr< ss_compound_stmt > a__ss_function_declaration__body,
01444 ptr< ::lestes::std::map< srp< ss_id_label >, srp< ss_statement > > > a__ss_function_declaration__labels,
01445 ptr< ::lestes::std::list< srp< ss_decl_seq > > > a__ss_function_declaration__historical_parameters);
01446
01447
01448 virtual void gc_mark();
01449
01450 private:
01451 static ptr<reflection_list> reflection;
01452
01453 };
01454
01455
01456 class ss_linkage : public ::lestes::std::object {
01457 public:
01458 enum type {
01459 LINKAGE_EXTERNAL,
01460 LINKAGE_INTERNAL,
01461 LINKAGE_NO
01462 };
01463
01464
01465 ucn_string language_get() const;
01466
01467
01468 void language_set(ucn_string);
01469
01470
01471 type linkage_get() const;
01472
01473
01474 void linkage_set(type);
01475
01476
01477
01478 static ptr< ss_linkage > create (
01479 ucn_string a__ss_linkage__language,
01480 type a__ss_linkage__linkage);
01481
01482
01483
01484
01485 virtual ptr<reflection_list> reflection_get() const;
01486
01487 virtual ptr<field_list_list> field_values_get() const;
01488
01489 protected:
01490
01491 ss_linkage (
01492 ucn_string a__ss_linkage__language,
01493 type a__ss_linkage__linkage);
01494
01495
01496 virtual void gc_mark();
01497
01498 private:
01499 ucn_string language;
01500 type linkage;
01501 static ptr<reflection_list> reflection;
01502
01503 };
01504
01505
01506 end_package(sem);
01507 end_package(cplus);
01508 end_package(lang);
01509 end_package(lestes);
01510
01511 package(lestes);
01512 package(std);
01513 specialize_objectize_for_enum( ::lestes::lang::cplus::sem::ss_linkage::type );
01514 end_package(std);
01515 end_package(lestes);
01516
01517 #endif // lestes__lang__cplus__sem__ss_declaration_g_hh__included