15#ifndef LIEF_PDB_FUNCTION_H
16#define LIEF_PDB_FUNCTION_H
35 using iterator_category = std::forward_iterator_tag;
36 using value_type = std::unique_ptr<Function>;
37 using difference_type = std::ptrdiff_t;
38 using pointer = Function*;
39 using reference = Function&;
40 using implementation = details::FunctionIt;
44 friend class Iterator;
51 template <
typename RefT>
52 PointerProxy(RefT &&R) : R(std::forward<RefT>(R)) {}
57 Iterator(std::unique_ptr<details::FunctionIt> impl);
68 Iterator tmp = *
static_cast<Iterator*
>(
this);
69 ++*
static_cast<Iterator *
>(
this);
76 return static_cast<const Iterator*
>(
this)->
operator*();
80 std::unique_ptr<details::FunctionIt> impl_;
82 Function(std::unique_ptr<details::Function> impl);
84 std::string
name()
const;
101 std::unique_ptr<details::Function> impl_;
pointer operator->() const
Definition PDB/Function.hpp:46
Iterator operator++(int)
Definition PDB/Function.hpp:67
friend bool operator==(const Iterator &LHS, const Iterator &RHS)
Iterator(const Iterator &)
std::unique_ptr< Function > operator*() const
PointerProxy operator->() const
Definition PDB/Function.hpp:75
friend bool operator!=(const Iterator &LHS, const Iterator &RHS)
Definition PDB/Function.hpp:61
Iterator(std::unique_ptr< details::FunctionIt > impl)
Definition PDB/Function.hpp:31
std::string section_name() const
The name of the section in which this function is defined.
uint32_t code_size() const
The size of the function.
Function(std::unique_ptr< details::Function > impl)
std::string name() const
The name of the function (this name is usually demangled)
debug_location_t debug_location() const
Original source code location.
uint32_t RVA() const
The Relative Virtual Address of the function.
Definition PDB/CompilationUnit.hpp:29
Definition PDB/CompilationUnit.hpp:27
LIEF namespace.
Definition Abstract/Binary.hpp:36
#define LIEF_API
Definition visibility.h:41