Well, my point was that by copying that, you don't set writeLimit, so attempting to write to the ReadWriteStream results in an error... (which is why I gave a test that both reads and writes instead of just reading) In that case, what's the point? It's functionality is then just the same as a ReadStream. (Which is doubly confusing, seeing as it inherits from WriteStream)
so doing it your way, we'd have to do: on: aCollection readLimit := aCollection size. writeLimit := aCollection size. position := 0. self reset. instead of a straight copy. Btw, your version has a dependency on the super as well, mainly that it defines the correct instvars. :) Which version to prefer comes down to taste, I guess. Cheers, Henry On Jun 30, 2009, at 3:54 35PM, Alexandre Bergel wrote: >> You haven't set the writeLimit by just copying PositionableStream >> though, have you? > > I suggested to copy PositionableStream>>on: in ReadWriteStream: > on: aCollection > > collection := aCollection. > readLimit := aCollection size. > position := 0. > self reset > > Your implementation works well too, it has no duplication, but has a > dependency over the implementation of the superclass. > > Cheers, > Alexandre > > >> >> >> >> On Jun 30, 2009, at 3:00 46PM, Alexandre Bergel wrote: >> >>>> Put the readLimit at 0 make sense for a WriteStream ( with witch >>>> your not supposed to read ) but when you create a ReadWriteStream >>>> on >>>> a collection you would be able to read what is already in the >>>> collection, no? >>>> I wonder why #on: has not been overriden in the instance side of >>>> ReadWriteStream ? >>>> Maybe it's not a good idea to create a ReadWriteStream with a >>>> collection that already includes elements ? >>> >>> >>> It looks like on: must be overridden in ReadWriteStream. >>> With ReadStream I have: >>> (ReadStream on: (1 to: 20)) next => 1 >>> (ReadStream on: (1 to: 20)) next; next => 2 >>> >>> However, with ReadWriteStream, nil is returned, for the very problem >>> you mentioned: >>> (ReadWriteStream on: (1 to: 20)) next => nil >>> >>> If I cut and paste PositionnableStream>>on: in ReadWriteStream, >>> then I >>> have the behavior I expected: >>> (ReadWriteStream on: (1 to: 20)) next => 1 >>> (ReadWriteStream on: (1 to: 20)) next; next => 2 >>> >>> Cheers, >>> Alexandre >>> >>> -- >>> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: >>> Alexandre Bergel http://www.bergel.eu >>> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. >>> >>> >>> >>> >>> >>> >>> _______________________________________________ >>> Pharo-project mailing list >>> [email protected] >>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project >>> >> >> >> _______________________________________________ >> Pharo-project mailing list >> [email protected] >> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project >> > > -- > _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: > Alexandre Bergel http://www.bergel.eu > ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. > > > > > > > _______________________________________________ > Pharo-project mailing list > [email protected] > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project > _______________________________________________ Pharo-project mailing list [email protected] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
