diff options
| author | frsyuki <frsyuki@users.sourceforge.jp> | 2010-08-18 16:32:42 +0900 |
|---|---|---|
| committer | frsyuki <frsyuki@users.sourceforge.jp> | 2010-08-18 16:32:42 +0900 |
| commit | 8c67087a154da0e7cdc32c0b676d2956ce1d0f47 (patch) | |
| tree | 1c4954fef106b58a53fc61ffc200c0d7ec9c6a12 /java/src | |
| parent | 057f73a73e0c3ddabe92f1cd2c394fe4afa13514 (diff) | |
| download | msgpack-python-8c67087a154da0e7cdc32c0b676d2956ce1d0f47.tar.gz | |
java: adds MessagePackObject.bigIntegerValue(), asBigInteger() and equals()
Diffstat (limited to 'java/src')
5 files changed, 49 insertions, 0 deletions
diff --git a/java/src/main/java/org/msgpack/MessagePackObject.java b/java/src/main/java/org/msgpack/MessagePackObject.java index b1a6fab..6181f7a 100644 --- a/java/src/main/java/org/msgpack/MessagePackObject.java +++ b/java/src/main/java/org/msgpack/MessagePackObject.java @@ -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"); } diff --git a/java/src/main/java/org/msgpack/object/BigIntegerTypeIMPL.java b/java/src/main/java/org/msgpack/object/BigIntegerTypeIMPL.java index fd517e7..7b060ee 100644 --- a/java/src/main/java/org/msgpack/object/BigIntegerTypeIMPL.java +++ b/java/src/main/java/org/msgpack/object/BigIntegerTypeIMPL.java @@ -61,6 +61,11 @@ class BigIntegerTypeIMPL extends IntegerType { } @Override + public BigInteger asBigInteger() { + return value; + } + + @Override public byte byteValue() { return value.byteValue(); } @@ -81,6 +86,11 @@ class BigIntegerTypeIMPL extends IntegerType { } @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); diff --git a/java/src/main/java/org/msgpack/object/DoubleTypeIMPL.java b/java/src/main/java/org/msgpack/object/DoubleTypeIMPL.java index b47a709..fd38089 100644 --- a/java/src/main/java/org/msgpack/object/DoubleTypeIMPL.java +++ b/java/src/main/java/org/msgpack/object/DoubleTypeIMPL.java @@ -60,6 +60,11 @@ class DoubleTypeIMPL extends FloatType { } @Override + public BigInteger bigIntegerValue() { + return BigInteger.valueOf((long)value); + } + + @Override public float floatValue() { return (float)value; } diff --git a/java/src/main/java/org/msgpack/object/LongIntegerTypeIMPL.java b/java/src/main/java/org/msgpack/object/LongIntegerTypeIMPL.java index 940ab6f..3928a29 100644 --- a/java/src/main/java/org/msgpack/object/LongIntegerTypeIMPL.java +++ b/java/src/main/java/org/msgpack/object/LongIntegerTypeIMPL.java @@ -58,6 +58,11 @@ class LongIntegerTypeIMPL extends IntegerType { } @Override + public BigInteger asBigInteger() { + return BigInteger.valueOf(value); + } + + @Override public byte byteValue() { return (byte)value; } @@ -78,6 +83,11 @@ class LongIntegerTypeIMPL extends IntegerType { } @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; diff --git a/java/src/main/java/org/msgpack/object/ShortIntegerTypeIMPL.java b/java/src/main/java/org/msgpack/object/ShortIntegerTypeIMPL.java index 60e92b8..dbed426 100644 --- a/java/src/main/java/org/msgpack/object/ShortIntegerTypeIMPL.java +++ b/java/src/main/java/org/msgpack/object/ShortIntegerTypeIMPL.java @@ -80,6 +80,11 @@ class ShortIntegerTypeIMPL extends IntegerType { } @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; |
