diff --git a/src/shared/cplusplus/ASTMatcher.cpp b/src/shared/cplusplus/ASTMatcher.cpp index 5d9269602a39c7b29c666d78b78f87d0990ca64f..ec31e0e3d98c6c77777df91d47ad2b2df922d680 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 8bca54baa2fbdeff4efcb3c23492f9f3d1307055..a986585e7ace36a84fe5e47711b9afe503348908 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