Fix definitions of legal code points.
authorChris Hanson <org/chris-hanson/cph>
Fri, 6 Jan 2017 04:03:07 +0000 (20:03 -0800)
committerChris Hanson <org/chris-hanson/cph>
Fri, 6 Jan 2017 04:03:07 +0000 (20:03 -0800)
src/runtime/char.scm

index 7cc34701a325f05eb30a89438aee6be5d6cde443..bb90f90d8b1b890cf7f68a332e3d42cc2fe02ea0 100644 (file)
@@ -97,32 +97,26 @@ USA.
 (define (unicode-scalar-value? object)
   (and (index-fixnum? object)
        (fix:< object char-code-limit)
-       (not (illegal? object))))
+       (not (surrogate? object))
+       (not (non-character? object))))
 
 (define-guarantee unicode-scalar-value "a Unicode scalar value")
 
 (define-integrable (legal-code-32? pt)
   (and (fix:< pt char-code-limit)
-       (not (illegal? pt))))
+       (not (surrogate? pt))
+       (not (non-character? pt))))
 
 (define-integrable (legal-code-16? pt)
-  (not (illegal? pt)))
+  (and (not (surrogate? pt))
+       (not (non-character? pt))))
 
-(define-integrable (illegal? pt)
-  (or (and (fix:>= pt #xD800) (fix:< pt #xE000))
-      (fix:= pt #xFFFE)
-      (fix:= pt #xFFFF)))
-
-#|
-
-Not used at the moment.
+(define-integrable (surrogate? pt)
+  (and (fix:<= #xD800 pt) (fix:< pt #xDFFF)))
 
 (define-integrable (non-character? pt)
-  (or (and (fix:>= pt #xD800) (fix:< pt #xE000))
-      (and (fix:>= pt #xFDD0) (fix:< pt #xFDF0))
-      (fix:= #x00FFFE (fix:and #x00FFFE pt))))
-
-|#
+  (or (and (fix:<= #xFDD0 pt) (fix:< pt #xFDF0))
+      (fix:= (fix:and #xFFFE pt) #xFFFE)))
 
 (define (8-bit-char? object)
   (and (char? object)