|
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());
}
|