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

Core::StringImpl Class Reference

StringImpl is base class for concrete string implementors. More...

#include <StringImpl.h>

Inheritance diagram for Core::StringImpl:

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

Collaboration graph
[legend]
List of all members.

Public Member Functions

virtual Characterat (int index) const abstract
virtual void put (int index, Character *object) abstract
virtual int byteSize (void) abstract
virtual long size (void) const
virtual void changeSize (long newSize) abstract
virtual bool isEqual (StringImpl *object) abstract
virtual bool isEqualToBytes (unsigned char *string) abstract
virtual bool isEqualToShorts (unsigned short *object) abstract
virtual ByteStringasByteString (void)
virtual TwoByteStringasTwoByteString (void)
virtual CharacterArrayasCharacterArray (void)
virtual bool isByteString (void) const
virtual bool isTwoByteString (void) const
virtual bool isCharacterArray (void) const

Protected Attributes

long tally

Detailed Description

StringImpl is base class for concrete string implementors.

These are really poor in functionality so use String instead.

Definition at line 39 of file StringImpl.h.


Member Function Documentation

ByteString * StringImpl::asByteString void   )  [virtual]
 

Reimplemented in Core::ByteString.

Definition at line 46 of file StringImpl.cc.

References at(), Core::Character::byteSize(), Core::Object::error(), Core::ByteString::put(), and size().

Referenced by Core::String::changeWideToFit().

00047 {
00048     Character *ch;
00049     ByteString *newString = new ByteString(size());
00050     for (int i = 0; i < size(); i++) {
00051         ch = at(i);
00052         if (ch->byteSize() > 1) {
00053             error(new String("Can't convert String to ByteString. Characters out of range."),
00054                   new String(__PRETTY_FUNCTION__));
00055         }
00056         newString->put(i, at(i));
00057     }
00058     return newString;
00059 }

CharacterArray * StringImpl::asCharacterArray void   )  [virtual]
 

Reimplemented in Core::CharacterArray.

Definition at line 77 of file StringImpl.cc.

References at(), Core::CharacterArray::put(), and size().

Referenced by Core::String::changeWideToFit().

00078 {
00079     CharacterArray *newString = new CharacterArray(size());
00080     for (int i = 0; i < size(); i++) {
00081         newString->put(i, at(i));
00082     }
00083     return newString;
00084 }

TwoByteString * StringImpl::asTwoByteString void   )  [virtual]
 

Reimplemented in Core::ByteString, and Core::TwoByteString.

Definition at line 61 of file StringImpl.cc.

References at(), Core::Character::byteSize(), Core::Object::error(), Core::TwoByteString::put(), and size().

Referenced by Core::String::changeWideToFit().

00062 {
00063     Character *ch;
00064     TwoByteString *newString = new TwoByteString(size());
00065     for (int i = 0; i < size(); i++) {
00066         ch = at(i);
00067         if (ch->byteSize() > 1) {
00068             /* Can't convert to ByteString, keep this implementor */
00069             error(new String("Can't convert String to TwoByteString. Characters out of range."),
00070                   new String(__PRETTY_FUNCTION__));
00071         }
00072         newString->put(i, at(i));
00073     }
00074     return newString;
00075 }

virtual Character* Core::StringImpl::at int  index  )  const [virtual]
 

Reimplemented in Core::ByteString, Core::CharacterArray, and Core::TwoByteString.

Referenced by asByteString(), asCharacterArray(), asTwoByteString(), and Core::String::at().

virtual int Core::StringImpl::byteSize void   )  [virtual]
 

Reimplemented in Core::ByteString, Core::CharacterArray, and Core::TwoByteString.

Referenced by Core::String::put().

virtual void Core::StringImpl::changeSize long  newSize  )  [virtual]
 

Reimplemented in Core::ByteString, Core::CharacterArray, and Core::TwoByteString.

Referenced by Core::String::changeSize().

bool StringImpl::isByteString void   )  const [virtual]
 

Reimplemented in Core::ByteString.

Definition at line 87 of file StringImpl.cc.

Referenced by Core::String::isByteString().

00088 {
00089     return false;
00090 }

bool StringImpl::isCharacterArray void   )  const [virtual]
 

Reimplemented in Core::CharacterArray.

Definition at line 97 of file StringImpl.cc.

Referenced by Core::String::isCharacterArray().

00098 {
00099     return false;
00100 }

virtual bool Core::StringImpl::isEqual StringImpl object  )  [virtual]
 

Reimplemented in Core::ByteString, Core::CharacterArray, and Core::TwoByteString.

Referenced by Core::String::isEqual().

virtual bool Core::StringImpl::isEqualToBytes unsigned char *  string  )  [virtual]
 

Reimplemented in Core::ByteString, Core::CharacterArray, and Core::TwoByteString.

Referenced by Core::ByteString::isEqual().

virtual bool Core::StringImpl::isEqualToShorts unsigned short *  object  )  [virtual]
 

Reimplemented in Core::ByteString, Core::CharacterArray, and Core::TwoByteString.

Referenced by Core::TwoByteString::isEqual().

bool StringImpl::isTwoByteString void   )  const [virtual]
 

Reimplemented in Core::TwoByteString.

Definition at line 92 of file StringImpl.cc.

Referenced by Core::String::isTwoByteString().

00093 {
00094     return false;
00095 }

virtual void Core::StringImpl::put int  index,
Character object
[virtual]
 

Reimplemented in Core::ByteString, Core::CharacterArray, and Core::TwoByteString.

Referenced by Core::String::put(), and Core::String::String().

long StringImpl::size void   )  const [virtual]
 

Reimplemented in Core::CharacterArray.

Definition at line 40 of file StringImpl.cc.

References tally.

Referenced by asByteString(), asCharacterArray(), asTwoByteString(), Core::ByteString::asTwoByteString(), Core::TwoByteString::changeSize(), Core::ByteString::changeSize(), and Core::String::size().

00041 {
00042     return tally;
00043 }


Member Data Documentation

long Core::StringImpl::tally [protected]
 

Definition at line 42 of file StringImpl.h.

Referenced by Core::ByteString::ByteString(), Core::TwoByteString::changeSize(), Core::ByteString::changeSize(), Core::TwoByteString::isEqualToBytes(), Core::ByteString::isEqualToBytes(), Core::TwoByteString::isEqualToShorts(), Core::ByteString::isEqualToShorts(), size(), and Core::TwoByteString::TwoByteString().


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