@@ -289,7 +289,7 @@ function mxarray(a::AbstractArray{T}) where {T<:MxRealNum}
289289 return mx
290290end
291291
292- function mxarray(a:: AbstractArray{T} ) where {T<: MxComplexNum }
292+ function mxarray(a:: AbstractArray{T} ) where {T <: MxComplexNum }
293293 mx = mxarray(T, size(a))
294294 na = length(a)
295295 rdat = unsafe_wrap(Array, real_ptr(mx), na)
@@ -302,6 +302,36 @@ function mxarray(a::AbstractArray{T}) where {T<:MxComplexNum}
302302end
303303
304304
305+ function mxarray(a:: NTuple{N, T} ) where {N, T <: MxRealNum }
306+ mx = mxarray(T, N)
307+ pdat = ccall(mx_get_data[], Ptr{T}, (Ptr{Cvoid},), mx)
308+ dat = unsafe_wrap(Array, pdat, N)
309+ for i in 1 : N
310+ dat[i] = a[i]
311+ end
312+ return mx
313+ end
314+
315+ function mxarray(a:: NTuple{N, T} ) where {N, T <: MxComplexNum }
316+ mx = mxarray(T, size(a))
317+ na = length(a)
318+ rdat = unsafe_wrap(Array, real_ptr(mx), na)
319+ idat = unsafe_wrap(Array, imag_ptr(mx), na)
320+ for (i, ix) in enumerate(eachindex(a))
321+ rdat[i] = real(a[ix])
322+ idat[i] = imag(a[ix])
323+ end
324+ return mx
325+ end
326+
327+ function mxarray(a:: Tuple )
328+ mx = mxcellarray(length(a))
329+ for i in 1 : length(a)
330+ set_cell(mx, i, mxarray(a[i]))
331+ end
332+ return mx
333+ end
334+
305335# sparse matrix
306336
307337function mxsparse(ty:: Type{Float64} , m:: Integer , n:: Integer , nzmax:: Integer )
0 commit comments