From 02943656ffd71d81114a88f1126ec0ff22d86c6a Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Fri, 10 Feb 2017 14:52:04 +0100 Subject: [PATCH] put all helper functions into unique model namespace This avoids collisions among multiple libraries loaded at the same time into Mathematica. --- templates/librarylink.cpp.in | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/templates/librarylink.cpp.in b/templates/librarylink.cpp.in index eb668f219..d9f9bcb50 100644 --- a/templates/librarylink.cpp.in +++ b/templates/librarylink.cpp.in @@ -48,6 +48,8 @@ #define PHYSICALPARAMETER(p) model.get_physical().p #define OBSERVABLE(o) observables.o +namespace @ModelName@_librarylink { + using namespace flexiblesusy; typedef Two_scale algorithm_type; @@ -84,7 +86,6 @@ private: } }; -namespace flexiblesusy { class EUnknownHandle : public Error { public: explicit EUnknownHandle(Handle_id hid_) : hid(hid_) {} @@ -126,8 +127,6 @@ public: virtual std::string what() const { return "Invalid spectrum"; } }; -} // namespace flexiblesusy - struct @ModelName@_data { @ModelName@_data() : input() @@ -500,6 +499,8 @@ void calculate_spectrum(@ModelName@_data& data, MLINK link) return data; } +} // namespace @ModelName@_librarylink + extern "C" { /******************************************************************/ @@ -520,6 +521,8 @@ DLLEXPORT int WolframLibrary_initialize(WolframLibraryData /* libData */) DLLEXPORT int FS@ModelName@GetSettings(WolframLibraryData /* libData */, MLINK link) { + using namespace @ModelName@_librarylink; + if (!check_number_of_args(link, 1, "FS@ModelName@GetSettings")) return LIBRARY_TYPE_ERROR; @@ -540,6 +543,8 @@ DLLEXPORT int FS@ModelName@GetSettings(WolframLibraryData /* libData */, MLINK l DLLEXPORT int FS@ModelName@GetSMInputParameters(WolframLibraryData /* libData */, MLINK link) { + using namespace @ModelName@_librarylink; + if (!check_number_of_args(link, 1, "FS@ModelName@GetSMInputParameters")) return LIBRARY_TYPE_ERROR; @@ -560,6 +565,8 @@ DLLEXPORT int FS@ModelName@GetSMInputParameters(WolframLibraryData /* libData */ DLLEXPORT int FS@ModelName@GetInputParameters(WolframLibraryData /* libData */, MLINK link) { + using namespace @ModelName@_librarylink; + if (!check_number_of_args(link, 1, "FS@ModelName@GetInputParameters")) return LIBRARY_TYPE_ERROR; @@ -581,6 +588,8 @@ DLLEXPORT int FS@ModelName@GetInputParameters(WolframLibraryData /* libData */, DLLEXPORT int FS@ModelName@OpenHandle( WolframLibraryData libData, mint Argc, MArgument* Args, MArgument Res) { + using namespace @ModelName@_librarylink; + if (Argc != 1) return LIBRARY_TYPE_ERROR; @@ -613,6 +622,8 @@ DLLEXPORT int FS@ModelName@OpenHandle( DLLEXPORT int FS@ModelName@CloseHandle( WolframLibraryData /* libData */, mint Argc, MArgument* Args, MArgument /* Res */) { + using namespace @ModelName@_librarylink; + if (Argc != 1) return LIBRARY_TYPE_ERROR; @@ -631,6 +642,8 @@ DLLEXPORT int FS@ModelName@CloseHandle( DLLEXPORT int FS@ModelName@Set( WolframLibraryData libData, mint Argc, MArgument* Args, MArgument /* Res */) { + using namespace @ModelName@_librarylink; + if (Argc != 2) return LIBRARY_TYPE_ERROR; @@ -666,6 +679,8 @@ DLLEXPORT int FS@ModelName@Set( DLLEXPORT int FS@ModelName@CalculateSpectrum( WolframLibraryData /* libData */, MLINK link) { + using namespace @ModelName@_librarylink; + if (!check_number_of_args(link, 1, "FS@ModelName@CalculateSpectrum")) return LIBRARY_TYPE_ERROR; @@ -695,6 +710,8 @@ DLLEXPORT int FS@ModelName@CalculateSpectrum( DLLEXPORT int FS@ModelName@CalculateObservables( WolframLibraryData /* libData */, MLINK link) { + using namespace @ModelName@_librarylink; + if (!check_number_of_args(link, 1, "FS@ModelName@CalculateObservables")) return LIBRARY_TYPE_ERROR;