Skip to content

Commit c780997

Browse files
author
David Freitag
committed
Added __FlashStringhelper* comparison operators to String object
1 parent e9e257b commit c780997

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

hardware/arduino/cores/arduino/WString.cpp

+13
Original file line numberDiff line numberDiff line change
@@ -453,6 +453,19 @@ unsigned char String::equals(const char *cstr) const
453453
return strcmp(buffer, cstr) == 0;
454454
}
455455

456+
unsigned char String::equals(const __FlashStringHelper *fstr) const
457+
{
458+
const char PROGMEM *p = (const char PROGMEM *)fstr;
459+
460+
for (int i = 0; i < len; i++)
461+
{
462+
if (pgm_read_byte(p) == 0) return 0;
463+
if (buffer[i] != (char)pgm_read_byte(p++)) return 0;
464+
}
465+
466+
return 1;
467+
}
468+
456469
unsigned char String::operator<(const String &rhs) const
457470
{
458471
return compareTo(rhs) < 0;

hardware/arduino/cores/arduino/WString.h

+3
Original file line numberDiff line numberDiff line change
@@ -139,10 +139,13 @@ class String
139139
int compareTo(const String &s) const;
140140
unsigned char equals(const String &s) const;
141141
unsigned char equals(const char *cstr) const;
142+
unsigned char equals(const __FlashStringHelper *fstr) const;
142143
unsigned char operator == (const String &rhs) const {return equals(rhs);}
143144
unsigned char operator == (const char *cstr) const {return equals(cstr);}
145+
unsigned char operator == (const __FlashStringHelper *fstr) const {return equals(fstr);}
144146
unsigned char operator != (const String &rhs) const {return !equals(rhs);}
145147
unsigned char operator != (const char *cstr) const {return !equals(cstr);}
148+
unsigned char operator != (const __FlashStringHelper *fstr) const {return !equals(fstr);}
146149
unsigned char operator < (const String &rhs) const;
147150
unsigned char operator > (const String &rhs) const;
148151
unsigned char operator <= (const String &rhs) const;

0 commit comments

Comments
 (0)