diff options
author | Roberto Raggi <roberto.raggi@nokia.com> | 2009-11-17 09:40:50 +0100 |
---|---|---|
committer | Roberto Raggi <roberto.raggi@nokia.com> | 2009-11-17 09:40:50 +0100 |
commit | 35901130eec54737664e1da89d6a3a2dc9e4cece (patch) | |
tree | 7a9c123e801a00e46b908d4efa04b7f5aa5ed128 /src/shared/cplusplus/Parser.cpp | |
parent | d208a3acc8c2b922bf74fe6536b958cf0650c65e (diff) | |
parent | fa2eca82622461f2125072a6e667b3c0012d4f44 (diff) | |
download | qt-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.cpp | 16 |
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; } |