From a5f6e6524282e23860ace324dcf81598287f9944 Mon Sep 17 00:00:00 2001 From: "David A. Mellis" Date: Sun, 13 Mar 2011 19:31:10 -0400 Subject: [PATCH] Adding additional String + operators for disambiguation. The operator bool() means that you could implicitly convert a String to a bool and then add it to it an int, for example. Which means our operator+ has to match exactly or it will be ambiguous. --- cores/arduino/WString.h | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/cores/arduino/WString.h b/cores/arduino/WString.h index 5e78ee5..5a35101 100644 --- a/cores/arduino/WString.h +++ b/cores/arduino/WString.h @@ -175,5 +175,40 @@ public: StringSumHelper(unsigned long num) : String(num, 10) {} }; +inline StringSumHelper operator + (const String &lhs, const String &rhs) + { return StringSumHelper(lhs) + rhs; } + +inline StringSumHelper operator + (const String &lhs, const char *cstr) + { return StringSumHelper(lhs) + cstr; } +inline StringSumHelper operator + (const String &lhs, char c) + { return StringSumHelper(lhs) + c; } +inline StringSumHelper operator + (const String &lhs, unsigned char c) + { return StringSumHelper(lhs) + c; } +inline StringSumHelper operator + (const String &lhs, int num) + { return StringSumHelper(lhs) + num; } +inline StringSumHelper operator + (const String &lhs, unsigned int num) + { return StringSumHelper(lhs) + num; } +inline StringSumHelper operator + (const String &lhs, long num) + { return StringSumHelper(lhs) + num; } +inline StringSumHelper operator + (const String &lhs, unsigned long num) + { return StringSumHelper(lhs) + num; } + +inline StringSumHelper operator + (const char *cstr, const String &rhs) + { return StringSumHelper(cstr) + rhs; } +inline StringSumHelper operator + (char c, const String &rhs) + { return StringSumHelper(c) + rhs; } +inline StringSumHelper operator + (unsigned char c, const String &rhs) + { return StringSumHelper(c) + rhs; } +inline StringSumHelper operator + (int num, const String &rhs) + { return StringSumHelper(num) + rhs; } +inline StringSumHelper operator + (unsigned int num, const String &rhs) + { return StringSumHelper(num) + rhs; } +inline StringSumHelper operator + (long num, const String &rhs) + { return StringSumHelper(num) + rhs; } +inline StringSumHelper operator + (unsigned long num, const String &rhs) + { return StringSumHelper(num) + rhs; } + + + #endif // __cplusplus #endif // String_class_h