# HG changeset patch # User Dave Love # Date 1026932812 0 # Node ID 2d28ee240bd764c7fe2645dd66406c9cf0a2b3a7 # Parent 5d3a20be798982a9ff5619b25775deadf2b25f4f (define-translation-hash-table): New. diff -r 5d3a20be7989 -r 2d28ee240bd7 lisp/international/mule.el --- a/lisp/international/mule.el Wed Jul 17 19:05:32 2002 +0000 +++ b/lisp/international/mule.el Wed Jul 17 19:06:52 2002 +0000 @@ -1916,6 +1916,33 @@ (progn ,@body) (set-category-table current-category-table)))) +(defun define-translation-hash-table (symbol table) + "Define SYMBOL as the name of the hash translation TABLE for use in CCL. + +Analogous to `define-translation-table', but updates +`translation-hash-table-vector' and the table is for use in the CCL +`lookup-integer' and `lookup-character' functions." + (unless (and (symbolp symbol) + (hash-table-p table)) + (error "Bad args to define-translation-hash-table")) + (let ((len (length translation-hash-table-vector)) + (id 0) + done) + (put symbol 'translation-hash-table table) + (while (not done) + (if (>= id len) + (setq translation-hash-table-vector + (vconcat translation-hash-table-vector [nil]))) + (let ((slot (aref translation-hash-table-vector id))) + (if (or (not slot) + (eq (car slot) symbol)) + (progn + (aset translation-hash-table-vector id (cons symbol table)) + (setq done t)) + (setq id (1+ id))))) + (put symbol 'translation-hash-table-id id) + id)) + ;;; Initialize some variables. (put 'use-default-ascent 'char-table-extra-slots 0)