1 46 package org.codehaus.groovy.classgen; 47 48 import org.codehaus.groovy.ast.Type; 49 import org.objectweb.asm.Label; 50 51 52 58 public class Variable { 59 60 private int index; 61 private Type type; 62 private String name; 63 private boolean holder; 64 private boolean property; 65 66 private Label startLabel = null; 69 private Label endLabel = null; 70 71 public Variable(int index, Type type, String name) { 72 this.index = index; 73 this.type = type; 74 this.name = name; 75 } 76 77 public String getName() { 78 return name; 79 } 80 81 public Type getType() { 82 return type; 83 } 84 85 public String getTypeName() { 86 return type.getName(); 87 } 88 89 92 public int getIndex() { 93 return index; 94 } 95 96 99 public boolean isHolder() { 100 return holder; 101 } 102 103 public void setHolder(boolean holder) { 104 this.holder = holder; 105 } 106 107 public boolean isProperty() { 108 return property; 109 } 110 111 public void setProperty(boolean property) { 112 this.property = property; 113 } 114 115 public Label getStartLabel() { 116 return startLabel; 117 } 118 119 public void setStartLabel(Label startLabel) { 120 this.startLabel = startLabel; 121 } 122 123 public Label getEndLabel() { 124 return endLabel; 125 } 126 127 public void setEndLabel(Label endLabel) { 128 this.endLabel = endLabel; 129 } 130 131 public String toString() { 132 return super.toString() + "[" + type + " " + name + " (" + index + ")"; 134 } 135 136 140 public Variable deriveBoxedVersion() { 141 if (BytecodeHelper.isPrimitiveType(this.getTypeName())) { 142 Type t = new Type(BytecodeHelper.getObjectTypeForPrimitive(getTypeName())); 143 return new Variable(index, t, name); 144 } else { 145 return this; 146 } 147 } 148 149 public void setType(Type type) { 150 this.type = type; 151 } 152 153 public void setDynamic(boolean b) { 154 type.setDynamic(b); 155 } 156 } 157 | Popular Tags |