41 std::vector<char>
get_file(
const std::string& f_name);
43 std::string
execEx(
const char* cmd);
44 std::string
get_input(
const std::string& prompt =
"");
53 template<
typename FunctionSignature,
typename Lambda>
56 static_assert(std::is_convertible_v<Lambda, std::add_pointer_t<std::type_identity_t<FunctionSignature>>>,
"Lambda must be non-capturing and convertible to a function pointer.");
57 return static_cast<std::add_pointer_t<FunctionSignature>
>(lambda);
65 template<meta::CppObject T>
66 [[__gnu__::__always_inline__]]
69 static_assert(std::is_destructible_v<T>,
"Type must be destructible");
70 static_assert(not std::is_trivially_destructible_v<T>);
75 constexpr T
runLambda(
const std::function<T()>& lambda)
77 return std::forward<T>(lambda());
83 return std::format(
"{:p}",
static_cast<const void*
>(ptr));
89 return std::hash<T>{}(v);
constexpr void deconstruct(T &val)
Deconstructs an object only use when necessary.
Definition utils.hpp:67
std::string toAddressString(const T *ptr)
Definition utils.hpp:81
std::string execEx(const char *cmd)
Definition utils.cpp:49
std::vector< char > get_file(const std::string &f_name)
Definition utils.cpp:25
std::size_t getHash(const T &v)
Definition utils.hpp:87
constexpr T runLambda(const std::function< T()> &lambda)
Definition utils.hpp:75
std::string get_input(const std::string &prompt="")
Definition utils.cpp:71
std::add_pointer_t< FunctionSignature > lambdaToFunPtr(const Lambda &lambda)
Designed to help with C Apis that take function pointers.
Definition utils.hpp:54
std::string get_file_str(const std::string &f_name)
Definition utils.cpp:38