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