]> gerrit.simantics Code Review - simantics/python.git/blob - org.simantics.pythonlink/scl/Simantics/Python.scl
899f577eb2a3c921b8c4f1d9963f43e6dc08b320
[simantics/python.git] / org.simantics.pythonlink / scl / Simantics / Python.scl
1 import "Vector"\r
2 \r
3 effect Python\r
4     "Simantics/Python/Python"\r
5     "org.simantics.pythonlink.PythonContext"\r
6 \r
7 class PythonCompatible a where\r
8     setPythonVariable :: String -> a -> <Python, Proc> ()\r
9     getPythonVariable :: String -> <Python, Proc> a\r
10 \r
11 importJava "org.simantics.pythonlink.NDArray" where\r
12     data NDArray\r
13     \r
14     @JavaName "<init>"\r
15     ndarray :: Vector Double -> NDArray\r
16     @JavaName "<init>"\r
17     ndarrayM :: Integer -> Integer -> Vector Double -> NDArray\r
18     @JavaName "<init>"\r
19     ndarrayN :: Vector Integer -> Vector Double -> NDArray\r
20     \r
21     @JavaName size\r
22     ndarraySize :: NDArray -> Integer\r
23     @JavaName dims\r
24     ndarrayDims :: NDArray -> Vector Integer\r
25     @JavaName getValues\r
26     ndarrayValues :: NDArray -> Vector Double\r
27     @JavaName getValue\r
28     ndarrayElement :: NDArray -> Integer -> Double\r
29     @JavaName getValue\r
30     ndarrayElementM :: NDArray -> Integer -> Integer -> Double\r
31     @JavaName getValue\r
32     ndarrayElementN :: NDArray -> Vector Integer -> Double\r
33     \r
34     @JavaName toString\r
35     ndarrayToString :: NDArray -> String\r
36     @JavaName equals\r
37     ndarrayEquals :: NDArray -> NDArray -> Boolean\r
38 \r
39 instance Show NDArray where\r
40     show = ndarrayToString\r
41 \r
42 importJava "org.simantics.pythonlink.PythonContext" where\r
43     data PythonContext\r
44     \r
45     @JavaName close\r
46     closePythonContext :: PythonContext -> <Proc> ()\r
47     \r
48     executePythonStatement :: String -> <Python, Proc> Integer\r
49     \r
50     setPythonIntegerVariable :: String -> Integer -> <Python, Proc> ()\r
51     setPythonIntegerArrayVariable :: String -> Vector Integer -> <Python, Proc> ()\r
52     setPythonDoubleVariable :: String -> Double -> <Python, Proc> ()\r
53     setPythonDoubleArrayVariable :: String -> Vector Double -> <Python, Proc> ()\r
54     setPythonStringVariable :: String -> String -> <Python, Proc> ()\r
55     setPythonStringArrayVariable :: String -> Vector String -> <Python, Proc> ()\r
56     setPythonNDArrayVariable :: String -> NDArray -> <Python, Proc> ()\r
57     \r
58     getPythonIntegerVariable :: String -> <Python, Proc> Integer\r
59     getPythonIntegerArrayVariable :: String -> <Python, Proc> Vector Integer\r
60     getPythonDoubleVariable :: String -> <Python, Proc> Double\r
61     getPythonDoubleArrayVariable :: String -> <Python, Proc> Vector Double\r
62     getPythonStringVariable :: String -> <Python, Proc> String\r
63     getPythonStringArrayVariable  :: String -> <Python, Proc> Vector String\r
64     getPythonNDArrayVariable :: String -> <Python, Proc> NDArray\r
65     \r
66     runPythonF :: (() -> <Python, Proc> a) -> <Proc> a\r
67     runWithPythonContextF :: PythonContext -> (() -> <Python, Proc> a) -> <Proc> a\r
68 \r
69 importJava "org.simantics.pythonlink.Python" where\r
70     openPythonContext :: () -> <Proc> PythonContext\r
71     \r
72 runPython :: (<Python, Proc> a) -> <Proc> a\r
73 runPython v = runPythonF (\_ -> v)\r
74 \r
75 runWithPythonContext :: PythonContext -> (<Python, Proc> a) -> <Proc> a\r
76 runWithPythonContext python v = runWithPythonContextF python (\_ -> v) \r
77 \r
78 instance PythonCompatible Double where\r
79     setPythonVariable = setPythonDoubleVariable\r
80     getPythonVariable = getPythonDoubleVariable\r
81     \r
82 instance PythonCompatible (Vector Double) where\r
83     setPythonVariable = setPythonDoubleArrayVariable\r
84     getPythonVariable = getPythonDoubleArrayVariable\r
85     \r
86 instance PythonCompatible Integer where\r
87     setPythonVariable = setPythonIntegerVariable\r
88     getPythonVariable = getPythonIntegerVariable\r
89     \r
90 instance PythonCompatible (Vector Integer) where\r
91     setPythonVariable = setPythonIntegerArrayVariable\r
92     getPythonVariable = getPythonIntegerArrayVariable\r
93     \r
94 instance PythonCompatible String where\r
95     setPythonVariable = setPythonStringVariable\r
96     getPythonVariable = getPythonStringVariable\r
97     \r
98 instance PythonCompatible (Vector String) where\r
99     setPythonVariable = setPythonStringArrayVariable\r
100     getPythonVariable = getPythonStringArrayVariable\r
101     \r
102 instance PythonCompatible NDArray where\r
103     setPythonVariable = setPythonNDArrayVariable\r
104     getPythonVariable = getPythonNDArrayVariable\r