@@ -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