#BUGFIX by stefan
class: ArithmeticValue
added:
#bitAndFromInteger:
#bitOrFromInteger:
#bitXorFromInteger:
add missing methods
--- a/ArithmeticValue.st Thu Nov 01 12:35:23 2018 +0100
+++ b/ArithmeticValue.st Thu Nov 01 12:35:48 2018 +0100
@@ -1081,6 +1081,54 @@
!ArithmeticValue methodsFor:'double dispatching'!
+bitAndFromInteger:anInteger
+ "anInteger does not know how to do bitAnd: with the receiver -
+ retry the operation by coercing to Integer"
+
+ |selfAsInteger|
+
+ selfAsInteger := self asInteger.
+ self ~= selfAsInteger ifTrue:[
+ DomainError raiseRequestErrorString:'non-integer mask in bit-operation'.
+ ].
+
+ ^ anInteger bitAnd:selfAsInteger
+
+ "Created: / 01-11-2018 / 11:49:27 / Stefan Vogel"
+!
+
+bitOrFromInteger:anInteger
+ "anInteger does not know how to do bitOr: with the receiver -
+ retry the operation by coercing to Integer"
+
+ |selfAsInteger|
+
+ selfAsInteger := self asInteger.
+ self ~= selfAsInteger ifTrue:[
+ DomainError raiseRequestErrorString:'non-integer mask in bit-operation'.
+ ].
+
+ ^ anInteger bitOr:selfAsInteger
+
+ "Created: / 01-11-2018 / 11:49:09 / Stefan Vogel"
+!
+
+bitXorFromInteger:anInteger
+ "anInteger does not know how to do bitXor: with the receiver -
+ retry the operation by coercing to Integer"
+
+ |selfAsInteger|
+
+ selfAsInteger := self asInteger.
+ self ~= selfAsInteger ifTrue:[
+ DomainError raiseRequestErrorString:'non-integer mask in bit-operation'.
+ ].
+
+ ^ anInteger bitXor:selfAsInteger
+
+ "Created: / 01-11-2018 / 11:58:53 / Stefan Vogel"
+!
+
differenceFromComplex:aComplex
"aComplex does not know how to subtract the receiver -
retry the operation by coercing to higher generality"
@@ -1770,6 +1818,7 @@
^ self * self
! !
+
!ArithmeticValue methodsFor:'queries'!
respondsToArithmetic