--- /dev/null
+package org.simantics.scl.runtime.procedure;
+
+import java.util.UUID;
+
+import org.simantics.scl.runtime.function.Function;
+import org.simantics.scl.runtime.function.FunctionImpl1;
+import org.simantics.scl.runtime.tuple.Tuple0;
+
+
+public class Procedures {
+ public static boolean isInterrupted() {
+ return Thread.currentThread().isInterrupted();
+ }
+
+ public static void checkInterrupted() throws InterruptedException {
+ if(Thread.interrupted())
+ throw new InterruptedException();
+ }
+
+ public static String generateUID() {
+ return UUID.randomUUID().toString();
+ }
+
+ private static Function runProc = new FunctionImpl1() {
+ @Override
+ public Object apply(Object f) {
+ return ((Function)f).apply(Tuple0.INSTANCE);
+ }
+ };
+
+ public static Function runProc() {
+ return runProc;
+ }
+
+ public static Object catch_(Class<?> exceptionClass, Function expression, Function handler) throws Throwable {
+ try {
+ return expression.apply(Tuple0.INSTANCE);
+ } catch(Throwable e) {
+ if(exceptionClass.isAssignableFrom(e.getClass()))
+ return handler.apply(e);
+ else
+ throw e;
+ }
+ }
+}