blob: 38c9022d5c2b57113a234b2e4827bb0886500a67 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
package generic
import Shapes.Singleton
import scala.collection.mutable.ResizableArray
import scala.collection.immutable.Seq
trait Enum {
def enumTag: Int
}
trait FiniteEnum extends Enum
class EnumValues[E <: Enum] extends ResizableArray[E] {
private var valuesCache: Seq[E] = Nil
def register(v: E) = {
ensureSize(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
}
}
|