#include <InternalStream.h>
Inheritance diagram for Core::InternalStream:
Public Member Functions | |
InternalStream (SequenceableCollection *coll) | |
virtual String * | className (void) const |
Answer receiver class name. | |
virtual SequenceableCollection * | contents (void) |
Answer content of the receiver. | |
virtual void | nextPutAll (const Collection *coll) |
virtual void | nextPutAll (const char *string) |
virtual void | nextPutAll (const SequenceableCollection *coll, long size, long startIndex) |
virtual SequenceableCollection * | upToEnd (void) |
Answer collection of all data on the stream from actual position. | |
Protected Member Functions | |
virtual void | pastEndPut (Object *object) |
|
Definition at line 28 of file InternalStream.cc. References Core::PositionableStream::initialize(). 00029 { 00030 PositionableStream::initialize(coll); 00031 }
|
|
Answer receiver class name. Because there isn't any standard way to obtain class name this method comes to place. Every class should rewrite this method but many didn't (yet). Reimplemented from Core::PositionableStream. Reimplemented in Core::ReadAppendStream, Core::ReadStream, and Core::WriteStream. Definition at line 34 of file InternalStream.cc. 00035 { 00036 return new String("InternalStream"); 00037 }
|
|
Answer content of the receiver. In many cases it doesn't matter if it is ReadStream or WriteStream because they don't do any conversion. I does matter on streams like EncodedStream where some conversion takes place. In that case contents() always answer collection of encoded data (for ex. as it would be written to the disk). To get all data decoded you can use upToEnd() method. Reimplemented from Core::PositionableStream. Reimplemented in Core::WriteStream. Definition at line 40 of file InternalStream.cc. References Core::PositionableStream::_position, Core::PositionableStream::collection, Core::SequenceableCollection::copy(), and Core::PositionableStream::read_limit. 00041 { 00042 read_limit = (read_limit < _position) ? _position : read_limit; 00043 return dynamic_cast<SequenceableCollection *>(collection->copy(0, read_limit)); 00044 }
|
|
Reimplemented from Core::Stream. Reimplemented in Core::ReadAppendStream. Definition at line 46 of file InternalStream.cc. References Core::PositionableStream::_position, Core::PositionableStream::collection, Core::SequenceableCollection::growToAtLeast(), Core::Stream::nextPut(), Core::Stream::nextPutAll(), Core::SequenceableCollection::replace(), Core::SequenceableCollection::size(), and Core::PositionableStream::write_limit. 00048 { 00049 if (size <= 1) { 00050 PositionableStream::nextPutAll(coll, size, startIndex); 00051 return; 00052 } 00053 00054 nextPut(coll->at(startIndex)); 00055 00056 long newPosition = _position + size - 1; 00057 if (newPosition > write_limit) { 00058 collection->growToAtLeast(newPosition); 00059 write_limit = collection->size(); 00060 } 00061 00062 collection->replace(_position, newPosition, coll, startIndex+1); 00063 _position = newPosition; 00064 }
|
|
Reimplemented from Core::Stream. Reimplemented in Core::ReadAppendStream. Definition at line 47 of file InternalStream.h. References Core::Stream::nextPutAll(). 00048 { PositionableStream::nextPutAll(string); }
|
|
Reimplemented from Core::Stream. Reimplemented in Core::ReadAppendStream. Definition at line 45 of file InternalStream.h. References Core::Stream::nextPutAll(). Referenced by Core::ReadAppendStream::nextPutAll(). 00046 { PositionableStream::nextPutAll(coll); }
|
|
Definition at line 76 of file InternalStream.cc. References Core::PositionableStream::_position, Core::PositionableStream::collection, Core::SequenceableCollection::growToAtLeast(), Core::SequenceableCollection::put(), Core::SequenceableCollection::size(), and Core::PositionableStream::write_limit. Referenced by Core::WriteStream::nextPut(). 00077 { 00078 collection->growToAtLeast(collection->size() + 1); 00079 write_limit = collection->size(); 00080 collection->put(_position++, object); 00081 }
|
|
Answer collection of all data on the stream from actual position. In many cases this is just the same thing as contents(). But in cases of EncodedStream or so you'll get decoded data. Reimplemented from Core::Stream. Definition at line 66 of file InternalStream.cc. References Core::PositionableStream::_position, Core::PositionableStream::collection, Core::SequenceableCollection::copy(), and Core::PositionableStream::read_limit. 00067 { 00068 SequenceableCollection *res; 00069 read_limit = (read_limit < _position) ? _position : read_limit; 00070 res = dynamic_cast<SequenceableCollection *>(collection->copy(_position, read_limit)); 00071 _position = read_limit; 00072 return res; 00073 }
|