00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef lestes__md__symbols__name_mangler_g_hh__included
00010 #define lestes__md__symbols__name_mangler_g_hh__included
00011
00012 #include <lestes/md/common.hh>
00013 #include <lestes/lang/cplus/sem/ss_misc.g.hh>
00014
00015 #include <lestes/std/objectize_macros.hh>
00016 package(lestes);
00017 package(std);
00018 class object;
00019 end_package(std);
00020 end_package(lestes);
00021
00022 package(lestes);
00023 package(md);
00024 package(symbols);
00025
00026
00027 class name_mangler;
00028
00029
00030
00031 class name_mangler : public ::lestes::std::object {
00032 public:
00033
00034 static ptr< name_mangler > singleton_instance_get();
00035
00036
00037 static void singleton_instance_set(const ptr< name_mangler > &);
00038
00039 static ptr< name_mangler > instance();
00040
00041
00042 lstring mangle(ptr< ::lestes::lang::cplus::sem::ss_declaration > decl);
00043
00044
00045 lstring wchar_escapes_replace(lstring name);
00046
00047
00048
00049 static ptr< name_mangler > create (
00050 );
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 name_mangler (
00062 );
00063
00064
00065 virtual void gc_mark();
00066
00067 private:
00068 static ptr< name_mangler > singleton_instance;
00069 static ptr<reflection_list> reflection;
00070
00071 };
00072
00073
00074 end_package(symbols);
00075 end_package(md);
00076 end_package(lestes);
00077
00078 #endif // lestes__md__symbols__name_mangler_g_hh__included