00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef lestes__lang__cplus__sem__as_declaration_specifier2properties_g_hh__included
00012 #define lestes__lang__cplus__sem__as_declaration_specifier2properties_g_hh__included
00013
00014 #include <lestes/common.hh>
00015 #include <lestes/std/list.hh>
00016 #include <lestes/lang/cplus/sem/sa_common.g.hh>
00017 #include <lestes/lang/cplus/sem/ss_enums.g.hh>
00018 #include <lestes/lang/cplus/sem/as_declaration_specifier_visitor.v.g.hh>
00019
00020 #include <lestes/std/objectize_macros.hh>
00021 package(lestes);
00022 package(lang);
00023 package(cplus);
00024 package(sem);
00025 class as_declaration_specifier;
00026 end_package(sem);
00027 end_package(cplus);
00028 end_package(lang);
00029 end_package(lestes);
00030
00031 package(lestes);
00032 package(lang);
00033 package(cplus);
00034 package(sem);
00035 class ss_type;
00036 end_package(sem);
00037 end_package(cplus);
00038 end_package(lang);
00039 end_package(lestes);
00040
00041 package(lestes);
00042 package(lang);
00043 package(cplus);
00044 package(sem);
00045
00046
00047 class as_declaration_specifier2properties;
00048
00049
00050
00051
00052
00053
00054 class as_declaration_specifier2properties : public as_declaration_specifier_visitor {
00055 public:
00056
00057 enum type_specifier_type {
00058 TS_NONE,
00059 TS_OTHER,
00060 TS_CHAR,
00061 TS_INT,
00062 TS_DOUBLE
00063 };
00064
00065
00066 ptr< ::lestes::lang::cplus::sem::ss_type > other_type_get() const;
00067
00068
00069 type_specifier_type type_specifier_get() const;
00070
00071
00072 ss_storage_class::type storage_class_get() const;
00073
00074
00075 bool explicit_flag_get() const;
00076
00077
00078 bool inline_flag_get() const;
00079
00080
00081 bool virtual_flag_get() const;
00082
00083
00084 bool friend_flag_get() const;
00085
00086
00087 bool const_flag_get() const;
00088
00089
00090 bool volatile_flag_get() const;
00091
00092
00093 bool signed_flag_get() const;
00094
00095
00096 bool unsigned_flag_get() const;
00097
00098
00099 bool short_flag_get() const;
00100
00101
00102 bool long_flag_get() const;
00103
00104
00105 void process(ptr< ::lestes::lang::cplus::sem::as_declaration_specifier > specifier);
00106
00107 virtual void visit_as_function_specifier_inline(ptr< ::lestes::lang::cplus::sem::as_function_specifier_inline > );
00108
00109 virtual void visit_as_function_specifier_virtual(ptr< ::lestes::lang::cplus::sem::as_function_specifier_virtual > );
00110
00111 virtual void visit_as_function_specifier_explicit(ptr< ::lestes::lang::cplus::sem::as_function_specifier_explicit > );
00112
00113 virtual void visit_as_friend_specifier(ptr< ::lestes::lang::cplus::sem::as_friend_specifier > );
00114
00115 virtual void visit_as_typedef_specifier(ptr< ::lestes::lang::cplus::sem::as_typedef_specifier > );
00116
00117 virtual void visit_as_storage_class_specifier_auto(ptr< ::lestes::lang::cplus::sem::as_storage_class_specifier_auto > );
00118
00119 virtual void visit_as_storage_class_specifier_register(ptr< ::lestes::lang::cplus::sem::as_storage_class_specifier_register > );
00120
00121 virtual void visit_as_storage_class_specifier_static(ptr< ::lestes::lang::cplus::sem::as_storage_class_specifier_static > );
00122
00123 virtual void visit_as_storage_class_specifier_extern(ptr< ::lestes::lang::cplus::sem::as_storage_class_specifier_extern > );
00124
00125 virtual void visit_as_storage_class_specifier_mutable(ptr< ::lestes::lang::cplus::sem::as_storage_class_specifier_mutable > );
00126
00127 virtual void visit_as_enumeration_specifier(ptr< ::lestes::lang::cplus::sem::as_enumeration_specifier > );
00128
00129 virtual void visit_as_char_simple_type_specifier(ptr< ::lestes::lang::cplus::sem::as_char_simple_type_specifier > );
00130
00131 virtual void visit_as_wchar_t_simple_type_specifier(ptr< ::lestes::lang::cplus::sem::as_wchar_t_simple_type_specifier > );
00132
00133 virtual void visit_as_bool_simple_type_specifier(ptr< ::lestes::lang::cplus::sem::as_bool_simple_type_specifier > );
00134
00135 virtual void visit_as_short_simple_type_specifier(ptr< ::lestes::lang::cplus::sem::as_short_simple_type_specifier > );
00136
00137 virtual void visit_as_int_simple_type_specifier(ptr< ::lestes::lang::cplus::sem::as_int_simple_type_specifier > );
00138
00139 virtual void visit_as_long_simple_type_specifier(ptr< ::lestes::lang::cplus::sem::as_long_simple_type_specifier > );
00140
00141 virtual void visit_as_signed_simple_type_specifier(ptr< ::lestes::lang::cplus::sem::as_signed_simple_type_specifier > );
00142
00143 virtual void visit_as_unsigned_simple_type_specifier(ptr< ::lestes::lang::cplus::sem::as_unsigned_simple_type_specifier > );
00144
00145 virtual void visit_as_float_simple_type_specifier(ptr< ::lestes::lang::cplus::sem::as_float_simple_type_specifier > );
00146
00147 virtual void visit_as_double_simple_type_specifier(ptr< ::lestes::lang::cplus::sem::as_double_simple_type_specifier > );
00148
00149 virtual void visit_as_void_simple_type_specifier(ptr< ::lestes::lang::cplus::sem::as_void_simple_type_specifier > );
00150
00151 virtual void visit_as_cv_qualifier_const(ptr< ::lestes::lang::cplus::sem::as_cv_qualifier_const > );
00152
00153 virtual void visit_as_cv_qualifier_volatile(ptr< ::lestes::lang::cplus::sem::as_cv_qualifier_volatile > );
00154
00155 virtual void visit_as_cv_qualifier_restrict(ptr< ::lestes::lang::cplus::sem::as_cv_qualifier_restrict > );
00156
00157 virtual void visit_as_named_simple_type_specifier(ptr< ::lestes::lang::cplus::sem::as_named_simple_type_specifier > );
00158
00159 virtual void visit_as_elaborated_type_specifier_typename(ptr< ::lestes::lang::cplus::sem::as_elaborated_type_specifier_typename > );
00160
00161 virtual void visit_as_elaborated_type_specifier_class_key(ptr< ::lestes::lang::cplus::sem::as_elaborated_type_specifier_class_key > );
00162
00163 virtual void visit_as_elaborated_type_specifier_enum(ptr< ::lestes::lang::cplus::sem::as_elaborated_type_specifier_enum > );
00164
00165 virtual void visit_as_class_specifier(ptr< ::lestes::lang::cplus::sem::as_class_specifier > );
00166
00167
00168
00169 static ptr< as_declaration_specifier2properties > create (
00170 ptr< ::lestes::lang::cplus::sem::ss_type > a__as_declaration_specifier2properties__other_type,
00171 type_specifier_type a__as_declaration_specifier2properties__type_specifier,
00172 ss_storage_class::type a__as_declaration_specifier2properties__storage_class,
00173 bool a__as_declaration_specifier2properties__explicit_flag,
00174 bool a__as_declaration_specifier2properties__inline_flag,
00175 bool a__as_declaration_specifier2properties__virtual_flag,
00176 bool a__as_declaration_specifier2properties__friend_flag,
00177 bool a__as_declaration_specifier2properties__const_flag,
00178 bool a__as_declaration_specifier2properties__volatile_flag,
00179 bool a__as_declaration_specifier2properties__signed_flag,
00180 bool a__as_declaration_specifier2properties__unsigned_flag,
00181 bool a__as_declaration_specifier2properties__short_flag,
00182 bool a__as_declaration_specifier2properties__long_flag);
00183
00184
00185 static ptr< as_declaration_specifier2properties > create (
00186 );
00187
00188
00189
00190
00191 virtual ptr<reflection_list> reflection_get() const;
00192
00193 virtual ptr<field_list_list> field_values_get() const;
00194
00195 protected:
00196
00197 as_declaration_specifier2properties (
00198 ptr< ::lestes::lang::cplus::sem::ss_type > a__as_declaration_specifier2properties__other_type,
00199 type_specifier_type a__as_declaration_specifier2properties__type_specifier,
00200 ss_storage_class::type a__as_declaration_specifier2properties__storage_class,
00201 bool a__as_declaration_specifier2properties__explicit_flag,
00202 bool a__as_declaration_specifier2properties__inline_flag,
00203 bool a__as_declaration_specifier2properties__virtual_flag,
00204 bool a__as_declaration_specifier2properties__friend_flag,
00205 bool a__as_declaration_specifier2properties__const_flag,
00206 bool a__as_declaration_specifier2properties__volatile_flag,
00207 bool a__as_declaration_specifier2properties__signed_flag,
00208 bool a__as_declaration_specifier2properties__unsigned_flag,
00209 bool a__as_declaration_specifier2properties__short_flag,
00210 bool a__as_declaration_specifier2properties__long_flag);
00211
00212
00213 virtual void gc_mark();
00214
00215 private:
00216
00217 srp< ::lestes::lang::cplus::sem::ss_type > other_type;
00218
00219 type_specifier_type type_specifier;
00220
00221 ss_storage_class::type storage_class;
00222
00223 bool explicit_flag;
00224
00225 bool inline_flag;
00226
00227 bool virtual_flag;
00228
00229 bool friend_flag;
00230
00231 bool const_flag;
00232
00233 bool volatile_flag;
00234
00235 bool signed_flag;
00236
00237 bool unsigned_flag;
00238
00239 bool short_flag;
00240
00241 bool long_flag;
00242 static ptr<reflection_list> reflection;
00243
00244 };
00245
00246
00247 end_package(sem);
00248 end_package(cplus);
00249 end_package(lang);
00250 end_package(lestes);
00251
00252 package(lestes);
00253 package(std);
00254 specialize_objectize_for_enum( ::lestes::lang::cplus::sem::as_declaration_specifier2properties::type_specifier_type );
00255 end_package(std);
00256 end_package(lestes);
00257
00258 #endif // lestes__lang__cplus__sem__as_declaration_specifier2properties_g_hh__included