aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/annotations/JsonProtocol.scala
diff options
context:
space:
mode:
authorJim Lawson2019-03-18 15:20:51 -0700
committerGitHub2019-03-18 15:20:51 -0700
commit9911b3467de2ebe92827ddc3288bd6db477cc636 (patch)
tree4e791d82069c0e94fd5c34cd674a9b9596042d8b /src/main/scala/firrtl/annotations/JsonProtocol.scala
parenta97a81bc0f717f80bb70733795ac5337653b58c5 (diff)
Add serialization support for LoadMemoryFileType in LoadMemoryAnnotation (#1056)
* Add serialization support for LoadMemoryFileType in LoadMemoryAnnotation Add custom LoadMemoryFileTypeSerializer. Add test to verify LoadMemoryAnnotation can be correctly serialized/deserialized. * Simplify and focus LoadMemoryAnnotation serialization/deserialization. Respond to comments on earlier implementations. * Add type FileType definition for current chisel3 code.
Diffstat (limited to 'src/main/scala/firrtl/annotations/JsonProtocol.scala')
-rw-r--r--src/main/scala/firrtl/annotations/JsonProtocol.scala8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/main/scala/firrtl/annotations/JsonProtocol.scala b/src/main/scala/firrtl/annotations/JsonProtocol.scala
index acb2d957..ea29f090 100644
--- a/src/main/scala/firrtl/annotations/JsonProtocol.scala
+++ b/src/main/scala/firrtl/annotations/JsonProtocol.scala
@@ -45,7 +45,10 @@ object JsonProtocol {
}},
{ case x: Transform => JString(x.getClass.getName) }
))
-
+ class LoadMemoryFileTypeSerializer extends CustomSerializer[MemoryLoadFileType](format => (
+ { case JString(s) => MemoryLoadFileType.deserialize(s) },
+ { case named: MemoryLoadFileType => JString(named.serialize) }
+ ))
class TargetSerializer extends CustomSerializer[Target](format => (
{ case JString(s) => Target.deserialize(s) },
@@ -78,7 +81,8 @@ 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 TransformSerializer
+ new InstanceTargetSerializer + new ReferenceTargetSerializer + new TransformSerializer +
+ new LoadMemoryFileTypeSerializer
}
/** Serialize annotations to a String for emission */