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