RenameClass Class Reference

#include <Obfuscator.h>

Inheritance diagram for RenameClass:

Inheritance graph
[legend]
Collaboration diagram for RenameClass:

Collaboration graph
[legend]

Detailed Description

Definition at line 35 of file Obfuscator.h.


Public Member Functions

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

Constructor & Destructor Documentation

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

Definition at line 38 of file Obfuscator.h.

00038 {}


Member Function Documentation

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

Implements Obfuscator.

Definition at line 198 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().

00198                                                                                                            {
00199     // for every names in the class, generate a new *unique* name
00200     map<string, string> classNames;
00201     for (MapClasses::iterator iter = classes->begin(); iter != classes->end(); ++iter)
00202     {
00203         string newName = generateName();
00204         classNames.insert(make_pair(iter->first, newName));     
00205     }
00206     map<string, string>::iterator cter;
00207     tree<AstNode>::iterator parent;
00208     for (tree<AstNode>::iterator iter=tr.begin(); iter!=tr.end(); ++iter)
00209     {
00210         parent = tr.parent(iter);
00211         if (iter->getType() == "text" 
00212             && parent->getType() == "T_STRING"
00213             && (tr.parent(parent)->getType() == "unticked_class_declaration_statement"
00214                || tr.parent(parent)->getType() == "function_call" // constructor
00215                || tr.parent(parent)->getType() == "class_name_reference"
00216                || tr.parent(parent)->getType() == "fully_qualified_class_name"
00217                )
00218             && ((cter=classNames.find(iter->getValue())) != classNames.end())) {
00219             // rename the currenet node
00220             iter->setValue(cter->second);
00221         }           
00222     }       
00223 }

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