stdlib/Unicode: allow transcode() to operate on mutable value-typed

sinks

Swift SVN r22302
This commit is contained in:
Dmitri Hrybenko
2014-09-26 17:28:00 +00:00
parent 92dc4ee237
commit a04ee3a463
8 changed files with 123 additions and 106 deletions

View File

@@ -97,21 +97,23 @@ public struct _StringBuffer {
if isAscii {
var p = UnsafeMutablePointer<UTF8.CodeUnit>(result.start)
let hadError = transcode(encoding, UTF32.self, input.generate(),
SinkOf {
(p++).memory = UTF8.CodeUnit($0)
},
stopOnError: !repairIllFormedSequences)
var sink = SinkOf<UTF32.CodeUnit> {
(p++).memory = UTF8.CodeUnit($0)
}
let hadError = transcode(
encoding, UTF32.self, input.generate(), &sink,
stopOnError: !repairIllFormedSequences)
_sanityCheck(!hadError, "string can not be ASCII if there were decoding errors")
return (result, hadError)
}
else {
var p = result._storage.baseAddress
let hadError = transcode(encoding, UTF16.self, input.generate(),
SinkOf {
(p++).memory = $0
},
stopOnError: !repairIllFormedSequences)
var sink = SinkOf<UTF16.CodeUnit> {
(p++).memory = $0
}
let hadError = transcode(
encoding, UTF16.self, input.generate(), &sink,
stopOnError: !repairIllFormedSequences)
return (result, hadError)
}
} else {