[Dashg-commit] SF.net SVN: dashg:[11] trunk/dashg/src/com/mebigfatguy/dashg
Status: Pre-Alpha
Brought to you by:
dbrosius
|
From: <dbr...@us...> - 2008-10-25 07:05:33
|
Revision: 11
http://dashg.svn.sourceforge.net/dashg/?rev=11&view=rev
Author: dbrosius
Date: 2008-10-25 07:05:27 +0000 (Sat, 25 Oct 2008)
Log Message:
-----------
handle arrays and ctors
Modified Paths:
--------------
trunk/dashg/src/com/mebigfatguy/dashg/DashGClassAdapter.java
trunk/dashg/src/com/mebigfatguy/dashg/DashGTask.java
Modified: trunk/dashg/src/com/mebigfatguy/dashg/DashGClassAdapter.java
===================================================================
--- trunk/dashg/src/com/mebigfatguy/dashg/DashGClassAdapter.java 2008-10-25 06:43:53 UTC (rev 10)
+++ trunk/dashg/src/com/mebigfatguy/dashg/DashGClassAdapter.java 2008-10-25 07:05:27 UTC (rev 11)
@@ -29,13 +29,13 @@
public class DashGClassAdapter extends ClassAdapter {
- private final String fullPackageName;
+ private final String className;
private final Map<String, Map<Integer, Integer>> methodOffsets;
- private final Pattern parmsPattern = Pattern.compile("([IJFDBCZS]|L[^;]*;)");
+ private final Pattern parmsPattern = Pattern.compile("(\\[*)([IJFDBCZS]|L[^;]*;)");
- public DashGClassAdapter(ClassVisitor visitor, String fileName, String packageName, Map<String, Map<Integer, Integer>> offsets) {
+ public DashGClassAdapter(ClassVisitor visitor, String fileName, String clsName, Map<String, Map<Integer, Integer>> offsets) {
super(visitor);
- fullPackageName = packageName;
+ className = clsName;
methodOffsets = offsets;
super.visitSource(fileName, null);
}
@@ -63,7 +63,7 @@
StringBuilder sb = new StringBuilder(name.length() + parm.length());
if ("<init>".equals(name)) {
- name = fullPackageName;
+ name = className;
}
sb.append(name);
sb.append("(");
@@ -74,7 +74,8 @@
sb.append(comma);
comma = ", ";
- String type = m.group(1);
+ String arraySpec = m.group(1);
+ String type = m.group(2);
if (type.startsWith("L")) {
type = type.substring(1, type.length() - 1);
type = type.replace('/', '.');
@@ -96,6 +97,9 @@
type = "short";
}
sb.append(type);
+ for (int i = 0; i < arraySpec.length(); i++) {
+ sb.append("[]");
+ }
}
sb.append(")");
Modified: trunk/dashg/src/com/mebigfatguy/dashg/DashGTask.java
===================================================================
--- trunk/dashg/src/com/mebigfatguy/dashg/DashGTask.java 2008-10-25 06:43:53 UTC (rev 10)
+++ trunk/dashg/src/com/mebigfatguy/dashg/DashGTask.java 2008-10-25 07:05:27 UTC (rev 11)
@@ -106,7 +106,7 @@
parseJavaPFile(p.getInputStream(), destSrcFile, packageName, fileBaseName);
p.waitFor();
- buildNewClass(new File(baseDirectory, fName), dstClsFile, fileBaseName + ".java", packageName + "." + fileBaseName);
+ buildNewClass(new File(baseDirectory, fName), dstClsFile, fileBaseName + ".java", packageName + "." + fileBaseName, fileBaseName);
} catch (Exception ioe) {
throw new BuildException("Failed generating output files for file " + fName, ioe);
}
@@ -174,7 +174,7 @@
}
}
- public void buildNewClass(File inputClass, File outputClass, String sourceName, String packageName) throws IOException {
+ public void buildNewClass(File inputClass, File outputClass, String sourceName, String packageName, String className) throws IOException {
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
@@ -182,7 +182,7 @@
bis = new BufferedInputStream(new FileInputStream(inputClass));
ClassReader cr = new ClassReader(bis);
ClassWriter cw = new ClassWriter(cr, ClassWriter.COMPUTE_MAXS);
- ClassAdapter ca = new DashGClassAdapter(cw, sourceName, packageName, methodOffsets);
+ ClassAdapter ca = new DashGClassAdapter(cw, sourceName, className, methodOffsets);
cr.accept(ca, 0);
byte[] classData = cw.toByteArray();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|