1 /* Copyright (C) 2003 Vladimir Roubtsov. All rights reserved. 2 * 3 * This program and the accompanying materials are made available under 4 * the terms of the Common Public License v1.0 which accompanies this distribution, 5 * and is available at http://www.eclipse.org/legal/cpl-v10.html 6 * 7 * $Id: SourceFileAttribute_info.java,v 1.1.1.1 2004/05/09 16:57:48 vlad_r Exp $ 8 */ 9 package com.vladium.jcd.cls.attribute; 10 11 import java.io.IOException; 12 13 import com.vladium.jcd.cls.ClassDef; 14 import com.vladium.jcd.cls.constant.CONSTANT_Utf8_info; 15 import com.vladium.jcd.lib.UDataInputStream; 16 import com.vladium.jcd.lib.UDataOutputStream; 17 18 // ---------------------------------------------------------------------------- 19 /** 20 * 21 * @author (C) 2001, Vlad Roubtsov 22 */ 23 public 24 final class SourceFileAttribute_info extends Attribute_info 25 { 26 // public: ................................................................ 27 28 29 public int m_sourcefile_index; 30 31 32 public SourceFileAttribute_info (final int attribute_name_index) 33 { 34 super (attribute_name_index, 0); 35 } 36 37 38 public long length () 39 { 40 return 8; 41 } 42 43 public CONSTANT_Utf8_info getSourceFile (final ClassDef cls) 44 { 45 return (CONSTANT_Utf8_info) cls.getConstants ().get (m_sourcefile_index); 46 } 47 48 // Visitor: 49 50 public void accept (final IAttributeVisitor visitor, final Object ctx) 51 { 52 visitor.visit (this, ctx); 53 } 54 55 public String toString () 56 { 57 return "SourceFileAttribute_info: [attribute_name_index = " + m_name_index + ", attribute_length = " + m_attribute_length + ']'; 58 } 59 60 // Cloneable: 61 62 /** 63 * Performs a deep copy. 64 */ 65 public Object clone () 66 { 67 return super.clone (); 68 } 69 70 // IClassFormatOutput: 71 72 public void writeInClassFormat (final UDataOutputStream out) throws IOException 73 { 74 super.writeInClassFormat (out); 75 76 out.writeU2 (m_sourcefile_index); 77 } 78 79 // protected: ............................................................. 80 81 // package: ............................................................... 82 83 84 SourceFileAttribute_info (final int attribute_name_index, final long attribute_length, 85 final UDataInputStream bytes) 86 throws IOException 87 { 88 super (attribute_name_index, attribute_length); 89 90 m_sourcefile_index = bytes.readU2 (); 91 } 92 93 // private: ............................................................... 94 95 } // end of class 96 // ---------------------------------------------------------------------------- 97 98