summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2009-11-13 12:10:12 +0100
committerRoberto Raggi <roberto.raggi@nokia.com>2009-11-13 12:10:12 +0100
commit3e9d4358bc0978367d7eaaeeda5264686d7fa1de (patch)
tree84b859d52354a099bfc5eb794bdc02b6d96b66ea /src/shared/cplusplus
parent5644775d2f9a275b6bc0b8081cdb26e8fca29e16 (diff)
downloadqt-creator-3e9d4358bc0978367d7eaaeeda5264686d7fa1de.tar.gz
Pass the translation units to the matcher.
Diffstat (limited to 'src/shared/cplusplus')
-rw-r--r--src/shared/cplusplus/ASTMatcher.cpp58
-rw-r--r--src/shared/cplusplus/ASTMatcher.h30
2 files changed, 12 insertions, 76 deletions
diff --git a/src/shared/cplusplus/ASTMatcher.cpp b/src/shared/cplusplus/ASTMatcher.cpp
index 5d9269602a..ec31e0e3d9 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 8bca54baa2..a986585e7a 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