/* 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; }