00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef lestes__lang__cplus__sem__sa_simple_declaration_g_hh__included
00012 #define lestes__lang__cplus__sem__sa_simple_declaration_g_hh__included
00013
00014 #include <lestes/common.hh>
00015
00016 #include <lestes/std/objectize_macros.hh>
00017 package(lestes);
00018 package(lang);
00019 package(cplus);
00020 package(sem);
00021 class as_declarator;
00022 end_package(sem);
00023 end_package(cplus);
00024 end_package(lang);
00025 end_package(lestes);
00026
00027 package(lestes);
00028 package(lang);
00029 package(cplus);
00030 package(sem);
00031 class as_declarator_op_func;
00032 end_package(sem);
00033 end_package(cplus);
00034 end_package(lang);
00035 end_package(lestes);
00036
00037 package(lestes);
00038 package(lang);
00039 package(cplus);
00040 package(sem);
00041 class as_declaration_specifier_seq;
00042 end_package(sem);
00043 end_package(cplus);
00044 end_package(lang);
00045 end_package(lestes);
00046
00047 package(lestes);
00048 package(lang);
00049 package(cplus);
00050 package(sem);
00051 class as_type_specifier_seq;
00052 end_package(sem);
00053 end_package(cplus);
00054 end_package(lang);
00055 end_package(lestes);
00056
00057 package(lestes);
00058 package(lang);
00059 package(cplus);
00060 package(sem);
00061 class sa_context;
00062 end_package(sem);
00063 end_package(cplus);
00064 end_package(lang);
00065 end_package(lestes);
00066
00067 package(lestes);
00068 package(lang);
00069 package(cplus);
00070 package(sem);
00071 class sa_declaration_specifiers;
00072 end_package(sem);
00073 end_package(cplus);
00074 end_package(lang);
00075 end_package(lestes);
00076
00077 package(lestes);
00078 package(lang);
00079 package(cplus);
00080 package(sem);
00081
00082
00083 class sa_simple_declaration;
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093 class sa_simple_declaration : public object {
00094 public:
00095
00096 void save_declaration_specifiers(ptr< ::lestes::lang::cplus::sem::as_declaration_specifier_seq > specifiers);
00097
00098
00099 void save_type_specifiers(ptr< ::lestes::lang::cplus::sem::as_type_specifier_seq > specifiers);
00100
00101
00102 void process(ptr< ::lestes::lang::cplus::sem::as_declarator > declarator);
00103
00104
00105 void process_typedef(ptr< ::lestes::lang::cplus::sem::sa_context > ctx, ptr< ::lestes::lang::cplus::sem::sa_declaration_specifiers > specifiers, ptr< ::lestes::lang::cplus::sem::as_declarator > declarator);
00106
00107
00108 void process_object_declaration(ptr< ::lestes::lang::cplus::sem::sa_context > ctx, ptr< ::lestes::lang::cplus::sem::sa_declaration_specifiers > specifiers, ptr< ::lestes::lang::cplus::sem::as_declarator > declarator);
00109
00110
00111 void process_function_declaration(ptr< ::lestes::lang::cplus::sem::sa_context > ctx, ptr< ::lestes::lang::cplus::sem::as_declarator_op_func > op_func, ptr< ::lestes::lang::cplus::sem::sa_declaration_specifiers > specifiers, ptr< ::lestes::lang::cplus::sem::as_declarator > declarator);
00112
00113
00114
00115 static ptr< sa_simple_declaration > instance ();
00116
00117
00118
00119
00120 virtual ptr<reflection_list> reflection_get() const;
00121
00122 virtual ptr<field_list_list> field_values_get() const;
00123
00124 protected:
00125
00126 sa_simple_declaration (
00127 );
00128
00129
00130 virtual void gc_mark();
00131
00132 private:
00133 static ptr<reflection_list> reflection;
00134 static ptr<sa_simple_declaration> the_instance;
00135
00136 };
00137
00138
00139 end_package(sem);
00140 end_package(cplus);
00141 end_package(lang);
00142 end_package(lestes);
00143
00144 #endif // lestes__lang__cplus__sem__sa_simple_declaration_g_hh__included