RenameFunction Class Reference

#include <Obfuscator.h>

Inheritance diagram for RenameFunction:

Inheritance graph
[legend]
Collaboration diagram for RenameFunction:

Collaboration graph
[legend]

Detailed Description

Definition at line 42 of file Obfuscator.h.


Public Member Functions

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

Constructor & Destructor Documentation

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

Definition at line 45 of file Obfuscator.h.

00045 {}


Member Function Documentation

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

Implements Obfuscator.

Definition at line 226 of file Obfuscator.cpp.

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

00226                                                                                                               {
00227     // for every names in the class, generate a new *unique* name
00228     map<string, string> funcNames;
00229     for (MapFunctions::iterator iter = func->begin(); iter != func->end(); ++iter)
00230     {
00231         string newName = generateName();
00232         funcNames.insert(make_pair(iter->first, newName));      
00233     }
00234     map<string, string>::iterator cter;
00235     tree<AstNode>::iterator parent;
00236     for (tree<AstNode>::iterator iter=tr.begin(); iter!=tr.end(); ++iter)
00237     {
00238         parent = tr.parent(iter);
00239         if (iter->getType() == "text" 
00240             && parent->getType() == "T_STRING" 
00241             && (tr.parent(parent)->getType() == "unticked_function_declaration_statement" 
00242                 || tr.parent(parent)->getType() == "function_call")
00243             && ((cter=funcNames.find(iter->getValue())) != funcNames.end())) {
00244             // rename the currenet node
00245             iter->setValue(cter->second);
00246         }           
00247     }       
00248 }

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:16 2008 for php.ast.svn.src. by  doxygen 1.5.3