| //===-- DWARFDeclContext.h --------------------------------------*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef SymbolFileDWARF_DWARFDeclContext_h_ |
| #define SymbolFileDWARF_DWARFDeclContext_h_ |
| |
| // C Includes |
| // C++ Includes |
| #include <string> |
| #include <vector> |
| // Other libraries and framework includes |
| #include "lldb/Core/ConstString.h" |
| // Project includes |
| #include "DWARFDefines.h" |
| |
| //---------------------------------------------------------------------- |
| // DWARFDeclContext |
| // |
| // A class that represents a declaration context all the way down to a |
| // DIE. This is useful when trying to find a DIE in one DWARF to a DIE |
| // in another DWARF file. |
| //---------------------------------------------------------------------- |
| |
| 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 true; |
| else if (name && rhs.name) |
| return strcmp(name, rhs.name) == 0; |
| return false; |
| } |
| |
| // Test operator |
| explicit 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) |
| { |
| // "idx" must be valid |
| return m_entries[idx]; |
| } |
| |
| const Entry & |
| operator[] (uint32_t idx) const |
| { |
| // "idx" must be valid |
| 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_ |