view base/src/java/util/LinkedList.d @ 120:536e43f63c81

Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661 ===D2=== * added [Try]Immutable/Const/Shared templates to work with differenses in D1/D2 instead of version statements used these templates to work with strict type storage rules of dmd-2.053 * com.ibm.icu now also compilable with D2, but not tested yet * small fixes Snippet288 - shared data is in TLS ===Phobos=== * fixed critical bugs in Phobos implemention completely incorrect segfault prone fromStringz (Linux's port ruthless killer) terrible, incorrect StringBuffer realization (StyledText killer) * fixed small bugs as well Snippet72 - misprint in the snippet * implemented missed functionality for Phobos ByteArrayOutputStream implemented (image loading available) formatting correctly works for all DWT's cases As a result, folowing snippets now works with Phobos (Snippet### - what is fixed): Snippet24, 42, 111, 115, 130, 235, 276 - bad string formatting Snippet48, 282 - crash on image loading Snippet163, 189, 211, 213, 217, 218, 222 - crash on copy/cut in StyledText Snippet244 - hang-up ===Tango=== * few changes for the latest Tango trunc-r5661 * few small performance improvments ===General=== * implMissing-s for only one version changed to implMissingInTango/InPhobos * incorrect calls to Format in toString-s fixed * fixed loading \uXXXX characters in ResourceBundle * added good UTF-8 support for StyledText, TextLayout (Win32) and friends UTF functions revised and tested. It is now in java.nonstandard.*Utf modules StyledText and TextLayout (Win32) modules revised for UTF-8 support * removed small diferences in most identical files in *.swt.* folders *.swt.internal.image, *.swt.events and *.swt.custom are identical in Win32/Linux32 now 179 of 576 (~31%) files in *.swt.* folders are fully identical * Win32: snippets now have right subsystem, pretty icons and native system style controls * small fixes in snippets Snippet44 - it's not Snippet44 Snippet212 - functions work with different images and offsets arrays Win32: Snippet282 - crash on close if the button has an image Snippet293 - setGrayed is commented and others Win32: As a result, folowing snippets now works Snippet68 - color doesn't change Snippet163, 189, 211, 213, 217, 218, 222 - UTF-8 issues (see above) Snippet193 - no tabel headers
author Denis Shelomovskij <verylonglogin.reg@gmail.com>
date Sat, 09 Jul 2011 15:50:20 +0300
parents 9f4c18c268b2
children
line wrap: on
line source

module java.util.LinkedList;

import java.lang.all;
import java.util.List;
import java.util.Iterator;
import java.util.ListIterator;
import java.util.Collection;

version(Tango){
    static import tango.util.container.CircularList;
} else { // Phobos
}

class LinkedList : List {
    version(Tango){
        alias tango.util.container.CircularList.CircularList!(Object) ListType;
        private ListType list;
    } else { // Phobos
    }

    this(){
        version(Tango){
            list = new ListType();
        } else { // Phobos
            implMissingInPhobos();
        }
    }
    this( Collection c ){
        this();
        addAll(c);
    }
    void   add(int index, Object element){
        version(Tango){
            list.addAt(index,element);
        } else { // Phobos
            implMissingInPhobos();
        }
    }
    bool    add(Object o){
        version(Tango){
            list.add(o);
            return true;
        } else { // Phobos
            implMissingInPhobos();
            return false;
        }
    }
    public bool    add(String o){
        return add(stringcast(o));
    }
    bool    addAll(Collection c){
        if( c is null ) throw new NullPointerException();
        bool res = false;
        foreach( o; c ){
            res |= add( o );
        }
        return res;
    }
    bool    addAll(int index, Collection c){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    void   addFirst(Object o){
        version(Tango){
            list.prepend( o );
        } else { // Phobos
            implMissingInPhobos();
        }
    }
    void   addLast(Object o){
        version(Tango){
            list.append( o );
        } else { // Phobos
            implMissingInPhobos();
        }
    }
    //     void   addElement(Object obj){
    //         implMissing( __FILE__, __LINE__ );
    //     }
    int    capacity(){
        implMissing( __FILE__, __LINE__ );
        return 0;
    }
    void   clear(){
        version(Tango){
            list.clear();
        } else { // Phobos
            implMissingInPhobos();
        }
    }
    Object     clone(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    bool    contains(Object elem){
        version(Tango){
            return list.contains(elem);
        } else { // Phobos
            implMissingInPhobos();
            return false;
        }
    }
    bool    contains(String elem){
        return contains(stringcast(elem));
    }
    bool    containsAll(Collection c){
        version(Tango){
            foreach(o; c){
                if( !list.contains(o)) return false;
            }
            return true;
        } else { // Phobos
            implMissingInPhobos();
            return false;
        }
    }
    void   copyInto(Object[] anArray){
        implMissing( __FILE__, __LINE__ );
    }
    Object     elementAt(int index){
        version(Tango){
            return list.get(index);
        } else { // Phobos
            implMissingInPhobos();
            return null;
        }
    }
    //     Enumeration    elements(){
    //         implMissing( __FILE__, __LINE__ );
    //         return null;
    //     }
    void   ensureCapacity(int minCapacity){
        implMissing( __FILE__, __LINE__ );
    }
    equals_t opEquals(Object o){
        implMissing( __FILE__, __LINE__ );
        return false;
    }
    Object     firstElement(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    Object     get(int index){
        version(Tango){
            return list.get(index);
        } else { // Phobos
            implMissingInPhobos();
            return null;
        }
    }
    Object     getFirst(){
        version(Tango){
            return list.get(0);
        } else { // Phobos
            implMissingInPhobos();
            return null;
        }
    }
    Object     getLast(){
        version(Tango){
            return list.get(list.size()-1);
        } else { // Phobos
            implMissingInPhobos();
            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(){
        version(Tango){
            return list.isEmpty();
        } else { // Phobos
            implMissingInPhobos();
            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){
        version(Tango){
            return list.remove(o,false) !is 0;
        } else { // Phobos
            implMissingInPhobos();
            return false;
        }
    }
    public bool remove(String key){
        return remove(stringcast(key));
    }
    bool    removeAll(Collection c){
        version(Tango){
            bool res = false;
            foreach( o; c){
                res |= list.remove(o,false) !is 0;
            }
            return res;
        } else { // Phobos
            implMissingInPhobos();
            return false;
        }
    }
    void   removeAllElements(){
        implMissing( __FILE__, __LINE__ );
    }
    Object     removeFirst(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    Object     removeLast(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    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(){
        version(Tango){
            return list.size();
        } else { // Phobos
            implMissingInPhobos();
            return 0;
        }
    }
    List   subList(int fromIndex, int toIndex){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    Object[]   toArray(){
        version(Tango){
            return list.toArray();
        } else { // Phobos
            implMissingInPhobos();
            return null;
        }
    }
    Object[]   toArray(Object[] a){
        version(Tango){
            return list.toArray( a );
        } else { // Phobos
            implMissingInPhobos();
            return null;
        }
    }
    String[]   toArray(String[] a){
        version(Tango){
            auto res = a;
            if( res.length < list.size() ){
                res.length = list.size();
            }
            int idx = 0;
            foreach( o; list ){
                res[idx] = stringcast(o);
            }
            return res;
        } else { // Phobos
            implMissingInPhobos();
            return null;
        }
    }
    String     toString(){
        implMissing( __FILE__, __LINE__ );
        return null;
    }
    void   trimToSize(){
        implMissing( __FILE__, __LINE__ );
    }

    // only for D
    public int opApply (int delegate(ref Object value) dg){
        implMissing( __FILE__, __LINE__ );
        return 0;
    }

}