GNU Octave 7.1.0
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
mexproto.h
Go to the documentation of this file.
1////////////////////////////////////////////////////////////////////////
2//
3// Copyright (C) 2006-2022 The Octave Project Developers
4//
5// See the file COPYRIGHT.md in the top-level directory of this
6// distribution or <https://octave.org/copyright/>.
7//
8// This file is part of Octave.
9//
10// Octave is free software: you can redistribute it and/or modify it
11// under the terms of the GNU General Public License as published by
12// the Free Software Foundation, either version 3 of the License, or
13// (at your option) any later version.
14//
15// Octave is distributed in the hope that it will be useful, but
16// WITHOUT ANY WARRANTY; without even the implied warranty of
17// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18// GNU General Public License for more details.
19//
20// You should have received a copy of the GNU General Public License
21// along with Octave; see the file COPYING. If not, see
22// <https://www.gnu.org/licenses/>.
23//
24////////////////////////////////////////////////////////////////////////
25
26/*
27
28This code was originally distributed as part of Octave Forge under
29the following terms:
30
31Author: Paul Kienzle
32I grant this code to the public domain.
332001-03-22
34
35THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
36ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
37IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
38ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
39FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
40DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
41OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
42HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
43LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
44OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
45SUCH DAMAGE.
46
47*/
48
49/* mex.h is for use in C-programs only; do NOT include it in mex.cc */
50
51#if ! defined (octave_mexproto_h)
52#define octave_mexproto_h 1
53
54#include "octave-config.h"
55
56#if defined (__cplusplus)
57# include <cstdlib>
58using std::size_t;
59extern "C" {
60#else
61# include <stdlib.h>
62# include <stdbool.h>
63#endif
64
65#if ! defined (MX_HAS_INTERLEAVED_COMPLEX)
66# define MX_HAS_INTERLEAVED_COMPLEX 0
67#endif
68
69#define MXARRAY_TYPEDEFS_ONLY
70#include "mxarray.h"
71#undef MXARRAY_TYPEDEFS_ONLY
72
73/* Prototype for the gateway function. */
74
75extern void mexFunction (int nlhs, mxArray *plhs[],
76 int nrhs, const mxArray *prhs[]);
77
78/* Interface to the interpreter. */
79extern OCTINTERP_API const char * mexFunctionName (void);
80
81extern OCTINTERP_API int mexCallMATLAB (int nargout, mxArray *argout[],
82 int nargin, mxArray *argin[],
83 const char *fname);
84extern OCTINTERP_API mxArray * mexCallMATLABWithTrap (int nargout,
85 mxArray *argout[],
86 int nargin,
87 mxArray *argin[],
88 const char *fname);
89
90extern OCTINTERP_API int mexEvalString (const char *s);
91extern OCTINTERP_API mxArray * mexEvalStringWithTrap (const char *s);
92
93extern OCTINTERP_API void mexSetTrapFlag (int flag);
94
95extern OCTINTERP_API void mexErrMsgTxt (const char *s);
96extern OCTINTERP_API void mexErrMsgIdAndTxt (const char *id, const char *s,
97 ...);
98extern OCTINTERP_API void mexWarnMsgTxt (const char *s);
99extern OCTINTERP_API void mexWarnMsgIdAndTxt (const char *id, const char *s,
100 ...);
101extern OCTINTERP_API int mexPrintf (const char *fmt, ...);
102
103extern OCTINTERP_API mxArray * mexGetVariable (const char *space,
104 const char *name);
105extern OCTINTERP_API const mxArray * mexGetVariablePtr (const char *space,
106 const char *name);
107
108extern OCTINTERP_API int mexPutVariable (const char *space, const char *name,
109 const mxArray *ptr);
110
111#if MX_HAS_INTERLEAVED_COMPLEX
112# define mexGet mexGet_interleaved
113#endif
114extern OCTINTERP_API const mxArray * mexGet (double handle,
115 const char *property);
116
117extern OCTINTERP_API int mexSet (double handle, const char *property,
118 mxArray *val);
119
120extern OCTINTERP_API void mexMakeArrayPersistent (mxArray *ptr);
121extern OCTINTERP_API void mexMakeMemoryPersistent (void *ptr);
122
123extern OCTINTERP_API void mexLock (void);
124extern OCTINTERP_API void mexUnlock (void);
125
126extern OCTINTERP_API int mexIsGlobal (const mxArray *ptr);
127extern OCTINTERP_API int mexIsLocked (void);
128
129extern OCTINTERP_API int mexAtExit (void (*f) (void));
130
131/* Floating point predicates. */
132extern OCTINTERP_API bool mxIsFinite (double v);
133extern OCTINTERP_API bool mxIsInf (double v);
134extern OCTINTERP_API bool mxIsNaN (double v);
135
136/* Floating point values. */
137extern OCTINTERP_API double mxGetEps (void);
138extern OCTINTERP_API double mxGetInf (void);
139extern OCTINTERP_API double mxGetNaN (void);
140
141/* Memory management. */
142extern OCTINTERP_API void * mxCalloc (size_t n, size_t size);
143extern OCTINTERP_API void * mxMalloc (size_t n);
144extern OCTINTERP_API void * mxRealloc (void *ptr, size_t size);
145extern OCTINTERP_API void mxFree (void *ptr);
146
147/* Constructors. */
148#if MX_HAS_INTERLEAVED_COMPLEX
149# define mxCreateCellArray mxCreateCellArray_interleaved
150# define mxCreateCellMatrix mxCreateCellMatrix_interleaved
151# define mxCreateCharArray mxCreateCharArray_interleaved
152# define mxCreateCharMatrixFromStrings mxCreateCharMatrixFromStrings_interleaved
153# define mxCreateDoubleMatrix mxCreateDoubleMatrix_interleaved
154# define mxCreateDoubleScalar mxCreateDoubleScalar_interleaved
155# define mxCreateLogicalArray mxCreateLogicalArray_interleaved
156# define mxCreateLogicalMatrix mxCreateLogicalMatrix_interleaved
157# define mxCreateLogicalScalar mxCreateLogicalScalar_interleaved
158# define mxCreateNumericArray mxCreateNumericArray_interleaved
159# define mxCreateNumericMatrix mxCreateNumericMatrix_interleaved
160# define mxCreateUninitNumericArray mxCreateUninitNumericArray_interleaved
161# define mxCreateUninitNumericMatrix mxCreateUninitNumericMatrix_interleaved
162# define mxCreateSparse mxCreateSparse_interleaved
163# define mxCreateSparseLogicalMatrix mxCreateSparseLogicalMatrix_interleaved
164# define mxCreateString mxCreateString_interleaved
165# define mxCreateStructArray mxCreateStructArray_interleaved
166# define mxCreateStructMatrix mxCreateStructMatrix_interleaved
167#endif
168
169extern OCTINTERP_API mxArray * mxCreateCellArray (mwSize ndims,
170 const mwSize *dims);
171extern OCTINTERP_API mxArray * mxCreateCellMatrix (mwSize m, mwSize n);
172extern OCTINTERP_API mxArray * mxCreateCharArray (mwSize ndims,
173 const mwSize *dims);
174extern OCTINTERP_API mxArray * mxCreateCharMatrixFromStrings (mwSize m,
175 const char **str);
176extern OCTINTERP_API mxArray * mxCreateDoubleMatrix (mwSize nr, mwSize nc,
177 mxComplexity flag);
178extern OCTINTERP_API mxArray * mxCreateDoubleScalar (double val);
179extern OCTINTERP_API mxArray * mxCreateLogicalArray (mwSize ndims,
180 const mwSize *dims);
181extern OCTINTERP_API mxArray * mxCreateLogicalMatrix (mwSize m, mwSize n);
182extern OCTINTERP_API mxArray * mxCreateLogicalScalar (mxLogical val);
183extern OCTINTERP_API mxArray * mxCreateNumericArray (mwSize ndims,
184 const mwSize *dims,
185 mxClassID class_id,
186 mxComplexity flag);
187extern OCTINTERP_API mxArray * mxCreateNumericMatrix (mwSize m, mwSize n,
188 mxClassID class_id,
189 mxComplexity flag);
190extern OCTINTERP_API mxArray * mxCreateUninitNumericArray (mwSize ndims,
191 const mwSize *dims,
192 mxClassID class_id,
193 mxComplexity flag);
194extern OCTINTERP_API mxArray * mxCreateUninitNumericMatrix (mwSize m, mwSize n,
195 mxClassID class_id,
196 mxComplexity flag);
197
198extern OCTINTERP_API mxArray * mxCreateSparse (mwSize m, mwSize n, mwSize nzmax,
199 mxComplexity flag);
200extern OCTINTERP_API mxArray * mxCreateSparseLogicalMatrix (mwSize m, mwSize n,
201 mwSize nzmax);
202extern OCTINTERP_API mxArray * mxCreateString (const char *str);
203extern OCTINTERP_API mxArray * mxCreateStructArray (mwSize ndims,
204 const mwSize *dims,
205 int num_keys,
206 const char **keys);
207extern OCTINTERP_API mxArray * mxCreateStructMatrix (mwSize rows, mwSize cols,
208 int num_keys,
209 const char **keys);
210
211/* Copy constructor. */
212extern OCTINTERP_API mxArray * mxDuplicateArray (const mxArray *v);
213
214/* Destructor. */
215extern OCTINTERP_API void mxDestroyArray (mxArray *v);
216
217/* Type Predicates. */
218extern OCTINTERP_API bool mxIsCell (const mxArray *ptr);
219extern OCTINTERP_API bool mxIsChar (const mxArray *ptr);
220extern OCTINTERP_API bool mxIsClass (const mxArray *ptr, const char *name);
221extern OCTINTERP_API bool mxIsComplex (const mxArray *ptr);
222extern OCTINTERP_API bool mxIsDouble (const mxArray *ptr);
223/* Matlab seems to have deprecated IsFunctionHandle, but it seems useful */
224extern OCTINTERP_API bool mxIsFunctionHandle (const mxArray *ptr);
225extern OCTINTERP_API bool mxIsInt16 (const mxArray *ptr);
226extern OCTINTERP_API bool mxIsInt32 (const mxArray *ptr);
227extern OCTINTERP_API bool mxIsInt64 (const mxArray *ptr);
228extern OCTINTERP_API bool mxIsInt8 (const mxArray *ptr);
229extern OCTINTERP_API bool mxIsLogical (const mxArray *ptr);
230extern OCTINTERP_API bool mxIsNumeric (const mxArray *ptr);
231extern OCTINTERP_API bool mxIsSingle (const mxArray *ptr);
232extern OCTINTERP_API bool mxIsSparse (const mxArray *ptr);
233extern OCTINTERP_API bool mxIsStruct (const mxArray *ptr);
234extern OCTINTERP_API bool mxIsUint16 (const mxArray *ptr);
235extern OCTINTERP_API bool mxIsUint32 (const mxArray *ptr);
236extern OCTINTERP_API bool mxIsUint64 (const mxArray *ptr);
237extern OCTINTERP_API bool mxIsUint8 (const mxArray *ptr);
238
239/* Odd type+size predicate. */
240extern OCTINTERP_API bool mxIsLogicalScalar (const mxArray *ptr);
241
242/* Odd type+size+value predicate. */
243extern OCTINTERP_API bool mxIsLogicalScalarTrue (const mxArray *ptr);
244
245/* Size predicates. */
246extern OCTINTERP_API bool mxIsEmpty (const mxArray *ptr);
247extern OCTINTERP_API bool mxIsScalar (const mxArray *ptr);
248
249/* Just plain odd thing to ask of a value. */
250extern OCTINTERP_API bool mxIsFromGlobalWS (const mxArray *ptr);
251
252/* Dimension extractors. */
253extern OCTINTERP_API size_t mxGetM (const mxArray *ptr);
254extern OCTINTERP_API size_t mxGetN (const mxArray *ptr);
255extern OCTINTERP_API const mwSize * mxGetDimensions (const mxArray *ptr);
256extern OCTINTERP_API mwSize mxGetNumberOfDimensions (const mxArray *ptr);
257extern OCTINTERP_API size_t mxGetNumberOfElements (const mxArray *ptr);
258
259/* Dimension setters. */
260extern OCTINTERP_API void mxSetM (mxArray *ptr, mwSize M);
261extern OCTINTERP_API void mxSetN (mxArray *ptr, mwSize N);
262extern OCTINTERP_API int mxSetDimensions (mxArray *ptr, const mwSize *dims,
263 mwSize ndims);
264
265#if MX_HAS_INTERLEAVED_COMPLEX
266extern OCTINTERP_API int mxMakeArrayReal (mxArray *ptr);
267extern OCTINTERP_API int mxMakeArrayComplex (mxArray *ptr);
268#endif
269
270/* Data extractors. */
271extern OCTINTERP_API double * mxGetPr (const mxArray *ptr);
272extern OCTINTERP_API double mxGetScalar (const mxArray *ptr);
273extern OCTINTERP_API mxChar * mxGetChars (const mxArray *ptr);
274extern OCTINTERP_API mxLogical * mxGetLogicals (const mxArray *ptr);
275extern OCTINTERP_API void * mxGetData (const mxArray *ptr);
276#if MX_HAS_INTERLEAVED_COMPLEX
277extern OCTINTERP_API mxDouble * mxGetDoubles (const mxArray *p);
278extern OCTINTERP_API mxSingle * mxGetSingles (const mxArray *p);
279extern OCTINTERP_API mxInt8 * mxGetInt8s (const mxArray *p);
280extern OCTINTERP_API mxInt16 * mxGetInt16s (const mxArray *p);
281extern OCTINTERP_API mxInt32 * mxGetInt32s (const mxArray *p);
282extern OCTINTERP_API mxInt64 * mxGetInt64s (const mxArray *p);
283extern OCTINTERP_API mxUint8 * mxGetUint8s (const mxArray *p);
284extern OCTINTERP_API mxUint16 * mxGetUint16s (const mxArray *p);
285extern OCTINTERP_API mxUint32 * mxGetUint32s (const mxArray *p);
286extern OCTINTERP_API mxUint64 * mxGetUint64s (const mxArray *p);
287
288extern OCTINTERP_API mxComplexDouble * mxGetComplexDoubles (const mxArray *p);
289extern OCTINTERP_API mxComplexSingle * mxGetComplexSingles (const mxArray *p);
290#if 0
291/* We don't have these yet. */
292extern OCTINTERP_API mxComplexInt8 * mxGetComplexInt8s (const mxArray *p);
293extern OCTINTERP_API mxComplexInt16 * mxGetComplexInt16s (const mxArray *p);
294extern OCTINTERP_API mxComplexInt32 * mxGetComplexInt32s (const mxArray *p);
295extern OCTINTERP_API mxComplexInt64 * mxGetComplexInt64s (const mxArray *p);
296extern OCTINTERP_API mxComplexUint8 * mxGetComplexUint8s (const mxArray *p);
297extern OCTINTERP_API mxComplexUint16 * mxGetComplexUint16s (const mxArray *p);
298extern OCTINTERP_API mxComplexUint32 * mxGetComplexUint32s (const mxArray *p);
299extern OCTINTERP_API mxComplexUint64 * mxGetComplexUint64s (const mxArray *p);
300#endif
301#else
302extern OCTINTERP_API double * mxGetPi (const mxArray *ptr);
303extern OCTINTERP_API void * mxGetImagData (const mxArray *ptr);
304#endif
305
306/* Data setters. */
307extern OCTINTERP_API void mxSetPr (mxArray *ptr, double *pr);
308extern OCTINTERP_API void mxSetData (mxArray *ptr, void *data);
309#if MX_HAS_INTERLEAVED_COMPLEX
310extern OCTINTERP_API int mxSetDoubles (mxArray *p, mxDouble *d);
311extern OCTINTERP_API int mxSetSingles (mxArray *p, mxSingle *d);
312extern OCTINTERP_API int mxSetInt8s (mxArray *p, mxInt8 *d);
313extern OCTINTERP_API int mxSetInt16s (mxArray *p, mxInt16 *d);
314extern OCTINTERP_API int mxSetInt32s (mxArray *p, mxInt32 *d);
315extern OCTINTERP_API int mxSetInt64s (mxArray *p, mxInt64 *d);
316extern OCTINTERP_API int mxSetUint8s (mxArray *p, mxUint8 *d);
317extern OCTINTERP_API int mxSetUint16s (mxArray *p, mxUint16 *d);
318extern OCTINTERP_API int mxSetUint32s (mxArray *p, mxUint32 *d);
319extern OCTINTERP_API int mxSetUint64s (mxArray *p, mxUint64 *d);
320
321extern OCTINTERP_API int mxSetComplexDoubles (mxArray *p, mxComplexDouble *d);
322extern OCTINTERP_API int mxSetComplexSingles (mxArray *p, mxComplexSingle *d);
323#if 0
324/* We don't have these yet. */
325extern OCTINTERP_API int mxSetComplexInt8s (mxArray *p, mxComplexInt8 *d);
326extern OCTINTERP_API int mxSetComplexInt16s (mxArray *p, mxComplexInt16 *d);
327extern OCTINTERP_API int mxSetComplexInt32s (mxArray *p, mxComplexInt32 *d);
328extern OCTINTERP_API int mxSetComplexInt64s (mxArray *p, mxComplexInt64 *d);
329extern OCTINTERP_API int mxSetComplexUint8s (mxArray *p, mxComplexUint8 *d);
330extern OCTINTERP_API int mxSetComplexUint16s (mxArray *p, mxComplexUint16 *d);
331extern OCTINTERP_API int mxSetComplexUint32s (mxArray *p, mxComplexUint32 *d);
332extern OCTINTERP_API int mxSetComplexUint64s (mxArray *p, mxComplexUint64 *d);
333#endif
334#else
335extern OCTINTERP_API void mxSetPi (mxArray *ptr, double *pi);
336extern OCTINTERP_API void mxSetImagData (mxArray *ptr, void *pi);
337#endif
338
339/* Classes. */
340extern OCTINTERP_API mxClassID mxGetClassID (const mxArray *ptr);
341extern OCTINTERP_API const char * mxGetClassName (const mxArray *ptr);
342extern OCTINTERP_API void mxSetClassName (mxArray *ptr, const char *name);
343extern OCTINTERP_API mxArray * mxGetProperty (const mxArray *ptr, mwIndex idx,
344 const char *property_name);
345extern OCTINTERP_API void mxSetProperty (mxArray *ptr, mwIndex idx,
346 const char *property_name,
347 const mxArray *property_value);
348
349/* Cell support. */
350extern OCTINTERP_API mxArray * mxGetCell (const mxArray *ptr, mwIndex idx);
351
352extern OCTINTERP_API void mxSetCell (mxArray *ptr, mwIndex idx, mxArray *val);
353
354/* Sparse support. */
355extern OCTINTERP_API mwIndex * mxGetIr (const mxArray *ptr);
356extern OCTINTERP_API mwIndex * mxGetJc (const mxArray *ptr);
357extern OCTINTERP_API mwSize mxGetNzmax (const mxArray *ptr);
358
359extern OCTINTERP_API void mxSetIr (mxArray *ptr, mwIndex *ir);
360extern OCTINTERP_API void mxSetJc (mxArray *ptr, mwIndex *jc);
361extern OCTINTERP_API void mxSetNzmax (mxArray *ptr, mwSize nzmax);
362
363/* Structure support. */
364extern OCTINTERP_API int mxAddField (mxArray *ptr, const char *key);
365
366extern OCTINTERP_API void mxRemoveField (mxArray *ptr, int key_num);
367
368extern OCTINTERP_API mxArray * mxGetField (const mxArray *ptr, mwIndex index,
369 const char *key);
370extern OCTINTERP_API mxArray * mxGetFieldByNumber (const mxArray *ptr,
371 mwIndex index, int key_num);
372
373extern OCTINTERP_API void mxSetField (mxArray *ptr, mwIndex index,
374 const char *key, mxArray *val);
375extern OCTINTERP_API void mxSetFieldByNumber (mxArray *ptr, mwIndex index,
376 int key_num, mxArray *val);
377
378extern OCTINTERP_API int mxGetNumberOfFields (const mxArray *ptr);
379
380extern OCTINTERP_API const char * mxGetFieldNameByNumber (const mxArray *ptr,
381 int key_num);
382extern OCTINTERP_API int mxGetFieldNumber (const mxArray *ptr, const char *key);
383
384extern OCTINTERP_API int mxGetString (const mxArray *ptr, char *buf,
385 mwSize buflen);
386extern OCTINTERP_API char * mxArrayToString (const mxArray *ptr);
387
388/* Miscellaneous. */
389extern OCTINTERP_API mwIndex mxCalcSingleSubscript (const mxArray *ptr,
390 mwSize nsubs,
391 mwIndex *subs);
392
393extern OCTINTERP_API size_t mxGetElementSize (const mxArray *ptr);
394
395#if defined (MEX_DEBUG)
396
397# define mxAssert(expr, msg) \
398 do \
399 { \
400 if (! (expr)) \
401 { \
402 if (msg && msg[0]) \
403 mexErrMsgIdAndTxt \
404 ("Octave:MEX", \
405 "Assertion failed: %s, at line %d of file \"%s\".\n%s\n", \
406 #expr, __LINE__, __FILE__, msg); \
407 else \
408 mexErrMsgIdAndTxt \
409 ("Octave:MEX", \
410 "Assertion failed: %s, at line %d of file \"%s\".\n", \
411 #expr, __LINE__, __FILE__); \
412 } \
413 } \
414 while (0)
415
416# define mxAssertS(expr, msg) \
417 do \
418 { \
419 if (! (expr)) \
420 { \
421 if (msg && msg[0]) \
422 mexErrMsgIdAndTxt \
423 ("Octave:MEX", \
424 "Assertion failed at line %d of file \"%s\".\n%s\n", \
425 __LINE__, __FILE__, msg); \
426 else \
427 mexErrMsgIdAndTxt \
428 ("Octave:MEX", \
429 "Assertion failed at line %d of file \"%s\".\n", \
430 __LINE__, __FILE__); \
431 } \
432 } \
433 while (0)
434
435#else
436# define mxAssert(expr, msg)
437# define mxAssertS(expr, msg)
438#endif
439
440#if defined (__cplusplus)
441}
442#endif
443
444#endif
QString name
F77_RET_T const F77_INT & N
F77_RET_T const F77_INT const F77_INT const F77_INT const F77_DBLE const F77_DBLE F77_INT & M
F77_RET_T const F77_DBLE const F77_DBLE F77_DBLE * d
F77_RET_T const F77_DBLE const F77_DBLE * f
OCTINTERP_API mxUint16 * mxGetUint16s(const mxArray *p)
Definition: mex.cc:4412
OCTINTERP_API int mxSetDoubles(mxArray *p, mxDouble *d)
Definition: mex.cc:4493
OCTINTERP_API mxDouble * mxGetDoubles(const mxArray *p)
Definition: mex.cc:4377
OCTINTERP_API int mxSetUint8s(mxArray *p, mxUint8 *d)
Definition: mex.cc:4523
OCTINTERP_API int mxSetInt16s(mxArray *p, mxInt16 *d)
Definition: mex.cc:4508
OCTINTERP_API mxInt64 * mxGetInt64s(const mxArray *p)
Definition: mex.cc:4402
OCTINTERP_API int mxSetComplexDoubles(mxArray *p, mxComplexDouble *d)
Definition: mex.cc:4543
OCTINTERP_API mxUint64 * mxGetUint64s(const mxArray *p)
Definition: mex.cc:4422
OCTINTERP_API mxComplexDouble * mxGetComplexDoubles(const mxArray *p)
Definition: mex.cc:4427
OCTINTERP_API int mxSetUint32s(mxArray *p, mxUint32 *d)
Definition: mex.cc:4533
OCTINTERP_API int mxSetInt8s(mxArray *p, mxInt8 *d)
Definition: mex.cc:4503
OCTINTERP_API int mxSetUint16s(mxArray *p, mxUint16 *d)
Definition: mex.cc:4528
OCTINTERP_API mxSingle * mxGetSingles(const mxArray *p)
Definition: mex.cc:4382
OCTINTERP_API int mxSetInt32s(mxArray *p, mxInt32 *d)
Definition: mex.cc:4513
OCTINTERP_API mxInt16 * mxGetInt16s(const mxArray *p)
Definition: mex.cc:4392
OCTINTERP_API int mxSetUint64s(mxArray *p, mxUint64 *d)
Definition: mex.cc:4538
OCTINTERP_API mxInt8 * mxGetInt8s(const mxArray *p)
Definition: mex.cc:4387
OCTINTERP_API mxComplexSingle * mxGetComplexSingles(const mxArray *p)
Definition: mex.cc:4432
OCTINTERP_API mxUint8 * mxGetUint8s(const mxArray *p)
Definition: mex.cc:4407
OCTINTERP_API mxInt32 * mxGetInt32s(const mxArray *p)
Definition: mex.cc:4397
OCTINTERP_API int mxSetInt64s(mxArray *p, mxInt64 *d)
Definition: mex.cc:4518
OCTINTERP_API int mxSetComplexSingles(mxArray *p, mxComplexSingle *d)
Definition: mex.cc:4548
OCTINTERP_API mxUint32 * mxGetUint32s(const mxArray *p)
Definition: mex.cc:4417
OCTINTERP_API int mxMakeArrayComplex(mxArray *ptr)
OCTINTERP_API int mxMakeArrayReal(mxArray *ptr)
OCTINTERP_API int mxSetSingles(mxArray *p, mxSingle *d)
Definition: mex.cc:4498
OCTINTERP_API mxArray * mxCreateSparseLogicalMatrix(mwSize m, mwSize n, mwSize nzmax)
Definition: mex.cc:4067
OCTINTERP_API double mxGetNaN(void)
Definition: mex.cc:3839
OCTINTERP_API bool mxIsStruct(const mxArray *ptr)
Definition: mex.cc:4213
OCTINTERP_API const mxArray * mexGet(double handle, const char *property)
Definition: mex.cc:5322
OCTINTERP_API bool mxIsScalar(const mxArray *ptr)
Definition: mex.cc:4264
OCTINTERP_API mxArray * mexGetVariable(const char *space, const char *name)
Definition: mex.cc:5149
OCTINTERP_API mwSize mxGetNumberOfDimensions(const mxArray *ptr)
Definition: mex.cc:4299
OCTINTERP_API mxArray * mxCreateLogicalScalar(mxLogical val)
Definition: mex.cc:3983
OCTINTERP_API double mxGetScalar(const mxArray *ptr)
Definition: mex.cc:4339
OCTINTERP_API int mxGetNumberOfFields(const mxArray *ptr)
Definition: mex.cc:4730
OCTINTERP_API mxArray * mxCreateSparse(mwSize m, mwSize n, mwSize nzmax, mxComplexity flag)
Definition: mex.cc:4054
OCTINTERP_API bool mxIsSparse(const mxArray *ptr)
Definition: mex.cc:4207
OCTINTERP_API bool mxIsLogicalScalarTrue(const mxArray *ptr)
Definition: mex.cc:4251
OCTINTERP_API void mxSetData(mxArray *ptr, void *data)
Definition: mex.cc:4488
OCTINTERP_API mxChar * mxGetChars(const mxArray *ptr)
Definition: mex.cc:4345
OCTINTERP_API bool mxIsUint16(const mxArray *ptr)
Definition: mex.cc:4219
OCTINTERP_API void * mxCalloc(size_t n, size_t size)
OCTINTERP_API size_t mxGetElementSize(const mxArray *ptr)
Definition: mex.cc:4766
OCTINTERP_API size_t mxGetNumberOfElements(const mxArray *ptr)
Definition: mex.cc:4305
OCTINTERP_API void mxSetNzmax(mxArray *ptr, mwSize nzmax)
Definition: mex.cc:4685
OCTINTERP_API char * mxArrayToString(const mxArray *ptr)
Definition: mex.cc:4754
OCTINTERP_API bool mxIsComplex(const mxArray *ptr)
Definition: mex.cc:4147
OCTINTERP_API bool mxIsLogicalScalar(const mxArray *ptr)
Definition: mex.cc:4244
OCTINTERP_API bool mxIsInf(double v)
Definition: mex.cc:3815
OCTINTERP_API mwSize mxGetNzmax(const mxArray *ptr)
Definition: mex.cc:4667
OCTINTERP_API void mexWarnMsgTxt(const char *s)
Definition: mex.cc:5096
OCTINTERP_API mxArray * mxDuplicateArray(const mxArray *v)
Definition: mex.cc:4114
OCTINTERP_API bool mxIsUint64(const mxArray *ptr)
Definition: mex.cc:4231
OCTINTERP_API mwIndex mxCalcSingleSubscript(const mxArray *ptr, mwSize nsubs, mwIndex *subs)
Definition: mex.cc:4760
OCTINTERP_API bool mxIsClass(const mxArray *ptr, const char *name)
Definition: mex.cc:4141
OCTINTERP_API mxArray * mexEvalStringWithTrap(const char *s)
Definition: mex.cc:5013
OCTINTERP_API int mexPrintf(const char *fmt,...)
Definition: mex.cc:5138
OCTINTERP_API double * mxGetPr(const mxArray *ptr)
Definition: mex.cc:4333
OCTINTERP_API mxArray * mxCreateDoubleMatrix(mwSize nr, mwSize nc, mxComplexity flag)
Definition: mex.cc:3935
OCTINTERP_API mxLogical * mxGetLogicals(const mxArray *ptr)
Definition: mex.cc:4354
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
OCTINTERP_API void mexSetTrapFlag(int flag)
Definition: mex.cc:4977
OCTINTERP_API int mexIsLocked(void)
Definition: mex.cc:5342
OCTINTERP_API mxArray * mxCreateUninitNumericArray(mwSize ndims, const mwSize *dims, mxClassID class_id, mxComplexity flag)
Definition: mex.cc:4025
OCTINTERP_API mxArray * mxCreateCharMatrixFromStrings(mwSize m, const char **str)
Definition: mex.cc:3923
OCTINTERP_API mxArray * mxCreateLogicalArray(mwSize ndims, const mwSize *dims)
Definition: mex.cc:3959
OCTINTERP_API bool mxIsInt16(const mxArray *ptr)
Definition: mex.cc:4165
OCTINTERP_API bool mxIsDouble(const mxArray *ptr)
Definition: mex.cc:4153
OCTINTERP_API const mwSize * mxGetDimensions(const mxArray *ptr)
Definition: mex.cc:4293
OCTINTERP_API mwIndex * mxGetIr(const mxArray *ptr)
Definition: mex.cc:4655
OCTINTERP_API void mxDestroyArray(mxArray *v)
Definition: mex.cc:4121
OCTINTERP_API void mxSetFieldByNumber(mxArray *ptr, mwIndex index, int key_num, mxArray *val)
Definition: mex.cc:4724
OCTINTERP_API double mxGetInf(void)
Definition: mex.cc:3833
OCTINTERP_API bool mxIsEmpty(const mxArray *ptr)
Definition: mex.cc:4258
OCTINTERP_API void mxSetField(mxArray *ptr, mwIndex index, const char *key, mxArray *val)
Definition: mex.cc:4717
OCTINTERP_API bool mxIsFinite(double v)
Definition: mex.cc:3809
OCTINTERP_API bool mxIsNaN(double v)
Definition: mex.cc:3821
OCTINTERP_API mxArray * mxCreateStructArray(mwSize ndims, const mwSize *dims, int num_keys, const char **keys)
Definition: mex.cc:4092
OCTINTERP_API bool mxIsInt8(const mxArray *ptr)
Definition: mex.cc:4183
OCTINTERP_API void mxFree(void *ptr)
Definition: mex.cc:3865
OCTINTERP_API int mexPutVariable(const char *space, const char *name, const mxArray *ptr)
Definition: mex.cc:5206
OCTINTERP_API mxArray * mxCreateDoubleScalar(double val)
Definition: mex.cc:3947
OCTINTERP_API mxArray * mexCallMATLABWithTrap(int nargout, mxArray *argout[], int nargin, mxArray *argin[], const char *fname)
Definition: mex.cc:4953
OCTINTERP_API size_t mxGetN(const mxArray *ptr)
Definition: mex.cc:4287
OCTINTERP_API void mxSetPr(mxArray *ptr, double *pr)
Definition: mex.cc:4482
OCTINTERP_API void * mxGetImagData(const mxArray *ptr)
Definition: mex.cc:4372
OCTINTERP_API double mxGetEps(void)
Definition: mex.cc:3827
OCTINTERP_API void mxSetImagData(mxArray *ptr, void *pi)
Definition: mex.cc:4603
OCTINTERP_API mxArray * mxGetProperty(const mxArray *ptr, mwIndex idx, const char *property_name)
Definition: mex.cc:4635
OCTINTERP_API int mexEvalString(const char *s)
Definition: mex.cc:4984
OCTINTERP_API void mexWarnMsgIdAndTxt(const char *id, const char *s,...)
Definition: mex.cc:5119
OCTINTERP_API void * mxGetData(const mxArray *ptr)
Definition: mex.cc:4360
OCTINTERP_API mxClassID mxGetClassID(const mxArray *ptr)
Definition: mex.cc:4610
OCTINTERP_API void mexMakeMemoryPersistent(void *ptr)
Definition: mex.cc:5289
OCTINTERP_API void mxSetIr(mxArray *ptr, mwIndex *ir)
Definition: mex.cc:4673
OCTINTERP_API mxArray * mxCreateUninitNumericMatrix(mwSize m, mwSize n, mxClassID class_id, mxComplexity flag)
Definition: mex.cc:4040
OCTINTERP_API const mxArray * mexGetVariablePtr(const char *space, const char *name)
Definition: mex.cc:5200
OCTINTERP_API void mexErrMsgIdAndTxt(const char *id, const char *s,...)
Definition: mex.cc:5074
OCTINTERP_API int mxSetDimensions(mxArray *ptr, const mwSize *dims, mwSize ndims)
Definition: mex.cc:4324
OCTINTERP_API int mexSet(double handle, const char *property, mxArray *val)
Definition: mex.cc:5379
OCTINTERP_API bool mxIsCell(const mxArray *ptr)
Definition: mex.cc:4129
OCTINTERP_API void mxRemoveField(mxArray *ptr, int key_num)
Definition: mex.cc:4698
OCTINTERP_API void mexMakeArrayPersistent(mxArray *ptr)
Definition: mex.cc:5283
OCTINTERP_API size_t mxGetM(const mxArray *ptr)
Definition: mex.cc:4281
OCTINTERP_API void mexUnlock(void)
Definition: mex.cc:5400
OCTINTERP_API const char * mexFunctionName(void)
Definition: mex.cc:4851
OCTINTERP_API mxArray * mxCreateCharArray(mwSize ndims, const mwSize *dims)
Definition: mex.cc:3911
OCTINTERP_API int mexIsGlobal(const mxArray *ptr)
Definition: mex.cc:5336
OCTINTERP_API mxArray * mxGetCell(const mxArray *ptr, mwIndex idx)
Definition: mex.cc:4642
OCTINTERP_API void mxSetPi(mxArray *ptr, double *pi)
Definition: mex.cc:4597
OCTINTERP_API mxArray * mxCreateStructMatrix(mwSize rows, mwSize cols, int num_keys, const char **keys)
Definition: mex.cc:4106
OCTINTERP_API mxArray * mxCreateNumericArray(mwSize ndims, const mwSize *dims, mxClassID class_id, mxComplexity flag)
Definition: mex.cc:3996
OCTINTERP_API void mexErrMsgTxt(const char *s)
Definition: mex.cc:5051
OCTINTERP_API int mexCallMATLAB(int nargout, mxArray *argout[], int nargin, mxArray *argin[], const char *fname)
Definition: mex.cc:4886
OCTINTERP_API bool mxIsUint8(const mxArray *ptr)
Definition: mex.cc:4237
OCTINTERP_API bool mxIsUint32(const mxArray *ptr)
Definition: mex.cc:4225
OCTINTERP_API void * mxMalloc(size_t n)
OCTINTERP_API bool mxIsFromGlobalWS(const mxArray *ptr)
Definition: mex.cc:4272
OCTINTERP_API const char * mxGetFieldNameByNumber(const mxArray *ptr, int key_num)
Definition: mex.cc:4736
OCTINTERP_API void mxSetClassName(mxArray *ptr, const char *name)
Definition: mex.cc:4622
OCTINTERP_API mxArray * mxGetField(const mxArray *ptr, mwIndex index, const char *key)
Definition: mex.cc:4704
OCTINTERP_API int mexAtExit(void(*f)(void))
Definition: mex.cc:5295
OCTINTERP_API bool mxIsNumeric(const mxArray *ptr)
Definition: mex.cc:4195
OCTINTERP_API mwIndex * mxGetJc(const mxArray *ptr)
Definition: mex.cc:4661
OCTINTERP_API void * mxRealloc(void *ptr, size_t size)
OCTINTERP_API mxArray * mxCreateCellArray(mwSize ndims, const mwSize *dims)
Definition: mex.cc:3887
OCTINTERP_API mxArray * mxCreateNumericMatrix(mwSize m, mwSize n, mxClassID class_id, mxComplexity flag)
Definition: mex.cc:4010
OCTINTERP_API mxArray * mxCreateString(const char *str)
Definition: mex.cc:4079
OCTINTERP_API bool mxIsFunctionHandle(const mxArray *ptr)
Definition: mex.cc:4159
OCTINTERP_API int mxGetString(const mxArray *ptr, char *buf, mwSize buflen)
Definition: mex.cc:4748
OCTINTERP_API int mxAddField(mxArray *ptr, const char *key)
Definition: mex.cc:4692
OCTINTERP_API mxArray * mxCreateCellMatrix(mwSize m, mwSize n)
Definition: mex.cc:3899
OCTINTERP_API void mxSetN(mxArray *ptr, mwSize N)
Definition: mex.cc:4318
OCTINTERP_API void mxSetM(mxArray *ptr, mwSize M)
Definition: mex.cc:4312
OCTINTERP_API mxArray * mxCreateLogicalMatrix(mwSize m, mwSize n)
Definition: mex.cc:3971
OCTINTERP_API bool mxIsLogical(const mxArray *ptr)
Definition: mex.cc:4189
OCTINTERP_API bool mxIsSingle(const mxArray *ptr)
Definition: mex.cc:4201
OCTINTERP_API void mxSetCell(mxArray *ptr, mwIndex idx, mxArray *val)
Definition: mex.cc:4648
OCTINTERP_API bool mxIsInt32(const mxArray *ptr)
Definition: mex.cc:4171
OCTINTERP_API double * mxGetPi(const mxArray *ptr)
Definition: mex.cc:4366
OCTINTERP_API int mxGetFieldNumber(const mxArray *ptr, const char *key)
Definition: mex.cc:4742
OCTINTERP_API void mexLock(void)
Definition: mex.cc:5361
OCTINTERP_API bool mxIsChar(const mxArray *ptr)
Definition: mex.cc:4135
OCTINTERP_API void mxSetJc(mxArray *ptr, mwIndex *jc)
Definition: mex.cc:4679
OCTINTERP_API bool mxIsInt64(const mxArray *ptr)
Definition: mex.cc:4177
OCTINTERP_API const char * mxGetClassName(const mxArray *ptr)
Definition: mex.cc:4616
OCTINTERP_API void mxSetProperty(mxArray *ptr, mwIndex idx, const char *property_name, const mxArray *property_value)
Definition: mex.cc:4628
OCTINTERP_API mxArray * mxGetFieldByNumber(const mxArray *ptr, mwIndex index, int key_num)
Definition: mex.cc:4711
static const double pi
Definition: lo-specfun.cc:1995