0
|
1 //
|
|
2 // MessagePack for Java
|
|
3 //
|
|
4 // Copyright (C) 2009 - 2013 FURUHASHI Sadayuki
|
|
5 //
|
|
6 // Licensed under the Apache License, Version 2.0 (the "License");
|
|
7 // you may not use this file except in compliance with the License.
|
|
8 // You may obtain a copy of the License at
|
|
9 //
|
|
10 // http://www.apache.org/licenses/LICENSE-2.0
|
|
11 //
|
|
12 // Unless required by applicable law or agreed to in writing, software
|
|
13 // distributed under the License is distributed on an "AS IS" BASIS,
|
|
14 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15 // See the License for the specific language governing permissions and
|
|
16 // limitations under the License.
|
|
17 //
|
|
18 package org.msgpack.type;
|
|
19
|
|
20 import java.math.BigInteger;
|
|
21 import java.io.IOException;
|
|
22 import org.msgpack.packer.Packer;
|
|
23 import org.msgpack.MessageTypeException;
|
|
24
|
|
25 @SuppressWarnings("serial")
|
|
26 class IntValueImpl extends IntegerValue {
|
|
27 private int value;
|
|
28
|
|
29 IntValueImpl(int value) {
|
|
30 this.value = value;
|
|
31 }
|
|
32
|
|
33 private static int BYTE_MAX = (int) Byte.MAX_VALUE;
|
|
34 private static int SHORT_MAX = (int) Short.MAX_VALUE;
|
|
35
|
|
36 private static int BYTE_MIN = (int) Byte.MIN_VALUE;
|
|
37 private static int SHORT_MIN = (int) Short.MIN_VALUE;
|
|
38
|
|
39 @Override
|
|
40 public byte getByte() {
|
|
41 if (value > BYTE_MAX || value < BYTE_MIN) {
|
|
42 throw new MessageTypeException(); // TODO message
|
|
43 }
|
|
44 return (byte) value;
|
|
45 }
|
|
46
|
|
47 @Override
|
|
48 public short getShort() {
|
|
49 if (value > SHORT_MAX || value < SHORT_MIN) {
|
|
50 throw new MessageTypeException(); // TODO message
|
|
51 }
|
|
52 return (short) value;
|
|
53 }
|
|
54
|
|
55 @Override
|
|
56 public int getInt() {
|
|
57 return value;
|
|
58 }
|
|
59
|
|
60 @Override
|
|
61 public long getLong() {
|
|
62 return value;
|
|
63 }
|
|
64
|
|
65 @Override
|
|
66 public BigInteger getBigInteger() {
|
|
67 return BigInteger.valueOf((long) value);
|
|
68 }
|
|
69
|
|
70 @Override
|
|
71 public byte byteValue() {
|
|
72 return (byte) value;
|
|
73 }
|
|
74
|
|
75 @Override
|
|
76 public short shortValue() {
|
|
77 return (short) value;
|
|
78 }
|
|
79
|
|
80 @Override
|
|
81 public int intValue() {
|
|
82 return value;
|
|
83 }
|
|
84
|
|
85 @Override
|
|
86 public long longValue() {
|
|
87 return (long) value;
|
|
88 }
|
|
89
|
|
90 @Override
|
|
91 public BigInteger bigIntegerValue() {
|
|
92 return BigInteger.valueOf((long) value);
|
|
93 }
|
|
94
|
|
95 @Override
|
|
96 public float floatValue() {
|
|
97 return (float) value;
|
|
98 }
|
|
99
|
|
100 @Override
|
|
101 public double doubleValue() {
|
|
102 return (double) value;
|
|
103 }
|
|
104
|
|
105 @Override
|
|
106 public void writeTo(Packer pk) throws IOException {
|
|
107 pk.write(value);
|
|
108 }
|
|
109
|
|
110 // TODO compareTo
|
|
111
|
|
112 @Override
|
|
113 public boolean equals(Object o) {
|
|
114 if (o == this) {
|
|
115 return true;
|
|
116 }
|
|
117 if (!(o instanceof Value)) {
|
|
118 return false;
|
|
119 }
|
|
120 Value v = (Value) o;
|
|
121 if (!v.isIntegerValue()) {
|
|
122 return false;
|
|
123 }
|
|
124
|
|
125 try {
|
|
126 // TODO
|
|
127 return value == v.asIntegerValue().getInt();
|
|
128 } catch (MessageTypeException ex) {
|
|
129 return false;
|
|
130 }
|
|
131 }
|
|
132
|
|
133 @Override
|
|
134 public int hashCode() {
|
|
135 return value;
|
|
136 }
|
|
137
|
|
138 @Override
|
|
139 public String toString() {
|
|
140 return Integer.toString(value);
|
|
141 }
|
|
142
|
|
143 @Override
|
|
144 public StringBuilder toString(StringBuilder sb) {
|
|
145 return sb.append(Integer.toString(value));
|
|
146 }
|
|
147 }
|