internal mxNumericArray(SafeArrayPtr pa) : base(pa, mxArrayType.Numeric) { CheckActive(); mxClassID clsId = matrix.mxGetClassID(this.NativeObject); int clsIdInt = (int)clsId; // isNumeric if (clsIdInt >= 6 && clsIdInt <= 15) { this.NumericType = (mxNumericType)clsIdInt; } else { throw new ArgumentException("The argument is not a numeric."); } }
/// <summary> /// Create a mxArray with a mxArray pointer. /// </summary> /// <param name="pa"></param> /// <returns></returns> internal static mxArray Create(SafeArrayPtr pa) { if (pa.IsInvalid) { throw new ArgumentException("pa"); } mxClassID clsId = matrix.mxGetClassID(pa); switch (clsId) { case mxClassID.mxDOUBLE_CLASS: case mxClassID.mxINT16_CLASS: case mxClassID.mxINT32_CLASS: case mxClassID.mxINT64_CLASS: case mxClassID.mxINT8_CLASS: case mxClassID.mxSINGLE_CLASS: case mxClassID.mxUINT16_CLASS: case mxClassID.mxUINT32_CLASS: case mxClassID.mxUINT64_CLASS: case mxClassID.mxUINT8_CLASS: return(new mxNumericArray(pa)); case mxClassID.mxLOGICAL_CLASS: return(new mxLogicalArray(pa)); case mxClassID.mxCELL_CLASS: return(new mxCellArray(pa)); case mxClassID.mxCHAR_CLASS: return(new mxCharArray(pa)); case mxClassID.mxSTRUCT_CLASS: return(new mxStructArray(pa)); default: throw new NotSupportedException(); } }
internal static extern IntPtr mxCreateNumericArray(int ndim, int[] dims, mxClassID classid, mxComplexity flag);
internal static extern IntPtr mxCreateNumericMatrix(int n, int m, mxClassID classid, mxComplexity c);