The final restructured version for automatic build using maven tycho
[Mograsim.git] / plugins / net.mograsim.machine / src / net / mograsim / machine / mi / parameters / IntegerImmediate.java
1 package net.mograsim.machine.mi.parameters;
2
3 import java.math.BigInteger;
4
5 import net.mograsim.logic.core.types.BitVector;
6
7 public final class IntegerImmediate implements MicroInstructionParameter
8 {
9         private BitVector value;
10
11         public IntegerImmediate(BigInteger value, int bits)
12         {
13                 this.value = BitVector.from(value, bits);
14         }
15
16         public IntegerImmediate(BitVector value)
17         {
18                 this.value = value;
19         }
20
21         @Override
22         public BitVector getValue()
23         {
24                 return value;
25         }
26
27         @Override
28         public ParameterType getType()
29         {
30                 return ParameterType.INTEGER_IMMEDIATE;
31         }
32
33         @Override
34         public int hashCode()
35         {
36                 final int prime = 31;
37                 int result = 1;
38                 result = prime * result + ((value == null) ? 0 : value.hashCode());
39                 return result;
40         }
41
42         @Override
43         public boolean equals(Object obj)
44         {
45                 if (this == obj)
46                         return true;
47                 if (obj == null)
48                         return false;
49                 if (!(obj instanceof IntegerImmediate))
50                         return false;
51                 IntegerImmediate other = (IntegerImmediate) obj;
52                 if (value == null)
53                 {
54                         if (other.value != null)
55                                 return false;
56                 } else if (!value.equals(other.value))
57                         return false;
58                 return true;
59         }
60
61         /**
62          * @return The value of this IntegerImmediate as an unsigned BigInteger
63          */
64         public BigInteger getValueAsBigInteger()
65         {
66                 return value.getUnsignedValue();
67         }
68
69         @Override
70         public String toString()
71         {
72                 return getValueAsBigInteger().toString();
73         }
74 }