JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / site / swingjs / j2s / java / util / IdentityHashMap.js
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
4 this.$size=0;\r
5 this.threshold=0;\r
6 this.modCount=0;\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
10 function(){\r
11 this.construct(21);\r
12 });\r
13 Clazz.makeConstructor(c$,\r
14 function(maxSize){\r
15 Clazz.superConstructor(this,java.util.IdentityHashMap,[]);\r
16 if(maxSize>=0){\r
17 this.$size=0;\r
18 this.threshold=this.getThreshold(maxSize);\r
19 this.elementData=this.newElementArray(this.computeElementArraySize());\r
20 }else{\r
21 throw new IllegalArgumentException();\r
22 }},"~N");\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
28 ($fz=function(){\r
29 return(Math.floor((this.threshold*10000)/7500))*2;\r
30 },$fz.isPrivate=true,$fz));\r
31 Clazz.defineMethod(c$,"newElementArray",\r
32 ($fz=function(s){\r
33 return new Array(s);\r
34 },$fz.isPrivate=true,$fz),"~N");\r
35 Clazz.makeConstructor(c$,\r
36 function(map){\r
37 this.construct(map.size()<6?11:map.size()*2);\r
38 this.putAllImpl(map);\r
39 },"java.util.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
45 function(){\r
46 this.$size=0;\r
47 for(var i=0;i<this.elementData.length;i++){\r
48 this.elementData[i]=null;\r
49 }\r
50 this.modCount++;\r
51 });\r
52 Clazz.overrideMethod(c$,"containsKey",\r
53 function(key){\r
54 if(key==null){\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
58 },"~O");\r
59 Clazz.overrideMethod(c$,"containsValue",\r
60 function(value){\r
61 if(value==null){\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
65 return true;\r
66 }}\r
67 return false;\r
68 },"~O");\r
69 Clazz.overrideMethod(c$,"get",\r
70 function(key){\r
71 if(key==null){\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
77 }return null;\r
78 },"~O");\r
79 Clazz.defineMethod(c$,"getEntry",\r
80 ($fz=function(key){\r
81 if(key==null){\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
86 }return null;\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
93 key=null;\r
94 }if(value===java.util.IdentityHashMap.NULL_OBJECT){\r
95 value=null;\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
105 break;\r
106 }index=(index+2)%length;\r
107 }\r
108 return index;\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
116 var _key=key;\r
117 var _value=value;\r
118 if(_key==null){\r
119 _key=java.util.IdentityHashMap.NULL_OBJECT;\r
120 }if(_value==null){\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
124 this.modCount++;\r
125 if(++this.$size>this.threshold){\r
126 this.rehash();\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
133 },"~O,~O");\r
134 Clazz.overrideMethod(c$,"putAll",\r
135 function(map){\r
136 this.putAllImpl(map);\r
137 },"java.util.Map");\r
138 Clazz.defineMethod(c$,"rehash",\r
139 ($fz=function(){\r
140 var newlength=this.elementData.length<<1;\r
141 if(newlength==0){\r
142 newlength=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
146 if(key!=null){\r
147 var index=this.findIndex(key,newData);\r
148 newData[index]=key;\r
149 newData[index+1]=this.elementData[i+1];\r
150 }}\r
151 this.elementData=newData;\r
152 this.computeMaxSize();\r
153 },$fz.isPrivate=true,$fz));\r
154 Clazz.defineMethod(c$,"computeMaxSize",\r
155 ($fz=function(){\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
159 function(key){\r
160 if(key==null){\r
161 key=java.util.IdentityHashMap.NULL_OBJECT;\r
162 }var hashedOk;\r
163 var index;\r
164 var next;\r
165 var hash;\r
166 var result;\r
167 var object;\r
168 index=next=this.findIndex(key,this.elementData);\r
169 if(this.elementData[index]!==key){\r
170 return null;\r
171 }result=this.elementData[index+1];\r
172 var length=this.elementData.length;\r
173 while(true){\r
174 next=(next+2)%length;\r
175 object=this.elementData[next];\r
176 if(object==null){\r
177 break;\r
178 }hash=this.getModuloHash(object,length);\r
179 hashedOk=hash>index;\r
180 if(next<index){\r
181 hashedOk=hashedOk||(hash<=next);\r
182 }else{\r
183 hashedOk=hashedOk&&(hash<=next);\r
184 }if(!hashedOk){\r
185 this.elementData[index]=object;\r
186 this.elementData[index+1]=this.elementData[next+1];\r
187 index=next;\r
188 }}\r
189 this.$size--;\r
190 this.modCount++;\r
191 this.elementData[index]=null;\r
192 this.elementData[index+1]=null;\r
193 return this.massageValue(result);\r
194 },"~O");\r
195 Clazz.overrideMethod(c$,"entrySet",\r
196 function(){\r
197 return new java.util.IdentityHashMap.IdentityHashMapEntrySet(this);\r
198 });\r
199 Clazz.overrideMethod(c$,"keySet",\r
200 function(){\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
204 });\r
205 Clazz.overrideMethod(c$,"values",\r
206 function(){\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
210 });\r
211 Clazz.overrideMethod(c$,"equals",\r
212 function(object){\r
213 if(this===object){\r
214 return true;\r
215 }if(Clazz.instanceOf(object,java.util.Map)){\r
216 var map=object;\r
217 if(this.size()!=map.size()){\r
218 return false;\r
219 }var set=this.entrySet();\r
220 return set.equals(map.entrySet());\r
221 }return false;\r
222 },"~O");\r
223 Clazz.defineMethod(c$,"clone",\r
224 function(){\r
225 try{\r
226 return Clazz.superCall(this,java.util.IdentityHashMap,"clone",[]);\r
227 }catch(e){\r
228 if(Clazz.instanceOf(e,CloneNotSupportedException)){\r
229 return null;\r
230 }else{\r
231 throw e;\r
232 }\r
233 }\r
234 });\r
235 Clazz.overrideMethod(c$,"isEmpty",\r
236 function(){\r
237 return this.$size==0;\r
238 });\r
239 Clazz.overrideMethod(c$,"size",\r
240 function(){\r
241 return this.$size;\r
242 });\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
252 function(object){\r
253 return this.b$["java.util.IdentityHashMap"].containsKey(object);\r
254 },"~O");\r
255 Clazz.overrideMethod(c$,"size",\r
256 function(){\r
257 return this.b$["java.util.IdentityHashMap"].size();\r
258 });\r
259 Clazz.overrideMethod(c$,"clear",\r
260 function(){\r
261 this.b$["java.util.IdentityHashMap"].clear();\r
262 });\r
263 Clazz.overrideMethod(c$,"remove",\r
264 function(key){\r
265 if(this.b$["java.util.IdentityHashMap"].containsKey(key)){\r
266 this.b$["java.util.IdentityHashMap"].remove(key);\r
267 return true;\r
268 }return false;\r
269 },"~O");\r
270 Clazz.overrideMethod(c$,"iterator",\r
271 function(){\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
273 });\r
274 c$=Clazz.p0p();\r
275 };\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
280 function(entry){\r
281 return entry.key;\r
282 },"java.util.MapEntry");\r
283 c$=Clazz.p0p();\r
284 };\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
289 function(object){\r
290 return this.b$["java.util.IdentityHashMap"].containsValue(object);\r
291 },"~O");\r
292 Clazz.overrideMethod(c$,"size",\r
293 function(){\r
294 return this.b$["java.util.IdentityHashMap"].size();\r
295 });\r
296 Clazz.overrideMethod(c$,"clear",\r
297 function(){\r
298 this.b$["java.util.IdentityHashMap"].clear();\r
299 });\r
300 Clazz.overrideMethod(c$,"iterator",\r
301 function(){\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
303 });\r
304 Clazz.overrideMethod(c$,"remove",\r
305 function(object){\r
306 var it=this.iterator();\r
307 while(it.hasNext()){\r
308 if(object===it.next()){\r
309 it.remove();\r
310 return true;\r
311 }}\r
312 return false;\r
313 },"~O");\r
314 c$=Clazz.p0p();\r
315 };\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
320 function(entry){\r
321 return entry.value;\r
322 },"java.util.MapEntry");\r
323 c$=Clazz.p0p();\r
324 };\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
328 function(a){\r
329 if(this===a){\r
330 return true;\r
331 }if(Clazz.instanceOf(a,java.util.Map.Entry)){\r
332 var b=a;\r
333 return(this.key===b.getKey())&&(this.value===b.getValue());\r
334 }return false;\r
335 },"~O");\r
336 Clazz.overrideMethod(c$,"hashCode",\r
337 function(){\r
338 return System.identityHashCode(this.key)^System.identityHashCode(this.value);\r
339 });\r
340 Clazz.overrideMethod(c$,"toString",\r
341 function(){\r
342 return this.key+"="+this.value;\r
343 });\r
344 c$=Clazz.p0p();\r
345 Clazz.pu$h(self.c$);\r
346 c$=Clazz.decorateAsClass(function(){\r
347 this.position=0;\r
348 this.lastPosition=0;\r
349 this.associatedMap=null;\r
350 this.expectedModCount=0;\r
351 this.type=null;\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
356 function(a,b){\r
357 this.associatedMap=b;\r
358 this.type=a;\r
359 this.expectedModCount=b.modCount;\r
360 },"java.util.MapEntry.Type,java.util.IdentityHashMap");\r
361 Clazz.overrideMethod(c$,"hasNext",\r
362 function(){\r
363 while(this.position<this.associatedMap.elementData.length){\r
364 if(this.associatedMap.elementData[this.position]==null){\r
365 this.position+=2;\r
366 }else{\r
367 return true;\r
368 }}\r
369 return false;\r
370 });\r
371 Clazz.defineMethod(c$,"checkConcurrentMod",\r
372 function(){\r
373 if(this.expectedModCount!=this.associatedMap.modCount){\r
374 throw new java.util.ConcurrentModificationException();\r
375 }});\r
376 Clazz.overrideMethod(c$,"next",\r
377 function(){\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
383 this.position+=2;\r
384 this.canRemove=true;\r
385 return this.type.get(a);\r
386 });\r
387 Clazz.overrideMethod(c$,"remove",\r
388 function(){\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
396 });\r
397 c$=Clazz.p0p();\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
404 function(a){\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
409 function(){\r
410 return this.associatedMap;\r
411 });\r
412 Clazz.overrideMethod(c$,"size",\r
413 function(){\r
414 return this.associatedMap.$size;\r
415 });\r
416 Clazz.overrideMethod(c$,"clear",\r
417 function(){\r
418 this.associatedMap.clear();\r
419 });\r
420 Clazz.overrideMethod(c$,"remove",\r
421 function(a){\r
422 if(this.contains(a)){\r
423 this.associatedMap.remove((a).getKey());\r
424 return true;\r
425 }return false;\r
426 },"~O");\r
427 Clazz.overrideMethod(c$,"contains",\r
428 function(a){\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
432 }return false;\r
433 },"~O");\r
434 Clazz.overrideMethod(c$,"iterator",\r
435 function(){\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
437 });\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
442 function(a){\r
443 return a;\r
444 },"java.util.MapEntry");\r
445 c$=Clazz.p0p();\r
446 };\r
447 c$=Clazz.p0p();\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
452 });\r