134 int compareString(
const char* a,
const char* b) {
135 if (a == b) {
return 0; }
136 if (a ==
nullptr) {
return -1; }
137 if (b ==
nullptr) {
return 1; }
141 int compareString(
const char* a,
const String& b) {
142 if (a ==
nullptr) {
return -1; }
143 return strcmp(a, b.c_str());
146 int compareString(
const char* a,
const __FlashStringHelper* b) {
147 if (a == (
const char*) b) {
return 0; }
148 if (a ==
nullptr) {
return -1; }
149 if (b ==
nullptr) {
return 1; }
150 return strcmp_P(a, (
const char*) b);
153 int compareString(
const String& a,
const char* b) {
154 return -compareString(b, a);
157 int compareString(
const String& a,
const String& b) {
158 return strcmp(a.c_str(), b.c_str());
161 int compareString(
const String& a,
const __FlashStringHelper* b) {
162 if (b ==
nullptr) {
return 1; }
163 return strcmp_P(a.c_str(), (
const char*) b);
166 int compareString(
const __FlashStringHelper* a,
const char* b) {
167 return -compareString(b, a);
170 int compareString(
const __FlashStringHelper* a,
const String& b) {
171 return -compareString(b, a);
177 int compareString(
const __FlashStringHelper* a,
const __FlashStringHelper* b) {
178 if (a == b) {
return 0; }
179 if (a ==
nullptr) {
return -1; }
180 if (b ==
nullptr) {
return 1; }
181 const char* aa =
reinterpret_cast<const char*
>(a);
182 const char* bb =
reinterpret_cast<const char*
>(b);
185 uint8_t ca = pgm_read_byte(aa);
186 uint8_t cb = pgm_read_byte(bb);
187 if (ca != cb)
return (
int) ca - (int) cb;
188 if (ca ==
'\0')
return 0;
198 int compareStringCase(
const char* a,
const char* b) {
199 if (a == b) {
return 0; }
200 if (a ==
nullptr) {
return -1; }
201 if (b ==
nullptr) {
return 1; }
202 return strcasecmp(a, b);
205 int compareStringCase(
const char* a,
const String& b) {
206 if (a ==
nullptr) {
return -1; }
207 return strcasecmp(a, b.c_str());
210 int compareStringCase(
const char* a,
const __FlashStringHelper* b) {
211 if (a == (
const char*) b) {
return 0; }
212 if (a ==
nullptr) {
return -1; }
213 if (b ==
nullptr) {
return 1; }
214 return strcasecmp_P(a, (
const char*) b);
217 int compareStringCase(
const String& a,
const char* b) {
218 return -compareStringCase(b, a);
221 int compareStringCase(
const String& a,
const String& b) {
222 return strcasecmp(a.c_str(), b.c_str());
225 int compareStringCase(
const String& a,
const __FlashStringHelper* b) {
226 if (b ==
nullptr) {
return 1; }
227 return strcasecmp_P(a.c_str(), (
const char*) b);
230 int compareStringCase(
const __FlashStringHelper* a,
const char* b) {
231 return -compareStringCase(b, a);
234 int compareStringCase(
const __FlashStringHelper* a,
const String& b) {
235 return -compareStringCase(b, a);
241 int compareStringCase(
const __FlashStringHelper* a,
242 const __FlashStringHelper* b) {
243 if (a == b) {
return 0; }
244 if (a ==
nullptr) {
return -1; }
245 if (b ==
nullptr) {
return 1; }
246 const char* aa =
reinterpret_cast<const char*
>(a);
247 const char* bb =
reinterpret_cast<const char*
>(b);
250 uint8_t ca = pgm_read_byte(aa);
251 uint8_t cb = pgm_read_byte(bb);
252 uint8_t la = tolower(ca);
253 uint8_t lb = tolower(cb);
254 if (la != lb)
return (
int) la - (int) lb;
255 if (ca ==
'\0')
return 0;
269 int compareStringN(
const char* a,
const char* b,
size_t n) {
270 if (a == b) {
return 0; }
271 if (a ==
nullptr) {
return -1; }
272 if (b ==
nullptr) {
return 1; }
273 return strncmp(a, b, n);
276 int compareStringN(
const char* a,
const __FlashStringHelper* b,
size_t n) {
277 if (a == (
const char*) b) {
return 0; }
278 if (a ==
nullptr) {
return -1; }
279 if (b ==
nullptr) {
return 1; }
280 return strncmp_P(a, (
const char*) b, n);
283 int compareStringN(
const __FlashStringHelper* a,
const char* b,
size_t n) {
284 return -compareStringN(b, a, n);
290 int compareStringN(
const __FlashStringHelper* a,
const __FlashStringHelper* b,
292 if (a == b) {
return 0; }
293 if (a ==
nullptr) {
return -1; }
294 if (b ==
nullptr) {
return 1; }
295 const char* aa =
reinterpret_cast<const char*
>(a);
296 const char* bb =
reinterpret_cast<const char*
>(b);
299 uint8_t ca = pgm_read_byte(aa);
300 uint8_t cb = pgm_read_byte(bb);
301 if (ca != cb)
return (
int) ca - (int) cb;
302 if (ca ==
'\0')
return 0;
314 bool compareEqual(
bool a,
bool b) {
318 bool compareEqual(
char a,
char b) {
322 bool compareEqual(
int a,
int b) {
326 bool compareEqual(
unsigned int a,
unsigned int b) {
330 bool compareEqual(
long a,
long b) {
334 bool compareEqual(
unsigned long a,
unsigned long b) {
338 bool compareEqual(
long long a,
long long b) {
342 bool compareEqual(
unsigned long long a,
unsigned long long b) {
346 bool compareEqual(
double a,
double b) {
350 bool compareEqual(
const char* a,
const char* b) {
351 return compareString(a, b) == 0;
354 bool compareEqual(
const char* a,
const String& b) {
355 return compareString(a, b) == 0;
358 bool compareEqual(
const char* a,
const __FlashStringHelper* b) {
359 return compareString(a, b) == 0;
362 bool compareEqual(
const __FlashStringHelper* a,
const char* b) {
363 return compareString(a, b) == 0;
366 bool compareEqual(
const __FlashStringHelper* a,
const __FlashStringHelper* b) {
367 return compareString(a, b) == 0;
370 bool compareEqual(
const __FlashStringHelper* a,
const String& b) {
371 return compareString(a, b) == 0;
374 bool compareEqual(
const String& a,
const char* b) {
375 return compareString(a, b) == 0;
378 bool compareEqual(
const String& a,
const String& b) {
379 return compareString(a, b) == 0;
382 bool compareEqual(
const String& a,
const __FlashStringHelper* b) {
383 return compareString(a, b) == 0;
390 bool compareLess(
bool a,
bool b) {
394 bool compareLess(
char a,
char b) {
398 bool compareLess(
int a,
int b) {
402 bool compareLess(
unsigned int a,
unsigned int b) {
406 bool compareLess(
long a,
long b) {
410 bool compareLess(
unsigned long a,
unsigned long b) {
414 bool compareLess(
long long a,
long long b) {
418 bool compareLess(
unsigned long long a,
unsigned long long b) {
422 bool compareLess(
double a,
double b) {
426 bool compareLess(
const char* a,
const char* b) {
427 return compareString(a, b) < 0;
430 bool compareLess(
const char* a,
const String& b) {
431 return compareString(a, b) < 0;
434 bool compareLess(
const char* a,
const __FlashStringHelper* b) {
435 return compareString(a, b) < 0;
438 bool compareLess(
const __FlashStringHelper* a,
const char* b) {
439 return compareString(a, b) < 0;
443 const __FlashStringHelper* a,
const __FlashStringHelper* b) {
444 return compareString(a, b) < 0;
447 bool compareLess(
const __FlashStringHelper* a,
const String& b) {
448 return compareString(a, b) < 0;
451 bool compareLess(
const String& a,
const char* b) {
452 return compareString(a, b) < 0;
455 bool compareLess(
const String& a,
const String& b) {
456 return compareString(a, b) < 0;
459 bool compareLess(
const String& a,
const __FlashStringHelper* b) {
460 return compareString(a, b) < 0;
467 bool compareMore(
bool a,
bool b) {
471 bool compareMore(
char a,
char b) {
475 bool compareMore(
int a,
int b) {
479 bool compareMore(
unsigned int a,
unsigned int b) {
483 bool compareMore(
long a,
long b) {
487 bool compareMore(
unsigned long a,
unsigned long b) {
491 bool compareMore(
long long a,
long long b) {
495 bool compareMore(
unsigned long long a,
unsigned long long b) {
499 bool compareMore(
double a,
double b) {
503 bool compareMore(
const char* a,
const char* b) {
504 return compareString(a, b) > 0;
507 bool compareMore(
const char* a,
const String& b) {
508 return compareString(a, b) > 0;
511 bool compareMore(
const char* a,
const __FlashStringHelper* b) {
512 return compareString(a, b) > 0;
515 bool compareMore(
const __FlashStringHelper* a,
const char* b) {
516 return compareString(a, b) > 0;
519 bool compareMore(
const __FlashStringHelper* a,
const __FlashStringHelper* b) {
520 return compareString(a, b) > 0;
523 bool compareMore(
const __FlashStringHelper* a,
const String& b) {
524 return compareString(a, b) > 0;
527 bool compareMore(
const String& a,
const char* b) {
528 return compareString(a, b) > 0;
531 bool compareMore(
const String& a,
const String& b) {
532 return compareString(a, b) > 0;
535 bool compareMore(
const String& a,
const __FlashStringHelper* b) {
536 return compareString(a, b) > 0;
543 bool compareLessOrEqual(
bool a,
bool b) {
547 bool compareLessOrEqual(
char a,
char b) {
551 bool compareLessOrEqual(
int a,
int b) {
555 bool compareLessOrEqual(
unsigned int a,
unsigned int b) {
559 bool compareLessOrEqual(
long a,
long b) {
563 bool compareLessOrEqual(
unsigned long a,
unsigned long b) {
567 bool compareLessOrEqual(
long long a,
long long b) {
571 bool compareLessOrEqual(
unsigned long long a,
unsigned long long b) {
575 bool compareLessOrEqual(
double a,
double b) {
579 bool compareLessOrEqual(
const char* a,
const char* b) {
580 return compareString(a, b) <= 0;
583 bool compareLessOrEqual(
const char* a,
const String& b) {
584 return compareString(a, b) <= 0;
587 bool compareLessOrEqual(
const char* a,
const __FlashStringHelper* b) {
588 return compareString(a, b) <= 0;
591 bool compareLessOrEqual(
const __FlashStringHelper* a,
const char* b) {
592 return compareString(a, b) <= 0;
595 bool compareLessOrEqual(
596 const __FlashStringHelper* a,
const __FlashStringHelper* b) {
597 return compareString(a, b) <= 0;
600 bool compareLessOrEqual(
const __FlashStringHelper* a,
const String& b) {
601 return compareString(a, b) <= 0;
604 bool compareLessOrEqual(
const String& a,
const char* b) {
605 return compareString(a, b) <= 0;
608 bool compareLessOrEqual(
const String& a,
const String& b) {
609 return compareString(a, b) <= 0;
612 bool compareLessOrEqual(
const String& a,
const __FlashStringHelper* b) {
613 return compareString(a, b) <= 0;
620 bool compareMoreOrEqual(
bool a,
bool b) {
624 bool compareMoreOrEqual(
char a,
char b) {
628 bool compareMoreOrEqual(
int a,
int b) {
632 bool compareMoreOrEqual(
unsigned int a,
unsigned int b) {
636 bool compareMoreOrEqual(
long a,
long b) {
640 bool compareMoreOrEqual(
unsigned long a,
unsigned long b) {
644 bool compareMoreOrEqual(
long long a,
long long b) {
648 bool compareMoreOrEqual(
unsigned long long a,
unsigned long long b) {
652 bool compareMoreOrEqual(
double a,
double b) {
656 bool compareMoreOrEqual(
const char* a,
const char* b) {
657 return compareString(a, b) >= 0;
660 bool compareMoreOrEqual(
const char* a,
const String& b) {
661 return compareString(a, b) >= 0;
664 bool compareMoreOrEqual(
const char* a,
const __FlashStringHelper* b) {
665 return compareString(a, b) >= 0;
668 bool compareMoreOrEqual(
const __FlashStringHelper* a,
const char* b) {
669 return compareString(a, b) >= 0;
672 bool compareMoreOrEqual(
673 const __FlashStringHelper* a,
const __FlashStringHelper* b) {
674 return compareString(a, b) >= 0;
677 bool compareMoreOrEqual(
const __FlashStringHelper* a,
const String& b) {
678 return compareString(a, b) >= 0;
681 bool compareMoreOrEqual(
const String& a,
const char* b) {
682 return compareString(a, b) >= 0;
685 bool compareMoreOrEqual(
const String& a,
const String& b) {
686 return compareString(a, b) >= 0;
689 bool compareMoreOrEqual(
const String& a,
const __FlashStringHelper* b) {
690 return compareString(a, b) >= 0;
697 bool compareNotEqual(
bool a,
bool b) {
701 bool compareNotEqual(
char a,
char b) {
705 bool compareNotEqual(
int a,
int b) {
709 bool compareNotEqual(
unsigned int a,
unsigned int b) {
713 bool compareNotEqual(
long a,
long b) {
717 bool compareNotEqual(
unsigned long a,
unsigned long b) {
721 bool compareNotEqual(
long long a,
long long b) {
725 bool compareNotEqual(
unsigned long long a,
unsigned long long b) {
729 bool compareNotEqual(
double a,
double b) {
733 bool compareNotEqual(
const char* a,
const char* b) {
734 return compareString(a, b) != 0;
737 bool compareNotEqual(
const char* a,
const String& b) {
738 return compareString(a, b) != 0;
741 bool compareNotEqual(
const char* a,
const __FlashStringHelper* b) {
742 return compareString(a, b) != 0;
745 bool compareNotEqual(
const __FlashStringHelper* a,
const char* b) {
746 return compareString(a, b) != 0;
749 bool compareNotEqual(
750 const __FlashStringHelper* a,
const __FlashStringHelper* b) {
751 return compareString(a, b) != 0;
754 bool compareNotEqual(
const __FlashStringHelper* a,
const String& b) {
755 return compareString(a, b) != 0;
758 bool compareNotEqual(
const String& a,
const char* b) {
759 return compareString(a, b) != 0;
762 bool compareNotEqual(
const String& a,
const String& b) {
763 return compareString(a, b) != 0;
766 bool compareNotEqual(
const String& a,
const __FlashStringHelper* b) {
767 return compareString(a, b) != 0;
774 bool compareStringCaseEqual(
const char* a,
const char* b) {
775 return compareStringCase(a, b) == 0;
778 bool compareStringCaseEqual(
const char* a,
const String& b) {
779 return compareStringCase(a, b) == 0;
782 bool compareStringCaseEqual(
const char* a,
const __FlashStringHelper* b) {
783 return compareStringCase(a, b) == 0;
786 bool compareStringCaseEqual(
const __FlashStringHelper* a,
const char* b) {
787 return compareStringCase(a, b) == 0;
790 bool compareStringCaseEqual(
const __FlashStringHelper* a,
791 const __FlashStringHelper* b) {
792 return compareStringCase(a, b) == 0;
795 bool compareStringCaseEqual(
const __FlashStringHelper* a,
const String& b) {
796 return compareStringCase(a, b) == 0;
799 bool compareStringCaseEqual(
const String& a,
const char* b) {
800 return compareStringCase(a, b) == 0;
803 bool compareStringCaseEqual(
const String& a,
const String& b) {
804 return compareStringCase(a, b) == 0;
807 bool compareStringCaseEqual(
const String& a,
const __FlashStringHelper* b) {
808 return compareStringCase(a, b) == 0;
815 bool compareStringCaseNotEqual(
const char* a,
const char* b) {
816 return compareStringCase(a, b) != 0;
819 bool compareStringCaseNotEqual(
const char* a,
const String& b) {
820 return compareStringCase(a, b) != 0;
823 bool compareStringCaseNotEqual(
const char* a,
const __FlashStringHelper* b) {
824 return compareStringCase(a, b) != 0;
827 bool compareStringCaseNotEqual(
const __FlashStringHelper* a,
const char* b) {
828 return compareStringCase(a, b) != 0;
831 bool compareStringCaseNotEqual(
const __FlashStringHelper* a,
832 const __FlashStringHelper* b) {
833 return compareStringCase(a, b) != 0;
836 bool compareStringCaseNotEqual(
const __FlashStringHelper* a,
const String& b) {
837 return compareStringCase(a, b) != 0;
840 bool compareStringCaseNotEqual(
const String& a,
const char* b) {
841 return compareStringCase(a, b) != 0;
844 bool compareStringCaseNotEqual(
const String& a,
const String& b) {
845 return compareStringCase(a, b) != 0;
848 bool compareStringCaseNotEqual(
const String& a,
const __FlashStringHelper* b) {
849 return compareStringCase(a, b) != 0;
856 bool compareNear(
int a,
int b,
int error) {
857 return abs(a - b) <= error;
860 bool compareNear(
unsigned int a,
unsigned int b,
unsigned int error) {
861 return abs(a - b) <= error;
864 bool compareNear(
long a,
long b,
long error) {
865 return abs(a - b) <= error;
868 bool compareNear(
unsigned long a,
unsigned long b,
unsigned long error) {
869 return abs(a - b) <= error;
872 bool compareNear(
double a,
double b,
double error) {
873 return fabs(a - b) <= error;
876 bool compareNotNear(
int a,
int b,
int error) {
877 return !compareNear(a, b, error);
880 bool compareNotNear(
unsigned int a,
unsigned int b,
unsigned int error) {
881 return !compareNear(a, b, error);
884 bool compareNotNear(
long a,
long b,
long error) {
885 return !compareNear(a, b, error);
888 bool compareNotNear(
unsigned long a,
unsigned long b,
unsigned long error) {
889 return !compareNear(a, b, error);
892 bool compareNotNear(
double a,
double b,
double error) {
893 return !compareNear(a, b, error);
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...