00001 #ifndef mangling_support_INCLUDED
00002 #define mangling_support_INCLUDED
00003 std::string replaceNonAlphaNum (const std::string& s);
00004
00006 std::string trimSpaces (const std::string& s);
00007
00008 #if 0
00010 bool isValidMangledName (std::string name);
00011 #endif
00012
00014 std::string joinMangledQualifiersToString (const std::string& base, const std::string& name);
00015
00017 SgName joinMangledQualifiers (const SgName& base, const SgName& name);
00018
00020 const SgFunctionDefinition* findRootFunc (const SgScopeStatement* scope);
00021
00022
00023
00024
00025
00034 size_t getLocalScopeNum (const SgFunctionDefinition* func_def, const SgScopeStatement* target);
00035
00036
00038 std::string mangleLocalScopeToString (const SgScopeStatement* scope);
00039
00045 std::string mangleQualifiersToString (const SgScopeStatement* scope);
00046
00050 SgName mangleQualifiers (const SgScopeStatement* scope);
00051
00059 std::string mangleTypesToString (const SgTypePtrList::const_iterator b, const SgTypePtrList::const_iterator e);
00060
00064 SgName mangleTypes (const SgTypePtrList::const_iterator b, const SgTypePtrList::const_iterator e);
00065
00082 std::string mangleFunctionNameToString (const std::string& s, const std::string& ret_type_name = std::string (""));
00083
00087 SgName mangleFunctionName (const SgName& n, const SgName& ret_type_name = SgName (""));
00088
00095 std::string mangleTemplateArgsToString (const SgTemplateArgumentPtrList::const_iterator b, const SgTemplateArgumentPtrList::const_iterator e);
00096
00097 #if 0
00098
00102 SgName mangleTemplateArgs (const SgTemplateArgumentPtrList::const_iterator b, const SgTemplateArgumentPtrList::const_iterator e);
00103 #endif
00104
00115 std::string mangleTemplateToString (const std::string& templ_name,
00116 const SgTemplateArgumentPtrList& templ_args,
00117 const SgScopeStatement* scope);
00118
00120 SgName mangleTemplate (const SgName& templ_name,
00121 const SgTemplateArgumentPtrList& templ_args,
00122 const SgScopeStatement* scope);
00123
00135 std::string
00136 mangleTemplateFunctionToString (const std::string& templ_name,
00137 const SgTemplateArgumentPtrList& templ_args,
00138 const SgFunctionType* func_type,
00139 const SgScopeStatement* scope);
00140
00145 SgName
00146 mangleTemplateFunction (const std::string& templ_name,
00147 const SgTemplateArgumentPtrList& templ_args,
00148 const SgFunctionType* func_type,
00149 const SgScopeStatement* scope);
00150
00152 std::string mangleSgValueExp (const SgBoolValExp* expr);
00153
00155 std::string mangleValueExp (const SgValueExp* expr);
00156
00161 std::string mangleExpression (const SgExpression* expr);
00162
00166 std::string mangleTranslationUnitQualifiers (const SgDeclarationStatement* decl);
00167
00168 #if 0
00169
00170
00177 template <class SgValueExpType_>
00178 std::string
00179 mangleSgValueExp (const SgValueExpType_* expr)
00180 {
00181
00182 ROSE_ASSERT (isSgValueExp (expr) || !expr);
00183
00184 ostringstream mangled_name;
00185 if (expr)
00186 mangled_name << expr->get_value ();
00187 return mangled_name.str ();
00188 }
00189 #endif
00190
00191 #endif // mangling_support_INCLUDED