00001
00002
00003 #ifndef lestes__lang__cplus__sem__ss_declaration_visitor_v_g_hh__included
00004 #define lestes__lang__cplus__sem__ss_declaration_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(lang);
00012 package(cplus);
00013 package(sem);
00014 class ss_declaration;
00015 end_package(sem);
00016 end_package(cplus);
00017 end_package(lang);
00018 end_package(lestes);
00019
00020 package(lestes);
00021 package(lang);
00022 package(cplus);
00023 package(sem);
00024 class ss_namespace_definition;
00025 end_package(sem);
00026 end_package(cplus);
00027 end_package(lang);
00028 end_package(lestes);
00029
00030 package(lestes);
00031 package(lang);
00032 package(cplus);
00033 package(sem);
00034 class ss_declaration_with_access_specifier;
00035 end_package(sem);
00036 end_package(cplus);
00037 end_package(lang);
00038 end_package(lestes);
00039
00040 package(lestes);
00041 package(lang);
00042 package(cplus);
00043 package(sem);
00044 class ss_object_declaration;
00045 end_package(sem);
00046 end_package(cplus);
00047 end_package(lang);
00048 end_package(lestes);
00049
00050 package(lestes);
00051 package(lang);
00052 package(cplus);
00053 package(sem);
00054 class ss_bitfield_declaration;
00055 end_package(sem);
00056 end_package(cplus);
00057 end_package(lang);
00058 end_package(lestes);
00059
00060 package(lestes);
00061 package(lang);
00062 package(cplus);
00063 package(sem);
00064 class ss_parameter_declaration;
00065 end_package(sem);
00066 end_package(cplus);
00067 end_package(lang);
00068 end_package(lestes);
00069
00070 package(lestes);
00071 package(lang);
00072 package(cplus);
00073 package(sem);
00074 class ss_fake_declaration;
00075 end_package(sem);
00076 end_package(cplus);
00077 end_package(lang);
00078 end_package(lestes);
00079
00080 package(lestes);
00081 package(lang);
00082 package(cplus);
00083 package(sem);
00084 class ss_injected_class_declaration;
00085 end_package(sem);
00086 end_package(cplus);
00087 end_package(lang);
00088 end_package(lestes);
00089
00090 package(lestes);
00091 package(lang);
00092 package(cplus);
00093 package(sem);
00094 class ss_enum_definition;
00095 end_package(sem);
00096 end_package(cplus);
00097 end_package(lang);
00098 end_package(lestes);
00099
00100 package(lestes);
00101 package(lang);
00102 package(cplus);
00103 package(sem);
00104 class ss_typedef_definition;
00105 end_package(sem);
00106 end_package(cplus);
00107 end_package(lang);
00108 end_package(lestes);
00109
00110 package(lestes);
00111 package(lang);
00112 package(cplus);
00113 package(sem);
00114 class ss_enumerator_declaration;
00115 end_package(sem);
00116 end_package(cplus);
00117 end_package(lang);
00118 end_package(lestes);
00119
00120 package(lestes);
00121 package(lang);
00122 package(cplus);
00123 package(sem);
00124 class ss_befriendable_declaration;
00125 end_package(sem);
00126 end_package(cplus);
00127 end_package(lang);
00128 end_package(lestes);
00129
00130 package(lestes);
00131 package(lang);
00132 package(cplus);
00133 package(sem);
00134 class ss_structure_declaration;
00135 end_package(sem);
00136 end_package(cplus);
00137 end_package(lang);
00138 end_package(lestes);
00139
00140 package(lestes);
00141 package(lang);
00142 package(cplus);
00143 package(sem);
00144 class ss_function_declaration;
00145 end_package(sem);
00146 end_package(cplus);
00147 end_package(lang);
00148 end_package(lestes);
00149
00150 package(lestes);
00151 package(lang);
00152 package(cplus);
00153 package(sem);
00154 class ss_method_declaration;
00155 end_package(sem);
00156 end_package(cplus);
00157 end_package(lang);
00158 end_package(lestes);
00159
00160 package(lestes);
00161 package(lang);
00162 package(cplus);
00163 package(sem);
00164 class ss_using_declaration;
00165 end_package(sem);
00166 end_package(cplus);
00167 end_package(lang);
00168 end_package(lestes);
00169
00170 package(lestes);
00171 package(lang);
00172 package(cplus);
00173 package(sem);
00174 class ss_dummy_declaration;
00175 end_package(sem);
00176 end_package(cplus);
00177 end_package(lang);
00178 end_package(lestes);
00179
00180 package(lestes);
00181 package(lang);
00182 package(cplus);
00183 package(sem);
00184 class ss_compound_stmt_declaration;
00185 end_package(sem);
00186 end_package(cplus);
00187 end_package(lang);
00188 end_package(lestes);
00189
00190 package(lestes);
00191 package(lang);
00192 package(cplus);
00193 package(sem);
00194 class ss_builtin_operator_declaration;
00195 end_package(sem);
00196 end_package(cplus);
00197 end_package(lang);
00198 end_package(lestes);
00199
00200 package(lestes);
00201 package(lang);
00202 package(cplus);
00203 package(sem);
00204 class ss_linkage;
00205 end_package(sem);
00206 end_package(cplus);
00207 end_package(lang);
00208 end_package(lestes);
00209
00210 package(lestes);
00211 package(intercode);
00212 class intercode;
00213 end_package(intercode);
00214 end_package(lestes);
00215
00216 package(lestes);
00217 package(intercode);
00218 class as_base;
00219 end_package(intercode);
00220 end_package(lestes);
00221
00222 package(lestes);
00223 package(intercode);
00224 class ss_base;
00225 end_package(intercode);
00226 end_package(lestes);
00227
00228 package(lestes);
00229 package(intercode);
00230 class ss_base_with_location;
00231 end_package(intercode);
00232 end_package(lestes);
00233
00234 package(lestes);
00235 package(intercode);
00236 class pi_base;
00237 end_package(intercode);
00238 end_package(lestes);
00239
00240 package(lestes);
00241 package(lang);
00242 package(cplus);
00243 package(sem);
00244
00245
00246 class ss_declaration_visitor;
00247 class ss_declaration_default_visitor;
00248 class ss_decl2pi_default;
00249 class ss_decl2ulint_base;
00250 class ss_decl2lstring_base;
00251
00252
00253 class ss_declaration_visitor : public ::lestes::std::visitor_base {
00254 public:
00255 virtual void visit_ss_namespace_definition(ptr< ::lestes::lang::cplus::sem::ss_namespace_definition > ) abstract;
00256
00257 virtual void visit_ss_object_declaration(ptr< ::lestes::lang::cplus::sem::ss_object_declaration > ) abstract;
00258
00259 virtual void visit_ss_bitfield_declaration(ptr< ::lestes::lang::cplus::sem::ss_bitfield_declaration > ) abstract;
00260
00261 virtual void visit_ss_parameter_declaration(ptr< ::lestes::lang::cplus::sem::ss_parameter_declaration > ) abstract;
00262
00263 virtual void visit_ss_fake_declaration(ptr< ::lestes::lang::cplus::sem::ss_fake_declaration > ) abstract;
00264
00265 virtual void visit_ss_injected_class_declaration(ptr< ::lestes::lang::cplus::sem::ss_injected_class_declaration > ) abstract;
00266
00267 virtual void visit_ss_enum_definition(ptr< ::lestes::lang::cplus::sem::ss_enum_definition > ) abstract;
00268
00269 virtual void visit_ss_typedef_definition(ptr< ::lestes::lang::cplus::sem::ss_typedef_definition > ) abstract;
00270
00271 virtual void visit_ss_enumerator_declaration(ptr< ::lestes::lang::cplus::sem::ss_enumerator_declaration > ) abstract;
00272
00273 virtual void visit_ss_structure_declaration(ptr< ::lestes::lang::cplus::sem::ss_structure_declaration > ) abstract;
00274
00275 virtual void visit_ss_function_declaration(ptr< ::lestes::lang::cplus::sem::ss_function_declaration > ) abstract;
00276
00277 virtual void visit_ss_method_declaration(ptr< ::lestes::lang::cplus::sem::ss_method_declaration > ) abstract;
00278
00279 virtual void visit_ss_using_declaration(ptr< ::lestes::lang::cplus::sem::ss_using_declaration > ) abstract;
00280
00281 virtual void visit_ss_compound_stmt_declaration(ptr< ::lestes::lang::cplus::sem::ss_compound_stmt_declaration > ) abstract;
00282
00283 virtual void visit_ss_builtin_operator_declaration(ptr< ::lestes::lang::cplus::sem::ss_builtin_operator_declaration > ) abstract;
00284
00285
00286
00287
00288 virtual ptr<reflection_list> reflection_get() const;
00289
00290 virtual ptr<field_list_list> field_values_get() const;
00291
00292 protected:
00293
00294 ss_declaration_visitor (
00295 );
00296
00297
00298 virtual void gc_mark();
00299
00300 private:
00301 static ptr<reflection_list> reflection;
00302
00303 };
00304
00305
00306 class ss_declaration_default_visitor : public ss_declaration_visitor {
00307 public:
00308 virtual void default_action(ptr< ::lestes::lang::cplus::sem::ss_declaration > ) abstract;
00309
00310 virtual void visit_ss_namespace_definition(ptr< ::lestes::lang::cplus::sem::ss_namespace_definition > );
00311
00312 virtual void visit_ss_object_declaration(ptr< ::lestes::lang::cplus::sem::ss_object_declaration > );
00313
00314 virtual void visit_ss_bitfield_declaration(ptr< ::lestes::lang::cplus::sem::ss_bitfield_declaration > );
00315
00316 virtual void visit_ss_parameter_declaration(ptr< ::lestes::lang::cplus::sem::ss_parameter_declaration > );
00317
00318 virtual void visit_ss_fake_declaration(ptr< ::lestes::lang::cplus::sem::ss_fake_declaration > );
00319
00320 virtual void visit_ss_injected_class_declaration(ptr< ::lestes::lang::cplus::sem::ss_injected_class_declaration > );
00321
00322 virtual void visit_ss_enum_definition(ptr< ::lestes::lang::cplus::sem::ss_enum_definition > );
00323
00324 virtual void visit_ss_typedef_definition(ptr< ::lestes::lang::cplus::sem::ss_typedef_definition > );
00325
00326 virtual void visit_ss_enumerator_declaration(ptr< ::lestes::lang::cplus::sem::ss_enumerator_declaration > );
00327
00328 virtual void visit_ss_structure_declaration(ptr< ::lestes::lang::cplus::sem::ss_structure_declaration > );
00329
00330 virtual void visit_ss_function_declaration(ptr< ::lestes::lang::cplus::sem::ss_function_declaration > );
00331
00332 virtual void visit_ss_method_declaration(ptr< ::lestes::lang::cplus::sem::ss_method_declaration > );
00333
00334 virtual void visit_ss_using_declaration(ptr< ::lestes::lang::cplus::sem::ss_using_declaration > );
00335
00336 virtual void visit_ss_compound_stmt_declaration(ptr< ::lestes::lang::cplus::sem::ss_compound_stmt_declaration > );
00337
00338 virtual void visit_ss_builtin_operator_declaration(ptr< ::lestes::lang::cplus::sem::ss_builtin_operator_declaration > );
00339
00340
00341
00342
00343 virtual ptr<reflection_list> reflection_get() const;
00344
00345 virtual ptr<field_list_list> field_values_get() const;
00346
00347 protected:
00348
00349 ss_declaration_default_visitor (
00350 );
00351
00352
00353 virtual void gc_mark();
00354
00355 private:
00356 static ptr<reflection_list> reflection;
00357
00358 };
00359
00360
00361 class ss_decl2pi_default : public ss_declaration_visitor {
00362 public:
00363 virtual void default_action(ptr< ::lestes::lang::cplus::sem::ss_declaration > ) abstract;
00364
00365 virtual void visit_ss_namespace_definition(ptr< ::lestes::lang::cplus::sem::ss_namespace_definition > );
00366
00367 virtual void visit_ss_object_declaration(ptr< ::lestes::lang::cplus::sem::ss_object_declaration > );
00368
00369 virtual void visit_ss_bitfield_declaration(ptr< ::lestes::lang::cplus::sem::ss_bitfield_declaration > );
00370
00371 virtual void visit_ss_parameter_declaration(ptr< ::lestes::lang::cplus::sem::ss_parameter_declaration > );
00372
00373 virtual void visit_ss_fake_declaration(ptr< ::lestes::lang::cplus::sem::ss_fake_declaration > );
00374
00375 virtual void visit_ss_injected_class_declaration(ptr< ::lestes::lang::cplus::sem::ss_injected_class_declaration > );
00376
00377 virtual void visit_ss_enum_definition(ptr< ::lestes::lang::cplus::sem::ss_enum_definition > );
00378
00379 virtual void visit_ss_typedef_definition(ptr< ::lestes::lang::cplus::sem::ss_typedef_definition > );
00380
00381 virtual void visit_ss_enumerator_declaration(ptr< ::lestes::lang::cplus::sem::ss_enumerator_declaration > );
00382
00383 virtual void visit_ss_structure_declaration(ptr< ::lestes::lang::cplus::sem::ss_structure_declaration > );
00384
00385 virtual void visit_ss_function_declaration(ptr< ::lestes::lang::cplus::sem::ss_function_declaration > );
00386
00387 virtual void visit_ss_method_declaration(ptr< ::lestes::lang::cplus::sem::ss_method_declaration > );
00388
00389 virtual void visit_ss_using_declaration(ptr< ::lestes::lang::cplus::sem::ss_using_declaration > );
00390
00391 virtual void visit_ss_compound_stmt_declaration(ptr< ::lestes::lang::cplus::sem::ss_compound_stmt_declaration > );
00392
00393 virtual void visit_ss_builtin_operator_declaration(ptr< ::lestes::lang::cplus::sem::ss_builtin_operator_declaration > );
00394
00395
00396
00397
00398 virtual ptr<reflection_list> reflection_get() const;
00399
00400 virtual ptr<field_list_list> field_values_get() const;
00401
00402 protected:
00403
00404 ss_decl2pi_default (
00405 );
00406
00407
00408 virtual void gc_mark();
00409
00410 private:
00411 static ptr<reflection_list> reflection;
00412
00413 };
00414
00415
00416 class ss_decl2ulint_base : public ::lestes::std::visitor_base {
00417 public:
00418 virtual ulint visit_ss_namespace_definition(ptr< ::lestes::lang::cplus::sem::ss_namespace_definition > ) abstract;
00419
00420 virtual ulint visit_ss_object_declaration(ptr< ::lestes::lang::cplus::sem::ss_object_declaration > ) abstract;
00421
00422 virtual ulint visit_ss_bitfield_declaration(ptr< ::lestes::lang::cplus::sem::ss_bitfield_declaration > ) abstract;
00423
00424 virtual ulint visit_ss_parameter_declaration(ptr< ::lestes::lang::cplus::sem::ss_parameter_declaration > ) abstract;
00425
00426 virtual ulint visit_ss_fake_declaration(ptr< ::lestes::lang::cplus::sem::ss_fake_declaration > ) abstract;
00427
00428 virtual ulint visit_ss_injected_class_declaration(ptr< ::lestes::lang::cplus::sem::ss_injected_class_declaration > ) abstract;
00429
00430 virtual ulint visit_ss_enum_definition(ptr< ::lestes::lang::cplus::sem::ss_enum_definition > ) abstract;
00431
00432 virtual ulint visit_ss_typedef_definition(ptr< ::lestes::lang::cplus::sem::ss_typedef_definition > ) abstract;
00433
00434 virtual ulint visit_ss_enumerator_declaration(ptr< ::lestes::lang::cplus::sem::ss_enumerator_declaration > ) abstract;
00435
00436 virtual ulint visit_ss_structure_declaration(ptr< ::lestes::lang::cplus::sem::ss_structure_declaration > ) abstract;
00437
00438 virtual ulint visit_ss_function_declaration(ptr< ::lestes::lang::cplus::sem::ss_function_declaration > ) abstract;
00439
00440 virtual ulint visit_ss_method_declaration(ptr< ::lestes::lang::cplus::sem::ss_method_declaration > ) abstract;
00441
00442 virtual ulint visit_ss_using_declaration(ptr< ::lestes::lang::cplus::sem::ss_using_declaration > ) abstract;
00443
00444 virtual ulint visit_ss_compound_stmt_declaration(ptr< ::lestes::lang::cplus::sem::ss_compound_stmt_declaration > ) abstract;
00445
00446 virtual ulint visit_ss_builtin_operator_declaration(ptr< ::lestes::lang::cplus::sem::ss_builtin_operator_declaration > ) abstract;
00447
00448
00449
00450
00451 virtual ptr<reflection_list> reflection_get() const;
00452
00453 virtual ptr<field_list_list> field_values_get() const;
00454
00455 protected:
00456
00457 ss_decl2ulint_base (
00458 );
00459
00460
00461 virtual void gc_mark();
00462
00463 private:
00464 static ptr<reflection_list> reflection;
00465
00466 };
00467
00468
00469 class ss_decl2lstring_base : public ::lestes::std::visitor_base {
00470 public:
00471 virtual lstring visit_ss_namespace_definition(ptr< ::lestes::lang::cplus::sem::ss_namespace_definition > ) abstract;
00472
00473 virtual lstring visit_ss_object_declaration(ptr< ::lestes::lang::cplus::sem::ss_object_declaration > ) abstract;
00474
00475 virtual lstring visit_ss_bitfield_declaration(ptr< ::lestes::lang::cplus::sem::ss_bitfield_declaration > ) abstract;
00476
00477 virtual lstring visit_ss_parameter_declaration(ptr< ::lestes::lang::cplus::sem::ss_parameter_declaration > ) abstract;
00478
00479 virtual lstring visit_ss_fake_declaration(ptr< ::lestes::lang::cplus::sem::ss_fake_declaration > ) abstract;
00480
00481 virtual lstring visit_ss_injected_class_declaration(ptr< ::lestes::lang::cplus::sem::ss_injected_class_declaration > ) abstract;
00482
00483 virtual lstring visit_ss_enum_definition(ptr< ::lestes::lang::cplus::sem::ss_enum_definition > ) abstract;
00484
00485 virtual lstring visit_ss_typedef_definition(ptr< ::lestes::lang::cplus::sem::ss_typedef_definition > ) abstract;
00486
00487 virtual lstring visit_ss_enumerator_declaration(ptr< ::lestes::lang::cplus::sem::ss_enumerator_declaration > ) abstract;
00488
00489 virtual lstring visit_ss_structure_declaration(ptr< ::lestes::lang::cplus::sem::ss_structure_declaration > ) abstract;
00490
00491 virtual lstring visit_ss_function_declaration(ptr< ::lestes::lang::cplus::sem::ss_function_declaration > ) abstract;
00492
00493 virtual lstring visit_ss_method_declaration(ptr< ::lestes::lang::cplus::sem::ss_method_declaration > ) abstract;
00494
00495 virtual lstring visit_ss_using_declaration(ptr< ::lestes::lang::cplus::sem::ss_using_declaration > ) abstract;
00496
00497 virtual lstring visit_ss_compound_stmt_declaration(ptr< ::lestes::lang::cplus::sem::ss_compound_stmt_declaration > ) abstract;
00498
00499 virtual lstring visit_ss_builtin_operator_declaration(ptr< ::lestes::lang::cplus::sem::ss_builtin_operator_declaration > ) abstract;
00500
00501
00502
00503
00504 virtual ptr<reflection_list> reflection_get() const;
00505
00506 virtual ptr<field_list_list> field_values_get() const;
00507
00508 protected:
00509
00510 ss_decl2lstring_base (
00511 );
00512
00513
00514 virtual void gc_mark();
00515
00516 private:
00517 static ptr<reflection_list> reflection;
00518
00519 };
00520
00521
00522 end_package(sem);
00523 end_package(cplus);
00524 end_package(lang);
00525 end_package(lestes);
00526
00527 #endif // lestes__lang__cplus__sem__ss_declaration_visitor_v_g_hh__included