[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-09-29 1:08:44
Message-ID: 20100929010844.94B3EAC88E () svn ! kde ! org
[Download RAW message or body]
SVN commit 1180805 by apol:
Remove hardcore analitza stuff from KAlgebra and improve API for that kind of actions.
M +10 -7 analitza/expression.cpp
M +5 -0 analitza/variables.cpp
M +1 -0 analitza/variables.h
M +3 -5 src/expressionedit.cpp
--- trunk/KDE/kdeedu/kalgebra/analitza/expression.cpp #1180804:1180805
@@ -506,15 +506,18 @@
QStringList Expression::bvarList() const
{
- Container *c = (Container*) d->m_tree;
- if(c!=0 && c->type()==Object::container) {
- c = (Container*) c->m_params[0];
+ Q_ASSERT(d->m_tree);
+ const Object *o = d->m_tree;
- if(c->isApply())
- return c->bvarStrings();
- else if(c->isContainer())
- return c->bvarStrings();
+ if(o->isContainer() && static_cast<const Container*>(o)->containerType()==Container::math) {
+ o = (Container*) static_cast<const Container*>(o)->m_params[0];
}
+
+ if(o->isApply())
+ return static_cast<const Apply*>(o)->bvarStrings();
+ else if(o->isContainer())
+ return static_cast<const Container*>(o)->bvarStrings();
+
return QStringList();
}
--- trunk/KDE/kdeedu/kalgebra/analitza/variables.cpp #1180804:1180805
@@ -77,3 +77,8 @@
Q_ASSERT(contains(orig));
insert(dest, take(orig));
}
+
+Expression Variables::valueExpression(const QString& name) const
+{
+ return Expression(value(name)->copy());
+}
--- trunk/KDE/kdeedu/kalgebra/analitza/variables.h #1180804:1180805
@@ -77,6 +77,7 @@
* Adds again the initial constants
*/
void initializeConstants();
+ Expression valueExpression(const QString& name) const;
};
}
--- trunk/KDE/kdeedu/kalgebra/src/expressionedit.cpp #1180804:1180805
@@ -34,7 +34,6 @@
#include <analitza/operator.h>
#include <analitza/analyzer.h>
#include <analitza/variables.h>
-#include <analitza/container.h>
class HelpTip : public QLabel
{
@@ -341,10 +340,9 @@
ret=sample+')';
}
} else if(v && v->contains(funcname)) { //if it is a function defined by the user
- Analitza::Object* val=v->value(funcname);
- if(val->isContainer()) {
- Analitza::Container *c = (Analitza::Container*) val;
- QStringList params = c->bvarStrings();
+ Analitza::Expression val=v->valueExpression(funcname);
+ if(val.isLambda()) {
+ QStringList params = val.bvarList();
QString sample = (param < params.count()) ? //Perhaps we could notify it in a better way
i18nc("Function name in function prototype", "<em>%1</em>(", funcname) :
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic