aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/annotations
diff options
context:
space:
mode:
authorSchuyler Eldridge2018-08-22 16:39:07 -0400
committerSchuyler Eldridge2018-11-07 13:49:16 -0500
commit61ab5a323da77dd03a24cfda3948830c3bb286c9 (patch)
tree2ca1c57d67c571b1a414849c9c55aac4d44d44fd /src/main/scala/firrtl/annotations
parent17b4e9835bd95dcf91c5ea5a4d7c52280031ea93 (diff)
Add FirrtlOptions
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
Diffstat (limited to 'src/main/scala/firrtl/annotations')
-rw-r--r--src/main/scala/firrtl/annotations/JsonProtocol.scala13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/main/scala/firrtl/annotations/JsonProtocol.scala b/src/main/scala/firrtl/annotations/JsonProtocol.scala
index 36699151..acb2d957 100644
--- a/src/main/scala/firrtl/annotations/JsonProtocol.scala
+++ b/src/main/scala/firrtl/annotations/JsonProtocol.scala
@@ -34,6 +34,17 @@ object JsonProtocol {
{ case JString(s) => AnnotationUtils.toNamed(s).asInstanceOf[ComponentName] },
{ case named: ComponentName => JString(named.serialize) }
))
+ class TransformSerializer extends CustomSerializer[Transform](format => (
+ { case JString(s) =>
+ try {
+ Class.forName(s).asInstanceOf[Class[_ <: Transform]].newInstance()
+ } catch {
+ case e: java.lang.InstantiationException => throw new FIRRTLException(
+ "NoSuchMethodException during construction of serialized Transform. Is your Transform an inner class?", e)
+ case t: Throwable => throw t
+ }},
+ { case x: Transform => JString(x.getClass.getName) }
+ ))
class TargetSerializer extends CustomSerializer[Target](format => (
@@ -67,7 +78,7 @@ object JsonProtocol {
new TransformClassSerializer + new NamedSerializer + new CircuitNameSerializer +
new ModuleNameSerializer + new ComponentNameSerializer + new TargetSerializer +
new GenericTargetSerializer + new CircuitTargetSerializer + new ModuleTargetSerializer +
- new InstanceTargetSerializer + new ReferenceTargetSerializer
+ new InstanceTargetSerializer + new ReferenceTargetSerializer + new TransformSerializer
}
/** Serialize annotations to a String for emission */