]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.runtime/src/org/simantics/scl/runtime/procedure/RandomEffect.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.runtime / src / org / simantics / scl / runtime / procedure / RandomEffect.java
1 package org.simantics.scl.runtime.procedure;\r
2 \r
3 import java.util.Random;\r
4 \r
5 import org.simantics.scl.runtime.SCLContext;\r
6 import org.simantics.scl.runtime.function.Function;\r
7 import org.simantics.scl.runtime.tuple.Tuple0;\r
8 \r
9 public class RandomEffect {\r
10     public static final String RANDOM = "random";\r
11     \r
12     public static Object withSeed(long seed, Function fun) {\r
13         SCLContext context = SCLContext.getCurrent();\r
14         Random oldRandom = (Random)context.put(RANDOM, new Random(seed));\r
15         try {\r
16             return fun.apply(Tuple0.INSTANCE);\r
17         } finally {\r
18             context.put(RANDOM, oldRandom);\r
19         }\r
20     }\r
21     \r
22     public static Object runRandom(Function fun) {\r
23         SCLContext context = SCLContext.getCurrent();\r
24         Random oldRandom = (Random)context.put(RANDOM, new Random());\r
25         try {\r
26             return fun.apply(Tuple0.INSTANCE);\r
27         } finally {\r
28             context.put(RANDOM, oldRandom);\r
29         }\r
30     }\r
31 }\r