Milán Major

netscape-revival

1 branch
Code

sun-java/classsrc/netscape/tools/ClassFileParser/MemberDef.java

// Copyright (c) 1995 Netscape Communications Corporation. All rights reserved. 

package netscape.tools.ClassFileParser;

import netscape.tools.ClassFileParser.*;
import java.io.PrintStream;

public class MemberDef {
    public short	flags;
    public String	name;
    public String	signature;
    public AttrDef[]	attributes;
    public ClassDef	clazz;	// back pointer

    public boolean hasAccess(int accessMask) {
	return (flags & accessMask) == accessMask;
    }

    public void describe(PrintStream out) {
	out.print("/*** ");
	if (hasAccess(ClassFileParser.ACC_PUBLIC))
	    out.print("public ");
	if (hasAccess(ClassFileParser.ACC_PROTECTED))
	    out.print("protected ");
	if (hasAccess(ClassFileParser.ACC_PRIVATE))
	    out.print("private ");
	if (hasAccess(ClassFileParser.ACC_STATIC))
	    out.print("static ");
	if (hasAccess(ClassFileParser.ACC_FINAL))
	    out.print("final ");
	if (hasAccess(ClassFileParser.ACC_NATIVE))
	    out.print("native ");
	out.print(name + " " + signature);
	out.println(" ***/");
    }

    public static final byte TYPE_BOOLEAN	= 0;
    public static final byte TYPE_BYTE		= 1;
    public static final byte TYPE_CHAR		= 2;
    public static final byte TYPE_SHORT		= 3;
    public static final byte TYPE_INT		= 4;
    public static final byte TYPE_LONG		= 5;
    public static final byte TYPE_FLOAT		= 6;
    public static final byte TYPE_DOUBLE	= 7;
    public static final byte TYPE_VOID		= 8;
    public static final byte TYPE_CLASS		= 9;
    public static final byte TYPE_ARRAY		= 10;
    public static final byte TYPE_OTHER		= 11;
    
    public static byte getSigType(char sigChar) {
        switch (sigChar) {
	  case ClassFileParser.SIG_BOOLEAN:	return TYPE_BOOLEAN;
	  case ClassFileParser.SIG_BYTE:	return TYPE_BYTE;
	  case ClassFileParser.SIG_CHAR:	return TYPE_CHAR;
	  case ClassFileParser.SIG_SHORT:	return TYPE_SHORT;
	  case ClassFileParser.SIG_INT:		return TYPE_INT;
	  case ClassFileParser.SIG_LONG:	return TYPE_LONG;
	  case ClassFileParser.SIG_FLOAT:	return TYPE_FLOAT;
	  case ClassFileParser.SIG_DOUBLE:	return TYPE_DOUBLE;
	  case ClassFileParser.SIG_VOID:	return TYPE_VOID;
	  case ClassFileParser.SIG_CLASS:	return TYPE_CLASS;
	  case ClassFileParser.SIG_ARRAY:	return TYPE_ARRAY;
	  default:				return TYPE_OTHER;
	}
    }
}