diff src/ov-cell.cc @ 3354:87721841efd7

[project @ 1999-11-17 19:06:11 by jwe]
author jwe
date Wed, 17 Nov 1999 19:06:15 +0000
parents 6b36317855ff
children 0fb75d95b14f
line wrap: on
line diff
--- a/src/ov-cell.cc	Tue Nov 16 16:13:51 1999 +0000
+++ b/src/ov-cell.cc	Wed Nov 17 19:06:15 1999 +0000
@@ -36,7 +36,9 @@
 #include "defun.h"
 #include "error.h"
 #include "ov-cell.h"
+#include "oct-obj.h"
 #include "unwind-prot.h"
+#include "utils.h"
 
 DEFINE_OCTAVE_ALLOCATOR (octave_cell);
 
@@ -47,16 +49,36 @@
 {
   octave_value retval;
 
-#if 0
-  if (idx.length () == 1)
+  int len = idx.length ();
+
+  switch (len)
     {
-      idx_vector i = idx (0).index_vector ();
+    case 2:
+      {
+	idx_vector i = idx (0).index_vector ();
+	idx_vector j = idx (1).index_vector ();
+
+	retval = cell_val.index (i, j);
+      }
+      break;
 
-      retval = octave_value_list (lst.index (i));
+    case 1:
+      {
+	idx_vector i = idx (0).index_vector ();
+
+	retval = cell_val.index (i);
+      }
+      break;
+
+    default:
+      {
+	string n = type_name ();
+
+	error ("invalid number of indices (%d) for %s value",
+	       len, n.c_str ());
+      }
+      break;
     }
-  else
-    error ("lists may only be indexed by a single scalar");
-#endif
 
   return retval;
 }
@@ -152,6 +174,58 @@
   return false;
 }
 
+DEFUN (iscell, args, ,
+  "iscell (x): return nonzero if x is a cell array")
+{
+  octave_value retval;
+
+  if (args.length () == 1)
+    retval = args(0).is_cell ();
+  else
+    print_usage ("iscell");
+
+  return retval;
+}
+
+DEFUN (cell, args, ,
+  "cell (N)\n\
+cell (M, N)\n\
+cell (size (A))")
+{
+  octave_value retval;
+
+  int nargin = args.length ();
+
+  switch (nargin)
+    {
+    case 1:
+      {
+	int nr, nc;
+	get_dimensions (args(0), "cell", nr, nc);
+
+	if (! error_state)
+	  retval = Cell (nr, nc, Matrix ());
+      }
+      break;
+
+    case 2:
+      {
+	int nr, nc;
+	get_dimensions (args(0), args(1), "cell", nr, nc);
+
+	if (! error_state)
+	  retval = Cell (nr, nc, Matrix ());
+      }
+      break;
+
+    default:
+      print_usage ("cell");
+      break;
+    }
+
+  return retval;
+}
+
 /*
 ;;; Local Variables: ***
 ;;; mode: C++ ***