Merge branch 'development' of https://gitlab.lrz.de/lrr-tum/students/eragp-misim...
[Mograsim.git] / net.mograsim.machine / src / net / mograsim / machine / mi / MicroInstructionDefinition.java
1 package net.mograsim.machine.mi;
2
3 import net.mograsim.machine.mi.parameters.MicroInstructionParameter;
4 import net.mograsim.machine.mi.parameters.ParameterClassification;
5
6 public interface MicroInstructionDefinition
7 {
8         /**
9          * @return The {@link ParameterClassification}s of which a MicroInstruction is composed.
10          */
11         public ParameterClassification[] getParameterClassifications();
12         
13         /**
14          * @throws IndexOutOfBoundsException
15          */
16         public ParameterClassification getParameterClassification(int index);
17         
18         
19         /**
20          * @return The amount of {@link MicroInstructionParameter}s in a {@link MicroInstruction} that follows this definition.
21          */
22         public default int size()
23         {
24                 return getParameterClassifications().length;
25         }
26         
27         public static MicroInstructionDefinition create(ParameterClassification... classes)
28         {
29                 return new StandardMicroInstructionDefinition(classes);
30         }
31 }