summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support/StringRef.cpp
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2009-11-12 20:36:59 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2009-11-12 20:36:59 +0000
commit68e4945c03eeeb04773587f3b265b0888bb22549 (patch)
tree7eaa867bb182410e7d954fc10f0e879335201d4a /llvm/lib/Support/StringRef.cpp
parent81eb42d8caf4aacfc126504953e73f7b646c7b67 (diff)
downloadbcm5719-llvm-68e4945c03eeeb04773587f3b265b0888bb22549.tar.gz
bcm5719-llvm-68e4945c03eeeb04773587f3b265b0888bb22549.zip
Add compare_lower and equals_lower methods to StringRef. Switch all users of
StringsEqualNoCase (from StringExtras.h) to it. llvm-svn: 87020
Diffstat (limited to 'llvm/lib/Support/StringRef.cpp')
-rw-r--r--llvm/lib/Support/StringRef.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/llvm/lib/Support/StringRef.cpp b/llvm/lib/Support/StringRef.cpp
index 6905edf19e1..51e11004f32 100644
--- a/llvm/lib/Support/StringRef.cpp
+++ b/llvm/lib/Support/StringRef.cpp
@@ -15,6 +15,26 @@ using namespace llvm;
const size_t StringRef::npos;
#endif
+static char ascii_tolower(char x) {
+ if (x >= 'A' && x <= 'Z')
+ return x - 'A' + 'a';
+ return x;
+}
+
+/// compare_lower - Compare strings, ignoring case.
+int StringRef::compare_lower(StringRef RHS) const {
+ for (size_t I = 0, E = std::min(Length, RHS.Length); I != E; ++I) {
+ char LHC = ascii_tolower(Data[I]);
+ char RHC = ascii_tolower(RHS.Data[I]);
+ if (LHC != RHC)
+ return LHC < RHC ? -1 : 1;
+ }
+
+ if (Length == RHS.Length)
+ return 0;
+ return Length < RHS.Length ? -1 : 1;
+}
+
//===----------------------------------------------------------------------===//
// String Searching
//===----------------------------------------------------------------------===//
OpenPOWER on IntegriCloud