Author: eweitz Date: Tue May 20 21:49:41 2008 New Revision: 43
Modified: branches/edi/doc/index.html branches/edi/packages.lisp branches/edi/strings.lisp Log: New function octet-length
Modified: branches/edi/doc/index.html ============================================================================== --- branches/edi/doc/index.html (original) +++ branches/edi/doc/index.html Tue May 20 21:49:41 2008 @@ -115,6 +115,7 @@ <ol> <li><a href="#string-to-octets"><code>string-to-octets</code></a> <li><a href="#octets-to-string"><code>octets-to-string</code></a> + <li><a href="#octet-length"><code>octet-length</code></a> </ol> </ol> <li><a href="#position">File positions</a> @@ -470,8 +471,8 @@ CL-USER 5 > (make-external-format :ucs-2be) #<FLEXI-STREAMS::EXTERNAL-FORMAT (:UTF-16 :EOL-STYLE :CRLF :LITTLE-ENDIAN NIL) 2067DBE4>
-CL-USER 6 > (make-external-format :ucs-2be :eol-style :br) -#<FLEXI-STREAMS::EXTERNAL-FORMAT (:UTF-16 :EOL-STYLE :BR :LITTLE-ENDIAN NIL) 206B54AC> +CL-USER 6 > (make-external-format :ucs-2be :eol-style :cr) +#<FLEXI-STREAMS::EXTERNAL-FORMAT (:UTF-16 :EOL-STYLE :CR :LITTLE-ENDIAN NIL) 206B54AC> </pre> </blockquote>
@@ -982,7 +983,8 @@ <blockquote><br>
Converts the Lisp string <code><i>string</i></code> from <code><i>start</i></code> to <code><i>end</i></code> to an array of -<a href="#octet">octets</a> corresponding to the external format designated by <a href="#external-formats">external format</a> <code><i>external-format</i></code>. The defaults for +<a href="#octet">octets</a> corresponding to the <a href="#external-formats">external +format</a> designated by <code><i>external-format</i></code>. The defaults for <code><i>start</i></code> and <code><i>end</i></code> are <code>0</code> and the length of the string. The default for <code><i>external-format</i></code> is <code>:LATIN1</code>. @@ -995,9 +997,25 @@ <blockquote><br> Converts the Lisp sequence <code><i>sequence</i></code> of <a href="#octet">octets</a> from <code><i>start</i></code> to <code><i>end</i></code> to string -using the external format designated -by <a href="#external-formats">external -format</a> <code><i>external-format</i></code>. The defaults for +using the <a href="#external-formats">external format</a> designated +by <code><i>external-format</i></code>. The defaults for +<code><i>start</i></code> and <code><i>end</i></code> +are <code>0</code> and the length of the sequence. The default +for <code><i>external-format</i></code> is <code>:LATIN1</code>. +</blockquote> + +<p><br>[Function] +<br><a class=none name="octet-length"><b>octet-length</b> <i>string <tt>&key</tt> external-format start end</i> => <i>length-or-nil</i></a> + +<blockquote><br> + +Returns the length of the substring of <code><i>string</i></code> from <code><i>start</i></code> to <code><i>end</i></code> in +<a href="#octet">octets</a> if encoded using +the <a href="#external-formats">external format</a> designated +by <code><i>external-format</i></code>. Might return <code>NIL</code> +if there's no efficient way to compute the length without iterating +through the whole string. +The defaults for <code><i>start</i></code> and <code><i>end</i></code> are <code>0</code> and the length of the sequence. The default for <code><i>external-format</i></code> is <code>:LATIN1</code>. @@ -1042,7 +1060,7 @@ his work on making FLEXI-STREAMS faster.
<p> -$Header: /usr/local/cvsrep/flexi-streams/doc/index.html,v 1.106 2008/05/21 01:06:45 edi Exp $ +$Header: /usr/local/cvsrep/flexi-streams/doc/index.html,v 1.107 2008/05/21 01:43:45 edi Exp $ <p><a href="http://weitz.de/index.html">BACK TO MY HOMEPAGE</a>
</body>
Modified: branches/edi/packages.lisp ============================================================================== --- branches/edi/packages.lisp (original) +++ branches/edi/packages.lisp Tue May 20 21:49:41 2008 @@ -1,5 +1,5 @@ ;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: CL-USER; Base: 10 -*- -;;; $Header: /usr/local/cvsrep/flexi-streams/packages.lisp,v 1.34 2008/05/20 23:44:45 edi Exp $ +;;; $Header: /usr/local/cvsrep/flexi-streams/packages.lisp,v 1.35 2008/05/21 01:43:43 edi Exp $
;;; Copyright (c) 2005-2008, Dr. Edmund Weitz. All rights reserved.
@@ -76,6 +76,7 @@ :make-in-memory-output-stream :make-flexi-stream :octet + :octet-length :octets-to-string :output-stream-sequence-length :peek-byte
Modified: branches/edi/strings.lisp ============================================================================== --- branches/edi/strings.lisp (original) +++ branches/edi/strings.lisp Tue May 20 21:49:41 2008 @@ -1,5 +1,5 @@ ;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: FLEXI-STREAMS; Base: 10 -*- -;;; $Header: /usr/local/cvsrep/flexi-streams/strings.lisp,v 1.21 2008/05/20 09:04:23 edi Exp $ +;;; $Header: /usr/local/cvsrep/flexi-streams/strings.lisp,v 1.22 2008/05/21 01:43:43 edi Exp $
;;; Copyright (c) 2005-2008, Dr. Edmund Weitz. All rights reserved.
@@ -159,3 +159,15 @@ (incf j)) (setf (fill-pointer string) j) string)))))))) + +(defun octet-length (string &key (external-format :latin1) (start 0) (end (length string))) + "Returns the length of the substring of STRING from START to END in +octets if encoded using the external format EXTERNAL-FORMAT. Might +return NIL if there's no efficient way to compute the length without +iterating through the whole string." + (declare #.*standard-optimize-settings*) + (declare (fixnum start end) (string string)) + (setq external-format (maybe-convert-external-format external-format)) + (let ((factor (encoding-factor external-format))) + (typecase factor + (fixnum (* factor (- end start))))))
flexi-streams-cvs@common-lisp.net