Skip to content

Commit

Permalink
Rollback BinaryFloating/Integer to Native type for better compile time
Browse files Browse the repository at this point in the history
  • Loading branch information
s4cha committed Apr 3, 2020
1 parent 3aa9873 commit 5b23240
Show file tree
Hide file tree
Showing 11 changed files with 398 additions and 132 deletions.
36 changes: 18 additions & 18 deletions Sources/Stevia/Stevia+Center.swift
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public extension UIView {
}
return self
}

/**
Centers the view horizontally (X axis) in its container.
Expand All @@ -41,8 +41,11 @@ public extension UIView {
*/
@discardableResult
func centerHorizontally() -> Self {
centerHorizontally(offset: 0)
func centerHorizontally(offset: Double = 0) -> Self {
if let spv = superview {
align(.vertical, v1: self, with: spv, offset: offset)
}
return self
}

/**
Expand All @@ -57,11 +60,8 @@ public extension UIView {
*/
@discardableResult
func centerHorizontally<T: BinaryFloatingPoint>(offset: T) -> Self {
if let spv = superview {
align(.vertical, v1: self, with: spv, offset: Double(offset))
}
return self
func centerHorizontally(offset: CGFloat) -> Self {
centerHorizontally(offset: Double(offset))
}

/**
Expand All @@ -76,10 +76,10 @@ public extension UIView {
*/
@discardableResult
func centerHorizontally<T: BinaryInteger>(offset: T) -> Self {
func centerHorizontally(offset: Int) -> Self {
centerHorizontally(offset: Double(offset))
}

/**
Centers the view vertically (Y axis) in its container.
Expand All @@ -92,8 +92,11 @@ public extension UIView {
*/
@discardableResult
func centerVertically() -> Self {
centerVertically(offset: 0)
func centerVertically(offset: Double = 0) -> Self {
if let spv = superview {
align(.horizontal, v1: self, with: spv, offset: offset)
}
return self
}

/**
Expand All @@ -108,11 +111,8 @@ public extension UIView {
*/
@discardableResult
func centerVertically<T: BinaryFloatingPoint>(offset: T) -> Self {
if let spv = superview {
align(.horizontal, v1: self, with: spv, offset: Double(offset))
}
return self
func centerVertically(offset: CGFloat) -> Self {
centerVertically(offset: Double(offset))
}

/**
Expand All @@ -127,7 +127,7 @@ public extension UIView {
*/
@discardableResult
func centerVertically<T: BinaryInteger>(offset: T) -> Self {
func centerVertically(offset: Int) -> Self {
centerVertically(offset: Double(offset))
}
}
Expand Down
43 changes: 37 additions & 6 deletions Sources/Stevia/Stevia+DoubleDash.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,97 +11,128 @@ import UIKit

infix operator -- :AdditionPrecedence


@available(*, deprecated, renamed: "")
@discardableResult
public func -- <T: BinaryFloatingPoint>(left: UIView, right: T) -> PartialConstraint {
return left-Double(right)
public func -- (left: UIView, right: Double) -> PartialConstraint {
return left-right
}

@available(*, deprecated, renamed: "")
public func -- (left: UIView, right: CGFloat) -> PartialConstraint {
return left--Double(right)
}

public func -- <T: BinaryInteger>(left: UIView, right: T) -> PartialConstraint {
@available(*, deprecated, renamed: "")
public func -- (left: UIView, right: Int) -> PartialConstraint {
return left--Double(right)
}

@available(*, deprecated, renamed: "")
@discardableResult
public func -- (left: SideConstraint, right: UIView) -> UIView {
return left-right
}

@available(*, deprecated, renamed: "")
@discardableResult
public func -- (left: [UIView], right: SideConstraint) -> [UIView] {
return left-right
}

@available(*, deprecated, renamed: "")
@discardableResult
public func -- (left: UIView, right: SideConstraint) -> UIView {
return left-right
}

@available(*, deprecated, renamed: "")
@discardableResult
public func -- (left: PartialConstraint, right: UIView) -> [UIView] {
return left-right
}

@available(*, deprecated, renamed: "")
@discardableResult
public func -- (left: UIView, right: UIView) -> [UIView] {
return left-right
}

@available(*, deprecated, renamed: "")
@discardableResult
public func -- <T: BinaryFloatingPoint>(left: [UIView], right: T) -> PartialConstraint {
return left-Double(right)
public func -- (left: [UIView], right: Double) -> PartialConstraint {
return left-right
}

@available(*, deprecated, renamed: "")
@discardableResult
public func -- (left: [UIView], right: CGFloat) -> PartialConstraint {
return left--Double(right)
}

@available(*, deprecated, renamed: "")
@discardableResult
public func -- <T: BinaryInteger>(left: [UIView], right: T) -> PartialConstraint {
public func -- (left: [UIView], right: Int) -> PartialConstraint {
return left--Double(right)
}

@available(*, deprecated, renamed: "")
@discardableResult
public func -- (left: [UIView], right: UIView) -> [UIView] {
return left-right
}

@available(*, deprecated, renamed: "")
@discardableResult
public func -- (left: UIView, right: String) -> Space {
return left-right
}

@available(*, deprecated, renamed: "")
@discardableResult
public func -- (left: [UIView], right: String) -> Space {
return left-right
}

@available(*, deprecated, renamed: "")
@discardableResult
public func -- (left: Space, right: UIView) -> [UIView] {
return left-right
}

@available(*, deprecated, renamed: "")
@discardableResult
public func -- (left: UIView,
right: SteviaFlexibleMargin) -> PartialFlexibleConstraint {
return left-right
}

@available(*, deprecated, renamed: "")
@discardableResult
public func -- (left: [UIView],
right: SteviaFlexibleMargin) -> PartialFlexibleConstraint {
return left-right
}

@available(*, deprecated, renamed: "")
@discardableResult
public func -- (left: PartialFlexibleConstraint, right: UIView) -> [UIView] {
return left-right
}

@available(*, deprecated, renamed: "")
@discardableResult
public func -- (left: SteviaLeftFlexibleMargin, right: UIView) -> UIView {
return left-right
}

@available(*, deprecated, renamed: "")
@discardableResult
public func -- (left: UIView, right: SteviaRightFlexibleMargin) -> UIView {
return left-right
}

@available(*, deprecated, renamed: "")
@discardableResult
public func -- (left: [UIView], right: SteviaRightFlexibleMargin) -> [UIView] {
return left-right
Expand Down
84 changes: 63 additions & 21 deletions Sources/Stevia/Stevia+Equation.swift
Original file line number Diff line number Diff line change
Expand Up @@ -183,59 +183,86 @@ private func applyRelation(left: SteviaAttribute, right: SteviaAttribute, relate
}

@discardableResult
public func + <T: BinaryFloatingPoint>(left: SteviaAttribute, right: T) -> SteviaAttribute {
SteviaAttribute(view: left.view, attribute: left.attribute, constant: Double(right), multiplier: left.multiplier)
public func + (left: SteviaAttribute, right: Double) -> SteviaAttribute {
SteviaAttribute(view: left.view, attribute: left.attribute, constant: right, multiplier: left.multiplier)
}

@discardableResult
public func + <T: BinaryInteger>(left: SteviaAttribute, right: T) -> SteviaAttribute {
public func + (left: SteviaAttribute, right: CGFloat) -> SteviaAttribute {
left + Double(right)
}

@discardableResult
public func - <T: BinaryFloatingPoint>(left: SteviaAttribute, right: T) -> SteviaAttribute {
SteviaAttribute(view: left.view, attribute: left.attribute, constant: -Double(right), multiplier: left.multiplier)
public func + (left: SteviaAttribute, right: Int) -> SteviaAttribute {
left + Double(right)
}

@discardableResult
public func - <T: BinaryInteger>(left: SteviaAttribute, right: T) -> SteviaAttribute {
public func - (left: SteviaAttribute, right: Double) -> SteviaAttribute {
SteviaAttribute(view: left.view, attribute: left.attribute, constant: -right, multiplier: left.multiplier)
}

@discardableResult
public func - (left: SteviaAttribute, right: CGFloat) -> SteviaAttribute {
left - Double(right)
}

@discardableResult
public func * <T: BinaryFloatingPoint>(left: SteviaAttribute, right: T) -> SteviaAttribute {
SteviaAttribute(view: left.view, attribute: left.attribute, constant: left.constant, multiplier: Double(right))
public func - (left: SteviaAttribute, right: Int) -> SteviaAttribute {
left - Double(right)
}

@discardableResult
public func * <T: BinaryInteger>(left: SteviaAttribute, right: T) -> SteviaAttribute {
public func * (left: SteviaAttribute, right: Double) -> SteviaAttribute {
SteviaAttribute(view: left.view, attribute: left.attribute, constant: left.constant, multiplier: right)
}

@discardableResult
public func * (left: SteviaAttribute, right: CGFloat) -> SteviaAttribute {
left * Double(right)
}

@discardableResult
public func / <T: BinaryFloatingPoint>(left: SteviaAttribute, right: T) -> SteviaAttribute {
left * (1/Double(right))
public func * (left: SteviaAttribute, right: Int) -> SteviaAttribute {
left * Double(right)
}

@discardableResult
public func / <T: BinaryInteger>(left: SteviaAttribute, right: T) -> SteviaAttribute {
public func / (left: SteviaAttribute, right: Double) -> SteviaAttribute {
left * (1/right)
}

@discardableResult
public func / (left: SteviaAttribute, right: CGFloat) -> SteviaAttribute {
left / Double(right)
}

@discardableResult
public func / (left: SteviaAttribute, right: Int) -> SteviaAttribute {
left / Double(right)
}


@discardableResult
public func % (left: Double, right: SteviaAttribute) -> SteviaAttribute {
right * (left/100)
}

@discardableResult
public func % <T: BinaryFloatingPoint>(left: T, right: SteviaAttribute) -> SteviaAttribute {
right * (Double(left)/100)
public func % (left: CGFloat, right: SteviaAttribute) -> SteviaAttribute {
Double(left) % right
}

@discardableResult
public func % <T: BinaryInteger>(left: T, right: SteviaAttribute) -> SteviaAttribute {
public func % (left: Int, right: SteviaAttribute) -> SteviaAttribute {
Double(left) % right
}


// MARK: - Equations of type v.P == X

@discardableResult
public func == <T: BinaryFloatingPoint>(left: SteviaAttribute, right: T) -> NSLayoutConstraint {
public func == (left: SteviaAttribute, right: Double) -> NSLayoutConstraint {
if let spv = left.view.superview {
var toItem: UIView? = spv
var constant = right
Expand All @@ -254,12 +281,17 @@ public func == <T: BinaryFloatingPoint>(left: SteviaAttribute, right: T) -> NSLa
}

@discardableResult
public func == <T: BinaryInteger>(left: SteviaAttribute, right: T) -> NSLayoutConstraint {
public func == (left: SteviaAttribute, right: CGFloat) -> NSLayoutConstraint {
left == Double(right)
}

@discardableResult
public func == (left: SteviaAttribute, right: Int) -> NSLayoutConstraint {
left == Double(right)
}

@discardableResult
public func >= <T: BinaryFloatingPoint>(left: SteviaAttribute, right: T) -> NSLayoutConstraint {
public func >= (left: SteviaAttribute, right: Double) -> NSLayoutConstraint {
if let spv = left.view.superview {
var toItem: UIView? = spv
var constant = right
Expand All @@ -279,12 +311,17 @@ public func >= <T: BinaryFloatingPoint>(left: SteviaAttribute, right: T) -> NSLa
}

@discardableResult
public func >= <T: BinaryInteger>(left: SteviaAttribute, right: T) -> NSLayoutConstraint {
public func >= (left: SteviaAttribute, right: CGFloat) -> NSLayoutConstraint {
left >= Double(right)
}

@discardableResult
public func <= <T: BinaryFloatingPoint>(left: SteviaAttribute, right: T) -> NSLayoutConstraint {
public func >= (left: SteviaAttribute, right: Int) -> NSLayoutConstraint {
left >= Double(right)
}

@discardableResult
public func <= (left: SteviaAttribute, right: Double) -> NSLayoutConstraint {
if let spv = left.view.superview {
var toItem: UIView? = spv
var constant = right
Expand All @@ -304,7 +341,12 @@ public func <= <T: BinaryFloatingPoint>(left: SteviaAttribute, right: T) -> NSLa
}

@discardableResult
public func <= <T: BinaryInteger>(left: SteviaAttribute, right: T) -> NSLayoutConstraint {
public func <= (left: SteviaAttribute, right: CGFloat) -> NSLayoutConstraint {
left <= Double(right)
}

@discardableResult
public func <= (left: SteviaAttribute, right: Int) -> NSLayoutConstraint {
left <= Double(right)
}
#endif
Loading

0 comments on commit 5b23240

Please sign in to comment.