comparison tango/tango/util/collection/model/Map.d @ 132:1700239cab2e trunk

[svn r136] MAJOR UNSTABLE UPDATE!!! Initial commit after moving to Tango instead of Phobos. Lots of bugfixes... This build is not suitable for most things.
author lindquist
date Fri, 11 Jan 2008 17:57:40 +0100
parents
children
comparison
equal deleted inserted replaced
131:5825d48b27d1 132:1700239cab2e
1 /*
2 File: Map.d
3
4 Originally written by Doug Lea and released into the public domain.
5 Thanks for the assistance and support of Sun Microsystems Labs, Agorics
6 Inc, Loral, and everyone contributing, testing, and using this code.
7
8 History:
9 Date Who What
10 24Sep95 dl@cs.oswego.edu Create from collections.d working file
11
12 */
13
14
15 module tango.util.collection.model.Map;
16
17 private import tango.util.collection.model.MapView,
18 tango.util.collection.model.Dispenser;
19
20
21 /**
22 *
23 *
24 * MutableMap supports standard update operations on maps.
25 *
26 *
27 author: Doug Lea
28 * @version 0.93
29 *
30 * <P> For an introduction to this package see <A HREF="index.html"> Overview </A>.
31 **/
32
33
34 public interface Map(K, T) : MapView!(K, T), Dispenser!(T)
35 {
36 /**
37 * Include the indicated pair in the Map
38 * If a different pair
39 * with the same key was previously held, it is replaced by the
40 * new pair.
41 *
42 * @param key the key for element to include
43 * @param element the element to include
44 * Returns: condition:
45 * <PRE>
46 * has(key, element) &&
47 * no spurious effects &&
48 * Version change iff !PREV(this).contains(key, element))
49 * </PRE>
50 **/
51
52 public void add (K key, T element);
53
54 /**
55 * Include the indicated pair in the Map
56 * If a different pair
57 * with the same key was previously held, it is replaced by the
58 * new pair.
59 *
60 * @param element the element to include
61 * @param key the key for element to include
62 * Returns: condition:
63 * <PRE>
64 * has(key, element) &&
65 * no spurious effects &&
66 * Version change iff !PREV(this).contains(key, element))
67 * </PRE>
68 **/
69
70 public void opIndexAssign (T element, K key);
71
72
73 /**
74 * Remove the pair with the given key
75 * @param key the key
76 * Returns: condition:
77 * <PRE>
78 * !containsKey(key)
79 * foreach (k in keys()) at(k).equals(PREV(this).at(k)) &&
80 * foreach (k in PREV(this).keys()) (!k.equals(key)) --> at(k).equals(PREV(this).at(k))
81 * (version() != PREV(this).version()) ==
82 * containsKey(key) != PREV(this).containsKey(key))
83 * </PRE>
84 **/
85
86 public void removeKey (K key);
87
88
89 /**
90 * Replace old pair with new pair with same key.
91 * No effect if pair not held. (This has the case of
92 * having no effect if the key exists but is bound to a different value.)
93 * @param key the key for the pair to remove
94 * @param oldElement the existing element
95 * @param newElement the value to replace it with
96 * Returns: condition:
97 * <PRE>
98 * !contains(key, oldElement) || contains(key, newElement);
99 * no spurious effects &&
100 * Version change iff PREV(this).contains(key, oldElement))
101 * </PRE>
102 **/
103
104 public void replacePair (K key, T oldElement, T newElement);
105 }
106