diff options
Diffstat (limited to 'src/org/jetbrains/java/decompiler/struct/attr/StructLocalVariableTableAttribute.java')
-rw-r--r-- | src/org/jetbrains/java/decompiler/struct/attr/StructLocalVariableTableAttribute.java | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/org/jetbrains/java/decompiler/struct/attr/StructLocalVariableTableAttribute.java b/src/org/jetbrains/java/decompiler/struct/attr/StructLocalVariableTableAttribute.java new file mode 100644 index 0000000..119d1ff --- /dev/null +++ b/src/org/jetbrains/java/decompiler/struct/attr/StructLocalVariableTableAttribute.java @@ -0,0 +1,47 @@ +/* + * Fernflower - The Analytical Java Decompiler + * http://www.reversed-java.com + * + * (C) 2008 - 2010, Stiver + * + * This software is NEITHER public domain NOR free software + * as per GNU License. See license.txt for more details. + * + * This software is distributed WITHOUT ANY WARRANTY; without + * even the implied warranty of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. + */ + +package org.jetbrains.java.decompiler.struct.attr; + +import java.util.HashMap; + +import org.jetbrains.java.decompiler.struct.consts.ConstantPool; + +public class StructLocalVariableTableAttribute extends StructGeneralAttribute { + + private HashMap<Integer, String> mapVarNames = new HashMap<Integer, String>(); + + public void initContent(ConstantPool pool) { + + name = ATTRIBUTE_LOCAL_VARIABLE_TABLE; + + int len = ((info[0] & 0xFF)<<8) | (info[1] & 0xFF); + + int ind = 6; + for(int i=0;i<len;i++, ind+=10) { + int nindex = ((info[ind] & 0xFF)<<8) | (info[ind+1] & 0xFF); + int vindex = ((info[ind+4] & 0xFF)<<8) | (info[ind+5] & 0xFF); + + mapVarNames.put(vindex, pool.getPrimitiveConstant(nindex).getString()); + } + } + + public void addLocalVariableTable(StructLocalVariableTableAttribute attr) { + mapVarNames.putAll(attr.getMapVarNames()); + } + + public HashMap<Integer, String> getMapVarNames() { + return mapVarNames; + } +} |