Update CHANGES.md before the release
[scilab.git] / scilab / modules / ast / includes / types / graphichandle.hxx
1 /*
2 *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 *  Copyright (C) 2008-2008 - DIGITEO - 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 __GRAPHICHANDLE_HXX__
17 #define __GRAPHICHANDLE_HXX__
18
19 #include "arrayof.hxx"
20 #include "bool.hxx"
21
22 namespace types
23 {
24 class EXTERN_AST GraphicHandle : public ArrayOf<long long>
25 {
26 public :
27     GraphicHandle(long long _handle);
28     GraphicHandle(int _iRows, int _iCols);
29     GraphicHandle(int _iDims, const int* _piDims);
30
31     virtual                 ~GraphicHandle();
32
33     GraphicHandle*          clone() override;
34
35     void                    whoAmI() override;
36
37     bool                    isHandle() override
38     {
39         return true;
40     }
41
42     bool                    isContainer() override
43     {
44         return true;
45     }
46
47     bool                    operator==(const InternalType& it) override;
48     bool                    operator!=(const InternalType& it) override;
49
50     /* return type as string ( double, int, cell, list, ... )*/
51     virtual std::wstring     getTypeStr() const override
52     {
53         return L"handle";
54     }
55     /* return type as short string ( s, i, ce, l, ... )*/
56     virtual std::wstring     getShortTypeStr() const override
57     {
58         return L"h";
59     }
60
61     bool                    hasToString() override
62     {
63         return false;
64     }
65
66     bool isTrue() override
67     {
68         return false;
69     }
70
71     virtual bool neg(InternalType *& /*out*/) override
72     {
73         return false;
74     }
75
76     virtual bool transpose(InternalType *& out) override;
77
78     virtual bool isFieldExtractionOverloadable() const override
79     {
80         return true;
81     }
82
83     virtual bool invoke(typed_list & in, optional_list & opt, int _iRetCount, typed_list & out, const ast::Exp & e) override ;
84
85     bool getMemory(long long* _piSize, long long* _piSizePlusType) override;
86
87 protected :
88     inline ScilabType           getType(void) override
89     {
90         return ScilabHandle;
91     }
92     inline ScilabId         getId(void) override
93     {
94         return isScalar() ? IdScalarHandle : IdHandle;
95     }
96
97 private :
98     virtual bool            subMatrixToString(std::wostringstream& ostr, int* _piDims, int _iDims) override;
99
100     virtual long long       getNullValue() override;
101     virtual GraphicHandle*  createEmpty(int _iDims, int* _piDims, bool _bComplex = false) override;
102     virtual long long       copyValue(long long _handle) override;
103     virtual void            deleteAll() override;
104     virtual void            deleteImg() override;
105     virtual long long*      allocData(int _iSize) override;
106 };
107 }
108
109 #ifdef _MSC_VER
110 template class types::ArrayOf<long long>; //GraphicHandle
111 #endif
112 #endif /* !__GRAPHICHANDLE_HXX__ */