Mercurial > projects > dwt-mac
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dwt/dwthelper/associativearray.d Sun Jan 18 18:39:46 2009 +0100 @@ -0,0 +1,150 @@ +/** + * Copyright: Copyright (c) 2008 Jacob Carlborg. All rights reserved. + * Authors: Jacob Carlborg + * Version: Initial created: 2008 + * License: $(LINK2 http://opensource.org/licenses/bsd-license.php, BSD Style) + * + */ +module dwt.dwthelper.associativearray; + +/** + * Returns the value to which the specified key is mapped, + * or ($D_CODE null) if this associative array contains no mapping for the key. + * + * $(P More formally, if the specified associative array contains a mapping from a key + * $(D_CODE k) to a value $(D_CODE v) such that $(D_CODE (key==null ? k==null : + * key.equals(k))), then this method returns $(D_CODE v); otherwise + * it returns $(D_CODE null). (There can be at most one such mapping.)) + * + * Params: + * aa = the associative array to get the value from + * key = the key whose associated value is to be returned + * + * + * Returns: the value to which the specified key is mapped, or + * $(D_CODE null) if this map contains no mapping for the key + * + * Throws: AssertException if any paramter is invalid + */ +V get (K, V) (V[K] aa, K key) +in +{ + assert(aa.length > 0); +} +body +{ + return aa[key]; +} + +/** + * Associates the specified value with the specified key in the specified + * associative array. If the associative array previously contained a mapping for + * the key, the old value is replaced by the specified value. (An associative array + * <tt>aa</tt> is said to contain a mapping for a key <tt>k</tt> if and only + * if $(LINK2 #containsKey(Object), m.containsKey(k)) would return + * <tt>true</tt>.) + * + * Params: + * aa = the associative array to add the key/value pair to + * key = key with which the specified value is to be associated + * value = value to be associated with the specified key + * + * Returns: the previous value associated with <tt>key</tt>, or + * <tt>null</tt> if there was no mapping for <tt>key</tt>. + * (A <tt>null</tt> return can also indicate that the + * associative array previously associated <tt>null</tt> + * with <tt>key</tt>.) + */ +V put (K, V) (V[K] aa, K key, V value) +{ + return aa[key] = value; +} + +/** + * Removes the mapping for a key from the specified + * associative array if it is present. More formally, + * if the associative array contains a mapping + * from key <tt>k</tt> to value <tt>v</tt> such that + * $(D_CODE (key==null ? k==null : key.equals(k))), that mapping + * is removed. (The associative array can contain at most one such mapping.) + * + * $(P Returns the value to which the associative array previously associated the key, + * or <tt>null</tt> if the map contained no mapping for the key.) + * + * Params: + * aa = the associative array to remove the key/value pair from + * key = key whose mapping is to be removed from the associative array + * + * Returns: + */ +V remove (K, V) (V[K] aa, K key) +{ + V v = aa[key]; + aa.remove(k); + + return v; +} + +/** + * Returns <tt>true</tt> if the specified + * associative array contains no key-value mappings. + * + * Params: + * aa = the associative array to check if it's empty + * + * Returns: <tt>true</tt> if the specified + * associative array contains no key-value mappings + */ +bool isEmpty (K, V) (V[K] aa) +{ + return aa.length == 0; +} + + +/** + * Returns a array of the values contained in the + * specifed associative array. The array is backed by + * the associative array(if it contains classes or pointers), + * so changes to the associative array are reflected in + * the array, and vice-versa. If the associative array is + * modified while an iteration over the collection is in progress + * (except through the iterator's own <tt>remove</tt> operation), + * the results of the iteration are undefined. The collection + * supports element removal, which removes the corresponding + * mapping from the map, via the <tt>Iterator.remove</tt>, + * <tt>Collection.remove</tt>, <tt>removeAll</tt>, + * <tt>retainAll</tt> and <tt>clear</tt> operations. It does not + * support the <tt>add</tt> or <tt>addAll</tt> operations. + * + * Params: + * aa = the associative array to get the values from + * + * Returns: a collection view of the values contained in this map + */ +V[] values (K, V) (V[K] aa) +{ + return aa.values; +} + +/** + * Removes all mappings from this map + */ +void clear (K, V) (V[K] aa) +{ + foreach (k, v ; aa) + aa.remove(k); +} + +/** + * Returns the number of key-value mappings in + * the specifed associative array + * + * Params: + * aa = the associative array to get the number of key-value mappings from + * + * Returns: the number of key-value mappings in the associative array + */ +/*int size (K, V) (V[K] aa) +{ + aa.length; +}*/ \ No newline at end of file