func number()

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)))
            }
        }
}