124 #include "FCString.h" 135 int compareString(
const char* a,
const char* b) {
136 if (a == b) {
return 0; }
137 if (a ==
nullptr) {
return -1; }
138 if (b ==
nullptr) {
return 1; }
142 int compareString(
const char* a,
const String& b) {
143 if (a ==
nullptr) {
return -1; }
144 return strcmp(a, b.c_str());
147 int compareString(
const char* a,
const __FlashStringHelper* b) {
148 if (a == (
const char*)b) {
return 0; }
149 if (a ==
nullptr) {
return -1; }
150 if (b ==
nullptr) {
return 1; }
151 return strcmp_P(a, (
const char*)b);
154 int compareString(
const String& a,
const char* b) {
155 return -compareString(b, a);
158 int compareString(
const String& a,
const String& b) {
159 return strcmp(a.c_str(), b.c_str());
162 int compareString(
const String& a,
const __FlashStringHelper* b) {
163 if (b ==
nullptr) {
return 1; }
164 return strcmp_P(a.c_str(), (
const char*)b);
167 int compareString(
const __FlashStringHelper* a,
const char* b) {
168 return -compareString(b, a);
171 int compareString(
const __FlashStringHelper* a,
const String& b) {
172 return -compareString(b, a);
178 int compareString(
const __FlashStringHelper* a,
const __FlashStringHelper* b) {
179 if (a == b) {
return 0; }
180 if (a ==
nullptr) {
return -1; }
181 if (b ==
nullptr) {
return 1; }
182 const char* aa =
reinterpret_cast<const char*
>(a);
183 const char* bb =
reinterpret_cast<const char*
>(b);
186 uint8_t ca = pgm_read_byte(aa);
187 uint8_t cb = pgm_read_byte(bb);
188 if (ca != cb)
return (
int) ca - (int) cb;
189 if (ca ==
'\0')
return 0;
195 int compareString(
const FCString& a,
const FCString& b) {
196 if (a.getType() == FCString::kCStringType) {
197 if (b.getType() == FCString::kCStringType) {
198 return compareString(a.getCString(), b.getCString());
200 return compareString(a.getCString(), b.getFString());
203 if (b.getType() == FCString::kCStringType) {
204 return compareString(a.getFString(), b.getCString());
206 return compareString(a.getFString(), b.getFString());
215 int compareStringCase(
const char* a,
const char* b) {
216 if (a == b) {
return 0; }
217 if (a ==
nullptr) {
return -1; }
218 if (b ==
nullptr) {
return 1; }
219 return strcasecmp(a, b);
222 int compareStringCase(
const char* a,
const String& b) {
223 if (a ==
nullptr) {
return -1; }
224 return strcasecmp(a, b.c_str());
227 int compareStringCase(
const char* a,
const __FlashStringHelper* b) {
228 if (a == (
const char*)b) {
return 0; }
229 if (a ==
nullptr) {
return -1; }
230 if (b ==
nullptr) {
return 1; }
231 return strcasecmp_P(a, (
const char*)b);
234 int compareStringCase(
const String& a,
const char* b) {
235 return -compareStringCase(b, a);
238 int compareStringCase(
const String& a,
const String& b) {
239 return strcasecmp(a.c_str(), b.c_str());
242 int compareStringCase(
const String& a,
const __FlashStringHelper* b) {
243 if (b ==
nullptr) {
return 1; }
244 return strcasecmp_P(a.c_str(), (
const char*)b);
247 int compareStringCase(
const __FlashStringHelper* a,
const char* b) {
248 return -compareStringCase(b, a);
251 int compareStringCase(
const __FlashStringHelper* a,
const String& b) {
252 return -compareStringCase(b, a);
258 int compareStringCase(
const __FlashStringHelper* a,
259 const __FlashStringHelper* b) {
260 if (a == b) {
return 0; }
261 if (a ==
nullptr) {
return -1; }
262 if (b ==
nullptr) {
return 1; }
263 const char* aa =
reinterpret_cast<const char*
>(a);
264 const char* bb =
reinterpret_cast<const char*
>(b);
267 uint8_t ca = pgm_read_byte(aa);
268 uint8_t cb = pgm_read_byte(bb);
269 uint8_t la = tolower(ca);
270 uint8_t lb = tolower(cb);
271 if (la != lb)
return (
int) la - (int) lb;
272 if (ca ==
'\0')
return 0;
286 int compareStringN(
const char* a,
const char* b,
size_t n) {
287 if (a == b) {
return 0; }
288 if (a ==
nullptr) {
return -1; }
289 if (b ==
nullptr) {
return 1; }
290 return strncmp(a, b, n);
293 int compareStringN(
const char* a,
const __FlashStringHelper* b,
size_t n) {
294 if (a == (
const char*) b) {
return 0; }
295 if (a ==
nullptr) {
return -1; }
296 if (b ==
nullptr) {
return 1; }
297 return strncmp_P(a, (
const char*)b, n);
300 int compareStringN(
const __FlashStringHelper* a,
const char* b,
size_t n) {
301 return -compareStringN(b, a, n);
307 int compareStringN(
const __FlashStringHelper* a,
const __FlashStringHelper* b,
309 if (a == b) {
return 0; }
310 if (a ==
nullptr) {
return -1; }
311 if (b ==
nullptr) {
return 1; }
312 const char* aa =
reinterpret_cast<const char*
>(a);
313 const char* bb =
reinterpret_cast<const char*
>(b);
316 uint8_t ca = pgm_read_byte(aa);
317 uint8_t cb = pgm_read_byte(bb);
318 if (ca != cb)
return (
int) ca - (int) cb;
319 if (ca ==
'\0')
return 0;
329 int compareStringN(
const FCString& a,
const char* b,
size_t n) {
330 if (a.getType() == FCString::kCStringType) {
331 return compareStringN(a.getCString(), b, n);
333 return compareStringN(a.getFString(), b, n);
337 int compareStringN(
const FCString& a,
const __FlashStringHelper* b,
size_t n) {
338 if (a.getType() == FCString::kCStringType) {
339 return compareStringN(a.getCString(), b, n);
341 return compareStringN(a.getFString(), b, n);
349 bool compareEqual(
bool a,
bool b) {
353 bool compareEqual(
char a,
char b) {
357 bool compareEqual(
int a,
int b) {
361 bool compareEqual(
unsigned int a,
unsigned int b) {
365 bool compareEqual(
long a,
long b) {
369 bool compareEqual(
unsigned long a,
unsigned long b) {
373 bool compareEqual(
double a,
double b) {
377 bool compareEqual(
const char* a,
const char* b) {
378 return compareString(a, b) == 0;
381 bool compareEqual(
const char* a,
const String& b) {
382 return compareString(a, b) == 0;
385 bool compareEqual(
const char* a,
const __FlashStringHelper* b) {
386 return compareString(a, b) == 0;
389 bool compareEqual(
const __FlashStringHelper* a,
const char* b) {
390 return compareString(a, b) == 0;
393 bool compareEqual(
const __FlashStringHelper* a,
const __FlashStringHelper* b) {
394 return compareString(a, b) == 0;
397 bool compareEqual(
const __FlashStringHelper* a,
const String& b) {
398 return compareString(a, b) == 0;
401 bool compareEqual(
const String& a,
const char* b) {
402 return compareString(a, b) == 0;
405 bool compareEqual(
const String& a,
const String& b) {
406 return compareString(a, b) == 0;
409 bool compareEqual(
const String& a,
const __FlashStringHelper* b) {
410 return compareString(a, b) == 0;
417 bool compareLess(
bool a,
bool b) {
421 bool compareLess(
char a,
char b) {
425 bool compareLess(
int a,
int b) {
429 bool compareLess(
unsigned int a,
unsigned int b) {
433 bool compareLess(
long a,
long b) {
437 bool compareLess(
unsigned long a,
unsigned long b) {
441 bool compareLess(
double a,
double b) {
445 bool compareLess(
const char* a,
const char* b) {
446 return compareString(a, b) < 0;
449 bool compareLess(
const char* a,
const String& b) {
450 return compareString(a, b) < 0;
453 bool compareLess(
const char* a,
const __FlashStringHelper* b) {
454 return compareString(a, b) < 0;
457 bool compareLess(
const __FlashStringHelper* a,
const char* b) {
458 return compareString(a, b) < 0;
462 const __FlashStringHelper* a,
const __FlashStringHelper* b) {
463 return compareString(a, b) < 0;
466 bool compareLess(
const __FlashStringHelper* a,
const String& b) {
467 return compareString(a, b) < 0;
470 bool compareLess(
const String& a,
const char* b) {
471 return compareString(a, b) < 0;
474 bool compareLess(
const String& a,
const String& b) {
475 return compareString(a, b) < 0;
478 bool compareLess(
const String& a,
const __FlashStringHelper* b) {
479 return compareString(a, b) < 0;
486 bool compareMore(
bool a,
bool b) {
490 bool compareMore(
char a,
char b) {
494 bool compareMore(
int a,
int b) {
498 bool compareMore(
unsigned int a,
unsigned int b) {
502 bool compareMore(
long a,
long b) {
506 bool compareMore(
unsigned long a,
unsigned long b) {
510 bool compareMore(
double a,
double b) {
514 bool compareMore(
const char* a,
const char* b) {
515 return compareString(a, b) > 0;
518 bool compareMore(
const char* a,
const String& b) {
519 return compareString(a, b) > 0;
522 bool compareMore(
const char* a,
const __FlashStringHelper* b) {
523 return compareString(a, b) > 0;
526 bool compareMore(
const __FlashStringHelper* a,
const char* b) {
527 return compareString(a, b) > 0;
530 bool compareMore(
const __FlashStringHelper* a,
const __FlashStringHelper* b) {
531 return compareString(a, b) > 0;
534 bool compareMore(
const __FlashStringHelper* a,
const String& b) {
535 return compareString(a, b) > 0;
538 bool compareMore(
const String& a,
const char* b) {
539 return compareString(a, b) > 0;
542 bool compareMore(
const String& a,
const String& b) {
543 return compareString(a, b) > 0;
546 bool compareMore(
const String& a,
const __FlashStringHelper* b) {
547 return compareString(a, b) > 0;
554 bool compareLessOrEqual(
bool a,
bool b) {
558 bool compareLessOrEqual(
char a,
char b) {
562 bool compareLessOrEqual(
int a,
int b) {
566 bool compareLessOrEqual(
unsigned int a,
unsigned int b) {
570 bool compareLessOrEqual(
long a,
long b) {
574 bool compareLessOrEqual(
unsigned long a,
unsigned long b) {
578 bool compareLessOrEqual(
double a,
double b) {
582 bool compareLessOrEqual(
const char* a,
const char* b) {
583 return compareString(a, b) <= 0;
586 bool compareLessOrEqual(
const char* a,
const String& b) {
587 return compareString(a, b) <= 0;
590 bool compareLessOrEqual(
const char* a,
const __FlashStringHelper* b) {
591 return compareString(a, b) <= 0;
594 bool compareLessOrEqual(
const __FlashStringHelper* a,
const char* b) {
595 return compareString(a, b) <= 0;
598 bool compareLessOrEqual(
599 const __FlashStringHelper* a,
const __FlashStringHelper* b) {
600 return compareString(a, b) <= 0;
603 bool compareLessOrEqual(
const __FlashStringHelper* a,
const String& b) {
604 return compareString(a, b) <= 0;
607 bool compareLessOrEqual(
const String& a,
const char* b) {
608 return compareString(a, b) <= 0;
611 bool compareLessOrEqual(
const String& a,
const String& b) {
612 return compareString(a, b) <= 0;
615 bool compareLessOrEqual(
const String& a,
const __FlashStringHelper* b) {
616 return compareString(a, b) <= 0;
623 bool compareMoreOrEqual(
bool a,
bool b) {
627 bool compareMoreOrEqual(
char a,
char b) {
631 bool compareMoreOrEqual(
int a,
int b) {
635 bool compareMoreOrEqual(
unsigned int a,
unsigned int b) {
639 bool compareMoreOrEqual(
long a,
long b) {
643 bool compareMoreOrEqual(
unsigned long a,
unsigned long b) {
647 bool compareMoreOrEqual(
double a,
double b) {
651 bool compareMoreOrEqual(
const char* a,
const char* b) {
652 return compareString(a, b) >= 0;
655 bool compareMoreOrEqual(
const char* a,
const String& b) {
656 return compareString(a, b) >= 0;
659 bool compareMoreOrEqual(
const char* a,
const __FlashStringHelper* b) {
660 return compareString(a, b) >= 0;
663 bool compareMoreOrEqual(
const __FlashStringHelper* a,
const char* b) {
664 return compareString(a, b) >= 0;
667 bool compareMoreOrEqual(
668 const __FlashStringHelper* a,
const __FlashStringHelper* b) {
669 return compareString(a, b) >= 0;
672 bool compareMoreOrEqual(
const __FlashStringHelper* a,
const String& b) {
673 return compareString(a, b) >= 0;
676 bool compareMoreOrEqual(
const String& a,
const char* b) {
677 return compareString(a, b) >= 0;
680 bool compareMoreOrEqual(
const String& a,
const String& b) {
681 return compareString(a, b) >= 0;
684 bool compareMoreOrEqual(
const String& a,
const __FlashStringHelper* b) {
685 return compareString(a, b) >= 0;
692 bool compareNotEqual(
bool a,
bool b) {
696 bool compareNotEqual(
char a,
char b) {
700 bool compareNotEqual(
int a,
int b) {
704 bool compareNotEqual(
unsigned int a,
unsigned int b) {
708 bool compareNotEqual(
long a,
long b) {
712 bool compareNotEqual(
unsigned long a,
unsigned long b) {
716 bool compareNotEqual(
double a,
double b) {
720 bool compareNotEqual(
const char* a,
const char* b) {
721 return compareString(a, b) != 0;
724 bool compareNotEqual(
const char* a,
const String& b) {
725 return compareString(a, b) != 0;
728 bool compareNotEqual(
const char* a,
const __FlashStringHelper* b) {
729 return compareString(a, b) != 0;
732 bool compareNotEqual(
const __FlashStringHelper* a,
const char* b) {
733 return compareString(a, b) != 0;
736 bool compareNotEqual(
737 const __FlashStringHelper* a,
const __FlashStringHelper* b) {
738 return compareString(a, b) != 0;
741 bool compareNotEqual(
const __FlashStringHelper* a,
const String& b) {
742 return compareString(a, b) != 0;
745 bool compareNotEqual(
const String& a,
const char* b) {
746 return compareString(a, b) != 0;
749 bool compareNotEqual(
const String& a,
const String& b) {
750 return compareString(a, b) != 0;
753 bool compareNotEqual(
const String& a,
const __FlashStringHelper* b) {
754 return compareString(a, b) != 0;
761 bool compareStringCaseEqual(
const char* a,
const char* b) {
762 return compareStringCase(a, b) == 0;
765 bool compareStringCaseEqual(
const char* a,
const String& b) {
766 return compareStringCase(a, b) == 0;
769 bool compareStringCaseEqual(
const char* a,
const __FlashStringHelper* b) {
770 return compareStringCase(a, b) == 0;
773 bool compareStringCaseEqual(
const __FlashStringHelper* a,
const char* b) {
774 return compareStringCase(a, b) == 0;
777 bool compareStringCaseEqual(
const __FlashStringHelper* a,
778 const __FlashStringHelper* b) {
779 return compareStringCase(a, b) == 0;
782 bool compareStringCaseEqual(
const __FlashStringHelper* a,
const String& b) {
783 return compareStringCase(a, b) == 0;
786 bool compareStringCaseEqual(
const String& a,
const char* b) {
787 return compareStringCase(a, b) == 0;
790 bool compareStringCaseEqual(
const String& a,
const String& b) {
791 return compareStringCase(a, b) == 0;
794 bool compareStringCaseEqual(
const String& a,
const __FlashStringHelper* b) {
795 return compareStringCase(a, b) == 0;
802 bool compareStringCaseNotEqual(
const char* a,
const char* b) {
803 return compareStringCase(a, b) != 0;
806 bool compareStringCaseNotEqual(
const char* a,
const String& b) {
807 return compareStringCase(a, b) != 0;
810 bool compareStringCaseNotEqual(
const char* a,
const __FlashStringHelper* b) {
811 return compareStringCase(a, b) != 0;
814 bool compareStringCaseNotEqual(
const __FlashStringHelper* a,
const char* b) {
815 return compareStringCase(a, b) != 0;
818 bool compareStringCaseNotEqual(
const __FlashStringHelper* a,
819 const __FlashStringHelper* b) {
820 return compareStringCase(a, b) != 0;
823 bool compareStringCaseNotEqual(
const __FlashStringHelper* a,
const String& b) {
824 return compareStringCase(a, b) != 0;
827 bool compareStringCaseNotEqual(
const String& a,
const char* b) {
828 return compareStringCase(a, b) != 0;
831 bool compareStringCaseNotEqual(
const String& a,
const String& b) {
832 return compareStringCase(a, b) != 0;
835 bool compareStringCaseNotEqual(
const String& a,
const __FlashStringHelper* b) {
836 return compareStringCase(a, b) != 0;
This file provides overloaded compareXxx(a, b) functions which are used by the various assertXxx(a...
Various macros to smooth over the differences among the various platforms with regards to their suppo...