20#include "LIEF/visibility.h"
21#include "LIEF/iterators.hpp"
22#include "LIEF/PE/debug/Debug.hpp"
23#include "LIEF/PE/debug/PogoEntry.hpp"
39 using entries_t = std::vector<PogoEntry>;
43 enum class SIGNATURES {
51 Pogo(SIGNATURES sig) :
52 Debug{Debug::TYPES::POGO},
56 Pogo(
const details::pe_debug& debug, SIGNATURES sig);
60 std::unique_ptr<Debug> clone()
const override {
61 return std::unique_ptr<Debug>(
new Pogo(*
this));
64 SIGNATURES signature()
const {
73 it_const_entries entries()
const {
77 void add(PogoEntry entry) {
78 entries_.push_back(std::move(entry));
81 static bool classof(
const Debug* debug) {
82 return debug->type() == Debug::TYPES::POGO;
85 void accept(Visitor& visitor)
const override;
87 LIEF_API
friend std::ostream& operator<<(std::ostream& os,
const Pogo& entry);
92 SIGNATURES sig_ = SIGNATURES::UNKNOWN;
96LIEF_API
const char* to_string(Pogo::SIGNATURES e);
Class that is used to rebuild a raw PE binary from a PE::Binary object.
Definition PE/Builder.hpp:45
This class represents a generic entry in the debug data directory. For known types,...
Definition debug/Debug.hpp:38
Main interface to parse PE binaries. In particular the static functions: Parser::parse should be used...
Definition PE/Parser.hpp:47
This class represents a Profile Guided Optimization entry from the debug directory (IMAGE_DEBUG_TYPE_...
Definition Pogo.hpp:33
it_entries entries()
An iterator over the different POGO elements.
Definition Pogo.hpp:69
Iterator which returns reference on container's values.
Definition iterators.hpp:48
LIEF namespace.
Definition Abstract/Binary.hpp:32