manglingSupport.h

Go to the documentation of this file.
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 //         New code added to support better name mangling
00024 // *****************************************************************
00025 
00034 size_t getLocalScopeNum (const SgFunctionDefinition* func_def, const SgScopeStatement* target);
00035 // size_t getLocalScopeNum ( SgFunctionDefinition* func_def, const SgScopeStatement* target);
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 // DQ (2/7/2006): This function is not used or required.
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 // DQ (3/29/2006): I think this is only required interanlly in the mangledSupport.C file (where it is defined)
00170 
00177 template <class SgValueExpType_>
00178 std::string
00179 mangleSgValueExp (const SgValueExpType_* expr)
00180   {
00181     // Verify that SgValueExpType_ descends from SgValueExp.
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

Generated on Sat May 19 00:53:06 2012 for ROSE by  doxygen 1.4.7