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    }