diff options
| author | Adam Izraelevitz | 2017-03-09 15:51:23 -0800 |
|---|---|---|
| committer | Adam Izraelevitz | 2017-03-10 10:33:10 -0800 |
| commit | 50001f3f6a49a44b5f931d96d42655e9879c38d6 (patch) | |
| tree | a97ed9e77ff5ce955424e56869f04dc4b92adfdc /src/main/scala/firrtl/Mappers.scala | |
| parent | e571ef88f7f69b2374fa9ba86e219523645213c6 (diff) | |
Added Circuit mappers
Diffstat (limited to 'src/main/scala/firrtl/Mappers.scala')
| -rw-r--r-- | src/main/scala/firrtl/Mappers.scala | 17 |
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) + } } |
