package org.simantics.scl.runtime.generation; import java.io.File; import java.io.FileOutputStream; import java.io.PrintStream; import java.net.URL; public class GenerateTuples { public static final String PACKAGE = "org.simantics.scl.runtime.tuple"; public static final int MAX_ARITY = 32; public static final String HEADER = "/**\n" + " * This code is generated in " + GenerateTuples.class.getName() + ".\n" + " * Do not edit manually!\n" + " */" ; private static void generateTupleN(PrintStream p, int n) { p.println(HEADER); p.println("package " + PACKAGE + ";"); p.println(); p.println("public class Tuple" + n + " implements Tuple {"); for(int i=0;i0) p.print(", "); p.print("Object c" + i); } p.println(") {"); for(int i=0;i 0) p.print(", "); p.print("c" + i); } p.println(" };"); p.println(" }"); p.println(); p.println(" @Override"); p.println(" public boolean equals(Object obj) {"); p.println(" if(obj == this)"); p.println(" return true;"); p.println(" if(obj == null || obj.getClass() != getClass())"); p.println(" return false;"); p.println(" Tuple"+n+" tuple = (Tuple"+n+")obj;"); for(int i=0;i 0) p.println(" b.append(',');"); p.println(" b.append(c" + i + ");"); } p.println(" b.append(')');"); p.println(" return b.toString();"); p.println(" }"); p.println("}"); } public static void main(String[] args) throws Exception { URL url = GenerateFunctions.class.getResource("."); File dir = new File(url.getPath()); while(!new File(dir, "src").exists()) dir = dir.getParentFile(); dir = new File(dir, "src"); dir = new File(dir, PACKAGE.replace('.', '/')); dir.mkdirs(); for(int n=2;n<=MAX_ARITY;++n) { PrintStream ps = new PrintStream(new FileOutputStream(new File(dir, "Tuple"+n+".java"))); generateTupleN(ps, n); } } }