diff options
author | Rich Hickey <richhickey@gmail.com> | 2006-04-04 16:25:52 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2006-04-04 16:25:52 +0000 |
commit | 167d6f3fb7a3961b1b7662e6343ff081e5a8f21f (patch) | |
tree | 73a01b08413b6ae28285ab7b244f58378b0d249f /src | |
parent | c8c1b1b1a92e943e4527ef0c3a1089922421f2e5 (diff) |
added fields, filter for public, :static
Diffstat (limited to 'src')
-rw-r--r-- | src/org/clojure/tools/TypeDump.java | 64 |
1 files changed, 52 insertions, 12 deletions
diff --git a/src/org/clojure/tools/TypeDump.java b/src/org/clojure/tools/TypeDump.java index 8d9db685..37c1a60a 100644 --- a/src/org/clojure/tools/TypeDump.java +++ b/src/org/clojure/tools/TypeDump.java @@ -39,6 +39,7 @@ static public void main(String jarName[]) TypeDump v = new TypeDump(System.out); ZipFile f = new ZipFile(jarName[0]); Enumeration en = f.entries(); + System.out.println('('); while(en.hasMoreElements()) { ZipEntry e = (ZipEntry) en.nextElement(); @@ -49,6 +50,7 @@ static public void main(String jarName[]) cr.accept(v, false); } } + System.out.println(')'); } catch(IOException e) { @@ -97,6 +99,30 @@ public void visitInnerClass(String name, String outerName, String innerName, int public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) { + if((access & Opcodes.ACC_PUBLIC) != 0) + { + p.println(); + p.print(" (:field (:name "); + p.print(name); + p.print(") (:type "); + p.print(internalName(Type.getType(desc))); + p.print(")"); + if((access & Opcodes.ACC_STATIC) != 0) + { + p.print(" (:static t)"); + if(value != null && (access & Opcodes.ACC_FINAL) != 0) + { + p.print(" (:const-value "); + if(value instanceof String) + p.print('"'); + p.print(value); + if(value instanceof String) + p.print('"'); + p.print(")"); + } + } + p.print(")"); + } return null; } @@ -109,20 +135,34 @@ String internalName(Type t) public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { - Type args[] = Type.getArgumentTypes(desc); - - p.println(); - p.print(" (:method (:name " + name + ") (:arity " + args.length + ") (:ret " + internalName(Type.getReturnType(desc)) + ")"); - p.println(); - p.println(" (:desc \"" + desc + "\")"); - p.print(" (:args"); - for(int i = 0; i < args.length; i++) + if((access & Opcodes.ACC_PUBLIC) != 0) { - Type arg = args[i]; - p.print(" " + internalName(arg)); + Type args[] = Type.getArgumentTypes(desc); + + p.println(); + p.print(" (:method (:name " + name + ") (:arity " + args.length + ") (:ret " + + internalName(Type.getReturnType(desc)) + ")"); + p.println(); + p.println(" (:desc \"" + desc + "\")"); + p.print(" (:args"); + for(int i = 0; i < args.length; i++) + { + Type arg = args[i]; + p.print(" " + internalName(arg)); + } + p.print(')'); + if((access & Opcodes.ACC_STATIC) != 0) + { + p.println(); + p.print(" (:static t)"); + } + if((access & Opcodes.ACC_VARARGS) != 0) + { + p.println(); + p.print(" (:varargs t)"); + } + p.print(')'); } - p.print(')'); - p.print(')'); return null; } |