|
|
- #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));
- }
- };
- }
|