changeset 12009:4e2138bc1152 release-3-2-x

oct-map.cc: preserve key order
author John W. Eaton <jwe@octave.org>
date Wed, 24 Jun 2009 07:30:49 +0200
parents d5c5927d7d11
children 00b55509f5b5
files src/ChangeLog src/oct-map.cc
diffstat 2 files changed, 28 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Tue Jun 23 12:57:57 2009 +0200
+++ b/src/ChangeLog	Wed Jun 24 07:30:49 2009 +0200
@@ -1,3 +1,9 @@
+2009-06-23  John W. Eaton  <jwe@octave.org>
+
+	* oct-map.cc (Octave_map::squeeze, Octave_map::permute,
+	Octave_map::transpose, Octave_map::reshape, Octave_map::resize,
+	Octave_map::concat): Preserve key order.
+
 2009-06-22  Jaroslav Hajek  <highegg@gmail.com>
 
 	* ov-cell.cc (octave_cell::all_strings): Avoid duplicate conversions.
--- a/src/oct-map.cc	Tue Jun 23 12:57:57 2009 +0200
+++ b/src/oct-map.cc	Wed Jun 24 07:30:49 2009 +0200
@@ -64,6 +64,9 @@
       retval.assign (key (pa), tmp);
     }
 
+  // Preserve order of keys.
+  retval.key_list = key_list;
+
   return retval;
 }
 
@@ -82,6 +85,9 @@
       retval.assign (key (pa), tmp);
     }
 
+  // Preserve order of keys.
+  retval.key_list = key_list;
+
   return retval;
 }
 
@@ -153,6 +159,9 @@
   for (const_iterator p = begin (); p != end (); p++)
     retval.assign (key(p), Cell (contents(p).transpose ()));
 
+  // Preserve order of keys.
+  retval.key_list = key_list;
+
   return retval;
 }
 
@@ -167,6 +176,9 @@
 	retval.assign (key(p), contents(p).reshape (new_dims));
 
       retval.dimensions = new_dims;
+
+      // Preserve order of keys.
+      retval.key_list = key_list;
     }
   else
     retval = *this;
@@ -196,6 +208,9 @@
 
 	      assign (key(p), tmp);
 	    }
+
+	  // Preserve order of keys.
+	  retval.key_list = key_list;
 	}
     }
 }
@@ -220,6 +235,9 @@
 	  retval.assign (key(pa),
 			 contents(pa).insert (rb.contents(pb), ra_idx));
 	}
+
+      // Preserve order of keys.
+      retval.key_list = key_list;
     }
   else
     {
@@ -436,10 +454,13 @@
 Octave_map::index (const octave_value_list& idx, bool resize_ok) const
 {
   Octave_map retval;
+
   octave_idx_type n_idx = idx.length ();
+
   if (n_idx > 0)
     {
       Array<idx_vector> ra_idx (n_idx);
+
       for (octave_idx_type i = 0; i < n_idx; i++)
         {
           ra_idx(i) = idx(i).index_vector ();
@@ -451,8 +472,8 @@
         {
           for (const_iterator p = begin (); p != end (); p++)
             {
+              Cell tmp = contents (p);
 
-              Cell tmp = contents (p);
               tmp = tmp.ArrayN<octave_value>::index (ra_idx, resize_ok);
 
               if (error_state)