#include <UCS2StreamEncoder.h>
Inheritance diagram for Core::UCS2StreamEncoder:
Public Member Functions | |
UCS2StreamEncoder (void) | |
virtual String * | className (void) const |
Answer receiver class name. | |
virtual void | bigEndian (void) |
virtual void | littleEndian (void) |
virtual Character * | decodeFrom (Stream *stream) |
virtual void | encodeTo (Stream *stream, Character *character) |
Protected Attributes | |
bool | big_endian |
|
Definition at line 32 of file UCS2StreamEncoder.cc. References big_endian. 00033 { 00034 big_endian = false; 00035 }
|
|
Reimplemented from Core::StreamEncoder. Definition at line 44 of file UCS2StreamEncoder.cc. References big_endian. 00045 { 00046 big_endian = true; 00047 }
|
|
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::StreamEncoder. Definition at line 38 of file UCS2StreamEncoder.cc. 00039 { 00040 return new String("UCS2StreamEncoder"); 00041 }
|
|
Reimplemented from Core::StreamEncoder. Definition at line 55 of file UCS2StreamEncoder.cc. References Core::Number::asLong(), big_endian, Core::Stream::next(), nil, and Core::Character::value(). 00056 { 00057 Integer *firstByte, *secondByte; 00058 unsigned short value; 00059 firstByte = dynamic_cast<Integer *>(stream->next()); 00060 secondByte = dynamic_cast<Integer *>(stream->next()); 00061 00062 if (secondByte == nil) return nil; // stream end reached 00063 00064 if (big_endian) 00065 value = firstByte->asLong() << 8 + secondByte->asLong(); 00066 else 00067 value = secondByte->asLong() << 8 + firstByte->asLong(); 00068 return Character::value(value); 00069 }
|
|
Reimplemented from Core::StreamEncoder. Definition at line 71 of file UCS2StreamEncoder.cc. References Core::Character::asInteger(), big_endian, Core::Character::byteSize(), Core::Object::error(), Core::Stream::nextPut(), and Core::Integer::value(). 00072 { 00073 if (character->byteSize() > 2) 00074 error(new String("No character available"), 00075 new String(__PRETTY_FUNCTION__), character); 00076 00077 long value = character->asInteger(); 00078 unsigned char first, second; 00079 first = (value >> 8) & 0xff; 00080 second = value & 0xff; 00081 if (big_endian) { 00082 stream->nextPut(Integer::value(first)); 00083 stream->nextPut(Integer::value(second)); 00084 } else { 00085 stream->nextPut(Integer::value(second)); 00086 stream->nextPut(Integer::value(first)); 00087 } 00088 }
|
|
Reimplemented from Core::StreamEncoder. Definition at line 49 of file UCS2StreamEncoder.cc. References big_endian. 00050 { 00051 big_endian = false; 00052 }
|
|
Definition at line 38 of file UCS2StreamEncoder.h. Referenced by bigEndian(), decodeFrom(), encodeTo(), littleEndian(), and UCS2StreamEncoder(). |