00001
00002
00003 #ifndef lestes__lang__cplus__sem__sa_class_declaration_g_hh__included
00004 #define lestes__lang__cplus__sem__sa_class_declaration_g_hh__included
00005
00006 #include <lestes/common.hh>
00007 #include <lestes/lang/cplus/sem/ss_enums.g.hh>
00008
00009 #include <lestes/std/objectize_macros.hh>
00010 package(lestes);
00011 package(std);
00012 class object;
00013 end_package(std);
00014 end_package(lestes);
00015
00016 package(lestes);
00017 package(std);
00018 class source_location;
00019 end_package(std);
00020 end_package(lestes);
00021
00022 package(lestes);
00023 package(lang);
00024 package(cplus);
00025 package(sem);
00026 class as_class_specifier;
00027 end_package(sem);
00028 end_package(cplus);
00029 end_package(lang);
00030 end_package(lestes);
00031
00032 package(lestes);
00033 package(lang);
00034 package(cplus);
00035 package(sem);
00036 class as_name;
00037 end_package(sem);
00038 end_package(cplus);
00039 end_package(lang);
00040 end_package(lestes);
00041
00042 package(lestes);
00043 package(lang);
00044 package(cplus);
00045 package(sem);
00046 class ss_decl_seq;
00047 end_package(sem);
00048 end_package(cplus);
00049 end_package(lang);
00050 end_package(lestes);
00051
00052 package(lestes);
00053 package(lang);
00054 package(cplus);
00055 package(sem);
00056 class ss_decl_name;
00057 end_package(sem);
00058 end_package(cplus);
00059 end_package(lang);
00060 end_package(lestes);
00061
00062 package(lestes);
00063 package(lang);
00064 package(cplus);
00065 package(sem);
00066 class ss_structure_declaration;
00067 end_package(sem);
00068 end_package(cplus);
00069 end_package(lang);
00070 end_package(lestes);
00071
00072 package(lestes);
00073 package(lang);
00074 package(cplus);
00075 package(sem);
00076
00077
00078 class sa_class_declaration;
00079
00080
00081
00082
00083
00084
00085 class sa_class_declaration : public ::lestes::std::object {
00086 public:
00087 void process(ptr< ::lestes::lang::cplus::sem::as_class_specifier > cs);
00088
00089 void process_end(ptr< ::lestes::std::source_location > location);
00090
00091 void process_undeclared(ptr< ::lestes::lang::cplus::sem::as_class_specifier > cs);
00092
00093 void process_declared(ptr< ::lestes::lang::cplus::sem::as_class_specifier > cs, ptr< ::lestes::lang::cplus::sem::ss_structure_declaration > dn);
00094
00095 void process_forward_declaration(ptr< ::lestes::lang::cplus::sem::as_class_specifier > cs);
00096
00097 ptr< ::lestes::lang::cplus::sem::ss_structure_declaration > insert_class_forward_into_scope(ptr< ::lestes::lang::cplus::sem::as_class_specifier > cs, bool visibly, ptr< ::lestes::lang::cplus::sem::ss_decl_seq > scope);
00098
00099 void new_context(ptr< ::lestes::std::source_location > location, ss_access_specifier::type access_specifier, ptr< ::lestes::lang::cplus::sem::ss_decl_seq > scope, ptr< ::lestes::lang::cplus::sem::as_name > name);
00100
00101
00102
00103 static ptr< sa_class_declaration > create (
00104 );
00105
00106
00107
00108
00109 virtual ptr<reflection_list> reflection_get() const;
00110
00111 virtual ptr<field_list_list> field_values_get() const;
00112
00113 protected:
00114
00115 sa_class_declaration (
00116 );
00117
00118
00119 virtual void gc_mark();
00120
00121 private:
00122 static ptr<reflection_list> reflection;
00123
00124 };
00125
00126
00127 end_package(sem);
00128 end_package(cplus);
00129 end_package(lang);
00130 end_package(lestes);
00131
00132 #endif // lestes__lang__cplus__sem__sa_class_declaration_g_hh__included