CMUCL commit: src (47 files)
Raymond Toy
rtoy at common-lisp.net
Mon Jul 12 15:58:42 CEST 2010
Date: Monday, July 12, 2010 @ 09:58:42
Author: rtoy
Path: /project/cmucl/cvsroot/src
Added: bootfiles/20a/boot-2010-07-1.lisp
Modified: code/exports.lisp code/extfmts.lisp docs/cmu-user/unicode.tex
general-info/release-20b.txt
pcl/simple-streams/external-formats/ascii.lisp
pcl/simple-streams/external-formats/beta-gk.lisp
pcl/simple-streams/external-formats/cp1250.lisp
pcl/simple-streams/external-formats/cp1251.lisp
pcl/simple-streams/external-formats/cp1252.lisp
pcl/simple-streams/external-formats/cp1253.lisp
pcl/simple-streams/external-formats/cp1254.lisp
pcl/simple-streams/external-formats/cp1255.lisp
pcl/simple-streams/external-formats/cp1256.lisp
pcl/simple-streams/external-formats/cp1257.lisp
pcl/simple-streams/external-formats/cp1258.lisp
pcl/simple-streams/external-formats/cr.lisp
pcl/simple-streams/external-formats/crlf.lisp
pcl/simple-streams/external-formats/final-sigma.lisp
pcl/simple-streams/external-formats/iso8859-1.lisp
pcl/simple-streams/external-formats/iso8859-10.lisp
pcl/simple-streams/external-formats/iso8859-13.lisp
pcl/simple-streams/external-formats/iso8859-14.lisp
pcl/simple-streams/external-formats/iso8859-15.lisp
pcl/simple-streams/external-formats/iso8859-2.lisp
pcl/simple-streams/external-formats/iso8859-3.lisp
pcl/simple-streams/external-formats/iso8859-4.lisp
pcl/simple-streams/external-formats/iso8859-5.lisp
pcl/simple-streams/external-formats/iso8859-6.lisp
pcl/simple-streams/external-formats/iso8859-7.lisp
pcl/simple-streams/external-formats/iso8859-8.lisp
pcl/simple-streams/external-formats/iso8859-9.lisp
pcl/simple-streams/external-formats/koi8-r.lisp
pcl/simple-streams/external-formats/mac-cyrillic.lisp
pcl/simple-streams/external-formats/mac-greek.lisp
pcl/simple-streams/external-formats/mac-icelandic.lisp
pcl/simple-streams/external-formats/mac-latin2.lisp
pcl/simple-streams/external-formats/mac-roman.lisp
pcl/simple-streams/external-formats/mac-turkish.lisp
pcl/simple-streams/external-formats/utf-16-be.lisp
pcl/simple-streams/external-formats/utf-16-le.lisp
pcl/simple-streams/external-formats/utf-16.lisp
pcl/simple-streams/external-formats/utf-32-be.lisp
pcl/simple-streams/external-formats/utf-32-le.lisp
pcl/simple-streams/external-formats/utf-32.lisp
pcl/simple-streams/external-formats/utf-8.lisp
pcl/simple-streams/external-formats/void.lisp
Add a documentation slot to external formats so that we can give a
little information about the format. Provide a means to get a list of
external formats and to display the documentation.
bootfiles/20a/boot-2010-07-1.lisp:
o Use this bootstrap file when doing a normal build.
code/exports.lisp:
o New functions:
- Add LIST-ALL-EXTERNAL-FORMATS to list all available external formats
and their corresponding aliases.
- Add DESCRIBE-EXTERNAL-FORMAT to print some information about the
given format.
o Add docuemntation slot to defstruct EXTERNAL-FORMAT.
o Change DEFINE-EXTERNAL-FORMAT macro. Adds :DOCUMENTATION keyword to
specify the documentation. Add :BASE keyword indicate that the
external format is based on another format. (Previously, this
wasn't needed, but is somewhat incompatible with adding a
documentation string.)
o Change DEFINE-COMPOSING-EXTERNAL-FORMAT to include :documentation
keyword to specify the documentation for the format.
o Minor reindentation of some docstrings.
o Make sure documentation strings for external format are marked for
translation; wrap other strings with intl:gettext to explicitly mark
them for translations.
o Add docstring for VOID and ISO8859-1 external formats.
code/exports.lisp:
o Export the new symbols LIST-ALL-EXTERNAL-FORMATS and
DESCRIBE-EXTERNAL-FORMAT. Import into EXTENSIONS package.
docs/cmu-user/unicode.tex:
o Update docs to include LIST-ALL-EXTERNAL-FORMATS and
DESCRIBE-EXTERNAL-FORMAT.
o Update docs for DEFINE-EXTERNAL-FORMAT and
DEFINE-COMPOSING-EXTERNAL-FORMAT to match implementation.
general-info/release-20b.txt:
o Update
external-formats/*.lisp:
o Update with docstrings.
o Add :BASE keyword where needed.
--------------------------------------------------------+
bootfiles/20a/boot-2010-07-1.lisp | 34 +++
code/exports.lisp | 14 -
code/extfmts.lisp | 164 ++++++++++-----
docs/cmu-user/unicode.tex | 59 +++--
general-info/release-20b.txt | 4
pcl/simple-streams/external-formats/ascii.lisp | 7
pcl/simple-streams/external-formats/beta-gk.lisp | 7
pcl/simple-streams/external-formats/cp1250.lisp | 10
pcl/simple-streams/external-formats/cp1251.lisp | 10
pcl/simple-streams/external-formats/cp1252.lisp | 8
pcl/simple-streams/external-formats/cp1253.lisp | 8
pcl/simple-streams/external-formats/cp1254.lisp | 8
pcl/simple-streams/external-formats/cp1255.lisp | 8
pcl/simple-streams/external-formats/cp1256.lisp | 8
pcl/simple-streams/external-formats/cp1257.lisp | 8
pcl/simple-streams/external-formats/cp1258.lisp | 8
pcl/simple-streams/external-formats/cr.lisp | 7
pcl/simple-streams/external-formats/crlf.lisp | 7
pcl/simple-streams/external-formats/final-sigma.lisp | 6
pcl/simple-streams/external-formats/iso8859-1.lisp | 20 +
pcl/simple-streams/external-formats/iso8859-10.lisp | 9
pcl/simple-streams/external-formats/iso8859-13.lisp | 8
pcl/simple-streams/external-formats/iso8859-14.lisp | 9
pcl/simple-streams/external-formats/iso8859-15.lisp | 10
pcl/simple-streams/external-formats/iso8859-2.lisp | 11 -
pcl/simple-streams/external-formats/iso8859-3.lisp | 10
pcl/simple-streams/external-formats/iso8859-4.lisp | 9
pcl/simple-streams/external-formats/iso8859-5.lisp | 10
pcl/simple-streams/external-formats/iso8859-6.lisp | 9
pcl/simple-streams/external-formats/iso8859-7.lisp | 9
pcl/simple-streams/external-formats/iso8859-8.lisp | 8
pcl/simple-streams/external-formats/iso8859-9.lisp | 8
pcl/simple-streams/external-formats/koi8-r.lisp | 8
pcl/simple-streams/external-formats/mac-cyrillic.lisp | 9
pcl/simple-streams/external-formats/mac-greek.lisp | 9
pcl/simple-streams/external-formats/mac-icelandic.lisp | 9
pcl/simple-streams/external-formats/mac-latin2.lisp | 10
pcl/simple-streams/external-formats/mac-roman.lisp | 9
pcl/simple-streams/external-formats/mac-turkish.lisp | 10
pcl/simple-streams/external-formats/utf-16-be.lisp | 11 -
pcl/simple-streams/external-formats/utf-16-le.lisp | 11 -
pcl/simple-streams/external-formats/utf-16.lisp | 12 -
pcl/simple-streams/external-formats/utf-32-be.lisp | 12 -
pcl/simple-streams/external-formats/utf-32-le.lisp | 12 -
pcl/simple-streams/external-formats/utf-32.lisp | 12 -
pcl/simple-streams/external-formats/utf-8.lisp | 8
pcl/simple-streams/external-formats/void.lisp | 5
47 files changed, 501 insertions(+), 161 deletions(-)
Index: src/bootfiles/20a/boot-2010-07-1.lisp
diff -u /dev/null src/bootfiles/20a/boot-2010-07-1.lisp:1.1
--- /dev/null Mon Jul 12 09:58:43 2010
+++ src/bootfiles/20a/boot-2010-07-1.lisp Mon Jul 12 09:58:42 2010
@@ -0,0 +1,34 @@
+;; Simple bootstrap file to add the documentation slot to the EFX and
+;; EXTERNAL-FORMAT structure.
+
+(in-package "STREAM")
+
+(ext:without-package-locks
+ (handler-bind ((error (lambda (c)
+ (declare (ignore c))
+ (invoke-restart 'kernel::clobber-it))))
+ #+nil
+ (defstruct efx
+ (octets-to-code #'%efni :type function :read-only t)
+ (code-to-octets #'%efni :type function :read-only t)
+ (flush-state nil :type (or null function) :read-only t)
+ (copy-state nil :type (or null function) :read-only t)
+ (cache nil :type (or null simple-vector))
+ (min 1 :type kernel:index :read-only t)
+ (max 1 :type kernel:index :read-only t)
+ (documentation nil :type (or null string) :read-only t)))
+
+ (handler-bind ((error (lambda (c)
+ (declare (ignore c))
+ (invoke-restart 'kernel::clobber-it))))
+ (defstruct (external-format
+ (:conc-name ef-)
+ (:print-function %print-external-format)
+ (:constructor make-external-format (name efx composingp documentation
+ &optional slots slotd)))
+ (name (ext:required-argument) :type (or keyword cons) :read-only t)
+ (efx (ext:required-argument) :type efx :read-only t)
+ (composingp (ext:required-argument) :type boolean :read-only t)
+ (slots #() :type simple-vector :read-only t)
+ (slotd nil :type list :read-only t)
+ (documentation nil :type (or null string) :read-only t))))
\ No newline at end of file
Index: src/code/exports.lisp
diff -u src/code/exports.lisp:1.297 src/code/exports.lisp:1.298
--- src/code/exports.lisp:1.297 Sat Jul 10 18:50:58 2010
+++ src/code/exports.lisp Mon Jul 12 09:58:42 2010
@@ -5,7 +5,7 @@
;;; Carnegie Mellon University, and has been placed in the public domain.
;;;
(ext:file-comment
- "$Header: /project/cmucl/cvsroot/src/code/exports.lisp,v 1.297 2010-07-10 22:50:58 rtoy Exp $")
+ "$Header: /project/cmucl/cvsroot/src/code/exports.lisp,v 1.298 2010-07-12 13:58:42 rtoy Exp $")
;;;
;;; **********************************************************************
;;;
@@ -1251,9 +1251,9 @@
;; Make these STREAM symbols available
(dolist
(name
- '("STRING-TO-OCTETS" "OCTETS-TO-STRING" "*DEFAULT-EXTERNAL-FORMAT*"
- "STRING-ENCODE" "STRING-DECODE" "SET-SYSTEM-EXTERNAL-FORMAT"
- "LIST-ALL-EXTERNAL-FORMATS"))
+ '("STRING-TO-OCTETS" "OCTETS-TO-STRING" "*DEFAULT-EXTERNAL-FORMAT*"
+ "STRING-ENCODE" "STRING-DECODE" "SET-SYSTEM-EXTERNAL-FORMAT"
+ "LIST-ALL-EXTERNAL-FORMATS" "DESCRIBE-EXTERNAL-FORMAT"))
(intern name "STREAM"))
(defpackage "EXTENSIONS"
@@ -1484,7 +1484,8 @@
"STRING-TO-OCTETS" "OCTETS-TO-STRING" "*DEFAULT-EXTERNAL-FORMAT*"
"STRING-ENCODE" "STRING-DECODE"
"SET-SYSTEM-EXTERNAL-FORMAT"
- "LIST-ALL-EXTERNAL-FORMATS")
+ "LIST-ALL-EXTERNAL-FORMATS"
+ "DESCRIBE-EXTERNAL-FORMAT")
;; Unicode
(:export "STRING-TO-OCTETS" "OCTETS-TO-STRING" "*DEFAULT-EXTERNAL-FORMAT*"
"LIST-ALL-EXTERNAL-FORMATS"
@@ -1555,7 +1556,8 @@
"STRING-ENCODE" "STRING-DECODE"
"SET-SYSTEM-EXTERNAL-FORMAT"
"+REPLACEMENT-CHARACTER-CODE+"
- "LIST-ALL-EXTERNAL-FORMATS"))
+ "LIST-ALL-EXTERNAL-FORMATS"
+ "DESCRIBE-EXTERNAL-FORMAT"))
(defpackage "LOOP")
(dolist
Index: src/code/extfmts.lisp
diff -u src/code/extfmts.lisp:1.34 src/code/extfmts.lisp:1.35
--- src/code/extfmts.lisp:1.34 Sat Jul 10 18:50:58 2010
+++ src/code/extfmts.lisp Mon Jul 12 09:58:42 2010
@@ -5,7 +5,7 @@
;;; domain.
;;;
(ext:file-comment
- "$Header: /project/cmucl/cvsroot/src/code/extfmts.lisp,v 1.34 2010-07-10 22:50:58 rtoy Exp $")
+ "$Header: /project/cmucl/cvsroot/src/code/extfmts.lisp,v 1.35 2010-07-12 13:58:42 rtoy Exp $")
;;;
;;; **********************************************************************
;;;
@@ -18,7 +18,8 @@
(export '(string-to-octets octets-to-string *default-external-format*
string-encode string-decode set-system-external-format
+replacement-character-code+
- list-all-external-formats))
+ list-all-external-formats
+ describe-external-format))
(defvar *default-external-format*
:iso8859-1
@@ -58,6 +59,14 @@
(declare (ignore condition))
(format stream (intl:gettext "Attempting unimplemented external-format I/O.")))))
+(define-condition external-format-not-found (error)
+ ((name :reader external-format-not-found-name
+ :initarg :name))
+ (:report
+ (lambda (condition stream)
+ (format stream (intl:gettext "External format ~S not found.")
+ (external-format-not-found-name condition)))))
+
(defun %efni (a b c d)
(declare (ignore a b c d))
(error 'external-format-not-implemented))
@@ -86,18 +95,22 @@
(min 1 :type kernel:index :read-only t)
;;
;; Maximum number of octets needed to form a codepoint.
- (max 1 :type kernel:index :read-only t))
+ (max 1 :type kernel:index :read-only t)
+ ;;
+ ;; Documentation for this external format
+ #+nil(documentation nil :type (or null string) :read-only t))
(defstruct (external-format
(:conc-name ef-)
(:print-function %print-external-format)
- (:constructor make-external-format (name efx composingp
+ (:constructor make-external-format (name efx composingp documentation
&optional slots slotd)))
(name (ext:required-argument) :type (or keyword cons) :read-only t)
(efx (ext:required-argument) :type efx :read-only t)
(composingp (ext:required-argument) :type boolean :read-only t)
(slots #() :type simple-vector :read-only t)
- (slotd nil :type list :read-only t))
+ (slotd nil :type list :read-only t)
+ (documentation nil :type (or null string) :read-only t))
(defun %print-external-format (ef stream depth)
(declare (ignore depth))
@@ -147,17 +160,21 @@
;;; DEFINE-EXTERNAL-FORMAT -- Public
;;;
-;;; name (&key min max size) (&rest slots) octets-to-code code-to-octets
-;;; flush-state copy-state
+;;; name (&key base min max size documentation) (&rest slots) octets-to-code
+;;; code-to-octets flush-state copy-state
+;;;
+;;; Define a new external format. If base is specified, then an
+;;; external format is defined that is based on a previously defined
+;;; external format named Base. The slot names used in Slots must
+;;; match those defined in the Base format.
+;;;
+;;; If Base is not specified, a new external format is defined.
+;;; Min/Max/Size are the minimum and maximum number of octets that
+;;; make up a character (:size N is just shorthand for :min N :max
+;;; N). Slots is a list of slot descriptions similar to defstruct.
;;;
-;;; Define a new external format. Min/Max/Size are the minimum and
-;;; maximum number of octets that make up a character (:size N is just
-;;; shorthand for :min N :max N). Slots is a list of slot descriptions
-;;; similar to defstruct.
-;;;
-;;; name (base) (&rest slots)
-;;; Define an external format based on a previously-defined external
-;;; format, Base. The slot names used in Slots must match those in Base.
+;;; In both cases, Documentation is a string that documents the
+;;; external format.
;;;
;;; octets-to-code (state input unput error &rest vars)
;;; Defines a form to be used by the external format to convert
@@ -213,28 +230,24 @@
;;; process characters outside the Lisp range (see
;;; CODEPOINT-TO-OCTETS, OCTETS-TO-CODEPOINT)
;;;
-(defmacro define-external-format (name (&rest args) (&rest slots)
+(defmacro define-external-format (name (&key base min max size (documentation ""))
+ (&rest slots)
&optional octets-to-code code-to-octets
flush-state copy-state)
- (when (and (oddp (length args)) (not (= (length args) 1)))
- (warn (intl:gettext "Nonsensical argument (~S) to DEFINE-EXTERNAL-FORMAT.") args))
(let* ((tmp (gensym))
- (min (if (evenp (length args))
- (or (getf args :min) (getf args :size) 1)
- 1))
- (max (if (evenp (length args))
- (or (getf args :max) (getf args :size) 6)
- 6))
- (base (if (= (length args) 1)
- (find-external-format (first args))
- nil))
+ (min (or min size 1))
+ (max (or max size 6))
+ (base (when base
+ (find-external-format base)))
(bslotd (if base (ef-slotd base) nil))
(slotd (%merge-slots bslotd slots))
(slotb (loop for slot in slotd
collect `(,(first slot)
`(the ,',(fourth slot)
;; IDENTITY is here to protect against SETF
- (identity (svref %slots% ,',(second slot))))))))
+ (identity (svref %slots% ,',(second slot))))))))
+ (when documentation
+ (intl::note-translatable intl::*default-domain* documentation))
`(macrolet ((octets-to-code ((state input unput error &rest vars) body)
`(lambda (,state ,input ,unput ,error)
(declare (ignorable ,state ,input ,unput ,error)
@@ -274,8 +287,10 @@
:copy-state ,copy-state
:cache (make-array +ef-max+
:initial-element nil)
- :min ,(min min max) :max ,(max min max)))
+ :min ,(min min max)
+ :max ,(max min max)))
nil
+ ,documentation
(let* ,(loop for x in slotd
collect (list (first x) (third x)))
(vector ,@(mapcar #'first slotd)))
@@ -290,11 +305,11 @@
;;; to be of any use.
;;;
;;;
-;;; name (&key min max size) input output
+;;; name (&key min max size documentation) input output
;;; Defines a new composing external format. The parameters Min,
-;;; Max, and Size are the same as for defining an external format.
-;;; The parameters input and output are forms to handle input and
-;;; output.
+;;; Max, Size, and Documentation are the same as for defining an
+;;; external format. The parameters input and output are forms to
+;;; handle input and output.
;;;
;;; input (state input unput &rest vars)
;;; Defines a form to be used by the composing external format when
@@ -319,7 +334,7 @@
;;; value of the stream's state variable. Output is a form that
;;; writes one octet to the output stream.
-(defmacro define-composing-external-format (name (&key min max size)
+(defmacro define-composing-external-format (name (&key min max size documentation)
input output)
(let ((tmp (gensym))
(min (or min size 1))
@@ -347,6 +362,7 @@
:code-to-octets ,output
:min ,(min min max) :max ,(max min max))
t
+ ,documentation
#() '())))))
(defun load-external-format-aliases ()
@@ -395,6 +411,49 @@
ef)
(sort result #'string< :key #'first)))
+(defun describe-external-format (external-format)
+ "Print a description of the given External-Format. This may cause
+ the external format to be loaded (silently), if it is not already
+ loaded."
+ (when (zerop (hash-table-count
+ *external-format-aliases*))
+ (load-external-format-aliases))
+ (let ((alias (gethash external-format *external-format-aliases*)))
+ (cond (alias
+ (format t (intl:gettext "~&~S is an alias for the external format ~S.~2%")
+ external-format alias))
+ ((and (listp external-format)
+ (> (length external-format) 1))
+ ;; Some kind of composed external format
+ (format t (intl:gettext "~&~S is a composed external format.~2%") external-format))
+ (t
+ (let ((ef (handler-case (let ((*compile-print* nil)
+ (ext:*compile-progress* nil)
+ (*compile-verbose* nil))
+ ;; Should we be this silent when
+ ;; loading the external format?
+ ;; We aren't when the normally
+ ;; loading the format.
+ (find-external-format external-format))
+ (external-format-not-found ()
+ (format *error-output*
+ (intl:gettext "~&Could not find external format ~S~%")
+ external-format)))))
+ (when ef
+ (let (aliases)
+ ;; Find any aliases for this external format. Doesn't need to be efficient.
+ (maphash #'(lambda (k v)
+ (when (eq v external-format)
+ (push k aliases)))
+ *external-format-aliases*)
+ (format t (intl:gettext "~S~:[~; - [Aliases: ~{~S~^, ~}~]]~%")
+ external-format aliases aliases))
+ (when (ef-composingp ef)
+ (format t (intl:gettext "~&~S is a composing external format.~2%")
+ external-format))
+ (format t "~&~A~%"
+ (intl:gettext (or (ef-documentation ef) "")))))))))
+
(defun %find-external-format (name)
;; avoid loading files, etc., early in the boot sequence
(when (or (eq name :iso8859-1)
@@ -461,6 +520,7 @@
:cache (make-array +ef-max+ :initial-element nil)
:min (* (ef-min-octets a) (ef-min-octets b))
:max (* (ef-max-octets a) (ef-max-octets b)))
+ nil
nil #() '()))
(defun find-external-format (name &optional (error-p t))
@@ -479,7 +539,7 @@
(flet ((not-found ()
(when (equal *default-external-format* name)
(setq *default-external-format* :iso8859-1))
- (if error-p (error (intl:gettext "External format ~S not found.") name) nil)))
+ (if error-p (error 'external-format-not-found :name name) nil)))
(if (consp name)
(let ((efs (mapcar #'%find-external-format name)))
(if (member nil efs)
@@ -568,19 +628,29 @@
(declare (ignore condition))
(format stream (intl:gettext "Attempting I/O through void external-format.")))))
-(define-external-format :void (:size 0) ()
+(define-external-format :void (:size 0 :documentation
+"Void external format that signals an error on any input or output.")
+ ()
(octets-to-code (state input unput error)
`(error 'void-external-format))
(code-to-octets (code state output error)
`(error 'void-external-format)))
-(define-external-format :iso8859-1 (:size 1) ()
+(define-external-format :iso8859-1 (:size 1 :documentation
+"ISO8859-1 is an 8-bit character encoding generally intended for
+Western European languages including English, German, Italian,
+Norwegian, Portuguese, Spanish, Swedish and many others.
+
+By default, illegal inputs are replaced by the Unicode replacement
+character and illegal outputs are replaced by a question mark.")
+ ()
(octets-to-code (state input unput error)
`(values ,input 1))
(code-to-octets (code state output error)
`(,output (if (> ,code 255)
(if ,error
- (funcall ,error "Cannot output codepoint #x~X to ISO8859-1 stream"
+ (funcall ,error
+ (intl:gettext "Cannot output codepoint #x~X to ISO8859-1 stream")
,code 1)
#x3F)
,code))))
@@ -684,10 +754,10 @@
(if ,error
(if (lisp::surrogatep code)
(funcall ,error
- ,(format nil "Surrogate codepoint #x~~4,'0X is illegal for ~A"
- external-format)
+ (format nil (intl:gettext "Surrogate codepoint #x~~4,'0X is illegal for ~A")
+ ,external-format)
code nil)
- (funcall ,error "Illegal codepoint on input: #x~X" code nil))
+ (funcall ,error (intl:gettext "Illegal codepoint on input: #x~X") code nil))
#-(and unicode (not unicode-bootstrap)) #\?
#+(and unicode (not unicode-bootstrap)) #\U+FFFD))
#+unicode
@@ -718,7 +788,8 @@
(,wryte (if (lisp::surrogatep (char-code ,nchar) :low)
(surrogates-to-codepoint (car ,nstate) ,nchar)
(if ,error
- (funcall ,error "Cannot convert invalid surrogate #x~X to character"
+ (funcall ,error
+ (intl:gettext "Cannot convert invalid surrogate #x~X to character")
,nchar)
+replacement-character-code+)))
(setf (car ,nstate) nil))
@@ -726,7 +797,8 @@
;; the replacement character.
(,wryte (if (lisp::surrogatep (char-code ,nchar) :low)
(if ,error
- (funcall ,error "Cannot convert lone trailing surrogate #x~X to character"
+ (funcall ,error
+ (intl:gettext "Cannot convert lone trailing surrogate #x~X to character")
,nchar)
+replacement-character-code+)
(char-code ,nchar)))))))))
@@ -763,9 +835,9 @@
(buffer nil bufferp)
error)
"Convert String to octets using the specified External-format. The
- string is bounded by Start (defaulting to 0) and End (defaulting to
- the end of the string. If Buffer is given, the octets are stored
- there. If not, a new buffer is created."
+ string is bounded by Start (defaulting to 0) and End (defaulting to
+ the end of the string. If Buffer is given, the octets are stored
+ there. If not, a new buffer is created."
(declare (type string string)
(type kernel:index start)
(type (or kernel:index null) end)
Index: src/docs/cmu-user/unicode.tex
diff -u src/docs/cmu-user/unicode.tex:1.10 src/docs/cmu-user/unicode.tex:1.11
--- src/docs/cmu-user/unicode.tex:1.10 Sat Jul 3 17:41:21 2010
+++ src/docs/cmu-user/unicode.tex Mon Jul 12 09:58:42 2010
@@ -549,6 +549,18 @@
converting the octets.
\end{defun}
+\begin{defun}{}{list-all-external-formats}{}
+ \code{list-all-external-formats} produces a list of all known
+ external formats and the known aliases for for them. Each element
+ of the list is a list consisting of the name of the external format
+ and a list of the known aliases for the format.
+\end{defun}
+
+\begin{defun}{}{describe-external-format}{\args \var{external-format}}
+ \code{describe-external-format} prints a description of the
+ specified external-format.
+\end{defun}
+
\section{Writing External Formats}
\subsection{External Formats}
@@ -562,31 +574,34 @@
\code{stream::define-external-format}.
\begin{defmac}[base]{stream:}{define-external-format}{\args \var{name}
- (\keys{\var{min} \var{max} \var{size}}) (\amprest{} \var{slots})
+ (\keys{\var{base} \var{min} \var{max} \var{size}
+ \var{documentation}})
+ (\amprest{} \var{slots})
\morekeys{\var{octets-to-code} \var{code-to-octets}
\var{flush-state} \var{copy-state}}}
- \defmacx[stream:]{define-external-format}{\args \var{name}
- (\var{base}) (\amprest{} \var{slots})}
- The first defines a new external format of the name \kwd{name}.
- \var{min}, \var{max}, and \var{size} are the minimum and maximum
- number of octets that make up a character. (\code{\kwd{size} n} is
- just a short cut for \code{\kwd{min} n \kwd{max} n}.) The arguments
- \var{octets-to-code} and \var{code-to-octets} are not optional in
- this case. They specify how to convert octets to codepoints and
- vice versa, respectively. These should be backquoted forms for the
- body of a function to do the conversion. See the description below
- for these functions. Some good examples are the external format for
+
+ If \kwd{base} is not given, this defines a new external format of
+ the name \kwd{name}. \var{min}, \var{max}, and \var{size} are the
+ minimum and maximum number of octets that make up a character.
+ (\code{\kwd{size} n} is just a short cut for \code{\kwd{min} n
+ \kwd{max} n}.) The description of the external format can be
+ given using \kwd{documentation}. The arguments \var{octets-to-code}
+ and \var{code-to-octets} are not optional in this case. They
+ specify how to convert octets to codepoints and vice versa,
+ respectively. These should be backquoted forms for the body of a
+ function to do the conversion. See the description below for these
+ functions. Some good examples are the external format for
\kwd{utf-8} or \kwd{utf-16}. The \kwd{slots} argument is a list of
- read-only slots, similar to defstruct. The slot names are available as
- local variables inside the \var{code-to-octets} and \var{octets-to-code}
- bodies.
-
- The second form above defines an external format with the name
- \kwd{name} that is based on a previously defined format \kwd{base}.
- The \var{slots} are inherited from the \kwd{base} format by default,
- although the definition may alter their values and add new slots.
- See, for example, the \kwd{mac-greek} external format.
+ read-only slots, similar to defstruct. The slot names are available
+ as local variables inside the \var{code-to-octets} and
+ \var{octets-to-code} bodies.
+
+ If \kwd{base} is given, then an external format is defined with the
+ name \kwd{name} that is based on a previously defined format
+ \kwd{base}. The \var{slots} are inherited from the \kwd{base} format
+ by default, although the definition may alter their values and add
+ new slots. See, for example, the \kwd{mac-greek} external format.
\end{defmac}
@@ -657,7 +672,7 @@
\subsection{Composing External Formats}
\begin{defmac}{stream:}{define-composing-external-format}{\args \var{name}
- (\keys{\var{min} \var{max} \var{size}}) \var{input}
+ (\keys{\var{min} \var{max} \var{size} \var{documentation}}) \var{input}
\var{output}}
This is the same as \code{define-external-format}, except that a
composing external format is created.
Index: src/general-info/release-20b.txt
diff -u src/general-info/release-20b.txt:1.35 src/general-info/release-20b.txt:1.36
--- src/general-info/release-20b.txt:1.35 Tue Jul 6 13:55:42 2010
+++ src/general-info/release-20b.txt Mon Jul 12 09:58:42 2010
@@ -75,6 +75,10 @@
function of 2 arguments: a message string and the offending
codepoint. If the function returns, it must be the codepoint of
the desired replacement.
+ - Add EXT:LIST-ALL-EXTERNAL-FORMATS to list all known external
+ formats and their aliases.
+ - ADD EXT:DESCRIBE-EXTERNAL-FORMAT to print a description of the
+ specified exernal format.
* ANSI compliance fixes:
- COMPILE will update the macro-function if the specified name
Index: src/pcl/simple-streams/external-formats/ascii.lisp
diff -u src/pcl/simple-streams/external-formats/ascii.lisp:1.4 src/pcl/simple-streams/external-formats/ascii.lisp:1.5
--- src/pcl/simple-streams/external-formats/ascii.lisp:1.4 Wed Jul 7 09:04:04 2010
+++ src/pcl/simple-streams/external-formats/ascii.lisp Mon Jul 12 09:58:42 2010
@@ -4,11 +4,14 @@
;;; This code was written by Raymond Toy and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/ascii.lisp,v 1.4 2010-07-07 13:04:04 rtoy Exp $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/ascii.lisp,v 1.5 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
-(define-external-format :ascii (:size 1)
+(define-external-format :ascii (:size 1 :documentation
+"US ASCII 7-bit encoding. Illegal input sequences are replaced with
+the Unicode replacment character. Illegal output characters are
+replaced with a question mark.")
()
(octets-to-code (state input unput error c)
`(let ((,c ,input))
Index: src/pcl/simple-streams/external-formats/beta-gk.lisp
diff -u src/pcl/simple-streams/external-formats/beta-gk.lisp:1.2 src/pcl/simple-streams/external-formats/beta-gk.lisp:1.3
--- src/pcl/simple-streams/external-formats/beta-gk.lisp:1.2 Thu Jun 11 12:04:02 2009
+++ src/pcl/simple-streams/external-formats/beta-gk.lisp Mon Jul 12 09:58:42 2010
@@ -4,7 +4,7 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/beta-gk.lisp,v 1.2 2009-06-11 16:04:02 rtoy Rel $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/beta-gk.lisp,v 1.3 2010-07-12 13:58:42 rtoy Exp $")
;; This is a composing format that translates (lower-case) Beta code
;; (an ASCII encoding of ancient Greek) into Unicode Greek.
@@ -190,7 +190,10 @@
#(42 47) #(42 40))))))))
-(define-composing-external-format :beta-gk (:min 1 :max 6) ; 6??
+(define-composing-external-format :beta-gk (:min 1 :max 6 ; 6??
+ :documentation
+"A composing external format that translates (lower-case) Beta code
+(an ASCII encoding of ancient Greek) into Unicode Greek.")
(input (state input unput ch wd ent nch nwd nent)
`(flet ((lookup (c map)
(loop while map do
Index: src/pcl/simple-streams/external-formats/cp1250.lisp
diff -u src/pcl/simple-streams/external-formats/cp1250.lisp:1.3 src/pcl/simple-streams/external-formats/cp1250.lisp:1.4
--- src/pcl/simple-streams/external-formats/cp1250.lisp:1.3 Sun Jun 21 11:12:23 2009
+++ src/pcl/simple-streams/external-formats/cp1250.lisp Mon Jul 12 09:58:42 2010
@@ -4,7 +4,7 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/cp1250.lisp,v 1.3 2009-06-21 15:12:23 rtoy Rel $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/cp1250.lisp,v 1.4 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
@@ -32,5 +32,11 @@
324 328 243 244 337 246 247 345 367 250
369 252 253 355 729)))
-(define-external-format :cp1250 (:mac-roman)
+(define-external-format :cp1250 (:base :mac-roman :documentation
+"CP1250 is a Windows code page to represent texts in Central and
+Eastern European languages such as Polish, Czech, Slovak, Hungarian,
+Slovene, Bosnian, Croation, Serbian, Romanian, and Albanian.
+
+By default, illegal inputs are replaced by the Unicode replacement
+character and illegal outputs are replaced by a question mark.")
((table +ms-cp1250+)))
Index: src/pcl/simple-streams/external-formats/cp1251.lisp
diff -u src/pcl/simple-streams/external-formats/cp1251.lisp:1.3 src/pcl/simple-streams/external-formats/cp1251.lisp:1.4
--- src/pcl/simple-streams/external-formats/cp1251.lisp:1.3 Sun Jun 21 11:12:24 2009
+++ src/pcl/simple-streams/external-formats/cp1251.lisp Mon Jul 12 09:58:42 2010
@@ -4,7 +4,7 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/cp1251.lisp,v 1.3 2009-06-21 15:12:24 rtoy Rel $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/cp1251.lisp,v 1.4 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
@@ -30,5 +30,11 @@
1090 1091 1092 1093 1094 1095 1096 1097
1098 1099 1100 1101 1102 1103)))
-(define-external-format :cp1251 (:mac-roman)
+(define-external-format :cp1251 (:base :mac-roman :documentation
+"CP1251 is a Windows code page to represent texts that use the
+Cyrillic alphabet such as Russian, Bulgarian, Serbian Cyrillic, and
+others.
+
+By default, illegal inputs are replaced by the Unicode replacement
+character and illegal outputs are replaced by a question mark.")
((table +ms-cp1251+)))
Index: src/pcl/simple-streams/external-formats/cp1252.lisp
diff -u src/pcl/simple-streams/external-formats/cp1252.lisp:1.4 src/pcl/simple-streams/external-formats/cp1252.lisp:1.5
--- src/pcl/simple-streams/external-formats/cp1252.lisp:1.4 Mon Aug 17 13:47:13 2009
+++ src/pcl/simple-streams/external-formats/cp1252.lisp Mon Jul 12 09:58:42 2010
@@ -4,7 +4,7 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/cp1252.lisp,v 1.4 2009-08-17 17:47:13 rtoy Rel $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/cp1252.lisp,v 1.5 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
@@ -28,5 +28,9 @@
241 242 243 244 245 246 247 248 249 250
251 252 253 254 255)))
-(define-external-format :cp1252 (:mac-roman)
+(define-external-format :cp1252 (:base :mac-roman :documentation
+"CP1252 is a Windows code page for the Latin alphabet.
+
+By default, illegal inputs are replaced by the Unicode replacement
+character and illegal outputs are replaced by a question mark.")
((table +ms-cp1252+)))
Index: src/pcl/simple-streams/external-formats/cp1253.lisp
diff -u src/pcl/simple-streams/external-formats/cp1253.lisp:1.3 src/pcl/simple-streams/external-formats/cp1253.lisp:1.4
--- src/pcl/simple-streams/external-formats/cp1253.lisp:1.3 Sun Jun 21 10:03:09 2009
+++ src/pcl/simple-streams/external-formats/cp1253.lisp Mon Jul 12 09:58:42 2010
@@ -4,7 +4,7 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/cp1253.lisp,v 1.3 2009-06-21 14:03:09 rtoy Rel $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/cp1253.lisp,v 1.4 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
@@ -31,5 +31,9 @@
963 964 965 966 967 968 969 970 971 972
973 974 65534)))
-(define-external-format :cp1253 (:mac-roman)
+(define-external-format :cp1253 (:base :mac-roman :documentation
+"CP1253 is a Windows code page for Greek.
+
+By default, illegal inputs are replaced by the Unicode replacement
+character and illegal outputs are replaced by a question mark.")
((table +ms-cp1253+)))
Index: src/pcl/simple-streams/external-formats/cp1254.lisp
diff -u src/pcl/simple-streams/external-formats/cp1254.lisp:1.3 src/pcl/simple-streams/external-formats/cp1254.lisp:1.4
--- src/pcl/simple-streams/external-formats/cp1254.lisp:1.3 Sun Jun 21 11:12:24 2009
+++ src/pcl/simple-streams/external-formats/cp1254.lisp Mon Jul 12 09:58:42 2010
@@ -4,7 +4,7 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/cp1254.lisp,v 1.3 2009-06-21 15:12:24 rtoy Rel $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/cp1254.lisp,v 1.4 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
@@ -30,5 +30,9 @@
287 241 242 243 244 245 246 247 248 249
250 251 252 305 351 255)))
-(define-external-format :cp1254 (:mac-roman)
+(define-external-format :cp1254 (:base :mac-roman :documentation
+"CP1254 is a Windows code page for Turkish.
+
+By default, illegal inputs are replaced by the Unicode replacement
+character and illegal outputs are replaced by a question mark.")
((table +ms-cp1254+)))
Index: src/pcl/simple-streams/external-formats/cp1255.lisp
diff -u src/pcl/simple-streams/external-formats/cp1255.lisp:1.3 src/pcl/simple-streams/external-formats/cp1255.lisp:1.4
--- src/pcl/simple-streams/external-formats/cp1255.lisp:1.3 Sun Jun 21 11:12:24 2009
+++ src/pcl/simple-streams/external-formats/cp1255.lisp Mon Jul 12 09:58:42 2010
@@ -4,7 +4,7 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/cp1255.lisp,v 1.3 2009-06-21 15:12:24 rtoy Rel $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/cp1255.lisp,v 1.4 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
@@ -32,5 +32,9 @@
1505 1506 1507 1508 1509 1510 1511 1512
1513 1514 65534 65534 8206 8207 65534)))
-(define-external-format :cp1255 (:mac-roman)
+(define-external-format :cp1255 (:base :mac-roman :documentation
+"CP1255 is a Windows code page for Hebrew.
+
+By default, illegal inputs are replaced by the Unicode replacement
+character and illegal outputs are replaced by a question mark.")
((table +ms-cp1255+)))
Index: src/pcl/simple-streams/external-formats/cp1256.lisp
diff -u src/pcl/simple-streams/external-formats/cp1256.lisp:1.3 src/pcl/simple-streams/external-formats/cp1256.lisp:1.4
--- src/pcl/simple-streams/external-formats/cp1256.lisp:1.3 Sun Jun 21 11:12:25 2009
+++ src/pcl/simple-streams/external-formats/cp1256.lisp Mon Jul 12 09:58:42 2010
@@ -4,7 +4,7 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/cp1256.lisp,v 1.3 2009-06-21 15:12:25 rtoy Rel $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/cp1256.lisp,v 1.4 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
@@ -32,5 +32,9 @@
247 1617 249 1618 251 252 8206 8207
1746)))
-(define-external-format :cp1256 (:mac-roman)
+(define-external-format :cp1256 (:base :mac-roman :documentation
+"CP1256 is a Windows code page for Arabic.
+
+By default, illegal inputs are replaced by the Unicode replacement
+character and illegal outputs are replaced by a question mark.")
((table +ms-cp1256+)))
Index: src/pcl/simple-streams/external-formats/cp1257.lisp
diff -u src/pcl/simple-streams/external-formats/cp1257.lisp:1.3 src/pcl/simple-streams/external-formats/cp1257.lisp:1.4
--- src/pcl/simple-streams/external-formats/cp1257.lisp:1.3 Sun Jun 21 11:12:25 2009
+++ src/pcl/simple-streams/external-formats/cp1257.lisp Mon Jul 12 09:58:42 2010
@@ -4,7 +4,7 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/cp1257.lisp,v 1.3 2009-06-21 15:12:25 rtoy Rel $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/cp1257.lisp,v 1.4 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
@@ -30,5 +30,9 @@
311 299 316 353 324 326 243 333 245 246
247 371 322 347 363 252 380 382 729)))
-(define-external-format :cp1257 (:mac-roman)
+(define-external-format :cp1257 (:base :mac-roman :documentation
+"CP1257 is a Windows code page for Estonian, Latvian, and Lithuanian.
+
+By default, illegal inputs are replaced by the Unicode replacement
+character and illegal outputs are replaced by a question mark.")
((table +ms-cp1257+)))
Index: src/pcl/simple-streams/external-formats/cp1258.lisp
diff -u src/pcl/simple-streams/external-formats/cp1258.lisp:1.3 src/pcl/simple-streams/external-formats/cp1258.lisp:1.4
--- src/pcl/simple-streams/external-formats/cp1258.lisp:1.3 Sun Jun 21 11:12:25 2009
+++ src/pcl/simple-streams/external-formats/cp1258.lisp Mon Jul 12 09:58:42 2010
@@ -4,7 +4,7 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/cp1258.lisp,v 1.3 2009-06-21 15:12:25 rtoy Rel $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/cp1258.lisp,v 1.4 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
@@ -30,5 +30,9 @@
237 238 239 273 241 803 243 244 417 246
247 248 249 250 251 252 432 8363 255)))
-(define-external-format :cp1258 (:mac-roman)
+(define-external-format :cp1258 (:base :mac-roman :documentation
+"CP1258 is a Windows code page for Vietnamese.
+
+By default, illegal inputs are replaced by the Unicode replacement
+character and illegal outputs are replaced by a question mark.")
((table +ms-cp1258+)))
Index: src/pcl/simple-streams/external-formats/cr.lisp
diff -u src/pcl/simple-streams/external-formats/cr.lisp:1.2 src/pcl/simple-streams/external-formats/cr.lisp:1.3
--- src/pcl/simple-streams/external-formats/cr.lisp:1.2 Wed Sep 9 11:51:28 2009
+++ src/pcl/simple-streams/external-formats/cr.lisp Mon Jul 12 09:58:42 2010
@@ -4,12 +4,15 @@
;;; This code was written by Raymond Toy and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/cr.lisp,v 1.2 2009-09-09 15:51:28 rtoy Rel $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/cr.lisp,v 1.3 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
;; Convert CR to/from #\newline.
-(define-composing-external-format :cr (:size 1)
+(define-composing-external-format :cr (:size 1 :documentation
+"CR is a composing external format that converts CR (carriage return)
+to a Lisp newline character. This is the Mac end-of-line character
+sequence.")
(input (state input unput tmp1 tmp2)
`(multiple-value-bind (,tmp1 ,tmp2)
,input
Index: src/pcl/simple-streams/external-formats/crlf.lisp
diff -u src/pcl/simple-streams/external-formats/crlf.lisp:1.3 src/pcl/simple-streams/external-formats/crlf.lisp:1.4
--- src/pcl/simple-streams/external-formats/crlf.lisp:1.3 Wed Sep 9 11:51:28 2009
+++ src/pcl/simple-streams/external-formats/crlf.lisp Mon Jul 12 09:58:42 2010
@@ -4,12 +4,15 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/crlf.lisp,v 1.3 2009-09-09 15:51:28 rtoy Rel $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/crlf.lisp,v 1.4 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
;; Convert DOS cr/lf end-of-line sequence to/from #\newline
-(define-composing-external-format :crlf (:max 2)
+(define-composing-external-format :crlf (:max 2 :documentation
+"CRLF is a composing external format that converts CR/LF (carriage
+return/linefeed) to a Lisp newline character. This is the Windoes
+end-of-line character sequence.")
(input (state input unput tmp1 tmp2 tmp3 tmp4)
`(multiple-value-bind (,tmp1 ,tmp2)
,input
Index: src/pcl/simple-streams/external-formats/final-sigma.lisp
diff -u src/pcl/simple-streams/external-formats/final-sigma.lisp:1.2 src/pcl/simple-streams/external-formats/final-sigma.lisp:1.3
--- src/pcl/simple-streams/external-formats/final-sigma.lisp:1.2 Thu Jun 11 12:04:02 2009
+++ src/pcl/simple-streams/external-formats/final-sigma.lisp Mon Jul 12 09:58:42 2010
@@ -4,12 +4,14 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/final-sigma.lisp,v 1.2 2009-06-11 16:04:02 rtoy Rel $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/final-sigma.lisp,v 1.3 2010-07-12 13:58:42 rtoy Exp $")
;; This is a composing format that attempts to detect sigma in
;; word-final position and change it from "Ï" (U+03C3) to "Ï" (U+03C2).
-(define-composing-external-format :final-sigma (:size 1)
+(define-composing-external-format :final-sigma (:size 1 :documentation
+"FINAL-SIGMA is a composing external format that attempts to detect
+sigma in word-final position and changes it from U+03C3 to U+03C2.")
(input (state input unput tmp1 tmp2 tmp3 tmp4)
`(multiple-value-bind (,tmp1 ,tmp2) ,input
(when (= ,tmp1 #x03C3)
Index: src/pcl/simple-streams/external-formats/iso8859-1.lisp
diff -u src/pcl/simple-streams/external-formats/iso8859-1.lisp:1.4 src/pcl/simple-streams/external-formats/iso8859-1.lisp:1.5
--- src/pcl/simple-streams/external-formats/iso8859-1.lisp:1.4 Wed Jun 30 00:02:53 2010
+++ src/pcl/simple-streams/external-formats/iso8859-1.lisp Mon Jul 12 09:58:42 2010
@@ -4,17 +4,27 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/iso8859-1.lisp,v 1.4 2010-06-30 04:02:53 rtoy Exp $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/iso8859-1.lisp,v 1.5 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
;; This is actually implemented in the external-formats code
;; It appears here only for reference, and will never get loaded
-(define-external-format :iso8859-1 (:size 1)
- ()
+(define-external-format :iso8859-1 (:size 1 :documentation
+"ISO8859-1 is an 8-bit character encoding generally intended for
+Western European languages including English, German, Italian,
+Norwegian, Portuguese, Spanish, Swedish and many others.
+By default, illegal inputs are replaced by the Unicode replacement
+character and illegal outputs are replaced by a question mark.")
+ ()
(octets-to-code (state input unput error)
- (values ,input 1))
+ `(values ,input 1))
(code-to-octets (code state output error)
- (,output (if (> ,code 255) #x3F ,code))))
+ `(,output (if (> ,code 255)
+ (if ,error
+ (funcall ,error "Cannot output codepoint #x~X to ISO8859-1 stream"
+ ,code 1)
+ #x3F)
+ ,code))))
Index: src/pcl/simple-streams/external-formats/iso8859-10.lisp
diff -u src/pcl/simple-streams/external-formats/iso8859-10.lisp:1.2 src/pcl/simple-streams/external-formats/iso8859-10.lisp:1.3
--- src/pcl/simple-streams/external-formats/iso8859-10.lisp:1.2 Thu Jun 11 12:04:02 2009
+++ src/pcl/simple-streams/external-formats/iso8859-10.lisp Mon Jul 12 09:58:42 2010
@@ -4,7 +4,7 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/iso8859-10.lisp,v 1.2 2009-06-11 16:04:02 rtoy Rel $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/iso8859-10.lisp,v 1.3 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
@@ -19,5 +19,10 @@
238 239 240 326 333 243 244 245 246 361 248 371 250
251 252 253 254 312)))
-(define-external-format :iso8859-10 (:iso8859-2)
+(define-external-format :iso8859-10 (:base :iso8859-2 :documentation
+"ISO8859-10 is an 8-bit character encoding intended to cover Nordic
+languages.
+
+By default, illegal inputs are replaced by the Unicode replacement
+character and illegal outputs are replaced by a question mark.")
((table +iso-8859-10+)))
Index: src/pcl/simple-streams/external-formats/iso8859-13.lisp
diff -u src/pcl/simple-streams/external-formats/iso8859-13.lisp:1.2 src/pcl/simple-streams/external-formats/iso8859-13.lisp:1.3
--- src/pcl/simple-streams/external-formats/iso8859-13.lisp:1.2 Thu Jun 11 12:04:02 2009
+++ src/pcl/simple-streams/external-formats/iso8859-13.lisp Mon Jul 12 09:58:42 2010
@@ -4,7 +4,7 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/iso8859-13.lisp,v 1.2 2009-06-11 16:04:02 rtoy Rel $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/iso8859-13.lisp,v 1.3 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
@@ -19,5 +19,9 @@
299 316 353 324 326 243 333 245 246 247 371 322 347
363 252 380 382 8217)))
-(define-external-format :iso8859-13 (:iso8859-2)
+(define-external-format :iso8859-13 (:base :iso8859-2 :documentation
+"ISO8859-13 is an 8-bit character encoding for the Baltic languages.
+
+By default, illegal inputs are replaced by the Unicode replacement
+character and illegal outputs are replaced by a question mark.")
((table +iso-8859-13+)))
Index: src/pcl/simple-streams/external-formats/iso8859-14.lisp
diff -u src/pcl/simple-streams/external-formats/iso8859-14.lisp:1.2 src/pcl/simple-streams/external-formats/iso8859-14.lisp:1.3
--- src/pcl/simple-streams/external-formats/iso8859-14.lisp:1.2 Thu Jun 11 12:04:02 2009
+++ src/pcl/simple-streams/external-formats/iso8859-14.lisp Mon Jul 12 09:58:42 2010
@@ -4,7 +4,7 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/iso8859-14.lisp,v 1.2 2009-06-11 16:04:02 rtoy Rel $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/iso8859-14.lisp,v 1.3 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
@@ -19,5 +19,10 @@
234 235 236 237 238 239 373 241 242 243 244 245 246
7787 248 249 250 251 252 253 375 255)))
-(define-external-format :iso8859-14 (:iso8859-2)
+(define-external-format :iso8859-14 (:base :iso8859-2 :documentation
+"ISO8859-14 is an 8-bit character encoding intended for the Celtic
+languages such as Irish, Manx, Scottish Gaelic, Welsh, and Breton.
+
+By default, illegal inputs are replaced by the Unicode replacement
+character and illegal outputs are replaced by a question mark.")
((table +iso-8859-14+)))
Index: src/pcl/simple-streams/external-formats/iso8859-15.lisp
diff -u src/pcl/simple-streams/external-formats/iso8859-15.lisp:1.2 src/pcl/simple-streams/external-formats/iso8859-15.lisp:1.3
--- src/pcl/simple-streams/external-formats/iso8859-15.lisp:1.2 Thu Jun 11 12:04:02 2009
+++ src/pcl/simple-streams/external-formats/iso8859-15.lisp Mon Jul 12 09:58:42 2010
@@ -4,7 +4,7 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/iso8859-15.lisp,v 1.2 2009-06-11 16:04:02 rtoy Rel $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/iso8859-15.lisp,v 1.3 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
@@ -19,5 +19,11 @@
238 239 240 241 242 243 244 245 246 247 248 249 250
251 252 253 254 255)))
-(define-external-format :iso8859-15 (:iso8859-2)
+(define-external-format :iso8859-15 (:base :iso8859-2 :documentation
+"ISO8859-15 is an 8-bit character encoding similar to ISO8859-1 but
+replaces some less common symbols with others, including adding the
+Euro sign.
+
+By default, illegal inputs are replaced by the Unicode replacement
+character and illegal outputs are replaced by a question mark.")
((table +iso-8859-15+)))
Index: src/pcl/simple-streams/external-formats/iso8859-2.lisp
diff -u src/pcl/simple-streams/external-formats/iso8859-2.lisp:1.5 src/pcl/simple-streams/external-formats/iso8859-2.lisp:1.6
--- src/pcl/simple-streams/external-formats/iso8859-2.lisp:1.5 Wed Jul 7 17:59:49 2010
+++ src/pcl/simple-streams/external-formats/iso8859-2.lisp Mon Jul 12 09:58:42 2010
@@ -4,7 +4,7 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/iso8859-2.lisp,v 1.5 2010-07-07 21:59:49 rtoy Exp $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/iso8859-2.lisp,v 1.6 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
@@ -19,7 +19,14 @@
238 271 273 324 328 243 244 337 246 247 345 367 250
369 252 253 355 729)))
-(define-external-format :iso8859-2 (:size 1)
+(define-external-format :iso8859-2 (:size 1 :documentation
+"ISO8859-2 is an 8-bit character encoding generally intended for
+Eastern European languages including Bosnian, Croation, Czech, German,
+Hungarian, Polish, Romanian, Serbian Latin, Slovak, Slovene, Upper
+Sorbian, and Lower Sorbian.
+
+By default, illegal inputs are replaced by the Unicode replacement
+character and illegal outputs are replaced by a question mark.")
((table +iso-8859-2+ :type (simple-array (unsigned-byte 16) (96)))
(itable (invert-table table) :type lisp::ntrie16))
Index: src/pcl/simple-streams/external-formats/iso8859-3.lisp
diff -u src/pcl/simple-streams/external-formats/iso8859-3.lisp:1.2 src/pcl/simple-streams/external-formats/iso8859-3.lisp:1.3
--- src/pcl/simple-streams/external-formats/iso8859-3.lisp:1.2 Thu Jun 11 12:04:02 2009
+++ src/pcl/simple-streams/external-formats/iso8859-3.lisp Mon Jul 12 09:58:42 2010
@@ -4,7 +4,7 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/iso8859-3.lisp,v 1.2 2009-06-11 16:04:02 rtoy Rel $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/iso8859-3.lisp,v 1.3 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
@@ -19,5 +19,11 @@
237 238 239 65534 241 242 243 244 289 246 247 285 249
250 251 252 365 349 729)))
-(define-external-format :iso8859-3 (:iso8859-2)
+(define-external-format :iso8859-3 (:base :iso8859-2 :documentation
+"ISO8859-3 is an 8-bit character encoding intended for South European
+languages including Turkish, Maltese, and Esperanto. For Turkish,
+ISO8859-9 supersedes ISO8859-3.
+
+By default, illegal inputs are replaced by the Unicode replacement
+character and illegal outputs are replaced by a question mark.")
((table +iso-8859-3+)))
Index: src/pcl/simple-streams/external-formats/iso8859-4.lisp
diff -u src/pcl/simple-streams/external-formats/iso8859-4.lisp:1.2 src/pcl/simple-streams/external-formats/iso8859-4.lisp:1.3
--- src/pcl/simple-streams/external-formats/iso8859-4.lisp:1.2 Thu Jun 11 12:04:02 2009
+++ src/pcl/simple-streams/external-formats/iso8859-4.lisp Mon Jul 12 09:58:42 2010
@@ -4,7 +4,7 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/iso8859-4.lisp,v 1.2 2009-06-11 16:04:02 rtoy Rel $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/iso8859-4.lisp,v 1.3 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
@@ -19,5 +19,10 @@
238 299 273 326 333 311 244 245 246 247 248 371 250
251 252 361 363 729)))
-(define-external-format :iso8859-4 (:iso8859-2)
+(define-external-format :iso8859-4 (:base :iso8859-2 :documentation
+"ISO8859-4 is an 8-bit character encoding for North European languages
+including Estonian, Latvian, Lithuanian, Greenlandic, and Sami.
+
+By default, illegal inputs are replaced by the Unicode replacement
+character and illegal outputs are replaced by a question mark.")
((table +iso-8859-4+)))
Index: src/pcl/simple-streams/external-formats/iso8859-5.lisp
diff -u src/pcl/simple-streams/external-formats/iso8859-5.lisp:1.2 src/pcl/simple-streams/external-formats/iso8859-5.lisp:1.3
--- src/pcl/simple-streams/external-formats/iso8859-5.lisp:1.2 Thu Jun 11 12:04:02 2009
+++ src/pcl/simple-streams/external-formats/iso8859-5.lisp Mon Jul 12 09:58:42 2010
@@ -4,7 +4,7 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/iso8859-5.lisp,v 1.2 2009-06-11 16:04:02 rtoy Rel $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/iso8859-5.lisp,v 1.3 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
@@ -20,5 +20,11 @@
1101 1102 1103 8470 1105 1106 1107 1108 1109 1110 1111
1112 1113 1114 1115 1116 167 1118 1119)))
-(define-external-format :iso8859-5 (:iso8859-2)
+(define-external-format :iso8859-5 (:base :iso8859-2 :documentation
+"ISO8859-5, informallly referred to as Latin/Cyrillic, is an 8-bit
+character encoding intended for languages using a Cyrillic alphabet
+such as Bulgarian, Belarusian, Russian, Serbian, and Macedonian.
+
+By default, illegal inputs are replaced by the Unicode replacement
+character and illegal outputs are replaced by a question mark.")
((table +iso-8859-5+)))
Index: src/pcl/simple-streams/external-formats/iso8859-6.lisp
diff -u src/pcl/simple-streams/external-formats/iso8859-6.lisp:1.2 src/pcl/simple-streams/external-formats/iso8859-6.lisp:1.3
--- src/pcl/simple-streams/external-formats/iso8859-6.lisp:1.2 Thu Jun 11 12:04:02 2009
+++ src/pcl/simple-streams/external-formats/iso8859-6.lisp Mon Jul 12 09:58:42 2010
@@ -4,7 +4,7 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/iso8859-6.lisp,v 1.2 2009-06-11 16:04:02 rtoy Rel $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/iso8859-6.lisp,v 1.3 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
@@ -21,5 +21,10 @@
1616 1617 1618 65534 65534 65534 65534 65534 65534
65534 65534 65534 65534 65534 65534 65534)))
-(define-external-format :iso8859-6 (:iso8859-2)
+(define-external-format :iso8859-6 (:base :iso8859-2 :documentation
+"ISO8859-6 is an 8-bit character encoding generally intended languages
+using the Arabic alphabet.
+
+By default, illegal inputs are replaced by the Unicode replacement
+character and illegal outputs are replaced by a question mark.")
((table +iso-8859-6+)))
Index: src/pcl/simple-streams/external-formats/iso8859-7.lisp
diff -u src/pcl/simple-streams/external-formats/iso8859-7.lisp:1.2 src/pcl/simple-streams/external-formats/iso8859-7.lisp:1.3
--- src/pcl/simple-streams/external-formats/iso8859-7.lisp:1.2 Thu Jun 11 12:04:02 2009
+++ src/pcl/simple-streams/external-formats/iso8859-7.lisp Mon Jul 12 09:58:42 2010
@@ -4,7 +4,7 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/iso8859-7.lisp,v 1.2 2009-06-11 16:04:02 rtoy Rel $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/iso8859-7.lisp,v 1.3 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
@@ -19,5 +19,10 @@
956 957 958 959 960 961 962 963 964 965 966 967 968
969 970 971 972 973 974 65534)))
-(define-external-format :iso8859-7 (:iso8859-2)
+(define-external-format :iso8859-7 (:base :iso8859-2 :documentation
+"ISO8859-7 is an 8-bit character encoding for the modern Greek
+language.
+
+By default, illegal inputs are replaced by the Unicode replacement
+character and illegal outputs are replaced by a question mark.")
((table +iso-8859-7+)))
Index: src/pcl/simple-streams/external-formats/iso8859-8.lisp
diff -u src/pcl/simple-streams/external-formats/iso8859-8.lisp:1.2 src/pcl/simple-streams/external-formats/iso8859-8.lisp:1.3
--- src/pcl/simple-streams/external-formats/iso8859-8.lisp:1.2 Thu Jun 11 12:04:02 2009
+++ src/pcl/simple-streams/external-formats/iso8859-8.lisp Mon Jul 12 09:58:42 2010
@@ -4,7 +4,7 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/iso8859-8.lisp,v 1.2 2009-06-11 16:04:02 rtoy Rel $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/iso8859-8.lisp,v 1.3 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
@@ -21,5 +21,9 @@
1509 1510 1511 1512 1513 1514 65534 65534 8206 8207
65534)))
-(define-external-format :iso8859-8 (:iso8859-2)
+(define-external-format :iso8859-8 (:base :iso8859-2 :documentation
+"ISO8859-8 is an 8-bit character encoding intended for Hebrew.
+
+By default, illegal inputs are replaced by the Unicode replacement
+character and illegal outputs are replaced by a question mark.")
((table +iso-8859-8+)))
Index: src/pcl/simple-streams/external-formats/iso8859-9.lisp
diff -u src/pcl/simple-streams/external-formats/iso8859-9.lisp:1.2 src/pcl/simple-streams/external-formats/iso8859-9.lisp:1.3
--- src/pcl/simple-streams/external-formats/iso8859-9.lisp:1.2 Thu Jun 11 12:04:02 2009
+++ src/pcl/simple-streams/external-formats/iso8859-9.lisp Mon Jul 12 09:58:42 2010
@@ -4,7 +4,7 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/iso8859-9.lisp,v 1.2 2009-06-11 16:04:02 rtoy Rel $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/iso8859-9.lisp,v 1.3 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
@@ -19,5 +19,9 @@
238 239 287 241 242 243 244 245 246 247 248 249 250
251 252 305 351 255)))
-(define-external-format :iso8859-9 (:iso8859-2)
+(define-external-format :iso8859-9 (:base :iso8859-2 :documentation
+"ISO8859-9 is an 8-bit character encoding for the Turkish language.
+
+By default, illegal inputs are replaced by the Unicode replacement
+character and illegal outputs are replaced by a question mark.")
((table +iso-8859-9+)))
Index: src/pcl/simple-streams/external-formats/koi8-r.lisp
diff -u src/pcl/simple-streams/external-formats/koi8-r.lisp:1.2 src/pcl/simple-streams/external-formats/koi8-r.lisp:1.3
--- src/pcl/simple-streams/external-formats/koi8-r.lisp:1.2 Thu Jun 11 12:04:02 2009
+++ src/pcl/simple-streams/external-formats/koi8-r.lisp Mon Jul 12 09:58:42 2010
@@ -4,7 +4,7 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/koi8-r.lisp,v 1.2 2009-06-11 16:04:02 rtoy Rel $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/koi8-r.lisp,v 1.3 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
@@ -24,5 +24,9 @@
1053 1054 1055 1071 1056 1057 1058 1059 1046 1042
1068 1067 1047 1064 1069 1065 1063 1066)))
-(define-external-format :koi8-r (:mac-roman)
+(define-external-format :koi8-r (:base :mac-roman :documentation
+"KOI8-R is an 8-bit character encoding designed to cover Russian.
+
+By default, illegal inputs are replaced by the Unicode replacement
+character and illegal outputs are replaced by a question mark.")
((table +koi8-r+)))
Index: src/pcl/simple-streams/external-formats/mac-cyrillic.lisp
diff -u src/pcl/simple-streams/external-formats/mac-cyrillic.lisp:1.2 src/pcl/simple-streams/external-formats/mac-cyrillic.lisp:1.3
--- src/pcl/simple-streams/external-formats/mac-cyrillic.lisp:1.2 Thu Jun 11 12:04:02 2009
+++ src/pcl/simple-streams/external-formats/mac-cyrillic.lisp Mon Jul 12 09:58:42 2010
@@ -4,7 +4,7 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/mac-cyrillic.lisp,v 1.2 2009-06-11 16:04:02 rtoy Rel $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/mac-cyrillic.lisp,v 1.3 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
@@ -23,5 +23,10 @@
1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097
1098 1099 1100 1101 1102 164)))
-(define-external-format :mac-cyrillic (:mac-roman)
+(define-external-format :mac-cyrillic (:base :mac-roman :documentation
+"MAC-CYRILLIC is an 8-bit character encoding for Cyrillic text on
+Apple Macintosh computers.
+
+By default, illegal inputs are replaced by the Unicode replacement
+character and illegal outputs are replaced by a question mark.")
((table +mac-cyrillic+)))
Index: src/pcl/simple-streams/external-formats/mac-greek.lisp
diff -u src/pcl/simple-streams/external-formats/mac-greek.lisp:1.2 src/pcl/simple-streams/external-formats/mac-greek.lisp:1.3
--- src/pcl/simple-streams/external-formats/mac-greek.lisp:1.2 Thu Jun 11 12:04:02 2009
+++ src/pcl/simple-streams/external-formats/mac-greek.lisp Mon Jul 12 09:58:42 2010
@@ -4,7 +4,7 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/mac-greek.lisp,v 1.2 2009-06-11 16:04:02 rtoy Rel $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/mac-greek.lisp,v 1.3 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
@@ -21,5 +21,10 @@
947 951 953 958 954 955 956 957 959 960 974 961 963
964 952 969 962 967 965 950 970 971 912 944 65534)))
-(define-external-format :mac-greek (:mac-roman)
+(define-external-format :mac-greek (:base :mac-roman :documentation
+"MAC-GREEK is an 8-bit character encoding for Greek text on Apple
+Macintosh computers.
+
+By default, illegal inputs are replaced by the Unicode replacement
+character and illegal outputs are replaced by a question mark.")
((table +mac-greek+)))
Index: src/pcl/simple-streams/external-formats/mac-icelandic.lisp
diff -u src/pcl/simple-streams/external-formats/mac-icelandic.lisp:1.2 src/pcl/simple-streams/external-formats/mac-icelandic.lisp:1.3
--- src/pcl/simple-streams/external-formats/mac-icelandic.lisp:1.2 Thu Jun 11 12:04:02 2009
+++ src/pcl/simple-streams/external-formats/mac-icelandic.lisp Mon Jul 12 09:58:42 2010
@@ -4,7 +4,7 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/mac-icelandic.lisp,v 1.2 2009-06-11 16:04:02 rtoy Rel $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/mac-icelandic.lisp,v 1.3 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
@@ -22,5 +22,10 @@
65534 210 218 219 217 305 710 732 175 728 729 730 184
733 731 711)))
-(define-external-format :mac-icelandic (:mac-roman)
+(define-external-format :mac-icelandic (:base :mac-roman :documentation
+"MAC-ICELANDIC is an 8-bit character encoding for Icelandic text on
+Apple Macintosh computers.
+
+By default, illegal inputs are replaced by the Unicode replacement
+character and illegal outputs are replaced by a question mark.")
((table +mac-icelandic+)))
Index: src/pcl/simple-streams/external-formats/mac-latin2.lisp
diff -u src/pcl/simple-streams/external-formats/mac-latin2.lisp:1.2 src/pcl/simple-streams/external-formats/mac-latin2.lisp:1.3
--- src/pcl/simple-streams/external-formats/mac-latin2.lisp:1.2 Thu Jun 11 12:04:02 2009
+++ src/pcl/simple-streams/external-formats/mac-latin2.lisp Mon Jul 12 09:58:42 2010
@@ -4,7 +4,7 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/mac-latin2.lisp,v 1.2 2009-06-11 16:04:02 rtoy Rel $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/mac-latin2.lisp,v 1.3 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
@@ -22,5 +22,11 @@
218 367 368 369 370 371 221 253 311 379 321 380 290
711)))
-(define-external-format :mac-latin2 (:mac-roman)
+(define-external-format :mac-latin2 (:base :mac-roman :documentation
+
+"MAC-LATIN2 is an 8-bit character encoding for Central European text
+on Apple Macintosh computers.
+
+By default, illegal inputs are replaced by the Unicode replacement
+character and illegal outputs are replaced by a question mark.")
((table +mac-latin2+)))
Index: src/pcl/simple-streams/external-formats/mac-roman.lisp
diff -u src/pcl/simple-streams/external-formats/mac-roman.lisp:1.6 src/pcl/simple-streams/external-formats/mac-roman.lisp:1.7
--- src/pcl/simple-streams/external-formats/mac-roman.lisp:1.6 Wed Jul 7 17:59:49 2010
+++ src/pcl/simple-streams/external-formats/mac-roman.lisp Mon Jul 12 09:58:42 2010
@@ -4,7 +4,7 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/mac-roman.lisp,v 1.6 2010-07-07 21:59:49 rtoy Exp $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/mac-roman.lisp,v 1.7 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
@@ -24,7 +24,12 @@
212 63743 210 218 219 217 305 710 732 175 728 729 730
184 733 731 711)))
-(define-external-format :mac-roman (:size 1)
+(define-external-format :mac-roman (:size 1 :documentation
+"MAC-ROMAN is an 8-bit character encoding for Western European
+languages including English.
+
+By default, illegal inputs are replaced by the Unicode replacement
+character and illegal outputs are replaced by a question mark.")
((table +mac-roman+ :type (simple-array (unsigned-byte 16) (128)))
(itable (invert-table table) :type lisp::ntrie16))
Index: src/pcl/simple-streams/external-formats/mac-turkish.lisp
diff -u src/pcl/simple-streams/external-formats/mac-turkish.lisp:1.2 src/pcl/simple-streams/external-formats/mac-turkish.lisp:1.3
--- src/pcl/simple-streams/external-formats/mac-turkish.lisp:1.2 Thu Jun 11 12:04:02 2009
+++ src/pcl/simple-streams/external-formats/mac-turkish.lisp Mon Jul 12 09:58:42 2010
@@ -4,7 +4,7 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/mac-turkish.lisp,v 1.2 2009-06-11 16:04:02 rtoy Rel $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/mac-turkish.lisp,v 1.3 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
@@ -22,5 +22,11 @@
65534 210 218 219 217 65534 710 732 175 728 729 730
184 733 731 711)))
-(define-external-format :mac-turkish (:mac-roman)
+(define-external-format :mac-turkish (:base :mac-roman :documentation
+
+"MAC-TURKISH is an 8-bit character encoding for Turkish text on
+Apple Macintosh computers.
+
+By default, illegal inputs are replaced by the Unicode replacement
+character and illegal outputs are replaced by a question mark.")
((table +mac-turkish+)))
Index: src/pcl/simple-streams/external-formats/utf-16-be.lisp
diff -u src/pcl/simple-streams/external-formats/utf-16-be.lisp:1.8 src/pcl/simple-streams/external-formats/utf-16-be.lisp:1.9
--- src/pcl/simple-streams/external-formats/utf-16-be.lisp:1.8 Mon Jul 5 00:12:47 2010
+++ src/pcl/simple-streams/external-formats/utf-16-be.lisp Mon Jul 12 09:58:42 2010
@@ -4,13 +4,20 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/utf-16-be.lisp,v 1.8 2010-07-05 04:12:47 rtoy Exp $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/utf-16-be.lisp,v 1.9 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
;; UTF-16BE. BOM is not recognized and is never output.
-(define-external-format :utf-16-be (:size 2)
+(define-external-format :utf-16-be (:size 2 :documentation
+"UTF-16-BE is a variable length character encoding for Unicode. For
+both input and output, the data is assumed to be in big-endian order.
+No byte-order mark is allowed on input, and no byte-order mark is
+produced on output. (This is specified by the Unicode standard.)
+
+By default, illegal inputs and illegal outputs are replaced by the
+Unicode replacement character.")
()
(octets-to-code (state input unput error c1 c2 code next)
Index: src/pcl/simple-streams/external-formats/utf-16-le.lisp
diff -u src/pcl/simple-streams/external-formats/utf-16-le.lisp:1.8 src/pcl/simple-streams/external-formats/utf-16-le.lisp:1.9
--- src/pcl/simple-streams/external-formats/utf-16-le.lisp:1.8 Mon Jul 5 00:12:47 2010
+++ src/pcl/simple-streams/external-formats/utf-16-le.lisp Mon Jul 12 09:58:42 2010
@@ -4,14 +4,21 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/utf-16-le.lisp,v 1.8 2010-07-05 04:12:47 rtoy Exp $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/utf-16-le.lisp,v 1.9 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
;; UTF-16LE. BOM is not recognized, and is never output.
;;
;; The state is either NIL or a codepoint.
-(define-external-format :utf-16-le (:size 2)
+(define-external-format :utf-16-le (:size 2 :documentation
+"UTF-16-LE is a variable length character encoding for Unicode. For
+both input and output, the data is assumed to be in little-endian
+order. No byte-order mark is allowed on input, and no byte-order mark
+is produced on output. (This is specified by the Unicode standard.)
+
+By default, illegal inputs and illegal outputs are replaced by the
+Unicode replacement character.")
()
(octets-to-code (state input unput error c1 c2 code next)
Index: src/pcl/simple-streams/external-formats/utf-16.lisp
diff -u src/pcl/simple-streams/external-formats/utf-16.lisp:1.10 src/pcl/simple-streams/external-formats/utf-16.lisp:1.11
--- src/pcl/simple-streams/external-formats/utf-16.lisp:1.10 Mon Jul 5 00:12:47 2010
+++ src/pcl/simple-streams/external-formats/utf-16.lisp Mon Jul 12 09:58:42 2010
@@ -1,7 +1,7 @@
;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*-
;;;
;;; **********************************************************************
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/utf-16.lisp,v 1.10 2010-07-05 04:12:47 rtoy Exp $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/utf-16.lisp,v 1.11 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
@@ -22,7 +22,15 @@
;;
;; When writing, never output a BOM.
-(define-external-format :utf-16 (:size 2)
+(define-external-format :utf-16 (:size 2 :documentation
+"UTF-16 is a variable length character encoding for Unicode. On
+input, a byte-order mark is recognized. If no byte-order mark is
+given on input, then the encoding is assumed to be big-endian. For
+output, the byte-order mark is not written, and the output is
+big-endian. (This is specified by the Unicode standard.)
+
+By default, illegal inputs and illegal outputs are replaced by the
+Unicode replacement character.")
()
(octets-to-code (state input unput error c1 c2 code wd next st)
Index: src/pcl/simple-streams/external-formats/utf-32-be.lisp
diff -u src/pcl/simple-streams/external-formats/utf-32-be.lisp:1.7 src/pcl/simple-streams/external-formats/utf-32-be.lisp:1.8
--- src/pcl/simple-streams/external-formats/utf-32-be.lisp:1.7 Mon Jul 5 00:12:47 2010
+++ src/pcl/simple-streams/external-formats/utf-32-be.lisp Mon Jul 12 09:58:42 2010
@@ -4,11 +4,19 @@
;;; This code was written by Raymond Toy and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/utf-32-be.lisp,v 1.7 2010-07-05 04:12:47 rtoy Exp $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/utf-32-be.lisp,v 1.8 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
-(define-external-format :utf-32-be (:size 4)
+(define-external-format :utf-32-be (:size 4 :documentation
+"UTF-32-BE is a fixed-length character encoding of 4 octets for
+Unicode. For both input and output, the data is assumed to be in
+big-endian order. No byte-order mark is allowed on input, and no
+byte-order mark is produced on output. (This is specified by the
+Unicode standard.)
+
+By default, illegal inputs and illegal outputs are replaced by the
+Unicode replacement character.")
()
(octets-to-code (state input unput error c c1 c2 c3 c4)
Index: src/pcl/simple-streams/external-formats/utf-32-le.lisp
diff -u src/pcl/simple-streams/external-formats/utf-32-le.lisp:1.7 src/pcl/simple-streams/external-formats/utf-32-le.lisp:1.8
--- src/pcl/simple-streams/external-formats/utf-32-le.lisp:1.7 Mon Jul 5 00:12:47 2010
+++ src/pcl/simple-streams/external-formats/utf-32-le.lisp Mon Jul 12 09:58:42 2010
@@ -4,11 +4,19 @@
;;; This code was written by Raymond Toy and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/utf-32-le.lisp,v 1.7 2010-07-05 04:12:47 rtoy Exp $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/utf-32-le.lisp,v 1.8 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
-(define-external-format :utf-32-le (:size 4)
+(define-external-format :utf-32-le (:size 4 :documentation
+"UTF-32-LE is a fixed-length character encoding of 4 octets for
+Unicode. For both input and output, the data is assumed to be in
+little-endian order. No byte-order mark is allowed on input, and no
+byte-order mark is produced on output. (This is specified by the
+Unicode standard.)
+
+By default, illegal inputs and illegal outputs are replaced by the
+Unicode replacement character.")
()
(octets-to-code (state input unput error c c1 c2 c3 c4)
Index: src/pcl/simple-streams/external-formats/utf-32.lisp
diff -u src/pcl/simple-streams/external-formats/utf-32.lisp:1.9 src/pcl/simple-streams/external-formats/utf-32.lisp:1.10
--- src/pcl/simple-streams/external-formats/utf-32.lisp:1.9 Mon Jul 5 00:12:47 2010
+++ src/pcl/simple-streams/external-formats/utf-32.lisp Mon Jul 12 09:58:42 2010
@@ -4,7 +4,7 @@
;;; This code was written by Raymond Toy and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/utf-32.lisp,v 1.9 2010-07-05 04:12:47 rtoy Exp $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/utf-32.lisp,v 1.10 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
@@ -26,7 +26,15 @@
;; (evenp state) = big-endian
;; (zerop state) = #xFEFF/#xFFFE is BOM (to be skipped)
;;
-(define-external-format :utf-32 (:size 4)
+(define-external-format :utf-32 (:size 4 :documentation
+"UTF-32 is a fixed-length character encoding of 4 octets for Unicode.
+On input, a byte-order mark is recognized. If no byte-order mark is
+given on input, then the encoding is assumed to be big-endian. For
+output, the byte-order mark is not written, and the output is
+big-endian. (This is specified by the Unicode standard.)
+
+By default, illegal inputs and illegal outputs are replaced by the
+Unicode replacement character.")
()
(octets-to-code (state input unput code error c1 c2 c3 c4 st wd)
Index: src/pcl/simple-streams/external-formats/utf-8.lisp
diff -u src/pcl/simple-streams/external-formats/utf-8.lisp:1.12 src/pcl/simple-streams/external-formats/utf-8.lisp:1.13
--- src/pcl/simple-streams/external-formats/utf-8.lisp:1.12 Wed Jul 7 09:43:12 2010
+++ src/pcl/simple-streams/external-formats/utf-8.lisp Mon Jul 12 09:58:42 2010
@@ -4,7 +4,7 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/utf-8.lisp,v 1.12 2010-07-07 13:43:12 rtoy Exp $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/utf-8.lisp,v 1.13 2010-07-12 13:58:42 rtoy Exp $")
(in-package "STREAM")
@@ -13,7 +13,11 @@
;;
;; See Table 3-7, Ch 3.9 in the Unicode book.
-(define-external-format :utf-8 (:min 1 :max 4)
+(define-external-format :utf-8 (:min 1 :max 4 :documentation
+"UTF-8 is a variable-length character encoding for Unicode. By
+default, illegal input sequences are replaced by the Unicode
+replacement character.")
+
()
(octets-to-code (state input unput error c i j n)
`(labels ((utf8 (,c ,i)
Index: src/pcl/simple-streams/external-formats/void.lisp
diff -u src/pcl/simple-streams/external-formats/void.lisp:1.4 src/pcl/simple-streams/external-formats/void.lisp:1.5
--- src/pcl/simple-streams/external-formats/void.lisp:1.4 Wed Jun 30 00:02:53 2010
+++ src/pcl/simple-streams/external-formats/void.lisp Mon Jul 12 09:58:42 2010
@@ -4,12 +4,13 @@
;;; This code was written by Paul Foley and has been placed in the public
;;; domain.
;;;
-(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/void.lisp,v 1.4 2010-06-30 04:02:53 rtoy Exp $")
+(ext:file-comment "$Header: /project/cmucl/cvsroot/src/pcl/simple-streams/external-formats/void.lisp,v 1.5 2010-07-12 13:58:42 rtoy Exp $")
;; This is actually implemented in the external-formats code
;; It appears here only for reference, and will never get loaded
-(define-external-format :void (:size 0)
+(define-external-format :void (:size 0 :documentation
+"Void external format that signals an error on any input or output.")
()
(octets-to-code (state input unput error)
`(error 'void-external-format))
More information about the cmucl-commit
mailing list