diff options
Diffstat (limited to 'src/library/scala/xml/persistent/SetStorage.scala')
-rw-r--r-- | src/library/scala/xml/persistent/SetStorage.scala | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/library/scala/xml/persistent/SetStorage.scala b/src/library/scala/xml/persistent/SetStorage.scala new file mode 100644 index 0000000000..1391f1f76e --- /dev/null +++ b/src/library/scala/xml/persistent/SetStorage.scala @@ -0,0 +1,43 @@ +/* __ *\ +** ________ ___ / / ___ Scala API ** +** / __/ __// _ | / / / _ | (c) 2002-2007, LAMP/EPFL ** +** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** +** /____/\___/_/ |_/____/_/ | | ** +** |/ ** +\* */ + +// $Id$ + +package scala.xml.persistent + +import scala.collection.mutable +import java.io.File + +/** A persistent store with set semantics. This class allows to add and remove + * trees, but never contains two structurally equal trees. + * + * @author Burak Emir + */ +class SetStorage(file: File) extends CachedFileStorage(file) { + + private var theSet: mutable.HashSet[Node] = new mutable.HashSet[Node] + + // initialize + + { + val it = super.initialNodes + dirty = it.hasNext + for(val x <- it) { + theSet += x; + } + } + + /* forwarding methods to hashset*/ + + def += (e: Node): Unit = synchronized { this.dirty = true; theSet += e } + + def -= (e: Node): Unit = synchronized { this.dirty = true; theSet -= e } + + def nodes = synchronized { theSet.elements } + +} |