diff src/ov-bool-mat.cc @ 9850:85f6c386f2bb

implement built-in logical
author Jaroslav Hajek <highegg@gmail.com>
date Mon, 23 Nov 2009 06:55:30 +0100
parents eb63fbe60fab
children aabf7a8c2e57
line wrap: on
line diff
--- a/src/ov-bool-mat.cc	Fri Nov 20 14:46:13 2009 +0100
+++ b/src/ov-bool-mat.cc	Mon Nov 23 06:55:30 2009 +0100
@@ -536,6 +536,38 @@
   return retval;
 }
 
+DEFUN (logical, args, ,
+  "-*- texinfo -*-\n\
+@deftypefn {Built-in Function} {} logical (@var{x})\n\
+Convert @var{x} to logical type.\n\
+@seealso{double, single, char}\n\
+@end deftypefn")
+{
+  octave_value retval;
+
+  if (args.length () == 1)
+    {
+      octave_value arg = args(0);
+      if (arg.is_bool_type ())
+        retval = arg;
+      else if (arg.is_numeric_type ())
+        {
+          if (arg.is_sparse_type ())
+            retval = arg.sparse_bool_matrix_value ();
+          else if (arg.is_scalar_type ())
+            retval = arg.bool_value ();
+          else
+            retval = arg.bool_array_value ();
+        }
+      else
+        gripe_wrong_type_arg ("logical", arg);
+    }
+  else
+    print_usage ();
+
+  return retval;
+}
+
 /*
 ;;; Local Variables: ***
 ;;; mode: C++ ***