From: Yaroslav K. <kav...@je...> - 2006-01-26 14:59:53
|
Example: cp866 encoding From enc-dos.lisp: (define-unibyte-mapper cp866->code-mapper code->cp866-mapper (#x80 #x0410) ; CYRILLIC CAPITAL LETTER A ... (declaim (inline get-cp866-bytes)) (defun get-cp866-bytes(string pos end) (declare (optimize speed (safety 0)) (type simple-string string) (type array-range pos end)) (get-latin-bytes #'identity :cp866 string pos end)) Why #'identity? Why not #'code->cp866-mapper? And in (defmacro define-cp866->string* (accessor type) (declare (ignore type)) (let ((name (make-od-name 'cp866->string* accessor))) `(progn (defun ,name (string sstart send array astart aend) (,(make-od-name 'latin->string* accessor) string sstart send array astart aend #'identity))))) and (defmacro define-cp866->string (accessor type) (declare (ignore type)) `(defun ,(make-od-name 'cp866->string accessor) (array astart aend) (,(make-od-name 'latin->string accessor) array astart aend #'identity))) Why not #'cp866->code-mapper? Or I understand nothing? Thanks! -- WBR, Yaroslav Kavenchuk. |