From aab14ccb791a798262642dbfcaad6fd3ee381873 Mon Sep 17 00:00:00 2001 From: Neil Date: Sat, 23 Mar 2019 08:49:33 +1100 Subject: Add Contains(char) to avoid casts in client code. Remove cast in AddString. --- lexlib/CharacterSet.h | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lexlib/CharacterSet.h b/lexlib/CharacterSet.h index 7c2a1fe48..358f6bed3 100644 --- a/lexlib/CharacterSet.h +++ b/lexlib/CharacterSet.h @@ -82,10 +82,9 @@ public: } void AddString(const char *setToAdd) { for (const char *cp=setToAdd; *cp; cp++) { - int val = static_cast(*cp); - assert(val >= 0); - assert(val < size); - bset[val] = true; + const unsigned char uch = *cp; + assert(uch < size); + bset[uch] = true; } } bool Contains(int val) const { @@ -93,6 +92,11 @@ public: if (val < 0) return false; return (val < size) ? bset[val] : valueAfter; } + bool Contains(char ch) const { + // Overload char as char may be signed + const unsigned char uch = ch; + return Contains(uch); + } }; // Functions for classifying characters -- cgit v1.2.3