Mercurial > hg > Members > sugi > MessagePack-java
comparison src/main/java/org/msgpack/type/LongValueImpl.java @ 0:cb825acd883a
first commit
author | sugi |
---|---|
date | Sat, 18 Oct 2014 15:06:15 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:cb825acd883a |
---|---|
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 LongValueImpl extends IntegerValue { | |
27 private long value; | |
28 | |
29 LongValueImpl(long value) { | |
30 this.value = value; | |
31 } | |
32 | |
33 private static long BYTE_MAX = (long) Byte.MAX_VALUE; | |
34 private static long SHORT_MAX = (long) Short.MAX_VALUE; | |
35 private static long INT_MAX = (long) Integer.MAX_VALUE; | |
36 | |
37 private static long BYTE_MIN = (long) Byte.MIN_VALUE; | |
38 private static long SHORT_MIN = (long) Short.MIN_VALUE; | |
39 private static long INT_MIN = (long) Integer.MIN_VALUE; | |
40 | |
41 @Override | |
42 public byte getByte() { | |
43 if (value > BYTE_MAX || value < BYTE_MIN) { | |
44 throw new MessageTypeException(); // TODO message | |
45 } | |
46 return (byte) value; | |
47 } | |
48 | |
49 @Override | |
50 public short getShort() { | |
51 if (value > SHORT_MAX || value < SHORT_MIN) { | |
52 throw new MessageTypeException(); // TODO message | |
53 } | |
54 return (short) value; | |
55 } | |
56 | |
57 @Override | |
58 public int getInt() { | |
59 if (value > INT_MAX || value < INT_MIN) { | |
60 throw new MessageTypeException(); // TODO message | |
61 } | |
62 return (int) value; | |
63 } | |
64 | |
65 @Override | |
66 public long getLong() { | |
67 return value; | |
68 } | |
69 | |
70 @Override | |
71 public BigInteger getBigInteger() { | |
72 return BigInteger.valueOf(value); | |
73 } | |
74 | |
75 @Override | |
76 public byte byteValue() { | |
77 return (byte) value; | |
78 } | |
79 | |
80 @Override | |
81 public short shortValue() { | |
82 return (short) value; | |
83 } | |
84 | |
85 @Override | |
86 public int intValue() { | |
87 return (int) value; | |
88 } | |
89 | |
90 @Override | |
91 public long longValue() { | |
92 return value; | |
93 } | |
94 | |
95 @Override | |
96 public BigInteger bigIntegerValue() { | |
97 return BigInteger.valueOf(value); | |
98 } | |
99 | |
100 @Override | |
101 public float floatValue() { | |
102 return (float) value; | |
103 } | |
104 | |
105 @Override | |
106 public double doubleValue() { | |
107 return (double) value; | |
108 } | |
109 | |
110 @Override | |
111 public void writeTo(Packer pk) throws IOException { | |
112 pk.write(value); | |
113 } | |
114 | |
115 // TODO compareTo | |
116 | |
117 @Override | |
118 public boolean equals(Object o) { | |
119 if (o == this) { | |
120 return true; | |
121 } | |
122 if (!(o instanceof Value)) { | |
123 return false; | |
124 } | |
125 Value v = (Value) o; | |
126 if (!v.isIntegerValue()) { | |
127 return false; | |
128 } | |
129 | |
130 try { | |
131 // TODO | |
132 return value == v.asIntegerValue().getLong(); | |
133 } catch (MessageTypeException ex) { | |
134 return false; | |
135 } | |
136 } | |
137 | |
138 @Override | |
139 public int hashCode() { | |
140 if (INT_MIN <= value && value <= INT_MAX) { | |
141 return (int) value; | |
142 } else { | |
143 return (int) (value ^ (value >>> 32)); | |
144 } | |
145 } | |
146 | |
147 @Override | |
148 public String toString() { | |
149 return Long.toString(value); | |
150 } | |
151 | |
152 @Override | |
153 public StringBuilder toString(StringBuilder sb) { | |
154 return sb.append(Long.toString(value)); | |
155 } | |
156 } |