1 23 24 25 package com.sun.jdo.api.persistence.enhancer.classfile; 26 27 import java.io.*; 28 import java.util.Vector ; 29 import java.util.Enumeration ; 30 31 35 36 public class LocalVariableTableAttribute extends ClassAttribute { 37 38 public static final String expectedAttrName = "LocalVariableTable"; 40 41 private Vector localTable; 42 43 44 45 49 Enumeration variables() { 50 return localTable.elements(); 51 } 52 53 56 public LocalVariableTableAttribute( 57 ConstUtf8 nameAttr, Vector lvarTable) { 58 super(nameAttr); 59 localTable = lvarTable; 60 } 61 62 63 64 static LocalVariableTableAttribute read( 65 ConstUtf8 attrName, DataInputStream data, CodeEnv env) 66 throws IOException { 67 int nVars = data.readUnsignedShort(); 68 Vector lvarTable = new Vector (); 69 while (nVars-- > 0) { 70 lvarTable.addElement(LocalVariable.read(data, env)); 71 } 72 73 return new LocalVariableTableAttribute(attrName, lvarTable); 74 } 75 76 void write(DataOutputStream out) throws IOException { 77 out.writeShort(attrName().getIndex()); 78 ByteArrayOutputStream baos = new ByteArrayOutputStream(); 79 DataOutputStream tmp_out = new DataOutputStream(baos); 80 tmp_out.writeShort(localTable.size()); 81 for (int i=0; i<localTable.size(); i++) 82 ((LocalVariable) localTable.elementAt(i)).write(tmp_out); 83 84 tmp_out.flush(); 85 byte tmp_bytes[] = baos.toByteArray(); 86 out.writeInt(tmp_bytes.length); 87 out.write(tmp_bytes, 0, tmp_bytes.length); 88 } 89 90 void print(PrintStream out, int indent) { 91 ClassPrint.spaces(out, indent); 92 out.println("LocalVariables: "); for (int i=0; i<localTable.size(); i++) { 94 ((LocalVariable) localTable.elementAt(i)).print(out, indent+2); 95 } 96 } 97 } 98 99 | Popular Tags |