22 #ifndef String_class_Compat_h
23 #define String_class_Compat_h
36 #include <avr/pgmspace.h>
46 class __FlashStringHelper;
47 #define F(string_literal) (reinterpret_cast<const __FlashStringHelper *>(PSTR(string_literal)))
52 class StringSumHelper;
60 typedef void (String::*StringIfHelperType)()
const;
61 void StringIfHelper()
const {}
69 String(
const char *cstr =
"");
70 String(
const String &str);
71 #ifdef __GXX_EXPERIMENTAL_CXX0X__
72 String(String &&rval);
73 String(StringSumHelper &&rval);
75 explicit String(
char c);
76 explicit String(
unsigned char,
unsigned char base=10);
77 explicit String(
int,
unsigned char base=10);
78 explicit String(
unsigned int,
unsigned char base=10);
79 explicit String(
long,
unsigned char base=10);
80 explicit String(
unsigned long,
unsigned char base=10);
87 unsigned char reserve(
unsigned int size);
88 inline unsigned int length(
void)
const {
return len;}
93 String & operator = (
const String &rhs);
94 String & operator = (
const char *cstr);
95 #ifdef __GXX_EXPERIMENTAL_CXX0X__
96 String & operator = (String &&rval);
97 String & operator = (StringSumHelper &&rval);
105 unsigned char concat(
const String &str);
106 unsigned char concat(
const char *cstr);
107 unsigned char concat(
char c);
108 unsigned char concat(
unsigned char c);
109 unsigned char concat(
int num);
110 unsigned char concat(
unsigned int num);
111 unsigned char concat(
long num);
112 unsigned char concat(
unsigned long num);
116 String & operator += (
const String &rhs) {concat(rhs);
return (*
this);}
117 String & operator += (
const char *cstr) {concat(cstr);
return (*
this);}
118 String & operator += (
char c) {concat(c);
return (*
this);}
119 String & operator += (
unsigned char num) {concat(num);
return (*
this);}
120 String & operator += (
int num) {concat(num);
return (*
this);}
121 String & operator += (
unsigned int num) {concat(num);
return (*
this);}
122 String & operator += (
long num) {concat(num);
return (*
this);}
123 String & operator += (
unsigned long num) {concat(num);
return (*
this);}
125 friend StringSumHelper &
operator + (
const StringSumHelper &lhs,
const String &rhs);
126 friend StringSumHelper &
operator + (
const StringSumHelper &lhs,
const char *cstr);
127 friend StringSumHelper &
operator + (
const StringSumHelper &lhs,
char c);
128 friend StringSumHelper &
operator + (
const StringSumHelper &lhs,
unsigned char num);
129 friend StringSumHelper &
operator + (
const StringSumHelper &lhs,
int num);
130 friend StringSumHelper &
operator + (
const StringSumHelper &lhs,
unsigned int num);
131 friend StringSumHelper &
operator + (
const StringSumHelper &lhs,
long num);
132 friend StringSumHelper &
operator + (
const StringSumHelper &lhs,
unsigned long num);
135 operator StringIfHelperType()
const {
return buffer ? &String::StringIfHelper : 0; }
136 int compareTo(
const String &s)
const;
137 unsigned char equals(
const String &s)
const;
138 unsigned char equals(
const char *cstr)
const;
139 unsigned char operator == (
const String &rhs)
const {
return equals(rhs);}
140 unsigned char operator == (
const char *cstr)
const {
return equals(cstr);}
141 unsigned char operator != (
const String &rhs)
const {
return !equals(rhs);}
142 unsigned char operator != (
const char *cstr)
const {
return !equals(cstr);}
143 unsigned char operator < (
const String &rhs)
const;
144 unsigned char operator > (
const String &rhs)
const;
145 unsigned char operator <= (
const String &rhs)
const;
146 unsigned char operator >= (
const String &rhs)
const;
147 unsigned char equalsIgnoreCase(
const String &s)
const;
148 unsigned char startsWith(
const String &prefix)
const;
149 unsigned char startsWith(
const String &prefix,
unsigned int offset)
const;
150 unsigned char endsWith(
const String &suffix)
const;
153 char charAt(
unsigned int index)
const;
154 void setCharAt(
unsigned int index,
char c);
155 char operator [] (
unsigned int index)
const;
156 char& operator [] (
unsigned int index);
157 void getBytes(
unsigned char *buf,
unsigned int bufsize,
unsigned int index=0)
const;
158 void toCharArray(
char *buf,
unsigned int bufsize,
unsigned int index=0)
const
159 {getBytes((
unsigned char *)buf, bufsize, index);}
162 int indexOf(
char ch )
const;
163 int indexOf(
char ch,
unsigned int fromIndex )
const;
164 int indexOf(
const String &str )
const;
165 int indexOf(
const String &str,
unsigned int fromIndex )
const;
166 int lastIndexOf(
char ch )
const;
167 int lastIndexOf(
char ch,
unsigned int fromIndex )
const;
168 int lastIndexOf(
const String &str )
const;
169 int lastIndexOf(
const String &str,
unsigned int fromIndex )
const;
170 String substring(
unsigned int beginIndex )
const;
171 String substring(
unsigned int beginIndex,
unsigned int endIndex )
const;
174 void replace(
char find,
char replace);
175 void replace(
const String& find,
const String& replace);
176 void toLowerCase(
void);
177 void toUpperCase(
void);
181 long toInt(
void)
const;
184 static void valueToBinaryStr(
char* buf,
const uint8_t* value,
int size);
189 unsigned int capacity;
194 void invalidate(
void);
195 unsigned char changeBuffer(
unsigned int maxStrLen);
196 unsigned char concat(
const char *cstr,
unsigned int length);
199 String & copy(
const char *cstr,
unsigned int length);
200 #ifdef __GXX_EXPERIMENTAL_CXX0X__
201 void move(String &rhs);
205 class StringSumHelper :
public String
208 StringSumHelper(
const String &s) : String(s) {}
209 StringSumHelper(
const char *p) : String(p) {}
210 StringSumHelper(
char c) : String(c) {}
211 StringSumHelper(
unsigned char num) : String(num) {}
212 StringSumHelper(
int num) : String(num) {}
213 StringSumHelper(
unsigned int num) : String(num) {}
214 StringSumHelper(
long num) : String(num) {}
215 StringSumHelper(
unsigned long num) : String(num) {}
218 #endif // __cplusplus
219 #endif // !is_arduino()
220 #endif // String_class_h