Update of /cvsroot/cpptool/rfta/src/rfta In directory sc8-pr-cvs1:/tmp/cvs-serv9325/src/rfta Modified Files: CodeRewriter.cpp CodeWriterTest.cpp CodeWriterTest.h IndentLevelManager.cpp IndentLevelManager.h Log Message: * added support for inserting if/then statement. Index: CodeRewriter.cpp =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rfta/CodeRewriter.cpp,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** CodeRewriter.cpp 15 Mar 2003 22:05:23 -0000 1.13 --- CodeRewriter.cpp 16 Mar 2003 06:52:20 -0000 1.14 *************** *** 254,258 **** --- 254,270 ---- CodeRewriter::visit( IfStatement &statement ) { + if ( isInserting() ) + { + beginInsertNewStatement(); + insertText( "if ( " ); + } statement.getCondition()->accept( *this ); + + IndentLevelManager::IndentRestorer restorer( indentManager_ ); + if ( isInserting() ) + { + insertText( " )" ); + indentManager_.enterNewIfStatement(); + } statement.getThenStatement()->accept( *this ); if ( statement.hasElseStatement() ) Index: CodeWriterTest.cpp =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rfta/CodeWriterTest.cpp,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** CodeWriterTest.cpp 15 Mar 2003 21:51:43 -0000 1.14 --- CodeWriterTest.cpp 16 Mar 2003 06:52:20 -0000 1.15 *************** *** 456,458 **** --- 456,484 ---- + void + CodeWriterTest::testInsertIfThenStatement() + { + source_ = "{\n" + "}"; + + generateCompound(); + + RFTA_ASSERT_EQUAL( 0, compound_->getStatementCount() ); + + CodeModel::StatementPtr nullStatement( new CodeModel::NullStatement() ); + CodeModel::StatementPtr ifStatement( + new CodeModel::IfStatement( makeExpression( "x < y" ), + nullStatement ) ); + compound_->appendStatement( ifStatement ); + + rewriteSource(); + + std::string expectedSource = "{\n" + " if ( x < y )\n" + " ;\n" + "}"; + RFTA_ASSERT_EQUAL( expectedSource, document_->getAllText() ); + } + + } // namespace Refactoring Index: CodeWriterTest.h =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rfta/CodeWriterTest.h,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** CodeWriterTest.h 15 Mar 2003 21:51:43 -0000 1.11 --- CodeWriterTest.h 16 Mar 2003 06:52:20 -0000 1.12 *************** *** 36,39 **** --- 36,40 ---- CPPUNIT_TEST( testInsertLabelStatement ); CPPUNIT_TEST( testInsertGotoStatement ); + CPPUNIT_TEST( testInsertIfThenStatement ); CPPUNIT_TEST_SUITE_END(); *************** *** 64,67 **** --- 65,69 ---- void testInsertLabelStatement(); void testInsertGotoStatement(); + void testInsertIfThenStatement(); private: Index: IndentLevelManager.cpp =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rfta/IndentLevelManager.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** IndentLevelManager.cpp 15 Mar 2003 20:57:38 -0000 1.3 --- IndentLevelManager.cpp 16 Mar 2003 06:52:20 -0000 1.4 *************** *** 39,42 **** --- 39,49 ---- + void + IndentLevelManager::enterNewIfStatement() + { + pushIndent( getIndentLevel() + indentWidth_ ); + } + + int IndentLevelManager::findIndentLevelOf( int pos ) const Index: IndentLevelManager.h =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rfta/IndentLevelManager.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** IndentLevelManager.h 15 Mar 2003 20:57:38 -0000 1.4 --- IndentLevelManager.h 16 Mar 2003 06:52:20 -0000 1.5 *************** *** 60,63 **** --- 60,65 ---- void enterNewCompoundStatement(); + void enterNewIfStatement(); + int getIndentLevel() const; |