Mercurial > hg > octave-lyh
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 +++ b/src/Cell.cc @@ -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++ ***