Update CHANGES.md before the release
[scilab.git] / scilab / modules / ast / includes / types / tlist.hxx
1 /*
2  *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  *  Copyright (C) 2010-2010 - 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 __TLIST_HXX__
17 #define __TLIST_HXX__
18
19 #include <list>
20 #include <vector>
21 #include "list.hxx"
22 #include "string.hxx"
23
24 namespace types
25 {
26 class EXTERN_AST TList : public List
27 {
28 public :
29     TList();
30     virtual ~TList();
31
32 protected:
33     TList(TList *_oTListCopyMe) : List(_oTListCopyMe) {}
34
35 public :
36     void                            whoAmI(void) override
37     {
38         std::cout << "types::TList";
39     }
40
41     ScilabType                      getType(void) override
42     {
43         return ScilabTList;
44     }
45
46     bool                            isTList() override
47     {
48         return true;
49     }
50
51     virtual TList*                  clone() override;
52
53     bool                            exists(const std::wstring& _sKey);
54     InternalType*                   getField(const std::wstring& _sKey);
55     int                             getIndexFromString(const std::wstring& _sKey);
56     TList*                          set(const std::wstring& _sKey, InternalType* _pIT);
57     TList*                          set(const int _iIndex, InternalType* _pIT) override;
58
59     using List::extract; // to avoid this extract to hide extract in list
60     bool                            extract(const std::wstring& name, InternalType *& out) override;
61
62     virtual bool invoke(typed_list & in, optional_list & opt, int _iRetCount, typed_list & out, const ast::Exp & e) override;
63
64     bool isFieldExtractionOverloadable() const override
65     {
66         return true;
67     }
68
69     InternalType*                   extractStrings(const std::list<std::wstring>& _stFields);
70
71     /* return type as string ( double, int, cell, list, ... )*/
72     virtual std::wstring            getTypeStr() const override;
73     /* return type as short string ( s, i, ce, l, ... )*/
74     virtual std::wstring            getShortTypeStr() const override;
75
76     String*                         getFieldNames() const;
77
78     bool                            toString(std::wostringstream& ostr) override;
79
80     bool                            getMemory(long long* _piSize, long long* _piSizePlusType) override;
81
82 private :
83 };
84 }
85
86 #endif /* __TLIST_HXX__ */