1 package mockit.asm.classes;
2
3 import edu.umd.cs.findbugs.annotations.NonNull;
4
5 import mockit.asm.constantPool.AttributeWriter;
6 import mockit.asm.constantPool.ConstantPoolGeneration;
7 import mockit.asm.util.ByteVector;
8
9
10
11
12 final class InterfaceWriter extends AttributeWriter {
13 @NonNull
14 private final int[] interfaceItemIndices;
15
16 InterfaceWriter(@NonNull ConstantPoolGeneration cp, @NonNull String[] interfaceNames) {
17 super(cp);
18
19 int n = interfaceNames.length;
20 int[] cpItemIndices = new int[n];
21
22 for (int i = 0; i < n; i++) {
23 cpItemIndices[i] = cp.newClass(interfaceNames[i]);
24 }
25
26 interfaceItemIndices = cpItemIndices;
27 }
28
29 @Override
30 public int getSize() {
31 return 2 * interfaceItemIndices.length;
32 }
33
34 @Override
35 public void put(@NonNull ByteVector out) {
36 out.putShort(interfaceItemIndices.length);
37
38 for (int interfaceItemIndex : interfaceItemIndices) {
39 out.putShort(interfaceItemIndex);
40 }
41 }
42 }