00001
00002
00003 #ifndef lestes__lang__cplus__sem__as_class_key_to_ss_struct_base_g_hh__included
00004 #define lestes__lang__cplus__sem__as_class_key_to_ss_struct_base_g_hh__included
00005
00006 #include <lestes/common.hh>
00007 #include <lestes/lang/cplus/sem/as_class_key_visitor.v.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 ss_decl_seq;
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 ss_struct_base;
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_base_specifier;
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
00057
00058 class as_class_key_to_ss_struct_base;
00059
00060
00061
00062
00063
00064
00065 class as_class_key_to_ss_struct_base : public as_class_key_visitor {
00066 public:
00067
00068 ptr< ::lestes::lang::cplus::sem::ss_decl_seq > decl_seq_get() const;
00069
00070
00071 void decl_seq_set(const ptr< ::lestes::lang::cplus::sem::ss_decl_seq > &);
00072
00073
00074 ptr< ::lestes::std::list< srp< ::lestes::lang::cplus::sem::ss_base_specifier > > > bases_get() const;
00075
00076
00077 void bases_set(const ptr< ::lestes::std::list< srp< ::lestes::lang::cplus::sem::ss_base_specifier > > > & );
00078
00079
00080 ptr< ::lestes::lang::cplus::sem::ss_struct_base > struct_base_get() const;
00081
00082
00083 void struct_base_set(const ptr< ::lestes::lang::cplus::sem::ss_struct_base > &);
00084
00085 void class_or_struct();
00086
00087 virtual void visit_as_class_key_class(ptr< ::lestes::lang::cplus::sem::as_class_key_class > );
00088
00089 virtual void visit_as_class_key_struct(ptr< ::lestes::lang::cplus::sem::as_class_key_struct > );
00090
00091 virtual void visit_as_class_key_union(ptr< ::lestes::lang::cplus::sem::as_class_key_union > );
00092
00093
00094
00095 static ptr< as_class_key_to_ss_struct_base > create (
00096 ptr< ::lestes::lang::cplus::sem::ss_decl_seq > a__as_class_key_to_ss_struct_base__decl_seq,
00097 ptr< ::lestes::std::list< srp< ::lestes::lang::cplus::sem::ss_base_specifier > > > a__as_class_key_to_ss_struct_base__bases,
00098 ptr< ::lestes::lang::cplus::sem::ss_struct_base > a__as_class_key_to_ss_struct_base__struct_base);
00099
00100
00101 static ptr< as_class_key_to_ss_struct_base > create (
00102 ptr< ::lestes::lang::cplus::sem::ss_decl_seq > a__as_class_key_to_ss_struct_base__decl_seq,
00103 ptr< ::lestes::std::list< srp< ::lestes::lang::cplus::sem::ss_base_specifier > > > a__as_class_key_to_ss_struct_base__bases);
00104
00105
00106
00107 ptr< ::lestes::lang::cplus::sem::ss_struct_base > process( const ptr< ::lestes::lang::cplus::sem::as_class_key > & );
00108
00109
00110 virtual ptr<reflection_list> reflection_get() const;
00111
00112 virtual ptr<field_list_list> field_values_get() const;
00113
00114 protected:
00115
00116 as_class_key_to_ss_struct_base (
00117 ptr< ::lestes::lang::cplus::sem::ss_decl_seq > a__as_class_key_to_ss_struct_base__decl_seq,
00118 ptr< ::lestes::std::list< srp< ::lestes::lang::cplus::sem::ss_base_specifier > > > a__as_class_key_to_ss_struct_base__bases,
00119 ptr< ::lestes::lang::cplus::sem::ss_struct_base > a__as_class_key_to_ss_struct_base__struct_base);
00120
00121
00122 virtual void gc_mark();
00123
00124 private:
00125 srp< ::lestes::lang::cplus::sem::ss_decl_seq > decl_seq;
00126 srp< ::lestes::std::list< srp< ::lestes::lang::cplus::sem::ss_base_specifier > > > bases;
00127 srp< ::lestes::lang::cplus::sem::ss_struct_base > struct_base;
00128 static ptr<reflection_list> reflection;
00129
00130 };
00131
00132
00133 end_package(sem);
00134 end_package(cplus);
00135 end_package(lang);
00136 end_package(lestes);
00137
00138 #endif // lestes__lang__cplus__sem__as_class_key_to_ss_struct_base_g_hh__included