Files
CoolProp/wrappers/Mathematica/CoolPropMathematica.cpp
Szabolcs Horvát a1e6b713a7 Free input strings in Mathematica interface (#1761)
* Free input strings in Mathematica interface
2018-11-28 20:58:39 -05:00

77 lines
2.4 KiB
C++

/* Include required header */
#include "CoolProp.h"
#include "HumidAirProp.h"
#include "WolframLibrary.h"
/* Return the version of Library Link */
extern "C" DLLEXPORT mint WolframLibrary_getVersion( ) {
return WolframLibraryVersion;
}
/* Initialize Library */
extern "C" DLLEXPORT int WolframLibrary_initialize( WolframLibraryData libData) {
return LIBRARY_NO_ERROR;
}
/* Uninitialize Library */
extern "C" DLLEXPORT void WolframLibrary_uninitialize( WolframLibraryData libData) {
return;
}
/* Adds one to the input, returning the result */
extern "C" DLLEXPORT int plus_one( WolframLibraryData libData, mint Argc, MArgument *Args, MArgument Res) {
if (Argc != 1) return LIBRARY_FUNCTION_ERROR;
double x = MArgument_getReal(Args[0]);
MArgument_setReal(Res, x + 1.0);
return LIBRARY_NO_ERROR;
}
extern "C" DLLEXPORT int PropsSI( WolframLibraryData libData, mint Argc, MArgument *Args, MArgument Res) {
if (Argc != 6) return LIBRARY_FUNCTION_ERROR;
char *Output = MArgument_getUTF8String(Args[0]);
char *Name1 = MArgument_getUTF8String(Args[1]);
double Prop1 = MArgument_getReal(Args[2]);
char *Name2 = MArgument_getUTF8String(Args[3]);
double Prop2 = MArgument_getReal(Args[4]);
char *FluidName = MArgument_getUTF8String(Args[5]);
double val = CoolProp::PropsSI(Output, Name1, Prop1, Name2, Prop2, FluidName);
libData->UTF8String_disown(Output);
libData->UTF8String_disown(Name1);
libData->UTF8String_disown(Name2);
libData->UTF8String_disown(FluidName);
MArgument_setReal(Res, val);
return LIBRARY_NO_ERROR;
}
extern "C" DLLEXPORT int HAPropsSI( WolframLibraryData libData, mint Argc, MArgument *Args, MArgument Res) {
if (Argc != 7) return LIBRARY_FUNCTION_ERROR;
char *Output = MArgument_getUTF8String(Args[0]);
char *Name1 = MArgument_getUTF8String(Args[1]);
double Prop1 = MArgument_getReal(Args[2]);
char *Name2 = MArgument_getUTF8String(Args[3]);
double Prop2 = MArgument_getReal(Args[4]);
char *Name3 = MArgument_getUTF8String(Args[5]);
double Prop3 = MArgument_getReal(Args[6]);
double val = HumidAir::HAPropsSI(Output, Name1, Prop1, Name2, Prop2, Name3, Prop3);
libData->UTF8String_disown(Output);
libData->UTF8String_disown(Name1);
libData->UTF8String_disown(Name2);
libData->UTF8String_disown(Name3);
MArgument_setReal(Res, val);
return LIBRARY_NO_ERROR;
}