forked from OSchip/llvm-project
tidy up code, make the common case (1-byte strings) come first
llvm-svn: 149942
This commit is contained in:
parent
76b292f5ba
commit
8573dc7e1f
|
@ -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; }
|
||||
|
|
Loading…
Reference in New Issue