aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/constraint/IsAdd.scala
diff options
context:
space:
mode:
authorchick2020-08-14 19:47:53 -0700
committerJack Koenig2020-08-14 19:47:53 -0700
commit6fc742bfaf5ee508a34189400a1a7dbffe3f1cac (patch)
tree2ed103ee80b0fba613c88a66af854ae9952610ce /src/main/scala/firrtl/constraint/IsAdd.scala
parentb516293f703c4de86397862fee1897aded2ae140 (diff)
All of src/ formatted with scalafmt
Diffstat (limited to 'src/main/scala/firrtl/constraint/IsAdd.scala')
-rw-r--r--src/main/scala/firrtl/constraint/IsAdd.scala37
1 files changed, 19 insertions, 18 deletions
diff --git a/src/main/scala/firrtl/constraint/IsAdd.scala b/src/main/scala/firrtl/constraint/IsAdd.scala
index e177a8b9..9305db89 100644
--- a/src/main/scala/firrtl/constraint/IsAdd.scala
+++ b/src/main/scala/firrtl/constraint/IsAdd.scala
@@ -1,39 +1,38 @@
// See LICENSE for license details.
-
package firrtl.constraint
// Is case class because writing tests is easier due to equality is not object equality
-case class IsAdd private (known: Option[IsKnown],
- maxs: Vector[IsMax],
- mins: Vector[IsMin],
- others: Vector[Constraint]) extends Constraint with MultiAry {
+case class IsAdd private (known: Option[IsKnown], maxs: Vector[IsMax], mins: Vector[IsMin], others: Vector[Constraint])
+ extends Constraint
+ with MultiAry {
def op(b1: IsKnown, b2: IsKnown): IsKnown = b1 + b2
lazy val children: Vector[Constraint] = {
- if(known.nonEmpty) known.get +: (maxs ++ mins ++ others) else maxs ++ mins ++ others
+ if (known.nonEmpty) known.get +: (maxs ++ mins ++ others) else maxs ++ mins ++ others
}
def addChild(x: Constraint): IsAdd = x match {
- case k: IsKnown => new IsAdd(merge(Some(k), known), maxs, mins, others)
- case add: IsAdd => new IsAdd(merge(known, add.known), maxs ++ add.maxs, mins ++ add.mins, others ++ add.others)
- case max: IsMax => new IsAdd(known, maxs :+ max, mins, others)
- case min: IsMin => new IsAdd(known, maxs, mins :+ min, others)
- case other => new IsAdd(known, maxs, mins, others :+ other)
+ case k: IsKnown => new IsAdd(merge(Some(k), known), maxs, mins, others)
+ case add: IsAdd => new IsAdd(merge(known, add.known), maxs ++ add.maxs, mins ++ add.mins, others ++ add.others)
+ case max: IsMax => new IsAdd(known, maxs :+ max, mins, others)
+ case min: IsMin => new IsAdd(known, maxs, mins :+ min, others)
+ case other => new IsAdd(known, maxs, mins, others :+ other)
}
override def serialize: String = "(" + children.map(_.serialize).mkString(" + ") + ")"
- override def map(f: Constraint=>Constraint): Constraint = IsAdd(children.map(f))
+ override def map(f: Constraint => Constraint): Constraint = IsAdd(children.map(f))
def reduce(): Constraint = {
- if(children.size == 1) children.head else {
+ if (children.size == 1) children.head
+ else {
(known, maxs, mins, others) match {
case (Some(k), _, _, _) if k.value == 0 => new IsAdd(None, maxs, mins, others).reduce()
case (Some(k), Vector(max), Vector(), Vector()) => max.map { o => IsAdd(k, o) }.reduce()
case (Some(k), Vector(), Vector(min), Vector()) => min.map { o => IsAdd(k, o) }.reduce()
- case _ => this
+ case _ => this
}
}
}
@@ -45,8 +44,10 @@ object IsAdd {
case _ => apply(Seq(left, right))
}
def apply(children: Seq[Constraint]): Constraint = {
- children.foldLeft(new IsAdd(None, Vector(), Vector(), Vector())) { (add, c) =>
- add.addChild(c)
- }.reduce()
+ children
+ .foldLeft(new IsAdd(None, Vector(), Vector(), Vector())) { (add, c) =>
+ add.addChild(c)
+ }
+ .reduce()
}
-} \ No newline at end of file
+}