Changeset View
Changeset View
Standalone View
Standalone View
src/backends/julia/juliaextensions.h
Show All 19 Lines | |||||
20 | #pragma once | 20 | #pragma once | ||
21 | 21 | | |||
22 | #include <extension.h> | 22 | #include <extension.h> | ||
23 | 23 | | |||
24 | #define JULIA_EXT_CDTOR_DECL(name) Julia##name##Extension(QObject *parent); \ | 24 | #define JULIA_EXT_CDTOR_DECL(name) Julia##name##Extension(QObject *parent); \ | ||
25 | ~Julia##name##Extension(); | 25 | ~Julia##name##Extension(); | ||
26 | 26 | | |||
27 | 27 | | |||
28 | /** | ||||
29 | * Implementation of linear algebra wizards for Julia | ||||
30 | */ | ||||
28 | class JuliaLinearAlgebraExtension: public Cantor::LinearAlgebraExtension | 31 | class JuliaLinearAlgebraExtension: public Cantor::LinearAlgebraExtension | ||
29 | { | 32 | { | ||
30 | public: | 33 | public: | ||
31 | JULIA_EXT_CDTOR_DECL(LinearAlgebra) | 34 | JULIA_EXT_CDTOR_DECL(LinearAlgebra) | ||
32 | 35 | | |||
36 | /** | ||||
37 | * @see Cantor::LinearAlgebraExtension::createVector | ||||
38 | */ | ||||
33 | virtual QString createVector( | 39 | virtual QString createVector( | ||
34 | const QStringList &entries, | 40 | const QStringList &entries, | ||
35 | VectorType type) override; | 41 | VectorType type) override; | ||
36 | 42 | | |||
43 | /** | ||||
44 | * @see Cantor::LinearAlgebraExtension::nullVector | ||||
45 | */ | ||||
37 | virtual QString nullVector(int size, VectorType type) override; | 46 | virtual QString nullVector(int size, VectorType type) override; | ||
38 | 47 | | |||
48 | /** | ||||
49 | * @see Cantor::LinearAlgebraExtension::createMatrix | ||||
50 | */ | ||||
39 | virtual QString createMatrix( | 51 | virtual QString createMatrix( | ||
40 | const Cantor::LinearAlgebraExtension::Matrix &matrix) override; | 52 | const Cantor::LinearAlgebraExtension::Matrix &matrix) override; | ||
41 | 53 | | |||
54 | /** | ||||
55 | * @see Cantor::LinearAlgebraExtension::identityMatrix | ||||
56 | */ | ||||
42 | virtual QString identityMatrix(int size) override; | 57 | virtual QString identityMatrix(int size) override; | ||
58 | | ||||
59 | /** | ||||
60 | * @see Cantor::LinearAlgebraExtension::nullMatrix | ||||
61 | */ | ||||
43 | virtual QString nullMatrix(int rows, int columns) override; | 62 | virtual QString nullMatrix(int rows, int columns) override; | ||
63 | | ||||
64 | /** | ||||
65 | * @see Cantor::LinearAlgebraExtension::rank | ||||
66 | */ | ||||
44 | virtual QString rank(const QString &matrix) override; | 67 | virtual QString rank(const QString &matrix) override; | ||
68 | | ||||
69 | /** | ||||
70 | * @see Cantor::LinearAlgebraExtension::invertMatrix | ||||
71 | */ | ||||
45 | virtual QString invertMatrix(const QString &matrix) override; | 72 | virtual QString invertMatrix(const QString &matrix) override; | ||
73 | | ||||
74 | /** | ||||
75 | * @see Cantor::LinearAlgebraExtension::charPoly | ||||
76 | */ | ||||
46 | virtual QString charPoly(const QString &matrix) override; | 77 | virtual QString charPoly(const QString &matrix) override; | ||
78 | | ||||
79 | /** | ||||
80 | * @see Cantor::LinearAlgebraExtension::eigenVectors | ||||
81 | */ | ||||
47 | virtual QString eigenVectors(const QString &matrix) override; | 82 | virtual QString eigenVectors(const QString &matrix) override; | ||
83 | | ||||
84 | /** | ||||
85 | * @see Cantor::LinearAlgebraExtension::eigenValues | ||||
86 | */ | ||||
48 | virtual QString eigenValues(const QString &matrix) override; | 87 | virtual QString eigenValues(const QString &matrix) override; | ||
49 | }; | 88 | }; | ||
50 | 89 | | |||
90 | /** | ||||
91 | * Implementation of packaging wizards for Julia | ||||
92 | */ | ||||
51 | class JuliaPackagingExtension: public Cantor::PackagingExtension | 93 | class JuliaPackagingExtension: public Cantor::PackagingExtension | ||
52 | { | 94 | { | ||
53 | public: | 95 | public: | ||
54 | JULIA_EXT_CDTOR_DECL(Packaging) | 96 | JULIA_EXT_CDTOR_DECL(Packaging) | ||
55 | 97 | | |||
98 | /** | ||||
99 | * @see Cantor::PackagingExtension::importPackage | ||||
100 | */ | ||||
56 | virtual QString importPackage(const QString &module) override; | 101 | virtual QString importPackage(const QString &module) override; | ||
57 | }; | 102 | }; | ||
58 | 103 | | |||
104 | /** | ||||
105 | * Implementation of plot wizards for Julia | ||||
106 | * | ||||
107 | * Plotting is based on GR package | ||||
108 | */ | ||||
59 | class JuliaPlotExtension: public Cantor::PlotExtension | 109 | class JuliaPlotExtension: public Cantor::PlotExtension | ||
60 | { | 110 | { | ||
61 | public: | 111 | public: | ||
62 | JULIA_EXT_CDTOR_DECL(Plot) | 112 | JULIA_EXT_CDTOR_DECL(Plot) | ||
63 | 113 | | |||
114 | /** | ||||
115 | * @see Cantor::PlotExtension::plotFunction2d | ||||
116 | */ | ||||
64 | virtual QString plotFunction2d( | 117 | virtual QString plotFunction2d( | ||
65 | const QString &function, | 118 | const QString &function, | ||
66 | const QString &variable, | 119 | const QString &variable, | ||
67 | const QString &left, | 120 | const QString &left, | ||
68 | const QString &right) override; | 121 | const QString &right) override; | ||
69 | 122 | | |||
123 | /** | ||||
124 | * @see Cantor::PlotExtension::plotFunction3d | ||||
125 | */ | ||||
70 | virtual QString plotFunction3d( | 126 | virtual QString plotFunction3d( | ||
71 | const QString &function, | 127 | const QString &function, | ||
72 | VariableParameter var1, | 128 | VariableParameter var1, | ||
73 | VariableParameter var2) override; | 129 | VariableParameter var2) override; | ||
74 | }; | 130 | }; | ||
75 | 131 | | |||
132 | /** | ||||
133 | * Implementation of script wizard for Julia | ||||
134 | */ | ||||
76 | class JuliaScriptExtension: public Cantor::ScriptExtension | 135 | class JuliaScriptExtension: public Cantor::ScriptExtension | ||
77 | { | 136 | { | ||
78 | public: | 137 | public: | ||
79 | JULIA_EXT_CDTOR_DECL(Script) | 138 | JULIA_EXT_CDTOR_DECL(Script) | ||
80 | 139 | | |||
140 | /** | ||||
141 | * @see Cantor::ScriptExtension::scriptFileFilter | ||||
142 | */ | ||||
81 | virtual QString scriptFileFilter() override; | 143 | virtual QString scriptFileFilter() override; | ||
144 | | ||||
145 | /** | ||||
146 | * @see Cantor::ScriptExtension::highlightingMode | ||||
147 | */ | ||||
82 | virtual QString highlightingMode() override; | 148 | virtual QString highlightingMode() override; | ||
149 | | ||||
150 | /** | ||||
151 | * @see Cantor::ScriptExtension::runExternalScript | ||||
152 | */ | ||||
83 | virtual QString runExternalScript(const QString &path) override; | 153 | virtual QString runExternalScript(const QString &path) override; | ||
84 | }; | 154 | }; | ||
85 | 155 | | |||
156 | /** | ||||
157 | * Julia variable management extension | ||||
158 | * | ||||
159 | * Based on JLD package for loading/saving variables | ||||
160 | */ | ||||
86 | class JuliaVariableManagementExtension: public Cantor::VariableManagementExtension | 161 | class JuliaVariableManagementExtension: public Cantor::VariableManagementExtension | ||
87 | { | 162 | { | ||
88 | public: | 163 | public: | ||
89 | JULIA_EXT_CDTOR_DECL(VariableManagement) | 164 | JULIA_EXT_CDTOR_DECL(VariableManagement) | ||
90 | 165 | | |||
166 | // There is no way to completely delete object from scope: | ||||
167 | // http://docs.julialang.org/en/release-0.4/manual/faq/#how-do-i-delete-an-object-in-memory | ||||
168 | // So we are saving special marker to variable to mark it as removed | ||||
91 | static const QString REMOVED_VARIABLE_MARKER; | 169 | static const QString REMOVED_VARIABLE_MARKER; | ||
92 | 170 | | |||
171 | /** | ||||
172 | * @see Cantor::VariableManagementExtension::addVariable | ||||
173 | */ | ||||
93 | virtual QString addVariable( | 174 | virtual QString addVariable( | ||
94 | const QString &name, | 175 | const QString &name, | ||
95 | const QString &value) override; | 176 | const QString &value) override; | ||
96 | 177 | | |||
178 | /** | ||||
179 | * @see Cantor::VariableManagementExtension::setValue | ||||
180 | */ | ||||
97 | virtual QString setValue( | 181 | virtual QString setValue( | ||
98 | const QString &name, | 182 | const QString &name, | ||
99 | const QString &value) override; | 183 | const QString &value) override; | ||
100 | 184 | | |||
185 | /** | ||||
186 | * @see Cantor::VariableManagementExtension::removeVariable | ||||
187 | */ | ||||
101 | virtual QString removeVariable(const QString &name) override; | 188 | virtual QString removeVariable(const QString &name) override; | ||
189 | | ||||
190 | /** | ||||
191 | * @see Cantor::VariableManagementExtension::saveVariables | ||||
192 | */ | ||||
102 | virtual QString saveVariables(const QString &fileName) override; | 193 | virtual QString saveVariables(const QString &fileName) override; | ||
194 | | ||||
195 | /** | ||||
196 | * @see Cantor::VariableManagementExtension::loadVariables | ||||
197 | */ | ||||
103 | virtual QString loadVariables(const QString &fileName) override; | 198 | virtual QString loadVariables(const QString &fileName) override; | ||
199 | | ||||
200 | /** | ||||
201 | * @see Cantor::VariableManagementExtension::clearVariables | ||||
202 | */ | ||||
104 | virtual QString clearVariables() override; | 203 | virtual QString clearVariables() override; | ||
105 | }; | 204 | }; |