Add version of StringsEqualNoCase that takes two null-terminated C-strings and compar...
authorTed Kremenek <kremenek@apple.com>
Sat, 21 Feb 2009 18:25:30 +0000 (18:25 +0000)
committerTed Kremenek <kremenek@apple.com>
Sat, 21 Feb 2009 18:25:30 +0000 (18:25 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65236 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ADT/StringExtras.h

index 75b54f5b78c90a3a8d7fda9f2caba259c72f940f..e40e409802d25c1ab4b213227987c417fe7371db 100644 (file)
@@ -159,6 +159,25 @@ static inline bool StringsEqualNoCase(const std::string &LHS,
   }
   return RHS[LHS.size()] == 0;  // Not too long?
 }
+  
+/// StringsEqualNoCase - Return true if the two null-terminated C strings are
+///  equal, ignoring
+
+static inline bool StringsEqualNoCase(const char *LHS, const char *RHS,
+                                      unsigned len) {
+
+  for (unsigned i = 0; i < len; ++i) {
+    if (tolower(LHS[i]) != tolower(RHS[i]))
+      return false;
+    
+    // If RHS[i] == 0 then LHS[i] == 0 or otherwise we would have returned
+    // at the previous branch as tolower('\0') == '\0'.
+    if (RHS[i] == 0)
+      return true;
+  }
+  
+  return true;
+}
 
 /// CStrInCStrNoCase - Portable version of strcasestr.  Locates the first
 ///  occurance of c-string 's2' in string 's1', ignoring case.  Returns