Changeset 13167 in project for chicken/trunk/library.scm


Ignore:
Timestamp:
02/03/09 05:28:28 (11 years ago)
Author:
Kon Lovett
Message:

posixunix.scm, osixwin.scm : added Unit ports use
lolevel.scm : comment fix
runtime.c : cl -> closure (like other procs), use of macros rather than open-coded block access
chicken-thread-object-inlines.scm : minor fix

File:
1 edited

Legend:

Unmodified
Added
Removed
  • chicken/trunk/library.scm

    r13150 r13167  
    25792579
    25802580(define (##sys#char->utf8-string c)
    2581   (let ((i (char->integer c)))
    2582     (cond
    2583       ((fx<= i #x7F) (string c))
    2584       ((fx<= i #x7FF)
    2585        (string (integer->char (fxior #b11000000 (fxshr i 6)))
    2586                (integer->char (fxior #b10000000 (fxand i #b111111)))))
    2587       ((fx<= i #xFFFF)
    2588        (string (integer->char (fxior #b11100000 (fxshr i 12)))
    2589                (integer->char (fxior #b10000000 (fxand (fxshr i 6) #b111111)))
    2590                (integer->char (fxior #b10000000 (fxand i #b111111)))))
    2591       ((fx<= i #x1FFFFF)
    2592        (string (integer->char (fxior #b11110000 (fxshr i 18)))
    2593                (integer->char (fxior #b10000000 (fxand (fxshr i 12) #b111111)))
    2594                (integer->char (fxior #b10000000 (fxand (fxshr i 6) #b111111)))
    2595                (integer->char (fxior #b10000000 (fxand i #b111111)))))
    2596       (else (error "unicode codepoint out of range:" i)))))
     2581  (let ([i (char->integer c)])
     2582    (cond [(fx<= i #x7F)
     2583           (string c) ]
     2584          [(fx<= i #x7FF)
     2585           (string (integer->char (fxior #b11000000 (fxshr i 6)))
     2586                   (integer->char (fxior #b10000000 (fxand i #b111111)))) ]
     2587          [(fx<= i #xFFFF)
     2588           (string (integer->char (fxior #b11100000 (fxshr i 12)))
     2589                   (integer->char (fxior #b10000000 (fxand (fxshr i 6) #b111111)))
     2590                   (integer->char (fxior #b10000000 (fxand i #b111111)))) ]
     2591          [(fx<= i #x1FFFFF)
     2592           (string (integer->char (fxior #b11110000 (fxshr i 18)))
     2593                   (integer->char (fxior #b10000000 (fxand (fxshr i 12) #b111111)))
     2594                   (integer->char (fxior #b10000000 (fxand (fxshr i 6) #b111111)))
     2595                   (integer->char (fxior #b10000000 (fxand i #b111111)))) ]
     2596          [else
     2597           (error "UTF-8 codepoint out of range:" i) ] ) ) )
    25972598
    25982599(define (##sys#unicode-surrogate? n)
    2599   (and (fx<= #xD800 n) (fx<= n #xDFFF)))
     2600  (and (fx<= #xD800 n) (fx<= n #xDFFF)) )
    26002601
    26012602;; returns #f if the inputs are not a valid surrogate pair (hi followed by lo)
     
    26052606       (fxior (fxshl (fx+ 1 (fxand (fxshr hi 6) #b11111)) 16)
    26062607              (fxior (fxshl (fxand hi #b111111) 10)
    2607                      (fxand lo #b1111111111)))))
     2608                     (fxand lo #b1111111111)))) )
    26082609
    26092610;;; Hooks for user-defined read-syntax:
     
    26162617  (case char
    26172618    ;; I put it here, so the SRFI-4 unit can intercept '#f...'
    2618     ((#\f #\F) (##sys#read-char-0 port) #f)
    2619     ((#\t #\T) (##sys#read-char-0 port) #t)
    2620     (else (##sys#read-error port "invalid sharp-sign read syntax" char) ) ) )
     2619    [(#\f #\F) (##sys#read-char-0 port) #f ]
     2620    [(#\t #\T) (##sys#read-char-0 port) #t ]
     2621    [else (##sys#read-error port "invalid sharp-sign read syntax" char) ] ) )
    26212622
    26222623
Note: See TracChangeset for help on using the changeset viewer.