diff src/ov-base-sparse.cc @ 10421:99e9bae2d81e

improve sparse indexing interface
author Jaroslav Hajek <highegg@gmail.com>
date Thu, 18 Mar 2010 14:55:52 +0100
parents 12884915a8e4
children fdccd69d26bd
line wrap: on
line diff
--- a/src/ov-base-sparse.cc
+++ b/src/ov-base-sparse.cc
@@ -51,8 +51,6 @@
 
   octave_idx_type n_idx = idx.length ();
 
-  int nd = matrix.ndims ();
-
   switch (n_idx)
     {
     case 0:
@@ -68,37 +66,21 @@
       }
       break;
 
-    default:
+    case 2:
       {
-        if (n_idx == 2 && nd == 2)
+        idx_vector i = idx (0).index_vector ();
+
+        if (! error_state)
           {
-            idx_vector i = idx (0).index_vector ();
+            idx_vector j = idx (1).index_vector ();
 
             if (! error_state)
-              {
-                idx_vector j = idx (1).index_vector ();
-
-                if (! error_state)
-                  retval = octave_value (matrix.index (i, j, resize_ok));
-              }
-          }
-        else
-          {
-            Array<idx_vector> idx_vec (n_idx, 1);
-
-            for (octave_idx_type i = 0; i < n_idx; i++)
-              {
-                idx_vec(i) = idx(i).index_vector ();
-
-                if (error_state)
-                  break;
-              }
-
-            if (! error_state)
-              retval = octave_value (matrix.index (idx_vec, resize_ok));
+              retval = octave_value (matrix.index (i, j, resize_ok));
           }
       }
       break;
+    default:
+      error ("sparse indexing needs 1 or 2 indices");
     }
 
   return retval;