comparison src/mexproto.h @ 5900:c20eb7330d13

[project @ 2006-07-22 08:31:16 by jwe]
author jwe
date Sat, 22 Jul 2006 08:31:17 +0000
parents 4f1112bfafce
children fede829d805a
comparison
equal deleted inserted replaced
5899:82c38ce145a7 5900:c20eb7330d13
48 48
49 #if ! defined (MEXPROTO_H) 49 #if ! defined (MEXPROTO_H)
50 #define MEXPROTO_H 50 #define MEXPROTO_H
51 51
52 #if defined (__cplusplus) 52 #if defined (__cplusplus)
53 #include <cstdlib>
53 extern "C" { 54 extern "C" {
54 #endif 55 #else
55 56 #include <stdlib.h>
56 /* Floating point representation. */ 57 #endif
57 extern int mxIsFinite (double v); 58
58 extern int mxIsInf (double v); 59 #define MXARRAY_TYPEDEFS_ONLY
59 extern int mxIsNaN (double v); 60 #include "mxarray.h"
60 extern double mxGetEps (void); 61 #undef MXARRAY_TYPEDEFS_ONLY
61 extern double mxGetInf (void); 62
62 extern double mxGetNaN (void); 63 // Interface to the interpreter.
63
64 /* Interface to the interpreter */
65 extern const char *mexFunctionName (void); 64 extern const char *mexFunctionName (void);
66 65
67 extern int mexCallMATLAB (int nargout, mxArray *argout[], int nargin, 66 extern int mexCallMATLAB (int nargout, mxArray *argout[], int nargin,
68 mxArray *argin[], const char *fname); 67 mxArray *argin[], const char *fname);
69 68
78 extern mxArray *mexGetVariable (const char *space, const char *name); 77 extern mxArray *mexGetVariable (const char *space, const char *name);
79 extern const mxArray *mexGetVariablePtr (const char *space, const char *name); 78 extern const mxArray *mexGetVariablePtr (const char *space, const char *name);
80 79
81 extern int mexPutVariable (const char *space, const char *name, mxArray *ptr); 80 extern int mexPutVariable (const char *space, const char *name, mxArray *ptr);
82 81
83 /* Memory. */
84 extern void *mxMalloc (int n);
85 extern void *mxCalloc (int n, int size);
86 extern void mxFree (void *ptr);
87 extern void mexMakeArrayPersistent (mxArray *ptr); 82 extern void mexMakeArrayPersistent (mxArray *ptr);
88 extern void mexMakeMemoryPersistent (void *ptr); 83 extern void mexMakeMemoryPersistent (void *ptr);
89
90 /* Interpreter values. */
91 extern mxArray *mxCreateDoubleMatrix (int nr, int nc, int iscomplex);
92 extern mxArray *mxCreateDoubleScalar (double val);
93 extern mxArray *mxCreateLogicalScalar (int val);
94
95 extern void mxDestroyArray (mxArray *v);
96
97 extern mxArray *mxDuplicateArray (const mxArray *v);
98
99 extern int mxIsChar (const mxArray *ptr);
100 extern int mxIsComplex (const mxArray *ptr);
101 extern int mxIsDouble (const mxArray *ptr);
102 extern int mxIsEmpty (const mxArray *ptr);
103 extern int mxIsFull (const mxArray *ptr);
104 extern int mxIsLogicalScalar (const mxArray *ptr);
105 extern int mxIsNumeric (const mxArray *ptr);
106 extern int mxIsSparse (const mxArray *ptr);
107 extern int mxIsStruct (const mxArray *ptr);
108
109 extern int mxGetM (const mxArray *ptr);
110 extern int mxGetN (const mxArray *ptr);
111 extern int mxGetNumberOfDimensions (const mxArray *ptr);
112 extern int mxGetNumberOfElements (const mxArray *ptr);
113
114 extern double *mxGetPr (const mxArray *ptr);
115 extern double *mxGetPi (const mxArray *ptr);
116
117 /* Structure support. */
118 extern mxArray *mxGetField (const mxArray *ptr, int index, const char *key);
119 extern void mxSetField (mxArray *ptr, int index, const char *key, mxArray *val);
120 extern int mxGetNumberOfFields (const mxArray *ptr);
121 extern const char *mxGetFieldNameByNumber (const mxArray *ptr, int key_num);
122 extern int mxGetFieldNumber (const mxArray *ptr, const char *key);
123 extern mxArray *mxGetFieldByNumber (const mxArray *ptr, int index, int key_num);
124 extern void mxSetFieldByNumber (mxArray *ptr, int index, int key_num,
125 mxArray *val);
126 extern mxArray *mxCreateStructMatrix (int rows, int cols, int num_keys,
127 const char **keys);
128
129 extern void mxSetM (mxArray *ptr, int M);
130 extern void mxSetN (mxArray *ptr, int N);
131 extern void mxSetPr (mxArray *ptr, double *pr);
132 extern void mxSetPi (mxArray *ptr, double *pi);
133
134 extern int mxGetString (const mxArray *ptr, char *buf, int buflen);
135 extern char *mxArrayToString (const mxArray *ptr);
136 extern mxArray *mxCreateString (const char *str);
137
138 extern double mxGetScalar (const mxArray *ptr);
139
140 #if 0
141 /* Not implemented. */
142 extern int mxAddField (mxArray *ptr, const char *field_name);
143 extern void mxAssert (int expr, char *msg);
144 extern void mxAssertS (int expr, char *msg);
145 extern int mxCalcSingleSubscript (const mxArray *ptr, int nsubs, int *subs);
146 extern void *mxCalloc (size_t n, size_t size);
147 extern mxArray *mxCreateCellArray (int ndim, const int *dims);
148 extern mxArray *mxCreateCellMatrix (int m, int n);
149 extern mxArray *mxCreateCharArray (int ndim, const int *dims);
150 extern mxArray *mxCreateCharMatrixFromStrings (int m, const char **str);
151 extern mxArray *mxCreateLogicalArray (int ndim, const int *dims);
152 extern mxArray *mxCreateLogicalMatrix (int m, int n);
153 extern mxArray *mxCreateNumericArray (int ndim, const int *dims, mxClassID class, mxComplexity flag);
154 extern mxArray *mxCreateNumericMatrix (int m, int n, mxClassID class, mxComplexity flag);
155 extern mxArray *mxCreateSparse (int m, int n, int nzmax, mxComplexity flag);
156 extern mxArray *mxCreateSparseLogicalMatrix (int m, int n, int nzmax);
157 extern mxArray *mxGetCell (const mxArray *ptr, int idx);
158 extern mxChar *mxGetChars (const mxArray *ptr);
159 extern mxClassID mxGetClassID (const mxArray *ptr);
160 extern const char *mxGetClassName (const mxArray *ptr);
161 extern void mxGetData (const mxArray *ptr);
162 extern int *mxGetDimensions (const mxArray *ptr);
163 extern int mxGetElementSize (const mxArray *ptr);
164 extern void *mxGetImagData (const mxArray *ptr);
165 extern int *mxGetIr (const mxArray *ptr);
166 extern int *mxGetJc (const mxArray *ptr);
167 extern mxLogical *mxGetLogicals (const mxArray *ptr);
168 extern int mxGetNzmax (const mxArray *ptr);
169 extern int mxIsCell (const mxArray *ptr);
170 extern int mxIsClass (const mxArray *ptr, const char *name);
171 extern int mxIsFromGlobalWS (const mxArray *ptr);
172 extern int mxIsInt16 (const mxArray *ptr);
173 extern int mxIsInt32 (const mxArray *ptr);
174 extern int mxIsInt64 (const mxArray *ptr);
175 extern int mxIsInt8 (const mxArray *ptr);
176 extern int mxIsLogical (const mxArray *ptr);
177 extern int mxIsLogicalScalarTrue (const mxArray *ptr);
178 extern int mxIsSingle (const mxArray *ptr);
179 extern int mxIsUint16 (const mxArray *ptr);
180 extern int mxIsUint32 (const mxArray *ptr);
181 extern int mxIsUint64 (const mxArray *ptr);
182 extern int mxIsUint8 (const mxArray *ptr);
183 extern void mxRemoveField (mxArray *ptr, int num);
184 extern void mxSetCell (mxArray *ptr, int idx, mxArray *val);
185 extern void mxSetClassName (mxArray *ptr, const char *name);
186 extern void mxSetData (mxArray *ptr, void *data);
187 extern void mxSetDimensions (mxArray *ptr, int *dims, int ndim);
188 extern void mxSetImagData (mxArray *ptr, void *pi);
189 extern void mxSetIr (mxArray *ptr, int *ir);
190 extern void mxSetJc (mxArray *ptr, int *ir);
191 extern void mxSetNzmax (mxArray *ptr, int nzmax);
192 84
193 extern int mexAtExit (void (*f) (void)); 85 extern int mexAtExit (void (*f) (void));
194 extern const mxArray *mexGet (double handle, const char *property); 86 extern const mxArray *mexGet (double handle, const char *property);
195 extern int mexIsGlobal (const mxArray *ptr); 87 extern int mexIsGlobal (const mxArray *ptr);
196 extern int mexIsLocked (void); 88 extern int mexIsLocked (void);
197 extern void mexLock (void); 89 extern void mexLock (void);
198 extern int mexSet (double handle, const char *property, mxArray *val); 90 extern int mexSet (double handle, const char *property, mxArray *val);
199 extern void mexUnlock (void); 91 extern void mexUnlock (void);
200 #endif 92
93 // Floating point predicates.
94 extern int mxIsFinite (double v);
95 extern int mxIsInf (double v);
96 extern int mxIsNaN (double v);
97
98 // Floating point values.
99 extern double mxGetEps (void);
100 extern double mxGetInf (void);
101 extern double mxGetNaN (void);
102
103 // Memory management.
104 extern void *mxCalloc (size_t n, size_t size);
105 extern void *mxMalloc (size_t n);
106 extern void *mxRealloc (void *ptr, size_t size);
107 extern void mxFree (void *ptr);
108
109 // Constructors.
110 extern mxArray *mxCreateCellArray (int ndims, const int *dims);
111 extern mxArray *mxCreateCellMatrix (int m, int n);
112 extern mxArray *mxCreateCharArray (int ndims, const int *dims);
113 extern mxArray *mxCreateCharMatrixFromStrings (int m, const char **str);
114 extern mxArray *mxCreateDoubleMatrix (int nr, int nc, mxComplexity flag);
115 extern mxArray *mxCreateDoubleScalar (double val);
116 extern mxArray *mxCreateLogicalArray (int ndims, const int *dims);
117 extern mxArray *mxCreateLogicalMatrix (int m, int n);
118 extern mxArray *mxCreateLogicalScalar (int val);
119 extern mxArray *mxCreateNumericArray (int ndims, const int *dims, mxClassID class_id, mxComplexity flag);
120 extern mxArray *mxCreateNumericMatrix (int m, int n, mxClassID class_id, mxComplexity flag);
121 extern mxArray *mxCreateSparse (int m, int n, int nzmax, mxComplexity flag);
122 extern mxArray *mxCreateSparseLogicalMatrix (int m, int n, int nzmax);
123 extern mxArray *mxCreateString (const char *str);
124 extern mxArray *mxCreateStructArray (int ndims, int *dims, int num_keys, const char **keys);
125 extern mxArray *mxCreateStructMatrix (int rows, int cols, int num_keys, const char **keys);
126
127 // Copy constructor.
128 extern mxArray *mxDuplicateArray (const mxArray *v);
129
130 // Destructor.
131 extern void mxDestroyArray (mxArray *v);
132
133 // Type Predicates.
134 extern int mxIsCell (const mxArray *ptr);
135 extern int mxIsChar (const mxArray *ptr);
136 extern int mxIsClass (const mxArray *ptr, const char *name);
137 extern int mxIsComplex (const mxArray *ptr);
138 extern int mxIsDouble (const mxArray *ptr);
139 extern int mxIsInt16 (const mxArray *ptr);
140 extern int mxIsInt32 (const mxArray *ptr);
141 extern int mxIsInt64 (const mxArray *ptr);
142 extern int mxIsInt8 (const mxArray *ptr);
143 extern int mxIsLogical (const mxArray *ptr);
144 extern int mxIsNumeric (const mxArray *ptr);
145 extern int mxIsSingle (const mxArray *ptr);
146 extern int mxIsSparse (const mxArray *ptr);
147 extern int mxIsStruct (const mxArray *ptr);
148 extern int mxIsUint16 (const mxArray *ptr);
149 extern int mxIsUint32 (const mxArray *ptr);
150 extern int mxIsUint64 (const mxArray *ptr);
151 extern int mxIsUint8 (const mxArray *ptr);
152
153 // Odd type+size predicate.
154 extern int mxIsLogicalScalar (const mxArray *ptr);
155
156 // Odd type+size+value predicate.
157 extern int mxIsLogicalScalarTrue (const mxArray *ptr);
158
159 // Size predicate.
160 extern int mxIsEmpty (const mxArray *ptr);
161
162 // Just plain odd thing to ask of a value.
163 extern int mxIsFromGlobalWS (const mxArray *ptr);
164
165 // Dimension extractors.
166 extern int mxGetM (const mxArray *ptr);
167 extern int mxGetN (const mxArray *ptr);
168 extern int *mxGetDimensions (const mxArray *ptr);
169 extern int mxGetNumberOfDimensions (const mxArray *ptr);
170 extern int mxGetNumberOfElements (const mxArray *ptr);
171
172 // Dimension setters.
173 extern void mxSetM (mxArray *ptr, int M);
174 extern void mxSetN (mxArray *ptr, int N);
175 extern void mxSetDimensions (mxArray *ptr, int *dims, int ndims);
176
177 // Data extractors.
178 extern double *mxGetPi (const mxArray *ptr);
179 extern double *mxGetPr (const mxArray *ptr);
180 extern double mxGetScalar (const mxArray *ptr);
181 extern mxChar *mxGetChars (const mxArray *ptr);
182 extern mxLogical *mxGetLogicals (const mxArray *ptr);
183 extern void *mxGetData (const mxArray *ptr);
184 extern void *mxGetImagData (const mxArray *ptr);
185
186 // Data setters.
187 extern void mxSetPr (mxArray *ptr, double *pr);
188 extern void mxSetPi (mxArray *ptr, double *pi);
189 extern void mxSetData (mxArray *ptr, void *data);
190 extern void mxSetImagData (mxArray *ptr, void *pi);
191
192 // Classes.
193 extern mxClassID mxGetClassID (const mxArray *ptr);
194 extern const char *mxGetClassName (const mxArray *ptr);
195
196 extern void mxSetClassName (mxArray *ptr, const char *name);
197
198 // Cell support.
199 extern mxArray *mxGetCell (const mxArray *ptr, int idx);
200
201 extern void mxSetCell (mxArray *ptr, int idx, mxArray *val);
202
203 // Sparse support.
204 extern int *mxGetIr (const mxArray *ptr);
205 extern int *mxGetJc (const mxArray *ptr);
206 extern int mxGetNzmax (const mxArray *ptr);
207
208 extern void mxSetIr (mxArray *ptr, int *ir);
209 extern void mxSetJc (mxArray *ptr, int *jc);
210 extern void mxSetNzmax (mxArray *ptr, int nzmax);
211
212 // Structure support.
213 extern int mxAddField (mxArray *ptr, const char *key);
214
215 extern void mxRemoveField (mxArray *ptr, int key_num);
216
217 extern mxArray *mxGetField (const mxArray *ptr, int index, const char *key);
218 extern mxArray *mxGetFieldByNumber (const mxArray *ptr, int index, int key_num);
219
220 extern void mxSetField (mxArray *ptr, int index, const char *key, mxArray *val);
221 extern void mxSetFieldByNumber (mxArray *ptr, int index, int key_num, mxArray *val);
222
223 extern int mxGetNumberOfFields (const mxArray *ptr);
224
225 extern const char *mxGetFieldNameByNumber (const mxArray *ptr, int key_num);
226 extern int mxGetFieldNumber (const mxArray *ptr, const char *key);
227
228 extern int mxGetString (const mxArray *ptr, char *buf, int buflen);
229 extern char *mxArrayToString (const mxArray *ptr);
230
231 // Miscellaneous.
232 #ifdef NDEBUG
233 #define mxAssert(expr, msg) \
234 do \
235 { \
236 if (! expr) \
237 { \
238 mexPrintf ("Assertion failed: %s, at line %d of file \"%s\".\n%s\n", \
239 #expr, __LINE__, __FILE__, msg); \
240 } \
241 } \
242 while (0)
243
244 #define mxAssertS(expr, msg) \
245 do \
246 { \
247 if (! expr) \
248 { \
249 mexPrintf ("Assertion failed at line %d of file \"%s\".\n%s\n", \
250 __LINE__, __FILE__, msg); \
251 abort (); \
252 } \
253 } \
254 while (0)
255 #else
256 #define mxAssert(expr, msg)
257 #define mxAssertS(expr, msg)
258 #endif
259
260 extern int mxCalcSingleSubscript (const mxArray *ptr, int nsubs, int *subs);
261
262 extern int mxGetElementSize (const mxArray *ptr);
201 263
202 #if defined (__cplusplus) 264 #if defined (__cplusplus)
203 } 265 }
204 #endif 266 #endif
205 267