refine `char-graphic?' to include all chars in L and N categories
Closes PR 11664
This commit is contained in:
parent
8d52697a75
commit
f36db863bb
|
@ -179,7 +179,8 @@ Returns @scheme[#t] if @scheme[char]'s Unicode general category is
|
|||
@defproc[(char-graphic? [char char?]) boolean?]{
|
||||
|
||||
Returns @scheme[#t] if @scheme[char]'s Unicode general category is
|
||||
@UCat{Mn}, @UCat{Mc}, @UCat{Me}, or if one of the following produces
|
||||
@UCat{Ll}, @UCat{Lm}, @UCat{Lo}, @UCat{Lt}, @UCat{Lu}, @UCat{Nd}, @UCat{Nl}, @UCat{No},
|
||||
@UCat{Mn}, @UCat{Mc}, or @UCat{Me}, or if one of the following produces
|
||||
@scheme[#t] when applied to @scheme[char]: @scheme[char-alphabetic?],
|
||||
@scheme[char-numeric?], @scheme[char-symbolic?], or
|
||||
@scheme[char-punctuation?].}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#lang scheme/base
|
||||
#lang racket/base
|
||||
|
||||
;; This script parses UnicodeData.txt (the standard Unicode database,
|
||||
;; available from the web) and other such files, and it produces
|
||||
|
@ -16,7 +16,7 @@
|
|||
|
||||
(define mark-cats '("Mn" "Mc" "Me"))
|
||||
(define letter-cats '("Lu" "Ll" "Lt" "Lm" "Lo"))
|
||||
(define digit-cats '("Nd"))
|
||||
(define digit-cats '("Nd" "No" "Nl"))
|
||||
(define space-cats '("Zl" "Zs" "Zp"))
|
||||
(define punc-cats '("Pc" "Pd" "Ps" "Pe" "Pi" "Pf" "Po"))
|
||||
(define sym-cats '("Sm" "Sc" "Sk" "So"))
|
||||
|
@ -27,14 +27,14 @@
|
|||
punc-cats
|
||||
sym-cats))
|
||||
|
||||
(define cases (cons (make-hash-table 'equal) (box 0)))
|
||||
(define cases (cons (make-hash) (box 0)))
|
||||
|
||||
(define (indirect t v limit)
|
||||
(let ([r (hash-table-get (car t) v (lambda () #f))])
|
||||
(let ([r (hash-ref (car t) v (lambda () #f))])
|
||||
(or r
|
||||
(let ([r (unbox (cdr t))])
|
||||
(set-box! (cdr t) (add1 r))
|
||||
(hash-table-put! (car t) v r)
|
||||
(hash-set! (car t) v r)
|
||||
(when (r . > . limit)
|
||||
(error "too many indirects"))
|
||||
r))))
|
||||
|
@ -53,13 +53,13 @@
|
|||
(define (combine-case up down title fold combining)
|
||||
(indirect cases (list up down title fold combining) 256))
|
||||
|
||||
(define general-categories (make-hash-table 'equal))
|
||||
(define general-categories (make-hash))
|
||||
(define (combine-cat cat)
|
||||
(hash-table-get general-categories cat
|
||||
(lambda ()
|
||||
(let ([v (hash-table-count general-categories)])
|
||||
(hash-table-put! general-categories cat v)
|
||||
v))))
|
||||
(hash-ref general-categories cat
|
||||
(lambda ()
|
||||
(let ([v (hash-count general-categories)])
|
||||
(hash-set! general-categories cat v)
|
||||
v))))
|
||||
;; So they're in order:
|
||||
(with-input-from-file "schgencat.h"
|
||||
(lambda ()
|
||||
|
@ -73,7 +73,7 @@
|
|||
|
||||
(define hexes (map char->integer (string->list "0123456789abcdefABCDEF")))
|
||||
|
||||
(define combining-class-ht (make-hash-table))
|
||||
(define combining-class-ht (make-hasheq))
|
||||
|
||||
;; In principle, adjust this number to tune the result, but
|
||||
;; the macros for accessing the table (in scheme.h) need to
|
||||
|
@ -100,7 +100,7 @@
|
|||
(define ccount 0)
|
||||
|
||||
(define (map1 c v v2 v3 cc)
|
||||
(hash-table-put! combining-class-ht c cc)
|
||||
(hash-set! combining-class-ht c cc)
|
||||
(set! ccount (add1 ccount))
|
||||
(if (= c (add1 range-top))
|
||||
(begin
|
||||
|
@ -176,8 +176,8 @@
|
|||
null)))
|
||||
|
||||
;; This code assumes that Final_Sigma is the only condition that we care about:
|
||||
(define case-foldings (make-hash-table 'equal))
|
||||
(define special-case-foldings (make-hash-table 'equal))
|
||||
(define case-foldings (make-hash))
|
||||
(define special-case-foldings (make-hash))
|
||||
(call-with-input-file "Unicode/CaseFolding.txt"
|
||||
(lambda (i)
|
||||
(let loop ()
|
||||
|
@ -189,12 +189,12 @@
|
|||
[variant (list-ref m 2)]
|
||||
[folded (string->codes (list-ref m 3))])
|
||||
(if (string=? variant "F")
|
||||
(hash-table-put! special-case-foldings code folded)
|
||||
(hash-table-put! case-foldings code (car folded))))))
|
||||
(hash-set! special-case-foldings code folded)
|
||||
(hash-set! case-foldings code (car folded))))))
|
||||
(loop))))))
|
||||
|
||||
;; This code assumes that Final_Sigma is the only condition that we care about:
|
||||
(define special-casings (make-hash-table 'equal))
|
||||
(define special-casings (make-hash))
|
||||
(define-struct special-casing (lower upper title folding final-sigma?) #:mutable)
|
||||
(call-with-input-file "Unicode/SpecialCasing.txt"
|
||||
(lambda (i)
|
||||
|
@ -209,13 +209,13 @@
|
|||
[upper (string->codes (list-ref m 4))]
|
||||
[title (string->codes (list-ref m 3))]
|
||||
[final-sigma? (and (regexp-match #rx"Final_Sigma" (list-ref m 5)) #t)])
|
||||
(let ([folding (list (hash-table-get case-foldings code (lambda () code)))])
|
||||
(hash-table-put! special-casings code (make-special-casing lower upper title folding final-sigma?))))))
|
||||
(let ([folding (list (hash-ref case-foldings code (lambda () code)))])
|
||||
(hash-set! special-casings code (make-special-casing lower upper title folding final-sigma?))))))
|
||||
(loop))))))
|
||||
|
||||
(define lower-case (make-hash-table 'equal))
|
||||
(define upper-case (make-hash-table 'equal))
|
||||
(define alphabetic (make-hash-table 'equal))
|
||||
(define lower-case (make-hash))
|
||||
(define upper-case (make-hash))
|
||||
(define alphabetic (make-hash))
|
||||
|
||||
(with-input-from-file "Unicode/DerivedCoreProperties.txt"
|
||||
(lambda ()
|
||||
|
@ -235,12 +235,12 @@
|
|||
[(string=? (caddr m) "Alphabetic") alphabetic]
|
||||
[else (error "unknown property section")])])
|
||||
(let loop ([i start])
|
||||
(hash-table-put! t i #t)
|
||||
(hash-set! t i #t)
|
||||
(unless (= i end)
|
||||
(loop (add1 i)))))))
|
||||
(loop))))))
|
||||
|
||||
(define white_spaces (make-hash-table 'equal))
|
||||
(define white_spaces (make-hash))
|
||||
|
||||
(with-input-from-file "Unicode/PropList.txt"
|
||||
(lambda ()
|
||||
|
@ -255,16 +255,16 @@
|
|||
(string->number (cadr m) 16)
|
||||
start))])
|
||||
(let loop ([i start])
|
||||
(hash-table-put! white_spaces i #t)
|
||||
(hash-set! white_spaces i #t)
|
||||
(unless (= i end)
|
||||
(loop (add1 i)))))))
|
||||
(loop))))))
|
||||
|
||||
(define decomp-ht (make-hash-table))
|
||||
(define k-decomp-ht (make-hash-table))
|
||||
(define compose-initial-ht (make-hash-table))
|
||||
(define compose-map (make-hash-table 'equal))
|
||||
(define do-not-compose-ht (make-hash-table 'equal))
|
||||
(define decomp-ht (make-hasheq))
|
||||
(define k-decomp-ht (make-hasheq))
|
||||
(define compose-initial-ht (make-hasheq))
|
||||
(define compose-map (make-hash))
|
||||
(define do-not-compose-ht (make-hash))
|
||||
|
||||
(with-input-from-file "Unicode/CompositionExclusions.txt"
|
||||
(lambda ()
|
||||
|
@ -274,7 +274,7 @@
|
|||
(let ([m (regexp-match #rx"^([0-9A-F.]+)" l)])
|
||||
(when m
|
||||
(let ([code (string->number (car m) 16)])
|
||||
(hash-table-put! do-not-compose-ht code #t))))
|
||||
(hash-set! do-not-compose-ht code #t))))
|
||||
(loop))))))
|
||||
|
||||
(define (extract-decomp decomp code)
|
||||
|
@ -289,15 +289,15 @@
|
|||
(string->number (caddr m) 16))])
|
||||
;; Canonical composition?
|
||||
(when (and (positive? b)
|
||||
(not (hash-table-get do-not-compose-ht
|
||||
code
|
||||
(lambda () #f))))
|
||||
(hash-table-put! compose-initial-ht a #t)
|
||||
(not (hash-ref do-not-compose-ht
|
||||
code
|
||||
(lambda () #f))))
|
||||
(hash-set! compose-initial-ht a #t)
|
||||
(let ([key (bitwise-ior (arithmetic-shift a 16) b)])
|
||||
(when (hash-table-get compose-map key (lambda () #f))
|
||||
(when (hash-ref compose-map key (lambda () #f))
|
||||
(error 'decomp "composition already mapped: ~e" key))
|
||||
(hash-table-put! compose-map key code)))
|
||||
(hash-table-put! decomp-ht code (cons a b))
|
||||
(hash-set! compose-map key code)))
|
||||
(hash-set! decomp-ht code (cons a b))
|
||||
#t)
|
||||
;; Compatibility decomp
|
||||
(let ([seq
|
||||
|
@ -307,7 +307,7 @@
|
|||
(cons (string->number (cadr m) 16)
|
||||
(loop (caddr m)))
|
||||
null)))])
|
||||
(hash-table-put! k-decomp-ht code seq)
|
||||
(hash-set! k-decomp-ht code seq)
|
||||
#t)))))
|
||||
|
||||
(call-with-input-file "Unicode/UnicodeData.txt"
|
||||
|
@ -328,7 +328,7 @@
|
|||
[up (string->number (cadddr (cddddr m)) 16)]
|
||||
[down (string->number (cadddr (cddddr (cdr m))) 16)]
|
||||
[title (string->number (cadddr (cddddr (cddr m))) 16)])
|
||||
(let ([alphabetic? (hash-table-get alphabetic code #f)]
|
||||
(let ([alphabetic? (hash-ref alphabetic code #f)]
|
||||
[numeric? (not (string=? numeric ""))]
|
||||
[symbolic? (member cat sym-cats)]
|
||||
[punctuation? (member cat punc-cats)])
|
||||
|
@ -341,8 +341,8 @@
|
|||
;; Decomposition
|
||||
(extract-decomp decomp code)
|
||||
;; special-casing
|
||||
(or (hash-table-get special-casings code (lambda () #f))
|
||||
(hash-table-get special-case-foldings code (lambda () #f)))
|
||||
(or (hash-ref special-casings code (lambda () #f))
|
||||
(hash-ref special-case-foldings code (lambda () #f)))
|
||||
;; case-ignoreable
|
||||
(or (member code midletters)
|
||||
(member cat '("Mn" "Me" "Cf" "Lm" "Sk")))
|
||||
|
@ -351,9 +351,9 @@
|
|||
numeric?
|
||||
symbolic?
|
||||
punctuation?
|
||||
(member cat mark-cats))
|
||||
(member cat graphic-cats))
|
||||
;; lowercase:
|
||||
(hash-table-get lower-case code (lambda () #f))
|
||||
(hash-ref lower-case code (lambda () #f))
|
||||
#;
|
||||
(and (not (<= #x2000 code #x2FFF))
|
||||
(not down)
|
||||
|
@ -361,7 +361,7 @@
|
|||
(regexp-match #rx"SMALL LETTER" name)
|
||||
(regexp-match #rx"SMALL LIGATURE" name)))
|
||||
;; uppercase;
|
||||
(hash-table-get upper-case code (lambda () #f))
|
||||
(hash-ref upper-case code (lambda () #f))
|
||||
#;
|
||||
(and (not (<= #x2000 code #x2FFF))
|
||||
(not up)
|
||||
|
@ -381,7 +381,7 @@
|
|||
;; SOMETHING - this bit not yet used
|
||||
#f
|
||||
;; whitespace
|
||||
(hash-table-get white_spaces code #f)
|
||||
(hash-ref white_spaces code #f)
|
||||
#;
|
||||
(or (member cat space-cats)
|
||||
(member code '(#x9 #xa #xb #xc #xd #x85)))
|
||||
|
@ -400,7 +400,7 @@
|
|||
(if up (- up code) 0)
|
||||
(if down (- down code) 0)
|
||||
(if title (- title code) 0)
|
||||
(let ([case-fold (hash-table-get case-foldings code (lambda () #f))])
|
||||
(let ([case-fold (hash-ref case-foldings code (lambda () #f))])
|
||||
(if case-fold (- case-fold code) 0))
|
||||
combining)
|
||||
;; Category
|
||||
|
@ -409,14 +409,14 @@
|
|||
combining))
|
||||
(loop code))))))))
|
||||
|
||||
(hash-table-for-each compose-initial-ht
|
||||
(lambda (k v)
|
||||
;; A canonical decomposition that starts with a non-0 combining
|
||||
;; class is not re-created in a canonical composition. There
|
||||
;; are only two such leading character as of Unicode 4.0:
|
||||
;; U+0308 and U+0F71.
|
||||
(when (zero? (hash-table-get combining-class-ht k))
|
||||
(set-compose-initial! k))))
|
||||
(hash-for-each compose-initial-ht
|
||||
(lambda (k v)
|
||||
;; A canonical decomposition that starts with a non-0 combining
|
||||
;; class is not re-created in a canonical composition. There
|
||||
;; are only two such leading character as of Unicode 4.0:
|
||||
;; U+0308 and U+0F71.
|
||||
(when (zero? (hash-ref combining-class-ht k))
|
||||
(set-compose-initial! k))))
|
||||
|
||||
;; Remove compositions from compose map that start with
|
||||
;; a character whose combining class is not 0. As of Unicode
|
||||
|
@ -424,12 +424,12 @@
|
|||
;; U+0F75, and U+0F81.
|
||||
(for-each (lambda (k)
|
||||
(let ([a (arithmetic-shift k -16)])
|
||||
(unless (zero? (hash-table-get combining-class-ht a))
|
||||
(hash-table-remove! compose-map k))))
|
||||
(hash-table-map compose-map (lambda (k v) k)))
|
||||
(unless (zero? (hash-ref combining-class-ht a))
|
||||
(hash-remove! compose-map k))))
|
||||
(hash-map compose-map (lambda (k v) k)))
|
||||
|
||||
(define k-decomp-map-ht (make-hash-table))
|
||||
(define k-decomp-strs-ht (make-hash-table 'equal))
|
||||
(define k-decomp-map-ht (make-hasheq))
|
||||
(define k-decomp-strs-ht (make-hash))
|
||||
(define k-decomp-strs-len 0)
|
||||
(define k-decomp-strs null)
|
||||
|
||||
|
@ -438,12 +438,12 @@
|
|||
[(empty? s) empty]
|
||||
[(empty? (cdr s))
|
||||
(let ([code (car s)])
|
||||
(let ([v (hash-table-get decomp-ht code (lambda () #f))])
|
||||
(let ([v (hash-ref decomp-ht code (lambda () #f))])
|
||||
(if v
|
||||
(if (zero? (cdr v))
|
||||
(fold-decomp (list (car v)))
|
||||
(fold-decomp (list (car v) (cdr v))))
|
||||
(let ([v (hash-table-get k-decomp-ht code (lambda () #f))])
|
||||
(let ([v (hash-ref k-decomp-ht code (lambda () #f))])
|
||||
(if v
|
||||
(fold-decomp v)
|
||||
(list code))))))]
|
||||
|
@ -454,25 +454,25 @@
|
|||
(lambda (p)
|
||||
(let* ([code (car p)]
|
||||
[seq (fold-decomp (cdr p))]
|
||||
[pos (hash-table-get k-decomp-strs-ht seq
|
||||
(lambda ()
|
||||
(begin0
|
||||
k-decomp-strs-len
|
||||
(hash-table-put! k-decomp-strs-ht seq
|
||||
k-decomp-strs-len)
|
||||
(set! k-decomp-strs
|
||||
(append (reverse seq) k-decomp-strs))
|
||||
(set! k-decomp-strs-len (+ k-decomp-strs-len
|
||||
(length seq))))))])
|
||||
(hash-table-put! k-decomp-map-ht code (cons pos (length seq)))))
|
||||
[pos (hash-ref k-decomp-strs-ht seq
|
||||
(lambda ()
|
||||
(begin0
|
||||
k-decomp-strs-len
|
||||
(hash-set! k-decomp-strs-ht seq
|
||||
k-decomp-strs-len)
|
||||
(set! k-decomp-strs
|
||||
(append (reverse seq) k-decomp-strs))
|
||||
(set! k-decomp-strs-len (+ k-decomp-strs-len
|
||||
(length seq))))))])
|
||||
(hash-set! k-decomp-map-ht code (cons pos (length seq)))))
|
||||
;; Sort to keep it deterministic:
|
||||
(sort (hash-table-map k-decomp-ht cons)
|
||||
(sort (hash-map k-decomp-ht cons)
|
||||
(lambda (a b) (< (car a) (car b)))))
|
||||
|
||||
|
||||
(define vectors (make-hash-table 'equal))
|
||||
(define vectors2 (make-hash-table 'equal))
|
||||
(define vectors3 (make-hash-table 'equal))
|
||||
(define vectors (make-hash))
|
||||
(define vectors2 (make-hash))
|
||||
(define vectors3 (make-hash))
|
||||
|
||||
(define pos 0)
|
||||
(define pos2 0)
|
||||
|
@ -485,9 +485,9 @@
|
|||
(unless (= i hi-count)
|
||||
(let ([vec (vector-ref top i)])
|
||||
(when vec
|
||||
(unless (hash-table-get vectors vec (lambda () #f))
|
||||
(unless (hash-ref vectors vec (lambda () #f))
|
||||
(set-pos! (add1 (get-pos)))
|
||||
(hash-table-put! vectors vec (get-pos))))
|
||||
(hash-set! vectors vec (get-pos))))
|
||||
(loop (add1 i))))))
|
||||
|
||||
(hash-vectors! top vectors (lambda () pos) (lambda (v) (set! pos v)))
|
||||
|
@ -495,18 +495,18 @@
|
|||
(hash-vectors! top3 vectors3 (lambda () pos3) (lambda (v) (set! pos3 v)))
|
||||
|
||||
;; copy folding special cases to the special-cases table, if not there already:
|
||||
(hash-table-for-each special-case-foldings
|
||||
(lambda (k v)
|
||||
(let ([sc (hash-table-get special-casings k (lambda ()
|
||||
(let ([sc (make-special-casing
|
||||
(list k)
|
||||
(list k)
|
||||
(list k)
|
||||
(list k)
|
||||
#f)])
|
||||
(hash-table-put! special-casings k sc)
|
||||
sc)))])
|
||||
(set-special-casing-folding! sc v))))
|
||||
(hash-for-each special-case-foldings
|
||||
(lambda (k v)
|
||||
(let ([sc (hash-ref special-casings k (lambda ()
|
||||
(let ([sc (make-special-casing
|
||||
(list k)
|
||||
(list k)
|
||||
(list k)
|
||||
(list k)
|
||||
#f)])
|
||||
(hash-set! special-casings k sc)
|
||||
sc)))])
|
||||
(set-special-casing-folding! sc v))))
|
||||
|
||||
(define world-count (expt 2 10))
|
||||
|
||||
|
@ -515,16 +515,16 @@
|
|||
(printf "/* Character count: ~a */\n" ccount)
|
||||
(printf "/* Total bytes for all tables: ~a */\n\n"
|
||||
(+ (* (add1 low)
|
||||
(* 2 (add1 (length (hash-table-map vectors cons)))))
|
||||
(* 2 (add1 (length (hash-map vectors cons)))))
|
||||
(* (add1 low)
|
||||
(* 1 (add1 (length (hash-table-map vectors2 cons)))))
|
||||
(* 1 (add1 (length (hash-map vectors2 cons)))))
|
||||
(* (add1 low)
|
||||
(* 1 (add1 (length (hash-table-map vectors3 cons)))))
|
||||
(* (hash-table-count decomp-ht)
|
||||
(* 1 (add1 (length (hash-map vectors3 cons)))))
|
||||
(* (hash-count decomp-ht)
|
||||
8)
|
||||
(* (hash-table-count compose-map)
|
||||
(* (hash-count compose-map)
|
||||
2)
|
||||
(* (hash-table-count k-decomp-map-ht) (+ 4 1 2))
|
||||
(* (hash-count k-decomp-map-ht) (+ 4 1 2))
|
||||
(* 2 k-decomp-strs-len)
|
||||
(* 4 4 (unbox (cdr cases)))
|
||||
(* 4 (* 2 hi-count))))
|
||||
|
@ -534,13 +534,13 @@
|
|||
" via the scheme_uchar_find() macro in scheme.h. */\n\n"))
|
||||
|
||||
(printf "/* Character properties: */\n")
|
||||
(printf "unsigned short *scheme_uchar_table[~a];\n" hi-count)
|
||||
(printf "READ_ONLY unsigned short *scheme_uchar_table[~a];\n" hi-count)
|
||||
|
||||
(printf "\n/* Character case mapping as index into scheme_uchar_ups, etc.: */\n")
|
||||
(printf "unsigned char *scheme_uchar_cases_table[~a];\n" hi-count)
|
||||
(printf "READ_ONLY unsigned char *scheme_uchar_cases_table[~a];\n" hi-count)
|
||||
|
||||
(printf "\n/* Character general categories: */\n")
|
||||
(printf "unsigned char *scheme_uchar_cats_table[~a];\n" hi-count)
|
||||
(printf "READ_ONLY unsigned char *scheme_uchar_cats_table[~a];\n" hi-count)
|
||||
|
||||
(printf "\n/* The udata... arrays are used by init_uchar_table to fill the above mappings.*/\n\n")
|
||||
|
||||
|
@ -559,11 +559,11 @@
|
|||
(loop (add1 i))))))
|
||||
|
||||
(define (print-table type suffix vectors pos hex?)
|
||||
(printf "static unsigned ~a udata~a[] = {\n" type suffix)
|
||||
(printf "READ_ONLY static unsigned ~a udata~a[] = {\n" type suffix)
|
||||
(print-row (make-vector (add1 low) 0) 0 pos hex?)
|
||||
(map (lambda (p)
|
||||
(print-row (car p) (cdr p) pos hex?))
|
||||
(sort (hash-table-map vectors cons)
|
||||
(sort (hash-map vectors cons)
|
||||
(lambda (a b) (< (cdr a) (cdr b)))))
|
||||
(printf "};\n"))
|
||||
(print-table "short" "" vectors pos #t)
|
||||
|
@ -571,14 +571,14 @@
|
|||
(print-table "char" "_cases" vectors2 pos2 #f)
|
||||
(print-table "char" "_cats" vectors3 pos3 #f)
|
||||
|
||||
(printf "\n/* Case mapping size: ~a */\n" (hash-table-count (car cases)))
|
||||
(printf "\n/* Case mapping size: ~a */\n" (hash-count (car cases)))
|
||||
(printf "/* Find an index into the ups, downs, etc. table for a character\n")
|
||||
(printf " by using scheme_uchar_cases_table; then, the value at the index\n")
|
||||
(printf " is relative to the original character (except for combining class,\n")
|
||||
(printf " of course). */\n")
|
||||
|
||||
(define (print-shift t end select type name)
|
||||
(printf "\n~a scheme_uchar_~a[] = {\n" type name)
|
||||
(printf "\nREAD_ONLY ~a scheme_uchar_~a[] = {\n" type name)
|
||||
(for-each (lambda (p)
|
||||
(printf " ~a~a"
|
||||
(select (car p))
|
||||
|
@ -587,7 +587,7 @@
|
|||
","))
|
||||
(when (zero? (modulo (add1 (cdr p)) 16))
|
||||
(newline)))
|
||||
(sort (hash-table-map t cons)
|
||||
(sort (hash-map t cons)
|
||||
(lambda (a b) (< (cdr a) (cdr b)))))
|
||||
(printf " };\n"))
|
||||
|
||||
|
@ -597,10 +597,10 @@
|
|||
(print-shift (car cases) (unbox (cdr cases)) cadddr "int" "folds")
|
||||
(print-shift (car cases) (unbox (cdr cases)) (lambda (x) (cadddr (cdr x))) "unsigned char" "combining_classes")
|
||||
|
||||
(let ([l (sort (hash-table-map general-categories cons)
|
||||
(let ([l (sort (hash-map general-categories cons)
|
||||
(lambda (a b) (< (cdr a) (cdr b))))])
|
||||
(printf "\n#define NUM_GENERAL_CATEGORIES ~a\n" (length l))
|
||||
(printf "static const char *general_category_names[] = {")
|
||||
(printf "READ_ONLY static const char *general_category_names[] = {")
|
||||
(for-each (lambda (c)
|
||||
(printf (if (zero? (cdr c))
|
||||
"\n ~s"
|
||||
|
@ -614,7 +614,7 @@
|
|||
|
||||
(printf "\n#define NUM_UCHAR_RANGES ~a\n" (length ranges))
|
||||
(printf "\n#define URANGE_VARIES 0x40000000\n")
|
||||
(printf "static int mapped_uchar_ranges[] = {\n")
|
||||
(printf "READ_ONLY static int mapped_uchar_ranges[] = {\n")
|
||||
(for-each (lambda (r)
|
||||
(printf " 0x~x, 0x~x~a~a\n"
|
||||
(car r)
|
||||
|
@ -643,7 +643,7 @@
|
|||
(if (equal? vec (vector-ref top j))
|
||||
(loop (add1 j))
|
||||
(- j i)))]
|
||||
[vec-pos (* (add1 low) (hash-table-get vectors vec))])
|
||||
[vec-pos (* (add1 low) (hash-ref vectors vec))])
|
||||
(if (> same-count 4)
|
||||
(begin
|
||||
(printf " for (i = ~a; i < ~a; i++) {\n"
|
||||
|
@ -686,10 +686,10 @@
|
|||
(set! special-count (+ special-count (length l))))
|
||||
(- special-count (length l))))
|
||||
|
||||
(printf "#define NUM_SPECIAL_CASINGS ~a\n\n" (hash-table-count special-casings))
|
||||
(printf "static int uchar_special_casings[] = {\n")
|
||||
(printf "#define NUM_SPECIAL_CASINGS ~a\n\n" (hash-count special-casings))
|
||||
(printf "READ_ONLY static int uchar_special_casings[] = {\n")
|
||||
(printf " /* code, down len, off, up len, off, title len, off, fold len, off, final-sigma? */\n")
|
||||
(let ([n (hash-table-count special-casings)])
|
||||
(let ([n (hash-count special-casings)])
|
||||
(for-each (lambda (p)
|
||||
(set! n (sub1 n))
|
||||
(let ([code (car p)]
|
||||
|
@ -706,11 +706,11 @@
|
|||
(length (special-casing-folding sc)) folding-start
|
||||
(if (special-casing-final-sigma? sc) 1 0)
|
||||
(if (zero? n) " " ",\n")))))
|
||||
(sort (hash-table-map special-casings cons)
|
||||
(sort (hash-map special-casings cons)
|
||||
(lambda (a b) (< (car a) (car b))))))
|
||||
(printf "};\n")
|
||||
(printf "\n/* Offsets in scheme_uchar_special_casings point into here: */\n")
|
||||
(printf "static int uchar_special_casing_data[] = {\n ")
|
||||
(printf "READ_ONLY static int uchar_special_casing_data[] = {\n ")
|
||||
(let ([n 0])
|
||||
(for-each (lambda (v)
|
||||
(printf
|
||||
|
@ -725,7 +725,7 @@
|
|||
|
||||
(printf "\n#define SPECIAL_CASE_FOLD_MAX ~a\n" (apply
|
||||
max
|
||||
(hash-table-map
|
||||
(hash-map
|
||||
special-casings
|
||||
(lambda (k v)
|
||||
(length (special-casing-folding v))))))
|
||||
|
@ -735,45 +735,45 @@
|
|||
|
||||
(let ()
|
||||
(define canon-composes
|
||||
(list->vector (sort (hash-table-map compose-map cons)
|
||||
(list->vector (sort (hash-map compose-map cons)
|
||||
(lambda (a b) (< (car a) (car b))))))
|
||||
(define count (hash-table-count compose-map))
|
||||
(define count (hash-count compose-map))
|
||||
|
||||
(define-values (all-composes decomp-vector long-composes)
|
||||
(let ([decomp-pos-ht (make-hash-table)]
|
||||
(let ([decomp-pos-ht (make-hasheq)]
|
||||
[counter count]
|
||||
[extra null]
|
||||
[long-counter 0]
|
||||
[longs null])
|
||||
(hash-table-for-each decomp-ht
|
||||
(lambda (k v)
|
||||
;; Use table of composed shorts:
|
||||
(let ([key (+ (arithmetic-shift (car v) 16) (cdr v))])
|
||||
(let ([pos
|
||||
(if (and ((car v) . <= . #xFFFF)
|
||||
((cdr v) . <= . #xFFFF))
|
||||
(if (hash-table-get compose-map key (lambda () #f))
|
||||
;; Find index in comp vector:
|
||||
(let loop ([i 0])
|
||||
(if (= key (car (vector-ref canon-composes i)))
|
||||
i
|
||||
(loop (add1 i))))
|
||||
;; Add to compose table:
|
||||
(begin0
|
||||
counter
|
||||
(set! extra (cons (cons key #f) extra))
|
||||
(set! counter (add1 counter))))
|
||||
;; Use table of long+long sequences:
|
||||
(begin
|
||||
(set! long-counter (add1 long-counter))
|
||||
(set! longs (cons (cdr v) (cons (car v) longs)))
|
||||
(- long-counter)))])
|
||||
(hash-table-put! decomp-pos-ht k pos)))))
|
||||
(hash-for-each decomp-ht
|
||||
(lambda (k v)
|
||||
;; Use table of composed shorts:
|
||||
(let ([key (+ (arithmetic-shift (car v) 16) (cdr v))])
|
||||
(let ([pos
|
||||
(if (and ((car v) . <= . #xFFFF)
|
||||
((cdr v) . <= . #xFFFF))
|
||||
(if (hash-ref compose-map key (lambda () #f))
|
||||
;; Find index in comp vector:
|
||||
(let loop ([i 0])
|
||||
(if (= key (car (vector-ref canon-composes i)))
|
||||
i
|
||||
(loop (add1 i))))
|
||||
;; Add to compose table:
|
||||
(begin0
|
||||
counter
|
||||
(set! extra (cons (cons key #f) extra))
|
||||
(set! counter (add1 counter))))
|
||||
;; Use table of long+long sequences:
|
||||
(begin
|
||||
(set! long-counter (add1 long-counter))
|
||||
(set! longs (cons (cdr v) (cons (car v) longs)))
|
||||
(- long-counter)))])
|
||||
(hash-set! decomp-pos-ht k pos)))))
|
||||
(values
|
||||
(list->vector (append (vector->list canon-composes)
|
||||
(reverse extra)))
|
||||
(list->vector
|
||||
(sort (hash-table-map decomp-pos-ht cons)
|
||||
(sort (hash-map decomp-pos-ht cons)
|
||||
(lambda (a b) (< (car a) (car b)))))
|
||||
(list->vector (reverse longs)))))
|
||||
|
||||
|
@ -783,7 +783,7 @@
|
|||
|
||||
(let ([print-compose-data
|
||||
(lambda (type suffix which composes count hex? row-len)
|
||||
(printf "static ~a utable_~a[] = {\n"
|
||||
(printf "READ_ONLY static ~a utable_~a[] = {\n"
|
||||
type suffix)
|
||||
(let loop ([i 0])
|
||||
(let ([v (which (vector-ref composes i))])
|
||||
|
@ -826,7 +826,7 @@
|
|||
|
||||
(let ([k-decomp-vector
|
||||
(list->vector
|
||||
(sort (hash-table-map k-decomp-map-ht cons)
|
||||
(sort (hash-map k-decomp-map-ht cons)
|
||||
(lambda (a b) (< (car a) (car b)))))])
|
||||
(printf "\n")
|
||||
(printf "/* utable_kompat_decomp_keys identifies characters that have a compatability decomposition;\n")
|
||||
|
|
|
@ -47,7 +47,7 @@ READ_ONLY static unsigned short udata[] = {
|
|||
0x8, 0x8, 0x8, 0x8, 0x8, 0x18, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8,
|
||||
0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8,
|
||||
0x4011, 0x804, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0xd802, 0x802, 0x4c80, 0x804, 0x802, 0x1000, 0x802, 0x5802,
|
||||
0x802, 0x802, 0x4840, 0x4840, 0x5802, 0x4c80, 0x802, 0x1804, 0x5802, 0x4840, 0x4c80, 0x804, 0x4000, 0x4000, 0x4000, 0x804,
|
||||
0x802, 0x802, 0x4840, 0x4840, 0x5802, 0x4c80, 0x802, 0x1804, 0x5802, 0x4840, 0x4c80, 0x804, 0x4800, 0x4800, 0x4800, 0x804,
|
||||
0x4a80, 0x4a80, 0xca80, 0x4a80, 0xca80, 0xca80, 0x8a80, 0xca80, 0x4a80, 0x4a80, 0xca80, 0x4a80, 0x4a80, 0x4a80, 0x4a80, 0xca80,
|
||||
0xa80, 0x4a80, 0x4a80, 0x4a80, 0xca80, 0xca80, 0xca80, 0x802, 0x8a80, 0x4a80, 0x4a80, 0x4a80, 0xca80, 0x4a80, 0xa80, 0x2c80,
|
||||
0x4c80, 0x4c80, 0xcc80, 0x4c80, 0xcc80, 0xcc80, 0x8c80, 0xcc80, 0x4c80, 0x4c80, 0xcc80, 0x4c80, 0x4c80, 0x4c80, 0x4c80, 0xcc80,
|
||||
|
@ -187,7 +187,7 @@ READ_ONLY static unsigned short udata[] = {
|
|||
0x880, 0x1880, 0x1880, 0x1880, 0x1880, 0x0, 0x0, 0x8880, 0x880, 0x0, 0x0, 0x4880, 0x4880, 0x1800, 0x880, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x880, 0x0, 0x0, 0x0, 0x0, 0x4880, 0x4880, 0x0, 0x4880,
|
||||
0x880, 0x880, 0x1880, 0x1880, 0x0, 0x0, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840,
|
||||
0x880, 0x880, 0x802, 0x802, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x802, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x880, 0x880, 0x802, 0x802, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x802, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
/* 10 */
|
||||
0x0, 0x1880, 0x1880, 0x880, 0x0, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x0, 0x0, 0x0, 0x0, 0x880,
|
||||
0x880, 0x0, 0x0, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880,
|
||||
|
@ -221,7 +221,7 @@ READ_ONLY static unsigned short udata[] = {
|
|||
0x1880, 0x880, 0x880, 0x0, 0x0, 0x0, 0x8880, 0x8880, 0x880, 0x0, 0x4880, 0x4880, 0x4880, 0x1800, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x880, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840,
|
||||
0x0, 0x0, 0x0, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x800, 0x800, 0x800, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
/* 12 */
|
||||
0x0, 0x880, 0x880, 0x880, 0x0, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x0, 0x880, 0x880,
|
||||
0x880, 0x0, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880,
|
||||
|
@ -276,8 +276,8 @@ READ_ONLY static unsigned short udata[] = {
|
|||
/* 15 */
|
||||
0x880, 0x802, 0x802, 0x802, 0x804, 0x804, 0x804, 0x804, 0x804, 0x804, 0x804, 0x804, 0x4804, 0x804, 0x804, 0x804,
|
||||
0x804, 0x804, 0x804, 0x802, 0x802, 0x802, 0x802, 0x802, 0x1800, 0x1800, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802,
|
||||
0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x802, 0x1800, 0x802, 0x1800, 0x802, 0x1800, 0x804, 0x804, 0x804, 0x804, 0x800, 0x800,
|
||||
0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800,
|
||||
0x800, 0x800, 0x800, 0x800, 0x802, 0x1800, 0x802, 0x1800, 0x802, 0x1800, 0x804, 0x804, 0x804, 0x804, 0x800, 0x800,
|
||||
0x880, 0x880, 0x880, 0x4880, 0x880, 0x880, 0x880, 0x880, 0x0, 0x880, 0x880, 0x880, 0x880, 0x4880, 0x880, 0x880,
|
||||
0x880, 0x880, 0x4880, 0x880, 0x880, 0x880, 0x880, 0x4880, 0x880, 0x880, 0x880, 0x880, 0x4880, 0x880, 0x880, 0x880,
|
||||
0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x4880, 0x880, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
|
@ -349,7 +349,7 @@ READ_ONLY static unsigned short udata[] = {
|
|||
0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880,
|
||||
0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x0, 0x0, 0x0, 0x0, 0x1880,
|
||||
0x802, 0x804, 0x804, 0x804, 0x804, 0x804, 0x804, 0x804, 0x804, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840,
|
||||
0x840, 0x840, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x840, 0x840, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x0, 0x0, 0x0,
|
||||
0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880,
|
||||
0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880,
|
||||
|
@ -425,7 +425,7 @@ READ_ONLY static unsigned short udata[] = {
|
|||
0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x1880, 0x880, 0x880, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800,
|
||||
0x1800, 0x1800, 0x1800, 0x1800, 0x804, 0x804, 0x804, 0x1880, 0x804, 0x804, 0x804, 0x802, 0x880, 0x1800, 0x0, 0x0,
|
||||
0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
/* 24 */
|
||||
0x804, 0x804, 0x804, 0x804, 0x804, 0x804, 0x804, 0x804, 0x804, 0x804, 0x804, 0x1800, 0x1800, 0x1800, 0x11, 0x0,
|
||||
0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
|
@ -568,7 +568,7 @@ READ_ONLY static unsigned short udata[] = {
|
|||
0x4802, 0x4802, 0x4802, 0x802, 0x4a80, 0x802, 0x4a80, 0x802, 0x4a80, 0x802, 0x4a80, 0x4a80, 0x4a80, 0x4a80, 0x802, 0x4c80,
|
||||
0x4a80, 0x4a80, 0xa80, 0x4a80, 0x4c80, 0x4880, 0x4880, 0x4880, 0x4880, 0x4c80, 0x802, 0x4802, 0x4c80, 0x4c80, 0x4a80, 0x4a80,
|
||||
0x4802, 0x802, 0x802, 0x802, 0x802, 0x4a80, 0x4c80, 0x4c80, 0x4c80, 0x4c80, 0x802, 0x802, 0x802, 0x802, 0xc80, 0x0,
|
||||
0x0, 0x0, 0x0, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000,
|
||||
0x0, 0x0, 0x0, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800,
|
||||
0x4a80, 0x4a80, 0x4a80, 0x4a80, 0x4a80, 0x4a80, 0x4a80, 0x4a80, 0x4a80, 0x4a80, 0x4a80, 0x4a80, 0x4a80, 0x4a80, 0x4a80, 0x4a80,
|
||||
0x4c80, 0x4c80, 0x4c80, 0x4c80, 0x4c80, 0x4c80, 0x4c80, 0x4c80, 0x4c80, 0x4c80, 0x4c80, 0x4c80, 0x4c80, 0x4c80, 0x4c80, 0x4c80,
|
||||
0x880, 0x880, 0x880, 0xa80, 0xc80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
|
@ -620,16 +620,16 @@ READ_ONLY static unsigned short udata[] = {
|
|||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x4840, 0x4840, 0x4840, 0x4840, 0x4840, 0x4840, 0x4840, 0x4840, 0x4840, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000,
|
||||
0x4000, 0x4000, 0x4000, 0x4000, 0x4840, 0x4840, 0x4840, 0x4840, 0x4840, 0x4840, 0x4840, 0x4840, 0x4840, 0x4000, 0x4000, 0x4000,
|
||||
0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4840, 0x4840, 0x4840, 0x4840, 0x4840, 0x4840, 0x4840, 0x4840,
|
||||
0x4840, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4802, 0x4802, 0x4802, 0x4802,
|
||||
0x4840, 0x4840, 0x4840, 0x4840, 0x4840, 0x4840, 0x4840, 0x4840, 0x4840, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800,
|
||||
0x4800, 0x4800, 0x4800, 0x4800, 0x4840, 0x4840, 0x4840, 0x4840, 0x4840, 0x4840, 0x4840, 0x4840, 0x4840, 0x4800, 0x4800, 0x4800,
|
||||
0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4840, 0x4840, 0x4840, 0x4840, 0x4840, 0x4840, 0x4840, 0x4840,
|
||||
0x4840, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4802, 0x4802, 0x4802, 0x4802,
|
||||
0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802,
|
||||
0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4a82, 0x4a82, 0x4a82, 0x4a82, 0x4a82, 0x4a82, 0x4a82, 0x4a82, 0x4a82, 0x4a82,
|
||||
0x4a82, 0x4a82, 0x4a82, 0x4a82, 0x4a82, 0x4a82, 0x4a82, 0x4a82, 0x4a82, 0x4a82, 0x4a82, 0x4a82, 0x4a82, 0x4a82, 0x4a82, 0x4a82,
|
||||
0x4c82, 0x4c82, 0x4c82, 0x4c82, 0x4c82, 0x4c82, 0x4c82, 0x4c82, 0x4c82, 0x4c82, 0x4c82, 0x4c82, 0x4c82, 0x4c82, 0x4c82, 0x4c82,
|
||||
0x4c82, 0x4c82, 0x4c82, 0x4c82, 0x4c82, 0x4c82, 0x4c82, 0x4c82, 0x4c82, 0x4c82, 0x4840, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x0, 0x840,
|
||||
0x4c82, 0x4c82, 0x4c82, 0x4c82, 0x4c82, 0x4c82, 0x4c82, 0x4c82, 0x4c82, 0x4c82, 0x4840, 0x800, 0x800, 0x800, 0x800, 0x800,
|
||||
0x800, 0x800, 0x800, 0x800, 0x800, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x800, 0x840,
|
||||
/* 36 */
|
||||
0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802,
|
||||
0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802,
|
||||
|
@ -672,9 +672,9 @@ READ_ONLY static unsigned short udata[] = {
|
|||
0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x0, 0x802, 0x0, 0x802,
|
||||
0x802, 0x802, 0x802, 0x0, 0x0, 0x0, 0x802, 0x0, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x0,
|
||||
0x0, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x804, 0x804, 0x804, 0x804, 0x804, 0x804, 0x804, 0x804,
|
||||
0x804, 0x804, 0x804, 0x804, 0x804, 0x804, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x0,
|
||||
0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x0, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840,
|
||||
0x840, 0x840, 0x840, 0x0, 0x802, 0x0, 0x0, 0x0, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802,
|
||||
0x804, 0x804, 0x804, 0x804, 0x804, 0x804, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x800,
|
||||
0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840, 0x800, 0x840, 0x840, 0x840, 0x840, 0x840, 0x840,
|
||||
0x840, 0x840, 0x840, 0x800, 0x802, 0x0, 0x0, 0x0, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802,
|
||||
0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802,
|
||||
0x0, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x0,
|
||||
0x802, 0x802, 0x802, 0x802, 0x802, 0x804, 0x804, 0x802, 0x802, 0x802, 0x802, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
|
@ -748,7 +748,7 @@ READ_ONLY static unsigned short udata[] = {
|
|||
0xa80, 0xc80, 0xa80, 0xc80, 0xa80, 0xc80, 0xa80, 0xc80, 0xa80, 0xc80, 0xa80, 0xc80, 0xa80, 0xc80, 0xa80, 0xc80,
|
||||
0xa80, 0xc80, 0xa80, 0xc80, 0xa80, 0xc80, 0xa80, 0xc80, 0xa80, 0xc80, 0xa80, 0xc80, 0xa80, 0xc80, 0xa80, 0xc80,
|
||||
0xa80, 0xc80, 0xa80, 0xc80, 0xc80, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x804, 0x804, 0x804, 0x804, 0x0, 0x804, 0x804,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x804, 0x804, 0x804, 0x804, 0x800, 0x804, 0x804,
|
||||
/* 43 */
|
||||
0xc80, 0xc80, 0xc80, 0xc80, 0xc80, 0xc80, 0xc80, 0xc80, 0xc80, 0xc80, 0xc80, 0xc80, 0xc80, 0xc80, 0xc80, 0xc80,
|
||||
0xc80, 0xc80, 0xc80, 0xc80, 0xc80, 0xc80, 0xc80, 0xc80, 0xc80, 0xc80, 0xc80, 0xc80, 0xc80, 0xc80, 0xc80, 0xc80,
|
||||
|
@ -827,7 +827,7 @@ READ_ONLY static unsigned short udata[] = {
|
|||
0x4880, 0x4880, 0x4880, 0x4880, 0x4880, 0x4880, 0x4880, 0x4880, 0x4880, 0x4880, 0x4880, 0x4880, 0x4880, 0x4880, 0x4880, 0x4880,
|
||||
0x4880, 0x4880, 0x4880, 0x4880, 0x4880, 0x4880, 0x4880, 0x4880, 0x4880, 0x4880, 0x4880, 0x4880, 0x4880, 0x4880, 0x4880, 0x4880,
|
||||
0x4880, 0x4880, 0x4880, 0x4880, 0x4880, 0x4880, 0x4880, 0x4880, 0x4880, 0x4880, 0x4880, 0x4880, 0x4880, 0x4880, 0x4880, 0x0,
|
||||
0x802, 0x802, 0x4000, 0x4000, 0x4000, 0x4000, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802,
|
||||
0x802, 0x802, 0x4800, 0x4800, 0x4800, 0x4800, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802,
|
||||
0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880,
|
||||
0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802,
|
||||
|
@ -837,16 +837,16 @@ READ_ONLY static unsigned short udata[] = {
|
|||
/* 48 */
|
||||
0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802,
|
||||
0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x0,
|
||||
0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802,
|
||||
0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802,
|
||||
0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802,
|
||||
0x4802, 0x4802, 0x4802, 0x4802, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x4802, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000,
|
||||
0x4802, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800,
|
||||
0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802,
|
||||
0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x802,
|
||||
0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802,
|
||||
0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802,
|
||||
0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802,
|
||||
0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802,
|
||||
0x4802, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000,
|
||||
0x4802, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800, 0x4800,
|
||||
0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802,
|
||||
0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802,
|
||||
0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802, 0x4802,
|
||||
|
@ -1124,15 +1124,15 @@ READ_ONLY static unsigned short udata[] = {
|
|||
0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880,
|
||||
0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
/* 65 */
|
||||
0x804, 0x804, 0x802, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802,
|
||||
0x804, 0x804, 0x802, 0x0, 0x0, 0x0, 0x0, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800,
|
||||
0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800,
|
||||
0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800,
|
||||
0x800, 0x800, 0x800, 0x800, 0x0, 0x0, 0x0, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802,
|
||||
0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880,
|
||||
0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880,
|
||||
0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880,
|
||||
0x880, 0x880, 0x880, 0x880, 0x880, 0x0, 0x0, 0x0, 0x0, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802,
|
||||
0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x880, 0x880, 0x880, 0x880, 0x880, 0x800, 0x800, 0x800, 0x800, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802,
|
||||
0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x800, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
|
@ -1143,7 +1143,7 @@ READ_ONLY static unsigned short udata[] = {
|
|||
/* 66 */
|
||||
0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880,
|
||||
0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x800, 0x800, 0x800, 0x800, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880,
|
||||
0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
|
@ -1193,7 +1193,7 @@ READ_ONLY static unsigned short udata[] = {
|
|||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
/* 69 */
|
||||
0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880,
|
||||
0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x804,
|
||||
0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x800, 0x800, 0x800, 0x800, 0x0, 0x0, 0x0, 0x0, 0x0, 0x804,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
|
@ -1213,7 +1213,7 @@ READ_ONLY static unsigned short udata[] = {
|
|||
0x880, 0x880, 0x880, 0x880, 0x0, 0x880, 0x880, 0x880, 0x0, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880,
|
||||
0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880, 0x880,
|
||||
0x880, 0x880, 0x880, 0x880, 0x0, 0x0, 0x0, 0x0, 0x1800, 0x1800, 0x1800, 0x0, 0x0, 0x0, 0x0, 0x1800,
|
||||
0x840, 0x840, 0x840, 0x840, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x840, 0x840, 0x840, 0x840, 0x800, 0x800, 0x800, 0x800, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x804, 0x804, 0x804, 0x804, 0x804, 0x804, 0x804, 0x804, 0x804, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
|
@ -1317,8 +1317,8 @@ READ_ONLY static unsigned short udata[] = {
|
|||
0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802,
|
||||
0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802,
|
||||
0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x802, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800, 0x800,
|
||||
0x800, 0x800, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
|
|
Loading…
Reference in New Issue
Block a user