Don't return the string when modifying its value.

Changing toLowerCase(), toUpperCase(), trim() and replace() to return void instead of a reference to the string that's just been changed.  That way, it's clear that the functions modify the string they've been called on.
This commit is contained in:
David A. Mellis 2011-03-11 18:54:58 -05:00
parent 7fa866ffea
commit 6727c8a831
2 changed files with 17 additions and 22 deletions

View File

@ -550,18 +550,17 @@ String String::substring(unsigned int left, unsigned int right) const
/* Modification */
/*********************************************/
String & String::replace(char find, char replace)
void String::replace(char find, char replace)
{
if (!buffer) return *this;
if (!buffer) return;
for (char *p = buffer; *p; p++) {
if (*p == find) *p = replace;
}
return *this;
}
String & String::replace(const String& find, const String& replace)
void String::replace(const String& find, const String& replace)
{
if (len == 0 || find.len == 0) return *this;
if (len == 0 || find.len == 0) return;
int diff = replace.len - find.len;
char *readFrom = buffer;
char *foundAt;
@ -588,8 +587,8 @@ String & String::replace(const String& find, const String& replace)
readFrom = foundAt + find.len;
size += diff;
}
if (size == len) return *this;
if (size > capacity && !changeBuffer(size)) return *this;
if (size == len) return;
if (size > capacity && !changeBuffer(size)) return; // XXX: tell user!
int index = len - 1;
while ((index = lastIndexOf(find, index)) >= 0) {
readFrom = buffer + index + find.len;
@ -600,30 +599,27 @@ String & String::replace(const String& find, const String& replace)
index--;
}
}
return *this;
}
String & String::toLowerCase(void)
void String::toLowerCase(void)
{
if (!buffer) return *this;
if (!buffer) return;
for (char *p = buffer; *p; p++) {
*p = tolower(*p);
}
return *this;
}
String & String::toUpperCase(void)
void String::toUpperCase(void)
{
if (!buffer) return *this;
if (!buffer) return;
for (char *p = buffer; *p; p++) {
*p = toupper(*p);
}
return *this;
}
String & String::trim(void)
void String::trim(void)
{
if (!buffer || len == 0) return *this;
if (!buffer || len == 0) return;
char *begin = buffer;
while (isspace(*begin)) begin++;
char *end = buffer + len - 1;
@ -631,7 +627,6 @@ String & String::trim(void)
len = end + 1 - begin;
if (begin > buffer) memcpy(buffer, begin, len);
buffer[len] = 0;
return *this;
}
/*********************************************/

View File

@ -139,11 +139,11 @@ public:
String substring( unsigned int beginIndex, unsigned int endIndex ) const;
// modification
String & replace(char find, char replace);
String & replace(const String& find, const String& replace);
String & toLowerCase(void);
String & toUpperCase(void);
String & trim(void);
void replace(char find, char replace);
void replace(const String& find, const String& replace);
void toLowerCase(void);
void toUpperCase(void);
void trim(void);
// parsing/conversion
long toInt(void) const;