Mercurial > forge
view extra/mex/mex.h @ 0:6b33357c7561 octave-forge
Initial revision
author | pkienzle |
---|---|
date | Wed, 10 Oct 2001 19:54:49 +0000 |
parents | |
children | 85e900e17f32 |
line wrap: on
line source
// Author: Paul Kienzle, 2001-03-22 // I grant this code to the public domain. // // THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF // SUCH DAMAGE. // 2001-06-21 Paul Kienzle <pkienzle@users.sf.net> // * use unsigned short for mxChar rather than char /* mex.h is for use in C-programs only; do NOT include it in mex.cc */ #define HAVE_OCTAVE typedef void mxArray; typedef unsigned short mxChar; enum mxComplexity { mxREAL=0, mxCOMPLEX=1 }; #if !defined(__cplusplus) typedef int bool; #endif /* -V4 stuff */ #if defined(V4) #define Matrix mxArray #define REAL mxREAL #endif #define mxMAXNAME 64 #if defined(__cplusplus) extern "C" { #endif #if defined(V4) void mexFunction(int nlhs, mxArray* plhs[], int nrhs, mxArray* prhs[]); #else void mexFunction(int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[]); #endif /* Floating point representation */ bool mxIsNaN(double v); bool mxIsFinite(double v); bool mxIsInf(double v); double mxGetEps(void); double mxGetInf(void); double mxGetNaN(void); /* V4 floating point routines renamed in V5 */ #define mexIsNaN mxIsNaN #define mexIsFinite mxIsFinite #define mexIsInf mxIsInf #define mexGetEps mxGetEps #define mexGetInf mxGetInf #define mexGetNaN mxGetNan /* Interface to the interpreter */ extern const char *mexFunctionName; int mexCallMATLAB(const int nargout, mxArray* argout[], const int nargin, const mxArray* argin[], const char* fname); void mexSetTrapFlag(int flag); int mexEvalString (const char *s); void mexErrMsgTxt (const char *s); void mexWarnMsgTxt (const char *s); void mexPrintf (const char *fmt, ...); mxArray* mexGetArray(const char *name, const char *space); mxArray* mexGetArrayPtr(const char *name, const char *space); #define mexGetGlobal(nm) mexGetArray(nm,"global") #define mexGetMatrix(nm) mexGetArray(nm,"caller") #define mexGetMatrixPtr(nm) mexGetArrayPtr(nm,"caller") int mexPutArray(mxArray* ptr, const char *space); #define mexPutMatrix(nm) mexPutArray(nm,"caller") /* Memory */ void *mxMalloc(int n); void *mxCalloc(int n, int size); void mxFree(void *ptr); void mexMakeArrayPersistent(mxArray *ptr); void mexMakeMemoryPersistent(void *ptr); /* interpreter values */ mxArray* mxCreateDoubleMatrix(int nr, int nc, int iscomplex); #define mxCreateFull mxCreateDoubleMatrix void mxDestroyArray(mxArray *v); #define mxFreeMatrix mxDestroyArray int mxIsChar (const mxArray* ptr); #define mxIsString mxIsChar int mxIsSparse (const mxArray* ptr); int mxIsFull (const mxArray* ptr); int mxIsDouble (const mxArray* ptr); int mxIsNumeric (const mxArray* ptr); int mxIsComplex (const mxArray* ptr); int mxIsEmpty (const mxArray* ptr); int mxGetM (const mxArray* ptr); int mxGetN (const mxArray* ptr); double* mxGetPr (const mxArray* ptr); /* The following cannot be supported in Octave without incurring * the large runtime penalty of copying arrays to/from matlab format double* mxGetPi (const mxArray* ptr); void mxSetM (mxArray* ptr, const int M); void mxSetN (mxArray* ptr, const int N); void mxSetPr (mxArray* ptr, double* pr); void mxSetPi (mxArray* ptr, double* pi); */ int mxGetString (const mxArray* ptr, char *buf, int buflen); char *mxArrayToString (const mxArray* ptr); mxArray *mxCreateString (const char *str); double mxGetScalar (const mxArray* ptr); #if defined(__cplusplus) } #endif