1 package org.simantics.scl.compiler.elaboration.fundeps;
\r
3 import org.simantics.scl.compiler.common.exceptions.InternalCompilerError;
\r
4 import org.simantics.scl.compiler.internal.parsing.declarations.FundepAst;
\r
7 public class Fundep {
\r
8 public static final Fundep[] EMPTY_ARRAY = new Fundep[0];
\r
9 public final int[] from;
\r
10 public final int[] to;
\r
12 public Fundep(int[] from, int[] to) {
\r
17 public Fundep(int[] from, int to) {
\r
18 this(from, new int[] {to});
\r
21 private static int mapParameterName(String[] parameterNames, String name) {
\r
22 for(int i=0;i<parameterNames.length;++i)
\r
23 if(parameterNames[i].equals(name))
\r
25 throw new InternalCompilerError("Fundep.mapParameterName error handling missing.");
\r
28 private static int[] mapParameterNames(String[] parameterNames, String[] names) {
\r
29 int[] result = new int[names.length];
\r
30 for(int i=0;i<names.length;++i)
\r
31 result[i] = mapParameterName(parameterNames, names[i]);
\r
35 public static Fundep[] mapFundeps(String[] parameterNames, FundepAst[] fundeps) {
\r
36 Fundep[] result = new Fundep[fundeps.length];
\r
37 for(int i=0;i<fundeps.length;++i)
\r
38 result[i] = new Fundep(
\r
39 mapParameterNames(parameterNames, fundeps[i].from),
\r
40 mapParameterName(parameterNames, fundeps[i].to));
\r