15#ifndef LIEF_PDB_TYPE_H
16#define LIEF_PDB_TYPE_H
50 template <
typename RefT>
76 return static_cast<const Iterator*
>(
this)->
operator*();
80 std::unique_ptr<details::TypeIt> impl_;
101 const T*
as()
const {
102 if (T::classof(
this)) {
103 return static_cast<const T*
>(
this);
108 static std::unique_ptr<Type>
create(std::unique_ptr<details::Type> impl);
113 Type(std::unique_ptr<details::Type> impl);
114 std::unique_ptr<details::Type> impl_;
Definition PDB/Type.hpp:41
pointer operator->() const
Definition PDB/Type.hpp:45
friend class Iterator
Definition PDB/Type.hpp:43
Iterator(const Iterator &)
Iterator(Iterator &&) noexcept
PointerProxy operator->() const
Definition PDB/Type.hpp:75
Type * pointer
Definition PDB/Type.hpp:37
std::unique_ptr< Type > value_type
Definition PDB/Type.hpp:35
Type & reference
Definition PDB/Type.hpp:38
std::forward_iterator_tag iterator_category
Definition PDB/Type.hpp:34
std::unique_ptr< Type > operator*() const
details::TypeIt implementation
Definition PDB/Type.hpp:39
std::ptrdiff_t difference_type
Definition PDB/Type.hpp:36
Iterator operator++(int)
Definition PDB/Type.hpp:67
const T * as() const
Definition PDB/Type.hpp:101
KIND
Definition PDB/Type.hpp:83
@ INTERFACE
Definition PDB/Type.hpp:95
@ STRUCTURE
Definition PDB/Type.hpp:94
@ BITFIELD
Definition PDB/Type.hpp:91
@ UNKNOWN
Definition PDB/Type.hpp:84
@ FUNCTION
Definition PDB/Type.hpp:89
@ ENUM
Definition PDB/Type.hpp:88
@ POINTER
Definition PDB/Type.hpp:86
@ CLASS
Definition PDB/Type.hpp:85
@ ARRAY
Definition PDB/Type.hpp:92
@ SIMPLE
Definition PDB/Type.hpp:87
@ UNION
Definition PDB/Type.hpp:93
@ MODIFIER
Definition PDB/Type.hpp:90
static std::unique_ptr< Type > create(std::unique_ptr< details::Type > impl)
Definition BuildMetadata.hpp:26
Definition BuildMetadata.hpp:24
LIEF namespace.
Definition Abstract/Binary.hpp:40
#define LIEF_API
Definition visibility.h:41