2023-05-12 10:25:25 +05:30

42 lines
783 B
C++

#pragma once
namespace vlc
{
struct VLC_LIBRARY_API Library
{
using LibraryHandle = void*;
LibraryHandle _handle = nullptr;
Library() = default;
~Library();
Library(const Library&) = delete;
Library& operator = (const Library&) = delete;
Library(Library&& src)
{
std::swap(_handle, src._handle);
}
Library& operator = (Library&& src)
{
std::swap(_handle, src._handle);
return *this;
}
explicit operator bool() const
{
return _handle != nullptr;
}
bool load(const char* name, bool auto_ext = true);
void* symbol(const char* name);
template<typename F> F get(const char* name)
{
return reinterpret_cast<F>(symbol(name));
}
};
}