Refined MicroInstructionDefinition and associated classes
[Mograsim.git] / 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 }