annotate java/src/java/util/TreeMap.d @ 21:9b96950f2c3c

the 'java' tree compiles on both D1-Tango and D2-Phobos
author Frank Benoit <benoit@tionex.de>
date Thu, 19 Mar 2009 20:38:55 +0100
parents eb8ff453285d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1 module java.util.TreeMap;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3 import java.lang.all;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4 import java.util.Map;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 import java.util.Set;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6 import java.util.Collection;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
7 import java.util.SortedMap;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
8 import java.util.TreeSet;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
9 import java.util.ArrayList;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
10
21
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
11 version(Tango){
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
12 static import tango.util.container.SortedMap;
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
13 } else { // Phobos
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
14 }
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
15
10
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
16
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
17 class TreeMap : Map, SortedMap {
21
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
18 version(Tango){
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
19 alias tango.util.container.SortedMap.SortedMap!(Object,Object) MapType;
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
20 private MapType map;
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
21 } else { // Phobos
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
22 }
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
23
10
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25 public this(){
21
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
26 version(Tango){
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
27 map = new MapType();
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
28 } else { // Phobos
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
29 implMissing( __FILE__, __LINE__ );
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
30 }
10
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 public this(Comparator c){
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 implMissing( __FILE__, __LINE__ );
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35 public this(Map m){
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 implMissing( __FILE__, __LINE__ );
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 public this(SortedMap m){
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 implMissing( __FILE__, __LINE__ );
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 public void clear(){
21
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
42 version(Tango){
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
43 map.clear();
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
44 } else { // Phobos
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
45 implMissing( __FILE__, __LINE__ );
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
46 }
10
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
47 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
48 Comparator comparator(){
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
49 implMissing( __FILE__, __LINE__ );
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
50 return null;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
51 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
52 public bool containsKey(Object key){
21
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
53 version(Tango){
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
54 Object v;
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
55 return map.get(key, v );
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
56 } else { // Phobos
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
57 implMissing( __FILE__, __LINE__ );
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
58 return false;
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
59 }
10
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61 public bool containsKey(String key){
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
62 return containsKey(stringcast(key));
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
63 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
64 public bool containsValue(Object value){
21
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
65 version(Tango){
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
66 return map.contains(value);
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
67 } else { // Phobos
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
68 implMissing( __FILE__, __LINE__ );
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
69 return false;
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
70 }
10
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72 public Set entrySet(){
21
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
73 version(Tango){
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
74 TreeSet res = new TreeSet();
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
75 foreach( k, v; map ){
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
76 res.add( new MapEntry(this,k) );
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
77 }
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
78 return res;
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
79 } else { // Phobos
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
80 implMissing( __FILE__, __LINE__ );
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
81 return null;
10
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
82 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
83 }
21
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
84 public override equals_t opEquals(Object o){
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
85 version(Tango){
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
86 if( auto other = cast(TreeMap) o ){
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
87 if( other.size() !is size() ){
10
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
88 return false;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
89 }
21
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
90 foreach( k, v; map ){
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
91 Object vo = other.get(k);
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
92 if( v != vo ){
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
93 return false;
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
94 }
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
95 }
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
96 return true;
10
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
97 }
21
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
98 return false;
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
99 } else { // Phobos
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
100 implMissing( __FILE__, __LINE__ );
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
101 return false;
10
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
102 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
103 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
104 Object firstKey(){
21
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
105 version(Tango){
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
106 foreach( k; map ){
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
107 return k;
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
108 }
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
109 throw new tango.core.Exception.NoSuchElementException( "TreeMap.firstKey" );
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
110 } else { // Phobos
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
111 implMissing( __FILE__, __LINE__ );
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
112 return null;
10
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
113 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
114 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
115 public Object get(Object key){
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
116 implMissing( __FILE__, __LINE__ );
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
117 return null;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
118 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
119 public Object get(String key){
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
120 return get(stringcast(key));
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
121 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
122 public override hash_t toHash(){
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
123 // http://java.sun.com/j2se/1.4.2/docs/api/java/util/AbstractMap.html#hashCode()
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
124 hash_t res = 0;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
125 foreach( e; entrySet() ){
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
126 res += e.toHash();
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
127 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
128 return res;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
129 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
130 SortedMap headMap(Object toKey){
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
131 implMissing( __FILE__, __LINE__ );
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
132 return null;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
133 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
134 public bool isEmpty(){
21
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
135 version(Tango){
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
136 return map.isEmpty();
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
137 } else { // Phobos
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
138 implMissing( __FILE__, __LINE__ );
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
139 return false;
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
140 }
10
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
141 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
142 public Set keySet(){
21
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
143 version(Tango){
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
144 TreeSet res = new TreeSet();
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
145 foreach( k; map ){
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
146 res.add( k );
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
147 }
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
148 return res;
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
149 } else { // Phobos
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
150 implMissing( __FILE__, __LINE__ );
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
151 return null;
10
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
152 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
153 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
154 Object lastKey(){
21
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
155 version(Tango){
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
156 Object res;
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
157 foreach( k; map ){
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
158 res = k;
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
159 }
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
160 if( map.size() ) return res;
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
161 throw new tango.core.Exception.NoSuchElementException( "TreeMap.lastKey" );
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
162 } else { // Phobos
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
163 implMissing( __FILE__, __LINE__ );
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
164 return null;
10
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
165 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
166 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
167 public Object put(Object key, Object value){
21
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
168 version(Tango){
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
169 if( map.contains(key) ){ // TODO if tango has opIn_r, then use the "in" operator
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
170 Object res = map[key];
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
171 map[key] = value;
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
172 return res;
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
173 }
10
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
174 map[key] = value;
21
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
175 return null;
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
176 } else { // Phobos
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
177 implMissing( __FILE__, __LINE__ );
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
178 return null;
10
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
179 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
180 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
181 public Object put(String key, Object value){
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
182 return put(stringcast(key), value);
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
183 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
184 public Object put(Object key, String value){
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
185 return put(key, stringcast(value));
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
186 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
187 public Object put(String key, String value){
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
188 return put(stringcast(key), stringcast(value));
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
189 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
190 public void putAll(Map t){
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
191 foreach( k, v; t ){
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
192 put( k, v );
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
193 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
194 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
195 public Object remove(Object key){
21
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
196 version(Tango){
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
197 Object res;
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
198 map.take(key,res);
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
199 return res;
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
200 } else { // Phobos
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
201 implMissing( __FILE__, __LINE__ );
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
202 return null;
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
203 }
10
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
204 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
205 public Object remove(String key){
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
206 return remove(stringcast(key));
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
207 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
208 public int size(){
21
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
209 version(Tango){
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
210 return map.size();
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
211 } else { // Phobos
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
212 implMissing( __FILE__, __LINE__ );
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
213 return 0;
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
214 }
10
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
215 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
216 SortedMap subMap(Object fromKey, Object toKey){
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
217 implMissing( __FILE__, __LINE__ );
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
218 return null;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
219 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
220 SortedMap tailMap(Object fromKey){
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
221 implMissing( __FILE__, __LINE__ );
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
222 return null;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
223 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
224 public Collection values(){
21
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
225 version(Tango){
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
226 ArrayList res = new ArrayList( size() );
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
227 foreach( k, v; map ){
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
228 res.add( v );
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
229 }
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
230 return res;
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
231 } else { // Phobos
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
232 implMissing( __FILE__, __LINE__ );
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
233 return null;
10
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
234 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
235 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
236
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
237 public int opApply (int delegate(ref Object value) dg){
21
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
238 version(Tango){
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
239 return map.opApply( dg );
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
240 } else { // Phobos
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
241 implMissing( __FILE__, __LINE__ );
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
242 return 0;
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
243 }
10
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
244 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
245 public int opApply (int delegate(ref Object key, ref Object value) dg){
21
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
246 version(Tango){
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
247 return map.opApply( dg );
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
248 } else { // Phobos
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
249 implMissing( __FILE__, __LINE__ );
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
250 return 0;
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
251 }
10
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
252 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
253 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
254