aboutsummaryrefslogtreecommitdiff
path: root/library/src/scala/runtime/EnumValues.scala
blob: 6d2e56cf39633f3caa220fc46f85ce8d3977368c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package scala.runtime

import scala.collection.immutable.Seq
import scala.collection.mutable.ResizableArray

class EnumValues[E <: Enum] extends ResizableArray[E] {
  private var valuesCache: List[E] = Nil
  def register(v: E) = {
    ensureSize(v.enumTag + 1)
    size0 = size0 max (v.enumTag + 1)
    array(v.enumTag) = v
    valuesCache = null
  }
  def values: Seq[E] = {
    if (valuesCache == null) valuesCache = array.filter(_ != null).toList.asInstanceOf[scala.List[E]]
    valuesCache
  }
}