BrowseVar: report used memory with SI prefix 89/20989/4
Clement DAVID [Wed, 29 May 2019 10:10:58 +0000 (12:10 +0200)]
Change-Id: I7bc6e28cba10ee907bf65e0d96fc4431174c5653

39 files changed:
scilab/CHANGES.md
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/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/ui_data/src/cpp/BrowseVarManager.cpp
scilab/modules/ui_data/src/java/org/scilab/modules/ui_data/BrowseVar.java
scilab/modules/ui_data/src/jni/BrowseVar.cpp
scilab/modules/ui_data/src/jni/BrowseVar.giws.xml
scilab/modules/ui_data/src/jni/BrowseVar.hxx

index 88aab6b..30009e8 100644 (file)
@@ -104,7 +104,7 @@ User Interface improvements:
 
 * The `ans` variable is editable as any other variable
 * Commands history is saved *before* executing a command to have the correct history on crash.
-
+* Used memory per variable is displayed by BrowserVar to give the user numbers on memory usage repartition and let the user `clear` the big ones first.
 
 Xcos
 ----
index 84362c2..b1433c4 100644 (file)
@@ -500,7 +500,7 @@ public :
 
     void getIndexes(int _iIndex, int* _piIndexes);
 
-    virtual bool getMemory(int* _piSize, int* _piSizePlusType);
+    virtual bool getMemory(long long* _piSize, long long* _piSizePlusType);
 
     ArrayOf<T>* getColumnValues(int _iPos)
     {
index fd77016..fb826b2 100644 (file)
@@ -109,7 +109,7 @@ public :
 
     virtual bool transpose(InternalType *& out);
 
-    bool getMemory(int* _piSize, int* _piSizePlusType);
+    bool getMemory(long long* _piSize, long long* _piSizePlusType);
 
 private :
     virtual InternalType*   getNullValue();
index 3f142de..1e28441 100644 (file)
@@ -82,7 +82,7 @@ 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);
+    bool getMemory(long long* _piSize, long long* _piSizePlusType);
 
 protected :
     inline ScilabType          getType(void)
index bed1897..3d85e22 100644 (file)
@@ -159,7 +159,7 @@ public :
     virtual bool neg(InternalType *& out);
     virtual ast::Exp * getExp(const Location & loc);
 
-    bool getMemory(int* _piSize, int* _piSizePlusType);
+    bool getMemory(long long* _piSize, long long* _piSizePlusType);
 
 };
 }
index 1e2b93e..d254805 100644 (file)
@@ -338,7 +338,7 @@ public :
     virtual int getInvokeNbIn();
     virtual int getInvokeNbOut();
 
-    virtual bool getMemory(int* _piSize, int* _piSizePlusType)
+    virtual bool getMemory(long long* _piSize, long long* _piSizePlusType)
     {
         *_piSize = 0;
         *_piSizePlusType = 0;
index d8e86d2..7cf800a 100644 (file)
@@ -67,7 +67,7 @@ public :
     MacroFile* get(const std::wstring& _wstName);
     int getMacrosName(std::list<std::wstring>& lst);
     std::wstring getPath();
-    bool getMemory(int* _piSize, int* _piSizePlusType);
+    bool getMemory(long long* _piSize, long long* _piSizePlusType);
 private:
     std::wstring m_wstPath;
     typedef std::unordered_map<std::wstring, MacroFile*> MacroMap;
index 066c3a6..1576d9e 100644 (file)
@@ -47,7 +47,7 @@ public :
         return IdList;
     }
     
-    bool                            getMemory(int* _piSize, int* _piSizePlusType);
+    bool                            getMemory(long long* _piSize, long long* _piSizePlusType);
     
     /**
     ** append(InternalType *_typedValue)
index 4b4b991..f7423e4 100644 (file)
@@ -66,7 +66,7 @@ public :
 
     ast::SeqExp*                getBody();
 
-    bool                        getMemory(int* _piSize, int* _piSizePlusType);
+    bool                        getMemory(long long* _piSize, long long* _piSizePlusType);
 
     /* return type as string ( double, int, cell, list, ... )*/
     virtual std::wstring        getTypeStr() const
index 81d3fe1..66450db 100644 (file)
@@ -58,7 +58,7 @@ public :
 
     void                    setLines(int _iFirstLine, int _iLastLine);
 
-    bool                    getMemory(int* _piSize, int* _piSizePlusType);
+    bool                    getMemory(long long* _piSize, long long* _piSizePlusType);
 
     /* return type as string ( double, int, cell, list, ... )*/
     virtual std::wstring    getTypeStr() const
index d3821ea..df15a72 100644 (file)
@@ -49,7 +49,7 @@ public :
         return false;
     }
 
-    bool                            getMemory(int* _piSize, int* _piSizePlusType);
+    bool                            getMemory(long long* _piSize, long long* _piSizePlusType);
 
     virtual bool invoke(typed_list & in, optional_list & opt, int _iRetCount, typed_list & out, const ast::Exp & e) override;
 
index 8fbd774..880eda8 100644 (file)
@@ -119,7 +119,7 @@ public :
         return false;
     }
 
-    bool getMemory(int* _piSize, int* _piSizePlusType);
+    bool getMemory(long long* _piSize, long long* _piSizePlusType);
 
     bool transpose(InternalType *& out);
     bool adjoint(InternalType *& out);
index 6e6fb1f..037fdad 100644 (file)
@@ -85,7 +85,7 @@ public :
         return L"sst";
     }
 
-    bool                                    getMemory(int* _piSize, int* _piSizePlusType);
+    bool                                    getMemory(long long* _piSize, long long* _piSizePlusType);
 
 private :
 
index 3c19d3e..7731b46 100644 (file)
@@ -81,7 +81,7 @@ struct EXTERN_AST Sparse : GenericType
     }
     void finalize();
     
-    bool getMemory(int *_piSize, int* _piSizePlusType);
+    bool getMemory(long long *_piSize, long long* _piSizePlusType);
 
     /*data management member function defined for compatibility with the Double API*/
     Sparse* set(int _iRows, int _iCols, double _dblReal, bool _bFinalize = true);
@@ -518,7 +518,7 @@ struct EXTERN_AST SparseBool : GenericType
     }
     void finalize();
 
-    bool getMemory(int *_piSize, int* _piSizePlusType);
+    bool getMemory(long long *_piSize, long long* _piSizePlusType);
 
     bool toString(std::wostringstream& ostr);
 
index c6bcaff..52f075f 100644 (file)
@@ -90,7 +90,7 @@ public :
         return false;
     }
 
-    bool getMemory(int* _piSize, int* _piSizePlusType);
+    bool getMemory(long long* _piSize, long long* _piSizePlusType);
 
     virtual bool neg(InternalType *& /*out*/)
     {
index 387e891..8c8dd2e 100644 (file)
@@ -133,7 +133,7 @@ public :
         return -1;
     }
 
-    bool                        getMemory(int* _piSize, int* _piSizePlusType);
+    bool                        getMemory(long long* _piSize, long long* _piSizePlusType);
 
 private :
     virtual SingleStruct*       getNullValue();
index 36829cd..17e2a65 100644 (file)
@@ -76,7 +76,7 @@ public :
 
     bool                            toString(std::wostringstream& ostr);
 
-    bool                            getMemory(int* _piSize, int* _piSizePlusType);
+    bool                            getMemory(long long* _piSize, long long* _piSizePlusType);
 
 private :
 };
index a94cc26..b368d30 100644 (file)
@@ -168,7 +168,7 @@ public :
 
     //load must be done by overload %yourtype_load and must returns a pointer on your UserType
 
-    bool getMemory(int* _piSize, int* _piSizePlusType)
+    bool getMemory(long long* _piSize, long long* _piSizePlusType)
     {
         *_piSize = sizeof(UserType);
         *_piSizePlusType = *_piSize;
index f33d9b4..d56fb63 100644 (file)
@@ -313,7 +313,7 @@ bool Variables::getVarsInfoForWho(std::list<std::pair<std::wstring, int>>& lstVa
             {
                 std::wstring wstrVarName(it.first.getName().c_str());
                 *iVarLenMax = std::max(*iVarLenMax, (int)wstrVarName.size());
-                int iSize, iSizePlusType;
+                long long iSize, iSizePlusType;
                 if (pIT->getMemory(&iSize, &iSizePlusType))
                 {
                     lstVar.emplace_back(wstrVarName, iSizePlusType);
@@ -338,7 +338,7 @@ bool Variables::getGlobalInfoForWho(std::list<std::pair<std::wstring, int>>& lst
         {
             std::wstring wstrVarName(it.first.getName().c_str());
             *iVarLenMax = std::max(*iVarLenMax, (int)wstrVarName.size());
-            int iSize, iSizePlusType;
+            long long iSize, iSizePlusType;
             types::InternalType* pIT = it.second->empty() ? it.second->getGlobalValue() : it.second->top()->m_pIT;
             if (pIT->getMemory(&iSize, &iSizePlusType))
             {
@@ -460,7 +460,7 @@ int Variables::getCurrentScope(std::list<std::pair<std::wstring, int>>& lst, int
             if (var.second->top()->m_iLevel == level)
             {
                 std::wstring wstrVarName(var.first.getName());
-                int iSize, iSizePlusType;
+                long long iSize, iSizePlusType;
 
                 types::InternalType* pIT = var.second->top()->m_pIT;
                 if (pIT->getMemory(&iSize, &iSizePlusType))
index b42aa90..945b67e 100644 (file)
@@ -53,7 +53,7 @@ GenericType* ArrayOf<T>::createEmpty()
 }
 
 template <typename T>
-bool ArrayOf<T>::getMemory(int* _piSize, int* _piSizePlusType)
+bool ArrayOf<T>::getMemory(long long* _piSize, long long* _piSizePlusType)
 {
     *_piSize = getSize() * sizeof(T) * (isComplex() ? 2 : 1);
     *_piSizePlusType = *_piSize + sizeof(*this);
index 435c869..1a25052 100644 (file)
@@ -51,14 +51,14 @@ Cell::Cell(int _iDims, const int* _piDims, InternalType** data)
     createCell(_iDims, _piDims, data);
 }
 
-bool Cell::getMemory(int* _piSize, int* _piSizePlusType)
+bool Cell::getMemory(long long* _piSize, long long* _piSizePlusType)
 {
     *_piSize = 0;
     *_piSizePlusType = 0;
     InternalType** p = get();
     for (int i = 0; i < getSize(); i++)
     {
-        int piS, piSPT;
+        long long piS, piSPT;
         if (p[i]->getMemory(&piS, &piSPT))
         {
             *_piSize += piS;
index 4ffce30..fffb3e9 100644 (file)
@@ -206,7 +206,7 @@ bool GraphicHandle::transpose(InternalType *& out)
     return type_traits::transpose(*this, out);
 }
 
-bool GraphicHandle::getMemory(int* _piSize, int* _piSizePlusType)
+bool GraphicHandle::getMemory(long long* _piSize, long long* _piSizePlusType)
 {
     *_piSize = sizeof(long long)*getSize();
     *_piSizePlusType = *_piSize + sizeof(GraphicHandle);
index b15bf3a..b15355f 100644 (file)
@@ -720,7 +720,7 @@ bool ImplicitList::isTrue()
     return false;
 }
 
-bool ImplicitList::getMemory(int* _piSize, int* _piSizePlusType)
+bool ImplicitList::getMemory(long long* _piSize, long long* _piSizePlusType)
 {
     *_piSize = sizeof(ImplicitList);
     *_piSizePlusType = *_piSize;
index b129a28..e865478 100644 (file)
@@ -134,7 +134,7 @@ std::wstring Library::getPath()
     return m_wstPath;
 }
 
-bool Library::getMemory(int* _piSize, int* _piSizePlusType)
+bool Library::getMemory(long long* _piSize, long long* _piSizePlusType)
 {
     *_piSize = 0;
     for (auto macro : m_macros)
index 1e2ae0a..5f8e325 100644 (file)
@@ -86,13 +86,13 @@ std::vector<InternalType *> *List::getData()
     return m_plData;
 }
 
-bool List::getMemory(int* _piSize, int* _piSizePlusType)
+bool List::getMemory(long long* _piSize, long long* _piSizePlusType)
 {
     *_piSize = 0;
     *_piSizePlusType = 0;
     for (auto pData : *m_plData)
     {
-        int piS, piSPT;
+        long long piS, piSPT;
         if (pData->getMemory(&piS, &piSPT))
         {
             *_piSize += piS;
index bf81b6b..a60bdd7 100644 (file)
@@ -456,7 +456,7 @@ int Macro::getNbOutputArgument(void)
     return (int)m_outputArgs->size();
 }
 
-bool Macro::getMemory(int* _piSize, int* _piSizePlusType)
+bool Macro::getMemory(long long* _piSize, long long* _piSizePlusType)
 {
     ast::SerializeVisitor serialMacro(m_body);
     unsigned char* macroSerial = serialMacro.serialize(false, false);
index 37fd32d..280615a 100644 (file)
@@ -208,7 +208,7 @@ void MacroFile::setLines(int _iFirstLine, int _iLastLine)
     getMacro()->setLines(_iFirstLine, _iLastLine);
 }
 
-bool MacroFile::getMemory(int* _piSize, int* _piSizePlusType)
+bool MacroFile::getMemory(long long* _piSize, long long* _piSizePlusType)
 {
     return this->getMacro()->getMemory(_piSize, _piSizePlusType);
 }
index 9c53cd4..3cea732 100644 (file)
 
 namespace types
 {
-bool MList::getMemory(int* _piSize, int* _piSizePlusType)
+bool MList::getMemory(long long* _piSize, long long* _piSizePlusType)
 {
     *_piSize = 0;
     *_piSizePlusType = 0;
     for (auto pData : *m_plData)
     {
-        int piS, piSPT;
+        long long piS, piSPT;
         if (pData->getMemory(&piS, &piSPT))
         {
             *_piSize += piS;
index 380f02e..535ad80 100644 (file)
@@ -63,7 +63,7 @@ Polynom::~Polynom()
 #endif
 }
 
-bool Polynom::getMemory(int* _piSize, int* _piSizePlusType)
+bool Polynom::getMemory(long long* _piSize, long long* _piSizePlusType)
 {
     *_piSize = 0;
     for (int i = 0; i<getSize(); i++)
index 80ea671..2642d99 100644 (file)
@@ -62,13 +62,13 @@ std::vector<InternalType *> & SingleStruct::getData()
     return m_Data;
 }
 
-bool SingleStruct::getMemory(int* _piSize, int* _piSizePlusType)
+bool SingleStruct::getMemory(long long* _piSize, long long* _piSizePlusType)
 {
     *_piSize = 0;
     *_piSizePlusType = 0;
     for (auto pData : m_Data)
     {
-        int piS, piSPT;
+        long long piS, piSPT;
         if (pData->getMemory(&piS, &piSPT))
         {
             *_piSize += piS;
index 3a43c1b..1243fd4 100644 (file)
@@ -520,7 +520,7 @@ Sparse::Sparse(int rows, int cols, int nonzeros, int* inner, int* outer, double*
 }
 
 
-bool Sparse::getMemory(int *_piSize, int* _piSizePlusType)
+bool Sparse::getMemory(long long *_piSize, long long* _piSizePlusType)
 {
     *_piSize = nonZeros()*sizeof(double)*(isComplex() ? 2 : 1);
     *_piSizePlusType = *_piSize + sizeof(*this);
@@ -3227,7 +3227,7 @@ SparseBool::SparseBool(int rows, int cols, int trues, int* inner, int* outer)
     matrixBool->resizeNonZeros(trues);
 }
 
-bool SparseBool::getMemory(int *_piSize, int* _piSizePlusType)
+bool SparseBool::getMemory(long long *_piSize, long long* _piSizePlusType)
 {
     *_piSize = nbTrue()*sizeof(bool);
     *_piSizePlusType = *_piSize + sizeof(*this);
index 9e1097c..a0748ee 100644 (file)
@@ -102,7 +102,7 @@ String::String(int _iRows, int _iCols, wchar_t const* const* _pstData)
 #endif
 }
 
-bool String::getMemory(int* _piSize, int* _piSizePlusType)
+bool String::getMemory(long long* _piSize, long long* _piSizePlusType)
 {
     *_piSize = getSize()*sizeof(wchar_t*);
     for (int i = 0; i < getSize(); i++)
index 830f6c4..dd3a735 100644 (file)
@@ -106,14 +106,14 @@ Struct::Struct(Struct *_oStructCopyMe)
 #endif
 }
 
-bool Struct::getMemory(int* _piSize, int* _piSizePlusType)
+bool Struct::getMemory(long long* _piSize, long long* _piSizePlusType)
 {
     *_piSize = 0;
     *_piSizePlusType = 0;
     SingleStruct** p = get();
     for (int i = 0; i < getSize(); i++)
     {
-        int piS, piSPT;
+        long long piS, piSPT;
         if (p[i]->getMemory(&piS, &piSPT))
         {
             *_piSize += piS;
index 0b98744..fab3e9f 100644 (file)
@@ -55,13 +55,13 @@ TList::~TList()
 #endif
 }
 
-bool TList::getMemory(int* _piSize, int* _piSizePlusType)
+bool TList::getMemory(long long* _piSize, long long* _piSizePlusType)
 {
     *_piSize = 0;
     *_piSizePlusType = 0;
     for (auto pData : *m_plData)
     {
-        int piS, piSPT;
+        long long piS, piSPT;
         if (pData->getMemory(&piS, &piSPT))
         {
             *_piSize += piS;
index acf8a64..bbf3bb9 100644 (file)
@@ -105,7 +105,7 @@ void SetBrowseVarData()
     char **pstAllVariableNames = new char*[iLocalVariablesUsed]();
     char **pstAllVariableVisibility = new char*[iLocalVariablesUsed]();
     char **pstAllVariableListTypes = new char*[iLocalVariablesUsed]();
-    int *piAllVariableBytes = new int[iLocalVariablesUsed]();
+    long long *piAllVariableBytes = new long long[iLocalVariablesUsed]();
     char **pstAllVariableSizes = new char*[iLocalVariablesUsed]();
     int *piAllVariableTypes = new int[iLocalVariablesUsed]();
     int *piAllVariableIntegerTypes = new int[iLocalVariablesUsed]();
@@ -251,7 +251,7 @@ void SetBrowseVarData()
             piAllVariableFromUser[i] = FALSE;
         }
 
-        int bytesWithoutOverHead;
+        long long bytesWithoutOverHead;
         pIT->getMemory(&bytesWithoutOverHead, &piAllVariableBytes[i]);
 
         ++i;
@@ -284,7 +284,7 @@ void SetBrowseVarData()
         piAllVariableNbCols[i] = 1;
         //get value and bytes
         types::GenericType* pIT = sl->m_pLib;
-        int bytesWithoutOverHead;
+        long long bytesWithoutOverHead;
         pIT->getMemory(&bytesWithoutOverHead, &piAllVariableBytes[i]);
 
         ++i;
index 6d1b6ee..98d94cb 100644 (file)
@@ -47,7 +47,7 @@ public class BrowseVar {
             Messages.gettext("Value"),
             Messages.gettext("Type"),
             Messages.gettext("Visibility"),
-            Messages.gettext("Bytes"),
+            Messages.gettext("Memory"),
             Messages.gettext("User"),
             Messages.gettext("Type int value"),
             "", /* nbrows */
@@ -140,7 +140,7 @@ public class BrowseVar {
      * @param dataVisibility : local or global variable
      * @param dataFromUser : Scilab data or user data
      */
-    public static void setVariableBrowserData(String[] dataNames, int[] dataBytes, int[] dataTypes, int[] dataIntegerTypes, String[] variableListTypes, String[] dataSizes, int[] dataNbRows, int[] dataNbCols, String[] dataVisibility, boolean[] dataFromUser) {
+    public static void setVariableBrowserData(String[] dataNames, long[] dataBytes, int[] dataTypes, int[] dataIntegerTypes, String[] variableListTypes, String[] dataSizes, int[] dataNbRows, int[] dataNbCols, String[] dataVisibility, boolean[] dataFromUser) {
         Object[][] data = new Object[dataNames.length][COLUMNNAMES.length];
         for (int i = 0; i < dataNames.length; ++i) {
             data[i][ICON_COLUMN_INDEX] = getIconFromType(dataTypes[i]);
@@ -161,7 +161,7 @@ public class BrowseVar {
                 data[i][TYPE_DESC_COLUMN_INDEX] = varType + " (" + data[i][TYPE_DESC_COLUMN_INDEX] + ")";
             }
             data[i][VISIBILITY_COLUMN_INDEX] = dataVisibility[i];
-            data[i][BYTES_COLUMN_INDEX] = dataBytes[i];
+            data[i][BYTES_COLUMN_INDEX] = humanReadableByteCount(dataBytes[i], true);
             data[i][FROM_SCILAB_COLUMN_INDEX] = dataFromUser[i]; /* Tag if it is a variable from the user or from Scilab (%pi, %eps, etc) */
             data[i][TYPE_COLUMN_INDEX] = dataTypes[i];
             data[i][NB_ROWS_INDEX] = dataNbRows[i];
@@ -169,6 +169,25 @@ public class BrowseVar {
         }
         ScilabVariableBrowser.setVariableBrowserData(data);
     }
+    
+    /**
+     * Convert a byte-count into a human readable string
+     * @see https://stackoverflow.com/questions/3758606/how-to-convert-byte-size-into-human-readable-format-in-java/3758880#3758880
+     * 
+     * @param bytes the number of bytes
+     * @param si true if you wish to format as International System, false for Binary System
+     * @return a formatted string
+     */
+    public static String humanReadableByteCount(long bytes, boolean si) {
+        int unit = si ? 1000 : 1024;
+        if (bytes < unit) {
+                       return bytes + " B";
+               }
+
+        int exp = (int) (Math.log(bytes) / Math.log(unit));
+        String pre = (si ? "kMGTPE" : "KMGTPE").charAt(exp-1) + (si ? "" : "i");
+        return String.format("%.1f %sB", bytes / Math.pow(unit, exp), pre);
+    }
 
     /**
      * Update Variable Browser
index 72af8ea..53b578b 100644 (file)
@@ -9,14 +9,31 @@ This is generated code.
 This software is a computer program whose purpose is to hide the complexity
 of accessing Java objects/methods from C++ code.
 
-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.
+This software is governed by the CeCILL-B license under French law and
+abiding by the rules of distribution of free software.  You can  use,
+modify and/ or redistribute the software under the terms of the CeCILL-B
+license as circulated by CEA, CNRS and INRIA at the following URL
+"http://www.cecill.info".
+
+As a counterpart to the access to the source code and  rights to copy,
+modify and redistribute granted by the license, users are provided only
+with a limited warranty  and the software's author,  the holder of the
+economic rights,  and the successive licensors  have only  limited
+liability.
+
+In this respect, the user's attention is drawn to the risks associated
+with loading,  using,  modifying and/or developing or reproducing the
+software by the user in light of its specific status of free software,
+that may mean  that it is complicated to manipulate,  and  that  also
+therefore means  that it is reserved for developers  and  experienced
+professionals having in-depth computer knowledge. Users are therefore
+encouraged to load and test the software's suitability as regards their
+requirements in conditions enabling the security of their systems and/or
+data to be ensured and,  more generally, to use and operate it in the
+same conditions as regards security.
+
+The fact that you are presently reading this means that you have had
+knowledge of the CeCILL-B license and that you accept its terms.
 */
 
 namespace org_scilab_modules_ui_data {
@@ -77,7 +94,7 @@ localInstance = curEnv->NewObject( this->instanceClass, constructObject ) ;
 if(localInstance == NULL){
 throw GiwsException::JniObjectCreationException(curEnv, this->className());
 }
+
 this->instance = curEnv->NewGlobalRef(localInstance) ;
 if(this->instance == NULL){
 throw GiwsException::JniObjectCreationException(curEnv, this->className());
@@ -87,8 +104,7 @@ curEnv->DeleteLocalRef(localInstance);
 
                 /* Methods ID set to NULL */
 voidopenVariableBrowserID=NULL;
-voidsetVariableBrowserDatajobjectArray_java_lang_Stringjava_lang_StringjintArray_intintjintArray_intintjintArray_intintjobjectArray_java_lang_Stringjava_lang_StringjobjectArray_java_lang_Stringjava_lang_StringjintArray_intintjintArray_intintjobjectArray_java_lang_Stringjava_lang_StringjbooleanArray_booleanbooleanID=NULL;
-voidupdateVariableBrowserDataID=NULL;
+voidsetVariableBrowserDatajobjectArray_java_lang_Stringjava_lang_StringjlongArray_longlongjintArray_intintjintArray_intintjobjectArray_java_lang_Stringjava_lang_StringjobjectArray_java_lang_Stringjava_lang_StringjintArray_intintjintArray_intintjobjectArray_java_lang_Stringjava_lang_StringjbooleanArray_booleanbooleanID=NULL;
 jbooleanisVariableBrowserOpenedID=NULL;
 voidcloseVariableBrowserID=NULL;
 
@@ -114,8 +130,7 @@ throw GiwsException::JniObjectCreationException(curEnv, this->className());
         }
         /* Methods ID set to NULL */
         voidopenVariableBrowserID=NULL;
-voidsetVariableBrowserDatajobjectArray_java_lang_Stringjava_lang_StringjintArray_intintjintArray_intintjintArray_intintjobjectArray_java_lang_Stringjava_lang_StringjobjectArray_java_lang_Stringjava_lang_StringjintArray_intintjintArray_intintjobjectArray_java_lang_Stringjava_lang_StringjbooleanArray_booleanbooleanID=NULL;
-voidupdateVariableBrowserDataID=NULL;
+voidsetVariableBrowserDatajobjectArray_java_lang_Stringjava_lang_StringjlongArray_longlongjintArray_intintjintArray_intintjobjectArray_java_lang_Stringjava_lang_StringjobjectArray_java_lang_Stringjava_lang_StringjintArray_intintjintArray_intintjobjectArray_java_lang_Stringjava_lang_StringjbooleanArray_booleanbooleanID=NULL;
 jbooleanisVariableBrowserOpenedID=NULL;
 voidcloseVariableBrowserID=NULL;
 
@@ -157,7 +172,7 @@ throw GiwsException::JniCallMethodException(curEnv);
 }
 }
 
-void BrowseVar::setVariableBrowserData (JavaVM * jvm_, char const* const* variableNames, int variableNamesSize, int const* variableBytes, int variableBytesSize, int const* variableTypes, int variableTypesSize, int const* variableIntegerTypes, int variableIntegerTypesSize, char const* const* variableListTypes, int variableListTypesSize, char const* const* variableSize, int variableSizeSize, int const* variableNbRows, int variableNbRowsSize, int const* variableNbCols, int variableNbColsSize, char const* const* variableVisibility, int variableVisibilitySize, bool const* variableFromUser, int variableFromUserSize){
+void BrowseVar::setVariableBrowserData (JavaVM * jvm_, char const* const* variableNames, int variableNamesSize, long long const* variableBytes, int variableBytesSize, int const* variableTypes, int variableTypesSize, int const* variableIntegerTypes, int variableIntegerTypesSize, char const* const* variableListTypes, int variableListTypesSize, char const* const* variableSize, int variableSizeSize, int const* variableNbRows, int variableNbRowsSize, int const* variableNbCols, int variableNbColsSize, char const* const* variableVisibility, int variableVisibilitySize, bool const* variableFromUser, int variableFromUserSize){
 
 JNIEnv * curEnv = NULL;
 jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
@@ -166,8 +181,8 @@ if ( cls == NULL) {
 throw GiwsException::JniCallMethodException(curEnv);
 }
 
-static jmethodID voidsetVariableBrowserDatajobjectArray_java_lang_Stringjava_lang_StringjintArray_intintjintArray_intintjintArray_intintjobjectArray_java_lang_Stringjava_lang_StringjobjectArray_java_lang_Stringjava_lang_StringjintArray_intintjintArray_intintjobjectArray_java_lang_Stringjava_lang_StringjbooleanArray_booleanbooleanID = curEnv->GetStaticMethodID(cls, "setVariableBrowserData", "([Ljava/lang/String;[I[I[I[Ljava/lang/String;[Ljava/lang/String;[I[I[Ljava/lang/String;[Z)V" ) ;
-if (voidsetVariableBrowserDatajobjectArray_java_lang_Stringjava_lang_StringjintArray_intintjintArray_intintjintArray_intintjobjectArray_java_lang_Stringjava_lang_StringjobjectArray_java_lang_Stringjava_lang_StringjintArray_intintjintArray_intintjobjectArray_java_lang_Stringjava_lang_StringjbooleanArray_booleanbooleanID == NULL) {
+static jmethodID voidsetVariableBrowserDatajobjectArray_java_lang_Stringjava_lang_StringjlongArray_longlongjintArray_intintjintArray_intintjobjectArray_java_lang_Stringjava_lang_StringjobjectArray_java_lang_Stringjava_lang_StringjintArray_intintjintArray_intintjobjectArray_java_lang_Stringjava_lang_StringjbooleanArray_booleanbooleanID = curEnv->GetStaticMethodID(cls, "setVariableBrowserData", "([Ljava/lang/String;[J[I[I[Ljava/lang/String;[Ljava/lang/String;[I[I[Ljava/lang/String;[Z)V" ) ;
+if (voidsetVariableBrowserDatajobjectArray_java_lang_Stringjava_lang_StringjlongArray_longlongjintArray_intintjintArray_intintjobjectArray_java_lang_Stringjava_lang_StringjobjectArray_java_lang_Stringjava_lang_StringjintArray_intintjintArray_intintjobjectArray_java_lang_Stringjava_lang_StringjbooleanArray_booleanbooleanID == NULL) {
 throw GiwsException::JniMethodNotFoundException(curEnv, "setVariableBrowserData");
 }
 jclass stringArrayClass = curEnv->FindClass("java/lang/String");
@@ -193,7 +208,7 @@ curEnv->SetObjectArrayElement( variableNames_, i, TempString);
 // avoid keeping reference on too many strings
 curEnv->DeleteLocalRef(TempString);
 }
-jintArray variableBytes_ = curEnv->NewIntArray( variableBytesSize ) ;
+jlongArray variableBytes_ = curEnv->NewLongArray( variableBytesSize ) ;
 
 if (variableBytes_ == NULL)
 {
@@ -201,7 +216,7 @@ if (variableBytes_ == NULL)
 throw GiwsException::JniBadAllocException(curEnv);
 }
 
-curEnv->SetIntArrayRegion( variableBytes_, 0, variableBytesSize, (jint*)(variableBytes) ) ;
+curEnv->SetLongArrayRegion( variableBytes_, 0, variableBytesSize, (jlong*)(variableBytes) ) ;
 
 
 jintArray variableTypes_ = curEnv->NewIntArray( variableTypesSize ) ;
@@ -317,7 +332,7 @@ curEnv->DeleteLocalRef(TempString);
 jbooleanArray variableFromUser_ = curEnv->NewBooleanArray( variableFromUserSize ) ;
 curEnv->SetBooleanArrayRegion( variableFromUser_, 0, variableFromUserSize, (jboolean*)variableFromUser ) ;
 
-                         curEnv->CallStaticVoidMethod(cls, voidsetVariableBrowserDatajobjectArray_java_lang_Stringjava_lang_StringjintArray_intintjintArray_intintjintArray_intintjobjectArray_java_lang_Stringjava_lang_StringjobjectArray_java_lang_Stringjava_lang_StringjintArray_intintjintArray_intintjobjectArray_java_lang_Stringjava_lang_StringjbooleanArray_booleanbooleanID ,variableNames_, variableBytes_, variableTypes_, variableIntegerTypes_, variableListTypes_, variableSize_, variableNbRows_, variableNbCols_, variableVisibility_, variableFromUser_);
+                         curEnv->CallStaticVoidMethod(cls, voidsetVariableBrowserDatajobjectArray_java_lang_Stringjava_lang_StringjlongArray_longlongjintArray_intintjintArray_intintjobjectArray_java_lang_Stringjava_lang_StringjobjectArray_java_lang_Stringjava_lang_StringjintArray_intintjintArray_intintjobjectArray_java_lang_Stringjava_lang_StringjbooleanArray_booleanbooleanID ,variableNames_, variableBytes_, variableTypes_, variableIntegerTypes_, variableListTypes_, variableSize_, variableNbRows_, variableNbCols_, variableVisibility_, variableFromUser_);
                         curEnv->DeleteLocalRef(stringArrayClass);
 curEnv->DeleteLocalRef(variableNames_);
 curEnv->DeleteLocalRef(variableBytes_);
@@ -334,26 +349,6 @@ throw GiwsException::JniCallMethodException(curEnv);
 }
 }
 
-void BrowseVar::updateVariableBrowserData (JavaVM * jvm_){
-
-JNIEnv * curEnv = NULL;
-jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
-jclass cls = initClass(curEnv);
-if ( cls == NULL) {
-throw GiwsException::JniCallMethodException(curEnv);
-}
-
-static jmethodID voidupdateVariableBrowserDataID = curEnv->GetStaticMethodID(cls, "updateVariableBrowserData", "()V" ) ;
-if (voidupdateVariableBrowserDataID == NULL) {
-throw GiwsException::JniMethodNotFoundException(curEnv, "updateVariableBrowserData");
-}
-
-                         curEnv->CallStaticVoidMethod(cls, voidupdateVariableBrowserDataID );
-                        if (curEnv->ExceptionCheck()) {
-throw GiwsException::JniCallMethodException(curEnv);
-}
-}
-
 bool BrowseVar::isVariableBrowserOpened (JavaVM * jvm_){
 
 JNIEnv * curEnv = NULL;
index abe5e5d..d1ce089 100644 (file)
@@ -4,7 +4,7 @@
         <method name="openVariableBrowser" returnType="void" modifier="static"/>
         <method name="setVariableBrowserData" returnType="void" modifier="static">
             <parameter type="String[]" name="variableNames"/>
-            <parameter type="int[]" name="variableBytes"/>
+            <parameter type="long[]" name="variableBytes"/>
             <parameter type="int[]" name="variableTypes"/>
             <parameter type="int[]" name="variableIntegerTypes"/>
             <parameter type="String[]" name="variableListTypes"/>
index d9bc714..5041f60 100644 (file)
@@ -8,14 +8,31 @@ This is generated code.
 This software is a computer program whose purpose is to hide the complexity
 of accessing Java objects/methods from C++ code.
 
-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.
+This software is governed by the CeCILL-B license under French law and
+abiding by the rules of distribution of free software.  You can  use,
+modify and/ or redistribute the software under the terms of the CeCILL-B
+license as circulated by CEA, CNRS and INRIA at the following URL
+"http://www.cecill.info".
+
+As a counterpart to the access to the source code and  rights to copy,
+modify and redistribute granted by the license, users are provided only
+with a limited warranty  and the software's author,  the holder of the
+economic rights,  and the successive licensors  have only  limited
+liability.
+
+In this respect, the user's attention is drawn to the risks associated
+with loading,  using,  modifying and/or developing or reproducing the
+software by the user in light of its specific status of free software,
+that may mean  that it is complicated to manipulate,  and  that  also
+therefore means  that it is reserved for developers  and  experienced
+professionals having in-depth computer knowledge. Users are therefore
+encouraged to load and test the software's suitability as regards their
+requirements in conditions enabling the security of their systems and/or
+data to be ensured and,  more generally, to use and operate it in the
+same conditions as regards security.
+
+The fact that you are presently reading this means that you have had
+knowledge of the CeCILL-B license and that you accept its terms.
 */
 
 
@@ -60,9 +77,8 @@ JavaVM * jvm;
 
 protected:
 jmethodID voidopenVariableBrowserID; // cache method id
-jmethodID voidsetVariableBrowserDatajobjectArray_java_lang_Stringjava_lang_StringjintArray_intintjintArray_intintjintArray_intintjobjectArray_java_lang_Stringjava_lang_StringjobjectArray_java_lang_Stringjava_lang_StringjintArray_intintjintArray_intintjobjectArray_java_lang_Stringjava_lang_StringjbooleanArray_booleanbooleanID; // cache method id
+jmethodID voidsetVariableBrowserDatajobjectArray_java_lang_Stringjava_lang_StringjlongArray_longlongjintArray_intintjintArray_intintjobjectArray_java_lang_Stringjava_lang_StringjobjectArray_java_lang_Stringjava_lang_StringjintArray_intintjintArray_intintjobjectArray_java_lang_Stringjava_lang_StringjbooleanArray_booleanbooleanID; // cache method id
 jclass stringArrayClass;
-jmethodID voidupdateVariableBrowserDataID; // cache method id
 jmethodID jbooleanisVariableBrowserOpenedID; // cache method id
 jmethodID voidcloseVariableBrowserID; // cache method id
 
@@ -71,7 +87,7 @@ jmethodID voidcloseVariableBrowserID; // cache method id
 jobject instance;
 jclass instanceClass; // cache class
 
-                       
+
 // Caching (if any)
 
 
@@ -98,9 +114,9 @@ BrowseVar(JavaVM * jvm_);
 BrowseVar(JavaVM * jvm_, jobject JObj);
 
 
-/** 
+/**
 * This is a fake constructor to avoid the constructor
-* chaining when dealing with extended giws classes 
+* chaining when dealing with extended giws classes
 */
 #ifdef FAKEGIWSDATATYPE
 BrowseVar(fakeGiwsDataType::fakeGiwsDataType /* unused */) {}
@@ -126,9 +142,7 @@ void endSynchronize();
 // Methods
 static void openVariableBrowser(JavaVM * jvm_);
 
-static void setVariableBrowserData(JavaVM * jvm_, char const* const* variableNames, int variableNamesSize, int const* variableBytes, int variableBytesSize, int const* variableTypes, int variableTypesSize, int const* variableIntegerTypes, int variableIntegerTypesSize, char const* const* variableListTypes, int variableListTypesSize, char const* const* variableSize, int variableSizeSize, int const* variableNbRows, int variableNbRowsSize, int const* variableNbCols, int variableNbColsSize, char const* const* variableVisibility, int variableVisibilitySize, bool const* variableFromUser, int variableFromUserSize);
-
-static void updateVariableBrowserData(JavaVM * jvm_);
+static void setVariableBrowserData(JavaVM * jvm_, char const* const* variableNames, int variableNamesSize, long long const* variableBytes, int variableBytesSize, int const* variableTypes, int variableTypesSize, int const* variableIntegerTypes, int variableIntegerTypesSize, char const* const* variableListTypes, int variableListTypesSize, char const* const* variableSize, int variableSizeSize, int const* variableNbRows, int variableNbRowsSize, int const* variableNbCols, int variableNbColsSize, char const* const* variableVisibility, int variableVisibilitySize, bool const* variableFromUser, int variableFromUserSize);
 
 static bool isVariableBrowserOpened(JavaVM * jvm_);