anotherim-desktop/plugins/windows-notification/api/include/dyn_mod.hpp

30 lines
724 B
C++

#ifndef DYN_MOD_HPP
#define DYN_MOD_HPP
namespace dyn_mod
{
using punny_func = void();
punny_func &load_symbol(
const wchar_t *mod_path,
const char *mod_dbgnym,
const char *symbol);
template<typename T>
inline T &load_symbol(
const wchar_t *const mod_path, const char *const mod_dbgnym,
const char *const symbol)
{
return reinterpret_cast<T &>(load_symbol(mod_path, mod_dbgnym, symbol));
}
}
#define dyn_load_symbol_ns(mod_name, namespace, symbol) \
::dyn_mod::load_symbol<decltype(namespace::symbol)>( \
L ## mod_name, mod_name, #symbol)
#define dyn_load_symbol(mod_name, symbol) dyn_load_symbol_ns(mod_name, ,symbol)
#endif