001 package AST; 002 003 import java.util.HashSet; 004 import java.io.File; 005 import java.util.*; 006 import beaver.*; 007 import java.util.ArrayList; 008 import java.util.zip.*; 009 import java.io.*; 010 import java.io.FileNotFoundException; 011 import java.util.Collection; 012 /** 013 * @ast class 014 * 015 */ 016 public class Attribute extends java.lang.Object { 017 018 int attribute_name_index; 019 020 021 ByteArrayOutputStream buf = new ByteArrayOutputStream(); 022 023 024 DataOutputStream output = new DataOutputStream(buf); 025 026 027 028 public Attribute(ConstantPool cp, String name) { 029 attribute_name_index = cp.addUtf8(name); 030 } 031 032 033 034 public void emit(DataOutputStream out) throws IOException { 035 out.writeChar(attribute_name_index); 036 out.writeInt(buf.size()); 037 buf.writeTo(out); 038 output.close(); 039 buf.close(); 040 } 041 042 043 public int size() { return buf.size(); } 044 045 046 public void u1(int v) { try { output.writeByte(v); } catch(IOException e) {} } 047 048 049 public void u2(int v) { try { output.writeChar(v); } catch(IOException e) {} } 050 051 052 public void u4(int v) { try { output.writeInt(v); } catch(IOException e) {} } 053 054 055 public void append(byte[] data) { try { output.write(data, 0, data.length); } catch(IOException e) {} } 056 057 058 public void append(Attribute attribute) { try { attribute.emit(output); } catch(IOException e) {} } 059 060 061 }