xcos_toolbox_skeleton : fix the build
[scilab.git] / scilab / contrib / xcos_toolbox_skeleton / sci_gateway / c / sci_tbx_sum.c
1 /* This file is released under the 3-clause BSD license. See COPYING-BSD. */
2
3 #include "business.h"
4 #include "api_scilab.h"
5 #include "Scierror.h"
6
7 int sci_tbx_sum(char *fname, void* pvApiCtx)
8 {
9     SciErr sciErr;
10
11     int *piAddressVarOne = NULL;
12     double dVarOne = 0.0;
13
14     int *piAddressVarTwo = NULL;
15     double dVarTwo = 0.0;
16
17     double dOut = 0.0;
18
19     /* check that we have only 2 input arguments */
20     /* check that we have only 1 output argument */
21     CheckInputArgument(pvApiCtx, 2, 2);
22     CheckOutputArgument(pvApiCtx, 1, 1);
23
24     /* get Address of inputs */
25     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddressVarOne);
26     if (sciErr.iErr)
27     {
28         printError(&sciErr, 0);
29         return 0;
30     }
31
32     sciErr = getVarAddressFromPosition(pvApiCtx, 2, &piAddressVarTwo);
33     if (sciErr.iErr)
34     {
35         printError(&sciErr, 0);
36         return 0;
37     }
38
39     /* check input type */
40     if ( !isDoubleType(pvApiCtx, piAddressVarOne) )
41     {
42         Scierror(999, "%s: Wrong type for input argument #%d: A scalar expected.\n", fname, 1);
43         return 0;
44     }
45
46     if ( !isDoubleType(pvApiCtx, piAddressVarTwo) )
47     {
48         Scierror(999, "%s: Wrong type for input argument #%d: A scalar expected.\n", fname, 2);
49         return 0;
50     }
51
52     if ( getScalarDouble(pvApiCtx, piAddressVarOne, &dVarOne) )
53     {
54         Scierror(999, "%s: Wrong size for input argument #%d: A scalar expected.\n", fname, 1);
55         return 0;
56     }
57
58     if ( getScalarDouble(pvApiCtx, piAddressVarTwo, &dVarTwo) )
59     {
60         Scierror(999, "%s: Wrong size for input argument #%d: A scalar expected.\n", fname, 2);
61         return 0;
62     }
63
64     /* call c business function */
65     dOut = business_sum(dVarOne, dVarTwo);
66
67     createScalarDouble(pvApiCtx, nbInputArgument(pvApiCtx) + 1, dOut);
68     AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1;
69 }
70