16#ifndef LIEF_MACHO_DATA_IN_CODE_COMMAND_H
17#define LIEF_MACHO_DATA_IN_CODE_COMMAND_H
21#include "LIEF/visibility.h"
22#include "LIEF/iterators.hpp"
23#include "LIEF/span.hpp"
25#include "LIEF/MachO/LoadCommand.hpp"
26#include "LIEF/MachO/DataCodeEntry.hpp"
34struct linkedit_data_command;
46 using entries_t = std::vector<DataCodeEntry>;
52 DataInCode(
const details::linkedit_data_command& cmd);
57 std::unique_ptr<LoadCommand> clone()
const override {
58 return std::unique_ptr<DataInCode>(
new DataInCode(*
this));
71 void data_offset(uint32_t offset) {
72 data_offset_ = offset;
74 void data_size(uint32_t size) {
80 entries_.push_back(std::move(entry));
89 it_entries entries() {
93 span<uint8_t> content() {
97 span<const uint8_t> content()
const {
101 ~DataInCode()
override =
default;
103 void accept(Visitor& visitor)
const override;
105 std::ostream& print(std::ostream& os)
const override;
107 static bool classof(
const LoadCommand* cmd) {
108 return cmd->command() == LoadCommand::TYPE::DATA_IN_CODE;
112 uint32_t data_offset_ = 0;
113 uint32_t data_size_ = 0;
115 span<uint8_t> content_;
Class used to parse a single binary (i.e. non-FAT)
Definition BinaryParser.hpp:73
Interface over an entry in the DataInCode command.
Definition DataCodeEntry.hpp:33
Interface of the LC_DATA_IN_CODE command This command is used to list slices of code sections that co...
Definition DataInCode.hpp:42
uint32_t data_size() const
Whole size of the array (size = sizeof(DataCodeEntry) * nb_elements)
Definition DataInCode.hpp:67
uint32_t data_offset() const
Start of the array of the DataCodeEntry entries.
Definition DataInCode.hpp:62
DataInCode & add(DataCodeEntry entry)
Add a new entry.
Definition DataInCode.hpp:79
it_const_entries entries() const
Iterator over the DataCodeEntry.
Definition DataInCode.hpp:85
Definition LinkEdit.hpp:42
Based class for the Mach-O load commands.
Definition LoadCommand.hpp:36
Iterator which returns reference on container's values.
Definition iterators.hpp:48
LIEF namespace.
Definition Abstract/Binary.hpp:32