16#ifndef LIEF_PE_RESOURCE_STRING_TABLE_H
17#define LIEF_PE_RESOURCE_STRING_TABLE_H
49 return !
key.empty() || !
value.empty();
52 operator bool()
const {
89 const std::u16string&
key()
const {
114 std::find_if(entries_.begin(), entries_.end(),
115 [&
key](
const entry_t& entry) { return entry.key == key; });
116 if (it == entries_.end()) {
126 key_ = std::move(value);
136 entries_.push_back(std::move(entry));
140 entries_.push_back(
entry_t{std::move(
key), std::move(value)});
159 std::vector<entry_t> entries_;
Class that is used to a read stream of data from different sources.
Definition BinaryStream.hpp:33
optional< std::u16string > operator[](const std::u16string &str) const
Definition ResourceStringTable.hpp:149
ResourceStringTable()=default
ResourceStringTable & key(std::u16string value)
Definition ResourceStringTable.hpp:125
ref_iterator< entries_t & > it_entries
Definition ResourceStringTable.hpp:68
ResourceStringTable & operator=(const ResourceStringTable &)=default
ResourceStringTable & type(uint16_t value)
Definition ResourceStringTable.hpp:130
ResourceStringTable(const ResourceStringTable &)=default
~ResourceStringTable() override=default
std::string key_u8() const
The key as an utf8 string.
const_ref_iterator< const entries_t & > it_const_entries
Definition ResourceStringTable.hpp:69
ResourceStringTable(ResourceStringTable &&)=default
void add_entry(entry_t entry)
Definition ResourceStringTable.hpp:135
void add_entry(std::u16string key, std::u16string value)
Definition ResourceStringTable.hpp:139
friend std::ostream & operator<<(std::ostream &os, const ResourceStringTable &table)
const std::u16string & key() const
An 8-digit hexadecimal number stored as a Unicode string. The four most significant digits represent ...
Definition ResourceStringTable.hpp:89
ResourceStringTable & operator=(ResourceStringTable &&)=default
optional< std::string > operator[](const std::string &str) const
Definition ResourceStringTable.hpp:145
std::vector< entry_t > entries_t
Definition ResourceStringTable.hpp:67
void accept(Visitor &visitor) const override
it_const_entries entries() const
Definition ResourceStringTable.hpp:108
static result< ResourceStringTable > parse(BinaryStream &stream)
optional< std::u16string > get(const std::u16string &key) const
Definition ResourceStringTable.hpp:112
uint16_t type() const
The type of data in the version resource:
Definition ResourceStringTable.hpp:96
optional< std::string > get(const std::string &key) const
it_entries entries()
Iterator over the different entry_t element of this table.
Definition ResourceStringTable.hpp:104
Definition Visitor.hpp:212
Definition optional.hpp:23
Iterator which returns reference on container's values.
Definition iterators.hpp:45
Wrapper that contains an Object (T) or an error.
Definition errors.hpp:77
Namespace related to the LIEF's PE module.
Definition Abstract/Header.hpp:32
LIEF namespace.
Definition Abstract/Binary.hpp:40
ref_iterator< CT, U, typename decay_t< CT >::const_iterator > const_ref_iterator
Iterator which return const ref on container's values.
Definition iterators.hpp:286
tl::unexpected< lief_errors > nullopt()
Definition optional.hpp:35
An entry in this table which is composed of an UTF-16 key and an UTF-16 value.
Definition ResourceStringTable.hpp:38
std::string value_u8() const
Value in utf8 representation.
std::string key_u8() const
Key in utf8 representation.
friend std::ostream & operator<<(std::ostream &os, const entry_t &entry)
Definition ResourceStringTable.hpp:60
std::u16string value
Definition ResourceStringTable.hpp:40
std::string to_string() const
Definition ResourceStringTable.hpp:56
bool is_defined() const
Definition ResourceStringTable.hpp:48
std::u16string key
Definition ResourceStringTable.hpp:39
#define LIEF_API
Definition visibility.h:43