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

Diff for /pegasus/src/Pegasus/Common/String.h between version 1.16 and 1.26

version 1.16, 2001/04/14 07:35:05 version 1.26, 2001/05/07 13:51:05
Line 1 
Line 1 
 //BEGIN_LICENSE  //%/////////////////////////////////////////////////////////////////////////////
 // //
 // Copyright (c) 2000 The Open Group, BMC Software, Tivoli Systems, IBM // Copyright (c) 2000 The Open Group, BMC Software, Tivoli Systems, IBM
 // //
Line 17 
Line 17 
 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 // DEALINGS IN THE SOFTWARE. // DEALINGS IN THE SOFTWARE.
 // //
 //END_LICENSE  //==============================================================================
 //BEGIN_HISTORY  
 // //
 // Author:  // Author: Mike Brasher (mbrasher@bmc.com)
 // //
 // $Log$  // Modified By:
 // Revision 1.16  2001/04/14 07:35:05  mike  
 // Added config file loading to OptionManager  
 // //
 // Revision 1.15  2001/04/11 19:53:22  mike  //%/////////////////////////////////////////////////////////////////////////////
 // More porting  
 //  
 // Revision 1.14  2001/04/10 23:01:52  mike  
 // Added new TimeValue class and regression tests for it.  
 // Modified Stopwatch class to use TimeValue class.  
 //  
 // Revision 1.13  2001/04/10 22:42:55  karl  
 // Correct error in String find  
 //  
 // Revision 1.12  2001/04/09 20:18:47  karl  
 // add find substring function  
 //  
 // Revision 1.11  2001/04/04 20:02:27  karl  
 // documentation update  
 //  
 // Revision 1.10  2001/03/29 16:40:31  karl  
 // add doc  
 //  
 // Revision 1.9  2001/02/26 04:33:28  mike  
 // Fixed many places where cim names were be compared with operator==(String,String).  
 // Changed all of these to use CIMName::equal()  
 //  
 // Revision 1.8  2001/02/20 14:05:24  karl  
 // Comments for Document  
 //  
 // Revision 1.7  2001/02/11 17:19:30  mike  
 // added reverseFind() method  
 //  
 // Revision 1.6  2001/02/11 05:42:33  mike  
 // new  
 //  
 // Revision 1.5  2001/01/30 08:00:43  karl  
 // DOC++ Documentation update for header files  
 //  
 // Revision 1.4  2001/01/28 07:05:18  mike  
 // added instance name/reference converters  
 //  
 // Revision 1.3  2001/01/28 04:11:03  mike  
 // fixed qualifier resolution  
 //  
 // Revision 1.2  2001/01/24 16:16:38  karl  
 // Incorporate Doc++ Comments as documentation into .h files  
 //  
 // Revision 1.1.1.1  2001/01/14 19:53:15  mike  
 // Pegasus import  
 //  
 //  
 //END_HISTORY  
  
 #ifndef Pegasus_String_h #ifndef Pegasus_String_h
 #define Pegasus_String_h #define Pegasus_String_h
Line 138 
Line 87 
     */     */
     String& operator=(const String& x) { _rep = x._rep; return *this; }     String& operator=(const String& x) { _rep = x._rep; return *this; }
  
     /// Assign this string with x.      /// Assign this string with Char16 x.
     String& operator=(const Char16* x) { assign(x); return *this; }     String& operator=(const Char16* x) { assign(x); return *this; }
  
     /// Assign this string with x.      /** Assign this string with String x
       @param x String to assign
       @return Returns the String
       */
     String& assign(const String& x) { _rep = x._rep; return *this; }     String& assign(const String& x) { _rep = x._rep; return *this; }
  
     /// Assign this string with x.     /// Assign this string with x.
Line 156 
Line 108 
     /// Assign this string with first n characters of the plain old C-String x.     /// Assign this string with first n characters of the plain old C-String x.
     String& assign(const char* x, Uint32 n);     String& assign(const char* x, Uint32 n);
  
     /** Clear this string. After calling clear(), getLength() will return 0.      /** clear - Clear this string. After calling clear(), size() will return 0.
         <pre>         <pre>
             String test = "abc";             String test = "abc";
             test.clear();       // String test is now NULL (length == 0)             test.clear();       // String test is now NULL (length == 0)
Line 164 
Line 116 
     */     */
     void clear() { _rep.clear(); _rep.append('\0'); }     void clear() { _rep.clear(); _rep.append('\0'); }
  
     /** Reserves memory for capacity characters. Notice that this does not      /** reserve - Reserves memory for capacity characters. Notice that this does
         change the size of the string (getSize() returns what it did before).      not
           change the size of the string (size() returns what it did before).
         If the capacity of the string is already greater or equal to the         If the capacity of the string is already greater or equal to the
         capacity argument, this method has no effect. After calling reserve(),         capacity argument, this method has no effect. After calling reserve(),
         getCapicty() returns a value which is greater or equal to the         getCapicty() returns a value which is greater or equal to the
Line 178 
Line 131 
         @return Length of the string in characters.         @return Length of the string in characters.
         <pre>         <pre>
             String s = "abcd";             String s = "abcd";
             assert(s.getLength() == 4);              assert(s.size() == 4);
         </pre>         </pre>
     */     */
     Uint32 getLength() const { return _rep.getSize() - 1; }      Uint32 size() const { return _rep.size() - 1; }
  
     /** Returns a pointer to the first character in the null-terminated string     /** Returns a pointer to the first character in the null-terminated string
         string.         string.
         @param  
         @return Pointer to the first character of the String object         @return Pointer to the first character of the String object
         <pre>         <pre>
             String t1 = "abc";             String t1 = "abc";
Line 194 
Line 146 
     */     */
     const Char16* getData() const { return _rep.getData(); }     const Char16* getData() const { return _rep.getData(); }
  
     /** Allocates an 8 bit representation of this string. The user is      /** AallocateCString - llocates an 8 bit representation of this string. The
       user is
         responsible for freeing the result. If any characters are truncated,         responsible for freeing the result. If any characters are truncated,
         a TruncatedCharacter exception is thrown. This exception may         a TruncatedCharacter exception is thrown. This exception may
         be suppressed by passing true as the noThrow argument. Extra         be suppressed by passing true as the noThrow argument. Extra
         characters may be allocated at the end of the new string by         characters may be allocated at the end of the new string by
         passing a non-zero value to the extraBytes argument.         passing a non-zero value to the extraBytes argument.
         @param extraBytes -  Defines the number of extra characters to be          @param extraBytes Defines the number of extra characters to be
         allocated at the end of the new string. Default is zero.         allocated at the end of the new string. Default is zero.
         @param  noThrow - If true, no exception will be thrown if characters          @param  noThrow If true, no exception will be thrown if characters
         are truncated         are truncated
         @return pointer to the new representation of the string         @return pointer to the new representation of the string
         @exception Throws TruncatedCharacter exception if any characters are         @exception Throws TruncatedCharacter exception if any characters are
Line 214 
Line 167 
     */     */
     char* allocateCString(Uint32 extraBytes = 0, Boolean noThrow = false) const;     char* allocateCString(Uint32 extraBytes = 0, Boolean noThrow = false) const;
  
     /** Append the given string to a C-string. If the length is not Uint32(-1),      /** appendToCString - Append the given string to a C-string. If the length
       is not Uint32(-1),
         then the lesser of the the length argument and the length of this         then the lesser of the the length argument and the length of this
         string is truncated. Otherwise, the entire string is trunctated. The         string is truncated. Otherwise, the entire string is trunctated. The
         TruncatedCharacter exception is thrown if any characters are truncated.         TruncatedCharacter exception is thrown if any characters are truncated.
Line 222 
Line 176 
             const char STR0[] = "one two three four";             const char STR0[] = "one two three four";
             String s = STR0;             String s = STR0;
             const char STR1[] = "zero ";             const char STR1[] = "zero ";
             char* tmp = new char[strlen(STR1) + s.getLength() + 1];              char* tmp = new char[strlen(STR1) + s.size() + 1];
             strcpy(tmp, STR1);             strcpy(tmp, STR1);
             s.appendToCString(tmp, 7);             s.appendToCString(tmp, 7);
             assert(strcmp(tmp, "zero one two") == 0);             assert(strcmp(tmp, "zero one two") == 0);
Line 258 
Line 212 
     */     */
     String& append(const Char16& c)     String& append(const Char16& c)
     {     {
         _rep.insert(_rep.getSize() - 1, c);          _rep.insert(_rep.size() - 1, c);
         return *this;         return *this;
     }     }
  
Line 268 
Line 222 
     /// Append the characters of str to this String object.     /// Append the characters of str to this String object.
     String& append(const String& str)     String& append(const String& str)
     {     {
         return append(str.getData(), str.getLength());          return append(str.getData(), str.size());
     }     }
  
     /** Overload operator += appends the parameter String to this String.     /** Overload operator += appends the parameter String to this String.
         @parm String to append.          @param String to append.
         @return This String         @return This String
         <pre>         <pre>
         String test = "abc";         String test = "abc";
Line 286 
Line 240 
     }     }
  
     /** Append the character given by c to this String object.     /** Append the character given by c to this String object.
         @param c - Single character          @param c Single character to be appended
           @return String with appended character
     */     */
     String& operator+=(Char16 c)     String& operator+=(Char16 c)
     {     {
Line 307 
Line 262 
  
     /** Remove size characters from the string starting at the given     /** Remove size characters from the string starting at the given
         position. If size is -1, then all characters after pos are removed.         position. If size is -1, then all characters after pos are removed.
         @param pos - Position in string to start remove          @param pos Position in string to start remove
         @param size - Number of characters to remove. Default is -1 which          @param size Number of characters to remove. Default is -1 which
         causes all characters after pos to be removed         causes all characters after pos to be removed
         <pre>         <pre>
             String s;             String s;
             s = "abc";             s = "abc";
             s.remove(0, 1);             s.remove(0, 1);
             assert(String::equal(s, "bc"));             assert(String::equal(s, "bc"));
             assert(s.getLength() == 2);              assert(s.size() == 2);
             s.remove(0);             s.remove(0);
             assert(String::equal(s, ""));             assert(String::equal(s, ""));
             assert(s.getLength() == 0);              assert(s.size() == 0);
         </pre>         </pre>
         @exception throws "OutOfBounds" exception if size is greater than         @exception throws "OutOfBounds" exception if size is greater than
         length of String plus starting position for remove.         length of String plus starting position for remove.
Line 342 
Line 297 
  
     /** Find the position of the first occurence of the character c.     /** Find the position of the first occurence of the character c.
         If the character is not found, -1 is returned.         If the character is not found, -1 is returned.
         @param c -  Char to be found in the String          @param c Char to be found in the String
         @return Position of the character in the string or -1 if not found.         @return Position of the character in the string or -1 if not found.
     */     */
     Uint32 find(Char16 c) const;     Uint32 find(Char16 c) const;
Line 350 
Line 305 
     /** Find the position of the first occurence of the string object.     /** Find the position of the first occurence of the string object.
         This function finds one string inside another         This function finds one string inside another
         If the matching substring is not found, -1 is returned.         If the matching substring is not found, -1 is returned.
         @param s -  String object to be found in the String          @param s String object to be found in the String
         @return Position of the substring in the String or -1 if not         @return Position of the substring in the String or -1 if not
         found.         found.
     */     */
     Uint32 find(const String& s) const;     Uint32 find(const String& s) const;
  
     /** Find substring     /** Find substring
         @ param - 16 bit character pointer          @ param 16 bit character pointer
         @seealso find         @seealso find
           @return Position of the substring in the String or -1 if not
           found.
     */     */
     Uint32 find(const Char16* s) const;     Uint32 find(const Char16* s) const;
  
     /** find substring     /** find substring
         @param char* to substring          @param s char* to substring
           @return Position of the substring in the String or -1 if not
           found.
     */     */
     Uint32 find(const char* s) const;     Uint32 find(const char* s) const;
  
     /** Same as find() but start looking in reverse (last character first).      /** reverseFind - Same as find() but start looking in reverse (last
       character first).
           @param c Char16 character to find in String.
         @Seealso find         @Seealso find
         @return Position of the character in the string or -1 if not found.         @return Position of the character in the string or -1 if not found.
  
Line 376 
Line 337 
     */     */
     Uint32 reverseFind(Char16 c) const;     Uint32 reverseFind(Char16 c) const;
  
       /** Converts all characters in this string to lower case.
       */
       void toLower();
   
       /** Translate any occurences of fromChar to toChar.
       */
       void translate(Char16 fromChar, Char16 toChar);
   
     /** Compare the first n characters of the two strings.     /** Compare the first n characters of the two strings.
         @param s1 - First null-terminated string for the comparison          @param s1 First null-terminated string for the comparison
         @param s2 - Second null-terminated string for the comparison          @param s2 Second null-terminated string for the comparison
         @param n - Number of characters to compare          @param n Number of characters to compare
         @return Return -1 if s1 is lexographically less than s2. If they         @return Return -1 if s1 is lexographically less than s2. If they
         are equavalent return 0. Otherwise return 1.         are equavalent return 0. Otherwise return 1.
     */     */
     static int compare(const Char16* s1, const Char16* s2, Uint32 n);     static int compare(const Char16* s1, const Char16* s2, Uint32 n);
  
     /** Compare two null-terminated strings.     /** Compare two null-terminated strings.
         @param s1 - First null-terminated string for the comparison          @param s1 First null-terminated string for the comparison
         @param s2 - Second null-terminated string for the comparison          @param s2 Second null-terminated string for the comparison
         @return If s1 is less than s2, return -1; if equal return 0;         @return If s1 is less than s2, return -1; if equal return 0;
         otherwise, return 1.         otherwise, return 1.
  
Line 397 
Line 366 
     static int compare(const Char16* s1, const Char16* s2);     static int compare(const Char16* s1, const Char16* s2);
  
     /** Compare two String objects for equality.     /** Compare two String objects for equality.
         @param s1 - First <TT>String</TT> for comparison.          @param s1 First <TT>String</TT> for comparison.
         @param s2 - Second <TT>String</TT> for comparison.          @param s2 Second <TT>String</TT> for comparison.
  
         @return Boolean true if the two strings are equal.         @return Boolean true if the two strings are equal.
         <pre>         <pre>
Line 422 
Line 391 
     /// Return true if the two strings are equal.     /// Return true if the two strings are equal.
     static Boolean equal(const char* x, const String& y);     static Boolean equal(const char* x, const String& y);
  
       static Boolean equalIgnoreCase(const String& x, const String& y);
   
     /// Convert the plain old C-string to lower case:     /// Convert the plain old C-string to lower case:
     static void toLower(char* str);     static void toLower(char* str);
  
Line 537 
Line 508 
 */ */
 PEGASUS_COMMON_LINKAGE Boolean GetLine(std::istream& is, String& line); PEGASUS_COMMON_LINKAGE Boolean GetLine(std::istream& is, String& line);
  
   /*  This is an internal class not to be used by the internal Pegasus
       components only. It provides an easy way to create an 8-bit string
       representation on the fly without calling allocateCString() and
       then worrying about deleting the string. The underscore before the
       class name denotes that this class is internal, unsupported, undocumented,
       and may be removed in future releases.
   */
   class _CString
   {
   public:
   
       _CString(const String& x)
       {
           _rep = x.allocateCString();
       }
   
       _CString(const _CString& x)
       {
           _rep = strcpy(new char[strlen(x._rep) + 1], x._rep);
       }
   
       ~_CString()
       {
           delete [] _rep;
       }
   
       _CString& operator=(const _CString& x)
       {
           if (this != &x)
               _rep = strcpy(new char[strlen(x._rep) + 1], x._rep);
   
           return *this;
       }
   
       operator const char*() const
       {
           return _rep;
       }
   
       const char* data() const
       {
           return _rep;
       }
   
   private:
   
       char* _rep;
   };
   
   inline Uint32 _Length(const String& s1) { return s1.size(); }
   
   inline Uint32 _Length(const char* s1) { return strlen(s1); }
   
   inline Uint32 _Length(const char) { return 1; }
   
   template<class S1, class S2>
   inline String Cat(const S1& s1, const S2& s2)
   {
       String tmp;
       tmp.reserve(_Length(s1) + _Length(s2));
       tmp.append(s1);
       tmp.append(s2);
       return tmp;
   }
   
   template<class S1, class S2, class S3>
   inline String Cat(const S1& s1, const S2& s2, const S3& s3)
   {
       String tmp;
       tmp.reserve(_Length(s1) + _Length(s2) + _Length(s3));
       tmp.append(s1);
       tmp.append(s2);
       tmp.append(s3);
       return tmp;
   }
   
   template<class S1, class S2, class S3, class S4>
   inline String Cat(const S1& s1, const S2& s2, const S3& s3, const S4& s4)
   {
       String tmp;
       tmp.reserve(_Length(s1) + _Length(s2) + _Length(s3) + _Length(s4));
       tmp.append(s1);
       tmp.append(s2);
       tmp.append(s3);
       tmp.append(s4);
       return tmp;
   }
   
   template<class S1, class S2, class S3, class S4, class S5>
   inline String Cat(
       const S1& s1,
       const S2& s2,
       const S3& s3,
       const S4& s4,
       const S5& s5)
   {
       String tmp;
   
       tmp.reserve(_Length(s1) + _Length(s2) + _Length(s3) + _Length(s4) +
           _Length(s5));
   
       tmp.append(s1);
       tmp.append(s2);
       tmp.append(s3);
       tmp.append(s4);
       tmp.append(s5);
   
       return tmp;
   }
   
   template<class S1, class S2, class S3, class S4, class S5, class S6>
   inline String Cat(
       const S1& s1,
       const S2& s2,
       const S3& s3,
       const S4& s4,
       const S5& s5,
       const S6& s6)
   {
       String tmp;
   
       tmp.reserve(_Length(s1) + _Length(s2) + _Length(s3) + _Length(s4) +
           _Length(s5) + _Length(s6));
   
       tmp.append(s1);
       tmp.append(s2);
       tmp.append(s3);
       tmp.append(s4);
       tmp.append(s5);
       tmp.append(s6);
   
       return tmp;
   }
  
 PEGASUS_NAMESPACE_END PEGASUS_NAMESPACE_END
  


Legend:
Removed from v.1.16  
changed lines
  Added in v.1.26

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2