Skip to content
Browse files

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.
  • Loading branch information...
1 parent 6727c8a commit f5f2e09636673a4f2daa316d61da7ce758b50e55 @damellis damellis committed Mar 12, 2011
Showing with 35 additions and 39 deletions.
  1. +18 −22 hardware/arduino/cores/arduino/WString.cpp
  2. +17 −17 hardware/arduino/cores/arduino/WString.h
View
40 hardware/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));
}
/*********************************************/
View
34 hardware/arduino/cores/arduino/WString.h
@@ -73,22 +73,22 @@ class String
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 @@ class String
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

0 comments on commit f5f2e09

Please sign in to comment.
Something went wrong with that request. Please try again.