Added isSparse part of code for mxSetDimensions and tests 44/19344/13
Siddhartha Gairola [Tue, 18 Jul 2017 09:26:26 +0000 (14:26 +0530)]
Change-Id: I20fd322969ba751ab632d28f3cb0be7284845c74

scilab/modules/mexlib/src/cpp/mexlib.cpp
scilab/modules/mexlib/tests/unit_tests/mxSetDimensions.dia.ref
scilab/modules/mexlib/tests/unit_tests/mxSetDimensions.tst

index 58215e3..ee07215 100644 (file)
@@ -909,7 +909,15 @@ int mxSetDimensions(mxArray *array_ptr, const int *dims, int ndim)
     }
     else if (mxIsSparse(array_ptr))
     {
-        //TODO
+        int temp_dim = 0;
+        
+        for (int i = 0; i < ndim; i++)
+        {
+            temp_dim += dims[i];
+        }
+
+        ((types::Sparse *)array_ptr->ptr)->resize(temp_dim, 1);
+        ((types::Sparse *)array_ptr->ptr)->reshape((int *)dims, ndim);
     }
     else if (mxIsInt8(array_ptr))
     {
index ead09d9..bb62a16 100644 (file)
@@ -1,6 +1,7 @@
 // ============================================================================
 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 // Copyright (C) 2011-2011 - Gsoc 2011 - Iuri SILVIO
+// Copyright (C) 2017-2017 - Gsoc 2017 - Siddhartha Gairola
 //
 //  This file is distributed under the same license as the Scilab package.
 // ============================================================================
@@ -23,3 +24,11 @@ a = 3;
 b = setDimensions(a);
 assert_checkequal(size(b, "*"), 4);
 assert_checkequal(b(1), 3);
+//checking if it works for sparse matrices
+sp = sparse([1]);
+sp2 = sparse([1 2]);
+c = setDimensions(sp);
+d = setDimensions(sp2);
+assert_checkequal(size(c, "*"), 4);
+assert_checkequal(size(c), [2 2]);
+assert_checkequal(size(d), [2 2]);
index 244e145..5dc5762 100644 (file)
@@ -1,6 +1,7 @@
 // ============================================================================
 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 // Copyright (C) 2011-2011 - Gsoc 2011 - Iuri SILVIO
+// Copyright (C) 2017-2017 - Gsoc 2017 - Siddhartha Gairola
 //
 //  This file is distributed under the same license as the Scilab package.
 // ============================================================================
@@ -26,3 +27,11 @@ a = 3;
 b = setDimensions(a);
 assert_checkequal(size(b, "*"), 4);
 assert_checkequal(b(1), 3);
+//checking if it works for sparse matrices
+sp = sparse([1]);
+sp2 = sparse([1 2]);
+c = setDimensions(sp);
+d = setDimensions(sp2);
+assert_checkequal(size(c, "*"), 4);
+assert_checkequal(size(c), [2 2]);
+assert_checkequal(size(d), [2 2]);