From 8987bfd60e036fc87b0a7bfc63015fdb8cf2cbb3 Mon Sep 17 00:00:00 2001 From: JonWel Date: Sun, 22 Mar 2015 11:31:47 +0100 Subject: [PATCH] Update CoolProp.jl There is now only one Julia Wrapper compatible for both Julia 0.3 and 0.4 version. A small code check the version and apply some corrections to make this Julia 0.4 code compatible with older version. --- wrappers/Julia/CoolProp.jl | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/wrappers/Julia/CoolProp.jl b/wrappers/Julia/CoolProp.jl index 7a7c2360..0671a418 100644 --- a/wrappers/Julia/CoolProp.jl +++ b/wrappers/Julia/CoolProp.jl @@ -2,6 +2,16 @@ module CoolProp export F2K, K2F, HAPropsSI, PropsSI, PhaseSI, get_global_param_string, get_param_index, get_input_pair_index, AbstractState_factory, AbstractState_free, AbstractState_update, AbstractState_keyed_output +# Check the current Julia version to make this Julia 0.4 code compatible with older version +if VERSION <= VersionNumber(0,4) + typealias UInt8 Uint8 + typealias Ref Ptr + typealias RefValue Array + errcode = Array(Clong, 1) +else + errcode = Ref{Clong}(0) +end + const buffer_length = 255 message_buffer = Array(UInt8, buffer_length) @@ -72,14 +82,12 @@ end # Low-level access # --------------------------------- -errcode = Ref{Clong}(0) - # Generate an AbstractState instance, return an integer handle to the state class generated to be used in the other low-level accessor functions # param backend The backend you will use, "HEOS", "REFPROP", etc. # param fluids '&' delimited list of fluids # return A handle to the state class generated function AbstractState_factory(backend::String, fluids::String) - AbstractState = ccall( (:AbstractState_factory, "CoolProp"), Clong, (Ptr{UInt8},Ptr{UInt8},Ref{Clong},Ptr{UInt8},Clong), backend,fluids,errcode::Base.RefValue{Clong},message_buffer::Array{Uint8,1},buffer_length) + AbstractState = ccall( (:AbstractState_factory, "CoolProp"), Clong, (Ptr{UInt8},Ptr{UInt8},Ref{Clong},Ptr{UInt8},Clong), backend,fluids,errcode::RefValue{Clong,1},message_buffer::Array{Uint8,1},buffer_length) if errcode[] != 0 if errcode[] == 1 error("CoolProp: ", bytestring(convert(Ptr{UInt8}, pointer(message_buffer)))) @@ -95,7 +103,7 @@ end # Release a state class generated by the low-level interface wrapper # param handle The integer handle for the state class stored in memory function AbstractState_free(handle::Clong) - ccall( (:AbstractState_free, "CoolProp"), Void, (Clong,Ref{Clong},Ptr{UInt8},Clong), handle,errcode::Base.RefValue{Clong},message_buffer::Array{Uint8,1},buffer_length) + ccall( (:AbstractState_free, "CoolProp"), Void, (Clong,Ref{Clong},Ptr{UInt8},Clong), handle,errcode::RefValue{Clong,1},message_buffer::Array{Uint8,1},buffer_length) if errcode[] != 0 if errcode[] == 1 error("CoolProp: ", bytestring(convert(Ptr{UInt8}, pointer(message_buffer)))) @@ -112,7 +120,7 @@ end # param handle The integer handle for the state class stored in memory # param fractions The array of fractions function AbstractState_set_fractions(handle::Clong,fractions::Array) - ccall( (:AbstractState_set_fractions, "CoolProp"), Void, (Clong,Ptr{Cdouble},Clong,Ref{Clong},Ptr{UInt8},Clong), handle,fractions,length(fractions),errcode::Base.RefValue{Clong},message_buffer::Array{Uint8,1},buffer_length) + ccall( (:AbstractState_set_fractions, "CoolProp"), Void, (Clong,Ptr{Cdouble},Clong,Ref{Clong},Ptr{UInt8},Clong), handle,fractions,length(fractions),errcode::RefValue{Clong,1},message_buffer::Array{Uint8,1},buffer_length) if errcode[] != 0 if errcode[] == 1 error("CoolProp: ", bytestring(convert(Ptr{UInt8}, pointer(message_buffer)))) @@ -131,7 +139,7 @@ end # param value1 The first input value # param value2 The second input value function AbstractState_update(handle::Clong,input_pair::Clong,value1::Number,value2::Number) - ccall( (:AbstractState_update, "CoolProp"), Void, (Clong,Clong,Cdouble,Cdouble,Ref{Clong},Ptr{UInt8},Clong), handle,input_pair,value1,value2,errcode::Base.RefValue{Clong},message_buffer::Array{Uint8,1},buffer_length) + ccall( (:AbstractState_update, "CoolProp"), Void, (Clong,Clong,Cdouble,Cdouble,Ref{Clong},Ptr{UInt8},Clong), handle,input_pair,value1,value2,errcode::RefValue{Clong,1},message_buffer::Array{Uint8,1},buffer_length) if errcode[] != 0 if errcode[] == 1 error("CoolProp: ", bytestring(convert(Ptr{UInt8}, pointer(message_buffer)))) @@ -148,7 +156,7 @@ end # param handle The integer handle for the state class stored in memory # param param The integer value for the parameter you want function AbstractState_keyed_output(handle::Clong, param::Clong) - output = ccall( (:AbstractState_keyed_output, "CoolProp"), Cdouble, (Clong,Clong,Ref{Clong},Ptr{UInt8},Clong), handle,param,errcode::Base.RefValue{Clong},message_buffer::Array{Uint8,1},buffer_length) + output = ccall( (:AbstractState_keyed_output, "CoolProp"), Cdouble, (Clong,Clong,Ref{Clong},Ptr{UInt8},Clong), handle,param,errcode::RefValue{Clong,1},message_buffer::Array{Uint8,1},buffer_length) if errcode[] != 0 if errcode[] == 1 error("CoolProp: ", bytestring(convert(Ptr{UInt8}, pointer(message_buffer))))