00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef lestes__md__symbols__symbol_register_g_hh__included
00010 #define lestes__md__symbols__symbol_register_g_hh__included
00011
00012 #include <lestes/md/common.hh>
00013 #include <lestes/std/set.hh>
00014 #include <lestes/md/symbols/symbol_register_base.g.hh>
00015
00016 #include <lestes/std/objectize_macros.hh>
00017 package(lestes);
00018 package(lang);
00019 package(cplus);
00020 package(sem);
00021 class ss_declaration;
00022 end_package(sem);
00023 end_package(cplus);
00024 end_package(lang);
00025 end_package(lestes);
00026
00027 package(lestes);
00028 package(md);
00029 package(symbols);
00030
00031
00032 class symbol_register;
00033
00034
00035
00036
00037
00038
00039
00040
00041 class symbol_register : public symbol_register_base {
00042 public:
00043
00044 static ptr< symbol_register > singleton_instance_get();
00045
00046
00047 static void singleton_instance_set(const ptr< symbol_register > &);
00048
00049
00050 ptr< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > > externals_get() const;
00051
00052
00053 void externals_set(const ptr< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > > & );
00054
00055
00056 ptr< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > > globals_get() const;
00057
00058
00059 void globals_set(const ptr< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > > & );
00060
00061
00062 ptr< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > > internals_get() const;
00063
00064
00065 void internals_set(const ptr< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > > & );
00066
00067 static ptr< symbol_register > instance();
00068
00069
00070 void register_external(ptr< ::lestes::lang::cplus::sem::ss_declaration > symbol);
00071
00072
00073 void register_global(ptr< ::lestes::lang::cplus::sem::ss_declaration > symbol);
00074
00075
00076 void register_internal(ptr< ::lestes::lang::cplus::sem::ss_declaration > symbol);
00077
00078
00079 virtual void register_symbol(ptr< ::lestes::lang::cplus::sem::ss_declaration > symbol);
00080
00081
00082 void emit_global_declarations(::std::ostream& output);
00083
00084
00085
00086 static ptr< symbol_register > create (
00087 ptr< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > > a__symbol_register__externals,
00088 ptr< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > > a__symbol_register__globals,
00089 ptr< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > > a__symbol_register__internals);
00090
00091
00092 static ptr< symbol_register > create (
00093 );
00094
00095
00096
00097
00098 virtual ptr<reflection_list> reflection_get() const;
00099
00100 virtual ptr<field_list_list> field_values_get() const;
00101
00102 protected:
00103
00104 symbol_register (
00105 ptr< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > > a__symbol_register__externals,
00106 ptr< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > > a__symbol_register__globals,
00107 ptr< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > > a__symbol_register__internals);
00108
00109
00110 virtual void gc_mark();
00111
00112 private:
00113 static ptr< symbol_register > singleton_instance;
00114
00115 srp< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > > externals;
00116
00117 srp< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > > globals;
00118
00119 srp< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > > internals;
00120 static ptr<reflection_list> reflection;
00121
00122 };
00123
00124
00125 end_package(symbols);
00126 end_package(md);
00127 end_package(lestes);
00128
00129 #endif // lestes__md__symbols__symbol_register_g_hh__included