|
12 | 12 | // |
13 | 13 | //===----------------------------------------------------------------------===// |
14 | 14 |
|
15 | | -fileprivate let asciiSpace = UInt8(ascii: " ") |
16 | | -fileprivate let asciiTab = UInt8(ascii: "\t") |
17 | | -fileprivate let asciiOpenParenthesis = UInt8(ascii: "(") |
18 | | -fileprivate let asciiCloseParenthesis = UInt8(ascii: ")") |
19 | | -fileprivate let asciiDash = UInt8(ascii: "-") |
20 | | -fileprivate let asciiUnderscore = UInt8(ascii: "_") |
21 | | -fileprivate let asciiZero = UInt8(ascii: "0") |
22 | | -fileprivate let asciiOne = UInt8(ascii: "1") |
23 | | -fileprivate let asciiNine = UInt8(ascii: "9") |
24 | | -fileprivate let asciiDigits = asciiZero...asciiNine |
25 | | -fileprivate let asciiDquote = UInt8(ascii: "\"") |
26 | | -fileprivate let asciiColon = UInt8(ascii: ":") |
27 | | -fileprivate let asciiSemicolon = UInt8(ascii: ";") |
28 | | -fileprivate let asciiBackslash = UInt8(ascii: "\\") |
29 | | -fileprivate let asciiQuestionMark = UInt8(ascii: "?") |
30 | | -fileprivate let asciiExclamationMark = UInt8(ascii: "!") |
31 | | -fileprivate let asciiOctothorpe = UInt8(ascii: "#") |
32 | | -fileprivate let asciiDollar = UInt8(ascii: "$") |
33 | | -fileprivate let asciiPercent = UInt8(ascii: "%") |
34 | | -fileprivate let asciiAmpersand = UInt8(ascii: "&") |
35 | | -fileprivate let asciiSquote = UInt8(ascii: "'") |
36 | | -fileprivate let asciiCaret = UInt8(ascii: "^") |
37 | | -fileprivate let asciiBacktick = UInt8(ascii: "`") |
38 | | -fileprivate let asciiPipe = UInt8(ascii: "|") |
39 | | -fileprivate let asciiTilde = UInt8(ascii: "~") |
40 | | -fileprivate let asciiAsterisk = UInt8(ascii: "*") |
41 | | -fileprivate let asciiEqual = UInt8(ascii: "=") |
42 | | -fileprivate let asciiPlus = UInt8(ascii: "+") |
43 | | -fileprivate let asciiSlash = UInt8(ascii: "/") |
44 | | -fileprivate let asciiPeriod = UInt8(ascii: ".") |
45 | | -fileprivate let asciiComma = UInt8(ascii: ",") |
46 | | -fileprivate let asciiCapitalA = UInt8(ascii: "A") |
47 | | -fileprivate let asciiCapitalZ = UInt8(ascii: "Z") |
48 | | -fileprivate let asciiLowerA = UInt8(ascii: "a") |
49 | | -fileprivate let asciiLowerZ = UInt8(ascii: "z") |
50 | | -fileprivate let asciiCapitals = asciiCapitalA...asciiCapitalZ |
51 | | -fileprivate let asciiLowercases = asciiLowerA...asciiLowerZ |
52 | | - |
53 | 15 | /// A FieldParser is the basic parsing object for structured header fields represented as lists. |
54 | 16 | public struct StructuredFieldParser<BaseData: RandomAccessCollection> where BaseData.Element == UInt8, BaseData.SubSequence: Hashable { |
55 | 17 | // Right now I'm on the fence about whether this should be generic. It's convenient, |
@@ -322,8 +284,9 @@ extension StructuredFieldParser { |
322 | 284 | } |
323 | 285 |
|
324 | 286 | // Same notes here as above |
325 | | - let baseFloat = Float64(String(decoding: integerBytes, as: UTF8.self))! |
326 | | - return .decimal(baseFloat * Float64(sign)) |
| 287 | + var decimal = PseudoDecimal(bytes: integerBytes) |
| 288 | + decimal.mantissa *= Int64(sign) |
| 289 | + return .decimal(decimal) |
327 | 290 | } |
328 | 291 | } |
329 | 292 |
|
|
0 commit comments