diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2009-11-12 20:36:59 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2009-11-12 20:36:59 +0000 |
commit | 68e4945c03eeeb04773587f3b265b0888bb22549 (patch) | |
tree | 7eaa867bb182410e7d954fc10f0e879335201d4a /llvm/lib/Support/StringRef.cpp | |
parent | 81eb42d8caf4aacfc126504953e73f7b646c7b67 (diff) | |
download | bcm5719-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.cpp | 20 |
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 //===----------------------------------------------------------------------===// |