speed up #nextAvailable
authorStefan Vogel <sv@exept.de>
Mon, 28 Nov 2005 22:24:02 +0100
changeset 9003 baa2a9409c9d
parent 9002 d50165ce5cba
child 9004 e24e9f8fcca1
speed up #nextAvailable
PositionableStream.st
--- a/PositionableStream.st	Mon Nov 28 22:23:08 2005 +0100
+++ b/PositionableStream.st	Mon Nov 28 22:24:02 2005 +0100
@@ -508,6 +508,29 @@
 
 !PositionableStream methodsFor:'reading'!
 
+nextAvailable:count
+    |end result|
+
+    end := position + count.
+    (end - ZeroPosition + 1) > readLimit ifTrue:[
+        end := readLimit.
+    ].
+
+    result := collection copyFrom:position+1-ZeroPosition to:end.
+    position := end.
+    ^ result.
+
+    "
+        'abc' readStream nextAvailable:1.
+        'abc' readStream nextAvailable:2.
+        'abc' readStream nextAvailable:3.
+        'abc' readStream nextAvailable:4.
+
+        'abc' readStream nextAvailable:2; nextAvailable:2.
+        'abc' readStream nextAvailable:3; nextAvailable:3.
+    "
+!
+
 upToAll:aCollection
     "read until a subcollection consisisting of the elements in aCollection
      is encountered.
@@ -578,7 +601,7 @@
 !PositionableStream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/PositionableStream.st,v 1.142 2004-07-13 08:39:04 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/PositionableStream.st,v 1.143 2005-11-28 21:24:02 stefan Exp $'
 ! !
 
 PositionableStream initialize!