Mercurial > emacs
comparison lisp/international/ccl.el @ 30705:b37405134317
(ccl-embed-data): Make ccl-program-vector
longer if necessary.
(ccl-embed-code): Call ccl-embed-data to store CODE in
ccl-program-vector.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Wed, 09 Aug 2000 09:02:46 +0000 |
parents | 1fa36ef2bb6c |
children | dcfcae58d8d6 |
comparison
equal
deleted
inserted
replaced
30704:f0f3b74ad28e | 30705:b37405134317 |
---|---|
244 ;; Embed integer DATA in `ccl-program-vector' at `ccl-current-ic' and | 244 ;; Embed integer DATA in `ccl-program-vector' at `ccl-current-ic' and |
245 ;; increment it. If IC is specified, embed DATA at IC. | 245 ;; increment it. If IC is specified, embed DATA at IC. |
246 (defun ccl-embed-data (data &optional ic) | 246 (defun ccl-embed-data (data &optional ic) |
247 (if ic | 247 (if ic |
248 (aset ccl-program-vector ic data) | 248 (aset ccl-program-vector ic data) |
249 (let ((len (length ccl-program-vector))) | |
250 (if (>= ccl-current-ic len) | |
251 (let ((new (make-vector (* len 2) nil))) | |
252 (while (> len 0) | |
253 (setq len (1- len)) | |
254 (aset new len (aref ccl-program-vector len))) | |
255 (setq ccl-program-vector new)))) | |
249 (aset ccl-program-vector ccl-current-ic data) | 256 (aset ccl-program-vector ccl-current-ic data) |
250 (setq ccl-current-ic (1+ ccl-current-ic)))) | 257 (setq ccl-current-ic (1+ ccl-current-ic)))) |
251 | 258 |
252 ;; Embed pair of SYMBOL and PROP where (get SYMBOL PROP) should give | 259 ;; Embed pair of SYMBOL and PROP where (get SYMBOL PROP) should give |
253 ;; proper index number for SYMBOL. PROP should be | 260 ;; proper index number for SYMBOL. PROP should be |
300 (if (symbolp reg) (get reg 'ccl-register-number) reg) 5) | 307 (if (symbolp reg) (get reg 'ccl-register-number) reg) 5) |
301 (if reg2 | 308 (if reg2 |
302 (logior (ash (get reg2 'ccl-register-number) 8) | 309 (logior (ash (get reg2 'ccl-register-number) 8) |
303 (ash data 11)) | 310 (ash data 11)) |
304 (ash data 8))))) | 311 (ash data 8))))) |
305 (aset ccl-program-vector ccl-current-ic code) | 312 (ccl-embed-data code))) |
306 (setq ccl-current-ic (1+ ccl-current-ic)))) | |
307 | 313 |
308 ;; extended ccl command format | 314 ;; extended ccl command format |
309 ;; |- 14-bit -|- 3-bit --|- 3-bit --|- 3-bit --|- 5-bit -| | 315 ;; |- 14-bit -|- 3-bit --|- 3-bit --|- 3-bit --|- 5-bit -| |
310 ;; |- EX-OP --|-- REG3 --|-- REG2 --|-- REG ---|-- OP ---| | 316 ;; |- EX-OP --|-- REG3 --|-- REG2 --|-- REG ---|-- OP ---| |
311 (defun ccl-embed-extended-command (ex-op reg reg2 reg3) | 317 (defun ccl-embed-extended-command (ex-op reg reg2 reg3) |