From: <bl...@us...> - 2003-04-22 19:23:31
|
Update of /cvsroot/cpptool/rfta/src/rfta In directory sc8-pr-cvs1:/tmp/cvs-serv26443/src/rfta Modified Files: SplitDeclarationRefactoring.cpp Log Message: * changed tabs to spaces * replaced dynamic_cast with dynamic_pointer_cast * refactored a bit Index: SplitDeclarationRefactoring.cpp =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rfta/SplitDeclarationRefactoring.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** SplitDeclarationRefactoring.cpp 21 Apr 2003 16:10:24 -0000 1.1 --- SplitDeclarationRefactoring.cpp 22 Apr 2003 19:23:27 -0000 1.2 *************** *** 21,30 **** #include <rfta/refactoring/RefactoringError.h> #include <rfta/refactoring/TextDocument.h> - # include <rfta/refactoring/CodeModel.h> - # include <rfta/refactoring/CodeModelStatements.h> - # include <rfta/refactoring/CodeModelForward.h> - # include <rfta/refactoring/CodeModelExpressions.h> - # include <CodeRewriter.h> namespace Refactoring { --- 21,31 ---- #include <rfta/refactoring/RefactoringError.h> #include <rfta/refactoring/TextDocument.h> + #include <rfta/refactoring/CodeModel.h> + #include <rfta/refactoring/CodeModelStatements.h> + #include <rfta/refactoring/CodeModelForward.h> + #include <rfta/refactoring/CodeModelExpressions.h> + #include "CodeRewriter.h" + namespace Refactoring { *************** *** 33,37 **** SplitDeclarationRefactoring:: SplitDeclarationRefactoring( TextDocument &document, ! int declarationLocation ) : RefactoringBase( document ) , declarationLocation_( declarationLocation ) --- 34,38 ---- SplitDeclarationRefactoring:: SplitDeclarationRefactoring( TextDocument &document, ! int declarationLocation ) : RefactoringBase( document ) , declarationLocation_( declarationLocation ) *************** *** 77,105 **** } int SplitDeclarationRefactoring:: findIndexOfCorrectDeclaration( CodeModel::CompoundStatementPtr compound ) { ! int n; ! for (n = 0; n < compound->getStatementCount(); n++) ! { ! CodeModel::StatementPtr statement = compound->getStatementAt(n); ! CodeModel::DeclarationStatement* declaration= ! dynamic_cast<CodeModel::DeclarationStatement*>(&*statement); if (!declaration) ! continue; SourceRange range = declaration->getSourceRange(); ! if (range.getStartIndex() > declarationLocation_) ! continue; ! if (range.getEndIndex() < declarationLocation_ ) ! continue; ! break; ! } ! return n; } CodeModel::StatementPtr ! SplitDeclarationRefactoring:: ! makeDeclarationFromFirstDeclarator ! ( const CodeModel::DeclaratorExpressionPtr declaratorExpression) { CodeModel::DeclaratorPtr firstDeclarator = --- 78,107 ---- } + int SplitDeclarationRefactoring:: findIndexOfCorrectDeclaration( CodeModel::CompoundStatementPtr compound ) { ! int statementIndex = 0; ! for (; statementIndex < compound->getStatementCount(); statementIndex++) ! { ! CodeModel::StatementPtr statement = compound->getStatementAt(statementIndex); ! CodeModel::DeclarationStatementPtr declaration = ! boost::dynamic_pointer_cast<CodeModel::DeclarationStatement>( statement ); if (!declaration) ! continue; ! SourceRange range = declaration->getSourceRange(); ! if ( range.contains( SourceRange( declarationLocation_, 0 ) ) ) ! break; ! } ! ! return statementIndex; } + + CodeModel::StatementPtr ! SplitDeclarationRefactoring::makeDeclarationFromFirstDeclarator( ! const CodeModel::DeclaratorExpressionPtr &declaratorExpression) { CodeModel::DeclaratorPtr firstDeclarator = *************** *** 112,139 **** CodeModel::StatementPtr( new CodeModel::DeclarationStatement( newExpression)); return newStatement; ! }; void SplitDeclarationRefactoring::apply( ) { ! CodeModel::Generator generator; ! CodeModel::CompoundStatementPtr compound = ! generator.generateCompound(sourceNode_->getChildAt(0)); ! int n = findIndexOfCorrectDeclaration( compound ); ! CodeModel::DeclarationStatement* declaration= ! dynamic_cast<CodeModel::DeclarationStatement*> ! (&*compound->getStatementAt(n)); ! CodeModel::DeclaratorExpressionPtr declaratorExpression ! = declaration->getDeclaration(); ! while (declaratorExpression->getDeclaratorCount() > 1) ! { CodeModel::StatementPtr newStatement = ! makeDeclarationFromFirstDeclarator( declaratorExpression ); compound->insertStatementAt( n++, newStatement ); declaratorExpression->removeDeclaratorAt(0); ! } ! std::string source( getDocument().getAllText()); ! CodeModel::CodeRewriter writer(source, 2); ! writer.rewrite(compound, getDocument()); } --- 114,144 ---- CodeModel::StatementPtr( new CodeModel::DeclarationStatement( newExpression)); return newStatement; ! } ! void SplitDeclarationRefactoring::apply( ) { ! CodeModel::Generator generator; ! CodeModel::CompoundStatementPtr compound = ! generator.generateCompound(sourceNode_->getChildAt(0)); ! int n = findIndexOfCorrectDeclaration( compound ); ! ! CodeModel::DeclarationStatement* declaration= ! dynamic_cast<CodeModel::DeclarationStatement*> ! (&*compound->getStatementAt(n)); ! CodeModel::DeclaratorExpressionPtr declaratorExpression ! = declaration->getDeclaration(); ! while (declaratorExpression->getDeclaratorCount() > 1) ! { CodeModel::StatementPtr newStatement = ! makeDeclarationFromFirstDeclarator( declaratorExpression ); compound->insertStatementAt( n++, newStatement ); declaratorExpression->removeDeclaratorAt(0); ! } ! ! std::string source( getDocument().getAllText()); ! CodeModel::CodeRewriter writer(source, 2); ! writer.rewrite(compound, getDocument()); } |