blob: 6f9d907b314fa3aeb7fd61ceed20a49b39a786cb (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
package scala.runtime
import scala.collection.immutable.Map
class EnumValues[E <: Enum] {
private var myMap: Map[Int, E] = Map()
private var fromNameCache: Map[String, E] = null
def register(v: E) = {
require(!myMap.contains(v.enumTag))
myMap = myMap.updated(v.enumTag, v)
fromNameCache = null
}
def fromInt: Map[Int, E] = myMap
def fromName: Map[String, E] = {
if (fromNameCache == null) fromNameCache = myMap.values.map(v => v.toString -> v).toMap
fromNameCache
}
def values: Iterable[E] = myMap.values
}
|