• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeedu API Reference
  • KDE Home
  • Contact Us
 

cantor/src/lib

  • sources
  • kde-4.14
  • kdeedu
  • cantor
  • src
  • lib
extension.cpp
Go to the documentation of this file.
1 /*
2  This program is free software; you can redistribute it and/or
3  modify it under the terms of the GNU General Public License
4  as published by the Free Software Foundation; either version 2
5  of the License, or (at your option) any later version.
6 
7  This program is distributed in the hope that it will be useful,
8  but WITHOUT ANY WARRANTY; without even the implied warranty of
9  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  GNU General Public License for more details.
11 
12  You should have received a copy of the GNU General Public License
13  along with this program; if not, write to the Free Software
14  Foundation, Inc., 51 Franklin Street, Fifth Floor,
15  Boston, MA 02110-1301, USA.
16 
17  ---
18  Copyright (C) 2009 Alexander Rieder <alexanderrieder@gmail.com>
19  */
20 
21 #include "extension.h"
22 using namespace Cantor;
23 
24 #include <QStringList>
25 
26 #define EXTENSION_CONSTRUCTORS(name) name::name(QObject* parent) : Extension(#name,parent) {} \
27  name::~name() {}
28 
29 
30 Extension::Extension(const QString& name, QObject* parent) : QObject(parent)
31 {
32  setObjectName(name);
33 }
34 
35 Extension::~Extension()
36 {
37 
38 }
39 
40 EXTENSION_CONSTRUCTORS(HistoryExtension)
41 EXTENSION_CONSTRUCTORS(ScriptExtension)
42 EXTENSION_CONSTRUCTORS(CASExtension)
43 EXTENSION_CONSTRUCTORS(CalculusExtension)
44 EXTENSION_CONSTRUCTORS(PlotExtension)
45 EXTENSION_CONSTRUCTORS(AdvancedPlotExtension)
46 EXTENSION_CONSTRUCTORS(LinearAlgebraExtension)
47 EXTENSION_CONSTRUCTORS(VariableManagementExtension)
48 EXTENSION_CONSTRUCTORS(PackagingExtension)
49 
50 //implement this here, as it's ";" most of the time
51 QString ScriptExtension::commandSeparator()
52 {
53  return ";\n";
54 }
55 
56 //implement this here, as it's "#" most of the time
57 QString ScriptExtension::commentStartingSequence()
58 {
59  return "#";
60 }
61 
62 //implement this here, as it's "" most of the time
63 QString ScriptExtension::commentEndingSequence()
64 {
65  return "";
66 }
67 
68 
69 //some convenience functions, but normally backends have a special command to create
70 //these matrices/vectors.
71 
72 QString LinearAlgebraExtension::nullVector(int size, VectorType type)
73 {
74  QStringList values;
75  for (int i=0;i<size;i++)
76  values<<"0";
77  return createVector(values, type);
78 }
79 
80 QString LinearAlgebraExtension::identityMatrix(int size)
81 {
82  Matrix m;
83  for(int i=0;i<size;i++)
84  {
85  QStringList column;
86  for(int j=0;j<size;j++)
87  column<<((i==j) ? "1": "0");
88 
89  m<<column;
90  }
91 
92  return createMatrix(m);
93 }
94 
95 QString LinearAlgebraExtension::nullMatrix(int rows, int columns)
96 {
97  Matrix m;
98  for(int i=0;i<rows;i++)
99  {
100  QStringList column;
101  for(int j=0;j<columns;j++)
102  column<<"0";
103 
104  m<<column;
105  }
106 
107  return createMatrix(m);
108 }
109 
110 QString AdvancedPlotExtension::plotFunction2d(const QString& expression, const QVector<PlotDirective*> directives) const
111 {
112  QString params="";
113  foreach (PlotDirective* dir, directives)
114  {
115  QString param=dispatchDirective(*dir);
116  if (param.length()>0)
117  params+=separatorSymbol()+param;
118  }
119  return plotCommand()+"("+expression+params+")";
120 }
121 
122 QString AdvancedPlotExtension::dispatchDirective(const PlotDirective& directive) const
123 {
124  const AcceptorBase* acceptor=dynamic_cast<const AcceptorBase*>(this);
125  if (acceptor==NULL)
126  {
127  kDebug()<<"Plotting extension does not support any directives, but was asked to process one";
128  return "";
129  }
130  return directive.dispatch(*acceptor);
131 }
132 
133 QString AdvancedPlotExtension::separatorSymbol() const
134 {
135  return ",";
136 }
137 
138 QWidget* AdvancedPlotExtension::PlotDirective::widget(QWidget* parent)
139 {
140  return new QWidget(parent);
141 }
142 
143 AdvancedPlotExtension::PlotDirective::PlotDirective()
144 {
145 }
146 
147 AdvancedPlotExtension::PlotDirective::~PlotDirective()
148 {
149 }
150 
151 AdvancedPlotExtension::AcceptorBase::AcceptorBase() : m_widgets()
152 {
153 }
154 
155 AdvancedPlotExtension::AcceptorBase::~AcceptorBase()
156 {
157 }
158 
159 const QVector<AdvancedPlotExtension::AcceptorBase::widgetProc>& AdvancedPlotExtension::AcceptorBase::widgets() const
160 {
161  return m_widgets;
162 }
163 
164 AdvancedPlotExtension::DirectiveProducer::DirectiveProducer(QWidget* parent) : QWidget(parent)
165 {
166 }
Cantor::LinearAlgebraExtension::nullVector
virtual QString nullVector(int size, VectorType type)
creates a null vector, of the given size/type
Definition: extension.cpp:72
Cantor::AdvancedPlotExtension::plotFunction2d
QString plotFunction2d(const QString &expression, const QVector< PlotDirective * > directives) const
returns the command for plotting a 2 dimensional data set.
Definition: extension.cpp:110
QWidget
Cantor::AdvancedPlotExtension
An extension providing advanced plotting facilities.
Definition: extension.h:237
Cantor::AdvancedPlotExtension::AcceptorBase::widgets
const QVector< widgetProc > & widgets() const
returns a constant reference to the list of widget generating procedures which contains means of crea...
Definition: extension.cpp:159
Cantor::PackagingExtension
An extension for library/module import.
Definition: extension.h:467
Cantor::CASExtension
An extension providing the basic computations in computer algebra, like solving, simplifying etc...
Definition: extension.h:120
Cantor::AdvancedPlotExtension::PlotDirective
Definition: extension.h:306
Cantor::LinearAlgebraExtension::nullMatrix
virtual QString nullMatrix(int rows, int columns)
creates a null matrix, of the given size
Definition: extension.cpp:95
Cantor::AdvancedPlotExtension::AcceptorBase::~AcceptorBase
virtual ~AcceptorBase()
Definition: extension.cpp:155
Cantor::Extension::Extension
Extension(const QString &name, QObject *parent)
Default constructor.
Definition: extension.cpp:30
QObject
Cantor::AdvancedPlotExtension::PlotDirective::~PlotDirective
virtual ~PlotDirective()
Definition: extension.cpp:147
QObject::setObjectName
void setObjectName(const QString &name)
Cantor::AdvancedPlotExtension::AcceptorBase
Definition: extension.h:263
QString
QList
QStringList
Cantor::ScriptExtension
An Extension providing commands to interact with external scripts.
Definition: extension.h:74
Cantor::AdvancedPlotExtension::PlotDirective::PlotDirective
PlotDirective()
only derived classes may construct
Definition: extension.cpp:143
extension.h
Cantor::AdvancedPlotExtension::plotCommand
virtual QString plotCommand() const =0
returns the command name for plotting a 2 dimensional data set.
Cantor::HistoryExtension
An Extension providing commands for command history.
Definition: extension.h:57
Cantor::AdvancedPlotExtension::dispatchDirective
QString dispatchDirective(const PlotDirective &directive) const
returns the parameter expression according to a directive.
Definition: extension.cpp:122
EXTENSION_CONSTRUCTORS
#define EXTENSION_CONSTRUCTORS(name)
Definition: extension.cpp:26
Cantor::LinearAlgebraExtension::identityMatrix
virtual QString identityMatrix(int size)
creates an identity matrix of the given size
Definition: extension.cpp:80
Cantor::Extension::~Extension
~Extension()
Definition: extension.cpp:35
Cantor::AdvancedPlotExtension::separatorSymbol
virtual QString separatorSymbol() const
returns the separator symbol in a plotting command.
Definition: extension.cpp:133
QVector
Cantor::LinearAlgebraExtension::createMatrix
virtual QString createMatrix(const Matrix &matrix)=0
creates a maxtrix with the given entries
Cantor::AdvancedPlotExtension::AcceptorBase::AcceptorBase
AcceptorBase()
constructor only allowed for derived classes
Definition: extension.cpp:151
QString::length
int length() const
Cantor::AdvancedPlotExtension::DirectiveProducer::DirectiveProducer
DirectiveProducer(QWidget *parent)
Definition: extension.cpp:164
Cantor::CalculusExtension
An extension providing the basic calculus stuff like limits, diffrentiate, integrate etc...
Definition: extension.h:152
Cantor::PlotExtension
An extension providing basic plotting facilities.
Definition: extension.h:196
Cantor::LinearAlgebraExtension
An extension for basic Linear Algebra.
Definition: extension.h:369
Cantor::AdvancedPlotExtension::PlotDirective::widget
static QWidget * widget(QWidget *parent)
creates a new widget for editing the value and returns the pointer to it
Definition: extension.cpp:138
QObject::parent
QObject * parent() const
Cantor::ScriptExtension::commentStartingSequence
virtual QString commentStartingSequence()
returns a string used to start a comment (usually #)
Definition: extension.cpp:57
Cantor::VariableManagementExtension
Definition: extension.h:448
Cantor::ScriptExtension::commentEndingSequence
virtual QString commentEndingSequence()
returns a string used to end a comment (usually "")
Definition: extension.cpp:63
Cantor::LinearAlgebraExtension::VectorType
VectorType
Definition: extension.h:372
Cantor::LinearAlgebraExtension::createVector
virtual QString createVector(const QStringList &entries, VectorType type)=0
creates a vector with the given entries
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:16:33 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

cantor/src/lib

Skip menu "cantor/src/lib"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdeedu API Reference

Skip menu "kdeedu API Reference"
  • Analitza
  •     lib
  • kalgebra
  • kalzium
  •   libscience
  • kanagram
  • kig
  •   lib
  • klettres
  • marble
  • parley
  • rocs
  •   App
  •   RocsCore
  •   VisualEditor
  •   stepcore

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal