mil.navy.nps.util
Class UnsignedInt

java.lang.Object
  extended byjava.lang.Number
      extended bymil.navy.nps.util.UnsignedInt
All Implemented Interfaces:
java.lang.Cloneable, java.io.Serializable, SerializationInterface

public class UnsignedInt
extends java.lang.Number
implements SerializationInterface, java.lang.Cloneable

Version:
1.0
Author:
Don McGregor (http://www.npsnet.org/~mcgredo)
Location:
http://www.web3D.org/WorkingGroups/vrtp/mil/navy/nps/dis/UnsignedInt.java
Summary:
This class implements a 32-bit unsigned integer, which Java doesn't natively handle.
Explanation:
This is an extension of Number to handle 32-bit unsigned integers. Java doesn't handle unsigned numbers, so we have to promote the unsigned integers to longs to be sure we have enough space to handle them.

This implements the SerializationInterface, which means it can be written out to a stream in the standard DIS 32-bit format.

See comments in UnsignedByte for description of how the mapping between negative values and unsigned positive values works.

This implements the Cloneable interface, which means that when we clone() something we can do a bitwise field copy (shallow copy). This needs to change if we ever have any actual objects contained in this class.

History:
07Oct96 /Don McGregor /New
09Oct96 /Don McGregor /Changed name to UnsignedInt, added testing, added to mil.navy.nps.dis package
10Mar97 /Don McGregor /changes for javadoc

8Dec97 /Ronan Fauglas /changes for documentation templates + complements in documentation
16Dec98 /Don Brutzman /tweak documentation
References:
DIS-Java-VRML Working Group: http://www.web3D.org/WorkingGroups/vrtp/dis-java-vrml/
See Also:
SerializationInterface, UnsignedByte, UnsignedShort, Serialized Form

Field Summary
static int MAX_INT_VALUE
           
static long MAX_LONG_VALUE
           
 
Constructor Summary
UnsignedInt()
          Contructs an UnsignedInt object and intializes its value to 0.
UnsignedInt(int pData)
          Constructs an UnsignedInt object from a signed int, throws an exception if the parameter is out of range.
UnsignedInt(long pData)
          Constructs a UnsignedInt object from a signed long, throws an exception if the parameter is out of range.
UnsignedInt(short pData)
          Constructs a UnsignedInt object from a signed short, throws an exception if the paraneter is out of range.
 
Method Summary
 java.lang.Object clone()
          Makes a deep copy of the current UnsignedInt object.
 void debugTest()
          Of debugging interest only.
 void deSerialize(java.io.DataInputStream pInputStream)
          Reads a UnsignedInt in from DIS format.
 double doubleValue()
          Returns the current value of this object as a double float, after conversion.
 float floatValue()
          Returns a the current value of this object as a float, after conversion.
 int intValue()
          Don't use this ! Explanation This is actually a bad thing, since we cannot represent the full range of an unsigned int with an int.
 long longValue()
          Returns the current value of this object as a long, after conversion.
 void serialize(java.io.DataOutputStream pOutputStream)
          Writes out a UnsignedInt to an output stream.
 java.lang.String toString()
          Returns a String object representing this UnsignedInt value.
 
Methods inherited from class java.lang.Number
byteValue, shortValue
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

MAX_INT_VALUE

public static final int MAX_INT_VALUE
See Also:
Constant Field Values

MAX_LONG_VALUE

public static final long MAX_LONG_VALUE
See Also:
Constant Field Values
Constructor Detail

UnsignedInt

public UnsignedInt()
Contructs an UnsignedInt object and intializes its value to 0.


UnsignedInt

public UnsignedInt(int pData)
Constructs an UnsignedInt object from a signed int, throws an exception if the parameter is out of range.

Parameters:
pData - >=0
Throws:
java.lang.RuntimeException - if pData is out of range

UnsignedInt

public UnsignedInt(short pData)
Constructs a UnsignedInt object from a signed short, throws an exception if the paraneter is out of range.

Parameters:
pData - >=0
Throws:
java.lang.RuntimeException - if pData is out of range

UnsignedInt

public UnsignedInt(long pData)
Constructs a UnsignedInt object from a signed long, throws an exception if the parameter is out of range.

Parameters:
pData - >=0,<=MAX_INT_VALUE
Throws:
java.lang.RuntimeException - if pData is out of range
Method Detail

doubleValue

public double doubleValue()
Returns the current value of this object as a double float, after conversion.

Returns:
the current value of this object as a double float

floatValue

public float floatValue()
Returns a the current value of this object as a float, after conversion.

Returns:
the current value of this object as a float

longValue

public long longValue()
Returns the current value of this object as a long, after conversion.

Returns:
the current value of this object as a long

intValue

public int intValue()
Don't use this !
Explanation
This is actually a bad thing, since we cannot represent the full range of an unsigned int with an int. One option is to throw an exception only when the int value is beyond the range, eg above 2-billion odd. But it seems better to blow up in place, rather than work sometimes and not other times. (We have to implement the method because it's declared abstract in Number.) Moral of the story: don't try to read the value of an unsigned int with an int.

Throws:
java.lang.RuntimeException - whenever one tries to use this method.

serialize

public void serialize(java.io.DataOutputStream pOutputStream)
Writes out a UnsignedInt to an output stream.

Specified by:
serialize in interface SerializationInterface
Throws:
java.lang.RuntimeException - if an IOException occurs.
See Also:
SerializationInterface

deSerialize

public void deSerialize(java.io.DataInputStream pInputStream)
Reads a UnsignedInt in from DIS format.

Specified by:
deSerialize in interface SerializationInterface
Throws:
java.lang.RuntimeException - if an IOException occurs.
See Also:
SerializationInterface

toString

public java.lang.String toString()
Returns a String object representing this UnsignedInt value.

Returns:
a string representation of the value of this object in base 10.

clone

public java.lang.Object clone()
Makes a deep copy of the current UnsignedInt object.

Returns:
the cloned object.
Throws:
java.lang.RuntimeException - if cloning fails

debugTest

public void debugTest()
Of debugging interest only. You shouldn't have to use this method.