diff --git a/src/base/loader/symtab.hh b/src/base/loader/symtab.hh index 561054492b..c148289bdd 100644 --- a/src/base/loader/symtab.hh +++ b/src/base/loader/symtab.hh @@ -153,6 +153,21 @@ class SymbolTable return operate(op); } + /// Modify symbol name with a given transform function. + /// @param func The transform function accepting the reference of + /// symbol name. + /// @retval SymbolTablePtr A pointer to the modified SymbolTable copy. + SymbolTablePtr + rename(std::function func) const + { + SymTabOp op = [func](SymbolTable &symtab, const Symbol &symbol) { + Symbol sym = symbol; + func(sym.name); + symtab.insert(sym); + }; + return operate(op); + } + SymbolTablePtr globals() const {