summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2006-04-04 16:25:52 +0000
committerRich Hickey <richhickey@gmail.com>2006-04-04 16:25:52 +0000
commit167d6f3fb7a3961b1b7662e6343ff081e5a8f21f (patch)
tree73a01b08413b6ae28285ab7b244f58378b0d249f /src
parentc8c1b1b1a92e943e4527ef0c3a1089922421f2e5 (diff)
added fields, filter for public, :static
Diffstat (limited to 'src')
-rw-r--r--src/org/clojure/tools/TypeDump.java64
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;
}