Thank you for integrating the Scieneer CL support.
David Lichteblau wrote: ...
I take it that Scieneer does not have (setf s-e-f) either? How does ext:make-xml-character-conversion-stream work?
The stream-external-format can not be changed reliably on the buffered streams used for CXML because content may have already been consumed and converted. The runes xstream has a 'speed' setting to avoid this problem but this is not implemented in the SCL native buffered streams.
The function 'ext:make-xml-character-conversion-stream peeks ahead multiple bytes to parse the byte order mark and the document declaration encoding and then returns an appropriate character stream that reads from the start of the document. The runes 'figure-encoding function could be expanded to do the same, reading the document declaration to determine the encoding, and then the xstream 'speed' change would not be necessary.
#-x&y-streams-are-stream (:file "encodings")
Where do you add :x&y-streams-are-stream to *features*?
Perhaps this should be the default for the SCL; patch attached. The runes implementation also works, just a little slower and with less supported encodings.
Regards Douglas Crosher
Index: runes.asd =================================================================== RCS file: /project/cxml/cvsroot/cxml/runes.asd,v retrieving revision 1.2 diff -u -r1.2 runes.asd --- runes.asd 16 Jun 2007 11:27:18 -0000 1.2 +++ runes.asd 17 Jun 2007 05:31:19 -0000 @@ -37,6 +37,10 @@ #+rune-is-character (format t "~&;;; Building Closure with CHARACTER RUNES~%")
+;;; Use native streams for the Scieneer CL. +#+scl +(pushnew :x&y-streams-are-stream *features*) + (defsystem :runes :default-component-class closure-source-file :pathname (merge-pathnames