Kajetan Johannes Hammerle 5 vuotta sitten
vanhempi
commit
05ecf99156

+ 5 - 1
src/me/hammerle/snuviscript/code/FunctionLoader.java

@@ -923,7 +923,11 @@ public class FunctionLoader
             sc.parser.termSafe(sc);
             return Void.TYPE;
         });
-                
+               
+        registerFunction("isdouble", (sc, in) ->                                           
+        {
+            return in[0].get(sc) instanceof Double;
+        });
         registerFunction("islong", (sc, in) ->                                           
         {
             Object o = in[0].get(sc);

+ 23 - 0
src/me/hammerle/snuviscript/code/Script.java

@@ -1,5 +1,8 @@
 package me.hammerle.snuviscript.code;
 
+import java.io.Closeable;
+import java.io.IOException;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -52,6 +55,8 @@ public final class Script
     private final Consumer<Script> onStart;
     private final Consumer<Script> onTerm;
     
+    private final List<AutoCloseable> closeables = new ArrayList<>();
+    
     public Script(SnuviParser parser, List<String> code, String simpleName, String name,  int id, 
             Consumer<Script> onStart, Consumer<Script> onTerm, boolean receiveEventBroadcast)
     {
@@ -287,5 +292,23 @@ public final class Script
         {
             onTerm.accept(this);
         }
+        closeables.forEach(c -> 
+        {
+            try
+            {
+                c.close();
+            }
+            catch(Exception ex)
+            {
+                System.out.println("Cannot close closeable in script '" + name + "'");
+                System.out.println(ex);
+                System.out.println(ex.getMessage());
+            }
+        });
+    }
+    
+    public void addCloseable(AutoCloseable closeable)
+    {
+        closeables.add(closeable);
     }
 }