equal
deleted
inserted
replaced
843 |
843 |
844 INT mask, index, bits; |
844 INT mask, index, bits; |
845 |
845 |
846 bits = __intVal(self); |
846 bits = __intVal(self); |
847 if (bits == 0) { |
847 if (bits == 0) { |
848 RETURN ( __MKSMALLINT(-1) ); |
848 RETURN ( __MKSMALLINT(-1) ); |
849 } |
849 } |
850 mask = 1; |
850 |
851 index = 1; |
851 if ((bits & 0xFFFFFF) == 0) { |
|
852 mask = 0x1000000; |
|
853 index = 25; |
|
854 } else { |
|
855 if ((bits & 0xFFFF) == 0) { |
|
856 mask = 0x10000; |
|
857 index = 17; |
|
858 } else { |
|
859 if ((bits & 0xFF) == 0) { |
|
860 mask = 0x100; |
|
861 index = 9; |
|
862 } else { |
|
863 mask = 1; |
|
864 index = 1; |
|
865 } |
|
866 } |
|
867 } |
|
868 |
852 #ifdef alpha |
869 #ifdef alpha |
853 while (index != 63) { |
870 while (index != 63) { |
854 #else |
871 #else |
855 while (index != 31) { |
872 while (index != 31) { |
856 #endif |
873 #endif |
857 if (bits & mask) { |
874 if (bits & mask) { |
858 RETURN ( __MKSMALLINT(index) ); |
875 RETURN ( __MKSMALLINT(index) ); |
859 } |
876 } |
860 mask = mask << 1; |
877 mask = mask << 1; |
861 index++; |
878 index++; |
862 } |
879 } |
863 RETURN ( __MKSMALLINT(-1) ); |
880 RETURN ( __MKSMALLINT(-1) ); |
864 %} |
881 %} |
865 "2r000100 lowBit" |
882 " |
866 "2r010010 lowBit" |
883 2r000100 lowBit |
867 "2r100001 lowBit" |
884 2r010010 lowBit |
868 "0 lowBit" |
885 2r100001 lowBit |
|
886 16r1000 lowBit |
|
887 16r1000000 lowBit |
|
888 0 lowBit |
|
889 " |
869 ! |
890 ! |
870 |
891 |
871 noMask:anInteger |
892 noMask:anInteger |
872 "return true if no 1-bit in anInteger is 1 in the receiver" |
893 "return true if no 1-bit in anInteger is 1 in the receiver" |
873 |
894 |
2325 ! ! |
2346 ! ! |
2326 |
2347 |
2327 !SmallInteger class methodsFor:'documentation'! |
2348 !SmallInteger class methodsFor:'documentation'! |
2328 |
2349 |
2329 version |
2350 version |
2330 ^ '$Header: /cvs/stx/stx/libbasic/SmallInteger.st,v 1.68 1997-03-01 15:58:34 cg Exp $' |
2351 ^ '$Header: /cvs/stx/stx/libbasic/SmallInteger.st,v 1.69 1997-03-01 16:02:45 cg Exp $' |
2331 ! ! |
2352 ! ! |