in Cyborg/VectorDrawableParser.swift [866:885]
func number(from stream: XMLString, at index: Int32) -> ParseResult<CGFloat> {
let substring = stream[index..<stream.count]
return substring
.withSignedIntegers { buffer in
var next: UnsafeMutablePointer<Int8>? = UnsafeMutablePointer(mutating: buffer)
let result = strtod(buffer, &next)
if result == 0.0,
next == buffer {
return .error(.failedToParseNumber(.init(index: index, stream: stream)))
} else if var final = next {
if final.pointee == .comma {
final = final.advanced(by: 1)
}
let index = index + Int32(buffer.distance(to: final))
return .ok(CGFloat(result), index)
} else {
return .error(.failedToParseNumber(.init(index: index, stream: stream)))
}
}
}