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(){
2 c$=Clazz.decorateAsClass(function(){
5 Clazz.instantialize(this,arguments);
6 },java.util,"LinkedList",java.util.AbstractSequentialList,[java.util.List,java.util.Queue,Cloneable,java.io.Serializable]);
7 Clazz.makeConstructor(c$,
9 Clazz.superConstructor(this,java.util.LinkedList,[]);
10 this.voidLink=new java.util.LinkedList.Link(null,null,null);
11 this.voidLink.previous=this.voidLink;
12 this.voidLink.next=this.voidLink;
14 Clazz.makeConstructor(c$,
17 this.addAll(collection);
18 },"java.util.Collection");
19 Clazz.defineMethod(c$,"add",
20 function(location,object){
21 if(0<=location&&location<=this.$size){
22 var link=this.voidLink;
23 if(location<(Math.floor(this.$size/2))){
24 for(var i=0;i<=location;i++){
28 for(var i=this.$size;i>location;i--){
31 }var previous=link.previous;
32 var newLink=new java.util.LinkedList.Link(object,previous,link);
33 previous.next=newLink;
34 link.previous=newLink;
38 throw new IndexOutOfBoundsException();
40 Clazz.defineMethod(c$,"add",
42 var oldLast=this.voidLink.previous;
43 var newLink=new java.util.LinkedList.Link(object,oldLast,this.voidLink);
44 this.voidLink.previous=newLink;
50 Clazz.defineMethod(c$,"addAll",
51 function(location,collection){
52 if(location<0||location>this.$size){
53 throw new IndexOutOfBoundsException();
54 }var adding=collection.size();
57 }var previous=this.voidLink;
58 if(location<(Math.floor(this.$size/2))){
59 for(var i=0;i<location;i++){
60 previous=previous.next;
63 for(var i=this.$size;i>=location;i--){
64 previous=previous.previous;
66 }var next=previous.next;
67 for(var e,$e=collection.iterator();$e.hasNext()&&((e=$e.next())||true);){
68 var newLink=new java.util.LinkedList.Link(e,previous,null);
69 previous.next=newLink;
73 next.previous=previous;
77 },"~N,java.util.Collection");
78 Clazz.defineMethod(c$,"addAll",
80 var adding=collection.size();
83 }var previous=this.voidLink.previous;
84 for(var e,$e=collection.iterator();$e.hasNext()&&((e=$e.next())||true);){
85 var newLink=new java.util.LinkedList.Link(e,previous,null);
86 previous.next=newLink;
89 previous.next=this.voidLink;
90 this.voidLink.previous=previous;
94 },"java.util.Collection");
95 Clazz.defineMethod(c$,"addFirst",
97 var oldFirst=this.voidLink.next;
98 var newLink=new java.util.LinkedList.Link(object,this.voidLink,oldFirst);
99 this.voidLink.next=newLink;
100 oldFirst.previous=newLink;
104 Clazz.defineMethod(c$,"addLast",
106 var oldLast=this.voidLink.previous;
107 var newLink=new java.util.LinkedList.Link(object,oldLast,this.voidLink);
108 this.voidLink.previous=newLink;
109 oldLast.next=newLink;
113 Clazz.overrideMethod(c$,"clear",
117 this.voidLink.next=this.voidLink;
118 this.voidLink.previous=this.voidLink;
121 Clazz.overrideMethod(c$,"clone",
123 return new java.util.LinkedList(this);
125 Clazz.overrideMethod(c$,"contains",
127 var link=this.voidLink.next;
129 while(link!==this.voidLink){
130 if(object.equals(link.data)){
135 while(link!==this.voidLink){
142 Clazz.overrideMethod(c$,"get",
144 if(0<=location&&location<this.$size){
145 var link=this.voidLink;
146 if(location<(Math.floor(this.$size/2))){
147 for(var i=0;i<=location;i++){
151 for(var i=this.$size;i>location;i--){
155 }throw new IndexOutOfBoundsException();
157 Clazz.defineMethod(c$,"getFirst",
159 var first=this.voidLink.next;
160 if(first!==this.voidLink){
162 }throw new java.util.NoSuchElementException();
164 Clazz.defineMethod(c$,"getLast",
166 var last=this.voidLink.previous;
167 if(last!==this.voidLink){
169 }throw new java.util.NoSuchElementException();
171 Clazz.overrideMethod(c$,"indexOf",
174 var link=this.voidLink.next;
176 while(link!==this.voidLink){
177 if(object.equals(link.data)){
183 while(link!==this.voidLink){
191 Clazz.overrideMethod(c$,"lastIndexOf",
194 var link=this.voidLink.previous;
196 while(link!==this.voidLink){
198 if(object.equals(link.data)){
203 while(link!==this.voidLink){
211 Clazz.defineMethod(c$,"listIterator",
213 return new java.util.LinkedList.LinkIterator(this,location);
215 Clazz.defineMethod(c$,"remove",
217 if(0<=location&&location<this.$size){
218 var link=this.voidLink;
219 if(location<(Math.floor(this.$size/2))){
220 for(var i=0;i<=location;i++){
224 for(var i=this.$size;i>location;i--){
227 }var previous=link.previous;
230 next.previous=previous;
234 }throw new IndexOutOfBoundsException();
236 Clazz.defineMethod(c$,"remove",
238 var link=this.voidLink.next;
240 while(link!==this.voidLink&&!object.equals(link.data)){
244 while(link!==this.voidLink&&link.data!=null){
247 }if(link===this.voidLink){
250 var previous=link.previous;
252 next.previous=previous;
257 Clazz.defineMethod(c$,"removeFirst",
259 var first=this.voidLink.next;
260 if(first!==this.voidLink){
262 this.voidLink.next=next;
263 next.previous=this.voidLink;
267 }throw new java.util.NoSuchElementException();
269 Clazz.defineMethod(c$,"removeLast",
271 var last=this.voidLink.previous;
272 if(last!==this.voidLink){
273 var previous=last.previous;
274 this.voidLink.previous=previous;
275 previous.next=this.voidLink;
279 }throw new java.util.NoSuchElementException();
281 Clazz.overrideMethod(c$,"set",
282 function(location,object){
283 if(0<=location&&location<this.$size){
284 var link=this.voidLink;
285 if(location<(Math.floor(this.$size/2))){
286 for(var i=0;i<=location;i++){
290 for(var i=this.$size;i>location;i--){
293 }var result=link.data;
296 }throw new IndexOutOfBoundsException();
298 Clazz.overrideMethod(c$,"size",
302 Clazz.overrideMethod(c$,"offer",
307 Clazz.overrideMethod(c$,"poll",
309 return this.$size==0?null:this.removeFirst();
311 Clazz.defineMethod(c$,"remove",
313 return this.removeFirst();
315 Clazz.overrideMethod(c$,"peek",
317 var first=this.voidLink.next;
318 return first===this.voidLink?null:first.data;
320 Clazz.overrideMethod(c$,"element",
322 return this.getFirst();
324 Clazz.defineMethod(c$,"toArray",
327 var contents=new Array(this.$size);
328 var link=this.voidLink.next;
329 while(link!==this.voidLink){
330 contents[index++]=link.data;
335 Clazz.defineMethod(c$,"toArray",
338 if(this.$size>contents.length){
339 var ct=contents.getClass().getComponentType();
340 contents=java.lang.reflect.Array.newInstance(ct,this.$size);
341 }var link=this.voidLink.next;
342 while(link!==this.voidLink){
343 contents[index++]=link.data;
346 if(index<contents.length){
347 contents[index]=null;
351 c$=Clazz.decorateAsClass(function(){
355 Clazz.instantialize(this,arguments);
356 },java.util.LinkedList,"Link");
357 Clazz.makeConstructor(c$,
362 },"~O,java.util.LinkedList.Link,java.util.LinkedList.Link");
365 c$=Clazz.decorateAsClass(function(){
367 this.expectedModCount=0;
371 Clazz.instantialize(this,arguments);
372 },java.util.LinkedList,"LinkIterator",null,java.util.ListIterator);
373 Clazz.makeConstructor(c$,
376 this.expectedModCount=this.list.modCount;
377 if(0<=b&&b<=this.list.$size){
378 this.link=this.list.voidLink;
379 if(b<Math.floor(this.list.$size/2)){
380 for(this.pos=-1;this.pos+1<b;this.pos++){
381 this.link=this.link.next;
384 for(this.pos=this.list.$size;this.pos>=b;this.pos--){
385 this.link=this.link.previous;
388 throw new IndexOutOfBoundsException();
389 }},"java.util.LinkedList,~N");
390 Clazz.overrideMethod(c$,"add",
392 if(this.expectedModCount==this.list.modCount){
393 var b=this.link.next;
394 var c=new java.util.LinkedList.Link(a,this.link,b);
400 this.expectedModCount++;
402 this.list.modCount++;
404 throw new java.util.ConcurrentModificationException();
406 Clazz.overrideMethod(c$,"hasNext",
408 return this.link.next!==this.list.voidLink;
410 Clazz.overrideMethod(c$,"hasPrevious",
412 return this.link!==this.list.voidLink;
414 Clazz.overrideMethod(c$,"next",
416 if(this.expectedModCount==this.list.modCount){
417 var a=this.link.next;
418 if(a!==this.list.voidLink){
419 this.lastLink=this.link=a;
421 return this.link.data;
422 }throw new java.util.NoSuchElementException();
423 }throw new java.util.ConcurrentModificationException();
425 Clazz.overrideMethod(c$,"nextIndex",
429 Clazz.overrideMethod(c$,"previous",
431 if(this.expectedModCount==this.list.modCount){
432 if(this.link!==this.list.voidLink){
433 this.lastLink=this.link;
434 this.link=this.link.previous;
436 return this.lastLink.data;
437 }throw new java.util.NoSuchElementException();
438 }throw new java.util.ConcurrentModificationException();
440 Clazz.overrideMethod(c$,"previousIndex",
444 Clazz.overrideMethod(c$,"remove",
446 if(this.expectedModCount==this.list.modCount){
447 if(this.lastLink!=null){
448 var a=this.lastLink.next;
449 var b=this.lastLink.previous;
452 if(this.lastLink===this.link){
456 this.expectedModCount++;
458 this.list.modCount++;
460 throw new IllegalStateException();
462 throw new java.util.ConcurrentModificationException();
464 Clazz.overrideMethod(c$,"set",
466 if(this.expectedModCount==this.list.modCount){
467 if(this.lastLink!=null){
468 this.lastLink.data=a;
470 throw new IllegalStateException();
472 throw new java.util.ConcurrentModificationException();