#include // Implementation // Init the MATLAB engine // (no need to call it directly since it is automatically invoked by any other command) IGL_INLINE void igl::mlinit(Engine** mlengine) { *mlengine = engOpen("\0"); } // Closes the MATLAB engine IGL_INLINE void igl::mlclose(Engine** mlengine) { engClose(*mlengine); *mlengine = 0; } // Send a matrix to MATLAB IGL_INLINE void igl::mlsetmatrix(Engine** mlengine, std::string name, const Eigen::MatrixXd& M) { if (*mlengine == 0) mlinit(mlengine); mxArray *A = mxCreateDoubleMatrix(M.rows(), M.cols(), mxREAL); double *pM = mxGetPr(A); int c = 0; for(int j=0; j& M) { if (*mlengine == 0) mlinit(mlengine); mxArray *A = mxCreateDoubleMatrix(M.rows(), M.cols(), mxREAL); double *pM = mxGetPr(A); int c = 0; for(int j=0; j t; mxArray *ary = engGetVariable(*mlengine, name.c_str()); if (ary == NULL) { m = 0; n = 0; M = Eigen::MatrixXd(0,0); } else { m = mxGetM(ary); n = mxGetN(ary); M = Eigen::MatrixXd(m,n); double *pM = mxGetPr(ary); int c = 0; for(int j=0; j t; mxArray *ary = engGetVariable(*mlengine, name.c_str()); if (ary == NULL) { m = 0; n = 0; M = Eigen::MatrixXf(0,0); } else { m = mxGetM(ary); n = mxGetN(ary); M = Eigen::MatrixXf(m,n); double *pM = mxGetPr(ary); int c = 0; for(int j=0; j t; mxArray *ary = engGetVariable(*mlengine, name.c_str()); if (ary == NULL) { m = 0; n = 0; M = Eigen::MatrixXi(0,0); } else { m = mxGetM(ary); n = mxGetN(ary); M = Eigen::MatrixXi(m,n); double *pM = mxGetPr(ary); int c = 0; for(int j=0; j& M) { if (*mlengine == 0) mlinit(mlengine); unsigned long m = 0; unsigned long n = 0; std::vector t; mxArray *ary = engGetVariable(*mlengine, name.c_str()); if (ary == NULL) { m = 0; n = 0; M = Eigen::Matrix(0,0); } else { m = mxGetM(ary); n = mxGetN(ary); M = Eigen::Matrix(m,n); double *pM = mxGetPr(ary); int c = 0; for(int j=0; j' && buf[1] == '>' && buf[2] == ' ') buf += 3; if (buf[0] == '\n') ++buf; return std::string(buf); }