diff base/src/java/util/TreeMap.d @ 27:1bf55a6eb092

Renamed java tree to base
author Frank Benoit <benoit@tionex.de>
date Sat, 21 Mar 2009 11:33:57 +0100
parents java/src/java/util/TreeMap.d@9b96950f2c3c
children bbe49769ec18
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/base/src/java/util/TreeMap.d	Sat Mar 21 11:33:57 2009 +0100
@@ -0,0 +1,254 @@
+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;
+        }
+    }
+}
+