diff src/bitfcns.cc @ 7763:0c6b4c7d7117

Treat bool as a scalar in the bit functions
author David Bateman <dbateman@free.fr>
date Tue, 06 May 2008 06:19:58 -0400
parents e8c94e473c68
children 82be108cc558 3342d1a7c4c9
line wrap: on
line diff
--- a/src/bitfcns.cc	Tue May 06 06:07:28 2008 -0400
+++ b/src/bitfcns.cc	Tue May 06 06:19:58 2008 -0400
@@ -40,6 +40,7 @@
 #include "ov-int8.h"
 #include "ov-scalar.h"
 #include "ov-re-mat.h"
+#include "ov-bool.h"
 
 // FIXME -- could probably eliminate some code duplication by
 // clever use of templates.
@@ -87,12 +88,18 @@
   if (nargin == 2) \
     { \
       if ((args(0).class_name () == octave_scalar::static_class_name ()) \
-	  || (args(1).class_name () == octave_scalar::static_class_name ())) \
+	  || (args(0).class_name () == octave_bool::static_class_name ()) \
+	  || (args(1).class_name () == octave_scalar::static_class_name ()) \
+	  || (args(1).class_name () == octave_bool::static_class_name ())) \
 	{ \
 	  bool arg0_is_int = (args(0).class_name () !=	\
-			      octave_scalar::static_class_name ()); \
+			      octave_scalar::static_class_name () && \
+			      args(0).class_name () != \
+			      octave_bool::static_class_name ()); \
 	  bool arg1_is_int = (args(1).class_name () !=	\
-			      octave_scalar::static_class_name ()); \
+			      octave_scalar::static_class_name () && \
+			      args(1).class_name () != \
+			      octave_bool::static_class_name ()); \
 	  \
 	  if (! (arg0_is_int || arg1_is_int))	\
 	    { \