diff src/ov-usr-fcn.cc @ 8580:188d38a553c7

further indexing optimization touches
author Jaroslav Hajek <highegg@gmail.com>
date Fri, 23 Jan 2009 13:13:39 +0100
parents 54b41376e381
children 73c4516fae10
line wrap: on
line diff
--- a/src/ov-usr-fcn.cc
+++ b/src/ov-usr-fcn.cc
@@ -263,16 +263,10 @@
 {
   octave_value_list retval;
 
-  int n = num_args_passed - num_named_args;
+  octave_idx_type n = num_args_passed - num_named_args;
 
   if (n > 0)
-    {
-      retval.resize (n);
-
-      int k = 0;
-      for (int i = num_named_args; i < num_args_passed; i++)
-	retval(k++) = args_passed(i);
-    }
+    retval = args_passed.slice (num_named_args, n);
 
   return retval;
 }
@@ -539,16 +533,7 @@
   symbol_table::mark_hidden (".nargout.");
 
   if (takes_varargs ())
-    {
-      int n = va_args.length ();
-
-      Cell varargin (1, n);
-
-      for (int i = 0; i < n; i++)
-	varargin(0,i) = va_args(i);
-
-      symbol_table::varref ("varargin") = varargin;
-    }
+    symbol_table::varref ("varargin") = va_args.cell_value ();
 }
 
 DEFUN (nargin, args, ,