// Only handles rectangle multi dim arrays now public static void acceptInit(JMethodDeclaration init, Hashtable constants) { JBlock body = init.getBody(); JFormalParameter[] params = init.getParameters(); for (int i = params.length - 1; i >= 0; i--) { LinkedList<JIntLiteral> dims = new LinkedList<JIntLiteral>(); Object val = constants.get(params[i]); Object temp = val; while (temp instanceof Object[]) { dims.add(new JIntLiteral(((Object[]) temp).length)); temp = ((Object[]) temp)[0]; } if (dims.size() > 0) { dumpAssign(val, body, new JLocalVariableExpression(null, params[i])); body.addStatementFirst( new JExpressionStatement( null, new JAssignmentExpression( null, new JLocalVariableExpression(null, params[i]), new JNewArrayExpression( null, params[i].getType(), dims.toArray(new JExpression[0]), null)), null)); } } }