Introduce TULocation and TULocationHandler classes.

TULocation is like ASTLocation but also contains the TranslationUnit* that
the ASTLocation originated from.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77535 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Argyrios Kyrtzidis 2009-07-29 23:40:02 +00:00
Родитель 52f1d47935
Коммит 40c0e73be6
3 изменённых файлов: 26 добавлений и 0 удалений

Просмотреть файл

@ -26,6 +26,7 @@ namespace clang {
class SourceRange;
namespace idx {
class TranslationUnit;
/// \brief Represents a Decl or a Stmt and its immediate Decl parent. It's
/// immutable.
@ -84,6 +85,20 @@ public:
void print(llvm::raw_ostream &OS) const;
};
/// \brief Like ASTLocation but also contains the TranslationUnit that the
/// ASTLocation originated from.
class TULocation : public ASTLocation {
TranslationUnit *TU;
public:
TULocation(TranslationUnit *tu, ASTLocation astLoc)
: ASTLocation(astLoc), TU(tu) {
assert(tu && "Passed null translation unit");
}
TranslationUnit *getTU() const { return TU; }
};
} // namespace idx
} // namespace clang

Просмотреть файл

@ -21,6 +21,7 @@ namespace clang {
namespace idx {
class Entity;
class TranslationUnit;
class TULocation;
/// \brief Abstract interface for receiving Entities.
class EntityHandler {
@ -40,6 +41,15 @@ public:
virtual void Handle(TranslationUnit *TU) = 0;
};
/// \brief Abstract interface for receiving TULocations.
class TULocationHandler {
public:
typedef TULocation receiving_type;
virtual ~TULocationHandler();
virtual void Handle(TULocation TULoc) = 0;
};
/// \brief Helper for the Handler classes. Stores the objects into a vector.
/// example:
/// @code

Просмотреть файл

@ -19,3 +19,4 @@ using namespace idx;
// Out-of-line to give the virtual tables a home.
EntityHandler::~EntityHandler() { }
TranslationUnitHandler::~TranslationUnitHandler() { }
TULocationHandler::~TULocationHandler() { }