1 Clazz.load(["java.lang.ref.WeakReference","java.util.AbstractMap","$.Iterator","$.Map"],"java.util.WeakHashMap",["java.lang.IllegalArgumentException","$.IllegalStateException","java.lang.ref.ReferenceQueue","java.util.AbstractCollection","$.AbstractSet","$.Arrays","$.ConcurrentModificationException","$.NoSuchElementException"],function(){
\r
2 c$=Clazz.decorateAsClass(function(){
\r
3 this.referenceQueue=null;
\r
5 this.elementData=null;
\r
9 if(!Clazz.isClassDefined("java.util.WeakHashMap.HashIterator")){
\r
10 java.util.WeakHashMap.$WeakHashMap$HashIterator$();
\r
12 Clazz.instantialize(this,arguments);
\r
13 },java.util,"WeakHashMap",java.util.AbstractMap,java.util.Map);
\r
14 c$.newEntryArray=Clazz.defineMethod(c$,"newEntryArray",
\r
15 ($fz=function(size){
\r
16 return new Array(size);
\r
17 },$fz.isPrivate=true,$fz),"~N");
\r
18 Clazz.makeConstructor(c$,
\r
22 Clazz.makeConstructor(c$,
\r
24 Clazz.superConstructor(this,java.util.WeakHashMap,[]);
\r
26 this.elementCount=0;
\r
27 this.elementData=java.util.WeakHashMap.newEntryArray(capacity==0?1:capacity);
\r
28 this.loadFactor=7500;
\r
29 this.computeMaxSize();
\r
30 this.referenceQueue=new java.lang.ref.ReferenceQueue();
\r
32 throw new IllegalArgumentException();
\r
34 Clazz.makeConstructor(c$,
\r
35 function(capacity,loadFactor){
\r
36 Clazz.superConstructor(this,java.util.WeakHashMap,[]);
\r
37 if(capacity>=0&&loadFactor>0){
\r
38 this.elementCount=0;
\r
39 this.elementData=java.util.WeakHashMap.newEntryArray(capacity==0?1:capacity);
\r
40 this.loadFactor=Math.round((loadFactor*10000));
\r
41 this.computeMaxSize();
\r
42 this.referenceQueue=new java.lang.ref.ReferenceQueue();
\r
44 throw new IllegalArgumentException();
\r
46 Clazz.makeConstructor(c$,
\r
48 this.construct(map.size()<6?11:map.size()*2);
\r
49 this.putAllImpl(map);
\r
51 Clazz.overrideMethod(c$,"clear",
\r
53 if(this.elementCount>0){
\r
54 this.elementCount=0;
\r
55 java.util.Arrays.fill(this.elementData,null);
\r
57 while(this.referenceQueue.poll()!=null){
\r
60 Clazz.defineMethod(c$,"computeMaxSize",
\r
62 this.threshold=(Math.floor(this.elementData.length*this.loadFactor/10000));
\r
63 },$fz.isPrivate=true,$fz));
\r
64 Clazz.overrideMethod(c$,"containsKey",
\r
66 return this.getEntry(key)!=null;
\r
68 Clazz.overrideMethod(c$,"entrySet",
\r
71 return((Clazz.isClassDefined("java.util.WeakHashMap$1")?0:java.util.WeakHashMap.$WeakHashMap$1$()),Clazz.innerTypeInstance(java.util.WeakHashMap$1,this,null));
\r
73 Clazz.overrideMethod(c$,"keySet",
\r
76 if(this.$keySet==null){
\r
77 this.$keySet=((Clazz.isClassDefined("java.util.WeakHashMap$2")?0:java.util.WeakHashMap.$WeakHashMap$2$()),Clazz.innerTypeInstance(java.util.WeakHashMap$2,this,null));
\r
78 }return this.$keySet;
\r
80 Clazz.overrideMethod(c$,"values",
\r
83 if(this.valuesCollection==null){
\r
84 this.valuesCollection=((Clazz.isClassDefined("java.util.WeakHashMap$3")?0:java.util.WeakHashMap.$WeakHashMap$3$()),Clazz.innerTypeInstance(java.util.WeakHashMap$3,this,null));
\r
85 }return this.valuesCollection;
\r
87 Clazz.overrideMethod(c$,"get",
\r
91 var index=(key.hashCode()&0x7FFFFFFF)%this.elementData.length;
\r
92 var entry=this.elementData[index];
\r
94 if(key.equals(entry.get())){
\r
99 }var entry=this.elementData[0];
\r
100 while(entry!=null){
\r
102 return entry.value;
\r
103 }entry=entry.$next;
\r
107 Clazz.defineMethod(c$,"getEntry",
\r
111 var index=(key.hashCode()&0x7FFFFFFF)%this.elementData.length;
\r
112 var entry=this.elementData[index];
\r
113 while(entry!=null){
\r
114 if(key.equals(entry.get())){
\r
116 }entry=entry.$next;
\r
119 }var entry=this.elementData[0];
\r
120 while(entry!=null){
\r
123 }entry=entry.$next;
\r
127 Clazz.overrideMethod(c$,"containsValue",
\r
131 for(var i=this.elementData.length;--i>=0;){
\r
132 var entry=this.elementData[i];
\r
133 while(entry!=null){
\r
134 var key=entry.get();
\r
135 if((key!=null||entry.isNull)&&value.equals(entry.value)){
\r
137 }entry=entry.$next;
\r
141 for(var i=this.elementData.length;--i>=0;){
\r
142 var entry=this.elementData[i];
\r
143 while(entry!=null){
\r
144 var key=entry.get();
\r
145 if((key!=null||entry.isNull)&&entry.value==null){
\r
147 }entry=entry.$next;
\r
152 Clazz.overrideMethod(c$,"isEmpty",
\r
154 return this.size()==0;
\r
156 Clazz.defineMethod(c$,"poll",
\r
159 while((toRemove=this.referenceQueue.poll())!=null){
\r
160 this.removeEntry(toRemove);
\r
163 Clazz.defineMethod(c$,"removeEntry",
\r
164 function(toRemove){
\r
167 var index=(toRemove.hash&0x7FFFFFFF)%this.elementData.length;
\r
168 entry=this.elementData[index];
\r
169 while(entry!=null){
\r
170 if(toRemove===entry){
\r
173 this.elementData[index]=entry.$next;
\r
175 last.$next=entry.$next;
\r
176 }this.elementCount--;
\r
181 },"java.util.WeakHashMap.Entry");
\r
182 Clazz.overrideMethod(c$,"put",
\r
183 function(key,value){
\r
188 index=(key.hashCode()&0x7FFFFFFF)%this.elementData.length;
\r
189 entry=this.elementData[index];
\r
190 while(entry!=null&&!key.equals(entry.get())){
\r
194 entry=this.elementData[0];
\r
195 while(entry!=null&&!entry.isNull){
\r
200 if(++this.elementCount>this.threshold){
\r
202 index=key==null?0:(key.hashCode()&0x7FFFFFFF)%this.elementData.length;
\r
203 }entry=new java.util.WeakHashMap.Entry(key,value,this.referenceQueue);
\r
204 entry.$next=this.elementData[index];
\r
205 this.elementData[index]=entry;
\r
207 }var result=entry.value;
\r
211 Clazz.defineMethod(c$,"rehash",
\r
213 var length=this.elementData.length<<1;
\r
216 }var newData=java.util.WeakHashMap.newEntryArray(length);
\r
217 for(var i=0;i<this.elementData.length;i++){
\r
218 var entry=this.elementData[i];
\r
219 while(entry!=null){
\r
220 var index=entry.isNull?0:(entry.hash&0x7FFFFFFF)%length;
\r
221 var next=entry.$next;
\r
222 entry.$next=newData[index];
\r
223 newData[index]=entry;
\r
227 this.elementData=newData;
\r
228 this.computeMaxSize();
\r
229 },$fz.isPrivate=true,$fz));
\r
230 Clazz.overrideMethod(c$,"putAll",
\r
232 this.putAllImpl(map);
\r
233 },"java.util.Map");
\r
234 Clazz.overrideMethod(c$,"remove",
\r
241 index=(key.hashCode()&0x7FFFFFFF)%this.elementData.length;
\r
242 entry=this.elementData[index];
\r
243 while(entry!=null&&!key.equals(entry.get())){
\r
248 entry=this.elementData[0];
\r
249 while(entry!=null&&!entry.isNull){
\r
256 this.elementData[index]=entry.$next;
\r
258 last.$next=entry.$next;
\r
259 }this.elementCount--;
\r
260 return entry.value;
\r
263 Clazz.overrideMethod(c$,"size",
\r
266 return this.elementCount;
\r
268 Clazz.defineMethod(c$,"putAllImpl",
\r
269 ($fz=function(map){
\r
270 if(map.entrySet()!=null){
\r
271 Clazz.superCall(this,java.util.WeakHashMap,"putAll",[map]);
\r
272 }},$fz.isPrivate=true,$fz),"java.util.Map");
\r
273 c$.$WeakHashMap$HashIterator$=function(){
\r
274 Clazz.pu$h(self.c$);
\r
275 c$=Clazz.decorateAsClass(function(){
\r
276 Clazz.prepareCallback(this,arguments);
\r
278 this.expectedModCount=0;
\r
279 this.currentEntry=null;
\r
280 this.nextEntry=null;
\r
283 Clazz.instantialize(this,arguments);
\r
284 },java.util.WeakHashMap,"HashIterator",null,java.util.Iterator);
\r
285 Clazz.makeConstructor(c$,
\r
288 this.expectedModCount=this.b$["java.util.WeakHashMap"].modCount;
\r
289 },"java.util.WeakHashMap.Entry.Type");
\r
290 Clazz.overrideMethod(c$,"hasNext",
\r
292 if(this.nextEntry!=null){
\r
295 if(this.nextEntry==null){
\r
296 while(this.position<this.b$["java.util.WeakHashMap"].elementData.length){
\r
297 if((this.nextEntry=this.b$["java.util.WeakHashMap"].elementData[this.position++])!=null){
\r
300 if(this.nextEntry==null){
\r
302 }}this.nextKey=this.nextEntry.get();
\r
303 if(this.nextKey!=null||this.nextEntry.isNull){
\r
305 }this.nextEntry=this.nextEntry.$next;
\r
308 Clazz.overrideMethod(c$,"next",
\r
310 if(this.expectedModCount==this.b$["java.util.WeakHashMap"].modCount){
\r
311 if(this.hasNext()){
\r
312 this.currentEntry=this.nextEntry;
\r
313 this.nextEntry=this.currentEntry.$next;
\r
314 var a=this.type.get(this.currentEntry);
\r
317 }throw new java.util.NoSuchElementException();
\r
318 }throw new java.util.ConcurrentModificationException();
\r
320 Clazz.overrideMethod(c$,"remove",
\r
322 if(this.expectedModCount==this.b$["java.util.WeakHashMap"].modCount){
\r
323 if(this.currentEntry!=null){
\r
324 this.b$["java.util.WeakHashMap"].removeEntry(this.currentEntry);
\r
325 this.currentEntry=null;
\r
326 this.expectedModCount++;
\r
328 throw new IllegalStateException();
\r
330 throw new java.util.ConcurrentModificationException();
\r
334 c$.$WeakHashMap$1$=function(){
\r
335 Clazz.pu$h(self.c$);
\r
336 c$=Clazz.declareAnonymous(java.util,"WeakHashMap$1",java.util.AbstractSet);
\r
337 Clazz.overrideMethod(c$,"size",
\r
339 return this.b$["java.util.WeakHashMap"].size();
\r
341 Clazz.overrideMethod(c$,"clear",
\r
343 this.b$["java.util.WeakHashMap"].clear();
\r
345 Clazz.overrideMethod(c$,"remove",
\r
347 if(this.contains(object)){
\r
348 this.b$["java.util.WeakHashMap"].remove((object).getKey());
\r
352 Clazz.overrideMethod(c$,"contains",
\r
354 if(Clazz.instanceOf(object,java.util.Map.Entry)){
\r
355 var entry=this.b$["java.util.WeakHashMap"].getEntry((object).getKey());
\r
357 var key=entry.get();
\r
358 if(key!=null||entry.isNull){
\r
359 return object.equals(entry);
\r
362 Clazz.overrideMethod(c$,"iterator",
\r
364 return Clazz.innerTypeInstance(java.util.WeakHashMap.HashIterator,this,null,((Clazz.isClassDefined("java.util.WeakHashMap$1$1")?0:java.util.WeakHashMap.$WeakHashMap$1$1$()),Clazz.innerTypeInstance(java.util.WeakHashMap$1$1,this,null)));
\r
368 c$.$WeakHashMap$1$1$=function(){
\r
369 Clazz.pu$h(self.c$);
\r
370 c$=Clazz.declareAnonymous(java.util,"WeakHashMap$1$1",null,java.util.WeakHashMap.Entry.Type);
\r
371 Clazz.overrideMethod(c$,"get",
\r
374 },"java.util.Map.Entry");
\r
377 c$.$WeakHashMap$2$=function(){
\r
378 Clazz.pu$h(self.c$);
\r
379 c$=Clazz.declareAnonymous(java.util,"WeakHashMap$2",java.util.AbstractSet);
\r
380 Clazz.overrideMethod(c$,"contains",
\r
382 return this.b$["java.util.WeakHashMap"].containsKey(object);
\r
384 Clazz.overrideMethod(c$,"size",
\r
386 return this.b$["java.util.WeakHashMap"].size();
\r
388 Clazz.overrideMethod(c$,"clear",
\r
390 this.b$["java.util.WeakHashMap"].clear();
\r
392 Clazz.overrideMethod(c$,"remove",
\r
394 if(this.b$["java.util.WeakHashMap"].containsKey(key)){
\r
395 this.b$["java.util.WeakHashMap"].remove(key);
\r
399 Clazz.overrideMethod(c$,"iterator",
\r
401 return Clazz.innerTypeInstance(java.util.WeakHashMap.HashIterator,this,null,((Clazz.isClassDefined("java.util.WeakHashMap$2$1")?0:java.util.WeakHashMap.$WeakHashMap$2$1$()),Clazz.innerTypeInstance(java.util.WeakHashMap$2$1,this,null)));
\r
405 c$.$WeakHashMap$2$1$=function(){
\r
406 Clazz.pu$h(self.c$);
\r
407 c$=Clazz.declareAnonymous(java.util,"WeakHashMap$2$1",null,java.util.WeakHashMap.Entry.Type);
\r
408 Clazz.overrideMethod(c$,"get",
\r
410 return entry.getKey();
\r
411 },"java.util.Map.Entry");
\r
414 c$.$WeakHashMap$3$=function(){
\r
415 Clazz.pu$h(self.c$);
\r
416 c$=Clazz.declareAnonymous(java.util,"WeakHashMap$3",java.util.AbstractCollection);
\r
417 Clazz.overrideMethod(c$,"size",
\r
419 return this.b$["java.util.WeakHashMap"].size();
\r
421 Clazz.overrideMethod(c$,"clear",
\r
423 this.b$["java.util.WeakHashMap"].clear();
\r
425 Clazz.overrideMethod(c$,"contains",
\r
427 return this.b$["java.util.WeakHashMap"].containsValue(object);
\r
429 Clazz.overrideMethod(c$,"iterator",
\r
431 return Clazz.innerTypeInstance(java.util.WeakHashMap.HashIterator,this,null,((Clazz.isClassDefined("java.util.WeakHashMap$3$1")?0:java.util.WeakHashMap.$WeakHashMap$3$1$()),Clazz.innerTypeInstance(java.util.WeakHashMap$3$1,this,null)));
\r
435 c$.$WeakHashMap$3$1$=function(){
\r
436 Clazz.pu$h(self.c$);
\r
437 c$=Clazz.declareAnonymous(java.util,"WeakHashMap$3$1",null,java.util.WeakHashMap.Entry.Type);
\r
438 Clazz.overrideMethod(c$,"get",
\r
440 return entry.getValue();
\r
441 },"java.util.Map.Entry");
\r
444 Clazz.pu$h(self.c$);
\r
445 c$=Clazz.decorateAsClass(function(){
\r
450 Clazz.instantialize(this,arguments);
\r
451 },java.util.WeakHashMap,"Entry",java.lang.ref.WeakReference,java.util.Map.Entry);
\r
452 Clazz.makeConstructor(c$,
\r
454 Clazz.superConstructor(this,java.util.WeakHashMap.Entry,[a,c]);
\r
455 this.isNull=a==null;
\r
456 this.hash=this.isNull?0:a.hashCode();
\r
458 },"~O,~O,java.lang.ref.ReferenceQueue");
\r
459 Clazz.overrideMethod(c$,"getKey",
\r
461 return Clazz.superCall(this,java.util.WeakHashMap.Entry,"get",[]);
\r
463 Clazz.overrideMethod(c$,"getValue",
\r
467 Clazz.overrideMethod(c$,"setValue",
\r
473 Clazz.overrideMethod(c$,"equals",
\r
475 if(!(Clazz.instanceOf(a,java.util.Map.Entry))){
\r
478 var c=Clazz.superCall(this,java.util.WeakHashMap.Entry,"get",[]);
\r
479 return(c==null?c===b.getKey():c.equals(b.getKey()))&&(this.value==null?this.value===b.getValue():this.value.equals(b.getValue()));
\r
481 Clazz.overrideMethod(c$,"hashCode",
\r
483 return this.hash+(this.value==null?0:this.value.hashCode());
\r
485 Clazz.overrideMethod(c$,"toString",
\r
487 return Clazz.superCall(this,java.util.WeakHashMap.Entry,"get",[])+"="+this.value;
\r
489 Clazz.declareInterface(java.util.WeakHashMap.Entry,"Type");
\r
491 Clazz.defineStatics(c$,
\r
492 "DEFAULT_SIZE",16);
\r