src/share/classes/jdk/internal/org/objectweb/asm/tree/LookupSwitchInsnNode.java

Print this page




  76 
  77     /**
  78      * Beginning of the default handler block.
  79      */
  80     public LabelNode dflt;
  81 
  82     /**
  83      * The values of the keys. This list is a list of {@link Integer} objects.
  84      */
  85     public List<Integer> keys;
  86 
  87     /**
  88      * Beginnings of the handler blocks. This list is a list of
  89      * {@link LabelNode} objects.
  90      */
  91     public List<LabelNode> labels;
  92 
  93     /**
  94      * Constructs a new {@link LookupSwitchInsnNode}.
  95      *
  96      * @param dflt beginning of the default handler block.
  97      * @param keys the values of the keys.
  98      * @param labels beginnings of the handler blocks. <tt>labels[i]</tt> is
  99      *        the beginning of the handler block for the <tt>keys[i]</tt> key.



 100      */
 101     public LookupSwitchInsnNode(
 102         final LabelNode dflt,
 103         final int[] keys,
 104         final LabelNode[] labels)
 105     {
 106         super(Opcodes.LOOKUPSWITCH);
 107         this.dflt = dflt;
 108         this.keys = new ArrayList<Integer>(keys == null ? 0 : keys.length);
 109         this.labels = new ArrayList<LabelNode>(labels == null ? 0 : labels.length);

 110         if (keys != null) {
 111             for (int i = 0; i < keys.length; ++i) {
 112                 this.keys.add(new Integer(keys[i]));
 113             }
 114         }
 115         if (labels != null) {
 116             this.labels.addAll(Arrays.asList(labels));
 117         }
 118     }
 119 
 120     @Override
 121     public int getType() {
 122         return LOOKUPSWITCH_INSN;
 123     }
 124 
 125     @Override
 126     public void accept(final MethodVisitor mv) {
 127         int[] keys = new int[this.keys.size()];
 128         for (int i = 0; i < keys.length; ++i) {
 129             keys[i] = this.keys.get(i).intValue();
 130         }
 131         Label[] labels = new Label[this.labels.size()];
 132         for (int i = 0; i < labels.length; ++i) {
 133             labels[i] = this.labels.get(i).getLabel();
 134         }
 135         mv.visitLookupSwitchInsn(dflt.getLabel(), keys, labels);

 136     }
 137 
 138     @Override
 139     public AbstractInsnNode clone(final Map<LabelNode, LabelNode> labels) {
 140         LookupSwitchInsnNode clone = new LookupSwitchInsnNode(clone(dflt,
 141                 labels), null, clone(this.labels, labels));
 142         clone.keys.addAll(keys);
 143         return clone;
 144     }
 145 }


  76 
  77     /**
  78      * Beginning of the default handler block.
  79      */
  80     public LabelNode dflt;
  81 
  82     /**
  83      * The values of the keys. This list is a list of {@link Integer} objects.
  84      */
  85     public List<Integer> keys;
  86 
  87     /**
  88      * Beginnings of the handler blocks. This list is a list of
  89      * {@link LabelNode} objects.
  90      */
  91     public List<LabelNode> labels;
  92 
  93     /**
  94      * Constructs a new {@link LookupSwitchInsnNode}.
  95      *
  96      * @param dflt
  97      *            beginning of the default handler block.
  98      * @param keys
  99      *            the values of the keys.
 100      * @param labels
 101      *            beginnings of the handler blocks. <tt>labels[i]</tt> is the
 102      *            beginning of the handler block for the <tt>keys[i]</tt> key.
 103      */
 104     public LookupSwitchInsnNode(final LabelNode dflt, final int[] keys,
 105             final LabelNode[] labels) {



 106         super(Opcodes.LOOKUPSWITCH);
 107         this.dflt = dflt;
 108         this.keys = new ArrayList<Integer>(keys == null ? 0 : keys.length);
 109         this.labels = new ArrayList<LabelNode>(labels == null ? 0
 110                 : labels.length);
 111         if (keys != null) {
 112             for (int i = 0; i < keys.length; ++i) {
 113                 this.keys.add(new Integer(keys[i]));
 114             }
 115         }
 116         if (labels != null) {
 117             this.labels.addAll(Arrays.asList(labels));
 118         }
 119     }
 120 
 121     @Override
 122     public int getType() {
 123         return LOOKUPSWITCH_INSN;
 124     }
 125 
 126     @Override
 127     public void accept(final MethodVisitor mv) {
 128         int[] keys = new int[this.keys.size()];
 129         for (int i = 0; i < keys.length; ++i) {
 130             keys[i] = this.keys.get(i).intValue();
 131         }
 132         Label[] labels = new Label[this.labels.size()];
 133         for (int i = 0; i < labels.length; ++i) {
 134             labels[i] = this.labels.get(i).getLabel();
 135         }
 136         mv.visitLookupSwitchInsn(dflt.getLabel(), keys, labels);
 137         acceptAnnotations(mv);
 138     }
 139 
 140     @Override
 141     public AbstractInsnNode clone(final Map<LabelNode, LabelNode> labels) {
 142         LookupSwitchInsnNode clone = new LookupSwitchInsnNode(clone(dflt,
 143                 labels), null, clone(this.labels, labels));
 144         clone.keys.addAll(keys);
 145         return clone.cloneAnnotations(this);
 146     }
 147 }