]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - opencl/llvm.git/commitdiff
ADT/StringRef: Add ::lower() and ::upper() methods.
authorDaniel Dunbar <daniel@zuster.org>
Sun, 6 Nov 2011 18:04:43 +0000 (18:04 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Sun, 6 Nov 2011 18:04:43 +0000 (18:04 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143880 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ADT/StringRef.h
lib/Support/StringRef.cpp

index 8396921744ad66105523ee1f911facce39807cd5..6c338068962865ed654e71b3b7fad7ea4b0704c1 100644 (file)
@@ -326,6 +326,16 @@ namespace llvm {
     /// string is well-formed in the given radix.
     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
     /// @{
index 576b95f6a4e3c339131b15ca9b65d5366ae00409..c78b6d0afc83b85de9d795b231ce1aa7020c47de 100644 (file)
@@ -25,6 +25,12 @@ static char ascii_tolower(char 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) {
   return x >= '0' && x <= '9';
 }
@@ -131,6 +137,26 @@ unsigned StringRef::edit_distance(llvm::StringRef Other,
   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
 //===----------------------------------------------------------------------===//