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