# HG changeset patch # User John W. Eaton # Date 1565933989 14400 # Fri Aug 16 01:39:49 2019 -0400 # Node ID 61bf2b371b65383c5134da79f9aaa8925b5d0691 # Parent 64289bf338daab3d3f9500a4e456314f434faf36 ovl-with-vector diff --git a/libinterp/octave-value/ovl.cc b/libinterp/octave-value/ovl.cc --- a/libinterp/octave-value/ovl.cc +++ b/libinterp/octave-value/ovl.cc @@ -49,13 +49,14 @@ octave_value_list::octave_value_list (co data = lst.front ().data; else if (nel > 0) { - data.resize (dim_vector (1, nel)); + data.resize (nel); octave_idx_type k = 0; for (const auto& ovl : lst) { - data.assign (idx_vector (k, k + ovl.length ()), ovl.data); - k += ovl.length (); + for (octave_idx_type i = 0; i < ovl.length (); i++) + data[k++] = ovl(i); } + assert (k == nel); } @@ -262,13 +263,13 @@ void octave_value_list::make_storable_values (void) { octave_idx_type len = length (); - const Array& cdata = data; + const std::vector& cdata = data; for (octave_idx_type i = 0; i < len; i++) { // This is optimized so that we don't force a copy unless necessary. - octave_value tmp = cdata(i).storable_value (); - if (! tmp.is_copy_of (cdata (i))) - data(i) = tmp; + octave_value tmp = cdata[i].storable_value (); + if (! tmp.is_copy_of (cdata[i])) + data[i] = tmp; } } diff --git a/libinterp/octave-value/ovl.h b/libinterp/octave-value/ovl.h --- a/libinterp/octave-value/ovl.h +++ b/libinterp/octave-value/ovl.h @@ -46,23 +46,37 @@ public: : data (), names () { } explicit octave_value_list (octave_idx_type n) - : data (dim_vector (1, n)), names () { } + : data (n), names () { } octave_value_list (octave_idx_type n, const octave_value& val) - : data (dim_vector (1, n), val), names () { } + : data (n, val), names () { } octave_value_list (const octave_value& tc) - : data (dim_vector (1, 1), tc), names () { } + : data (1, tc), names () { } template