# HG changeset patch # User Jaroslav Hajek # Date 1252227276 -7200 # Node ID 3fc7272937ce5bae3f982202e10bff6db7b433a0 # Parent bc0739d0272448e2c102378c62d3ce5189c86ccb implement Array::clear overloads diff -r bc0739d02724 -r 3fc7272937ce liboctave/Array.cc --- a/liboctave/Array.cc Sun Sep 06 10:02:09 2009 +0200 +++ b/liboctave/Array.cc Sun Sep 06 10:54:36 2009 +0200 @@ -88,6 +88,20 @@ } template +void +Array::clear (const dim_vector& dv) +{ + if (--rep->count <= 0) + delete rep; + + rep = new ArrayRep (dv.numel ()); + slice_data = rep->data; + slice_len = rep->len; + + dimensions = dv; +} + +template Array Array::squeeze (void) const { diff -r bc0739d02724 -r 3fc7272937ce liboctave/Array.h --- a/liboctave/Array.h Sun Sep 06 10:02:09 2009 +0200 +++ b/liboctave/Array.h Sun Sep 06 10:54:36 2009 +0200 @@ -266,7 +266,14 @@ } void fill (const T& val); + void clear (void); + void clear (const dim_vector& dv); + void clear (octave_idx_type n) + { clear (dim_vector (n)); } + + void clear (octave_idx_type r, octave_idx_type c) + { clear (dim_vector (r, c)); } octave_idx_type capacity (void) const { return slice_len; } octave_idx_type length (void) const { return capacity (); } diff -r bc0739d02724 -r 3fc7272937ce liboctave/ChangeLog --- a/liboctave/ChangeLog Sun Sep 06 10:02:09 2009 +0200 +++ b/liboctave/ChangeLog Sun Sep 06 10:54:36 2009 +0200 @@ -1,3 +1,10 @@ +2009-09-04 Jaroslav Hajek + + * Array.cc (Array::clear (const dim_vector&)): new method. + * Array.h: Declare it. + (Array::clear (octave_idx_type)): New method. + (Array::clear (octave_idx_type, octave_idx_type)): New method. + 2009-09-04 Jaroslav Hajek * mx-inlines.cc (DEFMXBOOLOPEQ): New macro.