8#ifndef BOTAN_DYNAMIC_LOADER_H_
9#define BOTAN_DYNAMIC_LOADER_H_
11#include <botan/types.h>
46 template <
typename PtrT>
48 requires(std::is_pointer_v<PtrT>)
50 void* addr = resolve_symbol_internal(symbol);
51 return addr ? std::optional(
reinterpret_cast<PtrT
>(addr)) : std::nullopt;
60 void* resolve_symbol(
const std::string& symbol)
const;
68 template <
typename PtrT>
69 PtrT
resolve(
const std::string& symbol)
const
70 requires(std::is_pointer_v<PtrT>)
82 void* resolve_symbol_internal(
const std::string& symbol)
const;
84 std::string m_lib_name;
Dynamically_Loaded_Library & operator=(Dynamically_Loaded_Library &&)=default
std::optional< PtrT > try_resolve_symbol(const std::string &symbol) const
Dynamically_Loaded_Library(std::string_view lib_name)
Dynamically_Loaded_Library & operator=(const Dynamically_Loaded_Library &)=delete
void * resolve_symbol(const std::string &symbol) const
Dynamically_Loaded_Library(const Dynamically_Loaded_Library &)=delete
Dynamically_Loaded_Library(Dynamically_Loaded_Library &&)=default
PtrT resolve(const std::string &symbol) const