File indexing completed on 2024-04-28 11:20:35

0001 /*
0002     SPDX-FileCopyrightText: 2010 Miha Čančula <miha.cancula@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #ifndef OCTAVEEXTENSIONS_H
0008 #define OCTAVEEXTENSIONS_H
0009 
0010 #include <extension.h>
0011 
0012 #define OCTAVE_EXT_CDTOR_DECL(name) Octave##name##Extension(QObject* parent); \
0013                                      ~Octave##name##Extension();
0014 
0015 class OctaveHistoryExtension : public Cantor::HistoryExtension
0016 {
0017     public:
0018         OCTAVE_EXT_CDTOR_DECL(History)
0019         QString lastResult() override;
0020 };
0021 
0022 class OctaveScriptExtension : public Cantor::ScriptExtension
0023 {
0024     public:
0025         OCTAVE_EXT_CDTOR_DECL(Script)
0026     QString scriptFileFilter() override;
0027     QString highlightingMode() override;
0028     QString runExternalScript(const QString& path) override;
0029     QString commandSeparator() override;
0030 };
0031 
0032 class OctavePlotExtension : public Cantor::PlotExtension
0033 {
0034     public:
0035     OCTAVE_EXT_CDTOR_DECL(Plot)
0036     QString plotFunction2d(const QString& function, const QString& variable, const QString& left, const QString& right) override;
0037     QString plotFunction3d(const QString& function, const VariableParameter& var1, const VariableParameter& var2) override;
0038 };
0039 
0040 class OctaveLinearAlgebraExtension : public Cantor::LinearAlgebraExtension
0041 {
0042     public:
0043     OCTAVE_EXT_CDTOR_DECL(LinearAlgebra)
0044     QString createVector(const QStringList& entries, VectorType type) override;
0045     QString nullVector(int size, VectorType type) override;
0046     QString createMatrix(const Cantor::LinearAlgebraExtension::Matrix& matrix) override;
0047     QString identityMatrix(int size) override;
0048     QString nullMatrix(int rows, int columns) override;
0049     QString rank(const QString& matrix) override;
0050     QString invertMatrix(const QString& matrix) override;
0051     QString charPoly(const QString& matrix) override;
0052     QString eigenVectors(const QString& matrix) override;
0053     QString eigenValues(const QString& matrix) override;
0054 };
0055 
0056 class OctaveVariableManagementExtension : public Cantor::VariableManagementExtension
0057 {
0058     public:
0059     OCTAVE_EXT_CDTOR_DECL(VariableManagement)
0060     QString addVariable(const QString& name, const QString& value) override;
0061     QString setValue(const QString& name, const QString& value) override;
0062     QString removeVariable(const QString& name) override;
0063     QString saveVariables(const QString& fileName) override;
0064     QString loadVariables(const QString& fileName) override;
0065     QString clearVariables() override;
0066 };
0067 
0068 class OctavePackagingExtension : public Cantor::PackagingExtension
0069 {
0070     public:
0071     OCTAVE_EXT_CDTOR_DECL(Packaging)
0072     QString importPackage(const QString& package) override;
0073 };
0074 
0075 #endif // OCTAVEEXTENSIONS_H