summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2009-03-06 10:20:15 +0100
committerRoberto Raggi <roberto.raggi@nokia.com>2009-03-06 10:45:41 +0100
commit66a3e71579c4ea629f31284e1d36604a214324d5 (patch)
treee8d185a7c151feef164e6ee3ee35133e82ccf34a /src/shared/cplusplus
parent5e3921d2bd81e1bf35c5d754b69e2074398ba243 (diff)
downloadqt-creator-66a3e71579c4ea629f31284e1d36604a214324d5.tar.gz
Added ASTVisitor::getTokenStartPosition() and ASTVisitor::getTokenEndPosition().
Diffstat (limited to 'src/shared/cplusplus')
-rw-r--r--src/shared/cplusplus/ASTVisitor.cpp15
-rw-r--r--src/shared/cplusplus/ASTVisitor.h9
2 files changed, 24 insertions, 0 deletions
diff --git a/src/shared/cplusplus/ASTVisitor.cpp b/src/shared/cplusplus/ASTVisitor.cpp
index bee79230ea..2cc3d218c5 100644
--- a/src/shared/cplusplus/ASTVisitor.cpp
+++ b/src/shared/cplusplus/ASTVisitor.cpp
@@ -69,6 +69,9 @@ Control *ASTVisitor::control() const
TranslationUnit *ASTVisitor::translationUnit() const
{ return _control->translationUnit(); }
+const Token &ASTVisitor::tokenAt(unsigned index) const
+{ return translationUnit()->tokenAt(index); }
+
int ASTVisitor::tokenKind(unsigned index) const
{ return translationUnit()->tokenKind(index); }
@@ -87,10 +90,22 @@ NumericLiteral *ASTVisitor::numericLiteral(unsigned index) const
StringLiteral *ASTVisitor::stringLiteral(unsigned index) const
{ return translationUnit()->stringLiteral(index); }
+void ASTVisitor::getPosition(unsigned offset,
+ unsigned *line,
+ unsigned *column,
+ StringLiteral **fileName) const
+{ translationUnit()->getPosition(offset, line, column, fileName); }
+
void ASTVisitor::getTokenPosition(unsigned index,
unsigned *line,
unsigned *column,
StringLiteral **fileName) const
{ translationUnit()->getTokenPosition(index, line, column, fileName); }
+void ASTVisitor::getTokenStartPosition(unsigned index, unsigned *line, unsigned *column) const
+{ getPosition(tokenAt(index).begin(), line, column); }
+
+void ASTVisitor::getTokenEndPosition(unsigned index, unsigned *line, unsigned *column) const
+{ getPosition(tokenAt(index).end(), line, column); }
+
CPLUSPLUS_END_NAMESPACE
diff --git a/src/shared/cplusplus/ASTVisitor.h b/src/shared/cplusplus/ASTVisitor.h
index b1d3d1a49f..64002b8a6c 100644
--- a/src/shared/cplusplus/ASTVisitor.h
+++ b/src/shared/cplusplus/ASTVisitor.h
@@ -67,6 +67,7 @@ public:
Control *control() const;
TranslationUnit *translationUnit() const;
+ const Token &tokenAt(unsigned index) const;
int tokenKind(unsigned index) const;
const char *spell(unsigned index) const;
Identifier *identifier(unsigned index) const;
@@ -74,11 +75,19 @@ public:
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;
+
void accept(AST *ast);
virtual bool preVisit(AST *) { return true; }