summaryrefslogtreecommitdiff
path: root/sources/scala/collection/mutable/SynchronizedMap.scala
blob: 09d3f1e8dfbc2291ab6c39f6e7d2c80b4fbee7d2 (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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
/*                     __                                               *\
**     ________ ___   / /  ___     Scala API                            **
**    / __/ __// _ | / /  / _ |    (c) 2003, LAMP/EPFL                  **
**  __\ \/ /__/ __ |/ /__/ __ |                                         **
** /____/\___/_/ |_/____/_/ | |                                         **
**                          |/                                          **
** $Id$
\*                                                                      */

package scala.collection.mutable;


/** This trait should be used as a mixin. It synchronizes the <code>Map</code>
 *  functions of the class into which it is mixed in.
 *
 *  @author  Matthias Zenger
 *  @version 1.0, 08/07/2003
 */
trait SynchronizedMap[A, B] extends scala.collection.mutable.Map[A, B] {

    abstract override def size: Int = synchronized {
        super.size;
    }

    abstract override def get(key: A): Option[B] = synchronized {
        super.get(key);
    }

    override def isEmpty: Boolean = synchronized {
        super.isEmpty;
    }

    override def apply(key: A): B = synchronized {
        super.apply(key);
    }

    override def contains(key: A): Boolean = synchronized {
        super.contains(key);
    }

    override def isDefinedAt(key: A) = synchronized {
        super.isDefinedAt(key);
    }

    override def keys: Iterator[A] = synchronized {
        super.keys;
    }

    override def values: Iterator[B] = synchronized {
        super.values;
    }

    override def foreach(f: (A, B) => Unit) = synchronized {
        super.foreach(f);
    }

    override def toList: List[Pair[A, B]] = synchronized {
        super.toList;
    }

    abstract override def update(key: A, value: B): Unit = synchronized {
        super.update(key, value);
    }

    abstract override def -=(key: A): Unit = synchronized {
        super.-=(key);
    }

    override def incl(mappings: Pair[A, B]*): Unit = synchronized {
        super.incl(mappings);
    }

    override def incl(map: Iterable[Pair[A, B]]): Unit = synchronized {
        super.incl(map);
    }

    override def excl(keys: A*): Unit = synchronized {
        super.excl(keys);
    }

    override def excl(keys: Iterable[A]): Unit = synchronized {
        super.excl(keys);
    }

    override def clear: Unit = synchronized {
        super.clear;
    }

    override def map(f: (A, B) => B): Unit = synchronized {
        super.map(f);
    }

    override def filter(p: (A, B) => Boolean): Unit = synchronized {
        super.filter(p);
    }

    override def toString() = synchronized {
        super.toString();
    }
}