diff src/pt-arg-list.cc @ 8580:188d38a553c7

further indexing optimization touches
author Jaroslav Hajek <highegg@gmail.com>
date Fri, 23 Jan 2009 13:13:39 +0100
parents 7d1a8ad7d841
children 73c4516fae10
line wrap: on
line diff
--- a/src/pt-arg-list.cc
+++ b/src/pt-arg-list.cc
@@ -174,12 +174,9 @@
 
   int len = length ();
 
-  octave_value_list args;
-  int args_len = len;
-  args.resize (args_len);
+  std::list<octave_value_list> args;
 
   iterator p = begin ();
-  int j = 0;
   for (int k = 0; k < len; k++)
     {
       if (stash_object)
@@ -200,33 +197,24 @@
 	  if (error_state)
 	    {
 	      ::error ("evaluating argument list element number %d", k+1);
-	      args = octave_value_list ();
+	      args.clear ();
 	      break;
 	    }
 	  else
 	    {
 	      if (tmp.is_cs_list ())
-		{
-		  octave_value_list tl = tmp.list_value ();
-		  int n = tl.length ();
-		  args_len += n - 1;
-		  args.resize (args_len);
-		  for (int i = 0; i < n; i++)
-		    args(j++) = tl(i);
-		}
+                args.push_back (tmp.list_value ());
 	      else if (tmp.is_defined ())
-		args(j++) = tmp;
+                args.push_back (tmp);
 	    }
 	}
       else
 	{
-	  args(j++) = octave_value ();
+	  args.push_back (octave_value ());
 	  break;
 	}
     }
 
-  args.resize (j);
-
   if (stash_object)
     unwind_protect::run_frame ("convert_to_const_vector");