Mercurial > octave
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++ ***