Mercurial > octave
comparison libinterp/octave-value/ov-ch-mat.cc @ 28126:4c21f99b4ad5
handle interleaved complex data and new typed data access functions for mex
* mexproto.h, mex.cc, mxarray.h (mxMakeArrayReal, mxMakeArrayComplex,
mxGetDoubles, mxGetSingles, mxGetInt8s, mxGetInt16s, mxGetInt32s,
mxGetInt64s, mxGetUint8s, mxGetUint16s, mxGetUint32s, mxGetUint64s,
mxGetComplexDoubles, mxGetComplexSingles, mxSetDoubles, mxSetSingles,
mxSetInt8s, mxSetInt16s, mxSetInt32s, mxSetInt64s, mxSetUint8s,
mxSetUint16s, mxSetUint32s, mxSetUint64s, mxSetComplexDoubles,
mxSetComplexSingles): New functions. Provide corresponding member
functions in mxArray class hierarchy to handle the actual operations.
(mxGetComplexInt8s, mxGetComplexInt16s, mxGetComplexInt32s,
mxGetComplexInt64s, mxGetComplexUint8s, mxGetComplexUint16s,
mxGetComplexUint32s, mxGetComplexUint64s, mxSetComplexInt8s,
mxSetComplexInt16s, mxSetComplexInt32s, mxSetComplexInt64s,
mxSetComplexUint8s, mxSetComplexUint16s, mxSetComplexUint32s,
mxSetComplexUint64s): Add prototypes and functions, but leave
commented out since we don't have complex integer data.
(class mxArray_number, class mxArray_sparse):
Handle interleaved complex data. In mxArray_octave_value and
mxArray_matlab constructors, handle interleaved flag in constructor to
determine data layout to use when creating mxArray_number or
mxArray_sparse objects.
(mex::make_value): Check flag in mex function to determine whether to
create arrays with interleaved complex.
* ov.h, ov.cc, ov-base.h, ov-base.cc, ov-base-diag.h, ov-base-diag.cc,
ov-bool-mat.h, ov-bool-mat.cc, ov-bool-sparse.h, ov-bool-sparse.cc,
ov-bool.h, ov-bool.cc, ov-cell.h, ov-cell.cc, ov-ch-mat.h,
ov-ch-mat.cc, ov-class.h, ov-class.cc, ov-complex.h, ov-complex.cc,
ov-cx-mat.h, ov-cx-mat.cc, ov-cx-sparse.h, ov-cx-sparse.cc,
ov-float.h, ov-float.cc, ov-flt-complex.h, ov-flt-complex.cc,
ov-flt-cx-mat.h, ov-flt-cx-mat.cc, ov-flt-re-mat.h, ov-flt-re-mat.cc,
ov-intx.h, ov-lazy-idx.h, ov-perm.h, ov-perm.cc, ov-range.h,
ov-range.cc, ov-re-mat.h, ov-re-mat.cc, ov-re-sparse.h,
ov-re-sparse.cc, ov-scalar.h, ov-scalar.cc, ov-struct.h, ov-struct.cc:
In all as_mxArray methods, handle new interleaved input to optionally
create objects that will use interleaved complex data.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 18 Feb 2020 13:16:41 -0500 |
parents | bd51beb6205e |
children | 7854d5752dd2 |
comparison
equal
deleted
inserted
replaced
28125:0a88a4743096 | 28126:4c21f99b4ad5 |
---|---|
220 octave_print_internal (os, matrix, pr_as_read_syntax, | 220 octave_print_internal (os, matrix, pr_as_read_syntax, |
221 current_print_indent_level ()); | 221 current_print_indent_level ()); |
222 } | 222 } |
223 | 223 |
224 mxArray * | 224 mxArray * |
225 octave_char_matrix::as_mxArray (void) const | 225 octave_char_matrix::as_mxArray (bool interleaved) const |
226 { | 226 { |
227 mxArray *retval = new mxArray (mxCHAR_CLASS, dims (), mxREAL); | 227 mxArray *retval = new mxArray (interleaved, mxCHAR_CLASS, dims (), mxREAL); |
228 | 228 |
229 mxChar *pr = static_cast<mxChar *> (retval->get_data ()); | 229 mxChar *pd = static_cast<mxChar *> (retval->get_data ()); |
230 | 230 |
231 mwSize nel = numel (); | 231 mwSize nel = numel (); |
232 | 232 |
233 const char *p = matrix.data (); | 233 const char *pdata = matrix.data (); |
234 | 234 |
235 for (mwIndex i = 0; i < nel; i++) | 235 for (mwIndex i = 0; i < nel; i++) |
236 pr[i] = p[i]; | 236 pd[i] = pdata[i]; |
237 | 237 |
238 return retval; | 238 return retval; |
239 } | 239 } |
240 | 240 |
241 // The C++ standard guarantees cctype defines functions, not macros (and | 241 // The C++ standard guarantees cctype defines functions, not macros (and |