diff src/ov-cell.cc @ 7651:443a8f5a50fd

require both subsref variants to be defined in octave_value subclasses
author John W. Eaton <jwe@octave.org>
date Wed, 26 Mar 2008 22:09:42 -0400
parents c195bd0a5c64
children f5268d7045d7
line wrap: on
line diff
--- a/src/ov-cell.cc	Wed Mar 26 16:27:14 2008 -0400
+++ b/src/ov-cell.cc	Wed Mar 26 22:09:42 2008 -0400
@@ -65,16 +65,17 @@
   error ("assignment to cell array failed");
 }
 
-octave_value
+octave_value_list
 octave_cell::subsref (const std::string& type,
-		      const std::list<octave_value_list>& idx)
+		      const std::list<octave_value_list>& idx,
+		      int nargout)
 {
-  octave_value retval;
+  octave_value_list retval;
 
   switch (type[0])
     {
     case '(':
-      retval = do_index_op (idx.front ());
+      retval(0) = do_index_op (idx.front ());
       break;
 
     case '{':
@@ -86,7 +87,7 @@
 	    Cell tcell = tmp.cell_value ();
 
 	    if (tcell.length () == 1)
-	      retval = tcell(0,0);
+	      retval(0) = tcell(0,0);
 	    else
 	      {
 		octave_idx_type n = tcell.numel ();
@@ -99,7 +100,7 @@
 		    lst(i) = tcell(i);
 		  }
 
-		retval = octave_value (lst, true);
+		retval(0) = octave_value (lst, true);
 	      }
 	  }
       }
@@ -121,7 +122,7 @@
   // octave_user_function::subsref.
 
   if (idx.size () > 1)
-    retval = retval.next_subsref (type, idx);
+    retval = retval(0).next_subsref (nargout, type, idx);
 
   return retval;
 }