Mercurial > projects > dwt-addons
view dwtx/dwtxhelper/Collection.d @ 101:1082a0fc2bb8
First Draw2D example running
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Sun, 03 Aug 2008 02:17:46 +0200 |
parents | 86617aa6b5dd |
children | 04b47443bb01 |
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.HashSet; 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 { private static List EMPTY_LIST_; public static List EMPTY_LIST(){ if( EMPTY_LIST_ is null ){ synchronized(Collections.classinfo ){ if( EMPTY_LIST_ is null ){ EMPTY_LIST_ = new ArrayList(0); } } } return 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){ if( auto v = key in map ){ return *v; } return null; } public override hash_t toHash(){ return super.toHash(); } public bool isEmpty(){ return map.isEmpty(); } public Set keySet(){ HashSet res = new HashSet(); foreach( k, v; map ){ res.add(k); } return res; } 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 { alias tango.util.container.HashSet.HashSet!(Object) SetType; private SetType set; public this(){ set = new SetType(); } public this(Collection c){ implMissing( __FILE__, __LINE__ ); } public this(int initialCapacity){ implMissing( __FILE__, __LINE__ ); } public this(int initialCapacity, float loadFactor){ implMissing( __FILE__, __LINE__ ); } public bool add(Object o){ return set.add(o); } public bool addAll(Collection c){ implMissing( __FILE__, __LINE__ ); return false; } public void clear(){ set.clear(); } public bool contains(Object o){ return set.contains(o); } 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(){ return set.isEmpty(); } class LocalIterator : Iterator { SetType.Iterator iter; Object nextElem; this( SetType.Iterator iter){ this.iter = iter; } public bool hasNext(){ return iter.next(nextElem); } public Object next(){ return nextElem; } public void remove(){ iter.remove(); } } public Iterator iterator(){ return new LocalIterator(set.iterator()); } public bool remove(Object o){ return set.remove(o); } public bool removeAll(Collection c){ implMissing( __FILE__, __LINE__ ); return false; } public bool retainAll(Collection c){ implMissing( __FILE__, __LINE__ ); return false; } public int size(){ return set.size(); } 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){ data.length = data.length +1; System.arraycopy( data, index, data, index+1, data.length - index -1 ); data[index] = element; } bool add(Object o){ data ~= o; return true; } bool addAll(Collection c){ implMissing( __FILE__, __LINE__ ); return false; } bool addAll(int index, Collection c){ implMissing( __FILE__, __LINE__ ); return false; } void clear(){ data.length = 0; } bool contains(Object o){ foreach( v; data ){ if( o is v ){ return true; } if(( o is null ) || ( v is null )){ continue; } if( o == v ){ return true; } } 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; } class LocalIterator : Iterator{ int idx = 0; public this(){ } public bool hasNext(){ return idx < data.length; } public Object next(){ Object res = data[idx]; idx++; return res; } public void remove(){ implMissing( __FILE__, __LINE__ ); this.outer.remove(idx); idx--; } } Iterator iterator(){ return new LocalIterator(); } 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]; System.arraycopy( data, index+1, data, index, data.length - 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){ Object res = data[index]; data[index] = element; return res; } int size(){ return data.length; } 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; } }