зеркало из https://github.com/microsoft/clang-1.git
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:
Родитель
52f1d47935
Коммит
40c0e73be6
|
@ -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() { }
|
||||
|
|
Загрузка…
Ссылка в новой задаче