View Javadoc
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   import org.checkerframework.checker.index.qual.NonNegative;
10  
11  final class NestMembersWriter extends AttributeWriter {
12      @NonNegative
13      private final int[] memberClassNameIndices;
14  
15      NestMembersWriter(@NonNull ConstantPoolGeneration cp, @NonNull String[] memberClassNames) {
16          super(cp, "NestMembers");
17  
18          memberClassNameIndices = new int[memberClassNames.length];
19  
20          for (int i = 0; i < memberClassNames.length; i++) {
21              memberClassNameIndices[i] = cp.newClass(memberClassNames[i]);
22          }
23      }
24  
25      @NonNegative
26      @Override
27      public int getSize() {
28          return 8 + 2 * memberClassNameIndices.length;
29      }
30  
31      @Override
32      public void put(@NonNull ByteVector out) {
33          int numberOfMembers = memberClassNameIndices.length;
34          put(out, 2 + 2 * numberOfMembers);
35          out.putShort(numberOfMembers);
36  
37          for (int memberClassNameIndex : memberClassNameIndices) {
38              out.putShort(memberClassNameIndex);
39          }
40      }
41  }