summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus/Parser.cpp
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2009-11-17 09:40:50 +0100
committerRoberto Raggi <roberto.raggi@nokia.com>2009-11-17 09:40:50 +0100
commit35901130eec54737664e1da89d6a3a2dc9e4cece (patch)
tree7a9c123e801a00e46b908d4efa04b7f5aa5ed128 /src/shared/cplusplus/Parser.cpp
parentd208a3acc8c2b922bf74fe6536b958cf0650c65e (diff)
parentfa2eca82622461f2125072a6e667b3c0012d4f44 (diff)
downloadqt-creator-35901130eec54737664e1da89d6a3a2dc9e4cece.tar.gz
Merge remote branch 'origin/1.3'
Diffstat (limited to 'src/shared/cplusplus/Parser.cpp')
-rw-r--r--src/shared/cplusplus/Parser.cpp16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp
index 5614355ab4..7bcbfdc34d 100644
--- a/src/shared/cplusplus/Parser.cpp
+++ b/src/shared/cplusplus/Parser.cpp
@@ -442,6 +442,8 @@ bool Parser::parseTranslationUnit(TranslationUnitAST *&node)
rewind(start_declaration + 1);
skipUntilDeclaration();
}
+
+ _templateArgumentList.clear();
}
node = ast;
@@ -569,6 +571,8 @@ bool Parser::parseLinkageBody(DeclarationAST *&node)
rewind(start_declaration + 1);
skipUntilDeclaration();
}
+
+ _templateArgumentList.clear();
}
match(T_RBRACE, &ast->rbrace_token);
node = ast;
@@ -693,11 +697,9 @@ bool Parser::parseOperatorFunctionId(NameAST *&node)
Parser::TemplateArgumentListEntry *Parser::templateArgumentListEntry(unsigned tokenIndex)
{
- for (unsigned i = 0; i < _templateArgumentList.size(); ++i) {
- TemplateArgumentListEntry *entry = &_templateArgumentList[i];
- if (entry->index == tokenIndex)
- return entry;
- }
+ std::map<unsigned, TemplateArgumentListEntry>::iterator it =_templateArgumentList.find(tokenIndex);
+ if (it != _templateArgumentList.end())
+ return &it->second;
return 0;
}
@@ -729,11 +731,11 @@ bool Parser::parseTemplateArgumentList(TemplateArgumentListAST *&node)
}
}
- _templateArgumentList.push_back(TemplateArgumentListEntry(start, cursor(), node));
+ _templateArgumentList.insert(std::make_pair(cursor(), TemplateArgumentListEntry(start, cursor(), node)));
return true;
}
- _templateArgumentList.push_back(TemplateArgumentListEntry(start, cursor(), 0));
+ _templateArgumentList.insert(std::make_pair(cursor(), TemplateArgumentListEntry(start, cursor(), 0)));
return false;
}