Files
clang-p2996/lldb/source/Plugins/SymbolFile/DWARF/DWARFAbbreviationDeclaration.h
Zachary Turner 611d1f98c5 Delete more dead code.
All of this is code that is unreferenced.  Removing as much of
this as possible makes it more easy to determine what functionality
is missing and/or shared between LLVM and LLDB's DWARF interfaces.

llvm-svn: 356509
2019-03-19 20:08:56 +00:00

66 lines
2.5 KiB
C++

//===-- DWARFAbbreviationDeclaration.h --------------------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#ifndef liblldb_DWARFAbbreviationDeclaration_h_
#define liblldb_DWARFAbbreviationDeclaration_h_
#include "DWARFAttribute.h"
#include "DWARFDefines.h"
#include "SymbolFileDWARF.h"
#include "llvm/Support/Error.h"
class DWARFAbbreviationDeclaration {
public:
enum { InvalidCode = 0 };
DWARFAbbreviationDeclaration();
// For hand crafting an abbreviation declaration
DWARFAbbreviationDeclaration(dw_tag_t tag, uint8_t has_children);
dw_uleb128_t Code() const { return m_code; }
void SetCode(dw_uleb128_t code) { m_code = code; }
dw_tag_t Tag() const { return m_tag; }
bool HasChildren() const { return m_has_children; }
size_t NumAttributes() const { return m_attributes.size(); }
dw_form_t GetFormByIndex(uint32_t idx) const {
return m_attributes.size() > idx ? m_attributes[idx].get_form() : 0;
}
// idx is assumed to be valid when calling GetAttrAndFormByIndex()
void GetAttrAndFormValueByIndex(uint32_t idx, dw_attr_t &attr,
DWARFFormValue &form_value) const {
m_attributes[idx].get(attr, form_value.FormRef(), form_value.ValueRef());
}
dw_form_t GetFormByIndexUnchecked(uint32_t idx) const {
return m_attributes[idx].get_form();
}
uint32_t FindAttributeIndex(dw_attr_t attr) const;
/// Extract one abbreviation declaration and all of its associated attributes.
/// Possible return values:
/// DWARFEnumState::Complete - the extraction completed successfully. This
/// was the last abbrev decl in a sequence, and the user should not call
/// this function again.
/// DWARFEnumState::MoreItems - the extraction completed successfully. The
/// user should call this function again to retrieve the next decl.
/// llvm::Error - A parsing error occurred. The debug info is malformed.
llvm::Expected<lldb_private::DWARFEnumState>
extract(const lldb_private::DWARFDataExtractor &data,
lldb::offset_t *offset_ptr);
bool IsValid();
bool operator==(const DWARFAbbreviationDeclaration &rhs) const;
protected:
dw_uleb128_t m_code;
dw_tag_t m_tag;
uint8_t m_has_children;
DWARFAttribute::collection m_attributes;
};
#endif // liblldb_DWARFAbbreviationDeclaration_h_