diff options
Diffstat (limited to 'src/library/scala/ref/ReferenceWrapper.scala')
-rw-r--r-- | src/library/scala/ref/ReferenceWrapper.scala | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/library/scala/ref/ReferenceWrapper.scala b/src/library/scala/ref/ReferenceWrapper.scala new file mode 100644 index 0000000000..b93e98b880 --- /dev/null +++ b/src/library/scala/ref/ReferenceWrapper.scala @@ -0,0 +1,33 @@ +/* __ *\ +** ________ ___ / / ___ Scala API ** +** / __/ __// _ | / / / _ | (c) 2006-2007, LAMP/EPFL ** +** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** +** /____/\___/_/ |_/____/_/ | | ** +** |/ ** +\* */ + +// $Id$ + +package scala.ref + +/** + * @author Sean McDirmid + */ +trait ReferenceWrapper[+T <: AnyRef] extends Reference[T] with Proxy { + val underlying: java.lang.ref.Reference[_ <: T] + @deprecated def isValid = underlying.get != null + override def get = { + val ret = underlying.get.asInstanceOf[T] + if (ret eq null) None else Some(ret) + } + def apply() = { + val ret = underlying.get.asInstanceOf[T] + if (ret eq null) throw new NoSuchElementException + ret + } + def clear = underlying.clear + def enqueue = underlying.enqueue + def isEnqueued = underlying.isEnqueued + + def self = underlying +} |