diff options
| author | Schuyler Eldridge | 2020-06-02 16:43:37 -0400 |
|---|---|---|
| committer | Schuyler Eldridge | 2020-06-25 13:46:23 -0400 |
| commit | 45835fa54d3d345428554f5459ca6776c2b9d90a (patch) | |
| tree | 9249ed41b0448f8e116b3b1c8e647f8ab97b204d /src | |
| parent | d93eef47c65e5d9f0b9942f9d22d754b776e42a3 (diff) | |
Add LetterCaseTransforms
This adds three new transforms:
- (abstract) LetterCaseTransform parent of case manipulation
- LowerCaseNames to lower case all names
- UpperCaseNames to upper case all names
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/scala/firrtl/features/LetterCaseTransform.scala | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/main/scala/firrtl/features/LetterCaseTransform.scala b/src/main/scala/firrtl/features/LetterCaseTransform.scala new file mode 100644 index 00000000..a6cd270a --- /dev/null +++ b/src/main/scala/firrtl/features/LetterCaseTransform.scala @@ -0,0 +1,29 @@ +// See LICENSE for license details. + +package firrtl.features + +import firrtl.Namespace +import firrtl.transforms.ManipulateNames + +import scala.reflect.ClassTag + +/** Parent of transforms that do change the letter case of names in a FIRRTL circuit */ +abstract class LetterCaseTransform[A <: ManipulateNames[_] : ClassTag] extends ManipulateNames[A] { + + protected def newName: String => String + + final def manipulate = (a: String, ns: Namespace) => newName(a) match { + case `a` => None + case b => Some(ns.newName(b)) + } +} + +/** Convert all FIRRTL names to lowercase */ +final class LowerCaseNames extends LetterCaseTransform[LowerCaseNames] { + override protected def newName = (a: String) => a.toLowerCase +} + +/** Convert all FIRRTL names to UPPERCASE */ +final class UpperCaseNames extends LetterCaseTransform[UpperCaseNames] { + override protected def newName = (a: String) => a.toUpperCase +} |
