Mercurial > octave-nkf
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) \ |