1 module java.util.LinkedList;
2 
3 import java.lang.all;
4 import java.util.List;
5 import java.util.Iterator;
6 import java.util.ListIterator;
7 import java.util.Collection;
8 
9 version(Tango){
10     static import tango.util.container.CircularList;
11 } else { // Phobos
12 }
13 
14 class LinkedList : List {
15     version(Tango){
16         alias tango.util.container.CircularList.CircularList!(Object) ListType;
17         private ListType list;
18     } else { // Phobos
19     }
20 
21     this(){
22         version(Tango){
23             list = new ListType();
24         } else { // Phobos
25             implMissingInPhobos();
26         }
27     }
28     this( Collection c ){
29         this();
30         addAll(c);
31     }
32     void   add(int index, Object element){
33         version(Tango){
34             list.addAt(index,element);
35         } else { // Phobos
36             implMissingInPhobos();
37         }
38     }
39     bool    add(Object o){
40         version(Tango){
41             list.add(o);
42             return true;
43         } else { // Phobos
44             implMissingInPhobos();
45             return false;
46         }
47     }
48     public bool    add(String o){
49         return add(stringcast(o));
50     }
51     bool    addAll(Collection c){
52         if( c is null ) throw new NullPointerException();
53         bool res = false;
54         foreach( o; c ){
55             res |= add( o );
56         }
57         return res;
58     }
59     bool    addAll(int index, Collection c){
60         implMissing( __FILE__, __LINE__ );
61         return false;
62     }
63     void   addFirst(Object o){
64         version(Tango){
65             list.prepend( o );
66         } else { // Phobos
67             implMissingInPhobos();
68         }
69     }
70     void   addLast(Object o){
71         version(Tango){
72             list.append( o );
73         } else { // Phobos
74             implMissingInPhobos();
75         }
76     }
77     //     void   addElement(Object obj){
78     //         implMissing( __FILE__, __LINE__ );
79     //     }
80     int    capacity(){
81         implMissing( __FILE__, __LINE__ );
82         return 0;
83     }
84     void   clear(){
85         version(Tango){
86             list.clear();
87         } else { // Phobos
88             implMissingInPhobos();
89         }
90     }
91     Object     clone(){
92         implMissing( __FILE__, __LINE__ );
93         return null;
94     }
95     bool    contains(Object elem){
96         version(Tango){
97             return list.contains(elem);
98         } else { // Phobos
99             implMissingInPhobos();
100             return false;
101         }
102     }
103     bool    contains(String elem){
104         return contains(stringcast(elem));
105     }
106     bool    containsAll(Collection c){
107         version(Tango){
108             foreach(o; c){
109                 if( !list.contains(o)) return false;
110             }
111             return true;
112         } else { // Phobos
113             implMissingInPhobos();
114             return false;
115         }
116     }
117     void   copyInto(Object[] anArray){
118         implMissing( __FILE__, __LINE__ );
119     }
120     Object     elementAt(int index){
121         version(Tango){
122             return list.get(index);
123         } else { // Phobos
124             implMissingInPhobos();
125             return null;
126         }
127     }
128     //     Enumeration    elements(){
129     //         implMissing( __FILE__, __LINE__ );
130     //         return null;
131     //     }
132     void   ensureCapacity(int minCapacity){
133         implMissing( __FILE__, __LINE__ );
134     }
135     override
136     equals_t opEquals(Object o){
137         implMissing( __FILE__, __LINE__ );
138         return false;
139     }
140     Object     firstElement(){
141         implMissing( __FILE__, __LINE__ );
142         return null;
143     }
144     Object     get(int index){
145         version(Tango){
146             return list.get(index);
147         } else { // Phobos
148             implMissingInPhobos();
149             return null;
150         }
151     }
152     Object     getFirst(){
153         version(Tango){
154             return list.get(0);
155         } else { // Phobos
156             implMissingInPhobos();
157             return null;
158         }
159     }
160     Object     getLast(){
161         version(Tango){
162             return list.get(list.size()-1);
163         } else { // Phobos
164             implMissingInPhobos();
165             return null;
166         }
167     }
168     override
169     hash_t    toHash(){
170         implMissingSafe( __FILE__, __LINE__ );
171         return 0;
172     }
173     int    indexOf(Object elem){
174         implMissing( __FILE__, __LINE__ );
175         return 0;
176     }
177     int    indexOf(Object elem, int index){
178         implMissing( __FILE__, __LINE__ );
179         return 0;
180     }
181     void   insertElementAt(Object obj, int index){
182         implMissing( __FILE__, __LINE__ );
183     }
184     bool    isEmpty(){
185         version(Tango){
186             return list.isEmpty();
187         } else { // Phobos
188             implMissingInPhobos();
189             return false;
190         }
191     }
192     Iterator   iterator(){
193         implMissing( __FILE__, __LINE__ );
194         return null;
195     }
196     Object     lastElement(){
197         implMissing( __FILE__, __LINE__ );
198         return null;
199     }
200     int    lastIndexOf(Object elem){
201         implMissing( __FILE__, __LINE__ );
202         return 0;
203     }
204     int    lastIndexOf(Object elem, int index){
205         implMissing( __FILE__, __LINE__ );
206         return 0;
207     }
208     ListIterator   listIterator(){
209         implMissing( __FILE__, __LINE__ );
210         return null;
211     }
212     ListIterator   listIterator(int index){
213         implMissing( __FILE__, __LINE__ );
214         return null;
215     }
216     Object     remove(int index){
217         implMissing( __FILE__, __LINE__ );
218         return null;
219     }
220     bool    remove(Object o){
221         version(Tango){
222             return list.remove(o,false) !is 0;
223         } else { // Phobos
224             implMissingInPhobos();
225             return false;
226         }
227     }
228     public bool remove(String key){
229         return remove(stringcast(key));
230     }
231     bool    removeAll(Collection c){
232         version(Tango){
233             bool res = false;
234             foreach( o; c){
235                 res |= list.remove(o,false) !is 0;
236             }
237             return res;
238         } else { // Phobos
239             implMissingInPhobos();
240             return false;
241         }
242     }
243     void   removeAllElements(){
244         implMissing( __FILE__, __LINE__ );
245     }
246     Object     removeFirst(){
247         implMissing( __FILE__, __LINE__ );
248         return null;
249     }
250     Object     removeLast(){
251         implMissing( __FILE__, __LINE__ );
252         return null;
253     }
254     bool    removeElement(Object obj){
255         implMissing( __FILE__, __LINE__ );
256         return false;
257     }
258     void   removeElementAt(int index){
259         implMissing( __FILE__, __LINE__ );
260     }
261     protected  void     removeRange(int fromIndex, int toIndex){
262         implMissing( __FILE__, __LINE__ );
263     }
264     bool    retainAll(Collection c){
265         implMissing( __FILE__, __LINE__ );
266         return false;
267     }
268     Object     set(int index, Object element){
269         implMissing( __FILE__, __LINE__ );
270         return null;
271     }
272     void   setElementAt(Object obj, int index){
273         implMissing( __FILE__, __LINE__ );
274     }
275     void   setSize(int newSize){
276         implMissing( __FILE__, __LINE__ );
277     }
278     int    size(){
279         version(Tango){
280             return list.size();
281         } else { // Phobos
282             implMissingInPhobos();
283             return 0;
284         }
285     }
286     List   subList(int fromIndex, int toIndex){
287         implMissing( __FILE__, __LINE__ );
288         return null;
289     }
290     Object[]   toArray(){
291         version(Tango){
292             return list.toArray();
293         } else { // Phobos
294             implMissingInPhobos();
295             return null;
296         }
297     }
298     Object[]   toArray(Object[] a){
299         version(Tango){
300             return list.toArray( a );
301         } else { // Phobos
302             implMissingInPhobos();
303             return null;
304         }
305     }
306     String[]   toArray(String[] a){
307         version(Tango){
308             auto res = a;
309             if( res.length < list.size() ){
310                 res.length = list.size();
311             }
312             int idx = 0;
313             foreach( o; list ){
314                 res[idx] = stringcast(o);
315             }
316             return res;
317         } else { // Phobos
318             implMissingInPhobos();
319             return null;
320         }
321     }
322     override
323     String     toString(){
324         implMissing( __FILE__, __LINE__ );
325         return null;
326     }
327     void   trimToSize(){
328         implMissing( __FILE__, __LINE__ );
329     }
330 
331     // only for D
332     public int opApply (int delegate(ref Object value) dg){
333         implMissing( __FILE__, __LINE__ );
334         return 0;
335     }
336 
337 }
338