SmallInteger.st
branchjv
changeset 17758 a6670a2296fd
parent 17756 f4d72b8d0d89
child 17759 ed6ccf3b537d
--- a/SmallInteger.st	Thu Apr 08 18:25:02 2010 +0100
+++ b/SmallInteger.st	Fri Apr 09 19:02:18 2010 +0100
@@ -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,13 +3798,14 @@
 !SmallInteger class methodsFor:'documentation'!
 
 version
-    ^ '$Id: SmallInteger.st 10508 2010-03-21 19:37:43Z vranyj1 $'
+    ^ '$Id: SmallInteger.st 10512 2010-04-09 18:02:18Z vranyj1 $'
 !
 
 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 §'
 ! !
 
 
 
 
+