1
2
3
4
5
6
7
8
9
10 package ch.panter.li.bi.asn;
11
12
13 public interface AsnIntegralNumber extends Comparable<Object>
14 {
15
16 /** The value bits of this instance as an abstract number (Integer, Long, BigInteger).
17 Always safe to call, independent of the result of isValueAnInt().
18 @return the value bits of this instance as an abstract number
19 */
20 public Number getValue();
21
22 /** Determines whether this instances value matches the one of the given number.
23 @param compare the value to compare our value to
24 @return true if the two numbers represent the same numerical value, false otherwise
25 */
26 public boolean hasSameNumericalValue( final Number compare );
27
28 /** Determines whether the value of this tag can be represented in a
29 java int. Depending on the result of this method one of the getValueAsInt()
30 or getValueBits() must be used to access the value.
31 @return true if it is safe to call getValueAsInt(), false if getValueBits()
32 must be used.
33 */
34 public boolean isValueAnInt();
35
36 /** The value of this instance as a java int. May only be called if isValueAnInt()
37 returned true.
38 @return the value of this instance as a java int
39 @throws IllegalStateException in case the value is too large for a java int
40 */
41 public int getValueAsInt();
42
43 /** The value bits of this instance as an abstract number (Long, BigInteger).
44 May only be called if isValueAnInt() returned false.
45 @return the value bits of this instance as an abstract number
46 @throws IllegalStateException in case the value fits into a java int
47 */
48 public Number getValueLarge();
49
50 }
51
52