kernel modules Wiedervereinigung
[scilab.git] / scilab / modules / ast / includes / types / singlepoly.hxx
1 /*
2 *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 *  Copyright (C) 2008-2008 - 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 #ifndef __POLY_HH__
14 #define __POLY_HH__
15
16 #include <list>
17 #include "types.hxx"
18 #include "double.hxx"
19
20 namespace types
21 {
22 class EXTERN_AST SinglePoly : public GenericType
23 {
24 public :
25     SinglePoly();
26     SinglePoly(double** _pdblCoefR, int _iRank);
27     SinglePoly(double** _pdblCoefR, double** _pdblcoefI, int _iRank);
28     SinglePoly(Double** _poCoefR, int _iRank);
29     virtual                 ~SinglePoly();
30
31     // FIXME : Should not return NULL;
32     SinglePoly*             clone();
33     SinglePoly*             conjugate();
34
35     bool                    isSinglePoly()
36     {
37         return true;
38     }
39     /*Config management*/
40     void                    whoAmI();
41     bool                    isComplex();
42     void                    setComplex(bool _bComplex);
43
44     int                     getRank();
45     int                     getRealRank();
46     bool                    setRank(int _iRank, bool bSave = false);
47     Double*                 getCoef();
48     double*                 getCoefReal();
49     double*                 getCoefImg();
50     bool                    setCoef(Double *_poPow);
51     bool                    setCoef(double *_pdblCoefR, double *_pdblCoefI);
52     bool                    evaluate(double _dblInR, double _dblInI, double *_pdblOutR, double *_pdblOutI);
53     void                    updateRank(void);
54
55     GenericType*            getColumnValues(int _iPos);
56     void                    createPoly(double**_pdblCoefR, double**_pdblCoefI, int _iRank);
57     void                    toStringReal(std::wstring _szVar, std::list<std::wstring>* _pListExp , std::list<std::wstring>* _pListCoef);
58     void                    toStringImg(std::wstring _szVar, std::list<std::wstring>* _pListExp , std::list<std::wstring>* _pListCoef);
59
60     bool                    toString(std::wostringstream& ostr);
61
62     bool                    operator==(const InternalType& it);
63     bool                    operator!=(const InternalType& it);
64
65     /* return type as string ( double, int, cell, list, ... )*/
66     virtual std::wstring    getTypeStr()
67     {
68         return L"poly";
69     }
70     /* return type as short string ( s, i, ce, l, ... )*/
71     virtual std::wstring    getShortTypeStr()
72     {
73         return L"p";
74     }
75 protected :
76     inline ScilabType       getType(void)
77     {
78         return ScilabSinglePolynom;
79     }
80     inline ScilabId         getId(void)
81     {
82         return IdSinglePolynom;
83     }
84
85 private :
86     void                    toStringInternal(double *_pdblVal, std::wstring _szVar, std::list<std::wstring>* _pListExp , std::list<std::wstring>* _pListCoef);
87
88
89 private :
90     bool                    m_bComplex;
91     Double*                 m_pdblCoef;
92     int                     m_iRank;
93 };
94 }
95
96 #endif /* !__POLY_HH__ */