mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Update references to UTF* types and functions to match llvm r282822.
The content of LLVM's "Support/ConvertUTF.h" header was moved into the "llvm" namespace. Update this code to match.
This commit is contained in:
@@ -491,17 +491,17 @@ bool TypeTransformContext::isPrintingSynthesizedExtension() const {
|
||||
std::string ASTPrinter::sanitizeUtf8(StringRef Text) {
|
||||
llvm::SmallString<256> Builder;
|
||||
Builder.reserve(Text.size());
|
||||
const UTF8* Data = reinterpret_cast<const UTF8*>(Text.begin());
|
||||
const UTF8* End = reinterpret_cast<const UTF8*>(Text.end());
|
||||
const llvm::UTF8* Data = reinterpret_cast<const llvm::UTF8*>(Text.begin());
|
||||
const llvm::UTF8* End = reinterpret_cast<const llvm::UTF8*>(Text.end());
|
||||
StringRef Replacement = "\ufffd";
|
||||
while (Data < End) {
|
||||
auto Step = getNumBytesForUTF8(*Data);
|
||||
auto Step = llvm::getNumBytesForUTF8(*Data);
|
||||
if (Data + Step > End) {
|
||||
Builder.append(Replacement);
|
||||
break;
|
||||
}
|
||||
|
||||
if (isLegalUTF8Sequence(Data, Data + Step)) {
|
||||
if (llvm::isLegalUTF8Sequence(Data, Data + Step)) {
|
||||
Builder.append(Data, Data + Step);
|
||||
} else {
|
||||
|
||||
|
||||
@@ -55,12 +55,12 @@ raw_ostream &llvm::operator<<(raw_ostream &OS, swift::ObjCSelector S) {
|
||||
|
||||
bool Identifier::isOperatorSlow() const {
|
||||
StringRef data = str();
|
||||
auto *s = reinterpret_cast<UTF8 const *>(data.begin()),
|
||||
*end = reinterpret_cast<UTF8 const *>(data.end());
|
||||
UTF32 codePoint;
|
||||
ConversionResult res = llvm::convertUTF8Sequence(&s, end, &codePoint,
|
||||
strictConversion);
|
||||
assert(res == conversionOK && "invalid UTF-8 in identifier?!");
|
||||
auto *s = reinterpret_cast<llvm::UTF8 const *>(data.begin()),
|
||||
*end = reinterpret_cast<llvm::UTF8 const *>(data.end());
|
||||
llvm::UTF32 codePoint;
|
||||
llvm::ConversionResult res =
|
||||
llvm::convertUTF8Sequence(&s, end, &codePoint, llvm::strictConversion);
|
||||
assert(res == llvm::conversionOK && "invalid UTF-8 in identifier?!");
|
||||
(void)res;
|
||||
return !empty() && isOperatorStartCodePoint(codePoint);
|
||||
}
|
||||
|
||||
@@ -22,14 +22,15 @@ StringRef swift::unicode::extractFirstExtendedGraphemeCluster(StringRef S) {
|
||||
if (S.empty())
|
||||
return StringRef();
|
||||
|
||||
const UTF8 *SourceStart = reinterpret_cast<const UTF8 *>(S.data());
|
||||
const llvm::UTF8 *SourceStart =
|
||||
reinterpret_cast<const llvm::UTF8 *>(S.data());
|
||||
|
||||
const UTF8 *SourceNext = SourceStart;
|
||||
UTF32 C[2];
|
||||
UTF32 *TargetStart = C;
|
||||
const llvm::UTF8 *SourceNext = SourceStart;
|
||||
llvm::UTF32 C[2];
|
||||
llvm::UTF32 *TargetStart = C;
|
||||
|
||||
ConvertUTF8toUTF32(&SourceNext, SourceStart + S.size(), &TargetStart, C + 1,
|
||||
lenientConversion);
|
||||
llvm::lenientConversion);
|
||||
if (TargetStart == C) {
|
||||
// The source string contains an ill-formed subsequence at the end.
|
||||
return S;
|
||||
@@ -42,7 +43,7 @@ StringRef swift::unicode::extractFirstExtendedGraphemeCluster(StringRef S) {
|
||||
|
||||
size_t C1Offset = SourceNext - SourceStart;
|
||||
ConvertUTF8toUTF32(&SourceNext, SourceStart + S.size(), &TargetStart, C + 2,
|
||||
lenientConversion);
|
||||
llvm::lenientConversion);
|
||||
|
||||
if (TargetStart == C + 1) {
|
||||
// End of source string or the source string contains an ill-formed
|
||||
@@ -65,14 +66,15 @@ static bool extractFirstUnicodeScalarImpl(StringRef S, unsigned &Scalar) {
|
||||
if (S.empty())
|
||||
return false;
|
||||
|
||||
const UTF8 *SourceStart = reinterpret_cast<const UTF8 *>(S.data());
|
||||
const llvm::UTF8 *SourceStart =
|
||||
reinterpret_cast<const llvm::UTF8 *>(S.data());
|
||||
|
||||
const UTF8 *SourceNext = SourceStart;
|
||||
UTF32 C;
|
||||
UTF32 *TargetStart = &C;
|
||||
const llvm::UTF8 *SourceNext = SourceStart;
|
||||
llvm::UTF32 C;
|
||||
llvm::UTF32 *TargetStart = &C;
|
||||
|
||||
ConvertUTF8toUTF32(&SourceNext, SourceStart + S.size(), &TargetStart,
|
||||
TargetStart + 1, lenientConversion);
|
||||
TargetStart + 1, llvm::lenientConversion);
|
||||
if (TargetStart == &C) {
|
||||
// The source string contains an ill-formed subsequence at the end.
|
||||
return false;
|
||||
@@ -98,13 +100,14 @@ unsigned swift::unicode::extractFirstUnicodeScalar(StringRef S) {
|
||||
uint64_t swift::unicode::getUTF16Length(StringRef Str) {
|
||||
uint64_t Length;
|
||||
// Transcode the string to UTF-16 to get its length.
|
||||
SmallVector<UTF16, 128> buffer(Str.size() + 1); // +1 for ending nulls.
|
||||
const UTF8 *fromPtr = (const UTF8 *) Str.data();
|
||||
UTF16 *toPtr = &buffer[0];
|
||||
ConversionResult Result = ConvertUTF8toUTF16(&fromPtr, fromPtr + Str.size(),
|
||||
SmallVector<llvm::UTF16, 128> buffer(Str.size() + 1); // +1 for ending nulls.
|
||||
const llvm::UTF8 *fromPtr = (const llvm::UTF8 *) Str.data();
|
||||
llvm::UTF16 *toPtr = &buffer[0];
|
||||
llvm::ConversionResult Result =
|
||||
ConvertUTF8toUTF16(&fromPtr, fromPtr + Str.size(),
|
||||
&toPtr, toPtr + Str.size(),
|
||||
strictConversion);
|
||||
assert(Result == conversionOK &&
|
||||
llvm::strictConversion);
|
||||
assert(Result == llvm::conversionOK &&
|
||||
"UTF-8 encoded string cannot be converted into UTF-16 encoding");
|
||||
(void)Result;
|
||||
|
||||
|
||||
@@ -2965,19 +2965,19 @@ llvm::Constant *IRGenModule::getAddrOfGlobalUTF16String(StringRef utf8) {
|
||||
if (entry) return entry;
|
||||
|
||||
// If not, first transcode it to UTF16.
|
||||
SmallVector<UTF16, 128> buffer(utf8.size() + 1); // +1 for ending nulls.
|
||||
const UTF8 *fromPtr = (const UTF8 *) utf8.data();
|
||||
UTF16 *toPtr = &buffer[0];
|
||||
SmallVector<llvm::UTF16, 128> buffer(utf8.size() + 1); // +1 for ending nulls.
|
||||
const llvm::UTF8 *fromPtr = (const llvm::UTF8 *) utf8.data();
|
||||
llvm::UTF16 *toPtr = &buffer[0];
|
||||
(void) ConvertUTF8toUTF16(&fromPtr, fromPtr + utf8.size(),
|
||||
&toPtr, toPtr + utf8.size(),
|
||||
strictConversion);
|
||||
llvm::strictConversion);
|
||||
|
||||
// The length of the transcoded string in UTF-8 code points.
|
||||
size_t utf16Length = toPtr - &buffer[0];
|
||||
|
||||
// Null-terminate the UTF-16 string.
|
||||
*toPtr = 0;
|
||||
ArrayRef<UTF16> utf16(&buffer[0], utf16Length + 1);
|
||||
ArrayRef<llvm::UTF16> utf16(&buffer[0], utf16Length + 1);
|
||||
|
||||
auto init = llvm::ConstantDataArray::get(LLVMContext, utf16);
|
||||
auto global = new llvm::GlobalVariable(Module, init->getType(), true,
|
||||
|
||||
@@ -76,27 +76,28 @@ class ConvertForWcharSize;
|
||||
template<>
|
||||
class ConvertForWcharSize<2> {
|
||||
public:
|
||||
static ConversionResult ConvertFromUTF8(const char** sourceStart,
|
||||
static llvm::ConversionResult ConvertFromUTF8(const char** sourceStart,
|
||||
const char* sourceEnd,
|
||||
wchar_t** targetStart,
|
||||
wchar_t* targetEnd,
|
||||
ConversionFlags flags) {
|
||||
return ConvertUTF8toUTF16(reinterpret_cast<const UTF8**>(sourceStart),
|
||||
reinterpret_cast<const UTF8*>(sourceEnd),
|
||||
reinterpret_cast<UTF16**>(targetStart),
|
||||
reinterpret_cast<UTF16*>(targetEnd),
|
||||
llvm::ConversionFlags flags) {
|
||||
return ConvertUTF8toUTF16(reinterpret_cast<const llvm::UTF8**>(sourceStart),
|
||||
reinterpret_cast<const llvm::UTF8*>(sourceEnd),
|
||||
reinterpret_cast<llvm::UTF16**>(targetStart),
|
||||
reinterpret_cast<llvm::UTF16*>(targetEnd),
|
||||
flags);
|
||||
}
|
||||
|
||||
static ConversionResult ConvertToUTF8(const wchar_t** sourceStart,
|
||||
static llvm::ConversionResult ConvertToUTF8(const wchar_t** sourceStart,
|
||||
const wchar_t* sourceEnd,
|
||||
char** targetStart,
|
||||
char* targetEnd,
|
||||
ConversionFlags flags) {
|
||||
return ConvertUTF16toUTF8(reinterpret_cast<const UTF16**>(sourceStart),
|
||||
reinterpret_cast<const UTF16*>(sourceEnd),
|
||||
reinterpret_cast<UTF8**>(targetStart),
|
||||
reinterpret_cast<UTF8*>(targetEnd),
|
||||
llvm::ConversionFlags flags) {
|
||||
return ConvertUTF16toUTF8(
|
||||
reinterpret_cast<const llvm::UTF16**>(sourceStart),
|
||||
reinterpret_cast<const llvm::UTF16*>(sourceEnd),
|
||||
reinterpret_cast<llvm::UTF8**>(targetStart),
|
||||
reinterpret_cast<llvm::UTF8*>(targetEnd),
|
||||
flags);
|
||||
}
|
||||
};
|
||||
@@ -104,27 +105,28 @@ public:
|
||||
template<>
|
||||
class ConvertForWcharSize<4> {
|
||||
public:
|
||||
static ConversionResult ConvertFromUTF8(const char** sourceStart,
|
||||
static llvm::ConversionResult ConvertFromUTF8(const char** sourceStart,
|
||||
const char* sourceEnd,
|
||||
wchar_t** targetStart,
|
||||
wchar_t* targetEnd,
|
||||
ConversionFlags flags) {
|
||||
return ConvertUTF8toUTF32(reinterpret_cast<const UTF8**>(sourceStart),
|
||||
reinterpret_cast<const UTF8*>(sourceEnd),
|
||||
reinterpret_cast<UTF32**>(targetStart),
|
||||
reinterpret_cast<UTF32*>(targetEnd),
|
||||
llvm::ConversionFlags flags) {
|
||||
return ConvertUTF8toUTF32(reinterpret_cast<const llvm::UTF8**>(sourceStart),
|
||||
reinterpret_cast<const llvm::UTF8*>(sourceEnd),
|
||||
reinterpret_cast<llvm::UTF32**>(targetStart),
|
||||
reinterpret_cast<llvm::UTF32*>(targetEnd),
|
||||
flags);
|
||||
}
|
||||
|
||||
static ConversionResult ConvertToUTF8(const wchar_t** sourceStart,
|
||||
static llvm::ConversionResult ConvertToUTF8(const wchar_t** sourceStart,
|
||||
const wchar_t* sourceEnd,
|
||||
char** targetStart,
|
||||
char* targetEnd,
|
||||
ConversionFlags flags) {
|
||||
return ConvertUTF32toUTF8(reinterpret_cast<const UTF32**>(sourceStart),
|
||||
reinterpret_cast<const UTF32*>(sourceEnd),
|
||||
reinterpret_cast<UTF8**>(targetStart),
|
||||
reinterpret_cast<UTF8*>(targetEnd),
|
||||
llvm::ConversionFlags flags) {
|
||||
return ConvertUTF32toUTF8(
|
||||
reinterpret_cast<const llvm::UTF32**>(sourceStart),
|
||||
reinterpret_cast<const llvm::UTF32*>(sourceEnd),
|
||||
reinterpret_cast<llvm::UTF8**>(targetStart),
|
||||
reinterpret_cast<llvm::UTF8*>(targetEnd),
|
||||
flags);
|
||||
}
|
||||
};
|
||||
@@ -140,8 +142,8 @@ static void convertFromUTF8(llvm::StringRef utf8,
|
||||
wchar_t *wide_begin = out.end();
|
||||
auto res = Convert::ConvertFromUTF8(&utf8_begin, utf8.end(),
|
||||
&wide_begin, out.data() + reserve,
|
||||
lenientConversion);
|
||||
assert(res == conversionOK && "utf8-to-wide conversion failed!");
|
||||
llvm::lenientConversion);
|
||||
assert(res == llvm::conversionOK && "utf8-to-wide conversion failed!");
|
||||
(void)res;
|
||||
out.set_size(wide_begin - out.begin());
|
||||
}
|
||||
@@ -154,8 +156,8 @@ static void convertToUTF8(llvm::ArrayRef<wchar_t> wide,
|
||||
char *utf8_begin = out.end();
|
||||
auto res = Convert::ConvertToUTF8(&wide_begin, wide.end(),
|
||||
&utf8_begin, out.data() + reserve,
|
||||
lenientConversion);
|
||||
assert(res == conversionOK && "wide-to-utf8 conversion failed!");
|
||||
llvm::lenientConversion);
|
||||
assert(res == llvm::conversionOK && "wide-to-utf8 conversion failed!");
|
||||
(void)res;
|
||||
out.set_size(utf8_begin - out.begin());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user