comparison libinterp/octave-value/ov-flt-re-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
715 octave_print_internal (os, matrix, pr_as_read_syntax, 715 octave_print_internal (os, matrix, pr_as_read_syntax,
716 current_print_indent_level ()); 716 current_print_indent_level ());
717 } 717 }
718 718
719 mxArray * 719 mxArray *
720 octave_float_matrix::as_mxArray (void) const 720 octave_float_matrix::as_mxArray (bool interleaved) const
721 { 721 {
722 mxArray *retval = new mxArray (mxSINGLE_CLASS, dims (), mxREAL); 722 mxArray *retval = new mxArray (interleaved, mxSINGLE_CLASS, dims (), mxREAL);
723 723
724 float *pr = static_cast<float *> (retval->get_data ()); 724 mxSingle *pd = static_cast<mxSingle *> (retval->get_data ());
725 725
726 mwSize nel = numel (); 726 mwSize nel = numel ();
727 727
728 const float *p = matrix.data (); 728 const float *pdata = matrix.data ();
729 729
730 for (mwIndex i = 0; i < nel; i++) 730 for (mwIndex i = 0; i < nel; i++)
731 pr[i] = p[i]; 731 pd[i] = pdata[i];
732 732
733 return retval; 733 return retval;
734 } 734 }
735 735
736 // This uses a smarter strategy for doing the complex->real mappers. We 736 // This uses a smarter strategy for doing the complex->real mappers. We