00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef lestes__md__symbols__symbol_register_base_g_hh__included
00010 #define lestes__md__symbols__symbol_register_base_g_hh__included
00011
00012 #include <lestes/md/common.hh>
00013
00014 #include <lestes/std/objectize_macros.hh>
00015 package(lestes);
00016 package(std);
00017 class object;
00018 end_package(std);
00019 end_package(lestes);
00020
00021 package(lestes);
00022 package(lang);
00023 package(cplus);
00024 package(sem);
00025 class ss_declaration;
00026 end_package(sem);
00027 end_package(cplus);
00028 end_package(lang);
00029 end_package(lestes);
00030
00031 package(lestes);
00032 package(md);
00033 package(symbols);
00034
00035
00036 class symbol_register_base;
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047 class symbol_register_base : public ::lestes::std::object {
00048 public:
00049
00050 virtual void register_symbol(ptr< ::lestes::lang::cplus::sem::ss_declaration > symbol) abstract;
00051
00052
00053
00054
00055 virtual ptr<reflection_list> reflection_get() const;
00056
00057 virtual ptr<field_list_list> field_values_get() const;
00058
00059 protected:
00060
00061 symbol_register_base (
00062 );
00063
00064
00065 virtual void gc_mark();
00066
00067 private:
00068 static ptr<reflection_list> reflection;
00069
00070 };
00071
00072
00073 end_package(symbols);
00074 end_package(md);
00075 end_package(lestes);
00076
00077 #endif // lestes__md__symbols__symbol_register_base_g_hh__included