#ifndef _UTIL_HPP #define _UTIL_HPP #include #include #include #include #include #include #include namespace dpp { class user; } namespace Util { uint32_t get_color_of_user(const dpp::user& user); std::vector split_str(std::string_view s, char delimiter, size_t times); std::string b64encode(const void* data, const size_t &len); std::string b64decode(const void* data, const size_t &len); void point_to_comma(std::string&); unsigned str_to_color(std::string); template std::string to_string_with_precision(T a_value, int n = 6) { std::ostringstream out; out.precision(n); out << std::fixed << a_value; return out.str(); } template std::string int_as_hex(intT i) { std::ostringstream sstream; sstream << std::hex << i; return std::move(sstream).str(); } inline char hex_as_byte(char ch) { if (ch >= '0' && ch <= '9') return ch - '0'; if (ch >= 'A' && ch <= 'F') return ch - 'A' + 10; if (ch >= 'a' && ch <= 'f') return ch - 'a' + 10; return 0; } template intT hex_as_int(std::string_view i) { intT fres = 0; for (auto c : i) { fres <<= 4; fres |= hex_as_byte(c); } return fres; }; inline std::string b64encode(std::string_view str) { return b64encode(str.data(), str.size()); } inline std::string b64decode(std::string_view str64) { return b64decode(str64.data(), str64.size()); } } #endif // _UTIL_HPP