diff options
| author | Leway Colin | 2019-08-20 00:09:07 +0800 |
|---|---|---|
| committer | Schuyler Eldridge | 2019-08-19 12:09:07 -0400 |
| commit | eccacc3d7a07208ff31e592b13c0dece1012dca2 (patch) | |
| tree | 936adca048d3b5fd843fcb48738ecd89632dfa0e | |
| parent | 8407cbafe37406301fe7437a7a0cb8bf283ada09 (diff) | |
Refactor: remove redundant code (#1152)
* Refactor: remove redundant code
* Change to protected API
* Remove type hierarchy
| -rw-r--r-- | chiselFrontend/src/main/scala/chisel3/Data.scala | 32 |
1 files changed, 14 insertions, 18 deletions
diff --git a/chiselFrontend/src/main/scala/chisel3/Data.scala b/chiselFrontend/src/main/scala/chisel3/Data.scala index c6d98b9c..1a931135 100644 --- a/chiselFrontend/src/main/scala/chisel3/Data.scala +++ b/chiselFrontend/src/main/scala/chisel3/Data.scala @@ -44,6 +44,16 @@ object SpecifiedDirection { case (SpecifiedDirection.Unspecified, thisDirection) => thisDirection case (SpecifiedDirection.Flip, thisDirection) => SpecifiedDirection.flip(thisDirection) } + + private[chisel3] def specifiedDirection[T<:Data](source: T)(dir: SpecifiedDirection)(implicit compileOptions: CompileOptions): T = { + if (compileOptions.checkSynthesizable) { + requireIsChiselType(source) + } + val out = source.cloneType.asInstanceOf[T] + out.specifiedDirection = dir + out + } + } /** Resolved directions for both leaf and container nodes, only visible after @@ -221,32 +231,18 @@ object chiselTypeOf { */ object Input { def apply[T<:Data](source: T)(implicit compileOptions: CompileOptions): T = { - if (compileOptions.checkSynthesizable) { - requireIsChiselType(source) - } - val out = source.cloneType.asInstanceOf[T] - out.specifiedDirection = SpecifiedDirection.Input - out + SpecifiedDirection.specifiedDirection(source)(SpecifiedDirection.Input) } } object Output { def apply[T<:Data](source: T)(implicit compileOptions: CompileOptions): T = { - if (compileOptions.checkSynthesizable) { - requireIsChiselType(source) - } - val out = source.cloneType.asInstanceOf[T] - out.specifiedDirection = SpecifiedDirection.Output - out + SpecifiedDirection.specifiedDirection(source)(SpecifiedDirection.Output) } } + object Flipped { def apply[T<:Data](source: T)(implicit compileOptions: CompileOptions): T = { - if (compileOptions.checkSynthesizable) { - requireIsChiselType(source) - } - val out = source.cloneType.asInstanceOf[T] - out.specifiedDirection = SpecifiedDirection.flip(source.specifiedDirection) - out + SpecifiedDirection.specifiedDirection(source)(SpecifiedDirection.flip(source.specifiedDirection)) } } |
