class DWARFDie::attribute_iterator

Declaration

class DWARFDie::attribute_iterator : public iterator_facade_base { /* full declaration omitted */ };

Description

CRTP base class which implements the entire standard iterator facade in terms of a minimal subset of the interface. Use this when it is reasonable to implement most of the iterator functionality in terms of a core subset. If you need special behavior or there are performance implications for this, you may want to override the relevant members instead. Note, one abstraction that this does *not* provide is implementing subtraction in terms of addition by negating the difference. Negation isn't always information preserving, and I can see very reasonable iterator designs where this doesn't work well. It doesn't really force much added boilerplate anyways. Another abstraction that this doesn't provide is implementing increment in terms of addition of one. These aren't equivalent for all iterator categories, and respecting that adds a lot of complexity for little gain. Iterators are expected to have const rules analogous to pointers, with a single, const-qualified operator*() that returns ReferenceT. This matches the second and third pointers in the following example: If an iterator facade returns a handle to its own state, then T (and PointerT and ReferenceT) should usually be const-qualified. Otherwise, if clients are expected to modify the handle itself, the field can be declared mutable or use const_cast. Classes wishing to use `iterator_facade_base` should implement the following methods: Forward Iterators: (All of the following methods) - DerivedT &operator =(const DerivedT &R ); - bool operator==(const DerivedT &R ) const; - T &operator *() const; - DerivedT &operator ++(); Bidirectional Iterators: (All methods of forward iterators, plus the following) - DerivedT &operator --(); Random-access Iterators: (All methods of bidirectional iterators excluding the following) - DerivedT &operator ++(); - DerivedT &operator --(); (and plus the following) - bool operator < (const DerivedT &RHS ) const; - DifferenceTypeT operator-(const DerivedT &R ) const; - DerivedT &operator +=(DifferenceTypeT N); - DerivedT &operator -=(DifferenceTypeT N);

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFDie.h:301

Inherits from: iterator_facade_base

Member Variables

private llvm::DWARFDie Die
The DWARF DIE we are extracting attributes from.
private llvm::DWARFAttribute AttrValue
The value vended to clients via the operator*() or operator->().
private uint32_t Index
The attribute index within the abbreviation declaration in Die.

Method Overview

Methods

attribute_iterator()

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFDie.h:322

attribute_iterator(llvm::DWARFDie D, bool End)

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFDie.h:323

Parameters

llvm::DWARFDie D
bool End

bool operator bool() const

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFDie.h:327

void updateForIndex(
    const llvm::DWARFAbbreviationDeclaration&
        AbbrDecl,
    uint32_t I)

Description

Update the attribute index and attempt to read the attribute value. If the attribute is able to be read, update AttrValue and the Index member variable. If the attribute value is not able to be read, an appropriate error will be set if the Err member variable is non-NULL and the iterator will be set to the end value so iteration stops.

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFDie.h:319

Parameters

const llvm::DWARFAbbreviationDeclaration& AbbrDecl
uint32_t I