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