comparison src/mexproto.h @ 9651:7234534f47ba

mexproto.h: define OCTINTERP_API if it is not already defined
author John W. Eaton <jwe@octave.org>
date Fri, 18 Sep 2009 05:51:13 -0400
parents 6e2a3968ea6f
children 8687ce1c56da
comparison
equal deleted inserted replaced
9650:6e2a3968ea6f 9651:7234534f47ba
53 extern "C" { 53 extern "C" {
54 #else 54 #else
55 #include <stdlib.h> 55 #include <stdlib.h>
56 #endif 56 #endif
57 57
58 /* The definition of OCTINTERP_API is normally provided by Octave's
59 config.h file. This is provided for the case of mex.h included by
60 user programs that don't use Octave's config.h. */
61 #if ! defined (OCTINTERP_API)
62 #if defined (_MSC_VER)
63 #define OCTINTERP_API __declspec(dllimport)
64 #else
65 /* All other compilers, at least for now. */
66 #define OCTINTERP_API
67 #endif
68 #endif
69
58 #define MXARRAY_TYPEDEFS_ONLY 70 #define MXARRAY_TYPEDEFS_ONLY
59 #include "mxarray.h" 71 #include "mxarray.h"
60 #undef MXARRAY_TYPEDEFS_ONLY 72 #undef MXARRAY_TYPEDEFS_ONLY
61 73
62 // Interface to the interpreter. 74 /* Interface to the interpreter. */
63 extern OCTINTERP_API const char *mexFunctionName (void); 75 extern OCTINTERP_API const char *mexFunctionName (void);
64 76
65 extern OCTINTERP_API int mexCallMATLAB (int nargout, mxArray *argout[], int nargin, 77 extern OCTINTERP_API int mexCallMATLAB (int nargout, mxArray *argout[], int nargin, mxArray *argin[], const char *fname);
66 mxArray *argin[], const char *fname);
67 78
68 extern OCTINTERP_API void mexSetTrapFlag (int flag); 79 extern OCTINTERP_API void mexSetTrapFlag (int flag);
69 extern OCTINTERP_API int mexEvalString (const char *s); 80 extern OCTINTERP_API int mexEvalString (const char *s);
70 extern OCTINTERP_API void mexErrMsgTxt (const char *s); 81 extern OCTINTERP_API void mexErrMsgTxt (const char *s);
71 extern OCTINTERP_API void mexErrMsgIdAndTxt (const char *id, const char *s, ...); 82 extern OCTINTERP_API void mexErrMsgIdAndTxt (const char *id, const char *s, ...);
87 extern OCTINTERP_API int mexIsLocked (void); 98 extern OCTINTERP_API int mexIsLocked (void);
88 extern OCTINTERP_API void mexLock (void); 99 extern OCTINTERP_API void mexLock (void);
89 extern OCTINTERP_API int mexSet (double handle, const char *property, mxArray *val); 100 extern OCTINTERP_API int mexSet (double handle, const char *property, mxArray *val);
90 extern OCTINTERP_API void mexUnlock (void); 101 extern OCTINTERP_API void mexUnlock (void);
91 102
92 // Floating point predicates. 103 /* Floating point predicates. */
93 extern OCTINTERP_API int mxIsFinite (double v); 104 extern OCTINTERP_API int mxIsFinite (double v);
94 extern OCTINTERP_API int mxIsInf (double v); 105 extern OCTINTERP_API int mxIsInf (double v);
95 extern OCTINTERP_API int mxIsNaN (double v); 106 extern OCTINTERP_API int mxIsNaN (double v);
96 107
97 // Floating point values. 108 /* Floating point values. */
98 extern OCTINTERP_API double mxGetEps (void); 109 extern OCTINTERP_API double mxGetEps (void);
99 extern OCTINTERP_API double mxGetInf (void); 110 extern OCTINTERP_API double mxGetInf (void);
100 extern OCTINTERP_API double mxGetNaN (void); 111 extern OCTINTERP_API double mxGetNaN (void);
101 112
102 // Memory management. 113 /* Memory management. */
103 extern OCTINTERP_API void *mxCalloc (size_t n, size_t size); 114 extern OCTINTERP_API void *mxCalloc (size_t n, size_t size);
104 extern OCTINTERP_API void *mxMalloc (size_t n); 115 extern OCTINTERP_API void *mxMalloc (size_t n);
105 extern OCTINTERP_API void *mxRealloc (void *ptr, size_t size); 116 extern OCTINTERP_API void *mxRealloc (void *ptr, size_t size);
106 extern OCTINTERP_API void mxFree (void *ptr); 117 extern OCTINTERP_API void mxFree (void *ptr);
107 118
108 // Constructors. 119 /* Constructors. */
109 extern OCTINTERP_API mxArray *mxCreateCellArray (mwSize ndims, const mwSize *dims); 120 extern OCTINTERP_API mxArray *mxCreateCellArray (mwSize ndims, const mwSize *dims);
110 extern OCTINTERP_API mxArray *mxCreateCellMatrix (mwSize m, mwSize n); 121 extern OCTINTERP_API mxArray *mxCreateCellMatrix (mwSize m, mwSize n);
111 extern OCTINTERP_API mxArray *mxCreateCharArray (mwSize ndims, const mwSize *dims); 122 extern OCTINTERP_API mxArray *mxCreateCharArray (mwSize ndims, const mwSize *dims);
112 extern OCTINTERP_API mxArray *mxCreateCharMatrixFromStrings (mwSize m, const char **str); 123 extern OCTINTERP_API mxArray *mxCreateCharMatrixFromStrings (mwSize m, const char **str);
113 extern OCTINTERP_API mxArray *mxCreateDoubleMatrix (mwSize nr, mwSize nc, mxComplexity flag); 124 extern OCTINTERP_API mxArray *mxCreateDoubleMatrix (mwSize nr, mwSize nc, mxComplexity flag);
121 extern OCTINTERP_API mxArray *mxCreateSparseLogicalMatrix (mwSize m, mwSize n, mwSize nzmax); 132 extern OCTINTERP_API mxArray *mxCreateSparseLogicalMatrix (mwSize m, mwSize n, mwSize nzmax);
122 extern OCTINTERP_API mxArray *mxCreateString (const char *str); 133 extern OCTINTERP_API mxArray *mxCreateString (const char *str);
123 extern OCTINTERP_API mxArray *mxCreateStructArray (mwSize ndims, const mwSize *dims, int num_keys, const char **keys); 134 extern OCTINTERP_API mxArray *mxCreateStructArray (mwSize ndims, const mwSize *dims, int num_keys, const char **keys);
124 extern OCTINTERP_API mxArray *mxCreateStructMatrix (mwSize rows, mwSize cols, int num_keys, const char **keys); 135 extern OCTINTERP_API mxArray *mxCreateStructMatrix (mwSize rows, mwSize cols, int num_keys, const char **keys);
125 136
126 // Copy constructor. 137 /* Copy constructor. */
127 extern OCTINTERP_API mxArray *mxDuplicateArray (const mxArray *v); 138 extern OCTINTERP_API mxArray *mxDuplicateArray (const mxArray *v);
128 139
129 // Destructor. 140 /* Destructor. */
130 extern OCTINTERP_API void mxDestroyArray (mxArray *v); 141 extern OCTINTERP_API void mxDestroyArray (mxArray *v);
131 142
132 // Type Predicates. 143 /* Type Predicates. */
133 extern OCTINTERP_API int mxIsCell (const mxArray *ptr); 144 extern OCTINTERP_API int mxIsCell (const mxArray *ptr);
134 extern OCTINTERP_API int mxIsChar (const mxArray *ptr); 145 extern OCTINTERP_API int mxIsChar (const mxArray *ptr);
135 extern OCTINTERP_API int mxIsClass (const mxArray *ptr, const char *name); 146 extern OCTINTERP_API int mxIsClass (const mxArray *ptr, const char *name);
136 extern OCTINTERP_API int mxIsComplex (const mxArray *ptr); 147 extern OCTINTERP_API int mxIsComplex (const mxArray *ptr);
137 extern OCTINTERP_API int mxIsDouble (const mxArray *ptr); 148 extern OCTINTERP_API int mxIsDouble (const mxArray *ptr);
147 extern OCTINTERP_API int mxIsUint16 (const mxArray *ptr); 158 extern OCTINTERP_API int mxIsUint16 (const mxArray *ptr);
148 extern OCTINTERP_API int mxIsUint32 (const mxArray *ptr); 159 extern OCTINTERP_API int mxIsUint32 (const mxArray *ptr);
149 extern OCTINTERP_API int mxIsUint64 (const mxArray *ptr); 160 extern OCTINTERP_API int mxIsUint64 (const mxArray *ptr);
150 extern OCTINTERP_API int mxIsUint8 (const mxArray *ptr); 161 extern OCTINTERP_API int mxIsUint8 (const mxArray *ptr);
151 162
152 // Odd type+size predicate. 163 /* Odd type+size predicate. */
153 extern OCTINTERP_API int mxIsLogicalScalar (const mxArray *ptr); 164 extern OCTINTERP_API int mxIsLogicalScalar (const mxArray *ptr);
154 165
155 // Odd type+size+value predicate. 166 /* Odd type+size+value predicate. */
156 extern OCTINTERP_API int mxIsLogicalScalarTrue (const mxArray *ptr); 167 extern OCTINTERP_API int mxIsLogicalScalarTrue (const mxArray *ptr);
157 168
158 // Size predicate. 169 /* Size predicate. */
159 extern OCTINTERP_API int mxIsEmpty (const mxArray *ptr); 170 extern OCTINTERP_API int mxIsEmpty (const mxArray *ptr);
160 171
161 // Just plain odd thing to ask of a value. 172 /* Just plain odd thing to ask of a value. */
162 extern OCTINTERP_API int mxIsFromGlobalWS (const mxArray *ptr); 173 extern OCTINTERP_API int mxIsFromGlobalWS (const mxArray *ptr);
163 174
164 // Dimension extractors. 175 /* Dimension extractors. */
165 extern OCTINTERP_API size_t mxGetM (const mxArray *ptr); 176 extern OCTINTERP_API size_t mxGetM (const mxArray *ptr);
166 extern OCTINTERP_API size_t mxGetN (const mxArray *ptr); 177 extern OCTINTERP_API size_t mxGetN (const mxArray *ptr);
167 extern OCTINTERP_API mwSize *mxGetDimensions (const mxArray *ptr); 178 extern OCTINTERP_API mwSize *mxGetDimensions (const mxArray *ptr);
168 extern OCTINTERP_API mwSize mxGetNumberOfDimensions (const mxArray *ptr); 179 extern OCTINTERP_API mwSize mxGetNumberOfDimensions (const mxArray *ptr);
169 extern OCTINTERP_API size_t mxGetNumberOfElements (const mxArray *ptr); 180 extern OCTINTERP_API size_t mxGetNumberOfElements (const mxArray *ptr);
170 181
171 // Dimension setters. 182 /* Dimension setters. */
172 extern OCTINTERP_API void mxSetM (mxArray *ptr, mwSize M); 183 extern OCTINTERP_API void mxSetM (mxArray *ptr, mwSize M);
173 extern OCTINTERP_API void mxSetN (mxArray *ptr, mwSize N); 184 extern OCTINTERP_API void mxSetN (mxArray *ptr, mwSize N);
174 extern OCTINTERP_API void mxSetDimensions (mxArray *ptr, mwSize *dims, mwSize ndims); 185 extern OCTINTERP_API void mxSetDimensions (mxArray *ptr, mwSize *dims, mwSize ndims);
175 186
176 // Data extractors. 187 /* Data extractors. */
177 extern OCTINTERP_API double *mxGetPi (const mxArray *ptr); 188 extern OCTINTERP_API double *mxGetPi (const mxArray *ptr);
178 extern OCTINTERP_API double *mxGetPr (const mxArray *ptr); 189 extern OCTINTERP_API double *mxGetPr (const mxArray *ptr);
179 extern OCTINTERP_API double mxGetScalar (const mxArray *ptr); 190 extern OCTINTERP_API double mxGetScalar (const mxArray *ptr);
180 extern OCTINTERP_API mxChar *mxGetChars (const mxArray *ptr); 191 extern OCTINTERP_API mxChar *mxGetChars (const mxArray *ptr);
181 extern OCTINTERP_API mxLogical *mxGetLogicals (const mxArray *ptr); 192 extern OCTINTERP_API mxLogical *mxGetLogicals (const mxArray *ptr);
182 extern OCTINTERP_API void *mxGetData (const mxArray *ptr); 193 extern OCTINTERP_API void *mxGetData (const mxArray *ptr);
183 extern OCTINTERP_API void *mxGetImagData (const mxArray *ptr); 194 extern OCTINTERP_API void *mxGetImagData (const mxArray *ptr);
184 195
185 // Data setters./ 196 /* Data setters. */
186 extern OCTINTERP_API void mxSetPr (mxArray *ptr, double *pr); 197 extern OCTINTERP_API void mxSetPr (mxArray *ptr, double *pr);
187 extern OCTINTERP_API void mxSetPi (mxArray *ptr, double *pi); 198 extern OCTINTERP_API void mxSetPi (mxArray *ptr, double *pi);
188 extern OCTINTERP_API void mxSetData (mxArray *ptr, void *data); 199 extern OCTINTERP_API void mxSetData (mxArray *ptr, void *data);
189 extern OCTINTERP_API void mxSetImagData (mxArray *ptr, void *pi); 200 extern OCTINTERP_API void mxSetImagData (mxArray *ptr, void *pi);
190 201
191 // Classes. 202 /* Classes. */
192 extern OCTINTERP_API mxClassID mxGetClassID (const mxArray *ptr); 203 extern OCTINTERP_API mxClassID mxGetClassID (const mxArray *ptr);
193 extern OCTINTERP_API const char *mxGetClassName (const mxArray *ptr); 204 extern OCTINTERP_API const char *mxGetClassName (const mxArray *ptr);
194 205
195 extern OCTINTERP_API void mxSetClassName (mxArray *ptr, const char *name); 206 extern OCTINTERP_API void mxSetClassName (mxArray *ptr, const char *name);
196 207
197 // Cell support. 208 /* Cell support. */
198 extern OCTINTERP_API mxArray *mxGetCell (const mxArray *ptr, mwIndex idx); 209 extern OCTINTERP_API mxArray *mxGetCell (const mxArray *ptr, mwIndex idx);
199 210
200 extern OCTINTERP_API void mxSetCell (mxArray *ptr, mwIndex idx, mxArray *val); 211 extern OCTINTERP_API void mxSetCell (mxArray *ptr, mwIndex idx, mxArray *val);
201 212
202 // Sparse support. 213 /* Sparse support. */
203 extern OCTINTERP_API mwIndex *mxGetIr (const mxArray *ptr); 214 extern OCTINTERP_API mwIndex *mxGetIr (const mxArray *ptr);
204 extern OCTINTERP_API mwIndex *mxGetJc (const mxArray *ptr); 215 extern OCTINTERP_API mwIndex *mxGetJc (const mxArray *ptr);
205 extern OCTINTERP_API mwSize mxGetNzmax (const mxArray *ptr); 216 extern OCTINTERP_API mwSize mxGetNzmax (const mxArray *ptr);
206 217
207 extern OCTINTERP_API void mxSetIr (mxArray *ptr, mwIndex *ir); 218 extern OCTINTERP_API void mxSetIr (mxArray *ptr, mwIndex *ir);
208 extern OCTINTERP_API void mxSetJc (mxArray *ptr, mwIndex *jc); 219 extern OCTINTERP_API void mxSetJc (mxArray *ptr, mwIndex *jc);
209 extern OCTINTERP_API void mxSetNzmax (mxArray *ptr, mwSize nzmax); 220 extern OCTINTERP_API void mxSetNzmax (mxArray *ptr, mwSize nzmax);
210 221
211 // Structure support. 222 /* Structure support. */
212 extern OCTINTERP_API int mxAddField (mxArray *ptr, const char *key); 223 extern OCTINTERP_API int mxAddField (mxArray *ptr, const char *key);
213 224
214 extern OCTINTERP_API void mxRemoveField (mxArray *ptr, int key_num); 225 extern OCTINTERP_API void mxRemoveField (mxArray *ptr, int key_num);
215 226
216 extern OCTINTERP_API mxArray *mxGetField (const mxArray *ptr, mwIndex index, const char *key); 227 extern OCTINTERP_API mxArray *mxGetField (const mxArray *ptr, mwIndex index, const char *key);
225 extern OCTINTERP_API int mxGetFieldNumber (const mxArray *ptr, const char *key); 236 extern OCTINTERP_API int mxGetFieldNumber (const mxArray *ptr, const char *key);
226 237
227 extern OCTINTERP_API int mxGetString (const mxArray *ptr, char *buf, mwSize buflen); 238 extern OCTINTERP_API int mxGetString (const mxArray *ptr, char *buf, mwSize buflen);
228 extern OCTINTERP_API char *mxArrayToString (const mxArray *ptr); 239 extern OCTINTERP_API char *mxArrayToString (const mxArray *ptr);
229 240
230 // Miscellaneous. 241 /* Miscellaneous. */
231 #ifdef NDEBUG 242 #ifdef NDEBUG
232 #define mxAssert(expr, msg) \ 243 #define mxAssert(expr, msg) \
233 do \ 244 do \
234 { \ 245 { \
235 if (! expr) \ 246 if (! expr) \