annotate base/src/java/util/AbstractList.d @ 84:fcf926c91ca4

Added base classes
author Frank Benoit <benoit@tionex.de>
date Sat, 18 Apr 2009 09:25:29 +0200
parents 1bf55a6eb092
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.AbstractList;
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.Collection;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 import java.util.AbstractCollection;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6 import java.util.List;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
7 import java.util.ListIterator;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
8 import java.util.Iterator;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
9
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
10 abstract class AbstractList : AbstractCollection, List {
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
11 this(){
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
13
84
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
14 public void add(int index, Object element){
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
15 throw new UnsupportedOperationException();
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
16 }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
17 public bool add(String o){
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
18 return add(stringcast(o));
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
19 }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
20 public bool add(Object o){
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
21 add(size(), o);
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
22 return true;
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
23 }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
24 public bool addAll(Collection c){
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
25 throw new UnsupportedOperationException();
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
26 }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
27 public bool addAll(int index, Collection c){
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
28 throw new UnsupportedOperationException();
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
29 }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
30 public void clear(){
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
31 throw new UnsupportedOperationException();
10
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 }
84
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
33 public bool contains(Object o){ return super.contains(o); }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
34 public bool contains(String str){ return contains(stringcast(str)); }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
35 public bool containsAll(Collection c){ return super.containsAll(c); }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
36 public equals_t opEquals(Object o){
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
37 if( auto other = cast(List)o ){
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
38 if( other is cast(List)this ){
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
39 return true;
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
40 }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
41 auto it1 = this.iterator();
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
42 auto it2 = other.iterator();
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
43 while(true){
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
44 bool n1 = it1.hasNext();
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
45 bool n2 = it2.hasNext();
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
46 if( !n1 && !n2 ) return true;
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
47 if( (n1 && !n2) || (!n1 && n2 )) return false;
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
48 Object o1 = it1.next();
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
49 Object o2 = it2.next();
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
50 if( o1 is null ){
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
51 if( o2 !is null ){
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
52 return false;
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
53 }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
54 }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
55 else{
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
56 if( o2 is null ){
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
57 return false;
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
58 }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
59 if( o1 != o2 ){
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
60 return false;
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
61 }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
62 }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
63 }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
64 }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
65 return false;
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
66 }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
67
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
68 public abstract Object get(int index);
10
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
69
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
70 public hash_t toHash(){
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71 // http://java.sun.com/j2se/1.4.2/docs/api/java/util/List.html#hashCode()
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72 hash_t hashCode = 1;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
73 Iterator i = iterator();
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
74 while (i.hasNext()) {
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
75 Object obj = i.next();
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
76 hashCode = 31 * hashCode + (obj is null ? 0 : obj.toHash());
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
77 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
78 return hashCode;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
79 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
80
84
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
81 public int indexOf(Object o){
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
82 auto it = listIterator();
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
83 int idx = 0;
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
84 while(it.hasNext()){
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
85 auto t = it.next();
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
86 if( t is null ? o is null : t == o){
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
87 return idx;
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
88 }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
89 idx++;
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
90 }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
91 return -1;
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
92 }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
93 public bool isEmpty(){
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
94 return super.isEmpty();
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
95 }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
96 public Iterator iterator(){
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
97 implMissing( __FILE__, __LINE__ );
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
98 return null;
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
99 }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
100 public int lastIndexOf(Object o){
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
101 implMissing( __FILE__, __LINE__ );
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
102 return 0;
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
103 }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
104 public ListIterator listIterator(){
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
105 implMissing( __FILE__, __LINE__ );
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
106 return null;
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
107 }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
108 public ListIterator listIterator(int index){
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
109 implMissing( __FILE__, __LINE__ );
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
110 return null;
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
111 }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
112 public Object remove(int index){
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
113 throw new UnsupportedOperationException();
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
114 }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
115 protected void removeRange(int fromIndex, int toIndex){
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
116 }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
117 public bool remove(Object o){ return super.remove(o); }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
118 public bool remove(String o){ return super.remove(o); }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
119 public bool removeAll(Collection c){ return super.removeAll(c); }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
120 public bool retainAll(Collection c){ return super.retainAll(c); }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
121 public Object set(int index, Object element){
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
122 throw new UnsupportedOperationException();
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
123 }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
124 public List subList(int fromIndex, int toIndex){
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
125 implMissing( __FILE__, __LINE__ );
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
126 return null;
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
127 }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
128 public Object[] toArray(){ return super.toArray(); }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
129 public Object[] toArray(Object[] a){ return super.toArray(a); }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
130 public String[] toArray(String[] a){ return super.toArray(a); }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
131 public int opApply (int delegate(ref Object value) dg){
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
132 implMissing( __FILE__, __LINE__ );
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
133 return 0;
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
134 }
10
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
135
84
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
136 public String toString(){
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
137 return super.toString();
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
138 }
10
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
139 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
140