]> granicus.if.org Git - clang/commitdiff
tidy up code, make the common case (1-byte strings) come first
authorChris Lattner <sabre@nondot.org>
Tue, 7 Feb 2012 00:39:21 +0000 (00:39 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 7 Feb 2012 00:39:21 +0000 (00:39 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149942 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/Expr.h

index 33f95afd32a8c22e80efc5c55fcd1423ae58b5d0..f78138c16d77b6f5ab719a42869e1357211a6f0e 100644 (file)
@@ -1369,31 +1369,25 @@ public:
   /// Allow clients that need the byte representation, such as ASTWriterStmt
   /// ::VisitStringLiteral(), access.
   StringRef getBytes() const {
-    // FIXME: StringRef may not be the right type to use as a result for this...
-    assert((CharByteWidth==1 || CharByteWidth==2 || CharByteWidth==4)
-           && "unsupported CharByteWidth");
-    if (CharByteWidth==4) {
+    // FIXME: StringRef may not be the right type to use as a result for this.
+    if (CharByteWidth == 1)
+      return StringRef(StrData.asChar, getByteLength());
+    if (CharByteWidth == 4)
       return StringRef(reinterpret_cast<const char*>(StrData.asUInt32),
                        getByteLength());
-    } else if (CharByteWidth==2) {
-      return StringRef(reinterpret_cast<const char*>(StrData.asUInt16),
-                       getByteLength());
-    } else {
-      return StringRef(StrData.asChar, getByteLength());
-    }
+    assert(CharByteWidth == 2 && "unsupported CharByteWidth");
+    return StringRef(reinterpret_cast<const char*>(StrData.asUInt16),
+                     getByteLength());
   }
 
   uint32_t getCodeUnit(size_t i) const {
-    assert(i<Length && "out of bounds access");
-    assert((CharByteWidth==1 || CharByteWidth==2 || CharByteWidth==4)
-           && "unsupported CharByteWidth");
-    if (CharByteWidth==4) {
-      return StrData.asUInt32[i];
-    } else if (CharByteWidth==2) {
-      return StrData.asUInt16[i];
-    } else {
+    assert(i < Length && "out of bounds access");
+    if (CharByteWidth == 1)
       return static_cast<unsigned char>(StrData.asChar[i]);
-    }
+    if (CharByteWidth == 4)
+      return StrData.asUInt32[i];
+    assert(CharByteWidth == 2 && "unsupported CharByteWidth");
+    return StrData.asUInt16[i];
   }
 
   unsigned getByteLength() const { return CharByteWidth*Length; }