License Header change: Removed the LICENSE_END before beta
[scilab.git] / scilab / modules / ast / includes / types / pointer.hxx
1 /*
2 *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 *  Copyright (C) 2012 - Scilab Enterprises - Antoine ELIAS
4 *
5  * Copyright (C) 2012 - 2016 - Scilab Enterprises
6  *
7  * This file is hereby licensed under the terms of the GNU GPL v2.0,
8  * pursuant to article 5.3.4 of the CeCILL v.2.1.
9  * This file was originally licensed under the terms of the CeCILL v2.1,
10  * and continues to be available under such terms.
11  * For more information, see the COPYING file which you should have received
12  * along with this program.
13 *
14 */
15
16 #ifndef __POINTER_HXX__
17 #define __POINTER_HXX__
18
19 #include "user.hxx"
20
21 namespace types
22 {
23 class Pointer : public UserType
24 {
25 public:
26     Pointer()
27     {
28         m_pvData = NULL;
29     }
30
31     Pointer(void* _pvData)
32     {
33         m_pvData = _pvData;
34     }
35
36     Pointer(int _rows, int _cols, void* _pvData, bool _complex = false)
37     {
38         m_iRows = _rows;
39         m_iCols = _cols;
40         m_pvData = _pvData;
41         m_cplx = _complex;
42     }
43
44     virtual ~Pointer() {}
45
46     bool hasToString()
47     {
48         return false;
49     }
50
51     std::wstring getTypeStr()
52     {
53         return L"pointer";
54     }
55
56     std::wstring getShortTypeStr()
57     {
58         return L"ptr";
59     }
60
61     bool isPointer(void)
62     {
63         return true;
64     }
65
66     bool isComplex(void)
67     {
68         return m_cplx;
69     }
70
71     bool toString(std::wostringstream& ostr)
72     {
73         return true;
74     }
75
76     Pointer* clone()
77     {
78         return new Pointer(m_iRows, m_iCols, m_pvData, m_cplx);
79     }
80
81     void* get()
82     {
83         return m_pvData;
84     }
85
86     void set(void* _pvData)
87     {
88         m_pvData = _pvData;
89     }
90
91     virtual bool isAssignable(void)
92     {
93         return true;
94     }
95
96 protected:
97
98     void* m_pvData;
99     bool m_cplx;
100 };
101 }
102
103 #endif /* !__POINTER_HXX__ */