5c93ef2302680d04728bf03c96bf1a966c23c024
[jalviewjs.git] / site / j2s / java / util / LinkedList.js
1 Clazz.load(["java.util.AbstractSequentialList","$.List","$.ListIterator","$.Queue"],"java.util.LinkedList",["java.lang.IllegalStateException","$.IndexOutOfBoundsException","java.lang.reflect.Array","java.util.ConcurrentModificationException","$.NoSuchElementException"],function(){\r
2 c$=Clazz.decorateAsClass(function(){\r
3 this.$size=0;\r
4 this.voidLink=null;\r
5 Clazz.instantialize(this,arguments);\r
6 },java.util,"LinkedList",java.util.AbstractSequentialList,[java.util.List,java.util.Queue,Cloneable,java.io.Serializable]);\r
7 Clazz.makeConstructor(c$,\r
8 function(){\r
9 Clazz.superConstructor(this,java.util.LinkedList,[]);\r
10 this.voidLink=new java.util.LinkedList.Link(null,null,null);\r
11 this.voidLink.previous=this.voidLink;\r
12 this.voidLink.next=this.voidLink;\r
13 });\r
14 Clazz.makeConstructor(c$,\r
15 function(collection){\r
16 this.construct();\r
17 this.addAll(collection);\r
18 },"java.util.Collection");\r
19 Clazz.defineMethod(c$,"add",\r
20 function(location,object){\r
21 if(0<=location&&location<=this.$size){\r
22 var link=this.voidLink;\r
23 if(location<(Math.floor(this.$size/2))){\r
24 for(var i=0;i<=location;i++){\r
25 link=link.next;\r
26 }\r
27 }else{\r
28 for(var i=this.$size;i>location;i--){\r
29 link=link.previous;\r
30 }\r
31 }var previous=link.previous;\r
32 var newLink=new java.util.LinkedList.Link(object,previous,link);\r
33 previous.next=newLink;\r
34 link.previous=newLink;\r
35 this.$size++;\r
36 this.modCount++;\r
37 }else{\r
38 throw new IndexOutOfBoundsException();\r
39 }},"~N,~O");\r
40 Clazz.defineMethod(c$,"add",\r
41 function(object){\r
42 var oldLast=this.voidLink.previous;\r
43 var newLink=new java.util.LinkedList.Link(object,oldLast,this.voidLink);\r
44 this.voidLink.previous=newLink;\r
45 oldLast.next=newLink;\r
46 this.$size++;\r
47 this.modCount++;\r
48 return true;\r
49 },"~O");\r
50 Clazz.defineMethod(c$,"addAll",\r
51 function(location,collection){\r
52 if(location<0||location>this.$size){\r
53 throw new IndexOutOfBoundsException();\r
54 }var adding=collection.size();\r
55 if(adding==0){\r
56 return false;\r
57 }var previous=this.voidLink;\r
58 if(location<(Math.floor(this.$size/2))){\r
59 for(var i=0;i<location;i++){\r
60 previous=previous.next;\r
61 }\r
62 }else{\r
63 for(var i=this.$size;i>=location;i--){\r
64 previous=previous.previous;\r
65 }\r
66 }var next=previous.next;\r
67 for(var e,$e=collection.iterator();$e.hasNext()&&((e=$e.next())||true);){\r
68 var newLink=new java.util.LinkedList.Link(e,previous,null);\r
69 previous.next=newLink;\r
70 previous=newLink;\r
71 }\r
72 previous.next=next;\r
73 next.previous=previous;\r
74 this.$size+=adding;\r
75 this.modCount++;\r
76 return true;\r
77 },"~N,java.util.Collection");\r
78 Clazz.defineMethod(c$,"addAll",\r
79 function(collection){\r
80 var adding=collection.size();\r
81 if(adding==0){\r
82 return false;\r
83 }var previous=this.voidLink.previous;\r
84 for(var e,$e=collection.iterator();$e.hasNext()&&((e=$e.next())||true);){\r
85 var newLink=new java.util.LinkedList.Link(e,previous,null);\r
86 previous.next=newLink;\r
87 previous=newLink;\r
88 }\r
89 previous.next=this.voidLink;\r
90 this.voidLink.previous=previous;\r
91 this.$size+=adding;\r
92 this.modCount++;\r
93 return true;\r
94 },"java.util.Collection");\r
95 Clazz.defineMethod(c$,"addFirst",\r
96 function(object){\r
97 var oldFirst=this.voidLink.next;\r
98 var newLink=new java.util.LinkedList.Link(object,this.voidLink,oldFirst);\r
99 this.voidLink.next=newLink;\r
100 oldFirst.previous=newLink;\r
101 this.$size++;\r
102 this.modCount++;\r
103 },"~O");\r
104 Clazz.defineMethod(c$,"addLast",\r
105 function(object){\r
106 var oldLast=this.voidLink.previous;\r
107 var newLink=new java.util.LinkedList.Link(object,oldLast,this.voidLink);\r
108 this.voidLink.previous=newLink;\r
109 oldLast.next=newLink;\r
110 this.$size++;\r
111 this.modCount++;\r
112 },"~O");\r
113 Clazz.overrideMethod(c$,"clear",\r
114 function(){\r
115 if(this.$size>0){\r
116 this.$size=0;\r
117 this.voidLink.next=this.voidLink;\r
118 this.voidLink.previous=this.voidLink;\r
119 this.modCount++;\r
120 }});\r
121 Clazz.overrideMethod(c$,"clone",\r
122 function(){\r
123 return new java.util.LinkedList(this);\r
124 });\r
125 Clazz.overrideMethod(c$,"contains",\r
126 function(object){\r
127 var link=this.voidLink.next;\r
128 if(object!=null){\r
129 while(link!==this.voidLink){\r
130 if(object.equals(link.data)){\r
131 return true;\r
132 }link=link.next;\r
133 }\r
134 }else{\r
135 while(link!==this.voidLink){\r
136 if(link.data==null){\r
137 return true;\r
138 }link=link.next;\r
139 }\r
140 }return false;\r
141 },"~O");\r
142 Clazz.overrideMethod(c$,"get",\r
143 function(location){\r
144 if(0<=location&&location<this.$size){\r
145 var link=this.voidLink;\r
146 if(location<(Math.floor(this.$size/2))){\r
147 for(var i=0;i<=location;i++){\r
148 link=link.next;\r
149 }\r
150 }else{\r
151 for(var i=this.$size;i>location;i--){\r
152 link=link.previous;\r
153 }\r
154 }return link.data;\r
155 }throw new IndexOutOfBoundsException();\r
156 },"~N");\r
157 Clazz.defineMethod(c$,"getFirst",\r
158 function(){\r
159 var first=this.voidLink.next;\r
160 if(first!==this.voidLink){\r
161 return first.data;\r
162 }throw new java.util.NoSuchElementException();\r
163 });\r
164 Clazz.defineMethod(c$,"getLast",\r
165 function(){\r
166 var last=this.voidLink.previous;\r
167 if(last!==this.voidLink){\r
168 return last.data;\r
169 }throw new java.util.NoSuchElementException();\r
170 });\r
171 Clazz.overrideMethod(c$,"indexOf",\r
172 function(object){\r
173 var pos=0;\r
174 var link=this.voidLink.next;\r
175 if(object!=null){\r
176 while(link!==this.voidLink){\r
177 if(object.equals(link.data)){\r
178 return pos;\r
179 }link=link.next;\r
180 pos++;\r
181 }\r
182 }else{\r
183 while(link!==this.voidLink){\r
184 if(link.data==null){\r
185 return pos;\r
186 }link=link.next;\r
187 pos++;\r
188 }\r
189 }return-1;\r
190 },"~O");\r
191 Clazz.overrideMethod(c$,"lastIndexOf",\r
192 function(object){\r
193 var pos=this.$size;\r
194 var link=this.voidLink.previous;\r
195 if(object!=null){\r
196 while(link!==this.voidLink){\r
197 pos--;\r
198 if(object.equals(link.data)){\r
199 return pos;\r
200 }link=link.previous;\r
201 }\r
202 }else{\r
203 while(link!==this.voidLink){\r
204 pos--;\r
205 if(link.data==null){\r
206 return pos;\r
207 }link=link.previous;\r
208 }\r
209 }return-1;\r
210 },"~O");\r
211 Clazz.defineMethod(c$,"listIterator",\r
212 function(location){\r
213 return new java.util.LinkedList.LinkIterator(this,location);\r
214 },"~N");\r
215 Clazz.defineMethod(c$,"remove",\r
216 function(location){\r
217 if(0<=location&&location<this.$size){\r
218 var link=this.voidLink;\r
219 if(location<(Math.floor(this.$size/2))){\r
220 for(var i=0;i<=location;i++){\r
221 link=link.next;\r
222 }\r
223 }else{\r
224 for(var i=this.$size;i>location;i--){\r
225 link=link.previous;\r
226 }\r
227 }var previous=link.previous;\r
228 var next=link.next;\r
229 previous.next=next;\r
230 next.previous=previous;\r
231 this.$size--;\r
232 this.modCount++;\r
233 return link.data;\r
234 }throw new IndexOutOfBoundsException();\r
235 },"~N");\r
236 Clazz.defineMethod(c$,"remove",\r
237 function(object){\r
238 var link=this.voidLink.next;\r
239 if(object!=null){\r
240 while(link!==this.voidLink&&!object.equals(link.data)){\r
241 link=link.next;\r
242 }\r
243 }else{\r
244 while(link!==this.voidLink&&link.data!=null){\r
245 link=link.next;\r
246 }\r
247 }if(link===this.voidLink){\r
248 return false;\r
249 }var next=link.next;\r
250 var previous=link.previous;\r
251 previous.next=next;\r
252 next.previous=previous;\r
253 this.$size--;\r
254 this.modCount++;\r
255 return true;\r
256 },"~O");\r
257 Clazz.defineMethod(c$,"removeFirst",\r
258 function(){\r
259 var first=this.voidLink.next;\r
260 if(first!==this.voidLink){\r
261 var next=first.next;\r
262 this.voidLink.next=next;\r
263 next.previous=this.voidLink;\r
264 this.$size--;\r
265 this.modCount++;\r
266 return first.data;\r
267 }throw new java.util.NoSuchElementException();\r
268 });\r
269 Clazz.defineMethod(c$,"removeLast",\r
270 function(){\r
271 var last=this.voidLink.previous;\r
272 if(last!==this.voidLink){\r
273 var previous=last.previous;\r
274 this.voidLink.previous=previous;\r
275 previous.next=this.voidLink;\r
276 this.$size--;\r
277 this.modCount++;\r
278 return last.data;\r
279 }throw new java.util.NoSuchElementException();\r
280 });\r
281 Clazz.overrideMethod(c$,"set",\r
282 function(location,object){\r
283 if(0<=location&&location<this.$size){\r
284 var link=this.voidLink;\r
285 if(location<(Math.floor(this.$size/2))){\r
286 for(var i=0;i<=location;i++){\r
287 link=link.next;\r
288 }\r
289 }else{\r
290 for(var i=this.$size;i>location;i--){\r
291 link=link.previous;\r
292 }\r
293 }var result=link.data;\r
294 link.data=object;\r
295 return result;\r
296 }throw new IndexOutOfBoundsException();\r
297 },"~N,~O");\r
298 Clazz.overrideMethod(c$,"size",\r
299 function(){\r
300 return this.$size;\r
301 });\r
302 Clazz.overrideMethod(c$,"offer",\r
303 function(o){\r
304 this.add(o);\r
305 return true;\r
306 },"~O");\r
307 Clazz.overrideMethod(c$,"poll",\r
308 function(){\r
309 return this.$size==0?null:this.removeFirst();\r
310 });\r
311 Clazz.defineMethod(c$,"remove",\r
312 function(){\r
313 return this.removeFirst();\r
314 });\r
315 Clazz.overrideMethod(c$,"peek",\r
316 function(){\r
317 var first=this.voidLink.next;\r
318 return first===this.voidLink?null:first.data;\r
319 });\r
320 Clazz.overrideMethod(c$,"element",\r
321 function(){\r
322 return this.getFirst();\r
323 });\r
324 Clazz.defineMethod(c$,"toArray",\r
325 function(){\r
326 var index=0;\r
327 var contents=new Array(this.$size);\r
328 var link=this.voidLink.next;\r
329 while(link!==this.voidLink){\r
330 contents[index++]=link.data;\r
331 link=link.next;\r
332 }\r
333 return contents;\r
334 });\r
335 Clazz.defineMethod(c$,"toArray",\r
336 function(contents){\r
337 var index=0;\r
338 if(this.$size>contents.length){\r
339 var ct=contents.getClass().getComponentType();\r
340 contents=java.lang.reflect.Array.newInstance(ct,this.$size);\r
341 }var link=this.voidLink.next;\r
342 while(link!==this.voidLink){\r
343 contents[index++]=link.data;\r
344 link=link.next;\r
345 }\r
346 if(index<contents.length){\r
347 contents[index]=null;\r
348 }return contents;\r
349 },"~A");\r
350 Clazz.pu$h(self.c$);\r
351 c$=Clazz.decorateAsClass(function(){\r
352 this.data=null;\r
353 this.previous=null;\r
354 this.next=null;\r
355 Clazz.instantialize(this,arguments);\r
356 },java.util.LinkedList,"Link");\r
357 Clazz.makeConstructor(c$,\r
358 function(a,b,c){\r
359 this.data=a;\r
360 this.previous=b;\r
361 this.next=c;\r
362 },"~O,java.util.LinkedList.Link,java.util.LinkedList.Link");\r
363 c$=Clazz.p0p();\r
364 Clazz.pu$h(self.c$);\r
365 c$=Clazz.decorateAsClass(function(){\r
366 this.pos=0;\r
367 this.expectedModCount=0;\r
368 this.list=null;\r
369 this.link=null;\r
370 this.lastLink=null;\r
371 Clazz.instantialize(this,arguments);\r
372 },java.util.LinkedList,"LinkIterator",null,java.util.ListIterator);\r
373 Clazz.makeConstructor(c$,\r
374 function(a,b){\r
375 this.list=a;\r
376 this.expectedModCount=this.list.modCount;\r
377 if(0<=b&&b<=this.list.$size){\r
378 this.link=this.list.voidLink;\r
379 if(b<Math.floor(this.list.$size/2)){\r
380 for(this.pos=-1;this.pos+1<b;this.pos++){\r
381 this.link=this.link.next;\r
382 }\r
383 }else{\r
384 for(this.pos=this.list.$size;this.pos>=b;this.pos--){\r
385 this.link=this.link.previous;\r
386 }\r
387 }}else{\r
388 throw new IndexOutOfBoundsException();\r
389 }},"java.util.LinkedList,~N");\r
390 Clazz.overrideMethod(c$,"add",\r
391 function(a){\r
392 if(this.expectedModCount==this.list.modCount){\r
393 var b=this.link.next;\r
394 var c=new java.util.LinkedList.Link(a,this.link,b);\r
395 this.link.next=c;\r
396 b.previous=c;\r
397 this.link=c;\r
398 this.lastLink=null;\r
399 this.pos++;\r
400 this.expectedModCount++;\r
401 this.list.$size++;\r
402 this.list.modCount++;\r
403 }else{\r
404 throw new java.util.ConcurrentModificationException();\r
405 }},"~O");\r
406 Clazz.overrideMethod(c$,"hasNext",\r
407 function(){\r
408 return this.link.next!==this.list.voidLink;\r
409 });\r
410 Clazz.overrideMethod(c$,"hasPrevious",\r
411 function(){\r
412 return this.link!==this.list.voidLink;\r
413 });\r
414 Clazz.overrideMethod(c$,"next",\r
415 function(){\r
416 if(this.expectedModCount==this.list.modCount){\r
417 var a=this.link.next;\r
418 if(a!==this.list.voidLink){\r
419 this.lastLink=this.link=a;\r
420 this.pos++;\r
421 return this.link.data;\r
422 }throw new java.util.NoSuchElementException();\r
423 }throw new java.util.ConcurrentModificationException();\r
424 });\r
425 Clazz.overrideMethod(c$,"nextIndex",\r
426 function(){\r
427 return this.pos+1;\r
428 });\r
429 Clazz.overrideMethod(c$,"previous",\r
430 function(){\r
431 if(this.expectedModCount==this.list.modCount){\r
432 if(this.link!==this.list.voidLink){\r
433 this.lastLink=this.link;\r
434 this.link=this.link.previous;\r
435 this.pos--;\r
436 return this.lastLink.data;\r
437 }throw new java.util.NoSuchElementException();\r
438 }throw new java.util.ConcurrentModificationException();\r
439 });\r
440 Clazz.overrideMethod(c$,"previousIndex",\r
441 function(){\r
442 return this.pos;\r
443 });\r
444 Clazz.overrideMethod(c$,"remove",\r
445 function(){\r
446 if(this.expectedModCount==this.list.modCount){\r
447 if(this.lastLink!=null){\r
448 var a=this.lastLink.next;\r
449 var b=this.lastLink.previous;\r
450 a.previous=b;\r
451 b.next=a;\r
452 if(this.lastLink===this.link){\r
453 this.pos--;\r
454 }this.link=b;\r
455 this.lastLink=null;\r
456 this.expectedModCount++;\r
457 this.list.$size--;\r
458 this.list.modCount++;\r
459 }else{\r
460 throw new IllegalStateException();\r
461 }}else{\r
462 throw new java.util.ConcurrentModificationException();\r
463 }});\r
464 Clazz.overrideMethod(c$,"set",\r
465 function(a){\r
466 if(this.expectedModCount==this.list.modCount){\r
467 if(this.lastLink!=null){\r
468 this.lastLink.data=a;\r
469 }else{\r
470 throw new IllegalStateException();\r
471 }}else{\r
472 throw new java.util.ConcurrentModificationException();\r
473 }},"~O");\r
474 c$=Clazz.p0p();\r
475 });\r