View Javadoc

1   package serp.bytecode;
2   
3   import serp.bytecode.visitor.*;
4   import serp.util.*;
5   
6   /***
7    * A local variable contains the name, description, index and scope
8    * of a local used in opcodes.
9    *
10   * @author Abe White
11   */
12  public class LocalVariable extends Local {
13      LocalVariable(LocalVariableTable owner) {
14          super(owner);
15      }
16  
17      /***
18       * The owning table.
19       */
20      public LocalVariableTable getLocalVariableTable() {
21          return (LocalVariableTable) getTable();
22      }
23  
24      /***
25       * Return the type of this local.
26       * If the type has not been set, this method will return null.
27       */
28      public Class getType() {
29          String type = getTypeName();
30          if (type == null)
31              return null;
32          return Strings.toClass(type, getClassLoader());
33      }
34  
35      /***
36       * Return the type of this local.
37       * If the type has not been set, this method will return null.
38       */
39      public BCClass getTypeBC() {
40          String type = getTypeName();
41          if (type == null)
42              return null;
43          return getProject().loadClass(type, getClassLoader());
44      }
45  
46      /***
47       * Set the type of this local.
48       */
49      public void setType(Class type) {
50          if (type == null)
51              setType((String) null);
52          else
53              setType(type.getName());
54      }
55  
56      /***
57       * Set the type of this local.
58       */
59      public void setType(BCClass type) {
60          if (type == null)
61              setType((String) null);
62          else
63              setType(type.getName());
64      }
65  
66      public void acceptVisit(BCVisitor visit) {
67          visit.enterLocalVariable(this);
68          visit.exitLocalVariable(this);
69      }
70  }