retdec
|
A renamer of variable names by using the Hungarian notation. More...
#include <hungarian_var_renamer.h>
Public Member Functions | |
virtual std::string | getId () const override |
Returns the ID of the renamer. More... | |
![]() | |
void | renameVars (ShPtr< Module > module) |
Renames variables in the given module according to the settings set when constructing the renamer. More... | |
Static Public Member Functions | |
static ShPtr< VarRenamer > | create (ShPtr< VarNameGen > varNameGen, bool useDebugNames=true) |
Creates a new renamer. More... | |
Private Member Functions | |
HungarianVarRenamer (ShPtr< VarNameGen > varNameGen, bool useDebugNames) | |
Constructs a new renamer. More... | |
virtual void | renameGlobalVar (ShPtr< Variable > var) override |
Renames the given global variable. More... | |
virtual void | renameVarsInFunc (ShPtr< Function > func) override |
Renames variables in the given function. More... | |
virtual void | renameFuncParam (ShPtr< Variable > var, ShPtr< Function > func) override |
Renames the given parameter var of function func. More... | |
virtual void | renameFuncLocalVar (ShPtr< Variable > var, ShPtr< Function > func) override |
Renames the given local variable var of function func. More... | |
Private Attributes | |
UPtr< VarNameGen > | globalVarNameGen |
Generator of names for global variables. More... | |
UPtr< VarNameGen > | paramVarNameGen |
Generator of names for parameters. More... | |
UPtr< VarNameGen > | localVarNameGen |
Generator of names for local variables. More... | |
Additional Inherited Members | |
![]() | |
using | FuncStringSetMap = std::map< ShPtr< Function >, StringSet > |
Mapping of a function into a set of strings. More... | |
using | FuncByNameMap = std::map< std::string, ShPtr< Function > > |
Mapping of a function's name into the function. More... | |
![]() | |
VarRenamer (ShPtr< VarNameGen > varNameGen, bool useDebugNames=true) | |
Constructs a new variable renamer. More... | |
void | assignName (ShPtr< Variable > var, const std::string &name, ShPtr< Function > func=nullptr) |
Assigns name to the given variable var, possibly in the given function. More... | |
void | assignNameFromDebugInfoIfAvail (ShPtr< Variable > var, ShPtr< Function > func=nullptr) |
Assigns the name from debug information (if available) to the given variable. More... | |
bool | isGlobalVar (ShPtr< Variable > var) const |
Returns true if the given variable is global, false otherwise. More... | |
bool | isFunc (ShPtr< Variable > var) const |
Returns true if the given variable corresponds to a function, false otherwise. More... | |
bool | hasBeenRenamed (ShPtr< Variable > var) const |
Returns true if the given variable has already been renamed, false otherwise. More... | |
bool | nameExists (const std::string &name, ShPtr< Function > func=nullptr) const |
Returns true if the given name has already been assigned, false otherwise. More... | |
ShPtr< Function > | getFuncByName (const std::string &name) const |
Returns a function with the given name. More... | |
virtual void | doVarsRenaming () |
Renames the variables in module . More... | |
virtual void | renameUsingDebugNames () |
Renames all variables in the module by using the assigned names from debug information. More... | |
virtual void | renameGlobalVars () |
Renames all global variables in the module. More... | |
virtual void | renameVarsInFuncs () |
Renames the variables in all functions. More... | |
virtual void | visit (ShPtr< Variable > var) override |
virtual void | visit (ShPtr< GlobalVarDef > varDef) override |
virtual void | visit (ShPtr< Function > func) override |
virtual void | visit (ShPtr< AssignStmt > stmt) override |
virtual void | visit (ShPtr< BreakStmt > stmt) override |
virtual void | visit (ShPtr< CallStmt > stmt) override |
virtual void | visit (ShPtr< ContinueStmt > stmt) override |
virtual void | visit (ShPtr< EmptyStmt > stmt) override |
virtual void | visit (ShPtr< ForLoopStmt > stmt) override |
virtual void | visit (ShPtr< UForLoopStmt > stmt) override |
virtual void | visit (ShPtr< GotoStmt > stmt) override |
virtual void | visit (ShPtr< IfStmt > stmt) override |
virtual void | visit (ShPtr< ReturnStmt > stmt) override |
virtual void | visit (ShPtr< SwitchStmt > stmt) override |
virtual void | visit (ShPtr< UnreachableStmt > stmt) override |
virtual void | visit (ShPtr< VarDefStmt > stmt) override |
virtual void | visit (ShPtr< WhileLoopStmt > stmt) override |
virtual void | visit (ShPtr< AddOpExpr > expr) override |
virtual void | visit (ShPtr< AddressOpExpr > expr) override |
virtual void | visit (ShPtr< AndOpExpr > expr) override |
virtual void | visit (ShPtr< ArrayIndexOpExpr > expr) override |
virtual void | visit (ShPtr< AssignOpExpr > expr) override |
virtual void | visit (ShPtr< BitAndOpExpr > expr) override |
virtual void | visit (ShPtr< BitOrOpExpr > expr) override |
virtual void | visit (ShPtr< BitShlOpExpr > expr) override |
virtual void | visit (ShPtr< BitShrOpExpr > expr) override |
virtual void | visit (ShPtr< BitXorOpExpr > expr) override |
virtual void | visit (ShPtr< CallExpr > expr) override |
virtual void | visit (ShPtr< CommaOpExpr > expr) override |
virtual void | visit (ShPtr< DerefOpExpr > expr) override |
virtual void | visit (ShPtr< DivOpExpr > expr) override |
virtual void | visit (ShPtr< EqOpExpr > expr) override |
virtual void | visit (ShPtr< GtEqOpExpr > expr) override |
virtual void | visit (ShPtr< GtOpExpr > expr) override |
virtual void | visit (ShPtr< LtEqOpExpr > expr) override |
virtual void | visit (ShPtr< LtOpExpr > expr) override |
virtual void | visit (ShPtr< ModOpExpr > expr) override |
virtual void | visit (ShPtr< MulOpExpr > expr) override |
virtual void | visit (ShPtr< NegOpExpr > expr) override |
virtual void | visit (ShPtr< NeqOpExpr > expr) override |
virtual void | visit (ShPtr< NotOpExpr > expr) override |
virtual void | visit (ShPtr< OrOpExpr > expr) override |
virtual void | visit (ShPtr< StructIndexOpExpr > expr) override |
virtual void | visit (ShPtr< SubOpExpr > expr) override |
virtual void | visit (ShPtr< TernaryOpExpr > expr) override |
virtual void | visit (ShPtr< Variable > var) override |
virtual void | visit (ShPtr< BitCastExpr > expr) override |
virtual void | visit (ShPtr< ExtCastExpr > expr) override |
virtual void | visit (ShPtr< FPToIntCastExpr > expr) override |
virtual void | visit (ShPtr< IntToFPCastExpr > expr) override |
virtual void | visit (ShPtr< IntToPtrCastExpr > expr) override |
virtual void | visit (ShPtr< PtrToIntCastExpr > expr) override |
virtual void | visit (ShPtr< TruncCastExpr > expr) override |
virtual void | visit (ShPtr< ConstArray > constant) override |
virtual void | visit (ShPtr< ConstBool > constant) override |
virtual void | visit (ShPtr< ConstFloat > constant) override |
virtual void | visit (ShPtr< ConstInt > constant) override |
virtual void | visit (ShPtr< ConstNullPointer > constant) override |
virtual void | visit (ShPtr< ConstString > constant) override |
virtual void | visit (ShPtr< ConstStruct > constant) override |
virtual void | visit (ShPtr< ConstSymbol > constant) override |
virtual void | visit (ShPtr< ArrayType > type) override |
virtual void | visit (ShPtr< FloatType > type) override |
virtual void | visit (ShPtr< IntType > type) override |
virtual void | visit (ShPtr< PointerType > type) override |
virtual void | visit (ShPtr< StringType > type) override |
virtual void | visit (ShPtr< StructType > type) override |
virtual void | visit (ShPtr< FunctionType > type) override |
virtual void | visit (ShPtr< VoidType > type) override |
virtual void | visit (ShPtr< UnknownType > type) override |
![]() | |
OrderedAllVisitor (bool visitSuccessors=true, bool visitNestedStmts=true) | |
Constructs a new visitor. More... | |
virtual void | visitStmt (ShPtr< Statement > stmt, bool visitSuccessors=true, bool visitNestedStmts=true) |
Visits the given statement, and possibly its successors or nested statements. More... | |
void | restart (bool visitSuccessors=true, bool visitNestedStmts=true) |
"Restarts" the visitor so it is in the state like it was when it was created. More... | |
bool | makeAccessedAndCheckIfAccessed (ShPtr< Type > type) |
Makes the given type accessed. More... | |
virtual void | visit (ShPtr< GlobalVarDef > varDef) override |
virtual void | visit (ShPtr< Function > func) override |
virtual void | visit (ShPtr< AssignStmt > stmt) override |
virtual void | visit (ShPtr< BreakStmt > stmt) override |
virtual void | visit (ShPtr< CallStmt > stmt) override |
virtual void | visit (ShPtr< ContinueStmt > stmt) override |
virtual void | visit (ShPtr< EmptyStmt > stmt) override |
virtual void | visit (ShPtr< ForLoopStmt > stmt) override |
virtual void | visit (ShPtr< UForLoopStmt > stmt) override |
virtual void | visit (ShPtr< GotoStmt > stmt) override |
virtual void | visit (ShPtr< IfStmt > stmt) override |
virtual void | visit (ShPtr< ReturnStmt > stmt) override |
virtual void | visit (ShPtr< SwitchStmt > stmt) override |
virtual void | visit (ShPtr< UnreachableStmt > stmt) override |
virtual void | visit (ShPtr< VarDefStmt > stmt) override |
virtual void | visit (ShPtr< WhileLoopStmt > stmt) override |
virtual void | visit (ShPtr< AddOpExpr > expr) override |
virtual void | visit (ShPtr< AddressOpExpr > expr) override |
virtual void | visit (ShPtr< AndOpExpr > expr) override |
virtual void | visit (ShPtr< ArrayIndexOpExpr > expr) override |
virtual void | visit (ShPtr< AssignOpExpr > expr) override |
virtual void | visit (ShPtr< BitAndOpExpr > expr) override |
virtual void | visit (ShPtr< BitOrOpExpr > expr) override |
virtual void | visit (ShPtr< BitShlOpExpr > expr) override |
virtual void | visit (ShPtr< BitShrOpExpr > expr) override |
virtual void | visit (ShPtr< BitXorOpExpr > expr) override |
virtual void | visit (ShPtr< CallExpr > expr) override |
virtual void | visit (ShPtr< CommaOpExpr > expr) override |
virtual void | visit (ShPtr< DerefOpExpr > expr) override |
virtual void | visit (ShPtr< DivOpExpr > expr) override |
virtual void | visit (ShPtr< EqOpExpr > expr) override |
virtual void | visit (ShPtr< GtEqOpExpr > expr) override |
virtual void | visit (ShPtr< GtOpExpr > expr) override |
virtual void | visit (ShPtr< LtEqOpExpr > expr) override |
virtual void | visit (ShPtr< LtOpExpr > expr) override |
virtual void | visit (ShPtr< ModOpExpr > expr) override |
virtual void | visit (ShPtr< MulOpExpr > expr) override |
virtual void | visit (ShPtr< NegOpExpr > expr) override |
virtual void | visit (ShPtr< NeqOpExpr > expr) override |
virtual void | visit (ShPtr< NotOpExpr > expr) override |
virtual void | visit (ShPtr< OrOpExpr > expr) override |
virtual void | visit (ShPtr< StructIndexOpExpr > expr) override |
virtual void | visit (ShPtr< SubOpExpr > expr) override |
virtual void | visit (ShPtr< TernaryOpExpr > expr) override |
virtual void | visit (ShPtr< BitCastExpr > expr) override |
virtual void | visit (ShPtr< ExtCastExpr > expr) override |
virtual void | visit (ShPtr< FPToIntCastExpr > expr) override |
virtual void | visit (ShPtr< IntToFPCastExpr > expr) override |
virtual void | visit (ShPtr< IntToPtrCastExpr > expr) override |
virtual void | visit (ShPtr< PtrToIntCastExpr > expr) override |
virtual void | visit (ShPtr< TruncCastExpr > expr) override |
virtual void | visit (ShPtr< ConstArray > constant) override |
virtual void | visit (ShPtr< ConstBool > constant) override |
virtual void | visit (ShPtr< ConstFloat > constant) override |
virtual void | visit (ShPtr< ConstInt > constant) override |
virtual void | visit (ShPtr< ConstNullPointer > constant) override |
virtual void | visit (ShPtr< ConstString > constant) override |
virtual void | visit (ShPtr< ConstStruct > constant) override |
virtual void | visit (ShPtr< ConstSymbol > constant) override |
virtual void | visit (ShPtr< ArrayType > type) override |
virtual void | visit (ShPtr< FloatType > type) override |
virtual void | visit (ShPtr< IntType > type) override |
virtual void | visit (ShPtr< PointerType > type) override |
virtual void | visit (ShPtr< StringType > type) override |
virtual void | visit (ShPtr< StructType > type) override |
virtual void | visit (ShPtr< FunctionType > type) override |
virtual void | visit (ShPtr< VoidType > type) override |
virtual void | visit (ShPtr< UnknownType > type) override |
![]() | |
Visitor ()=default | |
virtual | ~Visitor ()=default |
![]() | |
ShPtr< VarNameGen > | varNameGen |
Used generator of variable names. More... | |
bool | useDebugNames |
Should we use variable names from debugging information? More... | |
ShPtr< Module > | module |
Module in which the variables are being renamed. More... | |
VarSet | globalVars |
FuncByNameMap | funcsByName |
VarSet | renamedVars |
Variables which have already been renamed. More... | |
StringSet | globalVarsNames |
Assigned names of global variables. More... | |
FuncStringSetMap | localVarsNames |
ShPtr< Function > | currFunc |
The currently visited function. More... | |
![]() | |
ShPtr< Statement > | lastStmt |
Statement that has been accessed as the last one. More... | |
StmtUSet | accessedStmts |
A set of all accessed statements. More... | |
TypeUSet | accessedTypes |
A set of all accessed types. More... | |
bool | visitSuccessors |
Should statements' successor be accessed? More... | |
bool | visitNestedStmts |
Should nested statements be accessed? More... | |
A renamer of variable names by using the Hungarian notation.
It names variables like UnifiedVarRenamer, but prefixes them by their type (like i_v1
for an integral local variable v1
).
List of supported types:
i_
for IntTypef_
for FloatTypep_
for PointerTypex_
for unsupported typeUse create() to create instances.
|
private |
Constructs a new renamer.
For more details, see create().
|
static |
Creates a new renamer.
[in] | varNameGen | Used generator of variable names (not used in this renamer). |
[in] | useDebugNames | Should we use variable names from debugging information? |
|
overridevirtual |
Returns the ID of the renamer.
Implements retdec::llvmir2hll::VarRenamer.
|
overrideprivatevirtual |
Renames the given local variable var of function func.
By default, it uses varNameGen
to generate a new name for the variable.
Reimplemented from retdec::llvmir2hll::VarRenamer.
|
overrideprivatevirtual |
Renames the given parameter var of function func.
By default, it uses varNameGen
to generate a new name for the variable.
Reimplemented from retdec::llvmir2hll::VarRenamer.
|
overrideprivatevirtual |
Renames the given global variable.
By default, it uses varNameGen
to generate a new name for the variable.
Reimplemented from retdec::llvmir2hll::VarRenamer.
|
overrideprivatevirtual |
Renames variables in the given function.
By default, it sets currFunc
, calls renameFuncParam() on every function parameter that has not yet been renamed. Then, if func is a definition, it calls visitStmt
(func->getBody()) to call renameFuncLocalVar() on every local variable in the function.
Reimplemented from retdec::llvmir2hll::VarRenamer.
|
private |
Generator of names for global variables.
|
private |
Generator of names for local variables.
|
private |
Generator of names for parameters.