view dwtx/dwtxhelper/Collection.d @ 100:86617aa6b5dd

More helper classes, needed by draw2d
author Frank Benoit <benoit@tionex.de>
date Sun, 03 Aug 2008 00:54:29 +0200
parents
children 1082a0fc2bb8
line wrap: on
line source

module dwtx.dwtxhelper.Collection;

import dwt.dwthelper.utils;

static import tango.util.container.CircularList;
static import tango.util.container.HashMap;
static import tango.util.container.SortedMap;
static import tango.util.container.more.Vector;

interface Iterator{
    public bool hasNext();
    public Object next();
    public void  remove();
}

interface Collection {
    public bool     add(Object o);
    public bool    addAll(Collection c);
    public void   clear();
    public bool    contains(Object o);
    public bool    containsAll(Collection c);
    public int    opEquals(Object o);
    public hash_t   toHash();
    public bool    isEmpty();
    public Iterator   iterator();
    public bool    remove(Object o);
    public bool    removeAll(Collection c);
    public bool    retainAll(Collection c);
    public int    size();
    public Object[]   toArray();
    public Object[]   toArray(Object[] a);
}

interface Map {
    public void clear();
    public bool containsKey(Object key);
    public bool containsValue(Object value);
    public Set  entrySet();
    public int opEquals(Object o);
    public Object get(Object key);
    public hash_t toHash();
    public bool isEmpty();
    public Set    keySet();
    public Object put(Object key, Object value);
    public void   putAll(Map t);
    public Object remove(Object key);
    public int    size();
    public Collection values();

    // only for D
    public int opApply (int delegate(ref Object value) dg);
    public int opApply (int delegate(ref Object key, ref Object value) dg);
}

interface List : Collection {
    public void     add(int index, Object element);
    public bool     add(Object o);
    public bool     addAll(Collection c);
    public bool     addAll(int index, Collection c);
    public void     clear();
    public bool     contains(Object o);
    public bool     containsAll(Collection c);
    public int      opEquals(Object o);
    public Object   get(int index);
    public hash_t   toHash();
    public int      indexOf(Object o);
    public bool     isEmpty();
    public Iterator iterator();
    public int      lastIndexOf(Object o);
    public ListIterator   listIterator();
    public ListIterator   listIterator(int index);
    public Object   remove(int index);
    public bool     remove(Object o);
    public bool     removeAll(Collection c);
    public bool     retainAll(Collection c);
    public Object   set(int index, Object element);
    public int      size();
    public List     subList(int fromIndex, int toIndex);
    public Object[] toArray();
    public Object[] toArray(Object[] a);
}

interface Set : Collection {
    public bool     add(Object o);
    public bool     addAll(Collection c);
    public void     clear();
    public bool     contains(Object o);
    public bool     containsAll(Collection c);
    public int      opEquals(Object o);
    public hash_t   toHash();
    public bool     isEmpty();
    public Iterator iterator();
    public bool     remove(Object o);
    public bool     removeAll(Collection c);
    public bool     retainAll(Collection c);
    public int      size();
    public Object[] toArray();
    public Object[] toArray(Object[] a);
}
interface ListIterator {
    public void   add(Object o);
    public bool   hasNext();
    public bool   hasPrevious();
    public Object next();
    public int    nextIndex();
    public Object previous();
    public int    previousIndex();
    public void   remove();
    public void   set(Object o);
}
class Collections {

    public static List EMPTY_LIST;

    public static List unmodifiableList( List list ){
        return null;
    }
    public static void     sort(List list){
    }
    public static void     sort(List list, Comparator c){
    }
    static void     reverse(List list) {
    }
}

class HashMap : Map {
    alias tango.util.container.HashMap.HashMap!(Object,Object) MapType;
    private MapType map;

    public this(){
        map = new MapType();
    }
    public this(int initialCapacity){
        implMissing( __FILE__, __LINE__ );
    }
    public this(int initialCapacity, float loadFactor){
        implMissing( __FILE__, __LINE__ );
    }
    public this(Map m){
        implMissing( __FILE__, __LINE__ );
    }
    public void clear(){
        map.clear();
    }
    public bool containsKey(Object key){
        Object v;
        return map.get(key, v );
    }
    public bool containsValue(Object value){
        return map.contains(value);
    }
    public Set  entrySet(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    public override int opEquals(Object o){
        if( auto other = cast(HashMap) 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;
    }
    public Object get(Object key){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    public override hash_t toHash(){
        return super.toHash();
    }
    public bool isEmpty(){
        return map.isEmpty();
    }
    public Set    keySet(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    public Object put(Object key, Object value){
        Object res = null;
        if( auto vold = key in map ){
            res = *vold;
        }
        map[ key ] = value;
        return res;
    }
    public void   putAll(Map t){
        implMissing( __FILE__, __LINE__ );
    }
    public Object remove(Object key){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    public int    size(){
        implMissing( __FILE__, __LINE__ );
        return 0;
    }
    public Collection values(){
        ArrayList res = new ArrayList( size() );
        foreach( k, v; map ){
            res.add( v );
        }
        return res;
    }

    public int opApply (int delegate(ref Object value) dg){
        return map.opApply( dg );
    }
    public int opApply (int delegate(ref Object key, ref Object value) dg){
        return map.opApply( dg );
    }

}

class TreeMap : Map {
    alias tango.util.container.SortedMap.SortedMap!(Object,Object) MapType;
    private MapType map;

    public this(){
        map = new MapType();
    }
    public this(Comparator c){
        implMissing( __FILE__, __LINE__ );
    }
    public this(Map m){
        implMissing( __FILE__, __LINE__ );
    }
//     public this(SortedMap m){
//         implMissing( __FILE__, __LINE__ );
//     }
    public void clear(){
        map.clear();
    }
    public bool containsKey(Object key){
        Object v;
        return map.get(key, v );
    }
    public bool containsValue(Object value){
        return map.contains(value);
    }
    public Set  entrySet(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    public override int opEquals(Object o){
        if( auto other = cast(HashMap) 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;
    }
    public Object get(Object key){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    public override hash_t toHash(){
        return super.toHash();
    }
    public bool isEmpty(){
        return map.isEmpty();
    }
    public Set    keySet(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    public Object put(Object key, Object value){
        Object res = null;
        implMissing( __FILE__, __LINE__ );
        return res;
    }
    public void   putAll(Map t){
        implMissing( __FILE__, __LINE__ );
    }
    public Object remove(Object key){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    public int    size(){
        implMissing( __FILE__, __LINE__ );
        return 0;
    }
    public Collection values(){
        ArrayList res = new ArrayList( size() );
        foreach( k, v; map ){
            res.add( v );
        }
        return res;
    }

    public int opApply (int delegate(ref Object value) dg){
        return map.opApply( dg );
    }
    public int opApply (int delegate(ref Object key, ref Object value) dg){
        return map.opApply( dg );
    }
}

class HashSet : Set {
    public this(){}
    public this(Collection c){}
    public this(int initialCapacity){}
    public this(int initialCapacity, float loadFactor){}
    public bool    add(Object o){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    public bool    addAll(Collection c){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    public void   clear(){
        implMissing( __FILE__, __LINE__ );
    }
    public bool    contains(Object o){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    public bool    containsAll(Collection c){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    public override int    opEquals(Object o){
        implMissing( __FILE__, __LINE__ );
        return 0;
    }
    public override hash_t    toHash(){
        implMissing( __FILE__, __LINE__ );
        return 0;
    }
    public bool    isEmpty(){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    public Iterator   iterator(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    public bool    remove(Object o){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    public bool    removeAll(Collection c){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    public bool    retainAll(Collection c){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    public int    size(){
        implMissing( __FILE__, __LINE__ );
        return 0;
    }
    public Object[]   toArray(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    public Object[]   toArray(Object[] a){
        implMissing( __FILE__, __LINE__ );
        return null;
    }


}


class Vector : List {
    this(){
        implMissing( __FILE__, __LINE__ );
    }
    this(Collection c){
        implMissing( __FILE__, __LINE__ );
    }
    this(int initialCapacity){
        implMissing( __FILE__, __LINE__ );
    }
    this(int initialCapacity, int capacityIncrement){
        implMissing( __FILE__, __LINE__ );
    }
    void   add(int index, Object element){
        implMissing( __FILE__, __LINE__ );
    }
    bool    add(Object o){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    bool    addAll(Collection c){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    bool    addAll(int index, Collection c){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    void   addElement(Object obj){
        implMissing( __FILE__, __LINE__ );
    }
    int    capacity(){
        implMissing( __FILE__, __LINE__ );
        return 0;
    }
    void   clear(){
        implMissing( __FILE__, __LINE__ );
    }
    Object     clone(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    bool    contains(Object elem){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    bool    containsAll(Collection c){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    void   copyInto(Object[] anArray){
        implMissing( __FILE__, __LINE__ );
    }
    Object     elementAt(int index){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
//     Enumeration    elements(){
//         implMissing( __FILE__, __LINE__ );
//         return null;
//     }
    void   ensureCapacity(int minCapacity){
        implMissing( __FILE__, __LINE__ );
    }
    int opEquals(Object o){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    Object     firstElement(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    Object     get(int index){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    hash_t    toHash(){
        implMissing( __FILE__, __LINE__ );
        return 0;
    }
    int    indexOf(Object elem){
        implMissing( __FILE__, __LINE__ );
        return 0;
    }
    int    indexOf(Object elem, int index){
        implMissing( __FILE__, __LINE__ );
        return 0;
    }
    void   insertElementAt(Object obj, int index){
        implMissing( __FILE__, __LINE__ );
    }
    bool    isEmpty(){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    Iterator   iterator(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    Object     lastElement(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    int    lastIndexOf(Object elem){
        implMissing( __FILE__, __LINE__ );
        return 0;
    }
    int    lastIndexOf(Object elem, int index){
        implMissing( __FILE__, __LINE__ );
        return 0;
    }
    ListIterator   listIterator(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    ListIterator   listIterator(int index){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    Object     remove(int index){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    bool    remove(Object o){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    bool    removeAll(Collection c){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    void   removeAllElements(){
        implMissing( __FILE__, __LINE__ );
    }
    bool    removeElement(Object obj){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    void   removeElementAt(int index){
        implMissing( __FILE__, __LINE__ );
    }
    protected  void     removeRange(int fromIndex, int toIndex){
        implMissing( __FILE__, __LINE__ );
    }
    bool    retainAll(Collection c){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    Object     set(int index, Object element){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    void   setElementAt(Object obj, int index){
        implMissing( __FILE__, __LINE__ );
    }
    void   setSize(int newSize){
        implMissing( __FILE__, __LINE__ );
    }
    int    size(){
        implMissing( __FILE__, __LINE__ );
        return 0;
    }
    List   subList(int fromIndex, int toIndex){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    Object[]   toArray(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    Object[]   toArray(Object[] a){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    String     toString(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    void   trimToSize(){
        implMissing( __FILE__, __LINE__ );
    }
}
class Stack : Vector {
    this(){
    }
    void   add(int index, Object element){
        implMissing( __FILE__, __LINE__ );
    }
    bool    add(Object o){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    bool    addAll(Collection c){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    bool    addAll(int index, Collection c){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    void   addElement(Object obj){
        implMissing( __FILE__, __LINE__ );
    }
    int    capacity(){
        implMissing( __FILE__, __LINE__ );
        return 0;
    }
    void   clear(){
        implMissing( __FILE__, __LINE__ );
    }
    Object     clone(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    bool    contains(Object elem){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    bool    containsAll(Collection c){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    void   copyInto(Object[] anArray){
        implMissing( __FILE__, __LINE__ );
    }
    Object     elementAt(int index){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
//     Enumeration    elements(){
//         implMissing( __FILE__, __LINE__ );
//         return null;
//     }
    void   ensureCapacity(int minCapacity){
        implMissing( __FILE__, __LINE__ );
    }
    int opEquals(Object o){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    Object     firstElement(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    Object     get(int index){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    hash_t    toHash(){
        implMissing( __FILE__, __LINE__ );
        return 0;
    }
    int    indexOf(Object elem){
        implMissing( __FILE__, __LINE__ );
        return 0;
    }
    int    indexOf(Object elem, int index){
        implMissing( __FILE__, __LINE__ );
        return 0;
    }
    void   insertElementAt(Object obj, int index){
        implMissing( __FILE__, __LINE__ );
    }
    bool    isEmpty(){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    Iterator   iterator(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    Object     lastElement(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    int    lastIndexOf(Object elem){
        implMissing( __FILE__, __LINE__ );
        return 0;
    }
    int    lastIndexOf(Object elem, int index){
        implMissing( __FILE__, __LINE__ );
        return 0;
    }
    ListIterator   listIterator(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    ListIterator   listIterator(int index){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    Object     remove(int index){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    bool    remove(Object o){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    bool    removeAll(Collection c){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    void   removeAllElements(){
        implMissing( __FILE__, __LINE__ );
    }
    bool    removeElement(Object obj){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    void   removeElementAt(int index){
        implMissing( __FILE__, __LINE__ );
    }
    protected  void     removeRange(int fromIndex, int toIndex){
        implMissing( __FILE__, __LINE__ );
    }
    bool    retainAll(Collection c){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    Object     set(int index, Object element){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    void   setElementAt(Object obj, int index){
        implMissing( __FILE__, __LINE__ );
    }
    void   setSize(int newSize){
        implMissing( __FILE__, __LINE__ );
    }
    int    size(){
        implMissing( __FILE__, __LINE__ );
        return 0;
    }
    List   subList(int fromIndex, int toIndex){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    Object[]   toArray(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    Object[]   toArray(Object[] a){
        implMissing( __FILE__, __LINE__ );
        return null;
    }

    // from Stack
    String     toString(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    void   trimToSize(){
        implMissing( __FILE__, __LINE__ );
    }
    bool     empty(){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    Object     peek(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    Object     pop(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    Object     push(Object item){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    int    search(Object o){
        implMissing( __FILE__, __LINE__ );
        return 0;
    }
}

class LinkedList : List {
    void   add(int index, Object element){
        implMissing( __FILE__, __LINE__ );
    }
    bool    add(Object o){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    bool    addAll(Collection c){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    bool    addAll(int index, Collection c){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    void   addElement(Object obj){
        implMissing( __FILE__, __LINE__ );
    }
    int    capacity(){
        implMissing( __FILE__, __LINE__ );
        return 0;
    }
    void   clear(){
        implMissing( __FILE__, __LINE__ );
    }
    Object     clone(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    bool    contains(Object elem){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    bool    containsAll(Collection c){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    void   copyInto(Object[] anArray){
        implMissing( __FILE__, __LINE__ );
    }
    Object     elementAt(int index){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
//     Enumeration    elements(){
//         implMissing( __FILE__, __LINE__ );
//         return null;
//     }
    void   ensureCapacity(int minCapacity){
        implMissing( __FILE__, __LINE__ );
    }
    int opEquals(Object o){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    Object     firstElement(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    Object     get(int index){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    hash_t    toHash(){
        implMissing( __FILE__, __LINE__ );
        return 0;
    }
    int    indexOf(Object elem){
        implMissing( __FILE__, __LINE__ );
        return 0;
    }
    int    indexOf(Object elem, int index){
        implMissing( __FILE__, __LINE__ );
        return 0;
    }
    void   insertElementAt(Object obj, int index){
        implMissing( __FILE__, __LINE__ );
    }
    bool    isEmpty(){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    Iterator   iterator(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    Object     lastElement(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    int    lastIndexOf(Object elem){
        implMissing( __FILE__, __LINE__ );
        return 0;
    }
    int    lastIndexOf(Object elem, int index){
        implMissing( __FILE__, __LINE__ );
        return 0;
    }
    ListIterator   listIterator(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    ListIterator   listIterator(int index){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    Object     remove(int index){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    bool    remove(Object o){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    bool    removeAll(Collection c){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    void   removeAllElements(){
        implMissing( __FILE__, __LINE__ );
    }
    bool    removeElement(Object obj){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    void   removeElementAt(int index){
        implMissing( __FILE__, __LINE__ );
    }
    protected  void     removeRange(int fromIndex, int toIndex){
        implMissing( __FILE__, __LINE__ );
    }
    bool    retainAll(Collection c){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    Object     set(int index, Object element){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    void   setElementAt(Object obj, int index){
        implMissing( __FILE__, __LINE__ );
    }
    void   setSize(int newSize){
        implMissing( __FILE__, __LINE__ );
    }
    int    size(){
        implMissing( __FILE__, __LINE__ );
        return 0;
    }
    List   subList(int fromIndex, int toIndex){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    Object[]   toArray(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    Object[]   toArray(Object[] a){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    String     toString(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    void   trimToSize(){
        implMissing( __FILE__, __LINE__ );
    }
}

class ArrayList : List {
    private Object[] data;

    this(){
    }
    this(int size){
        data.length = size;
        data.length = 0;
    }
    this(Collection){
        implMissing( __FILE__, __LINE__ );
    }
    void   add(int index, Object element){
        implMissing( __FILE__, __LINE__ );
    }
    bool    add(Object o){

        implMissing( __FILE__, __LINE__ );
        return false;
    }
    bool    addAll(Collection c){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    bool    addAll(int index, Collection c){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    void   clear(){
        implMissing( __FILE__, __LINE__ );
    }
    bool    contains(Object o){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    bool    containsAll(Collection c){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    int opEquals(Object o){
        if( auto other = cast(ArrayList)o ){
            if( data.length !is other.data.length ){
                return false;
            }
            for( int i = 0; i < data.length; i++ ){
                if( data[i] is other.data[i] ){
                    continue;
                }
                if(( data[i] is null ) || ( other.data[i] is null )){
                    return false;
                }
                if( data[i] == other.data[i] ){
                    continue;
                }
                return false;
            }
            return true;
        }
        return false;
    }
    Object     get(int index){
        return data[index];
    }
    public override hash_t toHash(){
        return super.toHash();
    }
    int    indexOf(Object o){
        foreach( i, v; data ){
            if( data[i] is o ){
                return i;
            }
            if(( data[i] is null ) || ( o is null )){
                continue;
            }
            if( data[i] == o ){
                return i;
            }
        }
        return -1;
    }
    bool    isEmpty(){
        return data.length is 0;
    }
    Iterator   iterator(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    int    lastIndexOf(Object o){
        foreach_reverse( i, v; data ){
            if( data[i] is o ){
                return i;
            }
            if(( data[i] is null ) || ( o is null )){
                continue;
            }
            if( data[i] == o ){
                return i;
            }
        }
        return -1;
    }
    ListIterator   listIterator(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    ListIterator   listIterator(int index){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    Object     remove(int index){
        Object res = data[index];
        data[ index .. $-1] = data[ index+1 .. $ ];
        data.length = data.length -1;
        return res;
    }
    bool    remove(Object o){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    bool    removeAll(Collection c){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    bool    retainAll(Collection c){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    Object     set(int index, Object element){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    int    size(){
        implMissing( __FILE__, __LINE__ );
        return 0;
    }
    List   subList(int fromIndex, int toIndex){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    Object[]   toArray(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    Object[]   toArray(Object[] a){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
}