refactor: Deal with Number instead of Float80

This commit is contained in:
Kyle Fuller
2016-12-07 19:54:29 +00:00
parent 2d507e7c11
commit aa7c36296b
2 changed files with 25 additions and 22 deletions

View File

@@ -202,7 +202,7 @@ class NumericExpression: Expression, InfixOperator, CustomStringConvertible {
return "" return ""
} }
func compare(lhs: Float80, rhs: Float80) -> Bool { func compare(lhs: Number, rhs: Number) -> Bool {
return false return false
} }
} }
@@ -213,7 +213,7 @@ class MoreThanExpression: NumericExpression {
return ">" return ">"
} }
override func compare(lhs: Float80, rhs: Float80) -> Bool { override func compare(lhs: Number, rhs: Number) -> Bool {
return lhs > rhs return lhs > rhs
} }
} }
@@ -224,7 +224,7 @@ class MoreThanEqualExpression: NumericExpression {
return ">=" return ">="
} }
override func compare(lhs: Float80, rhs: Float80) -> Bool { override func compare(lhs: Number, rhs: Number) -> Bool {
return lhs >= rhs return lhs >= rhs
} }
} }
@@ -235,7 +235,7 @@ class LessThanExpression: NumericExpression {
return "<" return "<"
} }
override func compare(lhs: Float80, rhs: Float80) -> Bool { override func compare(lhs: Number, rhs: Number) -> Bool {
return lhs < rhs return lhs < rhs
} }
} }
@@ -246,7 +246,7 @@ class LessThanEqualExpression: NumericExpression {
return "<=" return "<="
} }
override func compare(lhs: Float80, rhs: Float80) -> Bool { override func compare(lhs: Number, rhs: Number) -> Bool {
return lhs <= rhs return lhs <= rhs
} }
} }
@@ -263,37 +263,37 @@ class InequalityExpression: EqualityExpression {
} }
func toNumber(value: Any) -> Float80? { func toNumber(value: Any) -> Number? {
if let value = value as? Float { if let value = value as? Float {
return Float80(value) return Number(value)
} else if let value = value as? Double { } else if let value = value as? Double {
return Float80(value) return Number(value)
} else if let value = value as? UInt { } else if let value = value as? UInt {
return Float80(value) return Number(value)
} else if let value = value as? Int { } else if let value = value as? Int {
return Float80(value) return Number(value)
} else if let value = value as? Int8 { } else if let value = value as? Int8 {
return Float80(value) return Number(value)
} else if let value = value as? Int16 { } else if let value = value as? Int16 {
return Float80(value) return Number(value)
} else if let value = value as? Int32 { } else if let value = value as? Int32 {
return Float80(value) return Number(value)
} else if let value = value as? Int64 { } else if let value = value as? Int64 {
return Float80(value) return Number(value)
} else if let value = value as? UInt8 { } else if let value = value as? UInt8 {
return Float80(value) return Number(value)
} else if let value = value as? UInt16 { } else if let value = value as? UInt16 {
return Float80(value) return Number(value)
} else if let value = value as? UInt32 { } else if let value = value as? UInt32 {
return Float80(value) return Number(value)
} else if let value = value as? UInt64 { } else if let value = value as? UInt64 {
return Float80(value) return Number(value)
} else if let value = value as? Float80 { } else if let value = value as? Number {
return value return value
} else if let value = value as? Float64 { } else if let value = value as? Float64 {
return Float80(value) return Number(value)
} else if let value = value as? Float32 { } else if let value = value as? Float32 {
return Float80(value) return Number(value)
} }
return nil return nil

View File

@@ -1,6 +1,9 @@
import Foundation import Foundation
typealias Number = Float80
class FilterExpression : Resolvable { class FilterExpression : Resolvable {
let filters: [(FilterType, [Variable])] let filters: [(FilterType, [Variable])]
let variable: Variable let variable: Variable
@@ -60,7 +63,7 @@ public struct Variable : Equatable, Resolvable {
return variable[variable.characters.index(after: variable.startIndex) ..< variable.characters.index(before: variable.endIndex)] return variable[variable.characters.index(after: variable.startIndex) ..< variable.characters.index(before: variable.endIndex)]
} }
if let number = Float80(variable) { if let number = Number(variable) {
// Number literal // Number literal
return number return number
} }