+package org.simantics.scl.compiler.internal.codegen.utils;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
+import org.cojen.classfile.TypeDesc;
+import org.simantics.scl.runtime.tuple.Tuple0;
+
+public class Constants {
+
+ // Parameters
+ public static final int MAX_FUNCTION_PARAMETER_COUNT = 8;
+ public static final int MAX_TUPLE_LENGTH = 32;
+ public static final int MAX_LIST_LITERAL_LENGTH = 32;
+
+ public static final String ROOT_PACKAGE = "org/simantics/scl/runtime";
+ public static final String FUNCTION_PACKAGE = ROOT_PACKAGE + "/function";
+ public static final String TUPLE_PACKAGE = ROOT_PACKAGE + "/tuple";
+
+ // Constants
+ public static final TypeDesc LIST = TypeDesc.forClass(List.class);
+ public static final TypeDesc COLLECTION = TypeDesc.forClass(Collection.class);
+ public static final TypeDesc OBJECT_ARRAY = TypeDesc.forClass(Object[].class);
+ public static final TypeDesc CLASS = TypeDesc.forClass(Class.class);
+
+ public static final TypeDesc FUNCTION = TypeDesc.forClass(FUNCTION_PACKAGE + ".Function");
+ public static final TypeDesc[] FUNCTION_IMPL = new TypeDesc[MAX_FUNCTION_PARAMETER_COUNT+1];
+ public static final TypeDesc FUNCTION_N_IMPL;
+ public static final TypeDesc[][] OBJECTS =
+ new TypeDesc[MAX_FUNCTION_PARAMETER_COUNT+1][];
+
+ public static final String MathBuiltinFunctions_class =
+ ROOT_PACKAGE + ".MathBuiltinFunctions";
+ public static final TypeDesc[] EMPTY_TYPEDESC_ARRAY = new TypeDesc[0];
+
+ public static final TypeDesc TUPLE0 = TypeDesc.forClass(Tuple0.class);
+ public static final TypeDesc[] TUPLE = new TypeDesc[MAX_TUPLE_LENGTH+1];
+
+ static {
+ for(int count=0;count<=MAX_FUNCTION_PARAMETER_COUNT;++count) {
+ OBJECTS[count] = new TypeDesc[count];
+ Arrays.fill(OBJECTS[count], TypeDesc.OBJECT);
+ }
+ for(int i=1;i<=MAX_FUNCTION_PARAMETER_COUNT;++i) {
+ FUNCTION_IMPL[i] = TypeDesc.forClass(FUNCTION_PACKAGE + "/FunctionImpl" + i);
+ }
+ FUNCTION_N_IMPL = TypeDesc.forClass(FUNCTION_PACKAGE + ".FunctionImplN");
+ TUPLE[0] = TypeDesc.VOID;
+ for(int i=2;i<=MAX_TUPLE_LENGTH;++i)
+ TUPLE[i] = TypeDesc.forClass(TUPLE_PACKAGE + ".Tuple" + i);
+ }
+
+}