diff src/Cell.cc @ 8290:7cbe01c21986

improve dense array indexing
author Jaroslav Hajek <highegg@gmail.com>
date Mon, 20 Oct 2008 16:54:28 +0200
parents 6c08e3921d3e
children 7e0f36dfefbe
line wrap: on
line diff
--- a/src/Cell.cc
+++ b/src/Cell.cc
@@ -164,10 +164,14 @@
 	      const octave_value& fill_val)
 
 {
-  for (octave_idx_type i = 0; i < idx_arg.length (); i++)
-    set_index (idx_arg(i).index_vector ());
+  octave_idx_type len = idx_arg.length ();
+
+  Array<idx_vector> ra_idx (len);
 
-  ::assign (*this, rhs, fill_val);
+  for (octave_idx_type i = 0; i < len; i++)
+    ra_idx(i) = idx_arg(i).index_vector ();
+
+  Array<octave_value>::assign (ra_idx, rhs, fill_val);
 
   return *this;
 }
@@ -176,11 +180,14 @@
 Cell::delete_elements (const octave_value_list& idx_arg)
 
 {
-  Array<idx_vector> ra_idx (idx_arg.length ());
-  for (octave_idx_type i = 0; i < idx_arg.length (); i++)
+  octave_idx_type len = idx_arg.length ();
+
+  Array<idx_vector> ra_idx (len);
+
+  for (octave_idx_type i = 0; i < len; i++)
     ra_idx.xelem (i) = idx_arg(i).index_vector ();
 
-  maybe_delete_elements (ra_idx);
+  Array<octave_value>::delete_elements (ra_idx);
 
   return *this;
 }