RenameVariable Class Reference

#include <Obfuscator.h>

Inheritance diagram for RenameVariable:

Inheritance graph
[legend]
Collaboration diagram for RenameVariable:

Collaboration graph
[legend]

Detailed Description

Definition at line 50 of file Obfuscator.h.


Public Member Functions

virtual ~RenameVariable ()
virtual void operator() (tree< AstNode > &, MapClasses *classes=0, MapVariables *vars=0, MapFunctions *func=0)

Constructor & Destructor Documentation

virtual RenameVariable::~RenameVariable (  )  [inline, virtual]

Definition at line 53 of file Obfuscator.h.

00053 {}


Member Function Documentation

void RenameVariable::operator() ( tree< AstNode > &  tr,
MapClasses classes = 0,
MapVariables vars = 0,
MapFunctions func = 0 
) [virtual]

Implements Obfuscator.

Definition at line 251 of file Obfuscator.cpp.

References tree< T, tree_node_allocator >::begin(), tree< T, tree_node_allocator >::end(), and generateName().

00251                                                                                                               {
00252 
00253     // for every names in the class, generate a new *unique* name
00254     map<string, string> varNames;
00255     for (MapVariables::iterator iter = vars->begin(); iter != vars->end(); ++iter)
00256     {
00257         string newName = "$" + generateName();
00258         varNames.insert(make_pair(iter->first, newName));       
00259     }
00260     map<string, string>::iterator cter;
00261     for (tree<AstNode>::iterator iter=tr.begin(); iter!=tr.end(); ++iter)
00262     {
00263         if (iter->getType() == "text" && ((cter=varNames.find(iter->getValue())) != varNames.end())) {
00264             // rename the currenet node
00265             iter->setValue(cter->second);
00266         }           
00267     }       
00268 }

Here is the call graph for this function:


The documentation for this class was generated from the following files:
Generated on Wed Feb 27 20:32:17 2008 for php.ast.svn.src. by  doxygen 1.5.3