diff --git a/Sources/Expression.swift b/Sources/Expression.swift index 5609e82..8d1c951 100644 --- a/Sources/Expression.swift +++ b/Sources/Expression.swift @@ -202,7 +202,7 @@ class NumericExpression: Expression, InfixOperator, CustomStringConvertible { return "" } - func compare(lhs: Float80, rhs: Float80) -> Bool { + func compare(lhs: Number, rhs: Number) -> Bool { return false } } @@ -213,7 +213,7 @@ class MoreThanExpression: NumericExpression { return ">" } - override func compare(lhs: Float80, rhs: Float80) -> Bool { + override func compare(lhs: Number, rhs: Number) -> Bool { return lhs > rhs } } @@ -224,7 +224,7 @@ class MoreThanEqualExpression: NumericExpression { return ">=" } - override func compare(lhs: Float80, rhs: Float80) -> Bool { + override func compare(lhs: Number, rhs: Number) -> Bool { return lhs >= rhs } } @@ -235,7 +235,7 @@ class LessThanExpression: NumericExpression { return "<" } - override func compare(lhs: Float80, rhs: Float80) -> Bool { + override func compare(lhs: Number, rhs: Number) -> Bool { return lhs < rhs } } @@ -246,7 +246,7 @@ class LessThanEqualExpression: NumericExpression { return "<=" } - override func compare(lhs: Float80, rhs: Float80) -> Bool { + override func compare(lhs: Number, rhs: Number) -> Bool { 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 { - return Float80(value) + return Number(value) } else if let value = value as? Double { - return Float80(value) + return Number(value) } else if let value = value as? UInt { - return Float80(value) + return Number(value) } else if let value = value as? Int { - return Float80(value) + return Number(value) } else if let value = value as? Int8 { - return Float80(value) + return Number(value) } else if let value = value as? Int16 { - return Float80(value) + return Number(value) } else if let value = value as? Int32 { - return Float80(value) + return Number(value) } else if let value = value as? Int64 { - return Float80(value) + return Number(value) } else if let value = value as? UInt8 { - return Float80(value) + return Number(value) } else if let value = value as? UInt16 { - return Float80(value) + return Number(value) } else if let value = value as? UInt32 { - return Float80(value) + return Number(value) } else if let value = value as? UInt64 { - return Float80(value) - } else if let value = value as? Float80 { + return Number(value) + } else if let value = value as? Number { return value } else if let value = value as? Float64 { - return Float80(value) + return Number(value) } else if let value = value as? Float32 { - return Float80(value) + return Number(value) } return nil diff --git a/Sources/Variable.swift b/Sources/Variable.swift index 6868ba6..6821953 100644 --- a/Sources/Variable.swift +++ b/Sources/Variable.swift @@ -1,6 +1,9 @@ import Foundation +typealias Number = Float80 + + class FilterExpression : Resolvable { let filters: [(FilterType, [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)] } - if let number = Float80(variable) { + if let number = Number(variable) { // Number literal return number }