]> gerrit.simantics Code Review - simantics/python.git/commitdiff
Some changes to Python.scl.
authortuorjr <tuorjr@e36c2e66-7d30-0410-bdb2-d9e1f5a6d952>
Wed, 28 Sep 2016 10:14:22 +0000 (10:14 +0000)
committerReino Ruusu <reino.ruusu@vtt.fi>
Tue, 3 Jan 2017 15:09:30 +0000 (17:09 +0200)
git-svn-id: https://www.simantics.org/svn/simantics-incubator/reino@1692 e36c2e66-7d30-0410-bdb2-d9e1f5a6d952

org.simantics.pythonlink/scl/Python.scl [moved from org.simantics.pythonlink/scl/Simantics/Python.scl with 63% similarity]
org.simantics.pythonlink/test/org/simantics/pythonlink/test/scripts/Python.sts

similarity index 63%
rename from org.simantics.pythonlink/scl/Simantics/Python.scl
rename to org.simantics.pythonlink/scl/Python.scl
index 375c5498d9312308547f52e0da21f80c382009b0..b1ca052ef2b026c3a3f00ebdcf05b2784e3962d8 100644 (file)
@@ -5,8 +5,8 @@ effect Python
     "org.simantics.pythonlink.PythonContext"\r
 \r
 class PythonCompatible a where\r
-    setPythonVariable :: String -> a -> <Python, Proc> ()\r
-    getPythonVariable :: String -> <Python, Proc> a\r
+    setPythonVariable :: String -> a -> <Python> ()\r
+    getPythonVariable :: String -> <Python> a\r
 \r
 importJava "org.simantics.pythonlink.NDArray" where\r
     data NDArray\r
@@ -39,42 +39,49 @@ importJava "org.simantics.pythonlink.NDArray" where
 instance Show NDArray where\r
     show = ndarrayToString\r
 \r
+instance Eq NDArray where\r
+    (==) = ndarrayEquals\r
+\r
 importJava "org.simantics.pythonlink.PythonContext" where\r
     data PythonContext\r
     \r
     @JavaName close\r
     closePythonContext :: PythonContext -> <Proc> ()\r
     \r
-    executePythonStatement :: String -> <Python, Proc> ()\r
+    executePythonStatement :: String -> <Python> ()\r
     \r
-    setPythonIntegerVariable :: String -> Integer -> <Python, Proc> ()\r
-    setPythonIntegerArrayVariable :: String -> Vector Integer -> <Python, Proc> ()\r
-    setPythonDoubleVariable :: String -> Double -> <Python, Proc> ()\r
-    setPythonDoubleArrayVariable :: String -> Vector Double -> <Python, Proc> ()\r
-    setPythonStringVariable :: String -> String -> <Python, Proc> ()\r
-    setPythonStringArrayVariable :: String -> Vector String -> <Python, Proc> ()\r
-    setPythonNDArrayVariable :: String -> NDArray -> <Python, Proc> ()\r
+    setPythonIntegerVariable :: String -> Integer -> <Python> ()\r
+    setPythonIntegerArrayVariable :: String -> Vector Integer -> <Python> ()\r
+    setPythonDoubleVariable :: String -> Double -> <Python> ()\r
+    setPythonDoubleArrayVariable :: String -> Vector Double -> <Python> ()\r
+    setPythonStringVariable :: String -> String -> <Python> ()\r
+    setPythonStringArrayVariable :: String -> Vector String -> <Python> ()\r
+    setPythonNDArrayVariable :: String -> NDArray -> <Python> ()\r
     \r
-    getPythonIntegerVariable :: String -> <Python, Proc> Integer\r
-    getPythonIntegerArrayVariable :: String -> <Python, Proc> Vector Integer\r
-    getPythonDoubleVariable :: String -> <Python, Proc> Double\r
-    getPythonDoubleArrayVariable :: String -> <Python, Proc> Vector Double\r
-    getPythonStringVariable :: String -> <Python, Proc> String\r
-    getPythonStringArrayVariable  :: String -> <Python, Proc> Vector String\r
-    getPythonNDArrayVariable :: String -> <Python, Proc> NDArray\r
+    getPythonIntegerVariable :: String -> <Python> Integer\r
+    getPythonIntegerArrayVariable :: String -> <Python> Vector Integer\r
+    getPythonDoubleVariable :: String -> <Python> Double\r
+    getPythonDoubleArrayVariable :: String -> <Python> Vector Double\r
+    getPythonStringVariable :: String -> <Python> String\r
+    getPythonStringArrayVariable  :: String -> <Python> Vector String\r
+    getPythonNDArrayVariable :: String -> <Python> NDArray\r
     \r
 importJava "org.simantics.pythonlink.Python" where\r
-    openPythonContext :: () -> <Proc> PythonContext\r
+    openPythonContext :: <Proc> PythonContext\r
     \r
-    runPythonF :: (() -> <Python, Proc> a) -> <Proc> a\r
-    runWithPythonContextF :: PythonContext -> (() -> <Python, Proc> a) -> <Proc> a\r
+    runPythonF :: (() -> <Python, e> a) -> <Proc, e> a\r
+    runWithPythonContextF :: PythonContext -> (() -> <Python, e> a) -> <Proc, e> a\r
 \r
-runPython :: (<Python, Proc> a) -> <Proc> a\r
+runPython :: (<Python, e> a) -> <Proc, e> a\r
 runPython v = runPythonF (\_ -> v)\r
 \r
-runWithPythonContext :: PythonContext -> (<Python, Proc> a) -> <Proc> a\r
+runWithPythonContext :: PythonContext -> (<Python, e> a) -> <Proc, e> a\r
 runWithPythonContext python v = runWithPythonContextF python (\_ -> v) \r
 \r
+instance (VecComp a, PythonCompatible (Vector a)) => PythonCompatible [a] where\r
+    setPythonVariable n v = setPythonVariable n (vector v)\r
+    getPythonVariable = vectorToList . getPythonVariable\r
+    \r
 instance PythonCompatible Double where\r
     setPythonVariable = setPythonDoubleVariable\r
     getPythonVariable = getPythonDoubleVariable\r
@@ -82,7 +89,7 @@ instance PythonCompatible Double where
 instance PythonCompatible (Vector Double) where\r
     setPythonVariable = setPythonDoubleArrayVariable\r
     getPythonVariable = getPythonDoubleArrayVariable\r
-    \r
+\r
 instance PythonCompatible Integer where\r
     setPythonVariable = setPythonIntegerVariable\r
     getPythonVariable = getPythonIntegerVariable\r
index 7464d73ceae34d742dd269620c2bd230ef6b67cd..50c0423ab0763d465e15c965070179d3773221b0 100644 (file)
@@ -1,5 +1,4 @@
-> import "Simantics/Python"\r
-> import "Vector"\r
+> import "Python"\r
 > \r
 > runPython do\r
 >     executePythonStatement "foo = 'bar'\nd = dir()"\r
@@ -46,3 +45,8 @@ vector [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0]
 >     executePythonStatement "bar = foo.cumsum(1)"\r
 >     getPythonNDArrayVariable "bar"\r
 ndarray(2x3) [[1.0, 3.0, 6.0], [4.0, 9.0, 15.0]]\r
+> runPython do\r
+>     setPythonVariable "foo" ([1.0, 2.0, 3.0, 4.0] :: [Double])\r
+>     executePythonStatement "foo.append(sum(foo))"\r
+>     getPythonVariable "foo" :: [Double]\r
+[1.0, 2.0, 3.0, 4.0, 10.0]\r