Changes in src/GenPoly/DeclMutator.cc [dbd8652:b0b958a]
- File:
-
- 1 edited
-
src/GenPoly/DeclMutator.cc (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/GenPoly/DeclMutator.cc
rdbd8652 rb0b958a 24 24 } 25 25 26 DeclMutator::DeclMutator() : Mutator(), declsToAdd(1) , declsToAddAfter(1){}26 DeclMutator::DeclMutator() : Mutator(), declsToAdd(1) {} 27 27 28 28 DeclMutator::~DeclMutator() {} 29 29 30 30 void DeclMutator::mutateDeclarationList( std::list< Declaration* > &decls ) { 31 for ( std::list< Declaration* >::iterator decl = decls.begin(); ; ++decl ) { 32 // splice in new declarations after previous decl 33 decls.splice( decl, declsToAddAfter.back() ); 34 35 if ( decl == decls.end() ) break; 36 31 for ( std::list< Declaration* >::iterator decl = decls.begin(); decl != decls.end(); ++decl ) { 37 32 // run mutator on declaration 38 33 *decl = maybeMutate( *decl, *this ); … … 44 39 45 40 void DeclMutator::doBeginScope() { 46 // add new decl list sfor inside of scope41 // add new decl list for inside of scope 47 42 declsToAdd.resize( declsToAdd.size()+1 ); 48 declsToAddAfter.resize( declsToAddAfter.size()+1 );49 43 } 50 44 … … 55 49 newBack->splice( newBack->end(), *back ); 56 50 declsToAdd.pop_back(); 57 58 back = declsToAddAfter.rbegin();59 newBack = back + 1;60 newBack->splice( newBack->end(), *back );61 declsToAddAfter.pop_back();62 51 } 63 52 … … 72 61 stmt = maybeMutate( stmt, *this ); 73 62 // return if no declarations to add 74 if ( declsToAdd.back().empty() && declsToAddAfter.back().empty() ) { 75 doEndScope(); 76 return stmt; 77 } 63 if ( declsToAdd.back().empty() ) return stmt; 78 64 79 65 // otherwise add declarations to new compound statement … … 85 71 declsToAdd.back().clear(); 86 72 87 // add mutated statement 73 doEndScope(); 74 75 // add mutated statement and return 88 76 compound->get_kids().push_back( stmt ); 89 90 // add declarations after to new compound statement91 for ( std::list< Declaration* >::iterator decl = declsToAddAfter.back().begin(); decl != declsToAddAfter.back().end(); ++decl ) {92 DeclStmt *declStmt = new DeclStmt( noLabels, *decl );93 compound->get_kids().push_back( declStmt );94 }95 declsToAddAfter.back().clear();96 97 doEndScope();98 77 return compound; 99 78 } … … 101 80 void DeclMutator::mutateStatementList( std::list< Statement* > &stmts ) { 102 81 doBeginScope(); 103 104 82 105 for ( std::list< Statement* >::iterator stmt = stmts.begin(); ; ++stmt ) { 106 // add any new declarations after the previous statement 107 for ( std::list< Declaration* >::iterator decl = declsToAddAfter.back().begin(); decl != declsToAddAfter.back().end(); ++decl ) { 108 DeclStmt *declStmt = new DeclStmt( noLabels, *decl ); 109 stmts.insert( stmt, declStmt ); 110 } 111 declsToAddAfter.back().clear(); 112 113 if ( stmt == stmts.end() ) break; 114 83 for ( std::list< Statement* >::iterator stmt = stmts.begin(); stmt != stmts.end(); ++stmt ) { 115 84 // run mutator on statement 116 85 *stmt = maybeMutate( *stmt, *this ); … … 123 92 declsToAdd.back().clear(); 124 93 } 125 94 126 95 doEndScope(); 127 96 } … … 129 98 void DeclMutator::addDeclaration( Declaration *decl ) { 130 99 declsToAdd.back().push_back( decl ); 131 }132 133 void DeclMutator::addDeclarationAfter( Declaration *decl ) {134 declsToAddAfter.back().push_back( decl );135 100 } 136 101
Note:
See TracChangeset
for help on using the changeset viewer.