java: adds MessagePackObject.bigIntegerValue(), asBigInteger() and equals()

This commit is contained in:
frsyuki 2010-08-18 16:32:42 +09:00
parent 057f73a73e
commit 8c67087a15
5 changed files with 49 additions and 0 deletions

View File

@ -119,6 +119,10 @@ public abstract class MessagePackObject implements Cloneable, MessagePackable {
throw new MessageTypeException("type error");
}
public BigInteger bigIntegerValue() {
throw new MessageTypeException("type error");
}
public float floatValue() {
throw new MessageTypeException("type error");
}

View File

@ -60,6 +60,11 @@ class BigIntegerTypeIMPL extends IntegerType {
return value.longValue();
}
@Override
public BigInteger asBigInteger() {
return value;
}
@Override
public byte byteValue() {
return value.byteValue();
@ -80,6 +85,11 @@ class BigIntegerTypeIMPL extends IntegerType {
return value.longValue();
}
@Override
public BigInteger bigIntegerValue() {
return value;
}
@Override
public float floatValue() {
return value.floatValue();
@ -98,6 +108,11 @@ class BigIntegerTypeIMPL extends IntegerType {
@Override
public boolean equals(Object obj) {
if(obj.getClass() != getClass()) {
if(obj.getClass() == ShortIntegerTypeIMPL.class) {
return BigInteger.valueOf((long)((ShortIntegerTypeIMPL)obj).shortValue()).equals(value);
} else if(obj.getClass() == LongIntegerTypeIMPL.class) {
return BigInteger.valueOf(((LongIntegerTypeIMPL)obj).longValue()).equals(value);
}
return false;
}
return ((BigIntegerTypeIMPL)obj).value.equals(value);

View File

@ -59,6 +59,11 @@ class DoubleTypeIMPL extends FloatType {
return (long)value;
}
@Override
public BigInteger bigIntegerValue() {
return BigInteger.valueOf((long)value);
}
@Override
public float floatValue() {
return (float)value;

View File

@ -57,6 +57,11 @@ class LongIntegerTypeIMPL extends IntegerType {
return value;
}
@Override
public BigInteger asBigInteger() {
return BigInteger.valueOf(value);
}
@Override
public byte byteValue() {
return (byte)value;
@ -77,6 +82,11 @@ class LongIntegerTypeIMPL extends IntegerType {
return (long)value;
}
@Override
public BigInteger bigIntegerValue() {
return BigInteger.valueOf(value);
}
@Override
public float floatValue() {
return (float)value;
@ -95,6 +105,11 @@ class LongIntegerTypeIMPL extends IntegerType {
@Override
public boolean equals(Object obj) {
if(obj.getClass() != getClass()) {
if(obj.getClass() == ShortIntegerTypeIMPL.class) {
return value == ((ShortIntegerTypeIMPL)obj).longValue();
} else if(obj.getClass() == BigIntegerTypeIMPL.class) {
return (long)value == ((BigIntegerTypeIMPL)obj).longValue();
}
return false;
}
return ((LongIntegerTypeIMPL)obj).value == value;

View File

@ -79,6 +79,11 @@ class ShortIntegerTypeIMPL extends IntegerType {
return (long)value;
}
@Override
public BigInteger bigIntegerValue() {
return BigInteger.valueOf((long)value);
}
@Override
public float floatValue() {
return (float)value;
@ -97,6 +102,11 @@ class ShortIntegerTypeIMPL extends IntegerType {
@Override
public boolean equals(Object obj) {
if(obj.getClass() != getClass()) {
if(obj.getClass() == LongIntegerTypeIMPL.class) {
return (long)value == ((LongIntegerTypeIMPL)obj).longValue();
} else if(obj.getClass() == BigIntegerTypeIMPL.class) {
return ((BigIntegerTypeIMPL)obj).bigIntegerValue().equals(BigInteger.valueOf((long)value));
}
return false;
}
return ((ShortIntegerTypeIMPL)obj).value == value;