1#ifndef ARION_CONVERT_UTILS_HPP
2#define ARION_CONVERT_UTILS_HPP
10#include <netinet/in.h>
24 std::string result = input;
25 std::transform(result.begin(), result.end(), result.begin(), [](
unsigned char c) { return std::toupper(c); });
36 std::string result = input;
37 std::transform(result.begin(), result.end(), result.begin(), [](
unsigned char c) { return std::tolower(c); });
50template <
typename T>
inline std::string
int_to_hex(T value, uint8_t padding = 0,
bool prefix =
true)
52 static_assert(std::is_integral<T>::value,
"T must be an integral type.");
54 std::stringstream stream;
58 stream << std::setfill(
'0') << std::setw(padding);
59 stream << std::hex << +value;
70 const std::string generic_flags =
"rwx";
73 for (uint8_t bit_i = 0; bit_i < 3; bit_i++)
75 if ((flags >> (2 - bit_i)) & 1)
76 ss << generic_flags[bit_i];
92 std::unique_ptr<char,
decltype(&std::free)> demangled(
93 abi::__cxa_demangle(mangled_name.c_str(),
nullptr,
nullptr, &status), &std::free);
94 return (!status) ? demangled.get() : mangled_name;
104 auto start = std::find_if_not(str.begin(), str.end(), [](
unsigned char c) { return std::isspace(c); });
106 auto end = std::find_if_not(str.rbegin(), str.rend(), [](
unsigned char c) { return std::isspace(c); }).base();
108 return (start < end ? std::string(start, end) : std::string());
118 char buf[INET_ADDRSTRLEN];
119 if (!inet_ntop(AF_INET, &addr, buf, INET_ADDRSTRLEN))
120 return std::string(
"");
121 return std::string(buf);
131 char buf[INET6_ADDRSTRLEN];
132 if (!inet_ntop(AF_INET6, addr, buf, INET6_ADDRSTRLEN))
133 return std::string(
"");
134 return std::string(buf);
144 size_t pos = path.find_last_of(
'/');
145 if (pos != std::string::npos)
147 return path.substr(pos + 1);
Definition arch_x86-64.hpp:11
std::string strip_str(const std::string &str)
Definition convert_utils.hpp:102
std::string ipv6_addr_to_string(const uint8_t addr[16])
Definition convert_utils.hpp:129
std::string ipv4_addr_to_string(in_addr_t addr)
Definition convert_utils.hpp:116
std::string name_from_path(const std::string &path)
Definition convert_utils.hpp:142
std::string int_to_hex(T value, uint8_t padding=0, bool prefix=true)
Definition convert_utils.hpp:50
std::string str_to_lowercase(const std::string &input)
Definition convert_utils.hpp:34
std::string demangle_cxx_symbol(std::string mangled_name)
Definition convert_utils.hpp:89
uint8_t PROT_FLAGS
Identifies memory protection rights.
Definition global_defs.hpp:38
std::string str_to_uppercase(const std::string &input)
Definition convert_utils.hpp:22
std::string prot_flags_to_str(PROT_FLAGS flags)
Definition convert_utils.hpp:68