diff 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
line wrap: on
line diff
--- a/base/src/java/util/AbstractList.d	Tue Apr 14 13:22:56 2009 +0200
+++ b/base/src/java/util/AbstractList.d	Sat Apr 18 09:25:29 2009 +0200
@@ -11,18 +11,61 @@
     this(){
     }
 
-    public abstract void   add(int index, Object element);
-    public abstract bool        add(Object o);
-    public abstract bool     addAll(Collection c);
-    public abstract bool        addAll(int index, Collection c);
-    public abstract void   clear();
-    public abstract bool     contains(Object o);
-    public bool contains(String str){
-        return contains(stringcast(str));
+    public void add(int index, Object element){
+        throw new UnsupportedOperationException();
+    }
+    public bool add(String o){
+        return add(stringcast(o));
+    }
+    public bool add(Object o){
+        add(size(), o);
+        return true;
+    }
+    public bool addAll(Collection c){
+        throw new UnsupportedOperationException();
+    }
+    public bool addAll(int index, Collection c){
+        throw new UnsupportedOperationException();
+    }
+    public void clear(){
+        throw new UnsupportedOperationException();
     }
-    public abstract bool     containsAll(Collection c);
-    public abstract equals_t  opEquals(Object o);
-    public abstract  Object        get(int index);
+    public bool contains(Object o){ return super.contains(o); }
+    public bool contains(String str){ return contains(stringcast(str)); }
+    public bool     containsAll(Collection c){ return super.containsAll(c); }
+    public equals_t  opEquals(Object o){
+        if( auto other = cast(List)o ){
+            if( other is cast(List)this ){
+                return true;
+            }
+            auto it1 = this.iterator();
+            auto it2 = other.iterator();
+            while(true){
+                bool n1 = it1.hasNext();
+                bool n2 = it2.hasNext();
+                if( !n1 && !n2 ) return true;
+                if( (n1 && !n2) || (!n1 && n2 )) return false;
+                Object o1 = it1.next();
+                Object o2 = it2.next();
+                if( o1 is null ){
+                    if( o2 !is null ){
+                        return false;
+                    }
+                }
+                else{
+                    if( o2 is null ){
+                        return false;
+                    }
+                    if( o1 != o2 ){
+                        return false;
+                    }
+                }
+            }
+        }
+        return false;
+    }
+
+    public abstract Object get(int index);
 
     public hash_t  toHash(){
         // http://java.sun.com/j2se/1.4.2/docs/api/java/util/List.html#hashCode()
@@ -35,22 +78,63 @@
         return hashCode;
     }
 
-    public abstract int    indexOf(Object o);
-    public abstract bool     isEmpty();
-    public abstract Iterator       iterator();
-    public abstract int    lastIndexOf(Object o);
-    public abstract ListIterator   listIterator();
-    public abstract ListIterator   listIterator(int index);
-    public abstract Object         remove(int index);
-    protected abstract void         removeRange(int fromIndex, int toIndex);
-    public abstract bool     remove(Object o);
-    public abstract bool     remove(String o);
-    public abstract bool     removeAll(Collection c);
-    public abstract bool     retainAll(Collection c);
-    public abstract Object         set(int index, Object element);
-    public abstract List   subList(int fromIndex, int toIndex);
-    public abstract Object[] toArray();
-    public abstract Object[] toArray(Object[] a);
+    public int    indexOf(Object o){
+        auto it = listIterator();
+        int idx = 0;
+        while(it.hasNext()){
+            auto t = it.next();
+            if( t is null ? o is null : t == o){
+                return idx;
+            }
+            idx++;
+        }
+        return -1;
+    }
+    public bool     isEmpty(){
+        return super.isEmpty();
+    }
+    public Iterator iterator(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    public int    lastIndexOf(Object o){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    public ListIterator   listIterator(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    public ListIterator   listIterator(int index){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    public Object         remove(int index){
+        throw new UnsupportedOperationException();
+    }
+    protected void         removeRange(int fromIndex, int toIndex){
+    }
+    public bool     remove(Object o){ return super.remove(o); }
+    public bool     remove(String o){ return super.remove(o); }
+    public bool     removeAll(Collection c){ return super.removeAll(c); }
+    public bool     retainAll(Collection c){ return super.retainAll(c); }
+    public Object set(int index, Object element){
+        throw new UnsupportedOperationException();
+    }
+    public List   subList(int fromIndex, int toIndex){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    public Object[] toArray(){ return super.toArray(); }
+    public Object[] toArray(Object[] a){ return super.toArray(a); }
+    public String[] toArray(String[] a){ return super.toArray(a); }
+    public int opApply (int delegate(ref Object value) dg){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
 
+    public String toString(){
+        return super.toString();
+    }
 }