From eccacc3d7a07208ff31e592b13c0dece1012dca2 Mon Sep 17 00:00:00 2001 From: Leway Colin Date: Tue, 20 Aug 2019 00:09:07 +0800 Subject: Refactor: remove redundant code (#1152) * Refactor: remove redundant code * Change to protected API * Remove type hierarchy --- chiselFrontend/src/main/scala/chisel3/Data.scala | 32 +++++++++++------------- 1 file changed, 14 insertions(+), 18 deletions(-) (limited to 'chiselFrontend/src/main/scala/chisel3/Data.scala') 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)) } } -- cgit v1.2.3