fix warning in ast module.
[scilab.git] / scilab / modules / ast / src / cpp / types / arrayof.cpp
1 /*
2  *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  *  Copyright (C) 2010 - DIGITEO - Antoine ELIAS
4  *
5  *  This file must be used under the terms of the CeCILL.
6  *  This source file is licensed as described in the file COPYING, which
7  *  you should have received as part of this distribution.  The terms
8  *  are also available at
9  *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10  *
11  */
12
13 #include "double.hxx"
14 #include "bool.hxx"
15 #include "singlepoly.hxx"
16
17 namespace types
18 {
19 /*    template <typename T>
20     ArrayOf<T>* createEmptyDouble()
21     {
22         return Double::Empty();
23     }
24 */
25 //n-uplet in french
26 int computeTuples(int* _piCountDim, int _iDims, int _iCurrentDim, int* _piIndex)
27 {
28     //if bRet == 1, previous dims has reach max value.
29     int iRet = 0;
30
31     if (_iCurrentDim == 0)
32     {
33         //last dims
34         if (_piIndex[_iCurrentDim] >= _piCountDim[_iCurrentDim])
35         {
36             _piIndex[_iCurrentDim] = 0;
37             return 1;
38         }
39     }
40     else
41     {
42         iRet = computeTuples(_piCountDim, _iDims, _iCurrentDim - 1, _piIndex);
43         if (iRet)
44         {
45             _piIndex[_iCurrentDim]++;
46             if (_piIndex[_iCurrentDim] >= _piCountDim[_iCurrentDim])
47             {
48                 _piIndex[_iCurrentDim] = 0;
49                 return 1;
50             }
51         }
52     }
53     return 0;
54 }
55
56 InternalType* createEmptyDouble()
57 {
58     return Double::Empty();
59 }
60
61 int getIntValueFromDouble(InternalType* _pIT, int _iPos)
62 {
63     return static_cast<int>(_pIT->getAs<Double>()->get(_iPos));
64 }
65
66 double* getDoubleArrayFromDouble(InternalType* _pIT)
67 {
68     return _pIT->getAs<Double>()->get();
69 }
70
71 InternalType* createDoubleVector(int _iSize)
72 {
73     int piDims[] = {1, _iSize};
74     Double* pOut = new Double(2, piDims);
75     for (int i = 0 ; i < _iSize ; i++)
76     {
77         pOut->set(i, i + 1);
78     }
79     return pOut;
80 }
81
82 bool checkArgValidity(typed_list& _Arg)
83 {
84     for (int i = 0 ; i < (int)_Arg.size() ; i++)
85     {
86         if ( _Arg[i]->isDouble() == false)
87         {
88             return false;
89         }
90
91         Double* pDbl = _Arg[i]->getAs<Double>();
92         double* pdbl = pDbl->get();
93         for (int j = 0 ; j < pDbl->getSize() ; j++)
94         {
95             if (pdbl[j] <= 0)
96             {
97                 return false;
98             }
99         }
100     }
101
102     return true;
103 }
104 }