#include "lib/clutter.h"
// clang-format off
MODULE = Dyn::Load PACKAGE = Dyn::Load
DLLib *
dlLoadLibrary(const char * libpath = NULL)
CODE:
// clang-format on
{
RETVAL =
#if defined(_WIN32) || defined(_WIN64)
dlLoadLibrary(libpath);
#else
(DLLib *)dlopen(libpath, RTLD_LAZY /* RTLD_NOW|RTLD_GLOBAL */);
#endif
}
// clang-format off
OUTPUT:
RETVAL
void
dlFreeLibrary(DLLib * pLib)
CODE:
// clang-format on
{
dlFreeLibrary(pLib);
SV *sv = (SV *)&PL_sv_undef;
sv_setsv(ST(0), sv);
}
// clang-format off
DCpointer
dlFindSymbol(DLLib * pLib, const char * pSymbolName);
int
dlGetLibraryPath(DLLib * pLib, char * sOut, int bufSize);
OUTPUT:
RETVAL
sOut
DLSyms *
dlSymsInit(const char * libPath);
void
dlSymsCleanup(DLSyms * pSyms);
CODE:
// clang-format on
{
dlSymsCleanup(pSyms);
SV *sv = (SV *)&PL_sv_undef;
sv_setsv(ST(0), sv);
}
// clang-format off
int
dlSymsCount(DLSyms * pSyms);
const char*
dlSymsName(DLSyms * pSyms, int index);
const char*
dlSymsNameFromValue(DLSyms * pSyms, void * value)
BOOT:
// clang-format on
{
export_function("Dyn::Load", "dlLoadLibrary", "default");
export_function("Dyn::Load", "dlFreeLibrary", "default");
export_function("Dyn::Load", "dlFindSymbol", "default");
export_function("Dyn::Load", "dlGetLibraryPath", "default");
export_function("Dyn::Load", "dlSymsInit", "default");
export_function("Dyn::Load", "dlSymsCleanup", "default");
export_function("Dyn::Load", "dlSymsCount", "default");
export_function("Dyn::Load", "dlSymsName", "default");
export_function("Dyn::Load", "dlSymsNameFromValue", "default");
}
// clang-format off