1 #include "mex.h"
2
3 void
mexFunction(int nlhs,mxArray * plhs[],int nrhs,const mxArray * prhs[])4 mexFunction (int nlhs, mxArray *plhs[],
5 int nrhs, const mxArray *prhs[])
6 {
7 int i;
8 mwIndex j;
9 mxArray *v;
10 const char *keys[] = { "this", "that" };
11
12 if (nrhs != 1 || ! mxIsStruct (prhs[0]))
13 mexErrMsgTxt ("ARG1 must be a struct");
14
15 for (i = 0; i < mxGetNumberOfFields (prhs[0]); i++)
16 for (j = 0; j < mxGetNumberOfElements (prhs[0]); j++)
17 {
18 mexPrintf ("field %s(%d) = ", mxGetFieldNameByNumber (prhs[0], i), j);
19 v = mxGetFieldByNumber (prhs[0], j, i);
20 mexCallMATLAB (0, NULL, 1, &v, "disp");
21 }
22
23 v = mxCreateStructMatrix (2, 2, 2, keys);
24
25 mxSetFieldByNumber (v, 0, 0, mxCreateString ("this1"));
26 mxSetFieldByNumber (v, 0, 1, mxCreateString ("that1"));
27 mxSetFieldByNumber (v, 1, 0, mxCreateString ("this2"));
28 mxSetFieldByNumber (v, 1, 1, mxCreateString ("that2"));
29 mxSetFieldByNumber (v, 2, 0, mxCreateString ("this3"));
30 mxSetFieldByNumber (v, 2, 1, mxCreateString ("that3"));
31 mxSetFieldByNumber (v, 3, 0, mxCreateString ("this4"));
32 mxSetFieldByNumber (v, 3, 1, mxCreateString ("that4"));
33
34 if (nlhs)
35 plhs[0] = v;
36 }
37