|
From: <bl...@us...> - 2003-04-06 16:17:23
|
Update of /cvsroot/cpptool/rfta/src/rftaparser
In directory sc8-pr-cvs1:/tmp/cvs-serv7316/src/rftaparser
Modified Files:
VariableDeclMutator.cpp VariableDeclMutator.h
VariableDeclMutatorTest.cpp
Log Message:
* modified variable decl child node range. It now encompass the ', ' that follow the variable declaration.
Index: VariableDeclMutator.cpp
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/rftaparser/VariableDeclMutator.cpp,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -d -r1.15 -r1.16
*** VariableDeclMutator.cpp 15 Mar 2003 16:57:39 -0000 1.15
--- VariableDeclMutator.cpp 6 Apr 2003 16:17:19 -0000 1.16
***************
*** 96,100 ****
prefixEndIndex, // variable name start
suffixStartIndex,
! suffixEndIndex );
// from now, throw parse failure if unexpected stuff happen
--- 96,100 ----
prefixEndIndex, // variable name start
suffixStartIndex,
! suffixEndIndex ); // position of last white space after ',' if many variable
// from now, throw parse failure if unexpected stuff happen
***************
*** 114,118 ****
{
ASTNodePtr variableDeclNode =
! createVariableDeclarationNode( declStatement, suffixEnd );
addVariableNameNode( variableDeclNode, variableNameStart, suffixStart );
--- 114,118 ----
{
ASTNodePtr variableDeclNode =
! createVariableDeclarationNode( declStatement, secondaryPrefixStart, suffixEnd );
addVariableNameNode( variableDeclNode, variableNameStart, suffixStart );
***************
*** 204,224 ****
bool
VariableDeclMutator::parseTemplateParameterList( const char *¤t,
! const char *end)
{
! const char* start = current;
! if ( !tryFindNextBalanced( current, end ) )
! return false;
! // take care of logical operators
! for (; start < current-1; start++)
! switch(*start)
! {
case '&': case '|':
! if (start[1] == start[0])
! return false;
! break;
default:
! break;
! }
! return true;
};
--- 204,224 ----
bool
VariableDeclMutator::parseTemplateParameterList( const char *¤t,
! const char *end)
{
! const char* start = current;
! if ( !tryFindNextBalanced( current, end ) )
! return false;
! // take care of logical operators
! for (; start < current-1; start++)
! switch(*start)
! {
case '&': case '|':
! if (start[1] == start[0])
! return false;
! break;
default:
! break;
! }
! return true;
};
***************
*** 380,383 ****
--- 380,384 ----
{
skipSpaces();
+ adjustPreviousDeclarationEndIndex( getCurrentIndex() );
int secondaryPrefixStartIndex = getCurrentIndex();
const char *secondaryPrefixStart = current_;
***************
*** 505,515 ****
ASTNodePtr
! VariableDeclMutator::createVariableDeclarationNode(const ASTNodePtr& parent,
! int suffixEnd) const
{
ASTNodePtr result = createASTNode( ASTNodeTypes::variableDeclExpression,
! parent,
! getStartIndex(),
! suffixEnd - getStartIndex() );
// the correct length is set when the initializer is added.
parent->addChild(result);
--- 506,517 ----
ASTNodePtr
! VariableDeclMutator::createVariableDeclarationNode( const ASTNodePtr &parent,
! int secondaryPrefixStart,
! int suffixEnd ) const
{
ASTNodePtr result = createASTNode( ASTNodeTypes::variableDeclExpression,
! parent,
! secondaryPrefixStart,
! suffixEnd - getStartIndex() );
// the correct length is set when the initializer is added.
parent->addChild(result);
***************
*** 611,614 ****
--- 613,625 ----
variableDeclNode->setPropertyNode( ASTNodeProperties::variableInitializerProperty,
initializerNode );
+ }
+
+
+ void
+ VariableDeclMutator::adjustPreviousDeclarationEndIndex( int separatorEndIndex )
+ {
+ int lastVarIndex = node_->getChildCount() -1;
+ ASTNodePtr previousVarNode = node_->getChildAt( lastVarIndex );
+ previousVarNode->setLength( separatorEndIndex - previousVarNode->getStartIndex() );
}
Index: VariableDeclMutator.h
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/rftaparser/VariableDeclMutator.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** VariableDeclMutator.h 12 Dec 2002 15:18:01 -0000 1.6
--- VariableDeclMutator.h 6 Apr 2003 16:17:20 -0000 1.7
***************
*** 69,72 ****
--- 69,73 ----
ASTNodePtr createVariableDeclarationNode( const ASTNodePtr& parent,
+ int secondaryPrefixStart,
int suffixEnd) const;
void addVariableNameNode( const ASTNodePtr& parent,
***************
*** 87,90 ****
--- 88,93 ----
const ASTNodeType initializerType,
int initializerStartIndex ) const;
+
+ void adjustPreviousDeclarationEndIndex( int separatorEndIndex );
private:
Index: VariableDeclMutatorTest.cpp
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/rftaparser/VariableDeclMutatorTest.cpp,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -d -r1.13 -r1.14
*** VariableDeclMutatorTest.cpp 30 Dec 2002 15:01:59 -0000 1.13
--- VariableDeclMutatorTest.cpp 6 Apr 2003 16:17:20 -0000 1.14
***************
*** 354,360 ****
{
std::string source( " int x1( 7 )" );
- int var1EndIndex = source.length();
int var1PrefixLength = 4;
source += ", ";
int var2PrefixStartIndex = source.length();
source += "*";
--- 354,360 ----
{
std::string source( " int x1( 7 )" );
int var1PrefixLength = 4;
source += ", ";
+ int var1EndIndex = source.length();
int var2PrefixStartIndex = source.length();
source += "*";
***************
*** 366,369 ****
--- 366,370 ----
source += "; ";
int startIndex = 3;
+ int decl1StartIndex = startIndex + std::string("int ").length();
int length = source.length() - 2 - startIndex;
***************
*** 388,393 ****
// var1
ASTNodePtr declStatement1 = statement->getChildAt(0);
! RFTA_ASSERT_EQUAL( startIndex, declStatement1->getStartIndex() );
! RFTA_ASSERT_EQUAL( var1EndIndex-startIndex, declStatement1->getLength() );
ASTNodePtr var1TypePrefix = declStatement1->getProperty(
--- 389,394 ----
// var1
ASTNodePtr declStatement1 = statement->getChildAt(0);
! RFTA_ASSERT_EQUAL( decl1StartIndex, declStatement1->getStartIndex() );
! RFTA_ASSERT_EQUAL( var1EndIndex-decl1StartIndex, declStatement1->getLength() );
ASTNodePtr var1TypePrefix = declStatement1->getProperty(
***************
*** 404,409 ****
// var2
ASTNodePtr declStatement2 = statement->getChildAt(1);
! RFTA_ASSERT_EQUAL( startIndex, declStatement2->getStartIndex() );
! RFTA_ASSERT_EQUAL( var2EndIndex-startIndex, declStatement2->getLength() );
ASTNodePtr var2TypePrefix = declStatement2->getProperty(
--- 405,410 ----
// var2
ASTNodePtr declStatement2 = statement->getChildAt(1);
! RFTA_ASSERT_EQUAL( var2PrefixStartIndex, declStatement2->getStartIndex() );
! RFTA_ASSERT_EQUAL( var2EndIndex-var2PrefixStartIndex, declStatement2->getLength() );
ASTNodePtr var2TypePrefix = declStatement2->getProperty(
|