LibraryLink Utilities
3.0.1
Modern C++ wrapper over LibraryLink and WSTP
LibraryLinkFunctionMacro.h
Go to the documentation of this file.
1
13
#ifndef LLU_LIBRARYLINKFUNCTIONMACRO_H
14
#define LLU_LIBRARYLINKFUNCTIONMACRO_H
15
23
#define LIBRARY_LINK_FUNCTION(name) \
24
EXTERN_C DLLEXPORT int name(WolframLibraryData, mint, MArgument*, MArgument); \
25
int name([[maybe_unused]] WolframLibraryData libData, mint Argc, MArgument* Args, MArgument Res)
26
32
#define LIBRARY_WSTP_FUNCTION(name) \
33
EXTERN_C DLLEXPORT int name(WolframLibraryData, WSLINK); \
34
int name([[maybe_unused]] WolframLibraryData libData, WSLINK wsl)
35
44
#define LLU_LIBRARY_FUNCTION(name) \
45
void impl_##name(LLU::MArgumentManager&);
/* forward declaration */
\
46
LIBRARY_LINK_FUNCTION(name) { \
47
auto err = LLU::ErrorCode::NoError; \
48
try { \
49
LLU::MArgumentManager mngr {libData, Argc, Args, Res}; \
50
impl_##name(mngr); \
51
} catch (const LLU::LibraryLinkError& e) { \
52
err = e.which(); \
53
} catch (...) { \
54
err = LLU::ErrorCode::FunctionError; \
55
} \
56
return err; \
57
} \
58
void impl_##name(LLU::MArgumentManager& mngr)
59
60
#define LLU_WSTP_FUNCTION(name) \
61
void impl_##name(WSLINK&);
/* forward declaration */
\
62
LIBRARY_WSTP_FUNCTION(name) { \
63
auto err = LLU::ErrorCode::NoError; \
64
try { \
65
impl_##name(wsl); \
66
} catch (const LLU::LibraryLinkError& e) { \
67
err = e.which(); \
68
} catch (...) { \
69
err = LLU::ErrorCode::FunctionError; \
70
} \
71
return err; \
72
} \
73
void impl_##name(WSLINK& wsl)
74
75
#endif // LLU_LIBRARYLINKFUNCTIONMACRO_H
include
LLU
LibraryLinkFunctionMacro.h
Generated on Wed Feb 24 2021 11:32:18 for LibraryLink Utilities by
1.8.18