[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdeedu/kalgebra
From: Aleix Pol Gonzalez <aleixpol () gmail ! com>
Date: 2010-05-24 21:12:20
Message-ID: 20100524211220.C3FD5AC8BF () svn ! kde ! org
[Download RAW message or body]
SVN commit 1130259 by apol:
Make the FunctionImpl definition to decide what examples it is exposing.
M +2 -0 analitzagui/algebrahighlighter.cpp
M +5 -10 analitzagui/functioncartesian.cpp
M +7 -1 analitzagui/functionfactory.cpp
M +6 -3 analitzagui/functionfactory.h
M +1 -1 analitzagui/functionimpl.h
M +1 -0 analitzagui/functionimplicit.cpp
M +1 -0 analitzagui/functionparametric.cpp
M +1 -0 analitzagui/functionpolar.cpp
M +1 -1 src/functionedit.cpp
--- trunk/KDE/kdeedu/kalgebra/analitzagui/algebrahighlighter.cpp #1130258:1130259
@@ -189,6 +189,8 @@
parameter.top().pos=lex.current.pos;
}
+
+
if(m_pos>lex.current.pos && !parameter.isEmpty()
&& lex.current.type==ExpressionTable::tColon) {
parameter.top().bounding=true;
--- trunk/KDE/kdeedu/kalgebra/analitzagui/functioncartesian.cpp #1130258:1130259
@@ -39,13 +39,13 @@
///Functions where the x is bounding. like x->sin(x)
struct FunctionY : public FunctionImpl
{
- explicit FunctionY(const Expression &e, Variables* v) : FunctionImpl(e, v ,0,0), \
vx(new Cn) + explicit FunctionY(const Expression &e, Variables* v, const QString& \
bvar="x") : FunctionImpl(e, v ,0,0), vx(new Cn) {
Analitza::Ci* vi=func.refExpression()->parameters().first();
vi->value()=vx;
if(func.isCorrect()) {
- Expression deriv = func.derivative("x");
+ Expression deriv = func.derivative(bvar);
if(func.isCorrect())
m_deriv = new Expression(deriv);
func.flushErrors();
@@ -56,14 +56,7 @@
{
Analitza::Ci* vi=func.refExpression()->parameters().first();
vi->value()=vx;
-
- if(func.isCorrect()) {
- Expression deriv = func.derivative("y");
- if(func.isCorrect())
- m_deriv = new Expression(deriv);
- func.flushErrors();
}
- }
virtual ~FunctionY() { delete vx; }
void updatePoints(const QRect& viewport);
@@ -75,6 +68,7 @@
QStringList boundings() const { return supportedBVars(); }
void calculateValues(double, double);
+ static QStringList examples() { return QStringList("x->x**sin x"); }
Analitza::Cn* vx;
};
@@ -82,7 +76,7 @@
///Functions where the y is bounding. like y->sin(y). FunctionY mirrored
struct FunctionX : public FunctionY
{
- explicit FunctionX(const Expression &e, Variables* v) : FunctionY(e, v) {}
+ explicit FunctionX(const Expression &e, Variables* v) : FunctionY(e, v, "y") {}
FunctionX(const FunctionX &fx) : FunctionY(fx) {}
void updatePoints(const QRect& viewport);
@@ -93,6 +87,7 @@
static QStringList supportedBVars() { return QStringList("y"); }
static ExpressionType expectedType() { return FunctionY::expectedType(); }
QStringList boundings() const { return supportedBVars(); }
+ static QStringList examples() { return QStringList("y->sin y"); }
};
REGISTER_FUNCTION(FunctionY)
--- trunk/KDE/kdeedu/kalgebra/analitzagui/functionfactory.cpp #1130258:1130259
@@ -39,15 +39,21 @@
return m_types[bvars.join("|")]();
}
-bool FunctionFactory::registerFunction(const Id& bvars, registerFunc_fn f, \
expectedType_fn ft) +bool FunctionFactory::registerFunction(const Id& bvars, \
registerFunc_fn f, expectedType_fn ft, const QStringList& examples) {
Q_ASSERT(!contains(bvars));
m_items[bvars.join("|")]=f;
m_types[bvars.join("|")]=ft;
+ m_examples.append(examples);
return true;
}
+QStringList FunctionFactory::examples() const
+{
+ return m_examples;
+}
+
FunctionFactory* FunctionFactory::self()
{
if(!m_self)
--- trunk/KDE/kdeedu/kalgebra/analitzagui/functionfactory.h #1130258:1130259
@@ -21,10 +21,11 @@
#define REGISTER_FUNCTION(name) \
static FunctionImpl* create##name(const Expression &exp, Variables* v) { \
return new name (exp, v); } \
- namespace { bool \
_##name=FunctionFactory::self()->registerFunction(name::supportedBVars(), \
create##name, name ::expectedType); } + namespace { bool \
_##name=FunctionFactory::self()->registerFunction(name::supportedBVars(), \
create##name, name ::expectedType, name ::examples()); }
#include <QMap>
#include <QStringList>
+#include "analitzaguiexport.h"
struct FunctionImpl;
class QStringList;
@@ -36,7 +37,7 @@
class Variables;
}
-class FunctionFactory
+class ANALITZAGUI_EXPORT FunctionFactory
{
public:
typedef FunctionImpl* (*registerFunc_fn)(const Analitza::Expression&, \
Analitza::Variables* ); @@ -45,13 +46,15 @@
FunctionImpl* item(const Id& bvars, const Analitza::Expression& exp, \
Analitza::Variables* v) const; Analitza::ExpressionType type(const Id& bvars);
static FunctionFactory* self();
- bool registerFunction(const Id& bvars, registerFunc_fn f, expectedType_fn ft);
+ bool registerFunction(const Id& bvars, registerFunc_fn f, expectedType_fn ft, \
const QStringList& examples); bool contains(const Id& bvars) const;
+ QStringList examples() const;
private:
static FunctionFactory* m_self;
FunctionFactory() { Q_ASSERT(!m_self); m_self=this; }
QMap<QString, registerFunc_fn> m_items;
QMap<QString, expectedType_fn> m_types;
+ QStringList m_examples;
};
--- trunk/KDE/kdeedu/kalgebra/analitzagui/functionimpl.h #1130258:1130259
@@ -38,7 +38,7 @@
//helpers
/** adds a value to the points vector is needed. @returns if it was added. */
bool addValue(const QPointF& p);
- bool isSimilar(double a, double b, double diff=0.0001);
+ static bool isSimilar(double a, double b, double diff=0.0001);
//To reimplement
virtual function::Axe axeType() const { return function::Cartesian; }
--- trunk/KDE/kdeedu/kalgebra/analitzagui/functionimplicit.cpp #1130258:1130259
@@ -307,6 +307,7 @@
QVector<Simplex> simplexes;
QPointF initialPoint;
+ static QStringList examples() { return \
QStringList("(2*x+y)*(x^2+y^2)^4+2*y*(5*x^4+10*x^2*y^2-3*y^4)-2*x+y"); } QPointF \
last_calc; };
--- trunk/KDE/kdeedu/kalgebra/analitzagui/functionparametric.cpp #1130258:1130259
@@ -104,6 +104,7 @@
static QStringList supportedBVars() { return QStringList("t"); }
static ExpressionType expectedType() { return \
ExpressionType(ExpressionType::Lambda).addParameter(ExpressionType(ExpressionType::Value)).addParameter(ExpressionType(ExpressionType::Vector, \
ExpressionType(ExpressionType::Value), 2)); } QStringList boundings() const { return \
supportedBVars(); } + static QStringList examples() { return QStringList("t->vector \
{t,t**2}"); } Cn* vx;
};
REGISTER_FUNCTION(FunctionParametric)
--- trunk/KDE/kdeedu/kalgebra/analitzagui/functionpolar.cpp #1130258:1130259
@@ -43,6 +43,7 @@
function::Axe axeType() const { return function::Polar; }
QLineF derivative(const QPointF& p);
virtual FunctionImpl* copy() { return new FunctionPolar(*this); }
+ static QStringList examples() { return QStringList("q->3*sin(7*q)"); } \
//afiestas's favourite plot
inline QPointF fromPolar(double r, double th) { return QPointF(r*std::cos(th), \
r*std::sin(th)); } QRect m_last_viewport;
--- trunk/KDE/kdeedu/kalgebra/src/functionedit.cpp #1130258:1130259
@@ -52,7 +52,7 @@
m_name = new KLineEdit(this);
m_func = new ExpressionEdit(this);
- m_func->setExamples(QStringList() << "x**sin x" << "8*sin(3q)" << "t->vector{t, \
t**2}" << "(2*x+y)*(x^2+y^2)^4+2*y*(5*x^4+10*x^2*y^2-3*y^4)-2*x+y"); + \
m_func->setExamples(FunctionFactory::self()->examples()); m_func->setAns("x");
connect(m_func, SIGNAL(textChanged()), this, SLOT(edit()));
connect(m_func, SIGNAL(returnPressed()), this, SLOT(ok()));
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic