16#ifndef LIEF_UTILS_HEADER
17#define LIEF_UTILS_HEADER
28inline uint64_t
align(uint64_t value, uint64_t align_on) {
32 const auto r = value % align_on;
34 return value + (align_on - r);
39inline uint64_t
align_down(uint64_t value, uint64_t align_on) {
43 const auto r = value % align_on;
52 return align(value - offset, align_on) + offset;
57constexpr T
align_up(T value, T alignment)
noexcept {
58 return (value + (alignment - 1)) & ~(alignment - 1);
82constexpr size_t operator""_KB(
unsigned long long kbs) {
86constexpr size_t operator""_MB(
unsigned long long mbs) {
87 return 1024LLU * 1024LLU * mbs;
90constexpr size_t operator""_GB(
unsigned long long gbs) {
91 return 1024LLU * 1024LLU * 1024LLU * gbs;
110 bool remove_null_char =
false);
113inline std::string
u16tou8(
const std::u16string&
string,
114 bool remove_null_char =
false) {
115 return u16tou8(
string.data(),
string.size(), remove_null_char);
151 const std::string& title =
"",
152 const std::string& prefix =
"",
size_t limit = 0);
155 const std::string& prefix =
"",
size_t limit = 0) {
156 return dump(data.data(), data.size(), title, prefix, limit);
159inline std::string
dump(
const std::vector<uint8_t>& data,
160 const std::string& title =
"",
161 const std::string& prefix =
"",
size_t limit = 0) {
162 return dump(data.data(), data.size(), title, prefix, limit);
Wrapper that contains an Object (T) or an error.
Definition errors.hpp:78
LIEF namespace.
Definition Abstract/Binary.hpp:41
constexpr T align_up(T value, T alignment) noexcept
Definition utils.hpp:57
std::string extended_version_info()
Details about the extended version.
uint64_t align(uint64_t value, uint64_t align_on)
Definition utils.hpp:28
uint64_t align_with_offset(uint64_t value, uint64_t align_on, uint64_t offset)
Definition utils.hpp:50
tcb::span< ElementType, Extent > span
Definition span.hpp:22
uint64_t align_down(uint64_t value, uint64_t align_on)
Definition utils.hpp:39
std::string dump(const uint8_t *buffer, size_t size, const std::string &title="", const std::string &prefix="", size_t limit=0)
Hexdump the provided buffer.
lief_version_t version()
Return the current version.
uint64_t round< uint64_t >(uint64_t x)
Definition utils.hpp:68
std::string u16tou8(const char16_t *buffer, size_t size, bool remove_null_char=false)
result< std::string > demangle(const std::string &mangled)
Demangle the given input.
result< std::u16string > u8tou16(const std::string &string)
Convert a UTF-8 string to a UTF-16 one.
bool is_extended()
Whether this version of LIEF includes extended features.
lief_version_t extended_version()
Return the extended version.
constexpr T round(T x)
Definition utils.hpp:62
uint64_t major
Definition utils.hpp:95
uint64_t minor
Definition utils.hpp:96
uint64_t patch
Definition utils.hpp:97
std::string to_string() const
friend std::ostream & operator<<(std::ostream &os, const lief_version_t &version)
Definition utils.hpp:102
#define LIEF_API
Definition visibility.h:45