SmallInteger.st
changeset 12866 42e5e690c197
parent 12787 1d8519bbd92f
child 12876 813dd84a5901
--- a/SmallInteger.st	Thu Apr 08 13:57:19 2010 +0200
+++ b/SmallInteger.st	Fri Apr 09 12:48:56 2010 +0200
@@ -1983,6 +1983,30 @@
     ^ 20
 !
 
+signExtended24BitValue
+    "return a smallInteger from sign-extending the 24'th bit.
+     May be useful for communication interfaces"
+
+%{  /* NOCONTEXT */
+    INT i = __intVal(self);
+
+    if (i & 0x800000) {
+        i = i | ~0xFFFFFFL;
+    } else {
+        i = i & 0x7FFFFF;
+    }
+
+    RETURN (__mkSmallInteger(i));
+%}.
+    ^ self primitiveFailed
+
+    "
+     16rFFFFFF signExtended24BitValue
+     16r800000 signExtended24BitValue
+     16r7FFFFF signExtended24BitValue
+    "
+!
+
 signExtendedByteValue
     "return a smallInteger from sign-extending the 8'th bit.
      May be useful for communication interfaces"
@@ -1991,9 +2015,9 @@
     INT i = __intVal(self);
 
     if (i & 0x80) {
-	i = i | ~0xFFL;
+        i = i | ~0xFFL;
     } else {
-	i = i & 0x7F;
+        i = i & 0x7F;
     }
 
     RETURN (__mkSmallInteger(i));
@@ -2001,8 +2025,9 @@
     ^ self primitiveFailed
 
     "
-     16rFF signExtendedByteValue
-     16r7F signExtendedByteValue
+     16rFF signExtendedByteValue 
+     16r80 signExtendedByteValue 
+     16r7F signExtendedByteValue 
     "
 !
 
@@ -2014,9 +2039,9 @@
     INT i = __intVal(self);
 
     if (i & 0x8000) {
-	i = i | ~0xFFFFL;
+        i = i | ~0xFFFFL;
     } else {
-	i = i & 0x7FFF;
+        i = i & 0x7FFF;
     }
 
     RETURN (__mkSmallInteger(i));
@@ -2024,8 +2049,9 @@
     ^ self primitiveFailed
 
     "
-     16rFFFF signExtendedShortValue
-     16r7FFF signExtendedShortValue
+     16rFFFF signExtendedShortValue 
+     16r8000 signExtendedShortValue 
+     16r7FFF signExtendedShortValue 
     "
 ! !
 
@@ -3772,9 +3798,9 @@
 !SmallInteger class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/SmallInteger.st,v 1.183 2010-03-12 14:12:29 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/SmallInteger.st,v 1.184 2010-04-09 10:48:56 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/SmallInteger.st,v 1.183 2010-03-12 14:12:29 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/SmallInteger.st,v 1.184 2010-04-09 10:48:56 cg Exp $'
 ! !