Add LLVM-style RTTI to DIContext/DWARFContext classes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187790 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Alexey Samsonov 2013-08-06 10:32:39 +00:00
parent d113448c1d
commit 749d35c593
2 changed files with 15 additions and 1 deletions

View File

@ -21,6 +21,7 @@
#include "llvm/ADT/StringRef.h"
#include "llvm/Object/ObjectFile.h"
#include "llvm/Object/RelocVisitor.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/DataTypes.h"
namespace llvm {
@ -122,6 +123,12 @@ typedef DenseMap<uint64_t, std::pair<uint8_t, int64_t> > RelocAddrMap;
class DIContext {
public:
enum DIContextKind {
CK_DWARF
};
DIContextKind getKind() const { return Kind; }
DIContext(DIContextKind K) : Kind(K) {}
virtual ~DIContext();
/// getDWARFContext - get a context for binary DWARF data.
@ -135,6 +142,8 @@ public:
uint64_t Size, DILineInfoSpecifier Specifier = DILineInfoSpecifier()) = 0;
virtual DIInliningInfo getInliningInfoForAddress(uint64_t Address,
DILineInfoSpecifier Specifier = DILineInfoSpecifier()) = 0;
private:
const DIContextKind Kind;
};
}

View File

@ -48,7 +48,12 @@ class DWARFContext : public DIContext {
void parseDWOCompileUnits();
public:
DWARFContext() {}
DWARFContext() : DIContext(CK_DWARF) {}
static bool classof(const DIContext *DICtx) {
return DICtx->getKind() == CK_DWARF;
}
virtual void dump(raw_ostream &OS, DIDumpType DumpType = DIDT_All);
/// Get the number of compile units in this context.