Skip to content

Commit

Permalink
RecordMap: clean up API for accessing members via data
Browse files Browse the repository at this point in the history
  • Loading branch information
mwachs5 committed Jun 15, 2020
1 parent e623579 commit c900367
Showing 1 changed file with 3 additions and 4 deletions.
7 changes: 3 additions & 4 deletions src/main/scala/util/RecordMap.scala
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,18 @@ import scala.collection.immutable.ListMap
import chisel3.internal.requireIsChiselType
import chisel3.experimental.DataMirror.internal.chiselTypeClone

final class RecordMap[T <: Data](val eltMap: ListMap[String, T])
final class RecordMap[T <: Data](eltMap: ListMap[String, T])
extends Record {

eltMap.foreach { case (name, elt) => requireIsChiselType(elt, name) }


def apply(x: Int) = eltMap.values.toSeq(x)
def apply(x: String) = eltMap.get(x)
def size = eltMap.size
def data = eltMap.values

// This is needed for Record, and doesn't give the actual elements
val elements = ListMap[String, T]() ++ eltMap.mapValues(chiselTypeClone(_)) // mapValues return value is lazy
val elements = ListMap[String, T]() ++ eltMap.mapValues(chiselTypeClone(_).asInstanceOf[T]) // mapValues return value is lazy
def data = elements.values

override def cloneType: this.type = (new RecordMap(eltMap)).asInstanceOf[this.type]

Expand Down

0 comments on commit c900367

Please sign in to comment.