JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / site / j2s / java / lang / AbstractStringBuilder.js
1 Clazz.load(null,"java.lang.AbstractStringBuilder",["java.io.InvalidObjectException","java.lang.ArrayIndexOutOfBoundsException","$.IndexOutOfBoundsException","$.NegativeArraySizeException","$.NullPointerException","$.StringIndexOutOfBoundsException"],function(){\r
2 c$=Clazz.decorateAsClass(function(){\r
3 this.value=null;\r
4 this.count=0;\r
5 this.shared=false;\r
6 Clazz.instantialize(this,arguments);\r
7 },java.lang,"AbstractStringBuilder");\r
8 Clazz.defineMethod(c$,"getValue",\r
9 function(){\r
10 return this.value;\r
11 });\r
12 Clazz.defineMethod(c$,"shareValue",\r
13 function(){\r
14 this.shared=true;\r
15 return this.value;\r
16 });\r
17 Clazz.defineMethod(c$,"set",\r
18 function(val,len){\r
19 if(val==null)val=Clazz.newArray(0,'\0');\r
20 if(val.length<len)throw new java.io.InvalidObjectException(("K0199"));\r
21 this.shared=false;\r
22 this.value=val;\r
23 this.count=len;\r
24 },"~A,~N");\r
25 Clazz.makeConstructor(c$,\r
26 function(){\r
27 this.value=Clazz.newArray(16,'\0');\r
28 });\r
29 Clazz.makeConstructor(c$,\r
30 function(capacity){\r
31 if(capacity<0)throw new NegativeArraySizeException();\r
32 this.value=Clazz.newArray(capacity,'\0');\r
33 },"~N");\r
34 Clazz.makeConstructor(c$,\r
35 function(string){\r
36 this.count=string.length;\r
37 this.shared=false;\r
38 this.value=Clazz.newArray(this.count+16,'\0');\r
39 string.getChars(0,this.count,this.value,0);\r
40 },"~S");\r
41 Clazz.defineMethod(c$,"enlargeBuffer",\r
42 ($fz=function(min){\r
43 var twice=(this.value.length<<1)+2;\r
44 var newData=Clazz.newArray(min>twice?min:twice,'\0');\r
45 System.arraycopy(this.value,0,newData,0,this.count);\r
46 this.value=newData;\r
47 this.shared=false;\r
48 },$fz.isPrivate=true,$fz),"~N");\r
49 Clazz.defineMethod(c$,"appendNull",\r
50 function(){\r
51 var newSize=this.count+4;\r
52 if(newSize>this.value.length){\r
53 this.enlargeBuffer(newSize);\r
54 }else if(this.shared){\r
55 this.value=this.value.clone();\r
56 this.shared=false;\r
57 }this.value[this.count++]='n';\r
58 this.value[this.count++]='u';\r
59 this.value[this.count++]='l';\r
60 this.value[this.count++]='l';\r
61 });\r
62 Clazz.defineMethod(c$,"append0",\r
63 function(chars){\r
64 var newSize=this.count+chars.length;\r
65 if(newSize>this.value.length){\r
66 this.enlargeBuffer(newSize);\r
67 }else if(this.shared){\r
68 this.value=this.value.clone();\r
69 this.shared=false;\r
70 }System.arraycopy(chars,0,this.value,this.count,chars.length);\r
71 this.count=newSize;\r
72 },"~A");\r
73 Clazz.defineMethod(c$,"append0",\r
74 function(chars,start,length){\r
75 if(chars==null){\r
76 throw new NullPointerException();\r
77 }if(start>=0&&0<=length&&length<=chars.length-start){\r
78 var newSize=this.count+length;\r
79 if(newSize>this.value.length){\r
80 this.enlargeBuffer(newSize);\r
81 }else if(this.shared){\r
82 this.value=this.value.clone();\r
83 this.shared=false;\r
84 }System.arraycopy(chars,start,this.value,this.count,length);\r
85 this.count=newSize;\r
86 }else{\r
87 throw new ArrayIndexOutOfBoundsException();\r
88 }},"~A,~N,~N");\r
89 Clazz.defineMethod(c$,"append0",\r
90 function(ch){\r
91 if(this.count==this.value.length){\r
92 this.enlargeBuffer(this.count+1);\r
93 }if(this.shared){\r
94 this.value=this.value.clone();\r
95 this.shared=false;\r
96 }this.value[this.count++]=ch;\r
97 },"~N");\r
98 Clazz.defineMethod(c$,"append0",\r
99 function(string){\r
100 if(string==null){\r
101 this.appendNull();\r
102 return;\r
103 }var adding=string.length;\r
104 var newSize=this.count+adding;\r
105 if(newSize>this.value.length){\r
106 this.enlargeBuffer(newSize);\r
107 }else if(this.shared){\r
108 this.value=this.value.clone();\r
109 this.shared=false;\r
110 }string.getChars(0,adding,this.value,this.count);\r
111 this.count=newSize;\r
112 },"~S");\r
113 Clazz.defineMethod(c$,"append0",\r
114 function(s,start,end){\r
115 if(s==null)s="null";\r
116 if(start<0||end<0||start>end||end>s.length())throw new IndexOutOfBoundsException();\r
117 this.append0(s.subSequence(start,end).toString());\r
118 },"CharSequence,~N,~N");\r
119 Clazz.defineMethod(c$,"capacity",\r
120 function(){\r
121 return this.value.length;\r
122 });\r
123 Clazz.defineMethod(c$,"charAt",\r
124 function(index){\r
125 if(index<0||index>=this.count)throw new StringIndexOutOfBoundsException(index);\r
126 return this.value[index];\r
127 },"~N");\r
128 Clazz.defineMethod(c$,"delete0",\r
129 function(start,end){\r
130 if(start>=0){\r
131 if(end>this.count){\r
132 end=this.count;\r
133 }if(end==start){\r
134 return;\r
135 }if(end>start){\r
136 var length=this.count-end;\r
137 if(length>0){\r
138 if(!this.shared){\r
139 System.arraycopy(this.value,end,this.value,start,length);\r
140 }else{\r
141 var newData=Clazz.newArray(this.value.length,'\0');\r
142 System.arraycopy(this.value,0,newData,0,start);\r
143 System.arraycopy(this.value,end,newData,start,length);\r
144 this.value=newData;\r
145 this.shared=false;\r
146 }}this.count-=end-start;\r
147 return;\r
148 }}throw new StringIndexOutOfBoundsException();\r
149 },"~N,~N");\r
150 Clazz.defineMethod(c$,"deleteCharAt0",\r
151 function(location){\r
152 if(0>location||location>=this.count)throw new StringIndexOutOfBoundsException(location);\r
153 var length=this.count-location-1;\r
154 if(length>0){\r
155 if(!this.shared){\r
156 System.arraycopy(this.value,location+1,this.value,location,length);\r
157 }else{\r
158 var newData=Clazz.newArray(this.value.length,'\0');\r
159 System.arraycopy(this.value,0,newData,0,location);\r
160 System.arraycopy(this.value,location+1,newData,location,length);\r
161 this.value=newData;\r
162 this.shared=false;\r
163 }}this.count--;\r
164 },"~N");\r
165 Clazz.defineMethod(c$,"ensureCapacity",\r
166 function(min){\r
167 if(min>this.value.length){\r
168 this.enlargeBuffer(min);\r
169 }},"~N");\r
170 Clazz.defineMethod(c$,"getChars",\r
171 function(start,end,dest,destStart){\r
172 if(start>this.count||end>this.count||start>end){\r
173 throw new StringIndexOutOfBoundsException();\r
174 }System.arraycopy(this.value,start,dest,destStart,end-start);\r
175 },"~N,~N,~A,~N");\r
176 Clazz.defineMethod(c$,"insert0",\r
177 function(index,chars){\r
178 if(0>index||index>this.count){\r
179 throw new StringIndexOutOfBoundsException(index);\r
180 }if(chars.length!=0){\r
181 this.move(chars.length,index);\r
182 System.arraycopy(chars,0,this.value,index,chars.length);\r
183 this.count+=chars.length;\r
184 }},"~N,~A");\r
185 Clazz.defineMethod(c$,"insert0",\r
186 function(index,chars,start,length){\r
187 if(0<=index&&index<=this.count){\r
188 if(start>=0&&0<=length&&length<=chars.length-start){\r
189 if(length!=0){\r
190 this.move(length,index);\r
191 System.arraycopy(chars,start,this.value,index,length);\r
192 this.count+=length;\r
193 }return;\r
194 }throw new StringIndexOutOfBoundsException("offset "+start+", len "+length+", array.length "+chars.length);\r
195 }throw new StringIndexOutOfBoundsException(index);\r
196 },"~N,~A,~N,~N");\r
197 Clazz.defineMethod(c$,"insert0",\r
198 function(index,ch){\r
199 if(0>index||index>this.count){\r
200 throw new ArrayIndexOutOfBoundsException(index);\r
201 }this.move(1,index);\r
202 this.value[index]=ch;\r
203 this.count++;\r
204 },"~N,~N");\r
205 Clazz.defineMethod(c$,"insert0",\r
206 function(index,string){\r
207 if(0<=index&&index<=this.count){\r
208 if(string==null)string="null";\r
209 var min=string.length;\r
210 if(min!=0){\r
211 this.move(min,index);\r
212 string.getChars(0,min,this.value,index);\r
213 this.count+=min;\r
214 }}else{\r
215 throw new StringIndexOutOfBoundsException(index);\r
216 }},"~N,~S");\r
217 Clazz.defineMethod(c$,"insert0",\r
218 function(index,s,start,end){\r
219 if(s==null)s="null";\r
220 if(index<0||index>this.count||start<0||end<0||start>end||end>s.length())throw new IndexOutOfBoundsException();\r
221 this.insert0(index,s.subSequence(start,end).toString());\r
222 },"~N,CharSequence,~N,~N");\r
223 Clazz.defineMethod(c$,"length",\r
224 function(){\r
225 return this.count;\r
226 });\r
227 Clazz.defineMethod(c$,"move",\r
228 ($fz=function(size,index){\r
229 var newSize;\r
230 if(this.value.length-this.count>=size){\r
231 if(!this.shared){\r
232 System.arraycopy(this.value,index,this.value,index+size,this.count-index);\r
233 return;\r
234 }newSize=this.value.length;\r
235 }else{\r
236 var a=this.count+size;\r
237 var b=(this.value.length<<1)+2;\r
238 newSize=a>b?a:b;\r
239 }var newData=Clazz.newArray(newSize,'\0');\r
240 System.arraycopy(this.value,0,newData,0,index);\r
241 System.arraycopy(this.value,index,newData,index+size,this.count-index);\r
242 this.value=newData;\r
243 this.shared=false;\r
244 },$fz.isPrivate=true,$fz),"~N,~N");\r
245 Clazz.defineMethod(c$,"replace0",\r
246 function(start,end,string){\r
247 if(start>=0){\r
248 if(end>this.count)end=this.count;\r
249 if(end>start){\r
250 var stringLength=string.length;\r
251 var diff=end-start-stringLength;\r
252 if(diff>0){\r
253 if(!this.shared){\r
254 System.arraycopy(this.value,end,this.value,start+stringLength,this.count-end);\r
255 }else{\r
256 var newData=Clazz.newArray(this.value.length,'\0');\r
257 System.arraycopy(this.value,0,newData,0,start);\r
258 System.arraycopy(this.value,end,newData,start+stringLength,this.count-end);\r
259 this.value=newData;\r
260 this.shared=false;\r
261 }}else if(diff<0){\r
262 this.move(-diff,end);\r
263 }else if(this.shared){\r
264 this.value=this.value.clone();\r
265 this.shared=false;\r
266 }string.getChars(0,stringLength,this.value,start);\r
267 this.count-=diff;\r
268 return;\r
269 }if(start==end){\r
270 if(string==null)throw new NullPointerException();\r
271 this.insert0(start,string);\r
272 return;\r
273 }}throw new StringIndexOutOfBoundsException();\r
274 },"~N,~N,~S");\r
275 Clazz.defineMethod(c$,"reverse0",\r
276 function(){\r
277 if(this.count<2){\r
278 return;\r
279 }if(!this.shared){\r
280 for(var i=0,end=this.count,mid=Math.floor(this.count/2);i<mid;i++){\r
281 var temp=this.value[--end];\r
282 this.value[end]=this.value[i];\r
283 this.value[i]=temp;\r
284 }\r
285 }else{\r
286 var newData=Clazz.newArray(this.value.length,'\0');\r
287 for(var i=0,end=this.count;i<this.count;i++){\r
288 newData[--end]=this.value[i];\r
289 }\r
290 this.value=newData;\r
291 this.shared=false;\r
292 }});\r
293 Clazz.defineMethod(c$,"setCharAt",\r
294 function(index,ch){\r
295 if(0>index||index>=this.count){\r
296 throw new StringIndexOutOfBoundsException(index);\r
297 }if(this.shared){\r
298 this.value=this.value.clone();\r
299 this.shared=false;\r
300 }this.value[index]=ch;\r
301 },"~N,~N");\r
302 Clazz.defineMethod(c$,"setLength",\r
303 function(length){\r
304 if(length<0)throw new StringIndexOutOfBoundsException(length);\r
305 if(this.count<length){\r
306 if(length>this.value.length){\r
307 this.enlargeBuffer(length);\r
308 }else{\r
309 if(this.shared){\r
310 var newData=Clazz.newArray(this.value.length,'\0');\r
311 System.arraycopy(this.value,0,newData,0,this.count);\r
312 this.value=newData;\r
313 this.shared=false;\r
314 }else{\r
315 for(var i=this.count;i<length;i++){\r
316 this.value[i]=String.fromCharCode(0);\r
317 }\r
318 }}}this.count=length;\r
319 },"~N");\r
320 Clazz.defineMethod(c$,"substring",\r
321 function(start){\r
322 if(0<=start&&start<=this.count){\r
323 if(start==this.count)return"";\r
324 this.shared=true;\r
325 return String.instantialize(start,this.count-start,this.value);\r
326 }throw new StringIndexOutOfBoundsException(start);\r
327 },"~N");\r
328 Clazz.defineMethod(c$,"substring",\r
329 function(start,end){\r
330 if(0<=start&&start<=end&&end<=this.count){\r
331 if(start==end)return"";\r
332 this.shared=true;\r
333 return String.instantialize(this.value,start,end-start);\r
334 }throw new StringIndexOutOfBoundsException();\r
335 },"~N,~N");\r
336 Clazz.overrideMethod(c$,"toString",\r
337 function(){\r
338 if(this.count==0)return"";\r
339 if(this.count>=256&&this.count<=(this.value.length>>1))return String.instantialize(this.value,0,this.count);\r
340 this.shared=true;\r
341 return String.instantialize(0,this.count,this.value);\r
342 });\r
343 Clazz.defineMethod(c$,"subSequence",\r
344 function(start,end){\r
345 return this.substring(start,end);\r
346 },"~N,~N");\r
347 Clazz.defineMethod(c$,"indexOf",\r
348 function(string){\r
349 return this.indexOf(string,0);\r
350 },"~S");\r
351 Clazz.defineMethod(c$,"indexOf",\r
352 function(subString,start){\r
353 if(start<0)start=0;\r
354 var subCount=subString.length;\r
355 if(subCount>0){\r
356 if(subCount+start>this.count)return-1;\r
357 var firstChar=subString.charAt(0);\r
358 while(true){\r
359 var i=start;\r
360 var found=false;\r
361 for(;i<this.count;i++)if((this.value[i]).charCodeAt(0)==(firstChar).charCodeAt(0)){\r
362 found=true;\r
363 break;\r
364 }\r
365 if(!found||subCount+i>this.count)return-1;\r
366 var o1=i;\r
367 var o2=0;\r
368 while(++o2<subCount&&(this.value[++o1]).charCodeAt(0)==(subString.charAt(o2)).charCodeAt(0)){\r
369 }\r
370 if(o2==subCount)return i;\r
371 start=i+1;\r
372 }\r
373 }return(start<this.count||start==0)?start:this.count;\r
374 },"~S,~N");\r
375 Clazz.defineMethod(c$,"lastIndexOf",\r
376 function(string){\r
377 return this.lastIndexOf(string,this.count);\r
378 },"~S");\r
379 Clazz.defineMethod(c$,"lastIndexOf",\r
380 function(subString,start){\r
381 var subCount=subString.length;\r
382 if(subCount<=this.count&&start>=0){\r
383 if(subCount>0){\r
384 if(start>this.count-subCount)start=this.count-subCount;\r
385 var firstChar=subString.charAt(0);\r
386 while(true){\r
387 var i=start;\r
388 var found=false;\r
389 for(;i>=0;--i)if((this.value[i]).charCodeAt(0)==(firstChar).charCodeAt(0)){\r
390 found=true;\r
391 break;\r
392 }\r
393 if(!found)return-1;\r
394 var o1=i;\r
395 var o2=0;\r
396 while(++o2<subCount&&(this.value[++o1]).charCodeAt(0)==(subString.charAt(o2)).charCodeAt(0)){\r
397 }\r
398 if(o2==subCount)return i;\r
399 start=i-1;\r
400 }\r
401 }return start<this.count?start:this.count;\r
402 }return-1;\r
403 },"~S,~N");\r
404 Clazz.defineMethod(c$,"trimToSize",\r
405 function(){\r
406 if(this.count<this.value.length){\r
407 var newValue=Clazz.newArray(this.count,'\0');\r
408 System.arraycopy(this.value,0,newValue,0,this.count);\r
409 this.value=newValue;\r
410 this.shared=false;\r
411 }});\r
412 Clazz.defineStatics(c$,\r
413 "INITIAL_CAPACITY",16);\r
414 });\r