DWARFDeclContext.h [plain text]
#ifndef SymbolFileDWARF_DWARFDeclContext_h_
#define SymbolFileDWARF_DWARFDeclContext_h_
#include <string>
#include <vector>
#include "lldb/Core/ConstString.h"
#include "DWARFDefines.h"
class DWARFDeclContext
{
public:
struct Entry
{
Entry () :
tag(0),
name(NULL)
{
}
Entry (dw_tag_t t, const char *n) :
tag(t),
name(n)
{
}
bool
NameMatches (const Entry& rhs) const
{
if (name && rhs.name)
return strcmp(name, rhs.name) == 0;
return name == NULL && rhs.name == NULL;
}
operator bool() const
{
return tag != 0;
}
dw_tag_t tag;
const char *name;
};
DWARFDeclContext () :
m_entries()
{
}
void
AppendDeclContext (dw_tag_t tag, const char *name)
{
m_entries.push_back(Entry(tag, name));
}
bool
operator ==(const DWARFDeclContext& rhs) const;
uint32_t
GetSize() const
{
return m_entries.size();
}
Entry &
operator[] (uint32_t idx)
{
return m_entries[idx];
}
const Entry &
operator[] (uint32_t idx) const
{
return m_entries[idx];
}
const char *
GetQualifiedName () const;
protected:
typedef std::vector<Entry> collection;
collection m_entries;
mutable std::string m_qualified_name;
};
#endif // SymbolFileDWARF_DWARFDeclContext_h_