Merge 6.0 into master
[scilab.git] / scilab / modules / ast / includes / types / struct.hxx
index 7f6c3fb..387e891 100644 (file)
@@ -2,11 +2,14 @@
 *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 *  Copyright (C) 2011 - DIGITEO - Antoine ELIAS
 *
-*  This file must be used under the terms of the CeCILL.
-*  This source file is licensed as described in the file COPYING, which
-*  you should have received as part of this distribution.  The terms
-*  are also available at
-*  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ * Copyright (C) 2012 - 2016 - Scilab Enterprises
+ *
+ * This file is hereby licensed under the terms of the GNU GPL v2.0,
+ * pursuant to article 5.3.4 of the CeCILL v.2.1.
+ * This file was originally licensed under the terms of the CeCILL v2.1,
+ * and continues to be available under such terms.
+ * For more information, see the COPYING file which you should have received
+ * along with this program.
 *
 */
 
@@ -30,7 +33,7 @@ public :
     ~Struct();
     Struct();
     Struct(int _iRows, int _iCols);
-    Struct(int _iDims, int* _piDims);
+    Struct(int _iDims, const int* _piDims);
 
 private :
     Struct(Struct* _oCellCopyMe);
@@ -64,27 +67,27 @@ public :
     ** Clone
     ** Create a new List and Copy all values.
     */
-    InternalType*               clone();
+    Struct*                     clone();
 
-    bool                        set(int _iRows, int _iCols, SingleStruct* _pIT);
-    bool                        set(int _iRows, int _iCols, const SingleStruct* _pIT);
-    bool                        set(int _iIndex, SingleStruct* _pIT);
-    bool                        set(int _iIndex, const SingleStruct* _pIT);
-    bool                        set(SingleStruct** _pIT);
+    Struct*                     set(int _iRows, int _iCols, SingleStruct* _pIT);
+    Struct*                     set(int _iRows, int _iCols, const SingleStruct* _pIT);
+    Struct*                     set(int _iIndex, SingleStruct* _pIT);
+    Struct*                     set(int _iIndex, const SingleStruct* _pIT);
+    Struct*                     set(SingleStruct** _pIT);
 
     bool                        operator==(const InternalType& it);
     bool                        operator!=(const InternalType& it);
 
     /* return type as string ( double, int, cell, list, ... )*/
-    virtual std::wstring        getTypeStr()
+    virtual std::wstring        getTypeStr() const
     {
-        return L"st";
+        return L"struct";
     }
     /* return type as short string ( s, i, ce, l, ... )*/
-    virtual std::wstring        getShortTypeStr()
+    virtual std::wstring        getShortTypeStr() const
     {
         return L"st";
-    };
+    }
     virtual bool                isContainer(void)
     {
         return true;
@@ -95,25 +98,25 @@ public :
         return false;
     }
 
-    virtual bool neg(InternalType *& out)
+    virtual bool neg(InternalType *& /*out*/)
     {
         return false;
     }
 
-    bool                        subMatrixToString(std::wostringstream& ostr, int* _piDims, int _iDims);
+    bool                        subMatrixToString(std::wostringstream& ostr, int* _piDims, int _iDims) override;
     String*                     getFieldNames();
     bool                        exists(const std::wstring& _sKey);
-    bool                        addField(const std::wstring& _sKey);
-    bool                        addFieldFront(const std::wstring& _sKey);
-    bool                        removeField(const std::wstring& _sKey);
+    Struct*                     addField(const std::wstring& _sKey);
+    Struct*                     addFieldFront(const std::wstring& _sKey);
+    Struct*                     removeField(const std::wstring& _sKey);
     bool                        toString(std::wostringstream& ostr);
-    List*                       extractFieldWithoutClone(std::wstring _wstField);
-    std::vector<InternalType*>  extractFields(std::vector<std::wstring> _wstFields);
-    std::vector<InternalType*>  extractFields(typed_list* _pArgs);
-    inline InternalType *       extractField(const std::wstring & wstField);
+    List*                       extractFieldWithoutClone(const std::wstring& _wstField);
+    typed_list                  extractFields(std::vector<std::wstring> _wstFields);
+    typed_list                  extractFields(typed_list* _pArgs);
+    InternalType *              extractField(const std::wstring& wstField);
 
-    bool                        resize(int* _piDims, int _iDims);
-    bool                        resize(int _iNewRows, int _iNewCols);
+    Struct*                     resize(int* _piDims, int _iDims);
+    Struct*                     resize(int _iNewRows, int _iNewCols);
 
     /*specials functions to disable clone operation during copydata*/
     InternalType*               insertWithoutClone(typed_list* _pArgs, InternalType* _pSource);
@@ -121,22 +124,26 @@ public :
     void                        setCloneInCopyValue(bool _val);
 
     using ArrayOf<SingleStruct *>::extract;
-    bool extract(const std::wstring & name, InternalType *& out);
+    bool extract(const std::wstring& name, InternalType *& out);
 
-    virtual bool invoke(typed_list & in, optional_list & opt, int _iRetCount, typed_list & out, ast::ConstVisitor & execFunc, const ast::CallExp & e);
+    virtual bool invoke(typed_list & in, optional_list & opt, int _iRetCount, typed_list & out, const ast::Exp & e) override;
 
     virtual int getInvokeNbOut()
     {
         return -1;
     }
 
+    bool                        getMemory(int* _piSize, int* _piSizePlusType);
+
 private :
     virtual SingleStruct*       getNullValue();
     virtual Struct*             createEmpty(int _iDims, int* _piDims, bool _bComplex = false);
+    virtual Struct*             createEmpty();
     virtual SingleStruct*       copyValue(SingleStruct* _pData);
     virtual void                deleteAll();
     virtual void                deleteImg();
     virtual SingleStruct**      allocData(int _iSize);
+    virtual void                deleteData(SingleStruct* data);
 
     bool                        m_bDisableCloneInCopyValue;