mirror of
https://github.com/esp8266/Arduino.git
synced 2025-06-17 22:23:10 +03:00
String class: removed deep copy on substring method.
Small code cleanup.
This commit is contained in:
@ -527,11 +527,6 @@ int String::lastIndexOf(const String &s2, unsigned int fromIndex) const
|
|||||||
return found;
|
return found;
|
||||||
}
|
}
|
||||||
|
|
||||||
String String::substring( unsigned int left ) const
|
|
||||||
{
|
|
||||||
return substring(left, len);
|
|
||||||
}
|
|
||||||
|
|
||||||
String String::substring(unsigned int left, unsigned int right) const
|
String String::substring(unsigned int left, unsigned int right) const
|
||||||
{
|
{
|
||||||
if (left > right) {
|
if (left > right) {
|
||||||
|
@ -158,7 +158,7 @@ public:
|
|||||||
int lastIndexOf( char ch, unsigned int fromIndex ) const;
|
int lastIndexOf( char ch, unsigned int fromIndex ) const;
|
||||||
int lastIndexOf( const String &str ) const;
|
int lastIndexOf( const String &str ) const;
|
||||||
int lastIndexOf( const String &str, unsigned int fromIndex ) const;
|
int lastIndexOf( const String &str, unsigned int fromIndex ) const;
|
||||||
String substring( unsigned int beginIndex ) const;
|
String substring( unsigned int beginIndex ) const { return substring(beginIndex, len); };
|
||||||
String substring( unsigned int beginIndex, unsigned int endIndex ) const;
|
String substring( unsigned int beginIndex, unsigned int endIndex ) const;
|
||||||
|
|
||||||
// modification
|
// modification
|
||||||
|
@ -150,13 +150,13 @@ unsigned char String::changeBuffer(unsigned int maxStrLen)
|
|||||||
/* Copy and Move */
|
/* Copy and Move */
|
||||||
/*********************************************/
|
/*********************************************/
|
||||||
|
|
||||||
String & String::copy(const char *cstr, unsigned int _length)
|
String & String::copy(const char *cstr, unsigned int length)
|
||||||
{
|
{
|
||||||
if (!reserve(_length)) {
|
if (!reserve(length)) {
|
||||||
invalidate();
|
invalidate();
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
len = _length;
|
len = length;
|
||||||
strcpy(buffer, cstr);
|
strcpy(buffer, cstr);
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
@ -224,11 +224,11 @@ unsigned char String::concat(const String &s)
|
|||||||
return concat(s.buffer, s.len);
|
return concat(s.buffer, s.len);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned char String::concat(const char *cstr, unsigned int _length)
|
unsigned char String::concat(const char *cstr, unsigned int length)
|
||||||
{
|
{
|
||||||
unsigned int newlen = len + _length;
|
unsigned int newlen = len + length;
|
||||||
if (!cstr) return 0;
|
if (!cstr) return 0;
|
||||||
if (_length == 0) return 1;
|
if (length == 0) return 1;
|
||||||
if (!reserve(newlen)) return 0;
|
if (!reserve(newlen)) return 0;
|
||||||
strcpy(buffer + len, cstr);
|
strcpy(buffer + len, cstr);
|
||||||
len = newlen;
|
len = newlen;
|
||||||
@ -549,24 +549,24 @@ String String::substring(unsigned int left, unsigned int right) const
|
|||||||
/* Modification */
|
/* Modification */
|
||||||
/*********************************************/
|
/*********************************************/
|
||||||
|
|
||||||
void String::replace(char find, char _replace)
|
void String::replace(char find, char replace)
|
||||||
{
|
{
|
||||||
if (!buffer) return;
|
if (!buffer) return;
|
||||||
for (char *p = buffer; *p; p++) {
|
for (char *p = buffer; *p; p++) {
|
||||||
if (*p == find) *p = _replace;
|
if (*p == find) *p = replace;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void String::replace(const String& find, const String& _replace)
|
void String::replace(const String& find, const String& replace)
|
||||||
{
|
{
|
||||||
if (len == 0 || find.len == 0) return;
|
if (len == 0 || find.len == 0) return;
|
||||||
int diff = _replace.len - find.len;
|
int diff = replace.len - find.len;
|
||||||
char *readFrom = buffer;
|
char *readFrom = buffer;
|
||||||
char *foundAt;
|
char *foundAt;
|
||||||
if (diff == 0) {
|
if (diff == 0) {
|
||||||
while ((foundAt = strstr(readFrom, find.buffer)) != NULL) {
|
while ((foundAt = strstr(readFrom, find.buffer)) != NULL) {
|
||||||
memcpy(foundAt, _replace.buffer, _replace.len);
|
memcpy(foundAt, replace.buffer, replace.len);
|
||||||
readFrom = foundAt + _replace.len;
|
readFrom = foundAt + replace.len;
|
||||||
}
|
}
|
||||||
} else if (diff < 0) {
|
} else if (diff < 0) {
|
||||||
char *writeTo = buffer;
|
char *writeTo = buffer;
|
||||||
@ -574,8 +574,8 @@ void String::replace(const String& find, const String& _replace)
|
|||||||
unsigned int n = foundAt - readFrom;
|
unsigned int n = foundAt - readFrom;
|
||||||
memcpy(writeTo, readFrom, n);
|
memcpy(writeTo, readFrom, n);
|
||||||
writeTo += n;
|
writeTo += n;
|
||||||
memcpy(writeTo, _replace.buffer, _replace.len);
|
memcpy(writeTo, replace.buffer, replace.len);
|
||||||
writeTo += _replace.len;
|
writeTo += replace.len;
|
||||||
readFrom = foundAt + find.len;
|
readFrom = foundAt + find.len;
|
||||||
len += diff;
|
len += diff;
|
||||||
}
|
}
|
||||||
@ -594,7 +594,7 @@ void String::replace(const String& find, const String& _replace)
|
|||||||
memmove(readFrom + diff, readFrom, len - (readFrom - buffer));
|
memmove(readFrom + diff, readFrom, len - (readFrom - buffer));
|
||||||
len += diff;
|
len += diff;
|
||||||
buffer[len] = 0;
|
buffer[len] = 0;
|
||||||
memcpy(buffer + index, _replace.buffer, _replace.len);
|
memcpy(buffer + index, replace.buffer, replace.len);
|
||||||
index--;
|
index--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user