diff src/oct-map.cc @ 7046:fbf8576cf399

[project @ 2007-10-22 12:12:20 by dbateman]
author dbateman
date Mon, 22 Oct 2007 12:12:20 +0000
parents a1dbe9d80eee
children a73b80cd1f10
line wrap: on
line diff
--- a/src/oct-map.cc	Mon Oct 22 11:52:39 2007 +0000
+++ b/src/oct-map.cc	Mon Oct 22 12:12:20 2007 +0000
@@ -49,6 +49,42 @@
     error ("Octave_map: expecting keys to be cellstr");
 }
 
+Octave_map
+Octave_map::squeeze (void) const
+{
+  Octave_map retval (dims ().squeeze ());
+
+  for (const_iterator pa = begin (); pa != end (); pa++)
+    {
+      Cell tmp = contents (pa).squeeze ();
+
+      if (error_state)
+	break;
+
+      retval.assign (key (pa), tmp);
+    }
+
+  return retval;
+}
+
+Octave_map
+Octave_map::permute (const Array<int>& vec, bool inv) const
+{
+  Octave_map retval (dims ());
+
+  for (const_iterator pa = begin (); pa != end (); pa++)
+    {
+      Cell tmp = contents (pa).permute (vec, inv);
+
+      if (error_state)
+	break;
+
+      retval.assign (key (pa), tmp);
+    }
+
+  return retval;
+}
+
 Cell&
 Octave_map::contents (const std::string& k)
 {
@@ -422,15 +458,15 @@
 }
 
 Octave_map
-Octave_map::index (const octave_value_list& idx)
+Octave_map::index (const octave_value_list& idx, bool resize_ok) const
 {
   Octave_map retval;
 
   if (idx.length () > 0)
     {
-      for (iterator p = begin (); p != end (); p++)
+      for (const_iterator p = begin (); p != end (); p++)
 	{
-	  Cell tmp = contents(p).index (idx);
+	  Cell tmp = contents(p).index (idx, resize_ok);
 
 	  if (error_state)
 	    break;
@@ -444,6 +480,62 @@
   return retval;
 }
 
+Octave_map
+Octave_map::index (idx_vector& i, int resize_ok, const octave_value& rfv) const
+{
+  Octave_map retval (dims ());
+
+  for (const_iterator p = begin (); p != end (); p++)
+    {
+      Cell tmp = contents (p).index (i, resize_ok, rfv);
+
+      if (error_state)
+	break;
+
+      retval.assign (key (p), tmp);
+    }
+
+  return retval;
+}
+
+Octave_map
+Octave_map::index (idx_vector& i, idx_vector& j, int resize_ok,
+		   const octave_value& rfv) const
+{
+  Octave_map retval (dims ());
+
+  for (const_iterator p = begin (); p != end (); p++)
+    {
+      Cell tmp = contents (p).index (i, j, resize_ok, rfv);
+
+      if (error_state)
+	break;
+
+      retval.assign (key (p), tmp);
+    }
+
+  return retval;
+}
+
+Octave_map
+Octave_map::index (Array<idx_vector>& ra_idx, int resize_ok,
+		   const octave_value& rfv) const
+{
+  Octave_map retval (dims ());
+
+  for (const_iterator p = begin (); p != end (); p++)
+    {
+      Cell tmp = contents (p).index (ra_idx, resize_ok, rfv);
+
+      if (error_state)
+	break;
+
+      retval.assign (key (p), tmp);
+    }
+
+  return retval;
+}
+
 /*
 ;;; Local Variables: ***
 ;;; mode: C++ ***