1 Clazz.load(["java.util.AbstractMap","$.AbstractSet","$.Iterator","$.Map","$.MapEntry"],"java.util.IdentityHashMap",["java.lang.IllegalArgumentException","$.IllegalStateException","java.util.AbstractCollection","$.ConcurrentModificationException","java.util.MapEntry.Type","java.util.NoSuchElementException"],function(){
\r
2 c$=Clazz.decorateAsClass(function(){
\r
3 this.elementData=null;
\r
7 Clazz.instantialize(this,arguments);
\r
8 },java.util,"IdentityHashMap",java.util.AbstractMap,[java.util.Map,java.io.Serializable,Cloneable]);
\r
9 Clazz.makeConstructor(c$,
\r
13 Clazz.makeConstructor(c$,
\r
15 Clazz.superConstructor(this,java.util.IdentityHashMap,[]);
\r
18 this.threshold=this.getThreshold(maxSize);
\r
19 this.elementData=this.newElementArray(this.computeElementArraySize());
\r
21 throw new IllegalArgumentException();
\r
23 Clazz.defineMethod(c$,"getThreshold",
\r
24 ($fz=function(maxSize){
\r
25 return maxSize>3?maxSize:3;
\r
26 },$fz.isPrivate=true,$fz),"~N");
\r
27 Clazz.defineMethod(c$,"computeElementArraySize",
\r
29 return(Math.floor((this.threshold*10000)/7500))*2;
\r
30 },$fz.isPrivate=true,$fz));
\r
31 Clazz.defineMethod(c$,"newElementArray",
\r
33 return new Array(s);
\r
34 },$fz.isPrivate=true,$fz),"~N");
\r
35 Clazz.makeConstructor(c$,
\r
37 this.construct(map.size()<6?11:map.size()*2);
\r
38 this.putAllImpl(map);
\r
40 Clazz.defineMethod(c$,"massageValue",
\r
41 ($fz=function(value){
\r
42 return((value===java.util.IdentityHashMap.NULL_OBJECT)?null:value);
\r
43 },$fz.isPrivate=true,$fz),"~O");
\r
44 Clazz.overrideMethod(c$,"clear",
\r
47 for(var i=0;i<this.elementData.length;i++){
\r
48 this.elementData[i]=null;
\r
52 Clazz.overrideMethod(c$,"containsKey",
\r
55 key=java.util.IdentityHashMap.NULL_OBJECT;
\r
56 }var index=this.findIndex(key,this.elementData);
\r
57 return this.elementData[index]===key;
\r
59 Clazz.overrideMethod(c$,"containsValue",
\r
62 value=java.util.IdentityHashMap.NULL_OBJECT;
\r
63 }for(var i=1;i<this.elementData.length;i=i+2){
\r
64 if(this.elementData[i]===value){
\r
69 Clazz.overrideMethod(c$,"get",
\r
72 key=java.util.IdentityHashMap.NULL_OBJECT;
\r
73 }var index=this.findIndex(key,this.elementData);
\r
74 if(this.elementData[index]===key){
\r
75 var result=this.elementData[index+1];
\r
76 return this.massageValue(result);
\r
79 Clazz.defineMethod(c$,"getEntry",
\r
82 key=java.util.IdentityHashMap.NULL_OBJECT;
\r
83 }var index=this.findIndex(key,this.elementData);
\r
84 if(this.elementData[index]===key){
\r
85 return this.getEntry(index);
\r
87 },$fz.isPrivate=true,$fz),"~O");
\r
88 Clazz.defineMethod(c$,"getEntry",
\r
89 ($fz=function(index){
\r
90 var key=this.elementData[index];
\r
91 var value=this.elementData[index+1];
\r
92 if(key===java.util.IdentityHashMap.NULL_OBJECT){
\r
94 }if(value===java.util.IdentityHashMap.NULL_OBJECT){
\r
96 }return new java.util.IdentityHashMap.IdentityHashMapEntry(key,value);
\r
97 },$fz.isPrivate=true,$fz),"~N");
\r
98 Clazz.defineMethod(c$,"findIndex",
\r
99 ($fz=function(key,array){
\r
100 var length=array.length;
\r
101 var index=this.getModuloHash(key,length);
\r
102 var last=(index+length-2)%length;
\r
103 while(index!=last){
\r
104 if(array[index]===key||(array[index]==null)){
\r
106 }index=(index+2)%length;
\r
109 },$fz.isPrivate=true,$fz),"~O,~A");
\r
110 Clazz.defineMethod(c$,"getModuloHash",
\r
111 ($fz=function(key,length){
\r
112 return((System.identityHashCode(key)&0x7FFFFFFF)%(Math.floor(length/2)))*2;
\r
113 },$fz.isPrivate=true,$fz),"~O,~N");
\r
114 Clazz.overrideMethod(c$,"put",
\r
115 function(key,value){
\r
119 _key=java.util.IdentityHashMap.NULL_OBJECT;
\r
121 _value=java.util.IdentityHashMap.NULL_OBJECT;
\r
122 }var index=this.findIndex(_key,this.elementData);
\r
123 if(this.elementData[index]!==_key){
\r
125 if(++this.$size>this.threshold){
\r
127 index=this.findIndex(_key,this.elementData);
\r
128 }this.elementData[index]=_key;
\r
129 this.elementData[index+1]=null;
\r
130 }var result=this.elementData[index+1];
\r
131 this.elementData[index+1]=_value;
\r
132 return this.massageValue(result);
\r
134 Clazz.overrideMethod(c$,"putAll",
\r
136 this.putAllImpl(map);
\r
137 },"java.util.Map");
\r
138 Clazz.defineMethod(c$,"rehash",
\r
140 var newlength=this.elementData.length<<1;
\r
143 }var newData=this.newElementArray(newlength);
\r
144 for(var i=0;i<this.elementData.length;i=i+2){
\r
145 var key=this.elementData[i];
\r
147 var index=this.findIndex(key,newData);
\r
148 newData[index]=key;
\r
149 newData[index+1]=this.elementData[i+1];
\r
151 this.elementData=newData;
\r
152 this.computeMaxSize();
\r
153 },$fz.isPrivate=true,$fz));
\r
154 Clazz.defineMethod(c$,"computeMaxSize",
\r
156 this.threshold=(Math.floor((Math.floor(this.elementData.length/ 2)) * 7500 /10000));
\r
157 },$fz.isPrivate=true,$fz));
\r
158 Clazz.overrideMethod(c$,"remove",
\r
161 key=java.util.IdentityHashMap.NULL_OBJECT;
\r
168 index=next=this.findIndex(key,this.elementData);
\r
169 if(this.elementData[index]!==key){
\r
171 }result=this.elementData[index+1];
\r
172 var length=this.elementData.length;
\r
174 next=(next+2)%length;
\r
175 object=this.elementData[next];
\r
178 }hash=this.getModuloHash(object,length);
\r
179 hashedOk=hash>index;
\r
181 hashedOk=hashedOk||(hash<=next);
\r
183 hashedOk=hashedOk&&(hash<=next);
\r
185 this.elementData[index]=object;
\r
186 this.elementData[index+1]=this.elementData[next+1];
\r
191 this.elementData[index]=null;
\r
192 this.elementData[index+1]=null;
\r
193 return this.massageValue(result);
\r
195 Clazz.overrideMethod(c$,"entrySet",
\r
197 return new java.util.IdentityHashMap.IdentityHashMapEntrySet(this);
\r
199 Clazz.overrideMethod(c$,"keySet",
\r
201 if(this.$keySet==null){
\r
202 this.$keySet=((Clazz.isClassDefined("java.util.IdentityHashMap$1")?0:java.util.IdentityHashMap.$IdentityHashMap$1$()),Clazz.innerTypeInstance(java.util.IdentityHashMap$1,this,null));
\r
203 }return this.$keySet;
\r
205 Clazz.overrideMethod(c$,"values",
\r
207 if(this.valuesCollection==null){
\r
208 this.valuesCollection=((Clazz.isClassDefined("java.util.IdentityHashMap$2")?0:java.util.IdentityHashMap.$IdentityHashMap$2$()),Clazz.innerTypeInstance(java.util.IdentityHashMap$2,this,null));
\r
209 }return this.valuesCollection;
\r
211 Clazz.overrideMethod(c$,"equals",
\r
215 }if(Clazz.instanceOf(object,java.util.Map)){
\r
217 if(this.size()!=map.size()){
\r
219 }var set=this.entrySet();
\r
220 return set.equals(map.entrySet());
\r
223 Clazz.defineMethod(c$,"clone",
\r
226 return Clazz.superCall(this,java.util.IdentityHashMap,"clone",[]);
\r
228 if(Clazz.instanceOf(e,CloneNotSupportedException)){
\r
235 Clazz.overrideMethod(c$,"isEmpty",
\r
237 return this.$size==0;
\r
239 Clazz.overrideMethod(c$,"size",
\r
243 Clazz.defineMethod(c$,"putAllImpl",
\r
244 ($fz=function(map){
\r
245 if(map.entrySet()!=null){
\r
246 Clazz.superCall(this,java.util.IdentityHashMap,"putAll",[map]);
\r
247 }},$fz.isPrivate=true,$fz),"java.util.Map");
\r
248 c$.$IdentityHashMap$1$=function(){
\r
249 Clazz.pu$h(self.c$);
\r
250 c$=Clazz.declareAnonymous(java.util,"IdentityHashMap$1",java.util.AbstractSet);
\r
251 Clazz.overrideMethod(c$,"contains",
\r
253 return this.b$["java.util.IdentityHashMap"].containsKey(object);
\r
255 Clazz.overrideMethod(c$,"size",
\r
257 return this.b$["java.util.IdentityHashMap"].size();
\r
259 Clazz.overrideMethod(c$,"clear",
\r
261 this.b$["java.util.IdentityHashMap"].clear();
\r
263 Clazz.overrideMethod(c$,"remove",
\r
265 if(this.b$["java.util.IdentityHashMap"].containsKey(key)){
\r
266 this.b$["java.util.IdentityHashMap"].remove(key);
\r
270 Clazz.overrideMethod(c$,"iterator",
\r
272 return new java.util.IdentityHashMap.IdentityHashMapIterator(((Clazz.isClassDefined("java.util.IdentityHashMap$1$1")?0:java.util.IdentityHashMap.$IdentityHashMap$1$1$()),Clazz.innerTypeInstance(java.util.IdentityHashMap$1$1,this,null)),this.b$["java.util.IdentityHashMap"]);
\r
276 c$.$IdentityHashMap$1$1$=function(){
\r
277 Clazz.pu$h(self.c$);
\r
278 c$=Clazz.declareAnonymous(java.util,"IdentityHashMap$1$1",null,java.util.MapEntry.Type);
\r
279 Clazz.overrideMethod(c$,"get",
\r
282 },"java.util.MapEntry");
\r
285 c$.$IdentityHashMap$2$=function(){
\r
286 Clazz.pu$h(self.c$);
\r
287 c$=Clazz.declareAnonymous(java.util,"IdentityHashMap$2",java.util.AbstractCollection);
\r
288 Clazz.overrideMethod(c$,"contains",
\r
290 return this.b$["java.util.IdentityHashMap"].containsValue(object);
\r
292 Clazz.overrideMethod(c$,"size",
\r
294 return this.b$["java.util.IdentityHashMap"].size();
\r
296 Clazz.overrideMethod(c$,"clear",
\r
298 this.b$["java.util.IdentityHashMap"].clear();
\r
300 Clazz.overrideMethod(c$,"iterator",
\r
302 return new java.util.IdentityHashMap.IdentityHashMapIterator(((Clazz.isClassDefined("java.util.IdentityHashMap$2$1")?0:java.util.IdentityHashMap.$IdentityHashMap$2$1$()),Clazz.innerTypeInstance(java.util.IdentityHashMap$2$1,this,null)),this.b$["java.util.IdentityHashMap"]);
\r
304 Clazz.overrideMethod(c$,"remove",
\r
306 var it=this.iterator();
\r
307 while(it.hasNext()){
\r
308 if(object===it.next()){
\r
316 c$.$IdentityHashMap$2$1$=function(){
\r
317 Clazz.pu$h(self.c$);
\r
318 c$=Clazz.declareAnonymous(java.util,"IdentityHashMap$2$1",null,java.util.MapEntry.Type);
\r
319 Clazz.overrideMethod(c$,"get",
\r
321 return entry.value;
\r
322 },"java.util.MapEntry");
\r
325 Clazz.pu$h(self.c$);
\r
326 c$=Clazz.declareType(java.util.IdentityHashMap,"IdentityHashMapEntry",java.util.MapEntry);
\r
327 Clazz.overrideMethod(c$,"equals",
\r
331 }if(Clazz.instanceOf(a,java.util.Map.Entry)){
\r
333 return(this.key===b.getKey())&&(this.value===b.getValue());
\r
336 Clazz.overrideMethod(c$,"hashCode",
\r
338 return System.identityHashCode(this.key)^System.identityHashCode(this.value);
\r
340 Clazz.overrideMethod(c$,"toString",
\r
342 return this.key+"="+this.value;
\r
345 Clazz.pu$h(self.c$);
\r
346 c$=Clazz.decorateAsClass(function(){
\r
348 this.lastPosition=0;
\r
349 this.associatedMap=null;
\r
350 this.expectedModCount=0;
\r
352 this.canRemove=false;
\r
353 Clazz.instantialize(this,arguments);
\r
354 },java.util.IdentityHashMap,"IdentityHashMapIterator",null,java.util.Iterator);
\r
355 Clazz.makeConstructor(c$,
\r
357 this.associatedMap=b;
\r
359 this.expectedModCount=b.modCount;
\r
360 },"java.util.MapEntry.Type,java.util.IdentityHashMap");
\r
361 Clazz.overrideMethod(c$,"hasNext",
\r
363 while(this.position<this.associatedMap.elementData.length){
\r
364 if(this.associatedMap.elementData[this.position]==null){
\r
371 Clazz.defineMethod(c$,"checkConcurrentMod",
\r
373 if(this.expectedModCount!=this.associatedMap.modCount){
\r
374 throw new java.util.ConcurrentModificationException();
\r
376 Clazz.overrideMethod(c$,"next",
\r
378 this.checkConcurrentMod();
\r
379 if(!this.hasNext()){
\r
380 throw new java.util.NoSuchElementException();
\r
381 }var a=this.associatedMap.getEntry(this.position);
\r
382 this.lastPosition=this.position;
\r
384 this.canRemove=true;
\r
385 return this.type.get(a);
\r
387 Clazz.overrideMethod(c$,"remove",
\r
389 this.checkConcurrentMod();
\r
390 if(!this.canRemove){
\r
391 throw new IllegalStateException();
\r
392 }this.canRemove=false;
\r
393 this.associatedMap.remove(this.associatedMap.elementData[this.lastPosition]);
\r
394 this.position=this.lastPosition;
\r
395 this.expectedModCount++;
\r
398 Clazz.pu$h(self.c$);
\r
399 c$=Clazz.decorateAsClass(function(){
\r
400 this.associatedMap=null;
\r
401 Clazz.instantialize(this,arguments);
\r
402 },java.util.IdentityHashMap,"IdentityHashMapEntrySet",java.util.AbstractSet);
\r
403 Clazz.makeConstructor(c$,
\r
405 Clazz.superConstructor(this,java.util.IdentityHashMap.IdentityHashMapEntrySet,[]);
\r
406 this.associatedMap=a;
\r
407 },"java.util.IdentityHashMap");
\r
408 Clazz.defineMethod(c$,"hashMap",
\r
410 return this.associatedMap;
\r
412 Clazz.overrideMethod(c$,"size",
\r
414 return this.associatedMap.$size;
\r
416 Clazz.overrideMethod(c$,"clear",
\r
418 this.associatedMap.clear();
\r
420 Clazz.overrideMethod(c$,"remove",
\r
422 if(this.contains(a)){
\r
423 this.associatedMap.remove((a).getKey());
\r
427 Clazz.overrideMethod(c$,"contains",
\r
429 if(Clazz.instanceOf(a,java.util.Map.Entry)){
\r
430 var b=this.associatedMap.getEntry((a).getKey());
\r
431 return b!=null&&b.equals(a);
\r
434 Clazz.overrideMethod(c$,"iterator",
\r
436 return new java.util.IdentityHashMap.IdentityHashMapIterator(((Clazz.isClassDefined("java.util.IdentityHashMap$IdentityHashMapEntrySet$1")?0:java.util.IdentityHashMap.IdentityHashMapEntrySet.$IdentityHashMap$IdentityHashMapEntrySet$1$()),Clazz.innerTypeInstance(java.util.IdentityHashMap$IdentityHashMapEntrySet$1,this,null)),this.associatedMap);
\r
438 c$.$IdentityHashMap$IdentityHashMapEntrySet$1$=function(){
\r
439 Clazz.pu$h(self.c$);
\r
440 c$=Clazz.declareAnonymous(java.util,"IdentityHashMap$IdentityHashMapEntrySet$1",null,java.util.MapEntry.Type);
\r
441 Clazz.overrideMethod(c$,"get",
\r
444 },"java.util.MapEntry");
\r
448 Clazz.defineStatics(c$,
\r
449 "DEFAULT_MAX_SIZE",21,
\r
450 "loadFactor",7500);
\r
451 c$.NULL_OBJECT=c$.prototype.NULL_OBJECT=new Clazz._O();
\r