comparison lisp/mule/make-coding-system.el @ 5081:baffa6ca776a

Backed out changeset c673987f5f3d
author Aidan Kehoe <kehoea@parhasard.net>
date Fri, 26 Feb 2010 15:22:15 +0000
parents c673987f5f3d
children 88f955fa5a7f
comparison
equal deleted inserted replaced
5068:c673987f5f3d 5081:baffa6ca776a
1 ;;; make-coding-system.el; Provides the #'make-coding-system function and 1 ;;; make-coding-system.el; Provides the #'make-coding-system function and
2 ;;; much of the implementation of the fixed-width coding system type. 2 ;;; much of the implementation of the fixed-width coding system type.
3 3
4 ;; Copyright (C) 2009 Free Software Foundation 4 ;; Copyright (C) 2009 Free Software Foundation
5 ;; Copyright (C) 2010 Ben Wing.
6 5
7 ;; Author: Aidan Kehoe 6 ;; Author: Aidan Kehoe
8 7
9 ;; This file is part of XEmacs. 8 ;; This file is part of XEmacs.
10 9
24 ;; Boston, MA 02110-1301, USA. 23 ;; Boston, MA 02110-1301, USA.
25 24
26 ;;; Commentary: 25 ;;; Commentary:
27 26
28 ;;; Code: 27 ;;; Code:
28
29 (defvar fixed-width-private-use-start (decode-char 'ucs #xE000)
30 "Start of a 256 code private use area for fixed-width coding systems.
31
32 This is used to ensure that distinct octets on disk for a given coding
33 system map to distinct XEmacs characters, preventing spurious changes when
34 a file is read, not changed, and then written. ")
29 35
30 (defun fixed-width-generate-helper (decode-table encode-table 36 (defun fixed-width-generate-helper (decode-table encode-table
31 encode-failure-octet) 37 encode-failure-octet)
32 "Helper func, `fixed-width-generate-encode-program-and-skip-chars-strings', 38 "Helper func, `fixed-width-generate-encode-program-and-skip-chars-strings',
33 which see. 39 which see.
315 vector, and ENCODE-TABLE will be a hash table mapping from 256 numbers 321 vector, and ENCODE-TABLE will be a hash table mapping from 256 numbers
316 to 256 distinct characters." 322 to 256 distinct characters."
317 (check-argument-type #'listp unicode-map) 323 (check-argument-type #'listp unicode-map)
318 (let ((decode-table (make-vector 256 nil)) 324 (let ((decode-table (make-vector 256 nil))
319 (encode-table (make-hash-table :size 256 :rehash-threshold 0.999)) 325 (encode-table (make-hash-table :size 256 :rehash-threshold 0.999))
320 (private-use-start #xE000) 326 (private-use-start (encode-char fixed-width-private-use-start 'ucs))
321 (invalid-sequence-code-point-start 327 (invalid-sequence-code-point-start
322 (eval-when-compile 328 (eval-when-compile
323 (char-to-unicode 329 (char-to-unicode
324 (aref (decode-coding-string "\xd8\x00\x00\x00" 'utf-16-be) 3)))) 330 (aref (decode-coding-string "\xd8\x00\x00\x00" 'utf-16-be) 3))))
325 desired-ucs decode-table-entry) 331 desired-ucs decode-table-entry)