Character.st
changeset 22002 a56e43b3b432
parent 22000 78991867cfeb
child 22018 b9f13bb90e55
--- a/Character.st	Thu Jul 13 12:13:44 2017 +0200
+++ b/Character.st	Thu Jul 13 12:19:01 2017 +0200
@@ -142,41 +142,45 @@
 %{  /* NOCONTEXT */
 #ifdef __SCHTEAM__
     {
-	char ch = (char)(context.stArg(0).intValue("[codePoint:]"));
-
-	return context._RETURN(STCharacter._new(ch));
+        char ch = (char)(context.stArg(0).intValue("[codePoint:]"));
+
+        return context._RETURN(STCharacter._new(ch));
     }
     /* NOTREACHED */
 #else
     INT __codePoint;
 
     if (__isSmallInteger(anInteger)) {
-	__codePoint = __smallIntegerVal(anInteger);
-	if ((unsigned INT)(__codePoint) <= MAX_IMMEDIATE_CHARACTER /* (__codePoint >= 0) && (__codePoint <= 255) */) {
-	    RETURN ( __MKCHARACTER(__codePoint) );
-	} else {
-	    RETURN ( __MKUCHARACTER(__codePoint) );
-	}
+        __codePoint = ( __smallIntegerVal(anInteger) );
+        if ((unsigned INT)(__codePoint) <= MAX_IMMEDIATE_CHARACTER /* (__codePoint >= 0) && (__codePoint <= 255) */) {
+            RETURN ( __MKCHARACTER(__codePoint) );
+        }
     }
 #endif
 %}.
     (anInteger between:0 and:(CharacterTable size - 1)) ifTrue:[
-	^ CharacterTable at:(anInteger + 1)
+        ^ CharacterTable at:(anInteger + 1)
     ].
     (anInteger between:16r100 and:16r3FFFFFFF) ifTrue:[
-	^ super basicNew setCodePoint:anInteger
+        (anInteger = 16rFEFF) ifTrue:[^ self byteOrderMark]. 
+        ^ super basicNew setCodePoint:anInteger
     ].
+    
     "
-     a characters codePoint must be 0..16r3FFFFFFF.
-     (i.e. only characters with up-to 30 bits are allowed.)
+     a character's codePoint must be 0..16r3FFFFFFF.
+     (i.e. only characters with up-to 30 bits are allowed, 
+      which is way more than needed...)
     "
     RangeError raiseWith:anInteger errorString:'invalid codePoint for character'
 
     "
       self codePoint:16r34.
       self codePoint:16r3455.
+      (self codePoint:16rFEFF) == (self codePoint:16rFEFF).
       self codePoint:16rFFFFFFFFFFFFFFFFFFF.
     "
+
+    "Modified (comment): / 13-07-2017 / 12:18:14 / cg"
 !
 
 digitValue:anInteger
@@ -388,13 +392,17 @@
 !
 
 byteOrderMark
-    "the unicode BOM character"
+    "the unicode BOM character as a singleton"
 
     BOMCharacter isNil ifTrue:[
         BOMCharacter := 16rFEFF asCharacter
     ].
     ^ BOMCharacter
 
+    "
+     self byteOrderMark
+    "
+
     "Created: / 13-07-2017 / 12:04:34 / cg"
 !