version 1.104, 2005/05/04 21:14:10
|
version 1.105, 2005/05/06 19:46:45
|
|
|
| |
String::String(const Char16* str) | String::String(const Char16* str) |
{ | { |
|
if ( str == 0 ) |
|
{ |
|
throw NullPointer(); |
|
} |
|
|
_rep = new StringRep(str); | _rep = new StringRep(str); |
} | } |
| |
String::String(const Char16* str, Uint32 n) | String::String(const Char16* str, Uint32 n) |
{ | { |
|
if ( str == 0 ) |
|
{ |
|
throw NullPointer(); |
|
} |
|
|
_rep = new StringRep; | _rep = new StringRep; |
assign(str, n); | assign(str, n); |
} | } |
| |
String::String(const char* str) | String::String(const char* str) |
{ | { |
|
if ( str == 0 ) |
|
{ |
|
throw NullPointer(); |
|
} |
|
|
_rep = new StringRep; | _rep = new StringRep; |
AutoPtr<StringRep> tempRep(_rep); | AutoPtr<StringRep> tempRep(_rep); |
// An exception can be thrown, so use a temp AutoPtr. | // An exception can be thrown, so use a temp AutoPtr. |
|
|
| |
String::String(const char* str, Uint32 n) | String::String(const char* str, Uint32 n) |
{ | { |
|
if ( str == 0 ) |
|
{ |
|
throw NullPointer(); |
|
} |
|
|
_rep = new StringRep; | _rep = new StringRep; |
AutoPtr<StringRep> tempRep(_rep); | AutoPtr<StringRep> tempRep(_rep); |
// An exception can be thrown, so use a temp AutoPtr. | // An exception can be thrown, so use a temp AutoPtr. |
|
|
| |
String& String::assign(const Char16* str) | String& String::assign(const Char16* str) |
{ | { |
|
if ( str == 0 ) |
|
{ |
|
throw NullPointer(); |
|
} |
|
|
_rep->c16a.clear(); | _rep->c16a.clear(); |
_rep->c16a.append(str, _StrLen(str) + 1); | _rep->c16a.append(str, _StrLen(str) + 1); |
return *this; | return *this; |
|
|
| |
String& String::assign(const Char16* str, Uint32 n) | String& String::assign(const Char16* str, Uint32 n) |
{ | { |
|
if ( str == 0 ) |
|
{ |
|
throw NullPointer(); |
|
} |
|
|
_rep->c16a.clear(); | _rep->c16a.clear(); |
_rep->c16a.append(str, n); | _rep->c16a.append(str, n); |
_rep->c16a.append('\0'); | _rep->c16a.append('\0'); |
|
|
| |
String& String::assign(const char* str) | String& String::assign(const char* str) |
{ | { |
|
if ( str == 0 ) |
|
{ |
|
throw NullPointer(); |
|
} |
|
|
_rep->c16a.clear(); | _rep->c16a.clear(); |
_convertAndAppend(str, _rep->c16a, 0, 1); | _convertAndAppend(str, _rep->c16a, 0, 1); |
return *this; | return *this; |
|
|
| |
String& String::assign(const char* str, Uint32 n) | String& String::assign(const char* str, Uint32 n) |
{ | { |
|
if ( str == 0 ) |
|
{ |
|
throw NullPointer(); |
|
} |
|
|
_rep->c16a.clear(); | _rep->c16a.clear(); |
_convertAndAppend(str, _rep->c16a, n, 0); | _convertAndAppend(str, _rep->c16a, n, 0); |
return *this; | return *this; |
|
|
| |
String& String::append(const Char16* str, Uint32 n) | String& String::append(const Char16* str, Uint32 n) |
{ | { |
if (!str) |
if (str == 0) |
{ | { |
throw NullPointer(); | throw NullPointer(); |
} | } |
|
|
_rep->c16a.reserveCapacity(_rep->c16a.size() + n); | _rep->c16a.reserveCapacity(_rep->c16a.size() + n); |
_rep->c16a.remove(_rep->c16a.size() - 1); | _rep->c16a.remove(_rep->c16a.size() - 1); |
_rep->c16a.append(str, n); | _rep->c16a.append(str, n); |
|
|
| |
return String(getChar16Data() + index, length); | return String(getChar16Data() + index, length); |
} | } |
else |
|
return String(); | return String(); |
} | } |
| |
|
|
// ICU_TODO: If ICU is available we should do this the correct way. | // ICU_TODO: If ICU is available we should do this the correct way. |
if (nocase) | if (nocase) |
return _ToLower(ch1) == _ToLower(ch2); | return _ToLower(ch1) == _ToLower(ch2); |
else |
|
return ch1 == ch2; | return ch1 == ch2; |
} | } |
| |