(file) Return to String.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Common

Diff for /pegasus/src/Pegasus/Common/String.cpp between version 1.44 and 1.49

version 1.44, 2002/07/18 17:06:28 version 1.49, 2002/08/20 17:39:37
Line 31 
Line 31 
 #include <cctype> #include <cctype>
 #include "String.h" #include "String.h"
 #include "Array.h" #include "Array.h"
 #include "Exception.h"  #include "InternalException.h"
 #include <iostream> #include <iostream>
  
 PEGASUS_USING_STD; PEGASUS_USING_STD;
Line 191 
Line 191 
     _rep->c16a.clear();     _rep->c16a.clear();
  
     Uint32 n = strlen(str) + 1;     Uint32 n = strlen(str) + 1;
     _rep->c16a.reserve(n);      _rep->c16a.reserveCapacity(n);
  
     while (n--)     while (n--)
         _rep->c16a.append(*str++);         _rep->c16a.append(*str++);
Line 204 
Line 204 
     _rep->c16a.clear();     _rep->c16a.clear();
  
     Uint32 _n = _strnlen(str, n);     Uint32 _n = _strnlen(str, n);
     _rep->c16a.reserve(_n + 1);      _rep->c16a.reserveCapacity(_n + 1);
  
     while (_n--)     while (_n--)
         _rep->c16a.append(*str++);         _rep->c16a.append(*str++);
Line 222 
Line 222 
  
 void String::reserveCapacity(Uint32 capacity) void String::reserveCapacity(Uint32 capacity)
 { {
     _rep->c16a.reserve(capacity + 1);      _rep->c16a.reserveCapacity(capacity + 1);
 } }
  
 Uint32 String::size() const Uint32 String::size() const
Line 235 
Line 235 
     return _rep->c16a.getData();     return _rep->c16a.getData();
 } }
  
 char* String::allocateCString(Uint32 extraBytes, Boolean noThrow) const  char* String::allocateCString(Uint32 extraBytes, Boolean& truncatedCharacters) const
 { {
       truncatedCharacters = false;
     Uint32 n = size() + 1;     Uint32 n = size() + 1;
     char* str = new char[n + extraBytes];     char* str = new char[n + extraBytes];
     char* p = str;     char* p = str;
Line 247 
Line 248 
         Uint16 c = *q++;         Uint16 c = *q++;
         *p++ = char(c);         *p++ = char(c);
  
         if ((c & 0xff00) && !noThrow)          if (c & 0xff00)
             throw TruncatedCharacter();              truncatedCharacters = true;
     }     }
  
     return str;     return str;
 } }
  
   char* String::allocateCString(Uint32 extraBytes) const
   {
       Boolean truncatedCharacters = false;
       return allocateCString(extraBytes, truncatedCharacters);
   }
   
 Char16& String::operator[](Uint32 i) Char16& String::operator[](Uint32 i)
 { {
     if (i > size())     if (i > size())
         throw OutOfBounds();          throw IndexOutOfBoundsException();
  
     return _rep->c16a[i];     return _rep->c16a[i];
 } }
Line 265 
Line 272 
 const Char16 String::operator[](Uint32 i) const const Char16 String::operator[](Uint32 i) const
 { {
     if (i > size())     if (i > size())
         throw OutOfBounds();          throw IndexOutOfBoundsException();
  
     return _rep->c16a[i];     return _rep->c16a[i];
 } }
Line 279 
Line 286 
 String& String::append(const Char16* str, Uint32 n) String& String::append(const Char16* str, Uint32 n)
 { {
     Uint32 m = _strnlen(str, n);     Uint32 m = _strnlen(str, n);
     _rep->c16a.reserve(_rep->c16a.size() + m);      _rep->c16a.reserveCapacity(_rep->c16a.size() + m);
     _rep->c16a.remove(_rep->c16a.size() - 1);     _rep->c16a.remove(_rep->c16a.size() - 1);
     _rep->c16a.append(str, m);     _rep->c16a.append(str, m);
     _rep->c16a.append('\0');     _rep->c16a.append('\0');
Line 312 
Line 319 
         size = this->size() - pos;         size = this->size() - pos;
  
     if (pos + size > this->size())     if (pos + size > this->size())
         throw OutOfBounds();          throw IndexOutOfBoundsException();
  
     if (size)     if (size)
         _rep->c16a.remove(pos, size);         _rep->c16a.remove(pos, size);
Line 408 
Line 415 
 { {
     for (Char16* p = &_rep->c16a[0]; *p; p++)     for (Char16* p = &_rep->c16a[0]; *p; p++)
     {     {
 #ifdef PEGASUS_HAS_EBCDIC          if (*p <= PEGASUS_MAX_PRINTABLE_CHAR)
         if (*p <= 255)  
 #else  
         if (*p <= 127)  
 #endif  
             *p = tolower(*p);             *p = tolower(*p);
     }     }
 } }
Line 494 
Line 497 
     {     {
         int r;         int r;
  
 #ifdef PEGASUS_HAS_EBCDIC          if (*_s1 <= PEGASUS_MAX_PRINTABLE_CHAR &&
         if (*_s1 <= 255 && *_s2 <= 255)              *_s2 <= PEGASUS_MAX_PRINTABLE_CHAR)
 #else  
         if (*_s1 <= 127 && *_s2 <= 127)  
 #endif  
         {         {
             r = tolower(*_s1++) - tolower(*_s2++);             r = tolower(*_s1++) - tolower(*_s2++);
         }         }
Line 536 
Line 536 
  
     while (n--)     while (n--)
     {     {
 #ifdef PEGASUS_HAS_EBCDIC          if (*p <= PEGASUS_MAX_PRINTABLE_CHAR &&
         if (*p <= 255 && *q <= 255)              *q <= PEGASUS_MAX_PRINTABLE_CHAR)
 #else  
         if (*p <= 127 && *q <= 127)  
 #endif  
         {         {
             if (tolower(*p++) != tolower(*q++))             if (tolower(*p++) != tolower(*q++))
                 return false;                 return false;
Line 577 
Line 574 
  
 inline Uint16 _ToLower(Uint16 ch) inline Uint16 _ToLower(Uint16 ch)
 { {
 #ifdef PEGASUS_HAS_EBCDIC      return ch <= PEGASUS_MAX_PRINTABLE_CHAR ? tolower(char(ch)) : ch;
     return ch <= 255 ? tolower(char(ch)) : ch;  
 #else  
     return ch <= 127 ? tolower(char(ch)) : ch;  
 #endif  
 } }
  
 inline Boolean _Equal(MatchChar ch1, MatchChar ch2, int nocase) inline Boolean _Equal(MatchChar ch1, MatchChar ch2, int nocase)
Line 718 
Line 711 
     return !String::equal(str1, str2);     return !String::equal(str1, str2);
 } }
  
 PEGASUS_STD(ostream)& operator<<(PEGASUS_STD(ostream)& os, const String& str1)  PEGASUS_STD(ostream)& operator<<(PEGASUS_STD(ostream)& os, const String& str)
 { {
     for (Uint32 i = 0, n = str1.size(); i < n; i++)      for (Uint32 i = 0, n = str.size(); i < n; i++)
         os << str1[i];          os << str[i];
  
     return os;     return os;
 } }


Legend:
Removed from v.1.44  
changed lines
  Added in v.1.49

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2