[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