aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/Mappers.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/firrtl/Mappers.scala')
-rw-r--r--src/main/scala/firrtl/Mappers.scala17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/main/scala/firrtl/Mappers.scala b/src/main/scala/firrtl/Mappers.scala
index d1e74064..cf43d9dc 100644
--- a/src/main/scala/firrtl/Mappers.scala
+++ b/src/main/scala/firrtl/Mappers.scala
@@ -98,6 +98,21 @@ object Mappers {
}
implicit class ModuleMap(val module: DefModule) extends AnyVal {
def map[T](f: T => T)(implicit magnet: (T => T) => ModuleMagnet): DefModule = magnet(f).map(module)
- }
+ }
+ // ********** Circuit Mappers **********
+ private trait CircuitMagnet {
+ def map(module: Circuit): Circuit
+ }
+ private object CircuitMagnet {
+ implicit def forModules(f: DefModule => DefModule): CircuitMagnet = new CircuitMagnet {
+ override def map(circuit: Circuit): Circuit = circuit mapModule f
+ }
+ implicit def forString(f: String => String): CircuitMagnet = new CircuitMagnet {
+ override def map(circuit: Circuit): Circuit = circuit mapString f
+ }
+ }
+ implicit class CircuitMap(val circuit: Circuit) extends AnyVal {
+ def map[T](f: T => T)(implicit magnet: (T => T) => CircuitMagnet): Circuit = magnet(f).map(circuit)
+ }
}