--- a/LargeInteger.st Mon Jan 25 22:04:02 2016 +0100
+++ b/LargeInteger.st Mon Jan 25 22:09:42 2016 +0100
@@ -5547,12 +5547,28 @@
even
"return true if the receiver is even"
-%{
+%{ /* NOCONTEXT */
#ifdef __SCHTEAM__
return context._RETURN( ((STLargeInteger)self).isEven() ? STObject.True : STObject.False);
+#else
+ OBJ digits = __INST(digitByteArray);
+
+ if (__isByteArray(digits)){
+ if (__byteArraySize(digits) > 0) {
+ unsigned char b = __ByteArrayInstPtr(digits)->ba_element[0];
+ RETURN( (b & 1) ? false : true );
+ }
+ }
#endif
%}.
^ (digitByteArray at:1) even
+
+ "
+ 16r100000000000000000001 even
+ 16r100000000000000000001 odd
+ 16r100000000000000000000 even
+ 16r100000000000000000000 odd
+ "
!
negative
@@ -5569,9 +5585,18 @@
odd
"return true if the receiver is odd"
-%{
+%{ /* NOCONTEXT */
#ifdef __SCHTEAM__
return context._RETURN( ((STLargeInteger)self).isEven() ? STObject.False : STObject.True);
+#else
+ OBJ digits = __INST(digitByteArray);
+
+ if (__isByteArray(digits)){
+ if (__byteArraySize(digits) > 0) {
+ unsigned char b = __ByteArrayInstPtr(digits)->ba_element[0];
+ RETURN( (b & 1) ? true : false );
+ }
+ }
#endif
%}.
^ (digitByteArray at:1) odd