diff options
Diffstat (limited to 'src/main/scala/firrtl/annotations/Annotation.scala')
| -rw-r--r-- | src/main/scala/firrtl/annotations/Annotation.scala | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/main/scala/firrtl/annotations/Annotation.scala b/src/main/scala/firrtl/annotations/Annotation.scala new file mode 100644 index 00000000..5881001f --- /dev/null +++ b/src/main/scala/firrtl/annotations/Annotation.scala @@ -0,0 +1,21 @@ +// See LICENSE for license details. + +package firrtl +package annotations + +import firrtl.ir._ + +case class AnnotationException(message: String) extends Exception(message) + +final case class Annotation(target: Named, transform: Class[_ <: Transform], value: String) { + val targetString: String = target.serialize + val transformClass: String = transform.getName + def serialize: String = this.toString + def update(tos: Seq[Named]): Seq[Annotation] = { + check(target, tos, this) + propagate(target, tos, duplicate) + } + def propagate(from: Named, tos: Seq[Named], dup: Named=>Annotation): Seq[Annotation] = tos.map(dup(_)) + def check(from: Named, tos: Seq[Named], which: Annotation): Unit = {} + def duplicate(n: Named) = new Annotation(n, transform, value) +} |
