summaryrefslogtreecommitdiff
path: root/modules/mexlib/includes
diff options
context:
space:
mode:
Diffstat (limited to 'modules/mexlib/includes')
-rwxr-xr-xmodules/mexlib/includes/mex.h356
-rwxr-xr-xmodules/mexlib/includes/sci_gateway.h35
2 files changed, 391 insertions, 0 deletions
diff --git a/modules/mexlib/includes/mex.h b/modules/mexlib/includes/mex.h
new file mode 100755
index 000000000..d40e4b2f1
--- /dev/null
+++ b/modules/mexlib/includes/mex.h
@@ -0,0 +1,356 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA
+ * Copyright (C) ENPC
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef SCI_MEX
+#define SCI_MEX
+
+#ifdef WIN32
+#include <stddef.h> /*for LCC */
+#endif
+
+#define __MEX_INCLUDE__
+#include "stack-c.h"
+#undef __MEX_INCLUDE__
+
+ typedef int Matrix;
+ typedef unsigned long int vraiptrst;
+#ifndef __DEF_MXARRAY__
+#define __DEF_MXARRAY__
+ typedef int mxArray;
+ typedef int Gatefunc (int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[]);
+#endif
+
+ typedef int (*GatefuncH) (int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[]);
+
+ typedef int (*FGatefuncH) (int *nlhs, mxArray *plhs[], int *nrhs, mxArray *prhs[]);
+
+ typedef int (*Myinterfun) (char *, GatefuncH F);
+
+ typedef int (*GT) ();
+
+#ifndef __DEF_TABLE_STRUCT__
+#define __DEF_TABLE_STRUCT__
+ typedef struct table_struct
+ {
+ Myinterfun f; /** interface **/
+ GT F; /** function **/
+ char *name; /** its name **/
+ } GenericTable;
+#endif
+
+#define mxLOGICAL int
+#define mxLogical int
+
+#define REAL 0
+#define COMPLEX 1
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+#define mxCreateFull mxCreateDoubleMatrix
+
+#ifndef __cplusplus
+#ifndef bool
+#define bool int
+#endif
+#endif
+
+ /* mexGetMatrixPtr - mexGetArrayPtr : NOT IN MATLAB API - V6.4 compatible*/
+#define mexGetMatrixPtr(name) mexGetArrayPtr(name, "caller")
+
+ /* mexGetArray : NOT IN MATLAB API - V6.4 compatible*/
+#define mexGetArrayPtr(name,type) mexGetArray(name,type)
+
+ void mexPrintf(const char *fmt, ...);
+ void C2F(mexprintf)(char *error_msg, int len);
+
+ /* mexPutFull: NOT IN MATLAB API - V4 compatible */
+ /** Put a matrix in Scilab Workspace */
+#define mexPutFull(name,m,n,ptrM,tag) \
+ if ( ! C2F(cwritemat)(name,(c_local=m,&c_local),(c1_local=n,&c1_local),ptrM,strlen(name))) { \
+ mexErrMsgTxt(_("mexPutFull failed\n"));return; }
+
+ /* prototypes */
+
+ /* mexInfo: NOT IN MATLAB API - SCILAB SPECIFIC ?*/
+ void mexInfo (char *);
+
+ /* mexCheck: NOT IN MATLAB API - SCILAB SPECIFIC ?*/
+ int mexCheck (char *, int );
+
+ mxArray *mxCreateCharMatrixFromStrings (int m, const char **str);
+ mxArray *mxCreateString (const char *string);
+ mxArray *C2F(mxcreatestring) (char *string, long int l);
+ /* mxcreatefull : NOT IN MATLAB API - v4 compatible */
+ mxArray *C2F(mxcreatefull) (int *m, int *n, int *it);
+ mxArray *mxCreateCharArray (int ND, const int *size);
+
+ mxArray *mxCreateCellArray (int ND, const int *size);
+ mxArray *mxCreateCellMatrix (int m, int n);
+
+ mxArray *mxCreateStructArray (int ndim, const int *dims, int nfields, const char **field_names);
+ mxArray *mxCreateStructMatrix (int m, int n, int nfields, const char **field_names);
+
+ mxArray *mxGetCell (const mxArray *ptr, int index);
+
+ double mxGetScalar (const mxArray *ptr);
+ double C2F(mxgetscalar) (mxArray *ptr);
+ double *mxGetPi (const mxArray *ptr);
+ double * C2F(mxgetpi) (mxArray *ptr);
+ double *mxGetPr (const mxArray *ptr);
+ double * C2F(mxgetpr) (mxArray *ptr);
+ double mxGetInf (void);
+ double mxGetNaN (void);
+ double mxGetEps (void);
+ bool mxIsNaN (double x);
+ bool mxIsInf (double x);
+ bool mxIsFinite (double x);
+ int *mxGetDimensions (const mxArray *ptr);
+ int mxCalcSingleSubscript (const mxArray *ptr, int nsubs, const int *subs);
+ int mxGetNumberOfElements (const mxArray *ptr);
+ int mxGetNumberOfDimensions(const mxArray *ptr);
+ int mxGetNumberOfFields(const mxArray *ptr);
+ void *mxGetData(const mxArray *ptr);
+ void *mxGetImagData(const mxArray *ptr);
+
+ void clear_mex(int nlhs, mxArray **plhs, int nrhs, mxArray **prhs);
+
+ extern void errjump ();
+
+ int mxGetM (const mxArray *ptr);
+ int C2F(mxgetm) (mxArray *ptr);
+ int mxGetN (const mxArray *ptr);
+ int C2F(mxgetn) (mxArray *ptr);
+ int mxGetString (const mxArray *ptr, char *str, int strl);
+ int C2F(mxgetstring) (mxArray *ptr, char *str, int *strl);
+ bool mxIsComplex (const mxArray *ptr);
+ int C2F(mxiscomplex) (mxArray *ptr);
+ /* mxisfull : NOT IN MATLAB API - v4 compatible */
+ bool mxIsFull (const mxArray *ptr);
+ int C2F(mxisfull) (mxArray *ptr);
+ bool mxIsNumeric (const mxArray *ptr);
+ int C2F(mxisnumeric) (mxArray *ptr);
+ bool mxIsSparse (const mxArray *ptr);
+ int C2F(mxissparse) (mxArray *ptr);
+ /* mxisstring : NOT IN MATLAB API - v6.0 compatible */
+ bool mxIsString (const mxArray *ptr);
+ int C2F(mxisstring) (mxArray *ptr);
+ int *mxGetIr (const mxArray *ptr);
+ int *mxGetJc (const mxArray *ptr);
+
+ /**
+ * TODO : comment
+ * @param type
+ * @param m
+ * @param n
+ * @param it
+ * @param lr
+ * @param ptr
+ * @param type_len
+ * @return
+ */
+ int C2F(createptr) (char *type, int *m, int *n, int *it, int *lr, int *ptr, long int type_len);
+
+ /**
+ * TODO : comment
+ * @param m
+ * @param ptr
+ * @return
+ */
+ int C2F(createstkptr) (int *m, vraiptrst *ptr);
+
+
+ /**
+ * TODO : comment
+ * @param nlhs
+ * @param plhs
+ * @param nrhs
+ * @param prhs
+ * @return
+ */
+ int C2F(endmex) (int *nlhs, mxArray **plhs, int *nrhs, mxArray **prhs);
+
+
+ /**
+ * TODO : comment
+ * @param nlhs
+ * @param plhs
+ * @param nrhs
+ * @param prhs
+ * @return
+ */
+ int C2F(initmex) (int *nlhs, mxArray **plhs, int *nrhs, mxArray **prhs);
+
+ int C2F(mexcallscilab) (int *nlhs, mxArray **plhs, int *nrhs, mxArray **prhs, char *name, int namelen);
+ int C2F(mxcopyptrtoreal8) (mxArray *ptr, double *y, int *n);
+ int C2F(mxcopyreal8toptr) (double *y, mxArray *ptr, int *n);
+ int fortran_mex_gateway (char *fname, FGatefuncH F);
+ int mexAtExit (mxArray *ptr);
+ int mexCallSCILAB (int nlhs, mxArray **plhs, int nrhs, mxArray **prhs, const char *name);
+ int mexCallMATLAB (int nlhs, mxArray **plhs, int nrhs, mxArray **prhs, const char *name);
+ int mex_gateway (char *fname, GatefuncH F);
+ int mxGetElementSize (const mxArray *ptr);
+ int mxGetNzmax (const mxArray *ptr);
+ char *mxArrayToString (const mxArray *array_ptr);
+ bool mxIsDouble (const mxArray *ptr);
+ bool mxIsSingle (const mxArray *ptr);
+ bool mxIsLogical (const mxArray *ptr);
+ bool mexIsGlobal(const mxArray *ptr);
+ /* mxsetlogical: NOT IN MATLAB API - v6.5 compatible */
+ void mxSetLogical (mxArray *ptr);
+ /* mxclearlogical: NOT IN MATLAB API - v6.5 compatible */
+ void mxClearLogical (mxArray *ptr);
+ bool mxIsChar (const mxArray *ptr);
+ bool mxIsEmpty (const mxArray *ptr);
+ bool mxIsClass (const mxArray *ptr, const char *name);
+ bool mxIsCell (const mxArray *ptr);
+ bool mxIsStruct (const mxArray *ptr);
+
+ bool mxIsInt8(const mxArray *ptr);
+ bool mxIsInt16(const mxArray *ptr);
+ bool mxIsInt32(const mxArray *ptr);
+ bool mxIsUint8(const mxArray *ptr);
+ bool mxIsUint16(const mxArray *ptr);
+ bool mxIsUint32(const mxArray *ptr);
+ /* mxIsUint64 missing */
+
+ void mxSetM(mxArray *ptr, int m);
+ void mxSetN(mxArray *ptr, int n);
+ void mxSetJc(mxArray *array_ptr, int *jc_data);
+ void mxSetIr(mxArray *array_ptr, int *ir_data);
+ void mxSetNzmax(mxArray *array_ptr, int nzmax);
+ void mxSetCell(mxArray *pa, int i, mxArray *value);
+
+ /* mexGetArray: NOT IN MATLAB API - v6.5 compatible */
+ mxArray *mexGetArray(char *name, char *workspace);
+ mxArray *mexGetVariable(const char *workspace, const char *name);
+ const mxArray *mexGetVariablePtr(const char *workspace, const char *name);
+
+ unsigned long int C2F(mxcalloc)(unsigned int *n, unsigned int *size);
+ void *mxCalloc(size_t n, size_t size);
+ void *mxMalloc(size_t nsize);
+ void mxFree(void *ptr);
+ void mxDestroyArray(mxArray *ptr);
+
+ /* mxCalloc_m : NOT IN MATLAB API - SCILAB SPECIFIC ?*/
+ void *mxCalloc_m(unsigned int n, unsigned int size);
+ /* mxMalloc_m : NOT IN MATLAB API - SCILAB SPECIFIC ?*/
+ void *mxMalloc_m(unsigned int nsize);
+ /* mxFree_m : NOT IN MATLAB API - SCILAB SPECIFIC ?*/
+ void mxFree_m(void *);
+ /* mxfreematrix: NOT IN MATLAB API - v6.0 compatible */
+ void mxFreeMatrix(mxArray *ptr);
+ void C2F(mxfreematrix)(mxArray *ptr);
+
+ void mexErrMsgTxt(const char *error_msg);
+ void C2F(mexerrmsgtxt)(char *error_msg, int len);
+ int mexEvalString(const char *name);
+ void mexWarnMsgTxt(const char *error_msg);
+ /* mexprint: NOT IN MATLAB API - SCILAB SPECIFIC ?*/
+ void mexprint(char* fmt, ...);
+
+ int mxGetFieldNumber(const mxArray *ptr, const char *string);
+ mxArray *mxGetField(const mxArray *pa, int i, const char *fieldname);
+ void mxSetFieldByNumber(mxArray *array_ptr, int index, int field_number, mxArray *value);
+ void mxSetField (mxArray *pa, int i, const char *fieldname, mxArray *value);
+
+ mxArray *mxGetFieldByNumber(const mxArray *ptr, int index, int field_number);
+ const char *mxGetFieldNameByNumber(const mxArray *array_ptr, int field_number);
+ mxLOGICAL *mxGetLogicals (const mxArray *array_ptr);
+
+ /**
+ * TODO : comment
+ * @param x
+ * @return
+ */
+ vraiptrst C2F(locptr)(void *x);
+
+ typedef enum
+ {
+ mxCELL_CLASS = 1,
+ mxSTRUCT_CLASS,
+ mxOBJECT_CLASS,
+ mxCHAR_CLASS,
+ mxSPARSE_CLASS,
+ mxDOUBLE_CLASS,
+ mxSINGLE_CLASS,
+ mxINT8_CLASS,
+ mxUINT8_CLASS,
+ mxINT16_CLASS,
+ mxUINT16_CLASS,
+ mxINT32_CLASS,
+ mxUINT32_CLASS,
+ mxUNKNOWN_CLASS = 0
+ } mxClassID;
+
+ typedef enum { mxREAL, mxCOMPLEX } mxComplexity;
+
+ mxClassID mxGetClassID(const mxArray *ptr);
+ /* mxGetName: NOT IN MATLAB API - v6.4 compatible */
+ const char *mxGetName(const mxArray *array_ptr);
+ /* mxSetName: NOT IN MATLAB API - v6.4 compatible */
+ void mxSetName( mxArray *pa, const char *s );
+ void mxSetPr(mxArray *array_ptr, double *pr);
+ void mxSetPi(mxArray *array_ptr, double *pi);
+ void mxSetData(mxArray *array_ptr, void *pr);
+ mxArray *mxCreateNumericArray(int ndim, const int *dims, mxClassID classid, mxComplexity flag);
+ mxArray *mxCreateNumericMatrix(int m, int n, mxClassID classid, int cmplx_flag);
+ int mxSetDimensions(mxArray *array_ptr, const int *dims, int ndim);
+ mxArray *mxCreateDoubleMatrix(int m, int n, mxComplexity it);
+ mxArray *mxCreateDoubleScalar(double value);
+ mxArray *mxCreateSparse(int m, int n, int nzmax, mxComplexity cmplx);
+ mxArray *mxDuplicateArray(const mxArray *ptr);
+
+ /* typedef uint16_T mxChar; */
+
+ /* typedef short int mxChar; */
+ typedef unsigned short mxChar;
+
+#define INT8_T char
+#define UINT8_T unsigned char
+#define INT16_T short
+#define UINT16_T unsigned short
+#define INT32_T int
+#define UINT32_T unsigned int
+#define REAL32_T float
+
+ typedef INT8_T int8_T;
+ typedef UINT8_T uint8_T;
+ typedef INT16_T int16_T;
+ typedef UINT16_T uint16_T;
+ typedef INT32_T int32_T;
+ typedef UINT32_T uint32_T;
+ typedef REAL32_T real32_T;
+
+ typedef int mwSize;
+ typedef int mwIndex;
+ typedef mxArray * mwPointer;
+
+#endif /* SCI_MEX */
+
+#ifdef __cplusplus
+}
+#endif
+
+/* generic mexfunction name */
+#ifdef __cplusplus
+extern "C" {
+ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]);
+}
+#endif
diff --git a/modules/mexlib/includes/sci_gateway.h b/modules/mexlib/includes/sci_gateway.h
new file mode 100755
index 000000000..73592a7dc
--- /dev/null
+++ b/modules/mexlib/includes/sci_gateway.h
@@ -0,0 +1,35 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) DIGITEO - 2009 - Sylvestre LEDRU
+ * Copyright (C) 2009 - DIGITEO - Allan CORNET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+/*----------------------------------------------------------------------------*/
+typedef int (*GatefuncS) (char *fname, int l);
+/*----------------------------------------------------------------------------*/
+/**
+ * This function manages the call of a native function which has been added
+ * through addinter with PutLhsVar (Compatibility Scilab 4.x and 5.1)
+ *
+ * @param fname name of the function
+ * @param F
+ * @param SharedLibraryName name of the library
+ */
+int sci_gateway(char *fname, GatefuncS F);
+/*----------------------------------------------------------------------------*/
+/**
+* This function manages the call of a native function which has been added
+* through addinter without PutLhsVar in gateway (as for internal scilab functions)
+*
+* @param fname name of the function
+* @param F
+* @param SharedLibraryName name of the library
+*/
+int sci_gateway_without_putlhsvar(char *fname, GatefuncS F);
+/*----------------------------------------------------------------------------*/