From: Shigeru C. <ch...@us...> - 2004-05-05 17:17:51
|
User: chiba Date: 04/05/05 10:17:45 Modified: src/main/javassist/bytecode ClassFileWriter.java ClassFile.java AccessFlag.java Log: Now, the compiler accepts a method that accesses a private field declared in an enclosing class. Revision Changes Path 1.6 +1 -0 javassist/src/main/javassist/bytecode/ClassFileWriter.java Index: ClassFileWriter.java =================================================================== RCS file: /cvsroot/jboss/javassist/src/main/javassist/bytecode/ClassFileWriter.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- ClassFileWriter.java 8 Jan 2004 17:22:25 -0000 1.5 +++ ClassFileWriter.java 5 May 2004 17:17:45 -0000 1.6 @@ -45,6 +45,7 @@ int mod = AccessFlag.toModifier(cf.getAccessFlags() & ~AccessFlag.SYNCHRONIZED); + out.println("major: " + cf.major + ", minor: " + cf.minor); out.println(Modifier.toString(mod) + " class " + cf.getName() + " extends " + cf.getSuperclass()); 1.11 +7 -4 javassist/src/main/javassist/bytecode/ClassFile.java Index: ClassFile.java =================================================================== RCS file: /cvsroot/jboss/javassist/src/main/javassist/bytecode/ClassFile.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- ClassFile.java 19 Apr 2004 04:08:36 -0000 1.10 +++ ClassFile.java 5 May 2004 17:17:45 -0000 1.11 @@ -34,6 +34,7 @@ * @see javassist.CtClass#getClassFile() */ public final class ClassFile { + int major, minor; // version number ConstPool constPool; int thisClass; int accessFlags; @@ -64,6 +65,8 @@ */ public ClassFile(boolean isInterface, String classname, String superclass) { + major = 45; + minor = 3; // JDK 1.1 or later constPool = new ConstPool(classname); thisClass = constPool.getThisClassInfo(); if (isInterface) @@ -535,8 +538,8 @@ if (magic != 0xCAFEBABE) throw new IOException("non class file"); - int major = in.readUnsignedShort(); - int minor = in.readUnsignedShort(); + minor = in.readUnsignedShort(); + major = in.readUnsignedShort(); constPool = new ConstPool(in); accessFlags = in.readUnsignedShort(); thisClass = in.readUnsignedShort(); @@ -578,8 +581,8 @@ int i, n; out.writeInt(0xCAFEBABE); // magic - out.writeShort(3); // major version - out.writeShort(45); // minor version + out.writeShort(minor); // minor version + out.writeShort(major); // major version constPool.write(out); // constant pool out.writeShort(accessFlags); out.writeShort(thisClass); 1.5 +29 -0 javassist/src/main/javassist/bytecode/AccessFlag.java Index: AccessFlag.java =================================================================== RCS file: /cvsroot/jboss/javassist/src/main/javassist/bytecode/AccessFlag.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- AccessFlag.java 8 Jan 2004 17:22:25 -0000 1.4 +++ AccessFlag.java 5 May 2004 17:17:45 -0000 1.5 @@ -69,6 +69,35 @@ } /** + * Returns true if the access flags include the public bit. + */ + public static boolean isPublic(int accflags) { + return (accflags & PUBLIC) != 0; + } + + /** + * Returns true if the access flags include the protected bit. + */ + public static boolean isProtected(int accflags) { + return (accflags & PROTECTED) != 0; + } + + /** + * Returns true if the access flags include the private bit. + */ + public static boolean isPrivate(int accflags) { + return (accflags & PRIVATE) != 0; + } + + /** + * Returns true if the access flags include neither public, protected, + * or private. + */ + public static boolean isPackage(int accflags) { + return (accflags & (PROTECTED | PUBLIC | PRIVATE)) == 0; + } + + /** * Clears a specified bit in <code>accflags</code>. */ public static int clear(int accflags, int clearBit) { |