7f1eb1803f7db3d04cbfd1447c2f12df6af1577e
[scilab.git] / scilab / modules / history_manager / sci_gateway / c / sci_historysize.c
1 /*
2 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 * Copyright (C) 2007-2008 - INRIA - Allan CORNET
4 * Copyright (C) 2011 - DIGITEO - Allan CORNET
5 *
6 * This file must be used under the terms of the CeCILL.
7 * This source file is licensed as described in the file COPYING, which
8 * you should have received as part of this distribution.  The terms
9 * are also available at
10 * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
11 *
12 */
13
14 /*------------------------------------------------------------------------*/
15 #include "gw_history_manager.h"
16 #include "HistoryManager.h"
17 #include "api_scilab.h"
18 #include "localization.h"
19 #include "Scierror.h"
20 /*--------------------------------------------------------------------------*/
21 int sci_historysize(char *fname, unsigned long fname_len)
22 {
23     int iReturnedValue = 0;
24
25     Rhs = Max(Rhs, 0);
26     CheckRhs(0, 1);
27     CheckLhs(0, 1);
28     if (Rhs == 1)
29     {
30         int iValue = 0;
31         int *piAddressVarOne = NULL;
32         SciErr sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddressVarOne);
33         if (sciErr.iErr)
34         {
35             printError(&sciErr, 0);
36             Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
37             return 0;
38         }
39
40         if (isStringType(pvApiCtx, piAddressVarOne))
41         {
42             if (isScalar(pvApiCtx, piAddressVarOne))
43             {
44                 char *paramValue = NULL;
45                 if (getAllocatedSingleString(pvApiCtx, piAddressVarOne, &paramValue) == 0)
46                 {
47                     if (strcmp(paramValue, "max") == 0)
48                     {
49                         iReturnedValue = getSizeMaxScilabHistory();
50                         freeAllocatedSingleString(paramValue);
51                         paramValue = NULL;
52                     }
53                     else
54                     {
55                         Scierror(999, _("%s: Wrong value for input argument #%d: \"%s\" expected.\n"), fname, 1, "max");
56                         freeAllocatedSingleString(paramValue);
57                         paramValue = NULL;
58                         return 0;
59                     }
60                 }
61                 else
62                 {
63                     Scierror(999, _("%s: Memory allocation error.\n"), fname);
64                 }
65             }
66             else
67             {
68                 Scierror(999, _("%s: Wrong size for input argument #%d.\n"), fname, 1);
69                 return 0;
70             }
71         }
72         else if (isDoubleType(pvApiCtx, piAddressVarOne))
73         {
74             if (isScalar(pvApiCtx, piAddressVarOne))
75             {
76                 double dValue = 0.;
77                 if (getScalarDouble(pvApiCtx, piAddressVarOne, &dValue) == 0)
78                 {
79                     iValue = (int)(dValue);
80                 }
81
82                 if (!setSizeMaxScilabHistory(iValue))
83                 {
84                     Scierror(999, _("%s: Wrong value for input argument #%d.\n"), fname, 1);
85                     return 0;
86                 }
87                 iReturnedValue = iValue;
88             }
89             else
90             {
91                 Scierror(999, _("%s: Wrong size for input argument #%d.\n"), fname, 1);
92                 return 0;
93             }
94         }
95         else
96         {
97             Scierror(999, _("%s: Wrong type for input argument #%d.\n"), fname, 1);
98             return 0;
99         }
100     }
101     else
102     {
103         iReturnedValue = getSizeScilabHistory();
104     }
105
106     createScalarDouble(pvApiCtx, Rhs + 1, (double)iReturnedValue);
107     LhsVar(1) = Rhs + 1;
108
109     PutLhsVar();
110     return 0;
111 }
112 /*--------------------------------------------------------------------------*/