1 Clazz.declarePackage ("java.text");
2 Clazz.load (["java.text.NumberFormat", "java.util.Hashtable", "java.text.DigitList"], "java.text.DecimalFormat", ["java.lang.Byte", "$.Character", "$.Double", "$.Float", "$.IllegalArgumentException", "$.InternalError", "$.Long", "$.NullPointerException", "$.Number", "$.Short", "$.StringBuffer", "java.util.ArrayList", "java.text.CharacterIteratorFieldDelegate", "$.DecimalFormatSymbols", "$.FieldPosition", "$.ParsePosition", "java.util.Locale", "jssun.util.resources.LocaleData"], function () {
3 c$ = Clazz.decorateAsClass (function () {
5 this.positivePrefix = "";
6 this.positiveSuffix = "";
7 this.negativePrefix = "-";
8 this.negativeSuffix = "";
9 this.posPrefixPattern = null;
10 this.posSuffixPattern = null;
11 this.negPrefixPattern = null;
12 this.negSuffixPattern = null;
14 this.groupingSize = 3;
15 this.decimalSeparatorAlwaysShown = false;
16 this.parseBigDecimal = false;
17 this.isCurrencyFormat = false;
19 this.useExponentialNotation = false;
20 this.positivePrefixFieldPositions = null;
21 this.positiveSuffixFieldPositions = null;
22 this.negativePrefixFieldPositions = null;
23 this.negativeSuffixFieldPositions = null;
24 this.minExponentDigits = 0;
25 this.$maximumIntegerDigits = 0;
26 this.$minimumIntegerDigits = 0;
27 this.$maximumFractionDigits = 0;
28 this.$minimumFractionDigits = 0;
29 this.roundingMode = null;
30 Clazz.instantialize (this, arguments);
31 }, java.text, "DecimalFormat", java.text.NumberFormat);
32 Clazz.prepareFields (c$, function () {
33 this.digitList = new java.text.DigitList ();
34 this.$maximumIntegerDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMaximumIntegerDigits", []);
35 this.$minimumIntegerDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMinimumIntegerDigits", []);
36 this.$maximumFractionDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMaximumFractionDigits", []);
37 this.$minimumFractionDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMinimumFractionDigits", []);
39 Clazz.makeConstructor (c$,
41 Clazz.superConstructor (this, java.text.DecimalFormat, []);
42 var def = java.util.Locale.getDefault ();
43 var pattern = java.text.DecimalFormat.$cachedLocaleData.get (def);
44 if (pattern == null) {
45 var rb = jssun.util.resources.LocaleData.getNumberFormatData (def);
46 var all = rb.getStringArray ("NumberPatterns");
48 java.text.DecimalFormat.$cachedLocaleData.put (def, pattern);
49 }this.symbols = new java.text.DecimalFormatSymbols (def);
50 this.applyPattern (pattern, false);
52 Clazz.makeConstructor (c$,
54 Clazz.superConstructor (this, java.text.DecimalFormat, []);
55 this.symbols = new java.text.DecimalFormatSymbols (java.util.Locale.getDefault ());
56 this.applyPattern (pattern, false);
58 Clazz.makeConstructor (c$,
59 function (pattern, symbols) {
60 Clazz.superConstructor (this, java.text.DecimalFormat, []);
61 this.symbols = symbols.clone ();
62 this.applyPattern (pattern, false);
63 }, "~S,java.text.DecimalFormatSymbols");
64 Clazz.defineMethod (c$, "format",
65 function (number, toAppendTo, pos) {
66 if (Clazz.instanceOf (number, Long) || Clazz.instanceOf (number, Integer) || Clazz.instanceOf (number, Short) || Clazz.instanceOf (number, Byte)) {
67 return this.format ((number).longValue (), toAppendTo, pos);
68 } else if (Clazz.instanceOf (number, Number)) {
69 return this.format ((number).doubleValue (), toAppendTo, pos);
71 throw new IllegalArgumentException ("Cannot format given Object as a Number");
72 }}, "~O,StringBuffer,java.text.FieldPosition");
73 Clazz.defineMethod (c$, "format",
74 function (number, result, fieldPosition) {
75 fieldPosition.setBeginIndex (0);
76 fieldPosition.setEndIndex (0);
77 var isInt = (number == Clazz.doubleToInt (number) && Math.abs (number) < 2147483647);
78 if (isInt) return this.formatLong (Clazz.doubleToInt (number), result, fieldPosition.getFieldDelegate ());
79 else return this.formatDouble (number, result, fieldPosition.getFieldDelegate ());
80 }, "~N,StringBuffer,java.text.FieldPosition");
81 Clazz.defineMethod (c$, "formatDouble",
82 function (number, result, delegate) {
83 if (Double.isNaN (number) || (Double.isInfinite (number) && this.multiplier == 0)) {
84 var iFieldStart = result.length ();
85 result.append (this.symbols.getNaN ());
86 delegate.formatted (0, java.text.NumberFormat.Field.INTEGER, java.text.NumberFormat.Field.INTEGER, iFieldStart, result.length (), result);
88 }var isNegative = new Boolean (((number < 0.0) || (number == 0.0 && 1 / number < 0.0)) ^ (this.multiplier < 0)).valueOf ();
89 if (this.multiplier != 1) {
90 number *= this.multiplier;
91 }if (Double.isInfinite (number)) {
93 this.append (result, this.negativePrefix, delegate, this.getNegativePrefixFieldPositions (), java.text.NumberFormat.Field.SIGN);
95 this.append (result, this.positivePrefix, delegate, this.getPositivePrefixFieldPositions (), java.text.NumberFormat.Field.SIGN);
96 }var iFieldStart = result.length ();
97 result.append (this.symbols.getInfinity ());
98 delegate.formatted (0, java.text.NumberFormat.Field.INTEGER, java.text.NumberFormat.Field.INTEGER, iFieldStart, result.length (), result);
100 this.append (result, this.negativeSuffix, delegate, this.getNegativeSuffixFieldPositions (), java.text.NumberFormat.Field.SIGN);
102 this.append (result, this.positiveSuffix, delegate, this.getPositiveSuffixFieldPositions (), java.text.NumberFormat.Field.SIGN);
107 var maxIntDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMaximumIntegerDigits", []);
108 var minIntDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMinimumIntegerDigits", []);
109 var maxFraDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMaximumFractionDigits", []);
110 var minFraDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMinimumFractionDigits", []);
111 this.digitList.set (isNegative, number, this.useExponentialNotation ? maxIntDigits + maxFraDigits : maxFraDigits, !this.useExponentialNotation);
112 return this.subformat (result, delegate, isNegative, false, maxIntDigits, minIntDigits, maxFraDigits, minFraDigits);
113 }}, "~N,StringBuffer,java.text.Format.FieldDelegate");
114 Clazz.defineMethod (c$, "formatLong",
115 function (number, result, delegate) {
116 var isNegative = (number < 0);
120 } else if (this.multiplier != 1 && this.multiplier != 0) {
121 var cutoff = Clazz.doubleToInt (9223372036854775807 / this.multiplier);
124 }}number *= this.multiplier;
128 if (this.multiplier < 0) {
130 isNegative = !isNegative;
132 var maxIntDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMaximumIntegerDigits", []);
133 var minIntDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMinimumIntegerDigits", []);
134 var maxFraDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMaximumFractionDigits", []);
135 var minFraDigits = Clazz.superCall (this, java.text.DecimalFormat, "getMinimumFractionDigits", []);
136 this.digitList.setLong (isNegative, number, this.useExponentialNotation ? maxIntDigits + maxFraDigits : 0);
137 return this.subformat (result, delegate, isNegative, true, maxIntDigits, minIntDigits, maxFraDigits, minFraDigits);
138 }}, "~N,StringBuffer,java.text.Format.FieldDelegate");
139 Clazz.overrideMethod (c$, "formatToCharacterIterator",
141 var delegate = new java.text.CharacterIteratorFieldDelegate ();
142 var sb = new StringBuffer ();
143 if (Clazz.instanceOf (obj, Double) || Clazz.instanceOf (obj, Float)) {
144 this.formatDouble ((obj).doubleValue (), sb, delegate);
145 } else if (Clazz.instanceOf (obj, Long) || Clazz.instanceOf (obj, Integer) || Clazz.instanceOf (obj, Short) || Clazz.instanceOf (obj, Byte)) {
146 this.formatLong ((obj).longValue (), sb, delegate);
147 } else if (obj == null) {
148 throw new NullPointerException ("formatToCharacterIterator must be passed non-null object");
150 throw new IllegalArgumentException ("Cannot format given Object as a Number");
151 }return delegate.getIterator (sb.toString ());
153 Clazz.defineMethod (c$, "subformat",
154 function (result, delegate, isNegative, isInteger, maxIntDigits, minIntDigits, maxFraDigits, minFraDigits) {
155 var zero = this.symbols.getZeroDigit ();
156 var zeroDelta = zero.charCodeAt (0) - 48;
157 var grouping = this.symbols.getGroupingSeparator ();
158 var decimal = this.isCurrencyFormat ? this.symbols.getMonetaryDecimalSeparator () : this.symbols.getDecimalSeparator ();
159 if (this.digitList.isZero ()) {
160 this.digitList.decimalAt = 0;
162 this.append (result, this.negativePrefix, delegate, this.getNegativePrefixFieldPositions (), java.text.NumberFormat.Field.SIGN);
164 this.append (result, this.positivePrefix, delegate, this.getPositivePrefixFieldPositions (), java.text.NumberFormat.Field.SIGN);
165 }if (this.useExponentialNotation) {
166 var iFieldStart = result.length ();
168 var fFieldStart = -1;
169 var exponent = this.digitList.decimalAt;
170 var repeat = maxIntDigits;
171 var minimumIntegerDigits = minIntDigits;
172 if (repeat > 1 && repeat > minIntDigits) {
174 exponent = (Clazz.doubleToInt ((exponent - 1) / repeat)) * repeat;
176 exponent = (Clazz.doubleToInt ((exponent - repeat) / repeat)) * repeat;
177 }minimumIntegerDigits = 1;
179 exponent -= minimumIntegerDigits;
180 }var minimumDigits = minIntDigits + minFraDigits;
181 if (minimumDigits < 0) {
182 minimumDigits = 2147483647;
183 }var integerDigits = this.digitList.isZero () ? minimumIntegerDigits : this.digitList.decimalAt - exponent;
184 if (minimumDigits < integerDigits) {
185 minimumDigits = integerDigits;
186 }var totalDigits = this.digitList.count;
187 if (minimumDigits > totalDigits) {
188 totalDigits = minimumDigits;
189 }var addedDecimalSeparator = false;
190 for (var i = 0; i < totalDigits; ++i) {
191 if (i == integerDigits) {
192 iFieldEnd = result.length ();
193 result.append (decimal);
194 addedDecimalSeparator = true;
195 fFieldStart = result.length ();
196 }result.append ((i < this.digitList.count) ? String.fromCharCode ((this.digitList.digits[i]).charCodeAt (0) + zeroDelta) : zero);
198 if (this.decimalSeparatorAlwaysShown && totalDigits == integerDigits) {
199 iFieldEnd = result.length ();
200 result.append (decimal);
201 addedDecimalSeparator = true;
202 fFieldStart = result.length ();
203 }if (iFieldEnd == -1) {
204 iFieldEnd = result.length ();
205 }delegate.formatted (0, java.text.NumberFormat.Field.INTEGER, java.text.NumberFormat.Field.INTEGER, iFieldStart, iFieldEnd, result);
206 if (addedDecimalSeparator) {
207 delegate.formatted (java.text.NumberFormat.Field.DECIMAL_SEPARATOR, java.text.NumberFormat.Field.DECIMAL_SEPARATOR, iFieldEnd, fFieldStart, result);
208 }if (fFieldStart == -1) {
209 fFieldStart = result.length ();
210 }delegate.formatted (1, java.text.NumberFormat.Field.FRACTION, java.text.NumberFormat.Field.FRACTION, fFieldStart, result.length (), result);
211 var fieldStart = result.length ();
212 result.append (this.symbols.getExponentSeparator ());
213 delegate.formatted (java.text.NumberFormat.Field.EXPONENT_SYMBOL, java.text.NumberFormat.Field.EXPONENT_SYMBOL, fieldStart, result.length (), result);
214 if (this.digitList.isZero ()) {
216 }var negativeExponent = exponent < 0;
217 if (negativeExponent) {
218 exponent = -exponent;
219 fieldStart = result.length ();
220 result.append (this.symbols.getMinusSign ());
221 delegate.formatted (java.text.NumberFormat.Field.EXPONENT_SIGN, java.text.NumberFormat.Field.EXPONENT_SIGN, fieldStart, result.length (), result);
222 }this.digitList.setExp (negativeExponent, exponent);
223 var eFieldStart = result.length ();
224 for (var i = this.digitList.decimalAt; i < this.minExponentDigits; ++i) {
225 result.append (zero);
227 for (var i = 0; i < this.digitList.decimalAt; ++i) {
228 result.append ((i < this.digitList.count) ? String.fromCharCode ((this.digitList.digits[i]).charCodeAt (0) + zeroDelta) : zero);
230 delegate.formatted (java.text.NumberFormat.Field.EXPONENT, java.text.NumberFormat.Field.EXPONENT, eFieldStart, result.length (), result);
232 var iFieldStart = result.length ();
233 var count = minIntDigits;
235 if (this.digitList.decimalAt > 0 && count < this.digitList.decimalAt) {
236 count = this.digitList.decimalAt;
237 }if (count > maxIntDigits) {
238 count = maxIntDigits;
239 digitIndex = this.digitList.decimalAt - count;
240 }var sizeBeforeIntegerPart = result.length ();
241 for (var i = count - 1; i >= 0; --i) {
242 if (i < this.digitList.decimalAt && digitIndex < this.digitList.count) {
243 result.append (String.fromCharCode ((this.digitList.digits[digitIndex++]).charCodeAt (0) + zeroDelta));
245 result.append (zero);
246 }if (this.isGroupingUsed () && i > 0 && (this.groupingSize != 0) && (i % this.groupingSize == 0)) {
247 var gStart = result.length ();
248 result.append (grouping);
249 delegate.formatted (java.text.NumberFormat.Field.GROUPING_SEPARATOR, java.text.NumberFormat.Field.GROUPING_SEPARATOR, gStart, result.length (), result);
251 var fractionPresent = (minFraDigits > 0) || (!isInteger && digitIndex < this.digitList.count);
252 if (!fractionPresent && result.length () == sizeBeforeIntegerPart) {
253 result.append (zero);
254 }delegate.formatted (0, java.text.NumberFormat.Field.INTEGER, java.text.NumberFormat.Field.INTEGER, iFieldStart, result.length (), result);
255 var sStart = result.length ();
256 if (this.decimalSeparatorAlwaysShown || fractionPresent) {
257 result.append (decimal);
258 }if (sStart != result.length ()) {
259 delegate.formatted (java.text.NumberFormat.Field.DECIMAL_SEPARATOR, java.text.NumberFormat.Field.DECIMAL_SEPARATOR, sStart, result.length (), result);
260 }var fFieldStart = result.length ();
261 for (var i = 0; i < maxFraDigits; ++i) {
262 if (i >= minFraDigits && (isInteger || digitIndex >= this.digitList.count)) {
264 }if (-1 - i > (this.digitList.decimalAt - 1)) {
265 result.append (zero);
267 }if (!isInteger && digitIndex < this.digitList.count) {
268 result.append (String.fromCharCode ((this.digitList.digits[digitIndex++]).charCodeAt (0) + zeroDelta));
270 result.append (zero);
272 delegate.formatted (1, java.text.NumberFormat.Field.FRACTION, java.text.NumberFormat.Field.FRACTION, fFieldStart, result.length (), result);
274 this.append (result, this.negativeSuffix, delegate, this.getNegativeSuffixFieldPositions (), java.text.NumberFormat.Field.SIGN);
276 this.append (result, this.positiveSuffix, delegate, this.getPositiveSuffixFieldPositions (), java.text.NumberFormat.Field.SIGN);
278 }, "StringBuffer,java.text.Format.FieldDelegate,~B,~B,~N,~N,~N,~N");
279 Clazz.defineMethod (c$, "append",
280 function (result, string, delegate, positions, signAttribute) {
281 var start = result.length ();
282 if (string.length > 0) {
283 result.append (string);
284 for (var counter = 0, max = positions.length; counter < max; counter++) {
285 var fp = positions[counter];
286 var attribute = fp.getFieldAttribute ();
287 if (attribute === java.text.NumberFormat.Field.SIGN) {
288 attribute = signAttribute;
289 }delegate.formatted (attribute, attribute, start + fp.getBeginIndex (), start + fp.getEndIndex (), result);
291 }}, "StringBuffer,~S,java.text.Format.FieldDelegate,~A,java.text.Format.Field");
292 Clazz.defineMethod (c$, "parse",
293 function (text, pos) {
294 if (text.regionMatches (pos.index, this.symbols.getNaN (), 0, this.symbols.getNaN ().length)) {
295 pos.index = pos.index + this.symbols.getNaN ().length;
296 return new Double (NaN);
297 }var status = Clazz.newBooleanArray (2, false);
298 if (!this.subparse (text, pos, this.positivePrefix, this.negativePrefix, this.digitList, false, status)) {
301 if (status[1] == (this.multiplier >= 0)) {
302 return new Double (Infinity);
304 return new Double (-Infinity);
305 }}if (this.multiplier == 0) {
306 if (this.digitList.isZero ()) {
307 return new Double (NaN);
308 } else if (status[1]) {
309 return new Double (Infinity);
311 return new Double (-Infinity);
312 }}var gotDouble = true;
313 var gotLongMinimum = false;
314 var doubleResult = 0.0;
316 if (this.digitList.fitsIntoLong (status[1], this.isParseIntegerOnly ())) {
318 longResult = this.digitList.getLong ();
319 if (longResult < 0) {
320 gotLongMinimum = true;
322 doubleResult = this.digitList.getDouble ();
323 }if (this.multiplier != 1) {
325 doubleResult /= this.multiplier;
327 if (longResult % this.multiplier == 0) {
328 longResult = Clazz.doubleToInt (longResult / this.multiplier);
330 doubleResult = (longResult) / this.multiplier;
332 }}}if (!status[1] && !gotLongMinimum) {
333 doubleResult = -doubleResult;
334 longResult = -longResult;
335 }if (this.multiplier != 1 && gotDouble) {
336 longResult = Clazz.doubleToLong (doubleResult);
337 gotDouble = ((doubleResult != longResult) || (doubleResult == 0.0 && 1 / doubleResult < 0.0)) && !this.isParseIntegerOnly ();
338 }return gotDouble ? new Double (doubleResult) : new Long (longResult);
339 }, "~S,java.text.ParsePosition");
340 Clazz.defineMethod (c$, "subparse",
341 function (text, parsePosition, positivePrefix, negativePrefix, digits, isExponent, status) {
342 var position = parsePosition.index;
343 var oldStart = parsePosition.index;
347 gotPositive = text.regionMatches (position, positivePrefix, 0, positivePrefix.length);
348 gotNegative = text.regionMatches (position, negativePrefix, 0, negativePrefix.length);
349 if (gotPositive && gotNegative) {
350 if (positivePrefix.length > negativePrefix.length) {
352 } else if (positivePrefix.length < negativePrefix.length) {
355 position += positivePrefix.length;
356 } else if (gotNegative) {
357 position += negativePrefix.length;
359 parsePosition.errorIndex = position;
362 if (!isExponent && text.regionMatches (position, this.symbols.getInfinity (), 0, this.symbols.getInfinity ().length)) {
363 position += this.symbols.getInfinity ().length;
366 digits.decimalAt = digits.count = 0;
367 var zero = this.symbols.getZeroDigit ();
368 var decimal = this.isCurrencyFormat ? this.symbols.getMonetaryDecimalSeparator () : this.symbols.getDecimalSeparator ();
369 var grouping = this.symbols.getGroupingSeparator ();
370 var exponentString = this.symbols.getExponentSeparator ();
371 var sawDecimal = false;
372 var sawExponent = false;
373 var sawDigit = false;
377 for (; position < text.length; ++position) {
378 var ch = text.charAt (position);
379 var digit = ch.charCodeAt (0) - zero.charCodeAt (0);
380 if (digit < 0 || digit > 9) {
381 digit = Character.digit (ch, 10);
385 if (digits.count == 0) {
391 digits.append (String.fromCharCode (digit + 48));
392 }} else if (digit > 0 && digit <= 9) {
395 digits.append (String.fromCharCode (digit + 48));
397 } else if (!isExponent && ch == decimal) {
398 if (this.isParseIntegerOnly () || sawDecimal) {
400 }digits.decimalAt = digitCount;
402 } else if (!isExponent && ch == grouping && this.isGroupingUsed ()) {
406 } else if (!isExponent && text.regionMatches (position, exponentString, 0, exponentString.length) && !sawExponent) {
407 var pos = new java.text.ParsePosition (position + exponentString.length);
408 var stat = Clazz.newBooleanArray (2, false);
409 var exponentDigits = new java.text.DigitList ();
410 if (this.subparse (text, pos, "", Character.toString (this.symbols.getMinusSign ()), exponentDigits, true, stat) && exponentDigits.fitsIntoLong (stat[1], true)) {
411 position = pos.index;
412 exponent = exponentDigits.getLong ();
414 exponent = -exponent;
423 digits.decimalAt = digitCount;
424 }digits.decimalAt += exponent;
425 if (!sawDigit && digitCount == 0) {
426 parsePosition.index = oldStart;
427 parsePosition.errorIndex = oldStart;
431 gotPositive = text.regionMatches (position, this.positiveSuffix, 0, this.positiveSuffix.length);
433 gotNegative = text.regionMatches (position, this.negativeSuffix, 0, this.negativeSuffix.length);
434 }if (gotPositive && gotNegative) {
435 if (this.positiveSuffix.length > this.negativeSuffix.length) {
437 } else if (this.positiveSuffix.length < this.negativeSuffix.length) {
439 }}if (gotPositive == gotNegative) {
440 parsePosition.errorIndex = position;
442 }parsePosition.index = position + (gotPositive ? this.positiveSuffix.length : this.negativeSuffix.length);
444 parsePosition.index = position;
445 }status[1] = gotPositive;
446 if (parsePosition.index == oldStart) {
447 parsePosition.errorIndex = position;
450 }, "~S,java.text.ParsePosition,~S,~S,java.text.DigitList,~B,~A");
451 Clazz.defineMethod (c$, "getDecimalFormatSymbols",
454 return this.symbols.clone ();
456 if (Clazz.exceptionOf (foo, Exception)) {
463 Clazz.defineMethod (c$, "setDecimalFormatSymbols",
464 function (newSymbols) {
466 this.symbols = newSymbols.clone ();
467 this.expandAffixes ();
469 if (Clazz.exceptionOf (foo, Exception)) {
474 }, "java.text.DecimalFormatSymbols");
475 Clazz.defineMethod (c$, "getPositivePrefix",
477 return this.positivePrefix;
479 Clazz.defineMethod (c$, "setPositivePrefix",
480 function (newValue) {
481 this.positivePrefix = newValue;
482 this.posPrefixPattern = null;
483 this.positivePrefixFieldPositions = null;
485 Clazz.defineMethod (c$, "getPositivePrefixFieldPositions",
487 if (this.positivePrefixFieldPositions == null) {
488 if (this.posPrefixPattern != null) {
489 this.positivePrefixFieldPositions = this.expandAffix (this.posPrefixPattern);
491 this.positivePrefixFieldPositions = java.text.DecimalFormat.EmptyFieldPositionArray;
492 }}return this.positivePrefixFieldPositions;
494 Clazz.defineMethod (c$, "getNegativePrefix",
496 return this.negativePrefix;
498 Clazz.defineMethod (c$, "setNegativePrefix",
499 function (newValue) {
500 this.negativePrefix = newValue;
501 this.negPrefixPattern = null;
503 Clazz.defineMethod (c$, "getNegativePrefixFieldPositions",
505 if (this.negativePrefixFieldPositions == null) {
506 if (this.negPrefixPattern != null) {
507 this.negativePrefixFieldPositions = this.expandAffix (this.negPrefixPattern);
509 this.negativePrefixFieldPositions = java.text.DecimalFormat.EmptyFieldPositionArray;
510 }}return this.negativePrefixFieldPositions;
512 Clazz.defineMethod (c$, "getPositiveSuffix",
514 return this.positiveSuffix;
516 Clazz.defineMethod (c$, "setPositiveSuffix",
517 function (newValue) {
518 this.positiveSuffix = newValue;
519 this.posSuffixPattern = null;
521 Clazz.defineMethod (c$, "getPositiveSuffixFieldPositions",
523 if (this.positiveSuffixFieldPositions == null) {
524 if (this.posSuffixPattern != null) {
525 this.positiveSuffixFieldPositions = this.expandAffix (this.posSuffixPattern);
527 this.positiveSuffixFieldPositions = java.text.DecimalFormat.EmptyFieldPositionArray;
528 }}return this.positiveSuffixFieldPositions;
530 Clazz.defineMethod (c$, "getNegativeSuffix",
532 return this.negativeSuffix;
534 Clazz.defineMethod (c$, "setNegativeSuffix",
535 function (newValue) {
536 this.negativeSuffix = newValue;
537 this.negSuffixPattern = null;
539 Clazz.defineMethod (c$, "getNegativeSuffixFieldPositions",
541 if (this.negativeSuffixFieldPositions == null) {
542 if (this.negSuffixPattern != null) {
543 this.negativeSuffixFieldPositions = this.expandAffix (this.negSuffixPattern);
545 this.negativeSuffixFieldPositions = java.text.DecimalFormat.EmptyFieldPositionArray;
546 }}return this.negativeSuffixFieldPositions;
548 Clazz.defineMethod (c$, "getMultiplier",
550 return this.multiplier;
552 Clazz.defineMethod (c$, "setMultiplier",
553 function (newValue) {
554 this.multiplier = newValue;
556 Clazz.defineMethod (c$, "getGroupingSize",
558 return this.groupingSize;
560 Clazz.defineMethod (c$, "setGroupingSize",
561 function (newValue) {
562 this.groupingSize = newValue;
564 Clazz.defineMethod (c$, "isDecimalSeparatorAlwaysShown",
566 return this.decimalSeparatorAlwaysShown;
568 Clazz.defineMethod (c$, "setDecimalSeparatorAlwaysShown",
569 function (newValue) {
570 this.decimalSeparatorAlwaysShown = newValue;
572 Clazz.defineMethod (c$, "isParseBigDecimal",
574 return this.parseBigDecimal;
576 Clazz.defineMethod (c$, "setParseBigDecimal",
577 function (newValue) {
578 this.parseBigDecimal = newValue;
580 Clazz.defineMethod (c$, "clone",
583 var other = Clazz.superCall (this, java.text.DecimalFormat, "clone", []);
584 other.symbols = this.symbols.clone ();
585 other.digitList = this.digitList.clone ();
588 if (Clazz.exceptionOf (e, Exception)) {
589 throw new InternalError ();
595 Clazz.defineMethod (c$, "equals",
597 if (obj == null) return false;
598 if (!Clazz.superCall (this, java.text.DecimalFormat, "equals", [obj])) return false;
600 return ((this.posPrefixPattern === other.posPrefixPattern && this.positivePrefix.equals (other.positivePrefix)) || (this.posPrefixPattern != null && this.posPrefixPattern.equals (other.posPrefixPattern))) && ((this.posSuffixPattern === other.posSuffixPattern && this.positiveSuffix.equals (other.positiveSuffix)) || (this.posSuffixPattern != null && this.posSuffixPattern.equals (other.posSuffixPattern))) && ((this.negPrefixPattern === other.negPrefixPattern && this.negativePrefix.equals (other.negativePrefix)) || (this.negPrefixPattern != null && this.negPrefixPattern.equals (other.negPrefixPattern))) && ((this.negSuffixPattern === other.negSuffixPattern && this.negativeSuffix.equals (other.negativeSuffix)) || (this.negSuffixPattern != null && this.negSuffixPattern.equals (other.negSuffixPattern))) && this.multiplier == other.multiplier && this.groupingSize == other.groupingSize && this.decimalSeparatorAlwaysShown == other.decimalSeparatorAlwaysShown && this.parseBigDecimal == other.parseBigDecimal && this.useExponentialNotation == other.useExponentialNotation && (!this.useExponentialNotation || this.minExponentDigits == other.minExponentDigits) && this.$maximumIntegerDigits == other.$maximumIntegerDigits && this.$minimumIntegerDigits == other.$minimumIntegerDigits && this.$maximumFractionDigits == other.$maximumFractionDigits && this.$minimumFractionDigits == other.$minimumFractionDigits && this.roundingMode === other.roundingMode && this.symbols.equals (other.symbols);
602 Clazz.defineMethod (c$, "hashCode",
604 return Clazz.superCall (this, java.text.DecimalFormat, "hashCode", []) * 37 + this.positivePrefix.hashCode ();
606 Clazz.defineMethod (c$, "toPattern",
608 return this.toPattern (false);
610 Clazz.defineMethod (c$, "toLocalizedPattern",
612 return this.toPattern (true);
614 Clazz.defineMethod (c$, "expandAffixes",
616 var buffer = new StringBuffer ();
617 if (this.posPrefixPattern != null) {
618 this.positivePrefix = this.expandAffix (this.posPrefixPattern, buffer);
619 this.positivePrefixFieldPositions = null;
620 }if (this.posSuffixPattern != null) {
621 this.positiveSuffix = this.expandAffix (this.posSuffixPattern, buffer);
622 this.positiveSuffixFieldPositions = null;
623 }if (this.negPrefixPattern != null) {
624 this.negativePrefix = this.expandAffix (this.negPrefixPattern, buffer);
625 this.negativePrefixFieldPositions = null;
626 }if (this.negSuffixPattern != null) {
627 this.negativeSuffix = this.expandAffix (this.negSuffixPattern, buffer);
628 this.negativeSuffixFieldPositions = null;
630 Clazz.defineMethod (c$, "expandAffix",
631 function (pattern, buffer) {
632 buffer.setLength (0);
633 for (var i = 0; i < pattern.length; ) {
634 var c = pattern.charAt (i++);
636 c = pattern.charAt (i++);
639 if (i < pattern.length && pattern.charAt (i) == '\u00a4') {
641 buffer.append (this.symbols.getInternationalCurrencySymbol ());
643 buffer.append (this.symbols.getCurrencySymbol ());
646 c = this.symbols.getPercent ();
649 c = this.symbols.getPerMill ();
652 c = this.symbols.getMinusSign ();
657 return buffer.toString ();
658 }, "~S,StringBuffer");
659 Clazz.defineMethod (c$, "expandAffix",
661 var positions = null;
663 for (var i = 0; i < pattern.length; ) {
664 var c = pattern.charAt (i++);
668 c = pattern.charAt (i++);
672 if (i < pattern.length && pattern.charAt (i) == '\u00a4') {
674 string = this.symbols.getInternationalCurrencySymbol ();
676 string = this.symbols.getCurrencySymbol ();
677 }if (string.length > 0) {
678 if (positions == null) {
679 positions = new java.util.ArrayList (2);
680 }var fp = new java.text.FieldPosition (java.text.NumberFormat.Field.CURRENCY);
681 fp.setBeginIndex (stringIndex);
682 fp.setEndIndex (stringIndex + string.length);
684 stringIndex += string.length;
687 c = this.symbols.getPercent ();
689 fieldID = java.text.NumberFormat.Field.PERCENT;
692 c = this.symbols.getPerMill ();
694 fieldID = java.text.NumberFormat.Field.PERMILLE;
697 c = this.symbols.getMinusSign ();
699 fieldID = java.text.NumberFormat.Field.SIGN;
702 if (fieldID != null) {
703 if (positions == null) {
704 positions = new java.util.ArrayList (2);
705 }var fp = new java.text.FieldPosition (fieldID, field);
706 fp.setBeginIndex (stringIndex);
707 fp.setEndIndex (stringIndex + 1);
711 if (positions != null) {
712 return positions.toArray (java.text.DecimalFormat.EmptyFieldPositionArray);
713 }return java.text.DecimalFormat.EmptyFieldPositionArray;
715 Clazz.defineMethod (c$, "appendAffix",
716 function (buffer, affixPattern, expAffix, localized) {
717 if (affixPattern == null) {
718 this.appendAffix (buffer, expAffix, localized);
721 for (var pos = 0; pos < affixPattern.length; pos = i) {
722 i = affixPattern.indexOf ('\'', pos);
724 this.appendAffix (buffer, affixPattern.substring (pos), localized);
727 this.appendAffix (buffer, affixPattern.substring (pos, i), localized);
728 }var c = affixPattern.charAt (++i);
732 } else if (c == '\u00a4' && i < affixPattern.length && affixPattern.charAt (i) == '\u00a4') {
735 } else if (localized) {
738 c = this.symbols.getPercent ();
741 c = this.symbols.getPerMill ();
744 c = this.symbols.getMinusSign ();
749 }}, "StringBuffer,~S,~S,~B");
750 Clazz.defineMethod (c$, "appendAffix",
751 function (buffer, affix, localized) {
754 needQuote = affix.indexOf (this.symbols.getZeroDigit ()) >= 0 || affix.indexOf (this.symbols.getGroupingSeparator ()) >= 0 || affix.indexOf (this.symbols.getDecimalSeparator ()) >= 0 || affix.indexOf (this.symbols.getPercent ()) >= 0 || affix.indexOf (this.symbols.getPerMill ()) >= 0 || affix.indexOf (this.symbols.getDigit ()) >= 0 || affix.indexOf (this.symbols.getPatternSeparator ()) >= 0 || affix.indexOf (this.symbols.getMinusSign ()) >= 0 || affix.indexOf ('\u00a4') >= 0;
756 needQuote = affix.indexOf ('0') >= 0 || affix.indexOf (',') >= 0 || affix.indexOf ('.') >= 0 || affix.indexOf ('%') >= 0 || affix.indexOf ('\u2030') >= 0 || affix.indexOf ('#') >= 0 || affix.indexOf (';') >= 0 || affix.indexOf ('-') >= 0 || affix.indexOf ('\u00a4') >= 0;
757 }if (needQuote) buffer.append ('\'');
758 if (affix.indexOf ('\'') < 0) buffer.append (affix);
760 for (var j = 0; j < affix.length; ++j) {
761 var c = affix.charAt (j);
763 if (c == '\'') buffer.append (c);
765 }if (needQuote) buffer.append ('\'');
766 }, "StringBuffer,~S,~B");
767 Clazz.defineMethod (c$, "toPattern",
768 function (localized) {
769 var result = new StringBuffer ();
770 for (var j = 1; j >= 0; --j) {
771 if (j == 1) this.appendAffix (result, this.posPrefixPattern, this.positivePrefix, localized);
772 else this.appendAffix (result, this.negPrefixPattern, this.negativePrefix, localized);
774 var digitCount = this.useExponentialNotation ? this.getMaximumIntegerDigits () : Math.max (this.groupingSize, this.getMinimumIntegerDigits ()) + 1;
775 for (i = digitCount; i > 0; --i) {
776 if (i != digitCount && this.isGroupingUsed () && this.groupingSize != 0 && i % this.groupingSize == 0) {
777 result.append (localized ? this.symbols.getGroupingSeparator () : ',');
778 }result.append (i <= this.getMinimumIntegerDigits () ? (localized ? this.symbols.getZeroDigit () : '0') : (localized ? this.symbols.getDigit () : '#'));
780 if (this.getMaximumFractionDigits () > 0 || this.decimalSeparatorAlwaysShown) result.append (localized ? this.symbols.getDecimalSeparator () : '.');
781 for (i = 0; i < this.getMaximumFractionDigits (); ++i) {
782 if (i < this.getMinimumFractionDigits ()) {
783 result.append (localized ? this.symbols.getZeroDigit () : '0');
785 result.append (localized ? this.symbols.getDigit () : '#');
787 if (this.useExponentialNotation) {
788 result.append (localized ? this.symbols.getExponentSeparator () : "E");
789 for (i = 0; i < this.minExponentDigits; ++i) result.append (localized ? this.symbols.getZeroDigit () : '0');
792 this.appendAffix (result, this.posSuffixPattern, this.positiveSuffix, localized);
793 if ((this.negSuffixPattern === this.posSuffixPattern && this.negativeSuffix.equals (this.positiveSuffix)) || (this.negSuffixPattern != null && this.negSuffixPattern.equals (this.posSuffixPattern))) {
794 if ((this.negPrefixPattern != null && this.posPrefixPattern != null && this.negPrefixPattern.equals ("'-" + this.posPrefixPattern)) || (this.negPrefixPattern === this.posPrefixPattern && this.negativePrefix.equals (this.symbols.getMinusSign () + this.positivePrefix))) break;
795 }result.append (localized ? this.symbols.getPatternSeparator () : ';');
796 } else this.appendAffix (result, this.negSuffixPattern, this.negativeSuffix, localized);
798 return result.toString ();
800 Clazz.defineMethod (c$, "applyPattern",
802 this.applyPattern (pattern, false);
804 Clazz.defineMethod (c$, "applyLocalizedPattern",
806 this.applyPattern (pattern, true);
808 Clazz.defineMethod (c$, "applyPattern",
809 function (pattern, localized) {
811 var groupingSeparator = ',';
812 var decimalSeparator = '.';
814 var perMill = '\u2030';
820 zeroDigit = this.symbols.getZeroDigit ();
821 groupingSeparator = this.symbols.getGroupingSeparator ();
822 decimalSeparator = this.symbols.getDecimalSeparator ();
823 percent = this.symbols.getPercent ();
824 perMill = this.symbols.getPerMill ();
825 digit = this.symbols.getDigit ();
826 separator = this.symbols.getPatternSeparator ();
827 exponent = this.symbols.getExponentSeparator ();
828 minus = this.symbols.getMinusSign ();
829 }var gotNegative = false;
830 this.decimalSeparatorAlwaysShown = false;
831 this.isCurrencyFormat = false;
832 this.useExponentialNotation = false;
833 var phaseOneLength = 0;
835 for (var j = 1; j >= 0 && start < pattern.length; --j) {
837 var prefix = new StringBuffer ();
838 var suffix = new StringBuffer ();
841 var digitLeftCount = 0;
842 var zeroDigitCount = 0;
843 var digitRightCount = 0;
844 var groupingCount = -1;
847 for (var pos = start; pos < pattern.length; ++pos) {
848 var ch = pattern.charAt (pos);
854 if ((pos + 1) < pattern.length && pattern.charAt (pos + 1) == '\'') {
861 if (ch == digit || ch == zeroDigit || ch == groupingSeparator || ch == decimalSeparator) {
865 } else if (ch == '\u00a4') {
866 var doubled = (pos + 1) < pattern.length && pattern.charAt (pos + 1) == '\u00a4';
869 }this.isCurrencyFormat = true;
870 affix.append (doubled ? "'\u00A4\u00A4" : "'\u00A4");
872 } else if (ch == '\'') {
874 if ((pos + 1) < pattern.length && pattern.charAt (pos + 1) == '\'') {
880 }} else if (ch == separator) {
881 if (phase == 0 || j == 0) {
882 throw new IllegalArgumentException ("Unquoted special character '" + ch + "' in pattern \"" + pattern + '"');
884 pos = pattern.length;
886 } else if (ch == percent) {
887 if (multiplier != 1) {
888 throw new IllegalArgumentException ("Too many percent/per mille characters in pattern \"" + pattern + '"');
892 } else if (ch == perMill) {
893 if (multiplier != 1) {
894 throw new IllegalArgumentException ("Too many percent/per mille characters in pattern \"" + pattern + '"');
896 affix.append ("'\u2030");
898 } else if (ch == minus) {
907 if (--phaseOneLength == 0) {
912 if (zeroDigitCount > 0) {
916 }if (groupingCount >= 0 && decimalPos < 0) {
918 }} else if (ch == zeroDigit) {
919 if (digitRightCount > 0) {
920 throw new IllegalArgumentException ("Unexpected '0' in pattern \"" + pattern + '"');
922 if (groupingCount >= 0 && decimalPos < 0) {
924 }} else if (ch == groupingSeparator) {
926 } else if (ch == decimalSeparator) {
927 if (decimalPos >= 0) {
928 throw new IllegalArgumentException ("Multiple decimal separators in pattern \"" + pattern + '"');
929 }decimalPos = digitLeftCount + zeroDigitCount + digitRightCount;
930 } else if (pattern.regionMatches (pos, exponent, 0, exponent.length)) {
931 if (this.useExponentialNotation) {
932 throw new IllegalArgumentException ("Multiple exponential symbols in pattern \"" + pattern + '"');
933 }this.useExponentialNotation = true;
934 this.minExponentDigits = 0;
935 pos = pos + exponent.length;
936 while (pos < pattern.length && pattern.charAt (pos) == zeroDigit) {
937 ++this.minExponentDigits;
941 if ((digitLeftCount + zeroDigitCount) < 1 || this.minExponentDigits < 1) {
942 throw new IllegalArgumentException ("Malformed exponential pattern \"" + pattern + '"');
956 if (zeroDigitCount == 0 && digitLeftCount > 0 && decimalPos >= 0) {
960 }digitRightCount = digitLeftCount - n;
961 digitLeftCount = n - 1;
963 }if ((decimalPos < 0 && digitRightCount > 0) || (decimalPos >= 0 && (decimalPos < digitLeftCount || decimalPos > (digitLeftCount + zeroDigitCount))) || groupingCount == 0 || inQuote) {
964 throw new IllegalArgumentException ("Malformed pattern \"" + pattern + '"');
966 this.posPrefixPattern = prefix.toString ();
967 this.posSuffixPattern = suffix.toString ();
968 this.negPrefixPattern = this.posPrefixPattern;
969 this.negSuffixPattern = this.posSuffixPattern;
970 var digitTotalCount = digitLeftCount + zeroDigitCount + digitRightCount;
971 var effectiveDecimalPos = decimalPos >= 0 ? decimalPos : digitTotalCount;
972 this.setMinimumIntegerDigits (effectiveDecimalPos - digitLeftCount);
973 this.setMaximumIntegerDigits (this.useExponentialNotation ? digitLeftCount + this.getMinimumIntegerDigits () : 2147483647);
974 this.setMaximumFractionDigits (decimalPos >= 0 ? (digitTotalCount - decimalPos) : 0);
975 this.setMinimumFractionDigits (decimalPos >= 0 ? (digitLeftCount + zeroDigitCount - decimalPos) : 0);
976 this.setGroupingUsed (groupingCount > 0);
977 this.groupingSize = (groupingCount > 0) ? groupingCount : 0;
978 this.multiplier = multiplier;
979 this.setDecimalSeparatorAlwaysShown (decimalPos == 0 || decimalPos == digitTotalCount);
981 this.negPrefixPattern = prefix.toString ();
982 this.negSuffixPattern = suffix.toString ();
985 if (pattern.length == 0) {
986 this.posPrefixPattern = this.posSuffixPattern = "";
987 this.setMinimumIntegerDigits (0);
988 this.setMaximumIntegerDigits (2147483647);
989 this.setMinimumFractionDigits (0);
990 this.setMaximumFractionDigits (2147483647);
991 }if (!gotNegative || (this.negPrefixPattern.equals (this.posPrefixPattern) && this.negSuffixPattern.equals (this.posSuffixPattern))) {
992 this.negSuffixPattern = this.posSuffixPattern;
993 this.negPrefixPattern = "'-" + this.posPrefixPattern;
994 }this.expandAffixes ();
996 Clazz.defineMethod (c$, "setMaximumIntegerDigits",
997 function (newValue) {
998 this.$maximumIntegerDigits = Math.min (Math.max (0, newValue), 2147483647);
999 Clazz.superCall (this, java.text.DecimalFormat, "setMaximumIntegerDigits", [(this.$maximumIntegerDigits > 309) ? 309 : this.$maximumIntegerDigits]);
1000 if (this.$minimumIntegerDigits > this.$maximumIntegerDigits) {
1001 this.$minimumIntegerDigits = this.$maximumIntegerDigits;
1002 Clazz.superCall (this, java.text.DecimalFormat, "setMinimumIntegerDigits", [(this.$minimumIntegerDigits > 309) ? 309 : this.$minimumIntegerDigits]);
1004 Clazz.defineMethod (c$, "setMinimumIntegerDigits",
1005 function (newValue) {
1006 this.$minimumIntegerDigits = Math.min (Math.max (0, newValue), 2147483647);
1007 Clazz.superCall (this, java.text.DecimalFormat, "setMinimumIntegerDigits", [(this.$minimumIntegerDigits > 309) ? 309 : this.$minimumIntegerDigits]);
1008 if (this.$minimumIntegerDigits > this.$maximumIntegerDigits) {
1009 this.$maximumIntegerDigits = this.$minimumIntegerDigits;
1010 Clazz.superCall (this, java.text.DecimalFormat, "setMaximumIntegerDigits", [(this.$maximumIntegerDigits > 309) ? 309 : this.$maximumIntegerDigits]);
1012 Clazz.defineMethod (c$, "setMaximumFractionDigits",
1013 function (newValue) {
1014 this.$maximumFractionDigits = Math.min (Math.max (0, newValue), 2147483647);
1015 Clazz.superCall (this, java.text.DecimalFormat, "setMaximumFractionDigits", [(this.$maximumFractionDigits > 340) ? 340 : this.$maximumFractionDigits]);
1016 if (this.$minimumFractionDigits > this.$maximumFractionDigits) {
1017 this.$minimumFractionDigits = this.$maximumFractionDigits;
1018 Clazz.superCall (this, java.text.DecimalFormat, "setMinimumFractionDigits", [(this.$minimumFractionDigits > 340) ? 340 : this.$minimumFractionDigits]);
1020 Clazz.defineMethod (c$, "setMinimumFractionDigits",
1021 function (newValue) {
1022 this.$minimumFractionDigits = Math.min (Math.max (0, newValue), 2147483647);
1023 Clazz.superCall (this, java.text.DecimalFormat, "setMinimumFractionDigits", [(this.$minimumFractionDigits > 340) ? 340 : this.$minimumFractionDigits]);
1024 if (this.$minimumFractionDigits > this.$maximumFractionDigits) {
1025 this.$maximumFractionDigits = this.$minimumFractionDigits;
1026 Clazz.superCall (this, java.text.DecimalFormat, "setMaximumFractionDigits", [(this.$maximumFractionDigits > 340) ? 340 : this.$maximumFractionDigits]);
1028 Clazz.defineMethod (c$, "getMaximumIntegerDigits",
1030 return this.$maximumIntegerDigits;
1032 Clazz.defineMethod (c$, "getMinimumIntegerDigits",
1034 return this.$minimumIntegerDigits;
1036 Clazz.defineMethod (c$, "getMaximumFractionDigits",
1038 return this.$maximumFractionDigits;
1040 Clazz.defineMethod (c$, "getMinimumFractionDigits",
1042 return this.$minimumFractionDigits;
1044 Clazz.overrideMethod (c$, "getRoundingMode",
1046 return this.roundingMode;
1048 Clazz.overrideMethod (c$, "setRoundingMode",
1049 function (roundingMode) {
1050 if (roundingMode == null) {
1051 throw new NullPointerException ();
1052 }this.roundingMode = roundingMode;
1053 this.digitList.setRoundingMode (roundingMode);
1054 }, "java.math.RoundingMode");
1055 Clazz.defineMethod (c$, "adjustForCurrencyDefaultFractionDigits",
1058 var oldMinDigits = this.getMinimumFractionDigits ();
1059 if (oldMinDigits == this.getMaximumFractionDigits ()) {
1060 this.setMinimumFractionDigits (digits);
1061 this.setMaximumFractionDigits (digits);
1063 this.setMinimumFractionDigits (Math.min (digits, oldMinDigits));
1064 this.setMaximumFractionDigits (digits);
1066 Clazz.defineStatics (c$,
1067 "STATUS_INFINITE", 0,
1068 "STATUS_POSITIVE", 1,
1070 "PATTERN_ZERO_DIGIT", '0',
1071 "PATTERN_GROUPING_SEPARATOR", ',',
1072 "PATTERN_DECIMAL_SEPARATOR", '.',
1073 "PATTERN_PER_MILLE", '\u2030',
1074 "PATTERN_PERCENT", '%',
1075 "PATTERN_DIGIT", '#',
1076 "PATTERN_SEPARATOR", ';',
1077 "PATTERN_EXPONENT", "E",
1078 "PATTERN_MINUS", '-',
1079 "CURRENCY_SIGN", '\u00A4',
1081 c$.EmptyFieldPositionArray = c$.prototype.EmptyFieldPositionArray = new Array (0);
1082 Clazz.defineStatics (c$,
1083 "DOUBLE_INTEGER_DIGITS", 309,
1084 "DOUBLE_FRACTION_DIGITS", 340,
1085 "MAXIMUM_INTEGER_DIGITS", 2147483647,
1086 "MAXIMUM_FRACTION_DIGITS", 2147483647);
1087 c$.$cachedLocaleData = c$.prototype.$cachedLocaleData = new java.util.Hashtable (3);