Implement char->bitless-char.
authorChris Hanson <org/chris-hanson/cph>
Sun, 9 Dec 2018 02:26:45 +0000 (18:26 -0800)
committerChris Hanson <org/chris-hanson/cph>
Sun, 9 Dec 2018 05:03:21 +0000 (21:03 -0800)
doc/ref-manual/characters.texi
src/runtime/char.scm
src/runtime/runtime.pkg

index afa461e4a5a538f5f39eb1a25db0dbec9728a5b4..3deff38ef3732ec197e12a4c0e4d28e06915cb44 100644 (file)
@@ -399,6 +399,11 @@ Returns @code{#t} if @var{object} is a character with no bucky bits
 set, otherwise it returns @code{#f} .
 @end deffn
 
+@deffn procedure char->bitless-char char
+Returns @var{char} with any bucky bits removed.  The result is
+guaranteed to satisfy @code{bitless-char?}.
+@end deffn
+
 @deffn procedure char-predicate char
 Returns a procedure of one argument that returns @code{#t} if its
 argument is a character @code{char=?} to @var{char}, otherwise it
index cbf8fdbbfd794cb30b91919e71f02dccc2e1e03a..c3df7bc7d15ef56b3e2201d5ad1463f0e57e571a 100644 (file)
@@ -47,16 +47,19 @@ USA.
 (define-integrable (%make-char code bits)
   (integer->char (fix:or (fix:lsh bits 21) code)))
 
-(define (char-code char)
+(define-integrable (char-code char)
   (fix:and (char->integer char) #x1FFFFF))
 
-(define (char-bits char)
+(define-integrable (char-bits char)
   (fix:lsh (char->integer char) -21))
 
 (define (bitless-char? object)
   (and (char? object)
        (fix:< (char->integer object) char-code-limit)))
 
+(define (char->bitless-char char)
+  (integer->char (char-code char)))
+
 (define (char-bits-set? bits char)
   (guarantee-limited-index-fixnum bits char-bits-limit 'char-bits-set?)
   (fix:= bits (fix:and (char-bits char) bits)))
index be6daba25b11a559a6397376bc159fba21f95e97..40d3f9174911563311ee3a9959bad0c5c1cf5998 100644 (file)
@@ -1304,6 +1304,7 @@ USA.
          ascii-char?
          bitless-char?
          char-8-bit?
+         char->bitless-char
          char->digit
          char->integer
          char->name