kommentaraenderungen
This commit is contained in:
@ -107,6 +107,39 @@
|
|||||||
(defmacro %< (&rest xs) `(fx-pred < ,@xs))
|
(defmacro %< (&rest xs) `(fx-pred < ,@xs))
|
||||||
(defmacro %> (&rest xs) `(fx-pred > ,@xs))
|
(defmacro %> (&rest xs) `(fx-pred > ,@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))
|
(defmethod decode-sequence ((encoding (eql :utf-16-big-endian))
|
||||||
in in-start in-end out out-start out-end eof?)
|
in in-start in-end out out-start out-end eof?)
|
||||||
;; -> new wptr, new rptr
|
;; -> new wptr, new rptr
|
||||||
|
|||||||
Reference in New Issue
Block a user