Merge branch 'master' of https://source.jalview.org/git/jalviewjs.git
[jalviewjs.git] / site / j2s / java / lang / Integer.js
1 Clazz.load (["java.lang.Comparable", "$.Number"], "java.lang.Integer", null, function () {
2 java.lang.Integer = Integer = function () {
3 Clazz.instantialize (this, arguments);
4 };
5 Clazz.decorateAsType (Integer, "Integer", Number, Comparable, null, true);
6 Integer.prototype.valueOf = function () { return 0; };
7 Integer.toString = Integer.prototype.toString = function () {
8         if (arguments.length != 0) {
9                 return "" + arguments[0];
10         } else if (this === Integer) {
11                 return "class java.lang.Integer"; // Integer.class.toString
12         }
13         return "" + this.valueOf ();
14 };
15 Clazz.makeConstructor (Integer, 
16 function () {
17 this.valueOf = function () {
18         return 0;
19 };
20 });
21 Clazz.makeConstructor (Integer, 
22 function (value) {
23 var v = Math.round (value) & 0xffffffff;
24 this.valueOf = function () {
25         return v;
26 };
27 }, "Number");
28 Clazz.makeConstructor (Integer, 
29 function (s) {
30 var value = Integer.parseInt (s, 10);
31 this.valueOf = function () {
32         return value;
33 };
34 }, "String");
35 Integer.serialVersionUID = Integer.prototype.serialVersionUID = 1360826667806852920;
36 Integer.MIN_VALUE = Integer.prototype.MIN_VALUE = -0x80000000;
37 Integer.MAX_VALUE = Integer.prototype.MAX_VALUE = 0x7fffffff;
38 Integer.TYPE = Integer.prototype.TYPE = Integer;
39
40 Clazz.defineMethod (Integer, "parseInt", 
41 function (s, radix) {
42 if (s == null) {
43 throw new NumberFormatException ("null");
44 }if (radix < 2) {
45 throw new NumberFormatException ("radix " + radix + " less than Character.MIN_RADIX");
46 }if (radix > 36) {
47 throw new NumberFormatException ("radix " + radix + " greater than Character.MAX_RADIX");
48 }
49 var integer = parseInt (s, radix);
50 if(isNaN(integer)){
51 throw new NumberFormatException ("Not a Number : " + s);
52 }
53 return integer;
54 }, "String, Number");
55 Integer.parseInt = Integer.prototype.parseInt;
56 Clazz.defineMethod (Integer, "parseInt", 
57 function (s) {
58 return Integer.parseInt (s, 10);
59 }, "String");
60
61 Integer.parseInt = Integer.prototype.parseInt;
62
63
64 /*
65
66 Clazz.defineMethod (Integer, "$valueOf", 
67 function (s) {
68 return new Integer(Integer.parseInt (s, 10));
69 }, "String");
70
71 */
72
73 Clazz.defineMethod (Integer, "$valueOf", 
74 function (s) {
75 return new Integer(s);
76 }, "Number");
77
78 Clazz.defineMethod (Integer, "$valueOf", 
79 function (s, r) {
80 return new Integer(Integer.parseInt (s, r));
81 }, "String, Number");
82
83 Integer.$valueOf = Integer.prototype.$valueOf;
84 Clazz.overrideMethod(Integer, "equals", 
85 function (s) {
86 if(s == null || ! Clazz.instanceOf(s, Integer) ){
87         return false;
88 }
89 return s.valueOf()  == this.valueOf();
90 }, "Object");
91
92 Integer.toHexString = Integer.prototype.toHexString = function (i) {
93         return i.toString (16);
94 };
95 Integer.toOctalString = Integer.prototype.toOctalString = function (i) {
96         return i.toString (8);
97 };
98 Integer.toBinaryString = Integer.prototype.toBinaryString = function (i) {
99         return i.toString (2);
100 };
101 Integer.decode = Clazz.defineMethod (Integer, "decode", 
102 function (nm) {
103 var radix = 10;
104 var index = 0;
105 var negative = false;
106 var result;
107 if (nm.startsWith ("-")) {
108 negative = true;
109 index++;
110 }if (nm.startsWith ("0x", index) || nm.startsWith ("0X", index)) {
111 index += 2;
112 radix = 16;
113 } else if (nm.startsWith ("#", index)) {
114 index++;
115 radix = 16;
116 } else if (nm.startsWith ("0", index) && nm.length > 1 + index) {
117 index++;
118 radix = 8;
119 }if (nm.startsWith ("-", index)) throw  new NumberFormatException ("Negative sign in wrong position");
120 try {
121 result = Integer.$valueOf (nm.substring (index), radix);
122 result = negative ?  new Integer (-result.intValue ()) : result;
123 } catch (e) {
124 if (Clazz.instanceOf (e, NumberFormatException)) {
125 var constant = negative ?  String.instantialize ("-" + nm.substring (index)) : nm.substring (index);
126 result = Integer.$valueOf (constant, radix);
127 } else {
128 throw e;
129 }
130 }
131 return result;
132 }, "~S");
133
134 Clazz.overrideMethod(Integer, "hashCode", 
135 function () {
136 return this.valueOf ();
137 });
138
139
140 });
141