diff src/data.cc @ 3202:44d82b369c78

[project @ 1998-10-29 20:27:57 by jwe]
author jwe
date Thu, 29 Oct 1998 20:28:02 +0000
parents 7a5a5da64756
children 81738e630f57
line wrap: on
line diff
--- a/src/data.cc
+++ b/src/data.cc
@@ -445,7 +445,7 @@
 {
   octave_value retval;
 
-  double tmp = b.double_value ();
+  int k = b.nint_value ();
 
   if (error_state)
     {
@@ -453,7 +453,6 @@
       return retval;
     }
 
-  int k = NINT (tmp);
   int n = ABS (k) + 1;
 
   if (a.is_real_type ())
@@ -654,7 +653,7 @@
     }
   else if (nargin == 2 && nargout < 2)
     {
-      int nd = NINT (args(1).double_value ());
+      int nd = args(1).nint_value ();
 
       if (error_state)
 	error ("size: expecting scalar as second argument");
@@ -767,6 +766,46 @@
   return retval;
 }
 
+DEFUN (isempty, args, ,
+  "isempty (x): return nonzero if x is an empty matrix or empty list")
+{
+  double retval = 0.0;
+
+  if (args.length () == 1)
+    {
+      octave_value arg = args(0);
+
+      if (arg.is_matrix_type ())
+	retval = static_cast<double> (arg.rows () == 0 || arg.columns () == 0);
+      else if (arg.is_list ())
+	retval = static_cast<double> (arg.length () == 0);
+    }
+  else
+    print_usage ("isempty");
+
+  return retval;
+}
+
+DEFUN (is_matrix, args, ,
+  "is_matrix (x): return nonzero if x can be considered a matrix")
+{
+  double retval = 0.0;
+
+  if (args.length () == 1)
+    {
+      octave_value arg = args(0);
+
+      if (arg.is_scalar_type ())
+	retval = 1.0;
+      else if (arg.is_matrix_type ())
+	retval = static_cast<double> (arg.rows () >= 1 && arg.columns () >= 1);
+    }
+  else
+    print_usage ("is_matrix");
+
+  return retval;
+}
+
 DEFUN (is_struct, args, ,
   "is_struct (x): return nonzero if x is a structure")
 {
@@ -863,8 +902,7 @@
 {
   if (a.is_scalar_type ())
     {
-      double tmp = a.double_value ();
-      nr = nc = NINT (tmp);
+      nr = nc = a.nint_value ();
     }
   else
     {
@@ -892,8 +930,8 @@
 get_dimensions (const octave_value& a, const octave_value& b,
 		const char *warn_for, int& nr, int& nc)
 {
-  nr = (a.is_empty ()) ? 0 : NINT (a.double_value ());
-  nc = (b.is_empty ()) ? 0 : NINT (b.double_value ());
+  nr = a.is_empty () ? 0 : a.nint_value ();
+  nc = b.is_empty () ? 0 : b.nint_value ();
 
   if (error_state)
     error ("%s: expecting two scalar arguments", warn_for);
@@ -1084,12 +1122,7 @@
     }
 
   if (nargin == 3)
-    {
-      double n = args(2).double_value ();
-
-      if (! error_state)
-	npoints = NINT (n);
-    }
+    npoints = args(2).nint_value ();
 
   if (! error_state)
     {