00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef lestes__lang__cplus__sem__ss_decl2lstring_base_g_hh__included
00010 #define lestes__lang__cplus__sem__ss_decl2lstring_base_g_hh__included
00011
00012 #include <lestes/common.hh>
00013 #include <lestes/std/map.hh>
00014 #include <lestes/lang/cplus/sem/ss_declaration_visitor.v.g.hh>
00015
00016 #include <lestes/std/objectize_macros.hh>
00017 package(lestes);
00018 package(lang);
00019 package(cplus);
00020 package(sem);
00021
00022
00023 class ss_decl2mangled_name;
00024
00025
00026
00027 class ss_decl2mangled_name : public ss_declaration_visitor {
00028 public:
00029
00030 static ptr< ss_decl2mangled_name > singleton_instance_get();
00031
00032
00033 static void singleton_instance_set(const ptr< ss_decl2mangled_name > &);
00034
00035
00036 ulint level_get() const;
00037
00038
00039 void level_set(ulint);
00040
00041
00042 lstring result_get() const;
00043
00044
00045 void result_set(lstring);
00046
00047
00048 ptr< ::lestes::std::map< lstring, lstring > > substitutions_get() const;
00049
00050
00051 void substitutions_set(const ptr< ::lestes::std::map< lstring, lstring > > & );
00052
00053
00054 lstring get_substitution(lstring mangled_name);
00055
00056 static ptr< ss_decl2mangled_name > instance();
00057
00058 void init();
00059
00060 virtual void visit_ss_namespace_definition(ptr< ::lestes::lang::cplus::sem::ss_namespace_definition > );
00061
00062 virtual void visit_ss_object_declaration(ptr< ::lestes::lang::cplus::sem::ss_object_declaration > );
00063
00064 virtual void visit_ss_bitfield_declaration(ptr< ::lestes::lang::cplus::sem::ss_bitfield_declaration > );
00065
00066 virtual void visit_ss_parameter_declaration(ptr< ::lestes::lang::cplus::sem::ss_parameter_declaration > );
00067
00068 virtual void visit_ss_fake_declaration(ptr< ::lestes::lang::cplus::sem::ss_fake_declaration > );
00069
00070 virtual void visit_ss_injected_class_declaration(ptr< ::lestes::lang::cplus::sem::ss_injected_class_declaration > );
00071
00072 virtual void visit_ss_enum_definition(ptr< ::lestes::lang::cplus::sem::ss_enum_definition > );
00073
00074 virtual void visit_ss_typedef_definition(ptr< ::lestes::lang::cplus::sem::ss_typedef_definition > );
00075
00076 virtual void visit_ss_enumerator_declaration(ptr< ::lestes::lang::cplus::sem::ss_enumerator_declaration > );
00077
00078 virtual void visit_ss_structure_declaration(ptr< ::lestes::lang::cplus::sem::ss_structure_declaration > );
00079
00080 virtual void visit_ss_function_declaration(ptr< ::lestes::lang::cplus::sem::ss_function_declaration > );
00081
00082 virtual void visit_ss_method_declaration(ptr< ::lestes::lang::cplus::sem::ss_method_declaration > );
00083
00084 virtual void visit_ss_using_declaration(ptr< ::lestes::lang::cplus::sem::ss_using_declaration > );
00085
00086 virtual void visit_ss_compound_stmt_declaration(ptr< ::lestes::lang::cplus::sem::ss_compound_stmt_declaration > );
00087
00088 virtual void visit_ss_builtin_operator_declaration(ptr< ::lestes::lang::cplus::sem::ss_builtin_operator_declaration > );
00089
00090
00091
00092 static ptr< ss_decl2mangled_name > create (
00093 ulint a__ss_decl2mangled_name__level,
00094 lstring a__ss_decl2mangled_name__result,
00095 ptr< ::lestes::std::map< lstring, lstring > > a__ss_decl2mangled_name__substitutions);
00096
00097
00098 static ptr< ss_decl2mangled_name > create (
00099 );
00100
00101
00102
00103 lstring process( const ptr< ::lestes::lang::cplus::sem::ss_declaration > & );
00104
00105
00106 virtual ptr<reflection_list> reflection_get() const;
00107
00108 virtual ptr<field_list_list> field_values_get() const;
00109
00110 protected:
00111
00112 ss_decl2mangled_name (
00113 ulint a__ss_decl2mangled_name__level,
00114 lstring a__ss_decl2mangled_name__result,
00115 ptr< ::lestes::std::map< lstring, lstring > > a__ss_decl2mangled_name__substitutions);
00116
00117
00118 virtual void gc_mark();
00119
00120 private:
00121 static ptr< ss_decl2mangled_name > singleton_instance;
00122 ulint level;
00123 lstring result;
00124 srp< ::lestes::std::map< lstring, lstring > > substitutions;
00125 static ptr<reflection_list> reflection;
00126
00127 };
00128
00129
00130 end_package(sem);
00131 end_package(cplus);
00132 end_package(lang);
00133 end_package(lestes);
00134
00135 #endif // lestes__lang__cplus__sem__ss_decl2lstring_base_g_hh__included