matlab-sys 0.3.1

Rust bindings for the Matlab C API
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
/* automatically generated by rust-bindgen 0.64.0 */
#![allow(nonstandard_style)]
#[cfg(not(target_pointer_width = "64"))]
compile_error!("The bindings are only valid for 64-bit applications. All Matlab versions after 2015b are only available in 64-bit.");
pub type FILE = _iobuf;
pub type mwSize = usize;
pub type mwIndex = usize;
pub type mwSignedIndex = isize;
#[doc = " Forward declaration for mxArray"]
pub type mxArray = mxArray_tag;
#[doc = " MEX-file entry point type"]
pub type mxFunctionPtr = ::core::option::Option<
    unsafe extern "C" fn(
        nlhs: ::core::ffi::c_int,
        plhs: *mut *mut mxArray,
        nrhs: ::core::ffi::c_int,
        prhs: *mut *mut mxArray,
    ),
>;
#[doc = " Logical type"]
pub type mxLogical = bool;
#[doc = " Required for Unicode support in MATLAB"]
pub type mxChar = u16;
pub type mex_exit_fn = ::core::option::Option<unsafe extern "C" fn()>;
pub type MATFile = MatFile_tag;
pub type matError = ::core::ffi::c_int;
pub type Engine = engine;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _iobuf {
    pub _Placeholder: *mut ::core::ffi::c_void,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct mxArray_tag {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct MatFile_tag {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct engine {
    _unused: [u8; 0],
}
pub const MWSIZE_MAX: u64 = 281474976710655;
pub const MWINDEX_MAX: u64 = 281474976710655;
pub const MWSINDEX_MAX: u64 = 281474976710655;
pub const MWSINDEX_MIN: i64 = -281474976710655;
pub const MWSIZE_MIN: u32 = 0;
pub const MWINDEX_MIN: u32 = 0;
pub const mxMAXNAM: u32 = 64;
pub mod mxClassID {
    #[doc = " mxArray classes."]
    pub type Type = i32;
    pub const mxUNKNOWN_CLASS: Type = 0;
    pub const mxCELL_CLASS: Type = 1;
    pub const mxSTRUCT_CLASS: Type = 2;
    pub const mxLOGICAL_CLASS: Type = 3;
    pub const mxCHAR_CLASS: Type = 4;
    pub const mxVOID_CLASS: Type = 5;
    pub const mxDOUBLE_CLASS: Type = 6;
    pub const mxSINGLE_CLASS: Type = 7;
    pub const mxINT8_CLASS: Type = 8;
    pub const mxUINT8_CLASS: Type = 9;
    pub const mxINT16_CLASS: Type = 10;
    pub const mxUINT16_CLASS: Type = 11;
    pub const mxINT32_CLASS: Type = 12;
    pub const mxUINT32_CLASS: Type = 13;
    pub const mxINT64_CLASS: Type = 14;
    pub const mxUINT64_CLASS: Type = 15;
    pub const mxFUNCTION_CLASS: Type = 16;
    pub const mxOPAQUE_CLASS: Type = 17;
    pub const mxOBJECT_CLASS: Type = 18;
    pub const mxINDEX_CLASS: Type = 15;
}
pub mod mxComplexity {
    #[doc = " Indicates whether floating-point mxArrays are real or complex."]
    pub type Type = i32;
    pub const mxREAL: Type = 0;
    pub const mxCOMPLEX: Type = 1;
}
extern "C" {
    pub fn mxMalloc(n: usize) -> *mut ::core::ffi::c_void;
    pub fn mxCalloc(n: usize, size: usize) -> *mut ::core::ffi::c_void;
    pub fn mxFree(ptr: *mut ::core::ffi::c_void);
    pub fn mxRealloc(ptr: *mut ::core::ffi::c_void, size: usize) -> *mut ::core::ffi::c_void;
    #[link_name = "\u{1}mxGetNumberOfDimensions_730"]
    pub fn mxGetNumberOfDimensions(pa: *const mxArray) -> mwSize;
    #[link_name = "\u{1}mxGetDimensions_730"]
    pub fn mxGetDimensions(pa: *const mxArray) -> *const mwSize;
    pub fn mxGetM(pa: *const mxArray) -> usize;
    #[link_name = "\u{1}mxGetIr_730"]
    pub fn mxGetIr(pa: *const mxArray) -> *mut mwIndex;
    #[link_name = "\u{1}mxGetJc_730"]
    pub fn mxGetJc(pa: *const mxArray) -> *mut mwIndex;
    #[link_name = "\u{1}mxGetNzmax_730"]
    pub fn mxGetNzmax(pa: *const mxArray) -> mwSize;
    #[link_name = "\u{1}mxSetNzmax_730"]
    pub fn mxSetNzmax(pa: *mut mxArray, nzmax: mwSize);
    pub fn mxGetFieldNameByNumber(
        pa: *const mxArray,
        n: ::core::ffi::c_int,
    ) -> *const ::core::ffi::c_char;
    #[link_name = "\u{1}mxGetFieldByNumber_730"]
    pub fn mxGetFieldByNumber(
        pa: *const mxArray,
        i: mwIndex,
        fieldnum: ::core::ffi::c_int,
    ) -> *mut mxArray;
    #[link_name = "\u{1}mxGetCell_730"]
    pub fn mxGetCell(pa: *const mxArray, i: mwIndex) -> *mut mxArray;
    pub fn mxGetClassID(pa: *const mxArray) -> mxClassID::Type;
    pub fn mxGetData(pa: *const mxArray) -> *mut ::core::ffi::c_void;
    pub fn mxSetData(pa: *mut mxArray, newdata: *mut ::core::ffi::c_void);
    pub fn mxIsNumeric(pa: *const mxArray) -> bool;
    pub fn mxIsCell(pa: *const mxArray) -> bool;
    pub fn mxIsLogical(pa: *const mxArray) -> bool;
    pub fn mxIsScalar(pa: *const mxArray) -> bool;
    pub fn mxIsChar(pa: *const mxArray) -> bool;
    pub fn mxIsStruct(pa: *const mxArray) -> bool;
    pub fn mxIsOpaque(pa: *const mxArray) -> bool;
    pub fn mxIsFunctionHandle(pa: *const mxArray) -> bool;
    pub fn mxIsObject(pa: *const mxArray) -> bool;
    pub fn mxGetImagData(pa: *const mxArray) -> *mut ::core::ffi::c_void;
    pub fn mxSetImagData(pa: *mut mxArray, newdata: *mut ::core::ffi::c_void);
    pub fn mxIsComplex(pa: *const mxArray) -> bool;
    pub fn mxIsSparse(pa: *const mxArray) -> bool;
    pub fn mxIsDouble(pa: *const mxArray) -> bool;
    pub fn mxIsSingle(pa: *const mxArray) -> bool;
    pub fn mxIsInt8(pa: *const mxArray) -> bool;
    pub fn mxIsUint8(pa: *const mxArray) -> bool;
    pub fn mxIsInt16(pa: *const mxArray) -> bool;
    pub fn mxIsUint16(pa: *const mxArray) -> bool;
    pub fn mxIsInt32(pa: *const mxArray) -> bool;
    pub fn mxIsUint32(pa: *const mxArray) -> bool;
    pub fn mxIsInt64(pa: *const mxArray) -> bool;
    pub fn mxIsUint64(pa: *const mxArray) -> bool;
    pub fn mxGetNumberOfElements(pa: *const mxArray) -> usize;
    pub fn mxGetPi(pa: *const mxArray) -> *mut f64;
    pub fn mxSetPi(pa: *mut mxArray, pi: *mut f64);
    pub fn mxGetChars(pa: *const mxArray) -> *mut mxChar;
    pub fn mxGetUserBits(pa: *const mxArray) -> ::core::ffi::c_int;
    pub fn mxSetUserBits(pa: *mut mxArray, value: ::core::ffi::c_int);
    pub fn mxGetScalar(pa: *const mxArray) -> f64;
    pub fn mxIsFromGlobalWS(pa: *const mxArray) -> bool;
    pub fn mxSetFromGlobalWS(pa: *mut mxArray, global: bool);
    #[link_name = "\u{1}mxSetM_730"]
    pub fn mxSetM(pa: *mut mxArray, m: mwSize);
    pub fn mxGetN(pa: *const mxArray) -> usize;
    pub fn mxIsEmpty(pa: *const mxArray) -> bool;
    pub fn mxGetFieldNumber(
        pa: *const mxArray,
        name: *const ::core::ffi::c_char,
    ) -> ::core::ffi::c_int;
    #[link_name = "\u{1}mxSetIr_730"]
    pub fn mxSetIr(pa: *mut mxArray, newir: *mut mwIndex);
    #[link_name = "\u{1}mxSetJc_730"]
    pub fn mxSetJc(pa: *mut mxArray, newjc: *mut mwIndex);
    pub fn mxGetPr(pa: *const mxArray) -> *mut f64;
    pub fn mxSetPr(pa: *mut mxArray, newdata: *mut f64);
    pub fn mxGetElementSize(pa: *const mxArray) -> usize;
    #[link_name = "\u{1}mxCalcSingleSubscript_730"]
    pub fn mxCalcSingleSubscript(
        pa: *const mxArray,
        nsubs: mwSize,
        subs: *const mwIndex,
    ) -> mwIndex;
    pub fn mxGetNumberOfFields(pa: *const mxArray) -> ::core::ffi::c_int;
    #[link_name = "\u{1}mxSetCell_730"]
    pub fn mxSetCell(pa: *mut mxArray, i: mwIndex, value: *mut mxArray);
    #[link_name = "\u{1}mxSetFieldByNumber_730"]
    pub fn mxSetFieldByNumber(
        pa: *mut mxArray,
        i: mwIndex,
        fieldnum: ::core::ffi::c_int,
        value: *mut mxArray,
    );
    #[link_name = "\u{1}mxGetField_730"]
    pub fn mxGetField(
        pa: *const mxArray,
        i: mwIndex,
        fieldname: *const ::core::ffi::c_char,
    ) -> *mut mxArray;
    #[link_name = "\u{1}mxSetField_730"]
    pub fn mxSetField(
        pa: *mut mxArray,
        i: mwIndex,
        fieldname: *const ::core::ffi::c_char,
        value: *mut mxArray,
    );
    #[link_name = "\u{1}mxGetProperty_730"]
    pub fn mxGetProperty(
        pa: *const mxArray,
        i: mwIndex,
        propname: *const ::core::ffi::c_char,
    ) -> *mut mxArray;
    #[link_name = "\u{1}mxSetProperty_730"]
    pub fn mxSetProperty(
        pa: *mut mxArray,
        i: mwIndex,
        propname: *const ::core::ffi::c_char,
        value: *const mxArray,
    );
    pub fn mxGetClassName(pa: *const mxArray) -> *const ::core::ffi::c_char;
    pub fn mxIsClass(pa: *const mxArray, name: *const ::core::ffi::c_char) -> bool;
    #[link_name = "\u{1}mxCreateNumericMatrix_730"]
    pub fn mxCreateNumericMatrix(
        m: mwSize,
        n: mwSize,
        classid: mxClassID::Type,
        flag: mxComplexity::Type,
    ) -> *mut mxArray;
    pub fn mxCreateUninitNumericMatrix(
        m: usize,
        n: usize,
        classid: mxClassID::Type,
        flag: mxComplexity::Type,
    ) -> *mut mxArray;
    pub fn mxCreateUninitNumericArray(
        ndim: usize,
        dims: *mut usize,
        classid: mxClassID::Type,
        flag: mxComplexity::Type,
    ) -> *mut mxArray;
    #[link_name = "\u{1}mxSetN_730"]
    pub fn mxSetN(pa: *mut mxArray, n: mwSize);
    #[link_name = "\u{1}mxSetDimensions_730"]
    pub fn mxSetDimensions(
        pa: *mut mxArray,
        pdims: *const mwSize,
        ndims: mwSize,
    ) -> ::core::ffi::c_int;
    pub fn mxDestroyArray(pa: *mut mxArray);
    #[link_name = "\u{1}mxCreateNumericArray_730"]
    pub fn mxCreateNumericArray(
        ndim: mwSize,
        dims: *const mwSize,
        classid: mxClassID::Type,
        flag: mxComplexity::Type,
    ) -> *mut mxArray;
    #[link_name = "\u{1}mxCreateCharArray_730"]
    pub fn mxCreateCharArray(ndim: mwSize, dims: *const mwSize) -> *mut mxArray;
    #[link_name = "\u{1}mxCreateDoubleMatrix_730"]
    pub fn mxCreateDoubleMatrix(m: mwSize, n: mwSize, flag: mxComplexity::Type) -> *mut mxArray;
    pub fn mxGetLogicals(pa: *const mxArray) -> *mut mxLogical;
    #[link_name = "\u{1}mxCreateLogicalArray_730"]
    pub fn mxCreateLogicalArray(ndim: mwSize, dims: *const mwSize) -> *mut mxArray;
    #[link_name = "\u{1}mxCreateLogicalMatrix_730"]
    pub fn mxCreateLogicalMatrix(m: mwSize, n: mwSize) -> *mut mxArray;
    pub fn mxCreateLogicalScalar(value: bool) -> *mut mxArray;
    pub fn mxIsLogicalScalar(pa: *const mxArray) -> bool;
    pub fn mxIsLogicalScalarTrue(pa: *const mxArray) -> bool;
    pub fn mxCreateDoubleScalar(value: f64) -> *mut mxArray;
    #[link_name = "\u{1}mxCreateSparse_730"]
    pub fn mxCreateSparse(
        m: mwSize,
        n: mwSize,
        nzmax: mwSize,
        flag: mxComplexity::Type,
    ) -> *mut mxArray;
    #[link_name = "\u{1}mxCreateSparseLogicalMatrix_730"]
    pub fn mxCreateSparseLogicalMatrix(m: mwSize, n: mwSize, nzmax: mwSize) -> *mut mxArray;
    #[link_name = "\u{1}mxGetNChars_730"]
    pub fn mxGetNChars(pa: *const mxArray, buf: *mut ::core::ffi::c_char, nChars: mwSize);
    #[link_name = "\u{1}mxGetString_730"]
    pub fn mxGetString(
        pa: *const mxArray,
        buf: *mut ::core::ffi::c_char,
        buflen: mwSize,
    ) -> ::core::ffi::c_int;
    pub fn mxArrayToString(pa: *const mxArray) -> *mut ::core::ffi::c_char;
    pub fn mxArrayToUTF8String(pa: *const mxArray) -> *mut ::core::ffi::c_char;
    #[link_name = "\u{1}mxCreateStringFromNChars_730"]
    pub fn mxCreateStringFromNChars(str_: *const ::core::ffi::c_char, n: mwSize) -> *mut mxArray;
    pub fn mxCreateString(str_: *const ::core::ffi::c_char) -> *mut mxArray;
    #[link_name = "\u{1}mxCreateCharMatrixFromStrings_730"]
    pub fn mxCreateCharMatrixFromStrings(
        m: mwSize,
        str_: *mut *const ::core::ffi::c_char,
    ) -> *mut mxArray;
    #[link_name = "\u{1}mxCreateCellMatrix_730"]
    pub fn mxCreateCellMatrix(m: mwSize, n: mwSize) -> *mut mxArray;
    #[link_name = "\u{1}mxCreateCellArray_730"]
    pub fn mxCreateCellArray(ndim: mwSize, dims: *const mwSize) -> *mut mxArray;
    #[link_name = "\u{1}mxCreateStructMatrix_730"]
    pub fn mxCreateStructMatrix(
        m: mwSize,
        n: mwSize,
        nfields: ::core::ffi::c_int,
        fieldnames: *mut *const ::core::ffi::c_char,
    ) -> *mut mxArray;
    #[link_name = "\u{1}mxCreateStructArray_730"]
    pub fn mxCreateStructArray(
        ndim: mwSize,
        dims: *const mwSize,
        nfields: ::core::ffi::c_int,
        fieldnames: *mut *const ::core::ffi::c_char,
    ) -> *mut mxArray;
    pub fn mxDuplicateArray(in_: *const mxArray) -> *mut mxArray;
    pub fn mxSetClassName(
        pa: *mut mxArray,
        classname: *const ::core::ffi::c_char,
    ) -> ::core::ffi::c_int;
    pub fn mxAddField(
        pa: *mut mxArray,
        fieldname: *const ::core::ffi::c_char,
    ) -> ::core::ffi::c_int;
    pub fn mxRemoveField(pa: *mut mxArray, field: ::core::ffi::c_int);
    pub fn mxGetEps() -> f64;
    pub fn mxGetInf() -> f64;
    pub fn mxGetNaN() -> f64;
    pub fn mxIsFinite(x: f64) -> bool;
    pub fn mxIsInf(x: f64) -> bool;
    pub fn mxIsNaN(x: f64) -> bool;
    pub fn mxCreateSharedDataCopy(pa: *const mxArray) -> *mut mxArray;
    pub fn mxCreateUninitDoubleMatrix(
        cmplx_flag: ::core::ffi::c_int,
        m: usize,
        n: usize,
    ) -> *mut mxArray;
    pub fn mxFastZeros(
        cmplx_flag: ::core::ffi::c_int,
        m: ::core::ffi::c_int,
        n: ::core::ffi::c_int,
    ) -> *mut mxArray;
    pub fn mxUnreference(pa: *mut mxArray) -> *mut mxArray;
    pub fn mxUnshareArray(pa: *mut mxArray, level: ::core::ffi::c_int) -> ::core::ffi::c_int;
    pub fn mxGetPropertyShared(
        pa: *const mxArray,
        i: usize,
        propname: *const ::core::ffi::c_char,
    ) -> *mut mxArray;
    pub fn mxSetPropertyShared(
        pa: *mut mxArray,
        i: usize,
        propname: *const ::core::ffi::c_char,
        value: *const mxArray,
    );
    pub fn mexErrMsgTxt(error_msg: *const ::core::ffi::c_char);
    pub fn mexErrMsgIdAndTxt(
        identifier: *const ::core::ffi::c_char,
        err_msg: *const ::core::ffi::c_char,
        ...
    );
    pub fn mexWarnMsgTxt(warn_msg: *const ::core::ffi::c_char);
    pub fn mexWarnMsgIdAndTxt(
        identifier: *const ::core::ffi::c_char,
        warn_msg: *const ::core::ffi::c_char,
        ...
    );
    pub fn mexPrintf(fmt: *const ::core::ffi::c_char, ...) -> ::core::ffi::c_int;
    pub fn mexMakeArrayPersistent(pa: *mut mxArray);
    pub fn mexMakeMemoryPersistent(ptr: *mut ::core::ffi::c_void);
    pub fn mexCallMATLABWithObject(
        nlhs: ::core::ffi::c_int,
        plhs: *mut *mut mxArray,
        nrhs: ::core::ffi::c_int,
        prhs: *mut *mut mxArray,
        fcn_name: *const ::core::ffi::c_char,
    ) -> ::core::ffi::c_int;
    pub fn mexCallMATLABWithTrapWithObject(
        nlhs: ::core::ffi::c_int,
        plhs: *mut *mut mxArray,
        nrhs: ::core::ffi::c_int,
        prhs: *mut *mut mxArray,
        fcn_name: *const ::core::ffi::c_char,
    ) -> *mut mxArray;
    pub fn mexPrintAssertion(
        test: *const ::core::ffi::c_char,
        fname: *const ::core::ffi::c_char,
        linenum: ::core::ffi::c_int,
        message: *const ::core::ffi::c_char,
    );
    pub fn mexIsGlobal(pA: *const mxArray) -> bool;
    pub fn mexPutVariable(
        workspace: *const ::core::ffi::c_char,
        name: *const ::core::ffi::c_char,
        parray: *const mxArray,
    ) -> ::core::ffi::c_int;
    pub fn mexGetVariablePtr(
        workspace: *const ::core::ffi::c_char,
        name: *const ::core::ffi::c_char,
    ) -> *const mxArray;
    pub fn mexGetVariableWithObject(
        workspace: *const ::core::ffi::c_char,
        name: *const ::core::ffi::c_char,
    ) -> *mut mxArray;
    pub fn mexLock();
    pub fn mexUnlock();
    pub fn mexIsLocked() -> bool;
    pub fn mexFunctionName() -> *const ::core::ffi::c_char;
    pub fn mexEvalString(str_: *const ::core::ffi::c_char) -> ::core::ffi::c_int;
    pub fn mexEvalStringWithTrap(str_: *const ::core::ffi::c_char) -> *mut mxArray;
    pub fn mexAtExit(exit_fcn: mex_exit_fn) -> ::core::ffi::c_int;
    pub fn mexFunction(
        nlhs: ::core::ffi::c_int,
        plhs: *mut *mut mxArray,
        nrhs: ::core::ffi::c_int,
        prhs: *mut *const mxArray,
    );
    pub fn matOpen(
        filename: *const ::core::ffi::c_char,
        mode: *const ::core::ffi::c_char,
    ) -> *mut MATFile;
    pub fn matClose(pMF: *mut MATFile) -> matError;
    pub fn matGetErrno(pMF: *mut MATFile) -> matError;
    pub fn matGetFp(pMF: *mut MATFile) -> *mut FILE;
    pub fn matPutVariable(
        pMF: *mut MATFile,
        name: *const ::core::ffi::c_char,
        pA: *const mxArray,
    ) -> matError;
    pub fn matPutVariableAsGlobal(
        pMF: *mut MATFile,
        name: *const ::core::ffi::c_char,
        pA: *const mxArray,
    ) -> matError;
    pub fn matGetVariable(pMF: *mut MATFile, name: *const ::core::ffi::c_char) -> *mut mxArray;
    pub fn matGetNextVariable(
        pMF: *mut MATFile,
        nameptr: *mut *const ::core::ffi::c_char,
    ) -> *mut mxArray;
    pub fn matGetNextVariableInfo(
        pMF: *mut MATFile,
        nameptr: *mut *const ::core::ffi::c_char,
    ) -> *mut mxArray;
    pub fn matGetVariableInfo(pMF: *mut MATFile, name: *const ::core::ffi::c_char) -> *mut mxArray;
    pub fn matDeleteVariable(pMF: *mut MATFile, name: *const ::core::ffi::c_char) -> matError;
    pub fn matGetDir(
        pMF: *mut MATFile,
        num: *mut ::core::ffi::c_int,
    ) -> *mut *mut ::core::ffi::c_char;
    pub fn engEvalString(ep: *mut Engine, string: *const ::core::ffi::c_char)
        -> ::core::ffi::c_int;
    pub fn engOpenSingleUse(
        startcmd: *const ::core::ffi::c_char,
        reserved: *mut ::core::ffi::c_void,
        retstatus: *mut ::core::ffi::c_int,
    ) -> *mut Engine;
    pub fn engSetVisible(ep: *mut Engine, newVal: bool) -> ::core::ffi::c_int;
    pub fn engGetVisible(ep: *mut Engine, bVal: *mut bool) -> ::core::ffi::c_int;
    pub fn engOpen(startcmd: *const ::core::ffi::c_char) -> *mut Engine;
    pub fn engClose(ep: *mut Engine) -> ::core::ffi::c_int;
    pub fn engGetVariable(ep: *mut Engine, name: *const ::core::ffi::c_char) -> *mut mxArray;
    pub fn engPutVariable(
        ep: *mut Engine,
        var_name: *const ::core::ffi::c_char,
        ap: *const mxArray,
    ) -> ::core::ffi::c_int;
    pub fn engOutputBuffer(
        ep: *mut Engine,
        buffer: *mut ::core::ffi::c_char,
        buflen: ::core::ffi::c_int,
    ) -> ::core::ffi::c_int;
}