Mercurial > jwe > octave
comparison libinterp/octave-value/ov-bool-sparse.cc @ 28131: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 | 0a6ed9dcd601 |
comparison
equal
deleted
inserted
replaced
28130:0a88a4743096 | 28131:4c21f99b4ad5 |
---|---|
800 | 800 |
801 return retval; | 801 return retval; |
802 } | 802 } |
803 | 803 |
804 mxArray * | 804 mxArray * |
805 octave_sparse_bool_matrix::as_mxArray (void) const | 805 octave_sparse_bool_matrix::as_mxArray (bool interleaved) const |
806 { | 806 { |
807 mwSize nz = nzmax (); | 807 mwSize nz = nzmax (); |
808 mxArray *retval = new mxArray (mxLOGICAL_CLASS, rows (), columns (), | 808 mwSize nr = rows (); |
809 nz, mxREAL); | 809 mwSize nc = columns (); |
810 bool *pr = static_cast<bool *> (retval->get_data ()); | 810 |
811 mxArray *retval = new mxArray (interleaved, mxLOGICAL_CLASS, nr, nc, nz, | |
812 mxREAL); | |
813 | |
814 mxLogical *pd = static_cast<mxLogical *> (retval->get_data ()); | |
811 mwIndex *ir = retval->get_ir (); | 815 mwIndex *ir = retval->get_ir (); |
816 | |
817 const bool *pdata = matrix.data (); | |
818 const octave_idx_type *pridx = matrix.ridx (); | |
819 | |
820 for (mwIndex i = 0; i < nz; i++) | |
821 { | |
822 pd[i] = pdata[i]; | |
823 | |
824 ir[i] = pridx[i]; | |
825 } | |
826 | |
812 mwIndex *jc = retval->get_jc (); | 827 mwIndex *jc = retval->get_jc (); |
813 | 828 |
814 for (mwIndex i = 0; i < nz; i++) | 829 const octave_idx_type *pcidx = matrix.cidx (); |
815 { | 830 |
816 pr[i] = matrix.data (i); | 831 for (mwIndex i = 0; i < nc + 1; i++) |
817 ir[i] = matrix.ridx (i); | 832 jc[i] = pcidx[i]; |
818 } | |
819 | |
820 for (mwIndex i = 0; i < columns () + 1; i++) | |
821 jc[i] = matrix.cidx (i); | |
822 | 833 |
823 return retval; | 834 return retval; |
824 } | 835 } |