Revert "* Bug 14606 fixed: now `[names,mem]=who()` returns memory used by variables" 64/20664/1
Antoine ELIAS [Mon, 17 Dec 2018 15:30:59 +0000 (16:30 +0100)]
This reverts commit cbc3e3fe1cfff3197da84cfbf55b88ee63ad4365.

Change-Id: I0936b03b6423ea6f08587f28ac395c58208c9672

51 files changed:
scilab/CHANGES.md
scilab/modules/ast/includes/symbol/context.hxx
scilab/modules/ast/includes/symbol/variables.hxx
scilab/modules/ast/includes/types/alltypes.hxx
scilab/modules/ast/includes/types/arrayof.hxx
scilab/modules/ast/includes/types/cell.hxx
scilab/modules/ast/includes/types/graphichandle.hxx
scilab/modules/ast/includes/types/implicitlist.hxx
scilab/modules/ast/includes/types/internal.hxx
scilab/modules/ast/includes/types/library.hxx
scilab/modules/ast/includes/types/list.hxx
scilab/modules/ast/includes/types/macro.hxx
scilab/modules/ast/includes/types/macrofile.hxx
scilab/modules/ast/includes/types/mlist.hxx
scilab/modules/ast/includes/types/polynom.hxx
scilab/modules/ast/includes/types/singlestruct.hxx
scilab/modules/ast/includes/types/sparse.hxx
scilab/modules/ast/includes/types/string.hxx
scilab/modules/ast/includes/types/struct.hxx
scilab/modules/ast/includes/types/tlist.hxx
scilab/modules/ast/includes/types/user.hxx
scilab/modules/ast/src/cpp/symbol/context.cpp
scilab/modules/ast/src/cpp/symbol/variables.cpp
scilab/modules/ast/src/cpp/types/arrayof.cpp
scilab/modules/ast/src/cpp/types/cell.cpp
scilab/modules/ast/src/cpp/types/graphichandle.cpp
scilab/modules/ast/src/cpp/types/implicitlist.cpp
scilab/modules/ast/src/cpp/types/library.cpp
scilab/modules/ast/src/cpp/types/list.cpp
scilab/modules/ast/src/cpp/types/macro.cpp
scilab/modules/ast/src/cpp/types/macrofile.cpp
scilab/modules/ast/src/cpp/types/mlist.cpp
scilab/modules/ast/src/cpp/types/polynom.cpp
scilab/modules/ast/src/cpp/types/singlestruct.cpp
scilab/modules/ast/src/cpp/types/sparse.cpp
scilab/modules/ast/src/cpp/types/string.cpp
scilab/modules/ast/src/cpp/types/struct.cpp
scilab/modules/ast/src/cpp/types/tlist.cpp
scilab/modules/ast/src/cpp/types/types_tools.cpp
scilab/modules/core/help/en_US/variables/who.xml
scilab/modules/core/help/fr_FR/variables/who.xml
scilab/modules/core/help/ja_JP/variables/who.xml
scilab/modules/core/help/pt_BR/variables/who.xml
scilab/modules/core/help/ru_RU/variables/who.xml
scilab/modules/core/macros/whos.sci
scilab/modules/core/sci_gateway/cpp/sci_who.cpp
scilab/modules/core/tests/nonreg_tests/bug_14606.linux.dia.ref [deleted file]
scilab/modules/core/tests/nonreg_tests/bug_14606.macosx.dia.ref [deleted file]
scilab/modules/core/tests/nonreg_tests/bug_14606.tst [deleted file]
scilab/modules/core/tests/nonreg_tests/bug_14606.win.dia.ref [deleted file]
scilab/modules/mexlib/src/cpp/mexlib.cpp

index 0f99485..08b6511 100644 (file)
@@ -489,7 +489,6 @@ Known issues
 * [#14522](http://bugzilla.scilab.org/show_bug.cgi?id=14522): `or(%nan)` was %F.
 * [#14536](http://bugzilla.scilab.org/show_bug.cgi?id=14536): `xpoly` crashed Scilab when it is used in logarithmic mode for points with negative or null coordinates.
 * [#14539](http://bugzilla.scilab.org/show_bug.cgi?id=14539): It was not possible to build Scilab with hdf5 1.10.0.
-* [#14606](http://bugzilla.scilab.org/show_bug.cgi?id=14606): Memory used by variables returned by `[names,mem]=who()` was always zero.
 * [#14701](http://bugzilla.scilab.org/show_bug.cgi?id=14701): `poly(c,v,"coeff")` did not ignore null high order coefficients.
 * [#14704](http://bugzilla.scilab.org/show_bug.cgi?id=14704): In Scinotes, URL for the `https://`, `ftp://`, `ftps://`, and `file://` protocols were no longer hyperlinked.
 * [#14708](http://bugzilla.scilab.org/show_bug.cgi?id=14708): polynomial operators `+` `-` `/` `./` `*` `.*` no longer simplified null high orders coefficients from result
index 7f13e51..cf5dff1 100644 (file)
@@ -85,8 +85,8 @@ public:
     int getVarsName(std::list<std::wstring>& lst);
     int getMacrosName(std::list<std::wstring>& lst);
     int getFunctionsName(std::list<std::wstring>& lst);
-    int getVarsInfoForWho(std::list<std::pair<std::wstring,int>>& lst, bool bSorted);
-    int getGlobalInfoForWho(std::list<std::pair<std::wstring,int>>& lst, bool bSorted);
+    int getVarsNameForWho(std::list<std::wstring>& lst, bool sorted);
+    int getGlobalNameForWho(std::list<std::wstring>& lst, bool sorted);
     int getWhereIs(std::list<std::wstring>& lst, const std::wstring& _str);
     int getLibrariesList(std::list<std::wstring>& lst);
     int getVarsToVariableBrowser(std::list<Variable*>& lst);
index f361e39..f91e565 100644 (file)
@@ -155,8 +155,8 @@ struct Variables
     bool remove(const Symbol& _key, int _iLevel);
     int getMacrosName(std::list<std::wstring>& lst);
     int getVarsName(std::list<std::wstring>& lst);
-    bool getVarsInfoForWho(std::list<std::pair<std::wstring,int>>& lst, int* iVarLenMax, bool bSorted = false) const;
-    bool getGlobalInfoForWho(std::list<std::pair<std::wstring,int>>& lst, int* iVarLenMax, bool bSorted = false) const;
+    bool getVarsNameForWho(std::list<std::wstring>& lstVarName, int* iVarLenMax, bool bSorted = false) const;
+    bool getGlobalNameForWho(std::list<std::wstring>& lstVarName, int* iVarLenMax, bool bSorted = false) const;
     int getProtectedVarsName(std::list<std::wstring>& lstVarName) const;
     int getFunctionsName(std::list<std::wstring>& lst);
     int getFunctionList(std::list<Symbol>& lst, std::wstring _stModuleName, int _iLevel);
index 93de298..2290bde 100644 (file)
@@ -53,6 +53,5 @@
 #include "graphichandle.hxx"
 #include "void.hxx"
 #include "library.hxx"
-#include "user.hxx"
 
 #endif /* !ALL_TYPES_HXX */
index 84362c2..fe16ef8 100644 (file)
@@ -500,8 +500,6 @@ public :
 
     void getIndexes(int _iIndex, int* _piIndexes);
 
-    virtual bool getMemory(int* _piSize, int* _piSizePlusType);
-
     ArrayOf<T>* getColumnValues(int _iPos)
     {
         ArrayOf<T>* pOut = NULL;
index fd77016..1f32ace 100644 (file)
@@ -109,8 +109,6 @@ public :
 
     virtual bool transpose(InternalType *& out);
 
-    bool getMemory(int* _piSize, int* _piSizePlusType);
-
 private :
     virtual InternalType*   getNullValue();
     virtual Cell*           createEmpty(int _iDims, int* _piDims, bool _bComplex = false);
index 3f142de..cda1600 100644 (file)
@@ -82,8 +82,6 @@ public :
 
     virtual bool invoke(typed_list & in, optional_list & opt, int _iRetCount, typed_list & out, const ast::Exp & e) override ;
 
-    bool getMemory(int* _piSize, int* _piSizePlusType);
-
 protected :
     inline ScilabType          getType(void)
     {
index bed1897..9826962 100644 (file)
@@ -158,9 +158,6 @@ public :
     virtual bool transpose(InternalType *& out);
     virtual bool neg(InternalType *& out);
     virtual ast::Exp * getExp(const Location & loc);
-
-    bool getMemory(int* _piSize, int* _piSizePlusType);
-
 };
 }
 
index 1e2b93e..3dd10a7 100644 (file)
@@ -337,14 +337,6 @@ public :
     virtual bool hasInvokeOption() const;
     virtual int getInvokeNbIn();
     virtual int getInvokeNbOut();
-
-    virtual bool getMemory(int* _piSize, int* _piSizePlusType)
-    {
-        *_piSize = 0;
-        *_piSizePlusType = 0;
-        return false;
-    }
-
     /* return type as string ( double, int, cell, list, ... )*/
     virtual std::wstring            getTypeStr() const = 0;
     /* return type as short string ( s, i, ce, l, ... )*/
index d8e86d2..ce30705 100644 (file)
@@ -67,7 +67,6 @@ public :
     MacroFile* get(const std::wstring& _wstName);
     int getMacrosName(std::list<std::wstring>& lst);
     std::wstring getPath();
-    bool getMemory(int* _piSize, int* _piSizePlusType);
 private:
     std::wstring m_wstPath;
     typedef std::unordered_map<std::wstring, MacroFile*> MacroMap;
index 066c3a6..05d6c4c 100644 (file)
@@ -46,9 +46,7 @@ public :
     {
         return IdList;
     }
-    
-    bool                            getMemory(int* _piSize, int* _piSizePlusType);
-    
+
     /**
     ** append(InternalType *_typedValue)
     ** Append the given value to the end of the List
index 56c9b59..1b8d540 100644 (file)
@@ -66,8 +66,6 @@ public :
 
     ast::SeqExp*                getBody();
 
-    bool                        getMemory(int* _piSize, int* _piSizePlusType);
-
     /* return type as string ( double, int, cell, list, ... )*/
     virtual std::wstring        getTypeStr() const
     {
index 81d3fe1..3a24844 100644 (file)
@@ -58,8 +58,6 @@ public :
 
     void                    setLines(int _iFirstLine, int _iLastLine);
 
-    bool                    getMemory(int* _piSize, int* _piSizePlusType);
-
     /* return type as string ( double, int, cell, list, ... )*/
     virtual std::wstring    getTypeStr() const
     {
index d3821ea..22f68f9 100644 (file)
@@ -49,8 +49,6 @@ public :
         return false;
     }
 
-    bool                            getMemory(int* _piSize, int* _piSizePlusType);
-
     virtual bool invoke(typed_list & in, optional_list & opt, int _iRetCount, typed_list & out, const ast::Exp & e) override;
 
 protected :
index 8fbd774..522e3b8 100644 (file)
@@ -119,8 +119,6 @@ public :
         return false;
     }
 
-    bool getMemory(int* _piSize, int* _piSizePlusType);
-
     bool transpose(InternalType *& out);
     bool adjoint(InternalType *& out);
 
index 6e6fb1f..7fffc9b 100644 (file)
@@ -85,8 +85,6 @@ public :
         return L"sst";
     }
 
-    bool                                    getMemory(int* _piSize, int* _piSizePlusType);
-
 private :
 
     std::unordered_map<std::wstring, int> m_wstFields;
index 3c19d3e..df7193e 100644 (file)
@@ -80,8 +80,6 @@ struct EXTERN_AST Sparse : GenericType
         return true;
     }
     void finalize();
-    
-    bool getMemory(int *_piSize, int* _piSizePlusType);
 
     /*data management member function defined for compatibility with the Double API*/
     Sparse* set(int _iRows, int _iCols, double _dblReal, bool _bFinalize = true);
@@ -518,8 +516,6 @@ struct EXTERN_AST SparseBool : GenericType
     }
     void finalize();
 
-    bool getMemory(int *_piSize, int* _piSizePlusType);
-
     bool toString(std::wostringstream& ostr);
 
     /* Config management and GenericType methods overrides */
index c33dc2d..af810c9 100644 (file)
@@ -88,8 +88,6 @@ public :
         return false;
     }
 
-    bool getMemory(int* _piSize, int* _piSizePlusType);
-
     virtual bool neg(InternalType *& /*out*/)
     {
         return false;
index 735fab6..2767f5e 100644 (file)
@@ -133,8 +133,6 @@ public :
         return -1;
     }
 
-    bool                        getMemory(int* _piSize, int* _piSizePlusType);
-
 private :
     virtual SingleStruct*       getNullValue();
     virtual Struct*             createEmpty(int _iDims, int* _piDims, bool _bComplex = false);
index 36829cd..c4940a1 100644 (file)
@@ -76,8 +76,6 @@ public :
 
     bool                            toString(std::wostringstream& ostr);
 
-    bool                            getMemory(int* _piSize, int* _piSizePlusType);
-
 private :
 };
 }
index a94cc26..e1c0185 100644 (file)
@@ -167,13 +167,6 @@ public :
     }
 
     //load must be done by overload %yourtype_load and must returns a pointer on your UserType
-
-    bool getMemory(int* _piSize, int* _piSizePlusType)
-    {
-        *_piSize = sizeof(UserType);
-        *_piSizePlusType = *_piSize;
-        return true;
-    }
 };
 }
 
index 23ecf25..ce6914a 100644 (file)
@@ -308,17 +308,17 @@ int Context::getFunctionsName(std::list<std::wstring>& lst)
     return variables.getFunctionsName(lst);
 }
 
-int Context::getVarsInfoForWho(std::list<std::pair<std::wstring,int>>& lst, bool bSorted)
+int Context::getVarsNameForWho(std::list<std::wstring>& lst, bool bSorted)
 {
     int iZero = 0;
-    variables.getVarsInfoForWho(lst, &iZero, bSorted);
+    variables.getVarsNameForWho(lst, &iZero, bSorted);
     return static_cast<int>(lst.size());
 }
 
-int Context::getGlobalInfoForWho(std::list<std::pair<std::wstring,int>>& lst, bool bSorted)
+int Context::getGlobalNameForWho(std::list<std::wstring>& lst, bool bSorted)
 {
     int iZero = 0;
-    variables.getGlobalInfoForWho(lst, &iZero, bSorted);
+    variables.getGlobalNameForWho(lst, &iZero, bSorted);
     return static_cast<int>(lst.size());
 }
 
@@ -499,13 +499,13 @@ void Context::removeGlobalAll()
 
 void Context::print(std::wostream& ostr, bool sorted) const
 {
-    std::list<std::pair<std::wstring,int>> lstVar;
-    std::list<std::pair<std::wstring,int>> lstGlobal;
+    std::list<std::wstring> lstVar;
+    std::list<std::wstring> lstGlobal;
     int iVarLenMax = 10; // initialise to the minimal value of padding
     int iGlobalLenMax = 10; // initialise to the minimal value of padding
-    variables.getVarsInfoForWho(lstVar, &iVarLenMax);
-    variables.getGlobalInfoForWho(lstGlobal, &iGlobalLenMax);
-    //libraries.getVarsNameForWho(&lstVar, &iVarLenMax);
+    variables.getVarsNameForWho(lstVar, &iVarLenMax);
+    variables.getGlobalNameForWho(lstGlobal, &iGlobalLenMax);
+    libraries.getVarsNameForWho(&lstVar, &iVarLenMax);
 
     if (sorted)
     {
@@ -513,7 +513,6 @@ void Context::print(std::wostream& ostr, bool sorted) const
         lstGlobal.sort();
     }
 
-
 #define strSize 64
     wchar_t wcsVarElem[strSize];
     wchar_t wcsVarVariable[strSize];
@@ -534,7 +533,7 @@ void Context::print(std::wostream& ostr, bool sorted) const
 #endif
 
     ostr << _W("Your variables are:") << std::endl << std::endl;
-    std::list<std::pair<std::wstring,int>>::const_iterator it = lstVar.begin();
+    std::list<std::wstring>::const_iterator it = lstVar.begin();
     int iWidth = ConfigVariable::getConsoleWidth();
     int iCurrentWidth = 0;
     for (int i = 1; it != lstVar.end(); ++it, i++)
@@ -544,7 +543,7 @@ void Context::print(std::wostream& ostr, bool sorted) const
             ostr << std::endl;
             iCurrentWidth = 0;
         }
-        ostr << std::setw(iVarLenMax + 1) << it->first;
+        ostr << std::setw(iVarLenMax + 1) << *it;
         iCurrentWidth += iVarLenMax + 1;
     }
 
@@ -558,7 +557,7 @@ void Context::print(std::wostream& ostr, bool sorted) const
     it = lstGlobal.begin();
     for (int i = 1; it != lstGlobal.end(); ++it, i++)
     {
-        ostr << std::setw(iGlobalLenMax + 1) << it->first;
+        ostr << std::setw(iGlobalLenMax + 1) << *it;
         if (i % 4 == 0)
         {
             ostr << std::endl;
index 9ad9c7c..d83addd 100644 (file)
@@ -18,7 +18,6 @@
 #include "configvariable.hxx"
 #include "macro.hxx"
 #include "macrofile.hxx"
-#include "types_tools.hxx"
 
 extern "C"
 {
@@ -302,54 +301,45 @@ int Variables::getVarsName(std::list<std::wstring>& lst)
     return static_cast<int>(lst.size());
 }
 
-bool Variables::getVarsInfoForWho(std::list<std::pair<std::wstring, int>>& lstVar, int* iVarLenMax, bool bSorted) const
+bool Variables::getVarsNameForWho(std::list<std::wstring>& lstVarName, int* iVarLenMax, bool bSorted) const
 {
     for (auto it : vars)
     {
+        std::wstring wstrVarName(it.first.getName().c_str());
         if (it.second->empty() == false)
         {
             types::InternalType* pIT = it.second->top()->m_pIT;
             if (pIT && pIT->isFunction() == false)
             {
-                std::wstring wstrVarName(it.first.getName().c_str());
+                lstVarName.push_back(wstrVarName);
                 *iVarLenMax = std::max(*iVarLenMax, (int)wstrVarName.size());
-                int iSize, iSizePlusType;
-                if (pIT->getMemory(&iSize, &iSizePlusType))
-                {
-                    lstVar.emplace_back(wstrVarName, iSizePlusType);
-                }
             }
         }
     }
 
     if (bSorted)
     {
-        lstVar.sort();
+        lstVarName.sort();
     }
 
     return true;
 }
 
-bool Variables::getGlobalInfoForWho(std::list<std::pair<std::wstring, int>>& lstVar, int* iVarLenMax, bool bSorted) const
+bool Variables::getGlobalNameForWho(std::list<std::wstring>& lstVarName, int* iVarLenMax, bool bSorted) const
 {
     for (auto it : vars)
     {
         if (it.second->isGlobal())
         {
             std::wstring wstrVarName(it.first.getName().c_str());
+            lstVarName.push_back(wstrVarName);
             *iVarLenMax = std::max(*iVarLenMax, (int)wstrVarName.size());
-            int iSize, iSizePlusType;
-            types::InternalType* pIT = it.second->empty() ? it.second->getGlobalValue() : it.second->top()->m_pIT;
-            if(pIT->getMemory(&iSize, &iSizePlusType))
-            {
-                lstVar.emplace_back(wstrVarName, iSizePlusType);
-            }
         }
     }
 
     if (bSorted)
     {
-        lstVar.sort();
+        lstVarName.sort();
     }
 
     return true;
index ee296d5..b7b5d10 100644 (file)
@@ -53,14 +53,6 @@ GenericType* ArrayOf<T>::createEmpty()
 }
 
 template <typename T>
-bool ArrayOf<T>::getMemory(int* _piSize, int* _piSizePlusType)
-{
-    *_piSize = getSize() * sizeof(T) * (isComplex() ? 2 : 1);
-    *_piSizePlusType = *_piSize + sizeof(*this);
-    return true;
-}
-
-template <typename T>
 void ArrayOf<T>::getIndexes(int _iIndex, int* _piIndexes)
 {
     getIndexesWithDims(_iIndex, _piIndexes, m_piDims, m_iDims);
index 6c3317c..1ee2d04 100644 (file)
@@ -27,7 +27,6 @@
 #include "core_math.h"
 #include "list.hxx"
 #include "configvariable.hxx"
-#include "types_tools.hxx"
 
 namespace types
 {
@@ -51,24 +50,6 @@ Cell::Cell(int _iDims, const int* _piDims, InternalType** data)
     createCell(_iDims, _piDims, data);
 }
 
-bool Cell::getMemory(int* _piSize, int* _piSizePlusType)
-{
-    *_piSize = 0;
-    *_piSizePlusType = 0;
-    InternalType** p = get();
-    for (int i = 0; i < getSize(); i++)
-    {
-        int piS, piSPT;
-        if (p[i]->getMemory(&piS, &piSPT))
-        {
-            *_piSize += piS;
-            *_piSizePlusType += piSPT;
-        }
-    }
-    *_piSizePlusType += sizeof(Cell);
-    return true;
-}
-
 void Cell::createCell(int _iDims, const int* _piDims, InternalType** data)
 {
     InternalType** pIT = NULL;
index 4ffce30..538c145 100644 (file)
@@ -206,10 +206,4 @@ bool GraphicHandle::transpose(InternalType *& out)
     return type_traits::transpose(*this, out);
 }
 
-bool GraphicHandle::getMemory(int* _piSize, int* _piSizePlusType)
-{
-    *_piSize = sizeof(long long)*getSize();
-    *_piSizePlusType = *_piSize + sizeof(GraphicHandle);
-    return true;
-}
 }
index b15bf3a..02707ad 100644 (file)
@@ -720,13 +720,6 @@ bool ImplicitList::isTrue()
     return false;
 }
 
-bool ImplicitList::getMemory(int* _piSize, int* _piSizePlusType)
-{
-    *_piSize = sizeof(ImplicitList);
-    *_piSizePlusType = *_piSize;
-    return true;
-}
-
 }
 
 std::wstring printInLinePoly(types::SinglePoly* _pPoly, std::wstring _stVar)
index b129a28..1e929b7 100644 (file)
@@ -133,16 +133,4 @@ std::wstring Library::getPath()
 {
     return m_wstPath;
 }
-
-bool Library::getMemory(int* _piSize, int* _piSizePlusType)
-{
-    *_piSize = 0;
-    for (auto macro : m_macros)
-    {
-        *_piSize += macro.first.length()*sizeof(wchar_t) + sizeof(macro);
-    }
-
-    *_piSizePlusType = *_piSize + sizeof(Library);
-    return true;
-}
 }
index 1e2ae0a..3cc55de 100644 (file)
@@ -86,24 +86,6 @@ std::vector<InternalType *> *List::getData()
     return m_plData;
 }
 
-bool List::getMemory(int* _piSize, int* _piSizePlusType)
-{
-    *_piSize = 0;
-    *_piSizePlusType = 0;
-    for (auto pData : *m_plData)
-    {
-        int piS, piSPT;
-        if (pData->getMemory(&piS, &piSPT))
-        {
-            *_piSize += piS;
-            *_piSizePlusType += piSPT;
-        }
-    }
-
-    *_piSizePlusType += sizeof(List);
-    return true;
-}
-
 /**
 ** size_get
 ** Return the number of elements in list
index bf81b6b..5e15652 100644 (file)
@@ -456,17 +456,6 @@ int Macro::getNbOutputArgument(void)
     return (int)m_outputArgs->size();
 }
 
-bool Macro::getMemory(int* _piSize, int* _piSizePlusType)
-{
-    ast::SerializeVisitor serialMacro(m_body);
-    unsigned char* macroSerial = serialMacro.serialize(false, false);
-    unsigned int macroSize = *((unsigned int*)macroSerial);
-
-    *_piSize = macroSize;
-    *_piSizePlusType = *_piSize + sizeof(Macro);
-    return true;
-}
-
 bool Macro::operator==(const InternalType& it)
 {
     if (const_cast<InternalType &>(it).isMacro() == false)
index 37fd32d..53d9a14 100644 (file)
@@ -208,11 +208,6 @@ void MacroFile::setLines(int _iFirstLine, int _iLastLine)
     getMacro()->setLines(_iFirstLine, _iLastLine);
 }
 
-bool MacroFile::getMemory(int* _piSize, int* _piSizePlusType)
-{
-    return this->getMacro()->getMemory(_piSize, _piSizePlusType);
-}
-
 bool MacroFile::operator==(const InternalType& it)
 {
     if (const_cast<InternalType &>(it).isMacro() == false && const_cast<InternalType &>(it).isMacroFile() == false)
index 9c53cd4..0cb50be 100644 (file)
@@ -19,7 +19,6 @@
 #include "overload.hxx"
 #include "configvariable.hxx"
 #include "exp.hxx"
-#include "types_tools.hxx"
 
 #ifndef NDEBUG
 #include "inspector.hxx"
 
 namespace types
 {
-bool MList::getMemory(int* _piSize, int* _piSizePlusType)
-{
-    *_piSize = 0;
-    *_piSizePlusType = 0;
-    for (auto pData : *m_plData)
-    {
-        int piS, piSPT;
-        if (pData->getMemory(&piS, &piSPT))
-        {
-            *_piSize += piS;
-            *_piSizePlusType += piSPT;
-        }
-    }
-
-    *_piSizePlusType += sizeof(MList);
-    return true;
-}
-
 bool MList::invoke(typed_list & in, optional_list & /*opt*/, int _iRetCount, typed_list & out, const ast::Exp & e)
 {
     if (in.size() == 0)
index 380f02e..1c6c05a 100644 (file)
@@ -63,20 +63,6 @@ Polynom::~Polynom()
 #endif
 }
 
-bool Polynom::getMemory(int* _piSize, int* _piSizePlusType)
-{
-    *_piSize = 0;
-    for (int i = 0; i<getSize(); i++)
-    {
-        *_piSize += (get(i)->getRank()+1)*sizeof(double);
-    }
-    
-    *_piSize = *_piSize * (isComplex() ? 2 : 1);
-    *_piSizePlusType = *_piSize + getSize()*sizeof(SinglePoly *) + sizeof(*this);
-    return true;
-}
-
-
 void Polynom::createPoly(const std::wstring& _szVarName, int _iDims, const int* _piDims, const int *_piRank)
 {
     m_szVarName = _szVarName;
index 80ea671..5665123 100644 (file)
@@ -20,7 +20,6 @@
 #include "double.hxx"
 #include "localization.hxx"
 #include "scilabWrite.hxx"
-#include "types_tools.hxx"
 
 namespace types
 {
@@ -62,24 +61,6 @@ std::vector<InternalType *> & SingleStruct::getData()
     return m_Data;
 }
 
-bool SingleStruct::getMemory(int* _piSize, int* _piSizePlusType)
-{
-    *_piSize = 0;
-    *_piSizePlusType = 0;
-    for (auto pData : m_Data)
-    {
-        int piS, piSPT;
-        if (pData->getMemory(&piS, &piSPT))
-        {
-            *_piSize += piS;
-            *_piSizePlusType += piSPT;
-        }
-    }
-
-    *_piSizePlusType += sizeof(SingleStruct);
-    return true;
-}
-
 std::unordered_map<std::wstring, int> & SingleStruct::getFields()
 {
     return m_wstFields;
index 321ae82..2c22f10 100644 (file)
@@ -519,14 +519,6 @@ Sparse::Sparse(int rows, int cols, int nonzeros, int* inner, int* outer, double*
     //finalize();
 }
 
-
-bool Sparse::getMemory(int *_piSize, int* _piSizePlusType)
-{
-    *_piSize = nonZeros() * sizeof(double) * (isComplex() ? 2 : 1);
-    *_piSizePlusType = *_piSize + sizeof(*this);
-    return true;
-}
-
 template<typename DestIter>
 void Sparse::create(int rows, int cols, Double SPARSE_CONST& src, DestIter o, std::size_t n)
 {
@@ -3229,13 +3221,6 @@ SparseBool::SparseBool(int rows, int cols, int trues, int* inner, int* outer)
     matrixBool->resizeNonZeros(trues);
 }
 
-bool SparseBool::getMemory(int *_piSize, int* _piSizePlusType)
-{
-    *_piSize = nbTrue() * sizeof(bool);
-    *_piSizePlusType = *_piSize + sizeof(*this);
-    return true;
-}
-
 void SparseBool::create2(int rows, int cols, Bool SPARSE_CONST& src, Double SPARSE_CONST& idx)
 {
     int nnz = src.getSize();
index 63baf47..569cffe 100644 (file)
@@ -102,17 +102,6 @@ String::String(int _iRows, int _iCols, wchar_t const* const* _pstData)
 #endif
 }
 
-bool String::getMemory(int* _piSize, int* _piSizePlusType)
-{
-    *_piSize = getSize()*sizeof(wchar_t*);
-    for (int i = 0; i < getSize(); i++)
-    {
-        *_piSize += wcslen(get(i))*sizeof(wchar_t);
-    }
-    *_piSizePlusType = *_piSize + sizeof(*this);
-    return true;
-}
-
 String* String::clone()
 {
     String *pstClone = new String(getDims(), getDimsArray());
index e810390..e17049e 100644 (file)
@@ -106,25 +106,6 @@ Struct::Struct(Struct *_oStructCopyMe)
 #endif
 }
 
-bool Struct::getMemory(int* _piSize, int* _piSizePlusType)
-{
-    *_piSize = 0;
-    *_piSizePlusType = 0;
-    SingleStruct** p = get();
-    for (int i = 0; i < getSize(); i++)
-    {
-        int piS, piSPT;
-        if (p[i]->getMemory(&piS, &piSPT))
-        {
-            *_piSize += piS;
-            *_piSizePlusType += piSPT;
-        }
-    }
-
-    *_piSizePlusType += sizeof(Struct);
-    return true;
-}
-
 Struct* Struct::clone()
 {
     return new Struct(this);
index 0b98744..6677245 100644 (file)
@@ -55,24 +55,6 @@ TList::~TList()
 #endif
 }
 
-bool TList::getMemory(int* _piSize, int* _piSizePlusType)
-{
-    *_piSize = 0;
-    *_piSizePlusType = 0;
-    for (auto pData : *m_plData)
-    {
-        int piS, piSPT;
-        if (pData->getMemory(&piS, &piSPT))
-        {
-            *_piSize += piS;
-            *_piSizePlusType += piSPT;
-        }
-    }
-
-    *_piSizePlusType += sizeof(TList);
-    return true;
-}
-
 /**
 ** Clone
 ** Create a new List and Copy all values.
index 7219d38..b10a1e4 100644 (file)
@@ -26,7 +26,6 @@ extern "C"
 #include "elem_common.h"
 #include "os_string.h"
 #include "more.h"
-#include "sciprint.h"
 }
 
 namespace types
@@ -144,7 +143,7 @@ bool getArgsDims(typed_list* _pArgsIn, std::vector<int>& dims)
                 return false;
             }
 
-            int size = (int)pIL->getSize();
+            int size = pIL->getSize();
             if (size <= 0)
             {
                 return false;
@@ -156,11 +155,11 @@ bool getArgsDims(typed_list* _pArgsIn, std::vector<int>& dims)
             if (step > 0)
             {
                 double real_end = start + step * (size - 1);
-                dims.push_back((int)real_end);
+                dims.push_back(real_end);
             }
             else if (step < 0)
             {
-                dims.push_back((int)start);
+                dims.push_back(start);
             }
             else
             {
@@ -290,7 +289,7 @@ bool getScalarImplicitIndex(GenericType* _pRef, typed_list* _pArgsIn, std::vecto
         double step = evalute(pIL->getStep(), sizeRef);
         double end = evalute(pIL->getEnd(), sizeRef);
 
-        if (start < 1 && step > 0 || end < 1 && step < 0)
+        if ((start < 1 && step > 0) || (end < 1 & step < 0))
         {
             wchar_t szError[bsiz];
             os_swprintf(szError, bsiz, _W("Invalid index.\n").c_str());
@@ -378,7 +377,7 @@ bool getImplicitIndex(GenericType* _pRef, typed_list* _pArgsIn, std::vector<int>
                 double step = evalute(pIL->getStep(), sizeRef);
                 double end = evalute(pIL->getEnd(), sizeRef);
 
-                int size = (int)((end - start) / step + 1);
+                int size = (end - start) / step + 1;
                 if (size <= 0)
                 {
                     //manage implicit that return []
@@ -388,7 +387,7 @@ bool getImplicitIndex(GenericType* _pRef, typed_list* _pArgsIn, std::vector<int>
 
                 std::vector<int> idx(size);
 
-                if (start < 1 && step > 0 || end < 1 && step < 0)
+                if ((start < 1 && step > 0) || (end < 1 & step < 0))
                 {
                     wchar_t szError[bsiz];
                     os_swprintf(szError, bsiz, _W("Invalid index.\n").c_str());
@@ -618,7 +617,7 @@ int checkIndexesArguments(InternalType* _pRef, typed_list* _pArgsIn, typed_list*
                 double step = getIndex(pIL->getStep());
                 double end = getIndex(pIL->getEnd());
 
-                pCurrentArg = (start < 1 && step > 0 || end < 1 && step < 0) ? NULL : pIL->extractFullMatrix()->getAs<Double>();
+                pCurrentArg = ((start < 1 && step > 0) || (end < 1 & step < 0)) ? NULL : pIL->extractFullMatrix()->getAs<Double>();
             }
 
             pIL->killMe();
index 7aa06be..cafaa9c 100644 (file)
         </para>
         <para>
             <code>who('local')</code> or <code>who('get')</code> returns current
-            variable names and memory used in bytes.
+            variable names and memory used in double precision words.
         </para>
         <para>
             <code>who('global')</code> returns global variable names and memory
-            used in bytes.
+            used in double precision words.
         </para>
         <para>
             <code>who('sorted')</code> displays in alphabetical order all variables.
index 4fc257c..ca9263f 100644 (file)
         <para>
             <literal>who('local')</literal> ou <literal>who('get')</literal>
             renvoie les noms des variables courantes et l'occupation mémoire en
-            nombre d'octets.
+            nombre de flottants double précision.
         </para>
         <para>
             <literal>who('global')</literal> renvoie les noms des variables
             <literal>globales</literal> courantes et l'occupation mémoire en nombre
-            d'octets.
+            de flottants double précision.
         </para>
         <para>
             <literal>who('sorted')</literal> affiche les noms des variables courantes triees par ordre alphabetique.
index 4195e08..50c7b58 100644 (file)
         </para>
         <para>
             <code>who('local')</code> または <code>who('get')</code> は,
-            現在の変数の名前と使用されているメモリをバイト単位で返します.
+            カレントの変数名と倍精度ワード単位の使用メモリを返します.
         </para>
         <para>
-            <code>who('global')</code> は,
-            グローバル変数の名前と使用されるメモリをバイト単位で返します.
+            <code>who('global')</code> は,グローバル変数の名前と
+            倍精度ワード単位の使用メモリを返します.
         </para>
         <para>
             <code>who('sorted')</code> は,
index b14b731..1a1d375 100644 (file)
         </para>
         <para>
             <literal>who('local')</literal> ou <literal>who('get')</literal>
-            retorna os nomes das variáveis atuais e a memória usada em bytes.
+            retorna os nomes de variáveis correntes e a memória utilizada em palavras
+            de dupla precisão.
         </para>
         <para>
-            <literal>who('global')</literal>retorna os nomes de variáveis globais
-             e a memória utilizada em bytes.
+            <literal>who('global')</literal> retorna os nomes de variáveis
+            globais e a memória utilizada em palavras de dupla precisão.
         </para>
         <para>
             <literal>who('sorted')</literal> exibe todas as variáveis em ordem
index c83765b..d5b939c 100644 (file)
             <code>who()</code> выводит на экран имена текущих переменных.
         </para>
         <para>
-            <code>who('local')</code> или <code>who('get')</code> возвращает имена текущих
-            переменных и объем памяти, используемый в количестве байтов.
+            <code>who('local')</code> или <code>who('get')</code> возвращает имена
+            текущих переменных и величину используемой памяти в количестве слов удвоенной точности.
         </para>
         <para>
-            <code>who('global')</code> возвращает имена глобальных переменных и объем памяти,
-             используемый в количестве байтов.
+            <code>who('global')</code> возвращает имена глобальных переменных и величину
+            используемой памяти в количестве слов удвоенной точности.
         </para>
         <para>
             <code>who('sorted')</code> выводит на экран все переменные в алфавитном
index c2a182d..3244f77 100644 (file)
@@ -21,7 +21,8 @@ function whos(%_opt,%_sel)
     // Gathering locals + globals
     %_nams_all = [%_nams ; %_nams_global];
     %_vol_all  = [%_vol ; %_vol_global];
-    %_LG_all   = [asciimat(76*ones(%_vol(:))) ; asciimat(71*ones(%_vol_global(:)))];
+    %_LG_all   = [emptystr(size(%_vol,1),1)+"L" ; ..
+    emptystr(size(%_vol_global,1),1)+"G"];
 
     // Sorting the whole set w/o.r.t. the case
     [trash, k] = gsort(convstr(%_nams_all,"l"),"g","i");
@@ -33,16 +34,16 @@ function whos(%_opt,%_sel)
     // getSizeAsString, writeWhosLine, doDisplayWhosLine defined only in whos
     // to remove some tmp variables defined on stack
     //=============================================================================
-    function sz = getSizeAsString(_varname, _type, _typn)
+    function sz = getSizeAsString(_varname, _type)
         sz = " ";
         if _type == 0 then
             sz = "?";
-        elseif _type <= 10 | _type == 15 | _typn== 'st' | _typn== 'ce' then
+        elseif _type <= 10 then
             execstr("sz = size(" + _varname + ");")
         elseif _type == 17 | _type == 16 then
             execstr("%_tt = getfield(1," + _varname + ")");
             %_tt = %_tt(1);
-            if execstr("sz = %" + %_tt + "_size(" + _varname + ")", "errcatch") <> 0 then
+            if execstr("sz = %" + %_tt + "size(" + _varname + ")", "errcatch") <> 0 then
                 sz = "?";
             end
         end
@@ -123,11 +124,11 @@ function whos(%_opt,%_sel)
         b_ok = doDisplayWhosLine(%_rhs, %_opt, %_nams_all(%_k), %_typn, %_sel);
 
         if b_ok then
-            %_sz = getSizeAsString(%_nams_all(%_k), %_typ, %_typn);
+            %_sz = getSizeAsString(%_nams_all(%_k), %_typ);
             if %_LG_all(%_k) == "G"
                 %_typn = %_typn + "*";
             end
-            writeWhosLine(%_nams_all(%_k), %_typn, %_sz, %_vol_all(%_k));
+            writeWhosLine(%_nams_all(%_k), %_typn, %_sz, %_vol_all(%_k)*8);
         end
         if  %_LG_all(%_k) == "G" then
             execstr("clear " + %_nams_all(%_k));
index 3b3645d..c6a8d34 100644 (file)
@@ -26,14 +26,15 @@ extern "C"
 {
 #include "Scierror.h"
 #include "localization.h"
-#include "sciprint.h"
 }
 
 types::Function::ReturnValue sci_who(types::typed_list& in, int _iRetCount, types::typed_list& out)
 {
     std::wstring wcsWhat(L"");
     bool bSorted = false;
-    std::list<std::pair<std::wstring,int>> lstVarWithSize;
+    types::String* pStrOut = NULL;
+    types::Double* pDblOut = NULL;
+    std::list<std::wstring> lstVar;
     int size = 0;
 
     if (in.size() > 2)
@@ -105,11 +106,11 @@ types::Function::ReturnValue sci_who(types::typed_list& in, int _iRetCount, type
 
     if (wcsWhat == L"local" || wcsWhat == L"get")
     {
-        size = symbol::Context::getInstance()->getVarsInfoForWho(lstVarWithSize, bSorted);
+        size = symbol::Context::getInstance()->getVarsNameForWho(lstVar, bSorted);
     }
     else if (wcsWhat == L"global")
     {
-        size = symbol::Context::getInstance()->getGlobalInfoForWho(lstVarWithSize, bSorted);
+        size = symbol::Context::getInstance()->getGlobalNameForWho(lstVar, bSorted);
     }
     else if (bSorted == false && wcsWhat == L"sorted")
     {
@@ -134,7 +135,7 @@ types::Function::ReturnValue sci_who(types::typed_list& in, int _iRetCount, type
         return types::Function::Error;
     }
 
-    if (lstVarWithSize.empty())
+    if (lstVar.empty())
     {
         out.push_back(types::Double::Empty());
         if (_iRetCount == 2)
@@ -145,22 +146,19 @@ types::Function::ReturnValue sci_who(types::typed_list& in, int _iRetCount, type
         return types::Function::OK;
     }
 
-    types::String* pStrOut = new types::String(size, 1);
+    pStrOut = new types::String(size, 1);
     int i = 0;
-    for (auto it : lstVarWithSize)
+    for (auto it : lstVar)
     {
-        pStrOut->set(i++, it.first.c_str());
+        pStrOut->set(i++, it.c_str());
     }
+
     out.push_back(pStrOut);
 
     if (_iRetCount == 2)
     {
-        types::Double* pDblOut = new types::Double(size, 1);
-        i = 0;
-        for (auto it : lstVarWithSize)
-        {
-            pDblOut->set(i++, it.second);
-        }
+        pDblOut = new types::Double(pStrOut->getDims(), pStrOut->getDimsArray());
+        memset(pDblOut->get(), 0x00, pDblOut->getSize() * sizeof(double));
         out.push_back(pDblOut);
     }
 
diff --git a/scilab/modules/core/tests/nonreg_tests/bug_14606.linux.dia.ref b/scilab/modules/core/tests/nonreg_tests/bug_14606.linux.dia.ref
deleted file mode 100644 (file)
index 1227535..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-// =============================================================================
-// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
-// Copyright (C) 2018 - Stéphane Mottelet
-//
-//  This file is distributed under the same license as the Scilab package.
-// =============================================================================
-//
-// <-- TEST WITH GRAPHIC -->
-// <-- ENGLISH IMPOSED -->
-//
-// <-- Non-regression test for bug 14606 -->
-//
-// <-- Bugzilla URL -->
-// http://bugzilla.scilab.org/show_bug.cgi?id=14606
-//
-// <-- Short Description -->
-// "who" doesn"t return memory size
-bug_14606_double = ones(10,10);
-bug_14606_uint8 = uint8(ones(10,10));
-bug_14606_uint16 = uint16(ones(10,10));
-bug_14606_uint32 = uint32(ones(10,10));
-bug_14606_uint64 = uint64(ones(10,10));
-bug_14606_int8 = int8(ones(10,10));
-bug_14606_int16 = int16(ones(10,10));
-bug_14606_int32 = int32(ones(10,10));
-bug_14606_int64 = int64(ones(10,10));
-bug_14606_bool = eye(10,10)==1;
-bug_14606_poly = [%s 1+%s;1 1];
-bug_14606_rat = 1./[%s 1+%s;1 1];
-bug_14606_list = list(bug_14606_double, bug_14606_uint64, bug_14606_poly);
-deff("out=%tlist_14606_size(x)","out=%nan");
-deff("out=%mlist_14606_size(x)","out=%nan");
-bug_14606_tlist = tlist(["tlist_14606","field1","field2"], 1:3, ["Scilab" "is" "not" "Basile"]);
-bug_14606_mlist = mlist(["mlist_14606","field1","field2"], 1:3, ["Scilab" "is" "not" "Basile"]);
-bug_14606_syslin=syslin('c',[0,1;0,0],[1;1],[1,1]);
-bug_14606_sparse= sparse([1 1;2 2;3 3],1:3,[3 3]);
-bug_14606_sparseboolean= sparse([1 1;2 2;3 3],1:3,[3 3]) > 1;
-bug_14606_struct=struct("list1",list("testlist",1,2), "matrix1", [1 2 3; 4 5 6], "boolean1", %t);
-bug_14606_struct=struct("list1",list("testlist",1,2), "matrix1", [1 2 3; 4 5 6], "boolean1", %t);
-bug_14606_cell={bug_14606_struct, bug_14606_sparseboolean, bug_14606_poly};
-bug_14606_handle=[sdf(),sda()];
-bug_14606_pointer=lufact(bug_14606_sparse);
-deff("out=bug_14606_macro(x,y)","out=x+y");
-libdir=TMPDIR+"/bug_14606";
-mkdir(libdir);
-mputl(["function out=bug_14606_macro_file(x,y)","out=x+y","endfunction"],libdir+"/bug_14606_macro_file.sci");
-genlib("bug_14606_lib",libdir,%f,%t);
--- Creation of [bug_14606_lib] (Macros) --
-genlib: Processing file: bug_14606_macro_file.sci
-clear bug_14606_lib
-bug_14606_lib=lib(libdir); // output variable is compulsory otherwise Scilab crashes after next line
-bug_14606_macro_file(1,1);
-whos -name bug_14606
-Name                     Type           Size           Bytes        
-bug_14606_bool           boolean        10x10          608          
-bug_14606_cell           ce             1x3            2414         
-bug_14606_double         constant       10x10          1008         
-bug_14606_handle         handle         1x2            224          
-bug_14606_int16          int16          10x10          408          
-bug_14606_int32          int32          10x10          608          
-bug_14606_int64          int64          10x10          1008         
-bug_14606_int8           int8           10x10          308          
-bug_14606_lib            library                       400          
-bug_14606_list           list           3              2536         
-bug_14606_macro          function                      490          
-bug_14606_macro_file     function                      490          
-bug_14606_mlist          mlist_14606    Nan            1064         
-bug_14606_pointer        pointer                       192          
-bug_14606_poly           polynomial     2x2            320          
-bug_14606_rat            rational       2x2            1308         
-bug_14606_sparse         sparse         3x3            232          
-bug_14606_sparseboolean  boolean sparse 3x3            202          
-bug_14606_struct         st             1x1            1684         
-bug_14606_syslin         state-space    1x1            1856         
-bug_14606_tlist          tlist_14606    Nan            1064         
-bug_14606_uint16         uint16         10x10          408          
-bug_14606_uint32         uint32         10x10          608          
-bug_14606_uint64         uint64         10x10          1008         
-bug_14606_uint8          uint8          10x10          308          
-ludel(bug_14606_pointer)
-bug_14606_var=zeros(10,10);
-global bug_14606_var
-whos -name bug_14606_var
-Name                     Type           Size           Bytes        
-bug_14606_var            constant*      10x10          1008         
-clear bug_14606_var
-whos -name bug_14606_var
-Name                     Type           Size           Bytes        
diff --git a/scilab/modules/core/tests/nonreg_tests/bug_14606.macosx.dia.ref b/scilab/modules/core/tests/nonreg_tests/bug_14606.macosx.dia.ref
deleted file mode 100644 (file)
index 19a10c7..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-// =============================================================================
-// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
-// Copyright (C) 2018 - Stéphane Mottelet
-//
-//  This file is distributed under the same license as the Scilab package.
-// =============================================================================
-//
-// <-- TEST WITH GRAPHIC -->
-// <-- ENGLISH IMPOSED -->
-//
-// <-- Non-regression test for bug 14606 -->
-//
-// <-- Bugzilla URL -->
-// http://bugzilla.scilab.org/show_bug.cgi?id=14606
-//
-// <-- Short Description -->
-// "who" doesn"t return memory size
-bug_14606_double = ones(10,10);
-bug_14606_uint8 = uint8(ones(10,10));
-bug_14606_uint16 = uint16(ones(10,10));
-bug_14606_uint32 = uint32(ones(10,10));
-bug_14606_uint64 = uint64(ones(10,10));
-bug_14606_int8 = int8(ones(10,10));
-bug_14606_int16 = int16(ones(10,10));
-bug_14606_int32 = int32(ones(10,10));
-bug_14606_int64 = int64(ones(10,10));
-bug_14606_bool = eye(10,10)==1;
-bug_14606_poly = [%s 1+%s;1 1];
-bug_14606_rat = 1./[%s 1+%s;1 1];
-bug_14606_list = list(bug_14606_double, bug_14606_uint64, bug_14606_poly);
-deff("out=%tlist_14606_size(x)","out=%nan");
-deff("out=%mlist_14606_size(x)","out=%nan");
-bug_14606_tlist = tlist(["tlist_14606","field1","field2"], 1:3, ["Scilab" "is" "not" "Basile"]);
-bug_14606_mlist = mlist(["mlist_14606","field1","field2"], 1:3, ["Scilab" "is" "not" "Basile"]);
-bug_14606_syslin=syslin('c',[0,1;0,0],[1;1],[1,1]);
-bug_14606_sparse= sparse([1 1;2 2;3 3],1:3,[3 3]);
-bug_14606_sparseboolean= sparse([1 1;2 2;3 3],1:3,[3 3]) > 1;
-bug_14606_struct=struct("list1",list("testlist",1,2), "matrix1", [1 2 3; 4 5 6], "boolean1", %t);
-bug_14606_struct=struct("list1",list("testlist",1,2), "matrix1", [1 2 3; 4 5 6], "boolean1", %t);
-bug_14606_cell={bug_14606_struct, bug_14606_sparseboolean, bug_14606_poly};
-bug_14606_handle=[sdf(),sda()];
-bug_14606_pointer=lufact(bug_14606_sparse);
-deff("out=bug_14606_macro(x,y)","out=x+y");
-libdir=TMPDIR+"/bug_14606";
-mkdir(libdir);
-mputl(["function out=bug_14606_macro_file(x,y)","out=x+y","endfunction"],libdir+"/bug_14606_macro_file.sci");
-genlib("bug_14606_lib",libdir,%f,%t);
--- Creation of [bug_14606_lib] (Macros) --
-genlib: Processing file: bug_14606_macro_file.sci
-clear bug_14606_lib
-bug_14606_lib=lib(libdir); // output variable is compulsory otherwise Scilab crashes after next line
-bug_14606_macro_file(1,1);
-whos -name bug_14606
-Name                     Type           Size           Bytes        
-bug_14606_bool           boolean        10x10          0            
-bug_14606_cell           ce             1x3            0            
-bug_14606_double         constant       10x10          0            
-bug_14606_handle         handle         1x2            0            
-bug_14606_int16          int16          10x10          0            
-bug_14606_int32          int32          10x10          0            
-bug_14606_int64          int64          10x10          0            
-bug_14606_int8           int8           10x10          0            
-bug_14606_lib            library                       0            
-bug_14606_list           list           3              0            
-bug_14606_macro          function                      0            
-bug_14606_macro_file     function                      0            
-bug_14606_mlist          mlist_14606    Nan            0            
-bug_14606_pointer        pointer                       0            
-bug_14606_poly           polynomial     2x2            0            
-bug_14606_rat            rational       2x2            0            
-bug_14606_sparse         sparse         3x3            0            
-bug_14606_sparseboolean  boolean sparse 3x3            0            
-bug_14606_struct         st             1x1            0            
-bug_14606_syslin         state-space    1x1            0            
-bug_14606_tlist          tlist_14606    Nan            0            
-bug_14606_uint16         uint16         10x10          0            
-bug_14606_uint32         uint32         10x10          0            
-bug_14606_uint64         uint64         10x10          0            
-bug_14606_uint8          uint8          10x10          0            
-ludel(bug_14606_pointer)
-bug_14606_var=zeros(10,10);
-global bug_14606_var
-whos -name bug_14606_var
-Name                     Type           Size           Bytes        
-bug_14606_var            constant       10x10          0            
-bug_14606_var            constant*      10x10          0            
-clear bug_14606_var
-whos -name bug_14606_var
-Name                     Type           Size           Bytes        
-bug_14606_var            constant*      10x10          0            
diff --git a/scilab/modules/core/tests/nonreg_tests/bug_14606.tst b/scilab/modules/core/tests/nonreg_tests/bug_14606.tst
deleted file mode 100644 (file)
index 76b2bce..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-// =============================================================================
-// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
-// Copyright (C) 2018 - Stéphane Mottelet
-//
-//  This file is distributed under the same license as the Scilab package.
-// =============================================================================
-//
-// <-- TEST WITH GRAPHIC -->
-// <-- ENGLISH IMPOSED -->
-//
-// <-- Non-regression test for bug 14606 -->
-//
-// <-- Bugzilla URL -->
-// http://bugzilla.scilab.org/show_bug.cgi?id=14606
-//
-// <-- Short Description -->
-// "who" doesn"t return memory size
-
-bug_14606_double = ones(10,10);
-bug_14606_uint8 = uint8(ones(10,10));
-bug_14606_uint16 = uint16(ones(10,10));
-bug_14606_uint32 = uint32(ones(10,10));
-bug_14606_uint64 = uint64(ones(10,10));
-bug_14606_int8 = int8(ones(10,10));
-bug_14606_int16 = int16(ones(10,10));
-bug_14606_int32 = int32(ones(10,10));
-bug_14606_int64 = int64(ones(10,10));
-bug_14606_bool = eye(10,10)==1;
-bug_14606_poly = [%s 1+%s;1 1];
-bug_14606_rat = 1./[%s 1+%s;1 1];
-bug_14606_list = list(bug_14606_double, bug_14606_uint64, bug_14606_poly);
-deff("out=%tlist_14606_size(x)","out=%nan");
-deff("out=%mlist_14606_size(x)","out=%nan");
-bug_14606_tlist = tlist(["tlist_14606","field1","field2"], 1:3, ["Scilab" "is" "not" "Basile"]);
-bug_14606_mlist = mlist(["mlist_14606","field1","field2"], 1:3, ["Scilab" "is" "not" "Basile"]);
-bug_14606_syslin=syslin('c',[0,1;0,0],[1;1],[1,1]); 
-bug_14606_sparse= sparse([1 1;2 2;3 3],1:3,[3 3]);
-bug_14606_sparseboolean= sparse([1 1;2 2;3 3],1:3,[3 3]) > 1;
-bug_14606_struct=struct("list1",list("testlist",1,2), "matrix1", [1 2 3; 4 5 6], "boolean1", %t);
-bug_14606_struct=struct("list1",list("testlist",1,2), "matrix1", [1 2 3; 4 5 6], "boolean1", %t);
-bug_14606_cell={bug_14606_struct, bug_14606_sparseboolean, bug_14606_poly};
-bug_14606_handle=[sdf(),sda()];
-bug_14606_pointer=lufact(bug_14606_sparse);
-deff("out=bug_14606_macro(x,y)","out=x+y");
-libdir=TMPDIR+"/bug_14606";
-mkdir(libdir);
-mputl(["function out=bug_14606_macro_file(x,y)","out=x+y","endfunction"],libdir+"/bug_14606_macro_file.sci");
-genlib("bug_14606_lib",libdir,%f,%t);
-clear bug_14606_lib
-bug_14606_lib=lib(libdir); // output variable is compulsory otherwise Scilab crashes after next line
-bug_14606_macro_file(1,1);
-whos -name bug_14606
-ludel(bug_14606_pointer)
-bug_14606_var=zeros(10,10);
-global bug_14606_var
-whos -name bug_14606_var
-clear bug_14606_var
-whos -name bug_14606_var
-
diff --git a/scilab/modules/core/tests/nonreg_tests/bug_14606.win.dia.ref b/scilab/modules/core/tests/nonreg_tests/bug_14606.win.dia.ref
deleted file mode 100644 (file)
index b01b7cc..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-// =============================================================================
-// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
-// Copyright (C) 2018 - Stéphane Mottelet
-//
-//  This file is distributed under the same license as the Scilab package.
-// =============================================================================
-//
-// <-- TEST WITH GRAPHIC -->
-// <-- ENGLISH IMPOSED -->
-//
-// <-- Non-regression test for bug 14606 -->
-//
-// <-- Bugzilla URL -->
-// http://bugzilla.scilab.org/show_bug.cgi?id=14606
-//
-// <-- Short Description -->
-// "who" doesn"t return memory size
-bug_14606_double = ones(10,10);
-bug_14606_uint8 = uint8(ones(10,10));
-bug_14606_uint16 = uint16(ones(10,10));
-bug_14606_uint32 = uint32(ones(10,10));
-bug_14606_uint64 = uint64(ones(10,10));
-bug_14606_int8 = int8(ones(10,10));
-bug_14606_int16 = int16(ones(10,10));
-bug_14606_int32 = int32(ones(10,10));
-bug_14606_int64 = int64(ones(10,10));
-bug_14606_bool = eye(10,10)==1;
-bug_14606_poly = [%s 1+%s;1 1];
-bug_14606_rat = 1./[%s 1+%s;1 1];
-bug_14606_list = list(bug_14606_double, bug_14606_uint64, bug_14606_poly);
-deff("out=%tlist_14606_size(x)","out=%nan");
-deff("out=%mlist_14606_size(x)","out=%nan");
-bug_14606_tlist = tlist(["tlist_14606","field1","field2"], 1:3, ["Scilab" "is" "not" "Basile"]);
-bug_14606_mlist = mlist(["mlist_14606","field1","field2"], 1:3, ["Scilab" "is" "not" "Basile"]);
-bug_14606_syslin=syslin('c',[0,1;0,0],[1;1],[1,1]);
-bug_14606_sparse= sparse([1 1;2 2;3 3],1:3,[3 3]);
-bug_14606_sparseboolean= sparse([1 1;2 2;3 3],1:3,[3 3]) > 1;
-bug_14606_struct=struct("list1",list("testlist",1,2), "matrix1", [1 2 3; 4 5 6], "boolean1", %t);
-bug_14606_struct=struct("list1",list("testlist",1,2), "matrix1", [1 2 3; 4 5 6], "boolean1", %t);
-bug_14606_cell={bug_14606_struct, bug_14606_sparseboolean, bug_14606_poly};
-bug_14606_handle=[sdf(),sda()];
-bug_14606_pointer=lufact(bug_14606_sparse);
-deff("out=bug_14606_macro(x,y)","out=x+y");
-libdir=TMPDIR+"/bug_14606";
-mkdir(libdir);
-mputl(["function out=bug_14606_macro_file(x,y)","out=x+y","endfunction"],libdir+"/bug_14606_macro_file.sci");
-genlib("bug_14606_lib",libdir,%f,%t);
--- Creation of [bug_14606_lib] (Macros) --
-genlib: Processing file: bug_14606_macro_file.sci
-clear bug_14606_lib
-bug_14606_lib=lib(libdir); // output variable is compulsory otherwise Scilab crashes after next line
-bug_14606_macro_file(1,1);
-whos -name bug_14606
-Name                     Type           Size           Bytes        
-bug_14606_bool           boolean        10x10          608          
-bug_14606_cell           ce             1x3            2406         
-bug_14606_double         constant       10x10          1008         
-bug_14606_handle         handle         1x2            224          
-bug_14606_int16          int16          10x10          408          
-bug_14606_int32          int32          10x10          608          
-bug_14606_int64          int64          10x10          1008         
-bug_14606_int8           int8           10x10          308          
-bug_14606_lib            library                       368          
-bug_14606_list           list           3              2536         
-bug_14606_macro          function                      458          
-bug_14606_macro_file     function                      458          
-bug_14606_mlist          mlist_14606    Nan            984          
-bug_14606_pointer        pointer                       192          
-bug_14606_poly           polynomial     2x2            320          
-bug_14606_rat            rational       2x2            1290         
-bug_14606_sparse         sparse         3x3            232          
-bug_14606_sparseboolean  boolean sparse 3x3            202          
-bug_14606_struct         st             1x1            1676         
-bug_14606_syslin         state-space    1x1            1832         
-bug_14606_tlist          tlist_14606    Nan            984          
-bug_14606_uint16         uint16         10x10          408          
-bug_14606_uint32         uint32         10x10          608          
-bug_14606_uint64         uint64         10x10          1008         
-bug_14606_uint8          uint8          10x10          308          
-ludel(bug_14606_pointer)
-bug_14606_var=zeros(10,10);
-global bug_14606_var
-whos -name bug_14606_var
-Name                     Type           Size           Bytes        
-bug_14606_var            constant       10x10          1008         
-bug_14606_var            constant*      10x10          1008         
-clear bug_14606_var
-whos -name bug_14606_var
-Name                     Type           Size           Bytes        
-bug_14606_var            constant*      10x10          1008         
index 7ec4705..a312c91 100644 (file)
@@ -1700,12 +1700,12 @@ int mexPutVariable(const char *workspace, const char *varname, const mxArray *pm
 int mexIsGlobal(const mxArray *ptr)
 {
     symbol::Context *context = symbol::Context::getInstance();
-    std::list<std::pair<std::wstring,int>> lst;
-    int size = context->getGlobalInfoForWho(lst, false);
+    std::list<std::wstring> lst;
+    int size = context->getGlobalNameForWho(lst, false);
 
     for (auto it : lst)
     {
-        symbol::Symbol s = symbol::Symbol(it.first);
+        symbol::Symbol s = symbol::Symbol(it);
         types::InternalType* value = context->getGlobalValue(s);
         if ((int*)value == ptr->ptr)
         {