00001
00002
00003 #ifndef lestes__lang__cplus__sem__ss_decl_name_matcher_g_hh__included
00004 #define lestes__lang__cplus__sem__ss_decl_name_matcher_g_hh__included
00005
00006 #include <lestes/common.hh>
00007 #include <lestes/lang/cplus/sem/ss_decl_name_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_decl_name_matcher;
00018
00019
00020 class ss_decl_name_matcher : public ss_decl_name_visitor {
00021 public:
00022 enum state_type {
00023 READY,
00024 GOT_ARG1,
00025 NEED_CLEANUP,
00026 HAVE_RESULT
00027 };
00028
00029 static bool match(ptr< ss_decl_name > , ptr< ss_decl_name > );
00030
00031 virtual void visit_ss_ordinary_name(ptr< ::lestes::lang::cplus::sem::ss_ordinary_name > );
00032
00033 virtual void visit_ss_conversion_name(ptr< ::lestes::lang::cplus::sem::ss_conversion_name > );
00034
00035 virtual void visit_ss_dummy_name(ptr< ::lestes::lang::cplus::sem::ss_dummy_name > );
00036
00037 virtual void visit_ss_operator_new(ptr< ::lestes::lang::cplus::sem::ss_operator_new > );
00038
00039 virtual void visit_ss_operator_delete(ptr< ::lestes::lang::cplus::sem::ss_operator_delete > );
00040
00041 virtual void visit_ss_operator_new_array(ptr< ::lestes::lang::cplus::sem::ss_operator_new_array > );
00042
00043 virtual void visit_ss_operator_delete_array(ptr< ::lestes::lang::cplus::sem::ss_operator_delete_array > );
00044
00045 virtual void visit_ss_operator_add(ptr< ::lestes::lang::cplus::sem::ss_operator_add > );
00046
00047 virtual void visit_ss_operator_sub(ptr< ::lestes::lang::cplus::sem::ss_operator_sub > );
00048
00049 virtual void visit_ss_operator_mul(ptr< ::lestes::lang::cplus::sem::ss_operator_mul > );
00050
00051 virtual void visit_ss_operator_div(ptr< ::lestes::lang::cplus::sem::ss_operator_div > );
00052
00053 virtual void visit_ss_operator_mod(ptr< ::lestes::lang::cplus::sem::ss_operator_mod > );
00054
00055 virtual void visit_ss_operator_bxor(ptr< ::lestes::lang::cplus::sem::ss_operator_bxor > );
00056
00057 virtual void visit_ss_operator_band(ptr< ::lestes::lang::cplus::sem::ss_operator_band > );
00058
00059 virtual void visit_ss_operator_bor(ptr< ::lestes::lang::cplus::sem::ss_operator_bor > );
00060
00061 virtual void visit_ss_operator_bnot(ptr< ::lestes::lang::cplus::sem::ss_operator_bnot > );
00062
00063 virtual void visit_ss_operator_lnot(ptr< ::lestes::lang::cplus::sem::ss_operator_lnot > );
00064
00065 virtual void visit_ss_operator_assign(ptr< ::lestes::lang::cplus::sem::ss_operator_assign > );
00066
00067 virtual void visit_ss_operator_assign_add(ptr< ::lestes::lang::cplus::sem::ss_operator_assign_add > );
00068
00069 virtual void visit_ss_operator_assign_sub(ptr< ::lestes::lang::cplus::sem::ss_operator_assign_sub > );
00070
00071 virtual void visit_ss_operator_assign_mul(ptr< ::lestes::lang::cplus::sem::ss_operator_assign_mul > );
00072
00073 virtual void visit_ss_operator_assign_div(ptr< ::lestes::lang::cplus::sem::ss_operator_assign_div > );
00074
00075 virtual void visit_ss_operator_assign_mod(ptr< ::lestes::lang::cplus::sem::ss_operator_assign_mod > );
00076
00077 virtual void visit_ss_operator_assign_bxor(ptr< ::lestes::lang::cplus::sem::ss_operator_assign_bxor > );
00078
00079 virtual void visit_ss_operator_assign_band(ptr< ::lestes::lang::cplus::sem::ss_operator_assign_band > );
00080
00081 virtual void visit_ss_operator_assign_bor(ptr< ::lestes::lang::cplus::sem::ss_operator_assign_bor > );
00082
00083 virtual void visit_ss_operator_assign_shl(ptr< ::lestes::lang::cplus::sem::ss_operator_assign_shl > );
00084
00085 virtual void visit_ss_operator_assign_shr(ptr< ::lestes::lang::cplus::sem::ss_operator_assign_shr > );
00086
00087 virtual void visit_ss_operator_shr(ptr< ::lestes::lang::cplus::sem::ss_operator_shr > );
00088
00089 virtual void visit_ss_operator_shl(ptr< ::lestes::lang::cplus::sem::ss_operator_shl > );
00090
00091 virtual void visit_ss_operator_sbl(ptr< ::lestes::lang::cplus::sem::ss_operator_sbl > );
00092
00093 virtual void visit_ss_operator_sbg(ptr< ::lestes::lang::cplus::sem::ss_operator_sbg > );
00094
00095 virtual void visit_ss_operator_sbng(ptr< ::lestes::lang::cplus::sem::ss_operator_sbng > );
00096
00097 virtual void visit_ss_operator_sbnl(ptr< ::lestes::lang::cplus::sem::ss_operator_sbnl > );
00098
00099 virtual void visit_ss_operator_sbe(ptr< ::lestes::lang::cplus::sem::ss_operator_sbe > );
00100
00101 virtual void visit_ss_operator_sbne(ptr< ::lestes::lang::cplus::sem::ss_operator_sbne > );
00102
00103 virtual void visit_ss_operator_land(ptr< ::lestes::lang::cplus::sem::ss_operator_land > );
00104
00105 virtual void visit_ss_operator_lor(ptr< ::lestes::lang::cplus::sem::ss_operator_lor > );
00106
00107 virtual void visit_ss_operator_inc(ptr< ::lestes::lang::cplus::sem::ss_operator_inc > );
00108
00109 virtual void visit_ss_operator_dec(ptr< ::lestes::lang::cplus::sem::ss_operator_dec > );
00110
00111 virtual void visit_ss_operator_comma(ptr< ::lestes::lang::cplus::sem::ss_operator_comma > );
00112
00113 virtual void visit_ss_operator_access(ptr< ::lestes::lang::cplus::sem::ss_operator_access > );
00114
00115 virtual void visit_ss_operator_access_member(ptr< ::lestes::lang::cplus::sem::ss_operator_access_member > );
00116
00117 virtual void visit_ss_operator_function_call(ptr< ::lestes::lang::cplus::sem::ss_operator_function_call > );
00118
00119 virtual void visit_ss_operator_array(ptr< ::lestes::lang::cplus::sem::ss_operator_array > );
00120
00121 virtual void visit_ss_operator_ternary(ptr< ::lestes::lang::cplus::sem::ss_operator_ternary > );
00122
00123
00124
00125 static ptr< ss_decl_name_matcher > create (
00126 state_type a__ss_decl_name_matcher__state,
00127 bool a__ss_decl_name_matcher__result);
00128
00129
00130 static ptr< ss_decl_name_matcher > create (
00131 );
00132
00133
00134
00135
00136 virtual ptr<reflection_list> reflection_get() const;
00137
00138 virtual ptr<field_list_list> field_values_get() const;
00139
00140 protected:
00141
00142 ss_decl_name_matcher (
00143 state_type a__ss_decl_name_matcher__state,
00144 bool a__ss_decl_name_matcher__result);
00145
00146
00147 virtual void gc_mark();
00148
00149 private:
00150 state_type state;
00151 bool result;
00152 static ptr<reflection_list> reflection;
00153
00154 };
00155
00156
00157 end_package(sem);
00158 end_package(cplus);
00159 end_package(lang);
00160 end_package(lestes);
00161
00162 package(lestes);
00163 package(std);
00164 specialize_objectize_for_enum( ::lestes::lang::cplus::sem::ss_decl_name_matcher::state_type );
00165 end_package(std);
00166 end_package(lestes);
00167
00168 #endif // lestes__lang__cplus__sem__ss_decl_name_matcher_g_hh__included