4 "Simantics/Python/Python"
\r
5 "org.simantics.pythonlink.PythonContext"
\r
7 class PythonCompatible a where
\r
8 setPythonVariable :: String -> a -> <Python> ()
\r
9 getPythonVariable :: String -> <Python> a
\r
11 importJava "org.simantics.pythonlink.NDArray" where
\r
15 ndarray :: Vector Double -> NDArray
\r
17 ndarrayM :: Integer -> Integer -> Vector Double -> NDArray
\r
19 ndarrayN :: Vector Integer -> Vector Double -> NDArray
\r
22 ndarraySize :: NDArray -> Integer
\r
24 ndarrayDims :: NDArray -> Vector Integer
\r
26 ndarrayValues :: NDArray -> Vector Double
\r
28 ndarrayElement :: NDArray -> Integer -> Double
\r
30 ndarrayElementM :: NDArray -> Integer -> Integer -> Double
\r
32 ndarrayElementN :: NDArray -> Vector Integer -> Double
\r
35 ndarrayToString :: NDArray -> String
\r
37 ndarrayEquals :: NDArray -> NDArray -> Boolean
\r
39 instance Show NDArray where
\r
40 show = ndarrayToString
\r
42 instance Eq NDArray where
\r
43 (==) = ndarrayEquals
\r
45 importJava "org.simantics.pythonlink.PythonContext" where
\r
49 closePythonContext :: PythonContext -> <Proc> ()
\r
51 executePythonStatement :: String -> <Python> ()
\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
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
69 importJava "org.simantics.pythonlink.Python" where
\r
70 openPythonContext :: <Proc> PythonContext
\r
72 runPythonF :: (() -> <Python, e> a) -> <Proc, e> a
\r
73 runWithPythonContextF :: PythonContext -> (() -> <Python, e> a) -> <Proc, e> a
\r
75 runPython :: (<Python, e> a) -> <Proc, e> a
\r
76 runPython v = runPythonF (\_ -> v)
\r
78 runWithPythonContext :: PythonContext -> (<Python, e> a) -> <Proc, e> a
\r
79 runWithPythonContext python v = runWithPythonContextF python (\_ -> v)
\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
85 instance PythonCompatible Double where
\r
86 setPythonVariable = setPythonDoubleVariable
\r
87 getPythonVariable = getPythonDoubleVariable
\r
89 instance PythonCompatible (Vector Double) where
\r
90 setPythonVariable = setPythonDoubleArrayVariable
\r
91 getPythonVariable = getPythonDoubleArrayVariable
\r
93 instance PythonCompatible Integer where
\r
94 setPythonVariable = setPythonIntegerVariable
\r
95 getPythonVariable = getPythonIntegerVariable
\r
97 instance PythonCompatible (Vector Integer) where
\r
98 setPythonVariable = setPythonIntegerArrayVariable
\r
99 getPythonVariable = getPythonIntegerArrayVariable
\r
101 instance PythonCompatible String where
\r
102 setPythonVariable = setPythonStringVariable
\r
103 getPythonVariable = getPythonStringVariable
\r
105 instance PythonCompatible (Vector String) where
\r
106 setPythonVariable = setPythonStringArrayVariable
\r
107 getPythonVariable = getPythonStringArrayVariable
\r
109 instance PythonCompatible NDArray where
\r
110 setPythonVariable = setPythonNDArrayVariable
\r
111 getPythonVariable = getPythonNDArrayVariable
\r