diff options
author | David A. Mellis <d.mellis@arduino.cc> | 2011-03-12 14:03:34 -0500 |
---|---|---|
committer | David A. Mellis <d.mellis@arduino.cc> | 2011-03-12 14:03:34 -0500 |
commit | 98b403114c3d9edcb6b74938f07c68dccc3c2489 (patch) | |
tree | c06ccbfd60627341d42ac66cecb2dcf35faade5e | |
parent | b4b32f60f1c156e76117dab69479c193a861be23 (diff) |
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.
-rw-r--r-- | cores/arduino/WString.cpp | 40 | ||||
-rw-r--r-- | cores/arduino/WString.h | 34 |
2 files changed, 35 insertions, 39 deletions
diff --git a/cores/arduino/WString.cpp b/cores/arduino/WString.cpp index e9f71d1..5dcf585 100644 --- a/cores/arduino/WString.cpp +++ b/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/cores/arduino/WString.h b/cores/arduino/WString.h index 164eeac..f797861 100644 --- a/cores/arduino/WString.h +++ b/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 |