diff src/ov-list.cc @ 4591:2c9de1be042a

[project @ 2003-11-11 00:23:35 by jwe]
author jwe
date Tue, 11 Nov 2003 00:23:35 +0000
parents 508238e65af7
children d44675070f1a
line wrap: on
line diff
--- a/src/ov-list.cc
+++ b/src/ov-list.cc
@@ -44,14 +44,14 @@
 DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA (octave_list, "list");
 
 octave_list::octave_list (const Cell& c)
-  : octave_base_value (), lst ()
+  : octave_base_value (), data ()
 {
   int n = c.length ();
 
-  lst.resize (n);
+  data.resize (dim_vector (1, n));
 
   for (int i = 0; i < n; i++)
-    lst(i) = c(i);
+    data(i) = c(i);
 }
 
 octave_value
@@ -70,7 +70,7 @@
 	  {
 	    idx_vector i = tmp_idx (0).index_vector ();
 
-	    retval = octave_value (octave_value_list (lst.index (i)));
+	    retval = octave_list (data.index (i));
 	  }
 	else
 	  error ("only one index allowed for lists");
@@ -85,7 +85,7 @@
 	  {
 	    idx_vector i = tmp_idx (0).index_vector ();
 
-	    octave_value_list tmp = lst.index (i);
+	    Cell tmp = data.index (i);
 
 	    if (tmp.length () == 1)
 	      retval = tmp(0);
@@ -118,7 +118,7 @@
     {
       idx_vector i = idx (0).index_vector ();
 
-      retval = octave_value (octave_value_list (lst.index (i, resize_ok)));
+      retval = octave_list (data.index (i, resize_ok));
     }
   else
     error ("lists may only be indexed by a single scalar");
@@ -211,14 +211,14 @@
 
       if (! error_state)
 	{
-	  int n = lst.length ();
+	  int n = data.length ();
 
 	  if (i > 0)
 	    {
 	      if (Vwarn_resize_on_range_error && i > n)
 		warning ("list index = %d out of range", i);
 
-	      lst(i-1) = rhs;
+	      data(i-1) = rhs;
 	    }
 	  else
 	    error ("list index = %d out of range", i);
@@ -230,6 +230,21 @@
     error ("lists may only be indexed by a single scalar");
 }
 
+octave_value_list
+octave_list::list_value (void) const
+{
+  octave_value_list retval;
+
+  int n = data.length ();
+
+  retval.resize (n);
+  
+  for (int i = 0; i < n; i++)
+    retval(i) = data(i);
+
+  return retval;
+}
+
 void
 octave_list::print (std::ostream& os, bool) const
 {
@@ -241,7 +256,7 @@
 {
   unwind_protect::begin_frame ("octave_list_print");
 
-  int n = lst.length ();
+  int n = data.length ();
 
   if (n > 0)
     {
@@ -257,7 +272,7 @@
 
 	  buf << "[" << i+1 << "]" << OSSTREAM_ENDS;
 
-	  octave_value val = lst(i);
+	  octave_value val = data(i);
 
 	  val.print_with_name (os, OSSTREAM_STR (buf));
 
@@ -281,7 +296,7 @@
 octave_list::print_name_tag (std::ostream& os, const std::string& name) const
 {
   indent (os);
-  if (lst.length () == 0)
+  if (data.length () == 0)
     os << name << " = ";
   else
     {
@@ -298,6 +313,14 @@
 @var{a2}, @dots{}.\n\
 @end deftypefn")
 {
+  static bool warned = false;
+
+  if (! warned)
+    {
+      warning ("list objects are deprecated; use cell arrays instead");
+      warned = true;
+    }
+
   return octave_value (args);
 }