/* Copyright (C) 2004 Caltech Written by Lexing Ying */ #ifndef _MEXAUX_HPP_ #define _MEXAUX_HPP_ #include "mex.h" #include "matrix.h" #include "fdct_wrapping.hpp" FDCT_WRAPPING_NS_BEGIN_NAMESPACE inline void mex2cpp(const mxArray*& md, int& cd); inline void cpp2mex(const int& cd, mxArray*& md); inline void mex2cpp(const mxArray*& md, double& cd); inline void cpp2mex(const double& cd, mxArray*& md); inline void mex2cpp(const mxArray*& md, CpxOffMat& cd); inline void cpp2mex(const CpxOffMat& cd, mxArray*& md); inline void mex2cpp(const mxArray*& md, CpxNumMat& cd); inline void cpp2mex(const CpxNumMat& cd, mxArray*& md); template inline void mex2cpp(const mxArray*& md, vector& cd); template inline void cpp2mex(const vector& cd, mxArray*& md); //----------------------int inline void mex2cpp(const mxArray*& md, int& cd) { cd = int(mxGetScalar(md)); return; } inline void cpp2mex(const int& cd, mxArray*& md) { md = mxCreateDoubleScalar(cd); return; } //----------------------double inline void mex2cpp(const mxArray*& md, double& cd) { cd = mxGetScalar(md); return; } inline void cpp2mex(const double& cd, mxArray*& md) { md = mxCreateDoubleScalar(cd); return; } //----------------------cpxoffmat inline void mex2cpp(const mxArray*& md, CpxOffMat& cd) { int m = mxGetM(md); int n = mxGetN(md); double* xr = mxGetPr(md); double* xi = mxGetPi(md); int s = -m/2; int t = -n/2; cd.resize(m,n); if(xr!=NULL && xi!=NULL) { int cnt = 0; for(int j=t; j template inline void mex2cpp(const mxArray*& md, vector& cd) { int m = mxGetM(md); assert(m==1); int n = mxGetN(md); cd.resize(n); for(int ci=0; ci inline void cpp2mex(const vector& cd, mxArray*& md) { int n = cd.size(); md = mxCreateCellMatrix(1, n); for(int ci=0; ci