changeset 8824:76ddf0ab985d

auto-set cellstr cache when sorting cells
author Jaroslav Hajek <highegg@gmail.com>
date Fri, 20 Feb 2009 07:53:47 +0100
parents 3efa512a0957
children c3445f1c8cb4
files src/ChangeLog src/ov-cell.cc
diffstat 2 files changed, 16 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Fri Feb 20 07:44:48 2009 +0100
+++ b/src/ChangeLog	Fri Feb 20 07:53:47 2009 +0100
@@ -5,6 +5,8 @@
 	* ov-cell.cc (octave_cell::is_sorted, octave_cell::is_sorted_rows):
 	New methods.
 	* ov-cell.h: Declare them.
+	* ov-cell.cc (octave_cell::sort): Create result already with
+	cellstr_cache.
 
 2009-02-20  John W. Eaton  <jwe@octave.org>
 
--- a/src/ov-cell.cc	Fri Feb 20 07:44:48 2009 +0100
+++ b/src/ov-cell.cc	Fri Feb 20 07:53:47 2009 +0100
@@ -457,7 +457,13 @@
     {
       Array<std::string> tmp = cellstr_value ();
 
-      retval = Cell (tmp.sort (dim, mode));
+      tmp = tmp.sort (dim, mode);
+
+      // We do it the hard way to auto-create the result's cache
+      octave_cell *result = new octave_cell (Cell (tmp));
+      result->cellstr_cache = tmp;
+
+      retval = result;
     }
   else
     error ("sort: only cell arrays of character strings may be sorted");
@@ -475,7 +481,13 @@
     {
       Array<std::string> tmp = cellstr_value ();
 
-      retval = Cell (tmp.sort (sidx, dim, mode));
+      tmp = tmp.sort (sidx, dim, mode);
+
+      // We do it the hard way to auto-create the result's cache
+      octave_cell *result = new octave_cell (Cell (tmp));
+      result->cellstr_cache = tmp;
+
+      retval = result;
     }
   else
     error ("sort: only cell arrays of character strings may be sorted");