]> gerrit.simantics Code Review - simantics/python.git/blob - org.simantics.pythonlink/scl/Python.scl
Some changes to Python.scl.
[simantics/python.git] / org.simantics.pythonlink / scl / 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> ()\r
9     getPythonVariable :: String -> <Python> 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 instance Eq NDArray where\r
43     (==) = ndarrayEquals\r
44 \r
45 importJava "org.simantics.pythonlink.PythonContext" where\r
46     data PythonContext\r
47     \r
48     @JavaName close\r
49     closePythonContext :: PythonContext -> <Proc> ()\r
50     \r
51     executePythonStatement :: String -> <Python> ()\r
52     \r
53     setPythonIntegerVariable :: String -> Integer -> <Python> ()\r
54     setPythonIntegerArrayVariable :: String -> Vector Integer -> <Python> ()\r
55     setPythonDoubleVariable :: String -> Double -> <Python> ()\r
56     setPythonDoubleArrayVariable :: String -> Vector Double -> <Python> ()\r
57     setPythonStringVariable :: String -> String -> <Python> ()\r
58     setPythonStringArrayVariable :: String -> Vector String -> <Python> ()\r
59     setPythonNDArrayVariable :: String -> NDArray -> <Python> ()\r
60     \r
61     getPythonIntegerVariable :: String -> <Python> Integer\r
62     getPythonIntegerArrayVariable :: String -> <Python> Vector Integer\r
63     getPythonDoubleVariable :: String -> <Python> Double\r
64     getPythonDoubleArrayVariable :: String -> <Python> Vector Double\r
65     getPythonStringVariable :: String -> <Python> String\r
66     getPythonStringArrayVariable  :: String -> <Python> Vector String\r
67     getPythonNDArrayVariable :: String -> <Python> NDArray\r
68     \r
69 importJava "org.simantics.pythonlink.Python" where\r
70     openPythonContext :: <Proc> PythonContext\r
71     \r
72     runPythonF :: (() -> <Python, e> a) -> <Proc, e> a\r
73     runWithPythonContextF :: PythonContext -> (() -> <Python, e> a) -> <Proc, e> a\r
74 \r
75 runPython :: (<Python, e> a) -> <Proc, e> a\r
76 runPython v = runPythonF (\_ -> v)\r
77 \r
78 runWithPythonContext :: PythonContext -> (<Python, e> a) -> <Proc, e> a\r
79 runWithPythonContext python v = runWithPythonContextF python (\_ -> v) \r
80 \r
81 instance (VecComp a, PythonCompatible (Vector a)) => PythonCompatible [a] where\r
82     setPythonVariable n v = setPythonVariable n (vector v)\r
83     getPythonVariable = vectorToList . getPythonVariable\r
84     \r
85 instance PythonCompatible Double where\r
86     setPythonVariable = setPythonDoubleVariable\r
87     getPythonVariable = getPythonDoubleVariable\r
88     \r
89 instance PythonCompatible (Vector Double) where\r
90     setPythonVariable = setPythonDoubleArrayVariable\r
91     getPythonVariable = getPythonDoubleArrayVariable\r
92 \r
93 instance PythonCompatible Integer where\r
94     setPythonVariable = setPythonIntegerVariable\r
95     getPythonVariable = getPythonIntegerVariable\r
96     \r
97 instance PythonCompatible (Vector Integer) where\r
98     setPythonVariable = setPythonIntegerArrayVariable\r
99     getPythonVariable = getPythonIntegerArrayVariable\r
100     \r
101 instance PythonCompatible String where\r
102     setPythonVariable = setPythonStringVariable\r
103     getPythonVariable = getPythonStringVariable\r
104     \r
105 instance PythonCompatible (Vector String) where\r
106     setPythonVariable = setPythonStringArrayVariable\r
107     getPythonVariable = getPythonStringArrayVariable\r
108     \r
109 instance PythonCompatible NDArray where\r
110     setPythonVariable = setPythonNDArrayVariable\r
111     getPythonVariable = getPythonNDArrayVariable\r