From 66a3e71579c4ea629f31284e1d36604a214324d5 Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@nokia.com> Date: Fri, 6 Mar 2009 10:20:15 +0100 Subject: [PATCH] Added ASTVisitor::getTokenStartPosition() and ASTVisitor::getTokenEndPosition(). --- src/shared/cplusplus/ASTVisitor.cpp | 15 +++++++++++++++ src/shared/cplusplus/ASTVisitor.h | 9 +++++++++ 2 files changed, 24 insertions(+) diff --git a/src/shared/cplusplus/ASTVisitor.cpp b/src/shared/cplusplus/ASTVisitor.cpp index bee79230ead..2cc3d218c54 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 b1d3d1a49f6..64002b8a6c3 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; } -- GitLab