diff src/Cell.cc @ 4513:508238e65af7

[project @ 2003-09-19 21:40:57 by jwe]
author jwe
date Fri, 19 Sep 2003 21:41:21 +0000
parents e613ffa9f0e6
children 7b957b442818
line wrap: on
line diff
--- a/src/Cell.cc	Sat Sep 13 07:53:55 2003 +0000
+++ b/src/Cell.cc	Fri Sep 19 21:41:21 2003 +0000
@@ -28,22 +28,78 @@
 #include <config.h>
 #endif
 
+#include "idx-vector.h"
+
 #include "Cell.h"
 
 Cell::Cell (const string_vector& sv)
-  : Array2<octave_value> ()
+  : ArrayN<octave_value> ()
 {
   int n = sv.length ();
 
   if (n > 0)
     {
-      resize (n, 1);
+      resize_no_fill (n, 1);
 
       for (int i = 0; i < n; i++)
 	elem(i,0) = sv[i];
     }
 }
 
+Cell
+Cell::index (const octave_value_list& idx, bool resize_ok) const
+{
+  Cell retval;
+
+  int n = idx.length ();
+
+  switch (n)
+    {
+    case 1:
+      {
+	idx_vector i = idx(0).index_vector ();
+
+	retval = index (i, resize_ok);
+      }
+      break;
+
+    case 2:
+      {
+	idx_vector i = idx(0).index_vector ();
+	idx_vector j = idx(1).index_vector ();
+
+	retval = index (i, j, resize_ok);
+      }
+      break;
+
+    default:
+      {
+	Array<idx_vector> iv (n);
+
+	for (int i = 0; i < n; i++)
+	  iv(i) = idx(i).index_vector ();
+
+	retval = index (iv, resize_ok);
+      }
+      break;
+    }
+
+  return retval;
+}
+
+Cell&
+Cell::assign (const octave_value_list& idx, const Cell& rhs,
+	      const octave_value& fill_val)
+
+{
+  for (int i = 0; i < idx.length (); i++)
+    set_index (idx(i).index_vector ());
+
+  ::assign (*this, rhs, fill_val);
+
+  return *this;
+}
+
 /*
 ;;; Local Variables: ***
 ;;; mode: C++ ***