chrysme at gmail.com
Thu Feb 8 12:44:58 PST 2007
> >>> And the following code compiles:
> >>> EndianStream es = new EndianStream( new MemoryStream() );
> >>> ubyte b;
> >>> (cast(InputStream) es).read( b );
> >>> Could someone explain? Am I missing something obvious, or is it a
> >>> compiler bug?
> >> I'm guessing this makes it call Stream's version of read(ubyte), which
> >> will give the wrong result.
> > Why is that the wrong result? EndianStream only swaps when reading
> > multi-byte data since there's nothing to swap with a single byte.
> Is EndianStream supposed to be used for single-byte reads too?
It seemed to me that EndianStream was supposed to wrap a source stream to provide byte swapping on multi-byte read/write. I don't think the rest of FilterStream's functionality should be affected.
The stream itself doesn't necesserily contain multi-byte data only, e.g. it can contain flag bytes, followed by multi-byte data (which is what I wanted to use EndianStream for).
And by the way, thanks for the help!
More information about the Digitalmars-d-learn