aboutsummaryrefslogtreecommitdiff
path: root/c/common.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'c/common.cpp')
-rw-r--r--c/common.cpp16
1 files changed, 5 insertions, 11 deletions
diff --git a/c/common.cpp b/c/common.cpp
index bcc5fd0..89cc426 100644
--- a/c/common.cpp
+++ b/c/common.cpp
@@ -1,3 +1,4 @@
+#include <stdexcept>
#include <memory>
#include <windows.h>
#include <SWI-Prolog.h>
@@ -30,23 +31,16 @@ TCHAR *TszFromSz(const char *sz, int iCp)
Library::Library(const TCHAR *tszLibrary)
{
- m_hModule = LoadLibrary(tszLibrary);
+ if (!(m_hModule = LoadLibrary(tszLibrary)))
+ throw std::invalid_argument("Library not found.");
}
Library::~Library()
{
- if (m_hModule)
- FreeLibrary(m_hModule);
+ FreeLibrary(m_hModule);
}
FARPROC Library::GetProcAddress(const char *szProc)
{
- return m_hModule? ::GetProcAddress(m_hModule, szProc): NULL;
-}
-
-std::unique_ptr<Library> Library::Load(const TCHAR *tszLibrary)
-{
- auto upLib = std::make_unique<Library>(tszLibrary);
- if (!upLib->m_hModule) upLib = nullptr;
- return upLib;
+ return ::GetProcAddress(m_hModule, szProc);
}