TA_RetCode TA_TYPPRICE_FramePP( TA_Libc *libHandle, TA_Integer startIdx, TA_Integer endIdx, TA_Integer *outBegIdx, TA_Integer *outNbElement, TA_ParamHolderPriv in[], TA_ParamHolderPriv optIn[], TA_ParamHolderPriv out[] ) { (void)optIn; /* Get rid of compiler warning. */ return TA_TYPPRICE( libHandle, startIdx, endIdx, in[0].p.in.data.inPrice.high, /* inHigh_0 */ in[0].p.in.data.inPrice.low, /* inLow_0 */ in[0].p.in.data.inPrice.close, /* inClose_0 */ outBegIdx, outNbElement, out[0].p.out.data.outReal /* outReal_0 */ ); }
/* The gateway routine */ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { /* ----------------- Variables ----------------- */ /* input variables */ /* mandatory input */ int startIdx; int endIdx; double * high; double * low; double * close; /* optional input */ /* output variables */ int outBegIdx; int outNbElement; double* outReal; /* input dimentions */ int inSeriesRows; int inSeriesCols; /* error handling */ TA_RetCode retCode; /* ----------------- input/output count ----------------- */ /* Check for proper number of arguments. */ if (nrhs < 3 || nrhs > 3) mexErrMsgTxt("#3 inputs possible #0 optional."); if (nlhs != 1) mexErrMsgTxt("#1 output required."); /* ----------------- INPUT ----------------- */ /* Create a pointer to the input matrix high. */ high = mxGetPr(prhs[0]); /* Get the dimensions of the matrix input high. */ inSeriesCols = mxGetN(prhs[0]); if (inSeriesCols != 1) mexErrMsgTxt("high only vector alowed."); /* Create a pointer to the input matrix low. */ low = mxGetPr(prhs[1]); /* Get the dimensions of the matrix input low. */ inSeriesCols = mxGetN(prhs[1]); if (inSeriesCols != 1) mexErrMsgTxt("low only vector alowed."); /* Create a pointer to the input matrix close. */ close = mxGetPr(prhs[2]); /* Get the dimensions of the matrix input close. */ inSeriesCols = mxGetN(prhs[2]); if (inSeriesCols != 1) mexErrMsgTxt("close only vector alowed."); inSeriesRows = mxGetM(prhs[2]); endIdx = inSeriesRows - 1; startIdx = 0; /* Process optional arguments */ /* ----------------- OUTPUT ----------------- */ outReal = mxCalloc(inSeriesRows, sizeof(double)); /* -------------- Invocation ---------------- */ retCode = TA_TYPPRICE( startIdx, endIdx, high, low, close, &outBegIdx, &outNbElement, outReal); /* -------------- Errors ---------------- */ if (retCode) { mxFree(outReal); mexPrintf("%s%i","Return code=",retCode); mexErrMsgTxt(" Error!"); } // Populate Output plhs[0] = mxCreateDoubleMatrix(outBegIdx+outNbElement,1, mxREAL); memcpy(((double *) mxGetData(plhs[0]))+outBegIdx, outReal, outNbElement*mxGetElementSize(plhs[0])); mxFree(outReal); } /* END mexFunction */