annotate examples/code/mex_demo.c @ 20595:c1a6c31ac29a

eliminate more simple uses of error_state * ov-classdef.cc: Eliminate simple uses of error_state.
author John W. Eaton <jwe@octave.org>
date Tue, 06 Oct 2015 00:20:02 -0400
parents c8240a60dd01
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
16867
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
1 // mex_demo.c -- example of a dynamically linked function for Octave.
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
2
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
3 // To use this file, your version of Octave must support dynamic
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
4 // linking. To find out if it does, type the command
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
5 //
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
6 // octave_config_info ("ENABLE_DYNAMIC_LINKING")
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
7 //
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
8 // at the Octave prompt. Support for dynamic linking is included if
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
9 // this expression returns the string "yes".
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
10 //
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
11 // To compile this file, type the command
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
12 //
18368
877b82d73ed9 mex_demo.c: Fix incorrect comments describing how to run example.
Rik <rik@octave.org>
parents: 16867
diff changeset
13 // mkoctfile --mex mex_demo.c
16867
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
14 //
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
15 // from within Octave or from the shell prompt. This will create a file
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
16 // called mex_demo.mex that can be loaded by Octave. To test the mex_demo.mex
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
17 // file, start Octave and type the command
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
18 //
18368
877b82d73ed9 mex_demo.c: Fix incorrect comments describing how to run example.
Rik <rik@octave.org>
parents: 16867
diff changeset
19 // d = mex_demo ("easy as", 1, 2, 3)
16867
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
20 //
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
21 // at the Octave prompt. Octave should respond by printing
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
22 //
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
23 // Hello, world!
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
24 // I have 4 inputs and 1 output
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
25 // d = 1.2346
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
26
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
27 // Additional samples of code are in the examples directory of the Octave
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
28 // distribution. See also the chapter External Code Interface in the
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
29 // documentation.
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
30
6577
f72d6d4b735a [project @ 2007-04-25 15:54:59 by jwe]
jwe
parents:
diff changeset
31 #include "mex.h"
f72d6d4b735a [project @ 2007-04-25 15:54:59 by jwe]
jwe
parents:
diff changeset
32
16867
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
33 // Every user function should include "mex.h" which imports the basic set of
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
34 // function prototypes necessary for dynamically linked functions. In
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
35 // particular, it will declare mexFunction which is used by every function
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
36 // which will be visible to Octave. A mexFunction is visible in Octave under
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
37 // the name of the source code file without the extension.
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
38
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
39 // The four arguments to mexFunction are:
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
40 // 1) The number of return arguments (# of left-hand side args).
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
41 // 2) An array of pointers to return arguments.
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
42 // 3) The number of input arguments (# of right-hand side args).
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
43 // 4) An array of pointers to input arguments.
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
44
6577
f72d6d4b735a [project @ 2007-04-25 15:54:59 by jwe]
jwe
parents:
diff changeset
45 void
16867
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
46 mexFunction (int nlhs, mxArray *plhs[],
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
47 int nrhs, const mxArray *prhs[])
6577
f72d6d4b735a [project @ 2007-04-25 15:54:59 by jwe]
jwe
parents:
diff changeset
48 {
16867
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
49 mexPrintf ("Hello, World!\n");
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
50
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
51 mexPrintf ("I have %d inputs and %d outputs\n", nrhs, nlhs);
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
52
6577
f72d6d4b735a [project @ 2007-04-25 15:54:59 by jwe]
jwe
parents:
diff changeset
53 mxArray *v = mxCreateDoubleMatrix (1, 1, mxREAL);
f72d6d4b735a [project @ 2007-04-25 15:54:59 by jwe]
jwe
parents:
diff changeset
54 double *data = mxGetPr (v);
f72d6d4b735a [project @ 2007-04-25 15:54:59 by jwe]
jwe
parents:
diff changeset
55 *data = 1.23456789;
16867
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 9932
diff changeset
56
6577
f72d6d4b735a [project @ 2007-04-25 15:54:59 by jwe]
jwe
parents:
diff changeset
57 plhs[0] = v;
f72d6d4b735a [project @ 2007-04-25 15:54:59 by jwe]
jwe
parents:
diff changeset
58 }