134 #include "FCString.h" 143 int compareString(
const char* a,
const char* b) {
147 int compareString(
const char* a,
const String& b) {
148 return strcmp(a, b.c_str());
151 int compareString(
const char* a,
const __FlashStringHelper* b) {
152 return strcmp_P(a, (
const char*)b);
155 int compareString(
const String& a,
const char* b) {
156 return strcmp(a.c_str(), b);
159 int compareString(
const String& a,
const String& b) {
160 return a.compareTo(b);
163 int compareString(
const String& a,
const __FlashStringHelper* b) {
164 return strcmp_P(a.c_str(), (
const char*)b);
167 int compareString(
const __FlashStringHelper* a,
const char* b) {
168 return -strcmp_P(b, (
const char*) a);
174 int compareString(
const __FlashStringHelper* a,
const __FlashStringHelper* b) {
175 const char* aa =
reinterpret_cast<const char*
>(a);
176 const char* bb =
reinterpret_cast<const char*
>(b);
179 uint8_t ca = pgm_read_byte(aa);
180 uint8_t cb = pgm_read_byte(bb);
181 if (ca != cb)
return (
int) ca - (int) cb;
182 if (ca ==
'\0')
return 0;
188 int compareString(
const __FlashStringHelper* a,
const String& b) {
189 return -strcmp_P(b.c_str(), (
const char*)a);
192 int compareString(
const FCString& a,
const FCString& b) {
193 if (a.getType() == FCString::kCStringType) {
194 if (b.getType() == FCString::kCStringType) {
195 return compareString(a.getCString(), b.getCString());
197 return compareString(a.getCString(), b.getFString());
200 if (b.getType() == FCString::kCStringType) {
201 return compareString(a.getFString(), b.getCString());
203 return compareString(a.getFString(), b.getFString());
210 int compareStringN(
const char* a,
const char* b,
size_t n) {
211 return strncmp(a, b, n);
214 int compareStringN(
const char* a,
const __FlashStringHelper* b,
size_t n) {
215 return strncmp_P(a, (
const char*)b, n);
218 int compareStringN(
const __FlashStringHelper* a,
const char* b,
size_t n) {
219 return -strncmp_P(b, (
const char*)a, n);
225 int compareStringN(
const __FlashStringHelper* a,
const __FlashStringHelper* b,
227 const char* aa =
reinterpret_cast<const char*
>(a);
228 const char* bb =
reinterpret_cast<const char*
>(b);
231 uint8_t ca = pgm_read_byte(aa);
232 uint8_t cb = pgm_read_byte(bb);
233 if (ca != cb)
return (
int) ca - (int) cb;
234 if (ca ==
'\0')
return 0;
242 int compareStringN(
const FCString& a,
const char* b,
size_t n) {
243 if (a.getType() == FCString::kCStringType) {
244 return compareStringN(a.getCString(), b, n);
246 return compareStringN(a.getFString(), b, n);
250 int compareStringN(
const FCString& a,
const __FlashStringHelper* b,
size_t n) {
251 if (a.getType() == FCString::kCStringType) {
252 return compareStringN(a.getCString(), b, n);
254 return compareStringN(a.getFString(), b, n);
260 bool compareEqual(
bool a,
bool b) {
264 bool compareEqual(
char a,
char b) {
268 bool compareEqual(
int a,
int b) {
272 bool compareEqual(
unsigned int a,
unsigned int b) {
276 bool compareEqual(
long a,
long b) {
280 bool compareEqual(
unsigned long a,
unsigned long b) {
284 bool compareEqual(
double a,
double b) {
288 bool compareEqual(
const char* a,
const char* b) {
289 return compareString(a, b) == 0;
292 bool compareEqual(
const char* a,
const String& b) {
293 return compareString(a, b) == 0;
296 bool compareEqual(
const char* a,
const __FlashStringHelper* b) {
297 return compareString(a, b) == 0;
300 bool compareEqual(
const __FlashStringHelper* a,
const char* b) {
301 return compareString(a, b) == 0;
304 bool compareEqual(
const __FlashStringHelper* a,
const __FlashStringHelper* b) {
305 return compareString(a, b) == 0;
308 bool compareEqual(
const __FlashStringHelper* a,
const String& b) {
309 return compareString(a, b) == 0;
312 bool compareEqual(
const String& a,
const char* b) {
313 return compareString(a, b) == 0;
316 bool compareEqual(
const String& a,
const String& b) {
317 return compareString(a, b) == 0;
320 bool compareEqual(
const String& a,
const __FlashStringHelper* b) {
321 return compareString(a, b) == 0;
326 bool compareLess(
bool a,
bool b) {
330 bool compareLess(
char a,
char b) {
334 bool compareLess(
int a,
int b) {
338 bool compareLess(
unsigned int a,
unsigned int b) {
342 bool compareLess(
long a,
long b) {
346 bool compareLess(
unsigned long a,
unsigned long b) {
350 bool compareLess(
double a,
double b) {
354 bool compareLess(
const char* a,
const char* b) {
355 return compareString(a, b) < 0;
358 bool compareLess(
const char* a,
const String& b) {
359 return compareString(a, b) < 0;
362 bool compareLess(
const char* a,
const __FlashStringHelper* b) {
363 return compareString(a, b) < 0;
366 bool compareLess(
const __FlashStringHelper* a,
const char* b) {
367 return compareString(a, b) < 0;
371 const __FlashStringHelper* a,
const __FlashStringHelper* b) {
372 return compareString(a, b) < 0;
375 bool compareLess(
const __FlashStringHelper* a,
const String& b) {
376 return compareString(a, b) < 0;
379 bool compareLess(
const String& a,
const char* b) {
380 return compareString(a, b) < 0;
383 bool compareLess(
const String& a,
const String& b) {
384 return compareString(a, b) < 0;
387 bool compareLess(
const String& a,
const __FlashStringHelper* b) {
388 return compareString(a, b) < 0;
393 bool compareMore(
bool a,
bool b) {
397 bool compareMore(
char a,
char b) {
401 bool compareMore(
int a,
int b) {
405 bool compareMore(
unsigned int a,
unsigned int b) {
409 bool compareMore(
long a,
long b) {
413 bool compareMore(
unsigned long a,
unsigned long b) {
417 bool compareMore(
double a,
double b) {
421 bool compareMore(
const char* a,
const char* b) {
422 return compareString(a, b) > 0;
425 bool compareMore(
const char* a,
const String& b) {
426 return compareString(a, b) > 0;
429 bool compareMore(
const char* a,
const __FlashStringHelper* b) {
430 return compareString(a, b) > 0;
433 bool compareMore(
const __FlashStringHelper* a,
const char* b) {
434 return compareString(a, b) > 0;
437 bool compareMore(
const __FlashStringHelper* a,
const __FlashStringHelper* b) {
438 return compareString(a, b) > 0;
441 bool compareMore(
const __FlashStringHelper* a,
const String& b) {
442 return compareString(a, b) > 0;
445 bool compareMore(
const String& a,
const char* b) {
446 return compareString(a, b) > 0;
449 bool compareMore(
const String& a,
const String& b) {
450 return compareString(a, b) > 0;
453 bool compareMore(
const String& a,
const __FlashStringHelper* b) {
454 return compareString(a, b) > 0;
459 bool compareLessOrEqual(
bool a,
bool b) {
463 bool compareLessOrEqual(
char a,
char b) {
467 bool compareLessOrEqual(
int a,
int b) {
471 bool compareLessOrEqual(
unsigned int a,
unsigned int b) {
475 bool compareLessOrEqual(
long a,
long b) {
479 bool compareLessOrEqual(
unsigned long a,
unsigned long b) {
483 bool compareLessOrEqual(
double a,
double b) {
487 bool compareLessOrEqual(
const char* a,
const char* b) {
488 return compareString(a, b) <= 0;
491 bool compareLessOrEqual(
const char* a,
const String& b) {
492 return compareString(a, b) <= 0;
495 bool compareLessOrEqual(
const char* a,
const __FlashStringHelper* b) {
496 return compareString(a, b) <= 0;
499 bool compareLessOrEqual(
const __FlashStringHelper* a,
const char* b) {
500 return compareString(a, b) <= 0;
503 bool compareLessOrEqual(
504 const __FlashStringHelper* a,
const __FlashStringHelper* b) {
505 return compareString(a, b) <= 0;
508 bool compareLessOrEqual(
const __FlashStringHelper* a,
const String& b) {
509 return compareString(a, b) <= 0;
512 bool compareLessOrEqual(
const String& a,
const char* b) {
513 return compareString(a, b) <= 0;
516 bool compareLessOrEqual(
const String& a,
const String& b) {
517 return compareString(a, b) <= 0;
520 bool compareLessOrEqual(
const String& a,
const __FlashStringHelper* b) {
521 return compareString(a, b) <= 0;
526 bool compareMoreOrEqual(
bool a,
bool b) {
530 bool compareMoreOrEqual(
char a,
char b) {
534 bool compareMoreOrEqual(
int a,
int b) {
538 bool compareMoreOrEqual(
unsigned int a,
unsigned int b) {
542 bool compareMoreOrEqual(
long a,
long b) {
546 bool compareMoreOrEqual(
unsigned long a,
unsigned long b) {
550 bool compareMoreOrEqual(
double a,
double b) {
554 bool compareMoreOrEqual(
const char* a,
const char* b) {
555 return compareString(a, b) >= 0;
558 bool compareMoreOrEqual(
const char* a,
const String& b) {
559 return compareString(a, b) >= 0;
562 bool compareMoreOrEqual(
const char* a,
const __FlashStringHelper* b) {
563 return compareString(a, b) >= 0;
566 bool compareMoreOrEqual(
const __FlashStringHelper* a,
const char* b) {
567 return compareString(a, b) >= 0;
570 bool compareMoreOrEqual(
571 const __FlashStringHelper* a,
const __FlashStringHelper* b) {
572 return compareString(a, b) >= 0;
575 bool compareMoreOrEqual(
const __FlashStringHelper* a,
const String& b) {
576 return compareString(a, b) >= 0;
579 bool compareMoreOrEqual(
const String& a,
const char* b) {
580 return compareString(a, b) >= 0;
583 bool compareMoreOrEqual(
const String& a,
const String& b) {
584 return compareString(a, b) >= 0;
587 bool compareMoreOrEqual(
const String& a,
const __FlashStringHelper* b) {
588 return compareString(a, b) >= 0;
593 bool compareNotEqual(
bool a,
bool b) {
597 bool compareNotEqual(
char a,
char b) {
601 bool compareNotEqual(
int a,
int b) {
605 bool compareNotEqual(
unsigned int a,
unsigned int b) {
609 bool compareNotEqual(
long a,
long b) {
613 bool compareNotEqual(
unsigned long a,
unsigned long b) {
617 bool compareNotEqual(
double a,
double b) {
621 bool compareNotEqual(
const char* a,
const char* b) {
622 return compareString(a, b) != 0;
625 bool compareNotEqual(
const char* a,
const String& b) {
626 return compareString(a, b) != 0;
629 bool compareNotEqual(
const char* a,
const __FlashStringHelper* b) {
630 return compareString(a, b) != 0;
633 bool compareNotEqual(
const __FlashStringHelper* a,
const char* b) {
634 return compareString(a, b) != 0;
637 bool compareNotEqual(
638 const __FlashStringHelper* a,
const __FlashStringHelper* b) {
639 return compareString(a, b) != 0;
642 bool compareNotEqual(
const __FlashStringHelper* a,
const String& b) {
643 return compareString(a, b) != 0;
646 bool compareNotEqual(
const String& a,
const char* b) {
647 return compareString(a, b) != 0;
650 bool compareNotEqual(
const String& a,
const String& b) {
651 return compareString(a, b) != 0;
654 bool compareNotEqual(
const String& a,
const __FlashStringHelper* b) {
655 return compareString(a, b) != 0;
Flash strings (using F() macro) on the ESP8266 platform cannot be placed in an inline context...