Mercurial > projects > dwt2
view base/src/java/util/TreeMap.d @ 77:af948d4bbf8c
Impls for core.jobs
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Mon, 13 Apr 2009 13:58:00 +0200 |
parents | 1bf55a6eb092 |
children | bbe49769ec18 |
line wrap: on
line source
module java.util.TreeMap; import java.lang.all; import java.util.Map; import java.util.Set; import java.util.Collection; import java.util.SortedMap; import java.util.TreeSet; import java.util.ArrayList; version(Tango){ static import tango.util.container.SortedMap; } else { // Phobos } class TreeMap : Map, SortedMap { version(Tango){ alias tango.util.container.SortedMap.SortedMap!(Object,Object) MapType; private MapType map; } else { // Phobos } public this(){ version(Tango){ map = new MapType(); } else { // Phobos implMissing( __FILE__, __LINE__ ); } } public this(Comparator c){ implMissing( __FILE__, __LINE__ ); } public this(Map m){ implMissing( __FILE__, __LINE__ ); } public this(SortedMap m){ implMissing( __FILE__, __LINE__ ); } public void clear(){ version(Tango){ map.clear(); } else { // Phobos implMissing( __FILE__, __LINE__ ); } } Comparator comparator(){ implMissing( __FILE__, __LINE__ ); return null; } public bool containsKey(Object key){ version(Tango){ Object v; return map.get(key, v ); } else { // Phobos implMissing( __FILE__, __LINE__ ); return false; } } public bool containsKey(String key){ return containsKey(stringcast(key)); } public bool containsValue(Object value){ version(Tango){ return map.contains(value); } else { // Phobos implMissing( __FILE__, __LINE__ ); return false; } } public Set entrySet(){ version(Tango){ TreeSet res = new TreeSet(); foreach( k, v; map ){ res.add( new MapEntry(this,k) ); } return res; } else { // Phobos implMissing( __FILE__, __LINE__ ); return null; } } public override equals_t opEquals(Object o){ version(Tango){ if( auto other = cast(TreeMap) o ){ if( other.size() !is size() ){ return false; } foreach( k, v; map ){ Object vo = other.get(k); if( v != vo ){ return false; } } return true; } return false; } else { // Phobos implMissing( __FILE__, __LINE__ ); return false; } } Object firstKey(){ version(Tango){ foreach( k; map ){ return k; } throw new tango.core.Exception.NoSuchElementException( "TreeMap.firstKey" ); } else { // Phobos implMissing( __FILE__, __LINE__ ); return null; } } public Object get(Object key){ implMissing( __FILE__, __LINE__ ); return null; } public Object get(String key){ return get(stringcast(key)); } public override hash_t toHash(){ // http://java.sun.com/j2se/1.4.2/docs/api/java/util/AbstractMap.html#hashCode() hash_t res = 0; foreach( e; entrySet() ){ res += e.toHash(); } return res; } SortedMap headMap(Object toKey){ implMissing( __FILE__, __LINE__ ); return null; } public bool isEmpty(){ version(Tango){ return map.isEmpty(); } else { // Phobos implMissing( __FILE__, __LINE__ ); return false; } } public Set keySet(){ version(Tango){ TreeSet res = new TreeSet(); foreach( k; map ){ res.add( k ); } return res; } else { // Phobos implMissing( __FILE__, __LINE__ ); return null; } } Object lastKey(){ version(Tango){ Object res; foreach( k; map ){ res = k; } if( map.size() ) return res; throw new tango.core.Exception.NoSuchElementException( "TreeMap.lastKey" ); } else { // Phobos implMissing( __FILE__, __LINE__ ); return null; } } public Object put(Object key, Object value){ version(Tango){ if( map.contains(key) ){ // TODO if tango has opIn_r, then use the "in" operator Object res = map[key]; map[key] = value; return res; } map[key] = value; return null; } else { // Phobos implMissing( __FILE__, __LINE__ ); return null; } } public Object put(String key, Object value){ return put(stringcast(key), value); } public Object put(Object key, String value){ return put(key, stringcast(value)); } public Object put(String key, String value){ return put(stringcast(key), stringcast(value)); } public void putAll(Map t){ foreach( k, v; t ){ put( k, v ); } } public Object remove(Object key){ version(Tango){ Object res; map.take(key,res); return res; } else { // Phobos implMissing( __FILE__, __LINE__ ); return null; } } public Object remove(String key){ return remove(stringcast(key)); } public int size(){ version(Tango){ return map.size(); } else { // Phobos implMissing( __FILE__, __LINE__ ); return 0; } } SortedMap subMap(Object fromKey, Object toKey){ implMissing( __FILE__, __LINE__ ); return null; } SortedMap tailMap(Object fromKey){ implMissing( __FILE__, __LINE__ ); return null; } public Collection values(){ version(Tango){ ArrayList res = new ArrayList( size() ); foreach( k, v; map ){ res.add( v ); } return res; } else { // Phobos implMissing( __FILE__, __LINE__ ); return null; } } public int opApply (int delegate(ref Object value) dg){ version(Tango){ return map.opApply( dg ); } else { // Phobos implMissing( __FILE__, __LINE__ ); return 0; } } public int opApply (int delegate(ref Object key, ref Object value) dg){ version(Tango){ return map.opApply( dg ); } else { // Phobos implMissing( __FILE__, __LINE__ ); return 0; } } }