[cxml-cvs] CVS update: cxml/runes/encodings.lisp
David Lichteblau
dlichteblau at common-lisp.net
Mon Nov 28 22:22:54 UTC 2005
Update of /project/cxml/cvsroot/cxml/runes
In directory common-lisp.net:/tmp/cvs-serv3876/runes
Modified Files:
encodings.lisp
Log Message:
kommentaraenderungen
Date: Mon Nov 28 23:22:51 2005
Author: dlichteblau
Index: cxml/runes/encodings.lisp
diff -u cxml/runes/encodings.lisp:1.5 cxml/runes/encodings.lisp:1.6
--- cxml/runes/encodings.lisp:1.5 Sun Nov 27 21:59:00 2005
+++ cxml/runes/encodings.lisp Mon Nov 28 23:22:51 2005
@@ -107,6 +107,39 @@
(defmacro %< (&rest xs) `(fx-pred < , at xs))
(defmacro %> (&rest xs) `(fx-pred > , at xs))
+;;; Decoders
+
+;; The decoders share a common signature:
+;;
+;; DECODE input input-start input-end
+;; output output-start output-end
+;; eof-p
+;; -> first-not-written ; first-not-read
+;;
+;; These decode functions should decode as much characters off `input'
+;; into the `output' as possible and return the indexes to the first
+;; not read and first not written element of `input' and `output'
+;; respectively. If there are not enough bytes in `input' to decode a
+;; full character, decoding shold be abandomed; the caller has to
+;; ensure that the remaining bytes of `input' are passed to the
+;; decoder again with more bytes appended.
+;;
+;; `eof-p' now in turn indicates, if the given input sequence, is all
+;; the producer does have and might be used to produce error messages
+;; in case of incomplete codes or decided what to do.
+;;
+;; Decoders are expected to handle the various CR/NL conventions and
+;; canonicalize each end of line into a single NL rune (#xA) in good
+;; old Lisp tradition.
+;;
+
+;; TODO: change this to an encoding class, which then might carry
+;; additional state. Stateless encodings could been represented by
+;; keywords. e.g.
+;;
+;; defmethod DECODE-SEQUENCE ((encoding (eql :utf-8)) ...)
+;;
+
(defmethod decode-sequence ((encoding (eql :utf-16-big-endian))
in in-start in-end out out-start out-end eof?)
;; -> new wptr, new rptr
More information about the Cxml-cvs
mailing list