KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tc > asm > tree > TableSwitchInsnNode


1 /***
2  * ASM: a very small and fast Java bytecode manipulation framework
3  * Copyright (c) 2000-2005 INRIA, France Telecom
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  * notice, this list of conditions and the following disclaimer in the
13  * documentation and/or other materials provided with the distribution.
14  * 3. Neither the name of the copyright holders nor the names of its
15  * contributors may be used to endorse or promote products derived from
16  * this software without specific prior written permission.
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
28  * THE POSSIBILITY OF SUCH DAMAGE.
29  */

30 package com.tc.asm.tree;
31
32 import com.tc.asm.Label;
33 import com.tc.asm.Opcodes;
34 import com.tc.asm.MethodVisitor;
35
36 import java.util.ArrayList JavaDoc;
37 import java.util.Arrays JavaDoc;
38 import java.util.List JavaDoc;
39
40 /**
41  * A node that represents a TABLESWITCH instruction.
42  *
43  * @author Eric Bruneton
44  */

45 public class TableSwitchInsnNode extends AbstractInsnNode {
46
47     /**
48      * The minimum key value.
49      */

50     public int min;
51
52     /**
53      * The maximum key value.
54      */

55     public int max;
56
57     /**
58      * Beginning of the default handler block.
59      */

60     public Label dflt;
61
62     /**
63      * Beginnings of the handler blocks. This list is a list of {@link Label}
64      * objects.
65      */

66     public List JavaDoc labels;
67
68     /**
69      * Constructs a new {@link TableSwitchInsnNode}.
70      *
71      * @param min the minimum key value.
72      * @param max the maximum key value.
73      * @param dflt beginning of the default handler block.
74      * @param labels beginnings of the handler blocks. <tt>labels[i]</tt> is
75      * the beginning of the handler block for the <tt>min + i</tt> key.
76      */

77     public TableSwitchInsnNode(
78         final int min,
79         final int max,
80         final Label dflt,
81         final Label[] labels)
82     {
83         super(Opcodes.TABLESWITCH);
84         this.min = min;
85         this.max = max;
86         this.dflt = dflt;
87         this.labels = new ArrayList JavaDoc();
88         if (labels != null) {
89             this.labels.addAll(Arrays.asList(labels));
90         }
91     }
92
93     public void accept(final MethodVisitor mv) {
94         Label[] labels = new Label[this.labels.size()];
95         this.labels.toArray(labels);
96         mv.visitTableSwitchInsn(min, max, dflt, labels);
97     }
98
99     public int getType() {
100         return TABLESWITCH_INSN;
101     }
102 }
Popular Tags