[gnoduino: 24/237] Modifying String.concat() to return success or failure, not this.
- From: Lucian Langa <lucilanga src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnoduino: 24/237] Modifying String.concat() to return success or failure, not this.
- Date: Sat, 31 Mar 2012 20:16:50 +0000 (UTC)
commit e9bca6d16f38a3c622b185fe8c37da9195d830b4
Author: David A. Mellis <d mellis arduino cc>
Date: Sat Mar 12 14:03:34 2011 -0500
Modifying String.concat() to return success or failure, not this.
Which means you can't chain multiple concat() calls together, but you can check if they succeeded or not.
arduino/cores/arduino/WString.cpp | 40 ++++++++++++++++--------------------
arduino/cores/arduino/WString.h | 34 +++++++++++++++---------------
2 files changed, 35 insertions(+), 39 deletions(-)
---
diff --git a/arduino/cores/arduino/WString.cpp b/arduino/cores/arduino/WString.cpp
index e9f71d1..5dcf585 100644
--- a/arduino/cores/arduino/WString.cpp
+++ b/arduino/cores/arduino/WString.cpp
@@ -219,65 +219,61 @@ String & String::operator = (char c)
/* concat */
/*********************************************/
-String & String::concat(const String &s)
+unsigned char String::concat(const String &s)
{
return concat(s.buffer, s.len);
}
-String & String::concat(const char *cstr, unsigned int length)
+unsigned char String::concat(const char *cstr, unsigned int length)
{
unsigned int newlen = len + length;
- if (length == 0 || !reserve(newlen)) return *this;
+ if (!cstr || length == 0) return 1; // nothing to append = success
+ if (!reserve(newlen)) return 0;
strcpy(buffer + len, cstr);
len = newlen;
- return *this;
+ return 1;
}
-String & String::concat(const char *cstr)
+unsigned char String::concat(const char *cstr)
{
- if (cstr) concat(cstr, strlen(cstr));
- return *this;
+ if (!cstr) return 1; // nothing to append = success
+ return concat(cstr, strlen(cstr));
}
-String & String::concat(char c)
+unsigned char String::concat(char c)
{
char buf[2];
buf[0] = c;
buf[1] = 0;
- concat(buf, 1);
- return *this;
+ return concat(buf, 1);
}
-String & String::concat(int num)
+unsigned char String::concat(int num)
{
char buf[7];
itoa(num, buf, 10);
- concat(buf, strlen(buf));
- return *this;
+ return concat(buf, strlen(buf));
}
-String & String::concat(unsigned int num)
+unsigned char String::concat(unsigned int num)
{
char buf[6];
utoa(num, buf, 10);
- concat(buf, strlen(buf));
- return *this;
+ return concat(buf, strlen(buf));
}
-String & String::concat(long num)
+unsigned char String::concat(long num)
{
char buf[12];
ltoa(num, buf, 10);
- concat(buf, strlen(buf));
- return *this;
+ return concat(buf, strlen(buf));
}
-String & String::concat(unsigned long num)
+unsigned char String::concat(unsigned long num)
{
char buf[11];
ultoa(num, buf, 10);
- concat(buf, strlen(buf));
- return *this;
+ return concat(buf, strlen(buf));
}
/*********************************************/
diff --git a/arduino/cores/arduino/WString.h b/arduino/cores/arduino/WString.h
index 164eeac..f797861 100644
--- a/arduino/cores/arduino/WString.h
+++ b/arduino/cores/arduino/WString.h
@@ -73,22 +73,22 @@ public:
String & operator = (char c);
// concat
- String & concat(const String &str);
- String & concat(const char *cstr);
- String & concat(char c);
- String & concat(unsigned char c) {return concat((char)c);}
- String & concat(int num);
- String & concat(unsigned int num);
- String & concat(long num);
- String & concat(unsigned long num);
- String & operator += (const String &rhs) {return concat(rhs);}
- String & operator += (const char *cstr) {return concat(cstr);}
- String & operator += (char c) {return concat(c);}
- String & operator += (unsigned char c) {return concat((char)c);}
- String & operator += (int num) {return concat(num);}
- String & operator += (unsigned int num) {return concat(num);}
- String & operator += (long num) {return concat(num);}
- String & operator += (unsigned long num) {return concat(num);}
+ unsigned char concat(const String &str);
+ unsigned char concat(const char *cstr);
+ unsigned char concat(char c);
+ unsigned char concat(unsigned char c) {return concat((char)c);}
+ unsigned char concat(int num);
+ unsigned char concat(unsigned int num);
+ unsigned char concat(long num);
+ unsigned char concat(unsigned long num);
+ String & operator += (const String &rhs) {concat(rhs); return (*this);}
+ String & operator += (const char *cstr) {concat(cstr); return (*this);}
+ String & operator += (char c) {concat(c); return (*this);}
+ String & operator += (unsigned char c) {concat((char)c); return (*this);}
+ String & operator += (int num) {concat(num); return (*this);}
+ String & operator += (unsigned int num) {concat(num); return (*this);}
+ String & operator += (long num) {concat(num); return (*this);}
+ String & operator += (unsigned long num) {concat(num); return (*this);}
// concatenate
friend StringSumHelper & operator + (const StringSumHelper &lhs, const String &rhs);
@@ -156,7 +156,7 @@ protected:
protected:
void init(void);
unsigned char changeBuffer(unsigned int maxStrLen);
- String & concat(const char *cstr, unsigned int length);
+ unsigned char concat(const char *cstr, unsigned int length);
};
class StringSumHelper : public String
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]