Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

Core::EncodedStream Class Reference

#include <EncodedStream.h>

Inheritance diagram for Core::EncodedStream:

Inheritance graph
[legend]
Collaboration diagram for Core::EncodedStream:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 EncodedStream (Stream *stream, StreamEncoder *encoder)
virtual StringclassName (void) const
 Answer receiver class name.
virtual void replacementCharacter (Character *ch)
virtual void bigEndian (void)
virtual void littleEndian (void)
virtual Objectnext (void)
virtual SequenceableCollectionnext (long items)
virtual SequenceableCollectionnext (long items, SequenceableCollection *newColl, long index)
virtual void nextPut (Object *object)
virtual void nextPut (const char object)
virtual bool isBinary (void)

Static Public Member Functions

static EncodedStreamon (String *encoding, Stream *stream)

Protected Member Functions

virtual SequenceableCollectioncontentSpeciesFor (long items)

Protected Attributes

StreamEncoderencoder
Character_replacement

Constructor & Destructor Documentation

Core::EncodedStream::EncodedStream Stream stream,
StreamEncoder encoder
 

Definition at line 35 of file EncodedStream.cc.

References _replacement, and nil.

Referenced by on().

00036   : StreamDecorator(stream)
00037 {
00038     this->encoder = encoder;
00039     _replacement = nil;
00040 }


Member Function Documentation

void Core::EncodedStream::bigEndian void   )  [virtual]
 

Definition at line 61 of file EncodedStream.cc.

References Core::StreamEncoder::bigEndian(), and encoder.

00062 {
00063     encoder->bigEndian();
00064 }

String * Core::EncodedStream::className void   )  const [virtual]
 

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::Object.

Definition at line 43 of file EncodedStream.cc.

00044 {
00045     return new String("EncodedStream");
00046 }

SequenceableCollection * Core::EncodedStream::contentSpeciesFor long  items  )  [protected, virtual]
 

Reimplemented from Core::StreamDecorator.

Definition at line 103 of file EncodedStream.cc.

00104 {
00105     return new String(items);
00106 }

bool Core::EncodedStream::isBinary void   )  [virtual]
 

Reimplemented from Core::Stream.

Definition at line 97 of file EncodedStream.cc.

00098 {
00099     return false;
00100 }

void Core::EncodedStream::littleEndian void   )  [virtual]
 

Definition at line 66 of file EncodedStream.cc.

References encoder, and Core::StreamEncoder::littleEndian().

00067 {
00068     encoder->littleEndian();
00069 }

virtual SequenceableCollection* Core::EncodedStream::next long  items,
SequenceableCollection newColl,
long  index
[inline, virtual]
 

Reimplemented from Core::Stream.

Definition at line 60 of file EncodedStream.h.

References Core::Stream::next().

00061       { return Stream::next(items, newColl, index); }

virtual SequenceableCollection* Core::EncodedStream::next long  items  )  [inline, virtual]
 

Reimplemented from Core::Stream.

Definition at line 58 of file EncodedStream.h.

References Core::Stream::next().

00059       { return Stream::next(items); }

Object * Core::EncodedStream::next void   )  [virtual]
 

Reimplemented from Core::Stream.

Definition at line 72 of file EncodedStream.cc.

References _replacement, Core::StreamEncoder::decodeFrom(), encoder, nil, and Core::StreamDecorator::underlying_stream.

00073 {
00074     try {
00075         return encoder->decodeFrom(underlying_stream);
00076     }
00077     catch (Error *ex) {
00078         if (_replacement == nil) ex->pass();
00079         return _replacement;
00080     }
00081 }

virtual void Core::EncodedStream::nextPut const char  object  )  [inline, virtual]
 

Reimplemented from Core::Stream.

Definition at line 63 of file EncodedStream.h.

References Core::Stream::nextPut().

00064       { Stream::nextPut(object); }

void Core::EncodedStream::nextPut Object object  )  [virtual]
 

Reimplemented from Core::Stream.

Definition at line 83 of file EncodedStream.cc.

References _replacement, encoder, Core::StreamEncoder::encodeTo(), nil, and Core::StreamDecorator::underlying_stream.

00084 {
00085     try {
00086         encoder->encodeTo(underlying_stream, dynamic_cast<Character *>(object));
00087     }
00088     catch (Error *ex) {
00089         if (_replacement == nil)
00090             ex->pass();
00091         else
00092             encoder->encodeTo(underlying_stream, _replacement);
00093     }
00094 }

EncodedStream * Core::EncodedStream::on String encoding,
Stream stream
[static]
 

Definition at line 49 of file EncodedStream.cc.

References EncodedStream(), and Core::EncodedStreamFactory::getEncoder().

00050 {
00051     InternalEncodedStreamFactory *factory = new InternalEncodedStreamFactory(new ByteArray, encoding);
00052     return new EncodedStream(stream, factory->getEncoder());
00053 }

void Core::EncodedStream::replacementCharacter Character ch  )  [virtual]
 

Definition at line 56 of file EncodedStream.cc.

References _replacement.

00057 {
00058     _replacement = ch;
00059 }


Member Data Documentation

Character* Core::EncodedStream::_replacement [protected]
 

Definition at line 40 of file EncodedStream.h.

Referenced by EncodedStream(), next(), nextPut(), and replacementCharacter().

StreamEncoder* Core::EncodedStream::encoder [protected]
 

Definition at line 39 of file EncodedStream.h.

Referenced by bigEndian(), littleEndian(), next(), and nextPut().


The documentation for this class was generated from the following files:
Generated on Mon Nov 27 09:51:21 2006 for Smalltalk like C++ Class Library by  doxygen 1.4.2