ADT/StringRef: Add ::lower() and ::upper() methods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143880 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Daniel Dunbar 2011-11-06 18:04:43 +00:00
parent cc4bcba0b9
commit 589fbb1770
2 changed files with 36 additions and 0 deletions

View File

@ -326,6 +326,16 @@ namespace llvm {
/// string is well-formed in the given radix. /// string is well-formed in the given radix.
bool getAsInteger(unsigned Radix, APInt &Result) const; bool getAsInteger(unsigned Radix, APInt &Result) const;
/// @}
/// @name String Operations
/// @{
// lower - Convert the given ASCII string to lowercase.
std::string lower() const;
/// upper - Convert the given ASCII string to uppercase.
std::string upper() const;
/// @} /// @}
/// @name Substring Operations /// @name Substring Operations
/// @{ /// @{

View File

@ -25,6 +25,12 @@ static char ascii_tolower(char x) {
return x; return x;
} }
static char ascii_toupper(char x) {
if (x >= 'a' && x <= 'z')
return x - 'a' + 'A';
return x;
}
static bool ascii_isdigit(char x) { static bool ascii_isdigit(char x) {
return x >= '0' && x <= '9'; return x >= '0' && x <= '9';
} }
@ -131,6 +137,26 @@ unsigned StringRef::edit_distance(llvm::StringRef Other,
return Result; return Result;
} }
//===----------------------------------------------------------------------===//
// String Operations
//===----------------------------------------------------------------------===//
std::string StringRef::lower() const {
std::string Result(size(), char());
for (size_type i = 0, e = size(); i != e; ++i) {
Result[i] = ascii_tolower(Data[i]);
}
return Result;
}
std::string StringRef::upper() const {
std::string Result(size(), char());
for (size_type i = 0, e = size(); i != e; ++i) {
Result[i] = ascii_tolower(Data[i]);
}
return Result;
}
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
// String Searching // String Searching
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//