#ifndef LLVM_DEBUGINFO_DWARF_DWARFDIE_H
#define LLVM_DEBUGINFO_DWARF_DWARFDIE_H
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/iterator.h"
#include "llvm/ADT/iterator_range.h"
#include "llvm/BinaryFormat/Dwarf.h"
#include "llvm/DebugInfo/DIContext.h"
#include "llvm/DebugInfo/DWARF/DWARFAddressRange.h"
#include "llvm/DebugInfo/DWARF/DWARFAttribute.h"
#include "llvm/DebugInfo/DWARF/DWARFDebugInfoEntry.h"
#include "llvm/DebugInfo/DWARF/DWARFLocationExpression.h"
#include <cassert>
#include <cstdint>
#include <iterator>
namespace llvm {
class DWARFUnit;
class raw_ostream;
class DWARFDie { … };
class DWARFDie::attribute_iterator
: public iterator_facade_base<attribute_iterator, std::forward_iterator_tag,
const DWARFAttribute> { … };
inline bool operator==(const DWARFDie::attribute_iterator &LHS,
const DWARFDie::attribute_iterator &RHS) { … }
inline bool operator!=(const DWARFDie::attribute_iterator &LHS,
const DWARFDie::attribute_iterator &RHS) { … }
inline bool operator==(const DWARFDie &LHS, const DWARFDie &RHS) { … }
inline bool operator!=(const DWARFDie &LHS, const DWARFDie &RHS) { … }
inline bool operator<(const DWARFDie &LHS, const DWARFDie &RHS) { … }
class DWARFDie::iterator
: public iterator_facade_base<iterator, std::bidirectional_iterator_tag,
const DWARFDie> { … };
inline bool operator==(const DWARFDie::iterator &LHS,
const DWARFDie::iterator &RHS) { … }
inline DWARFDie::iterator DWARFDie::begin() const { … }
inline DWARFDie::iterator DWARFDie::end() const { … }
inline iterator_range<DWARFDie::iterator> DWARFDie::children() const { … }
}
namespace std {
template <>
class reverse_iterator<llvm::DWARFDie::iterator>
: public llvm::iterator_facade_base<
reverse_iterator<llvm::DWARFDie::iterator>,
bidirectional_iterator_tag, const llvm::DWARFDie> { … };
}
namespace llvm {
inline bool operator==(const std::reverse_iterator<DWARFDie::iterator> &LHS,
const std::reverse_iterator<DWARFDie::iterator> &RHS) { … }
inline bool operator!=(const std::reverse_iterator<DWARFDie::iterator> &LHS,
const std::reverse_iterator<DWARFDie::iterator> &RHS) { … }
inline std::reverse_iterator<DWARFDie::iterator> DWARFDie::rbegin() const { … }
inline std::reverse_iterator<DWARFDie::iterator> DWARFDie::rend() const { … }
void dumpTypeQualifiedName(const DWARFDie &DIE, raw_ostream &OS);
void dumpTypeUnqualifiedName(const DWARFDie &DIE, raw_ostream &OS,
std::string *OriginalFullName = nullptr);
}
#endif