[gnoduino: 24/237] Modifying String.concat() to return success or failure, not this.



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]