1 /*
2     SPDX-FileCopyrightText: 2010 Miha Čančula <miha.cancula@gmail.com>
3 
4     SPDX-License-Identifier: GPL-2.0-or-later
5 */
6 
7 #ifndef OCTAVEEXTENSIONS_H
8 #define OCTAVEEXTENSIONS_H
9 
10 #include <extension.h>
11 
12 #define OCTAVE_EXT_CDTOR_DECL(name) Octave##name##Extension(QObject* parent); \
13                                      ~Octave##name##Extension();
14 
15 class OctaveHistoryExtension : public Cantor::HistoryExtension
16 {
17     public:
18         OCTAVE_EXT_CDTOR_DECL(History)
19         QString lastResult() override;
20 };
21 
22 class OctaveScriptExtension : public Cantor::ScriptExtension
23 {
24     public:
25         OCTAVE_EXT_CDTOR_DECL(Script)
26     QString scriptFileFilter() override;
27     QString highlightingMode() override;
28     QString runExternalScript(const QString& path) override;
29     QString commandSeparator() override;
30 };
31 
32 class OctavePlotExtension : public Cantor::PlotExtension
33 {
34     public:
35     OCTAVE_EXT_CDTOR_DECL(Plot)
36     QString plotFunction2d(const QString& function, const QString& variable, const QString& left, const QString& right) override;
37     QString plotFunction3d(const QString& function, const VariableParameter& var1, const VariableParameter& var2) override;
38 };
39 
40 class OctaveLinearAlgebraExtension : public Cantor::LinearAlgebraExtension
41 {
42     public:
43     OCTAVE_EXT_CDTOR_DECL(LinearAlgebra)
44     QString createVector(const QStringList& entries, VectorType type) override;
45     QString nullVector(int size, VectorType type) override;
46     QString createMatrix(const Cantor::LinearAlgebraExtension::Matrix& matrix) override;
47     QString identityMatrix(int size) override;
48     QString nullMatrix(int rows, int columns) override;
49     QString rank(const QString& matrix) override;
50     QString invertMatrix(const QString& matrix) override;
51     QString charPoly(const QString& matrix) override;
52     QString eigenVectors(const QString& matrix) override;
53     QString eigenValues(const QString& matrix) override;
54 };
55 
56 class OctaveVariableManagementExtension : public Cantor::VariableManagementExtension
57 {
58     public:
59     OCTAVE_EXT_CDTOR_DECL(VariableManagement)
60     QString addVariable(const QString& name, const QString& value) override;
61     QString setValue(const QString& name, const QString& value) override;
62     QString removeVariable(const QString& name) override;
63     QString saveVariables(const QString& fileName) override;
64     QString loadVariables(const QString& fileName) override;
65     QString clearVariables() override;
66 };
67 
68 class OctavePackagingExtension : public Cantor::PackagingExtension
69 {
70     public:
71     OCTAVE_EXT_CDTOR_DECL(Packaging)
72     QString importPackage(const QString& package) override;
73 };
74 
75 #endif // OCTAVEEXTENSIONS_H
76