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