annotate dwt/dwthelper/associativearray.d @ 129:ad4e1fe71a5a

Fixed runtime errors
author Jacob Carlborg <doob@me.com>
date Sun, 18 Jan 2009 18:39:46 +0100
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
129
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
1 /**
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
2 * Copyright: Copyright (c) 2008 Jacob Carlborg. All rights reserved.
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
3 * Authors: Jacob Carlborg
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
4 * Version: Initial created: 2008
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
5 * License: $(LINK2 http://opensource.org/licenses/bsd-license.php, BSD Style)
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
6 *
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
7 */
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
8 module dwt.dwthelper.associativearray;
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
9
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
10 /**
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
11 * Returns the value to which the specified key is mapped,
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
12 * or ($D_CODE null) if this associative array contains no mapping for the key.
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
13 *
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
14 * $(P More formally, if the specified associative array contains a mapping from a key
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
15 * $(D_CODE k) to a value $(D_CODE v) such that $(D_CODE (key==null ? k==null :
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
16 * key.equals(k))), then this method returns $(D_CODE v); otherwise
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
17 * it returns $(D_CODE null). (There can be at most one such mapping.))
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
18 *
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
19 * Params:
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
20 * aa = the associative array to get the value from
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
21 * key = the key whose associated value is to be returned
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
22 *
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
23 *
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
24 * Returns: the value to which the specified key is mapped, or
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
25 * $(D_CODE null) if this map contains no mapping for the key
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
26 *
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
27 * Throws: AssertException if any paramter is invalid
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
28 */
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
29 V get (K, V) (V[K] aa, K key)
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
30 in
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
31 {
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
32 assert(aa.length > 0);
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
33 }
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
34 body
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
35 {
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
36 return aa[key];
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
37 }
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
38
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
39 /**
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
40 * Associates the specified value with the specified key in the specified
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
41 * associative array. If the associative array previously contained a mapping for
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
42 * the key, the old value is replaced by the specified value. (An associative array
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
43 * <tt>aa</tt> is said to contain a mapping for a key <tt>k</tt> if and only
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
44 * if $(LINK2 #containsKey(Object), m.containsKey(k)) would return
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
45 * <tt>true</tt>.)
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
46 *
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
47 * Params:
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
48 * aa = the associative array to add the key/value pair to
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
49 * key = key with which the specified value is to be associated
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
50 * value = value to be associated with the specified key
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
51 *
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
52 * Returns: the previous value associated with <tt>key</tt>, or
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
53 * <tt>null</tt> if there was no mapping for <tt>key</tt>.
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
54 * (A <tt>null</tt> return can also indicate that the
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
55 * associative array previously associated <tt>null</tt>
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
56 * with <tt>key</tt>.)
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
57 */
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
58 V put (K, V) (V[K] aa, K key, V value)
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
59 {
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
60 return aa[key] = value;
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
61 }
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
62
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
63 /**
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
64 * Removes the mapping for a key from the specified
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
65 * associative array if it is present. More formally,
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
66 * if the associative array contains a mapping
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
67 * from key <tt>k</tt> to value <tt>v</tt> such that
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
68 * $(D_CODE (key==null ? k==null : key.equals(k))), that mapping
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
69 * is removed. (The associative array can contain at most one such mapping.)
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
70 *
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
71 * $(P Returns the value to which the associative array previously associated the key,
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
72 * or <tt>null</tt> if the map contained no mapping for the key.)
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
73 *
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
74 * Params:
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
75 * aa = the associative array to remove the key/value pair from
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
76 * key = key whose mapping is to be removed from the associative array
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
77 *
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
78 * Returns:
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
79 */
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
80 V remove (K, V) (V[K] aa, K key)
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
81 {
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
82 V v = aa[key];
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
83 aa.remove(k);
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
84
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
85 return v;
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
86 }
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
87
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
88 /**
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
89 * Returns <tt>true</tt> if the specified
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
90 * associative array contains no key-value mappings.
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
91 *
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
92 * Params:
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
93 * aa = the associative array to check if it's empty
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
94 *
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
95 * Returns: <tt>true</tt> if the specified
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
96 * associative array contains no key-value mappings
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
97 */
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
98 bool isEmpty (K, V) (V[K] aa)
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
99 {
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
100 return aa.length == 0;
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
101 }
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
102
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
103
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
104 /**
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
105 * Returns a array of the values contained in the
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
106 * specifed associative array. The array is backed by
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
107 * the associative array(if it contains classes or pointers),
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
108 * so changes to the associative array are reflected in
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
109 * the array, and vice-versa. If the associative array is
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
110 * modified while an iteration over the collection is in progress
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
111 * (except through the iterator's own <tt>remove</tt> operation),
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
112 * the results of the iteration are undefined. The collection
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
113 * supports element removal, which removes the corresponding
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
114 * mapping from the map, via the <tt>Iterator.remove</tt>,
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
115 * <tt>Collection.remove</tt>, <tt>removeAll</tt>,
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
116 * <tt>retainAll</tt> and <tt>clear</tt> operations. It does not
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
117 * support the <tt>add</tt> or <tt>addAll</tt> operations.
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
118 *
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
119 * Params:
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
120 * aa = the associative array to get the values from
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
121 *
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
122 * Returns: a collection view of the values contained in this map
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
123 */
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
124 V[] values (K, V) (V[K] aa)
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
125 {
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
126 return aa.values;
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
127 }
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
128
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
129 /**
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
130 * Removes all mappings from this map
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
131 */
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
132 void clear (K, V) (V[K] aa)
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
133 {
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
134 foreach (k, v ; aa)
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
135 aa.remove(k);
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
136 }
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
137
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
138 /**
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
139 * Returns the number of key-value mappings in
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
140 * the specifed associative array
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
141 *
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
142 * Params:
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
143 * aa = the associative array to get the number of key-value mappings from
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
144 *
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
145 * Returns: the number of key-value mappings in the associative array
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
146 */
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
147 /*int size (K, V) (V[K] aa)
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
148 {
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
149 aa.length;
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents:
diff changeset
150 }*/