rendered paste bodymodule stdloader;
version (Win32) {
import std.c.windows.windows;
char[] DynamicLibraryExtension=".dll";
struct LibraryHandle {
private void *handle;
void *getFunction(char[] name) {
return GetProcAddress(cast(HANDLE)handle, name~cast(char)0);
}
void close() {
FreeLibrary(cast(HANDLE)handle);
}
bool isOpen() { return (handle !is null); }
static LibraryHandle opCall(char[] filename) {
LibraryHandle e;
e.handle=LoadLibraryA(filename~cast(char)0);
return e;
}
}
}
else {
import std.c.linux.linux;
char[] DynamicLibraryExtension=".so";
struct LibraryHandle {
private void *handle;
void *getFunction(char[] name) {
return dlsym(handle, name~cast(char)0);
}
void close() {
dlclose(handle);
}
bool isOpen() { return (handle !is null); }
static LibraryHandle opCall(char[] filename) {
LibraryHandle e;
e.handle=dlopen(filename~cast(char)0, RTLD_NOW);
if (e.handle is null) e.handle=dlopen("./"~filename~cast(char)0, RTLD_NOW);
return e;
}
}
}