- /*public static void main(String[] args) throws Exception {
- Type.Object me = new Type.Object("Test");
- ClassGen cg = new ClassGen("Test","java.lang.Object",ACC_PUBLIC|ACC_SUPER|ACC_FINAL);
- FieldGen fg = cg.addField("foo",Type.INT,ACC_PUBLIC|ACC_STATIC);
-
- MethodGen mg = cg.addMethod("main",Type.VOID,new Type[]{Type.arrayType(Type.STRING)},ACC_STATIC|ACC_PUBLIC);
- mg.setMaxLocals(1);
- mg.addPushConst(0);
- //mg.add(ISTORE_0);
- mg.add(PUTSTATIC, fieldRef(me,"foo",Type.INT));
- int top = mg.size();
- mg.add(GETSTATIC,cg.fieldRef(new Type.Object("java.lang.System"),"out",new Type.Object("java.io.PrintStream")));
- //mg.add(ILOAD_0);
- mg.add(GETSTATIC,cg.fieldRef(me,"foo",Type.INT));
- mg.add(INVOKEVIRTUAL,cg.methodRef(new Type.Object("java.io.PrintStream"),"println",Type.VOID, new Type[]{Type.INT}));
- //mg.add(IINC,new int[]{0,1});
- //mg.add(ILOAD_0);
- mg.add(GETSTATIC,cg.fieldRef(me,"foo",Type.INT));
- mg.addPushConst(1);
- mg.add(IADD);
- mg.add(DUP);
- mg.add(PUTSTATIC,cg.fieldRef(me,"foo",Type.INT));
- mg.addPushConst(10);
- mg.add(IF_ICMPLT,top);
- mg.add(RETURN);
- cg.dump("Test.class");
- }*/
+ public static void main(String[] args) throws Exception {
+ if (args.length==1) {
+ if (args[0].endsWith(".class")) {
+ System.out.println(new ClassGen(new DataInputStream(new FileInputStream(args[0]))));
+ } else {
+ InputStream is = Class.forName(args[0]).getClassLoader().getResourceAsStream(args[0].replace('.', '/')+".class");
+ System.out.println(new ClassGen(new DataInputStream(is)));
+ }
+ } else {
+ /*
+ Type.Object me = new Type.Object("Test");
+ ClassGen cg = new ClassGen("Test", "java.lang.Object", ACC_PUBLIC|ACC_SUPER|ACC_FINAL);
+ FieldGen fg = cg.addField("foo", Type.INT, ACC_PUBLIC|ACC_STATIC);
+
+ MethodGen mg = cg.addMethod("main", Type.VOID, new Type[]{Type.arrayType(Type.STRING)}, ACC_STATIC|ACC_PUBLIC);
+ mg.setMaxLocals(1);
+ mg.addPushConst(0);
+ //mg.add(ISTORE_0);
+ mg.add(PUTSTATIC, fieldRef(me, "foo", Type.INT));
+ int top = mg.size();
+ mg.add(GETSTATIC, cg.fieldRef(new Type.Object("java.lang.System"), "out", new Type.Object("java.io.PrintStream")));
+ //mg.add(ILOAD_0);
+ mg.add(GETSTATIC, cg.fieldRef(me, "foo", Type.INT));
+ mg.add(INVOKEVIRTUAL, cg.methodRef(new Type.Object("java.io.PrintStream"), "println",
+ Type.VOID, new Type[]{Type.INT}));
+ //mg.add(IINC, new int[]{0, 1});
+ //mg.add(ILOAD_0);
+ mg.add(GETSTATIC, cg.fieldRef(me, "foo", Type.INT));
+ mg.addPushConst(1);
+ mg.add(IADD);
+ mg.add(DUP);
+ mg.add(PUTSTATIC, cg.fieldRef(me, "foo", Type.INT));
+ mg.addPushConst(10);
+ mg.add(IF_ICMPLT, top);
+ mg.add(RETURN);
+ cg.dump("Test.class");
+ */
+ }
+ }