From 3e9d4358bc0978367d7eaaeeda5264686d7fa1de Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@nokia.com> Date: Fri, 13 Nov 2009 12:10:12 +0100 Subject: [PATCH] Pass the translation units to the matcher. --- src/shared/cplusplus/ASTMatcher.cpp | 58 ++++------------------------- src/shared/cplusplus/ASTMatcher.h | 30 ++------------- 2 files changed, 12 insertions(+), 76 deletions(-) diff --git a/src/shared/cplusplus/ASTMatcher.cpp b/src/shared/cplusplus/ASTMatcher.cpp index 5d9269602a3..ec31e0e3d98 100644 --- a/src/shared/cplusplus/ASTMatcher.cpp +++ b/src/shared/cplusplus/ASTMatcher.cpp @@ -34,65 +34,23 @@ using namespace CPlusPlus; -ASTMatcher::ASTMatcher(Control *control) - : _control(control) +ASTMatcher::ASTMatcher(TranslationUnit *translationUnit, TranslationUnit *patternTranslationUnit) + : _translationUnit(translationUnit), _patternTranslationUnit(patternTranslationUnit) { } ASTMatcher::~ASTMatcher() { } -Control *ASTMatcher::control() const -{ return _control; } - TranslationUnit *ASTMatcher::translationUnit() const -{ return _control->translationUnit(); } - -unsigned ASTMatcher::tokenCount() const -{ return translationUnit()->tokenCount(); } - -const Token &ASTMatcher::tokenAt(unsigned index) const -{ return translationUnit()->tokenAt(index); } - -int ASTMatcher::tokenKind(unsigned index) const -{ return translationUnit()->tokenKind(index); } - -const char *ASTMatcher::spell(unsigned index) const -{ return translationUnit()->spell(index); } - -Identifier *ASTMatcher::identifier(unsigned index) const -{ return translationUnit()->identifier(index); } - -Literal *ASTMatcher::literal(unsigned index) const -{ return translationUnit()->literal(index); } - -NumericLiteral *ASTMatcher::numericLiteral(unsigned index) const -{ return translationUnit()->numericLiteral(index); } - -StringLiteral *ASTMatcher::stringLiteral(unsigned index) const -{ return translationUnit()->stringLiteral(index); } - -void ASTMatcher::getPosition(unsigned offset, - unsigned *line, - unsigned *column, - StringLiteral **fileName) const -{ translationUnit()->getPosition(offset, line, column, fileName); } - -void ASTMatcher::getTokenPosition(unsigned index, - unsigned *line, - unsigned *column, - StringLiteral **fileName) const -{ translationUnit()->getTokenPosition(index, line, column, fileName); } - -void ASTMatcher::getTokenStartPosition(unsigned index, unsigned *line, unsigned *column) const -{ getPosition(tokenAt(index).begin(), line, column); } +{ return _translationUnit; } -void ASTMatcher::getTokenEndPosition(unsigned index, unsigned *line, unsigned *column) const -{ getPosition(tokenAt(index).end(), line, column); } +TranslationUnit *ASTMatcher::patternTranslationUnit() const +{ return _patternTranslationUnit; } -bool ASTMatcher::matchToken(unsigned index, unsigned otherIndex) const +bool ASTMatcher::matchToken(unsigned tokenIndex, unsigned patternTokenIndex) const { - const Token &token = tokenAt(index); - const Token &otherToken = tokenAt(otherIndex); + const Token &token = _translationUnit->tokenAt(tokenIndex); + const Token &otherToken = _patternTranslationUnit->tokenAt(patternTokenIndex); if (token.f.kind != otherToken.f.kind) return false; else if (token.is(T_IDENTIFIER)) { diff --git a/src/shared/cplusplus/ASTMatcher.h b/src/shared/cplusplus/ASTMatcher.h index 8bca54baa2f..a986585e7ac 100644 --- a/src/shared/cplusplus/ASTMatcher.h +++ b/src/shared/cplusplus/ASTMatcher.h @@ -36,34 +36,11 @@ namespace CPlusPlus { class CPLUSPLUS_EXPORT ASTMatcher { public: - ASTMatcher(Control *control); + ASTMatcher(TranslationUnit *translationUnit, TranslationUnit *patternTranslationUnit); virtual ~ASTMatcher(); - Control *control() const; TranslationUnit *translationUnit() const; - - unsigned tokenCount() const; - const Token &tokenAt(unsigned index) const; - int tokenKind(unsigned index) const; - const char *spell(unsigned index) const; - Identifier *identifier(unsigned index) const; - Literal *literal(unsigned index) const; - NumericLiteral *numericLiteral(unsigned index) const; - StringLiteral *stringLiteral(unsigned index) const; - - void getPosition(unsigned offset, - unsigned *line, - unsigned *column = 0, - StringLiteral **fileName = 0) const; - - void getTokenPosition(unsigned index, - unsigned *line, - unsigned *column = 0, - StringLiteral **fileName = 0) const; - - void getTokenStartPosition(unsigned index, unsigned *line, unsigned *column) const; - - void getTokenEndPosition(unsigned index, unsigned *line, unsigned *column) const; + TranslationUnit *patternTranslationUnit() const; bool matchToken(unsigned index, unsigned otherIndex) const; @@ -191,7 +168,8 @@ public: virtual bool match(ObjCSynchronizedStatementAST *node, ObjCSynchronizedStatementAST *pattern); private: - Control *_control; + TranslationUnit *_translationUnit; + TranslationUnit *_patternTranslationUnit; }; } // end of namespace CPlusPlus -- GitLab