--- /dev/null
+package org.simantics.scl.compiler.elaboration.chr.relations;\r
+\r
+import org.simantics.scl.compiler.elaboration.chr.CHRRelation;\r
+import org.simantics.scl.compiler.types.TVar;\r
+import org.simantics.scl.compiler.types.Type;\r
+import org.simantics.scl.compiler.types.Types;\r
+\r
+public enum SpecialCHRRelation implements CHRRelation { \r
+ EQUALS(A, A),\r
+ MEMBER(A, Types.list(A)),\r
+ CHECK(Types.BOOLEAN),\r
+ EXECUTE(Types.UNIT);\r
+ \r
+ private final TVar[] typeVariables;\r
+ private final Type[] parameterTypes;\r
+ \r
+ private SpecialCHRRelation(Type ... parameterTypes) {\r
+ this.typeVariables = Types.freeVarsArray(parameterTypes);\r
+ this.parameterTypes = parameterTypes;\r
+ }\r
+\r
+ @Override\r
+ public TVar[] getTypeVariables() {\r
+ return typeVariables;\r
+ }\r
+ \r
+ @Override\r
+ public Type[] getParameterTypes() {\r
+ return parameterTypes;\r
+ }\r
+}\r