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