diff src/ov-base-sparse.cc @ 10490:fdccd69d26bd

rewrite sparse null assignment (part 2)
author Jaroslav Hajek <highegg@gmail.com>
date Tue, 06 Apr 2010 13:42:59 +0200
parents 99e9bae2d81e
children aac9f4265048
line wrap: on
line diff
--- a/src/ov-base-sparse.cc	Tue Apr 06 08:28:15 2010 +0200
+++ b/src/ov-base-sparse.cc	Tue Apr 06 13:42:59 2010 +0200
@@ -182,12 +182,36 @@
 {
   octave_idx_type len = idx.length ();
 
-  Array<idx_vector> ra_idx (len, 1);
+  switch (len)
+    {
+    case 1:
+      {
+        idx_vector i = idx (0).index_vector ();
+
+        if (! error_state)
+          matrix.delete_elements (i);
+
+        break;
+      }
 
-  for (octave_idx_type i = 0; i < len; i++)
-    ra_idx(i) = idx(i).index_vector ();
+    case 2:
+      {
+        idx_vector i = idx (0).index_vector ();
+
+        if (! error_state)
+          {
+            idx_vector j = idx (1).index_vector ();
 
-  matrix.maybe_delete_elements (ra_idx);
+            if (! error_state)
+              matrix.delete_elements (i, j);
+          }
+
+        break;
+      }
+
+    default:
+      error ("sparse indexing needs 1 or 2 indices");
+    }
 
   // Invalidate the matrix type
   typ.invalidate_type ();