summaryrefslogtreecommitdiff
path: root/src/library/scala/collection/mutable/MapProxy.scala
blob: 8081e3a66acefc397e257114ad0e833a1849a66e (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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/*                     __                                               *\
**     ________ ___   / /  ___     Scala API                            **
**    / __/ __// _ | / /  / _ |    (c) 2003, LAMP/EPFL                  **
**  __\ \/ /__/ __ |/ /__/ __ |                                         **
** /____/\___/_/ |_/____/_/ | |                                         **
**                          |/                                          **
** $Id$
\*                                                                      */

package scala.collection.mutable;


/** This is a simple wrapper class for <code>scala.collection.mutable.Map</code>.
 *  It is most useful for assembling customized map abstractions
 *  dynamically using object composition and forwarding.
 *
 *  @author  Matthias Zenger
 *  @version 1.0, 21/07/2003
 */
trait MapProxy[A, B] extends Map[A, B] with scala.collection.MapProxy[A, B] {

    def self: Map[A, B];

    def update(key: A, value: B): Unit = self.update(key, value);

    override def ++=(map: Iterable[Pair[A, B]]): Unit = self ++= map;

    override def ++=(it: Iterator[Pair[A, B]]): Unit = self ++= it;

    override def incl(mappings: Pair[A, B]*): Unit = self ++= mappings;

    def -=(key: A): Unit = self -= key;

    override def --=(keys: Iterable[A]): Unit = self --= keys;

    override def --=(it: Iterator[A]): Unit = self --= it;

    override def excl(keys: A*): Unit = self --= keys;

    override def clear: Unit = self.clear;

    override def map(f: (A, B) => B): Unit = self.map(f);

    override def filter(p: (A, B) => Boolean): Unit = self.filter(p);

    override def toString() = self.toString();

    override def mappingToString(p: Pair[A, B]) = self.mappingToString(p);

    override def <<(cmd: Message[Pair[A, B]]): Unit = self << cmd;

    override def clone(): Map[A, B] = new MapProxy[A, B] { def self = MapProxy.this.self.clone() }
}