[Julia API] Initialize output variables
In the Julia API output int
, double
and string
were not initialized and, hence, we passed undefined variables to ccall
in a couple of places. This PR includes the following:
-
First commit initializes
int
s withRef{Cint}()
and returns the referenced value. Example diff:function getElement(elementTag) + api_elementType_ = Ref{Cint}() api_nodeTags_ = Vector{Ptr{Cint}}(1) api_nodeTags_n_ = Vector{Csize_t}(1) ierr = Ref{Cint}() ccall((:gmshModelMeshGetElement, gmsh.clib), Void, (Cint, Ptr{Cint}, Ptr{Ptr{Cint}}, Ptr{Csize_t}, Ptr{Cint}), - elementTag, elementType, api_nodeTags_, api_nodeTags_n_, ierr) + elementTag, api_elementType_, api_nodeTags_, api_nodeTags_n_, ierr) nodeTags = unsafe_wrap(Array, api_nodeTags_[1], api_nodeTags_n_[1], true) ierr[] != 0 && error("gmshModelMeshGetElement returned non-zero error code: $(ierr[])") - return elementType, nodeTags + return api_elementType_[], nodeTags end
-
Second commit initializes output
double
withRef{Cdouble}()
and returns the referenced value. Example diff:function getNumber(name) + api_value_ = Ref{Cdouble}() ierr = Ref{Cint}() ccall((:gmshOptionGetNumber, gmsh.clib), Void, (Ptr{Cchar}, Ptr{Cdouble}, Ptr{Cint}), - name, value, ierr) + name, api_value_, ierr) ierr[] != 0 && error("gmshOptionGetNumber returned non-zero error code: $(ierr[])") - return value + return api_value_[] end
-
Third commit initialized output
string
withRef{Ptr{Cchar}}
and returns the referenced pointer as a JuliaString
. Example diff:function getPhysicalName(dim, tag) + api_name_ = Ref{Ptr{Cchar}}() ierr = Ref{Cint}() ccall((:gmshModelGetPhysicalName, gmsh.clib), Void, (Cint, Cint, Ptr{Ptr{Cchar}}, Ptr{Cint}), - dim, tag, name, ierr) + dim, tag, api_name_, ierr) + name = unsafe_string(api_name_[]) ierr[] != 0 && error("gmshModelGetPhysicalName returned non-zero error code: $(ierr[])") return name end