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)