[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-bugs-dist
Subject: [Bug 129068] Can select slave vector of object for object's input
From: Andrew Walker <arwalker () sumusltd ! com>
Date: 2007-05-11 21:39:14
Message-ID: 20070511213914.31139.qmail () ktown ! kde ! org
[Download RAW message or body]
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
http://bugs.kde.org/show_bug.cgi?id=129068
------- Additional Comments From arwalker sumusltd com 2007-05-11 23:39 -------
SVN commit 663644 by arwalker:
CCBUG:129068 Add code for recursion detection
M +51 -3 kstdataobject.cpp
M +2 -1 kstdataobject.h
--- branches/work/kst/1.5/kst/src/libkstmath/kstdataobject.cpp #663643:663644
@ -723,11 +723,11 @
for (; scalarDictIter.current(); ++scalarDictIter) {
if (scalarDictIter.current() == k.data()) {
return true;
- }
+ }
}
}
}
-
+
for (KstScalarMap::Iterator j = obj->outputScalars().begin(); j != \
obj->outputScalars().end(); ++j) {
for (KstScalarMap::ConstIterator k = _inputScalars.begin(); k != \
_inputScalars.end(); ++k) { if (j.data() == k.data()) {
@ -735,7 +735,7 @
}
}
}
-
+
for (KstStringMap::Iterator j = obj->outputStrings().begin(); j != \
obj->outputStrings().end(); ++j) {
for (KstStringMap::ConstIterator k = _inputStrings.begin(); k != \
_inputStrings.end(); ++k) { if (j.data() == k.data()) {
@ -748,5 +748,53 @
}
+bool KstDataObject::recursion(KstDataObjectDataObjectMap& objectsToCheck) {
+ KstDataObjectDataObjectMap objectsToFollow;
+ bool recurses = false;
+
+ for (KstDataObjectList::ConstIterator it = KST::dataObjectList.begin(); it != \
KST::dataObjectList.end(); ++it) { + if ((*it)->uses(this)) {
+ if (objectsToCheck.find(*it) == objectsToCheck.end()) {
+ objectsToFollow.insert(*it, *it);
+ } else {
+ recurses = true;
+
+ break;
+ }
+ }
+ }
+
+ if (!recurses) {
+ for (KstDataObjectDataObjectMap::Iterator j = objectsToFollow.begin(); j != \
objectsToFollow.end(); ++j) { + if ((*j)->recursion(objectsToCheck)) {
+ recurses = true;
+
+ break;
+ }
+ objectsToCheck.insert(*j, *j);
+ }
+ }
+
+ return recurses;
+}
+
+
+bool KstDataObject::recursion() {
+ bool recurses = false;
+
+ if (uses(this)) {
+ recurses = true;
+ } else {
+ KstDataObjectDataObjectMap objectsToCheck;
+
+ objectsToCheck.insert(this, this);
+
+ recurses = recursion(objectsToCheck);
+ }
+
+ return recurses;
+}
+
+
#include "kstdataobject.moc"
// vim: ts=2 sw=2 et
--- branches/work/kst/1.5/kst/src/libkstmath/kstdataobject.h #663643:663644
@ -55,7 +55,6 @
virtual QString propertyString() const = 0;
virtual const QString& type() const { return _type; }
virtual Kind kind() const { return Generic; }
-
virtual int sampleCount() const { return 0; }
// If you use these, you must lock() and unlock() the object as long as you
@ -106,6 +105,8 @
virtual void replaceDependency(KstMatrixPtr oldMatrix, KstMatrixPtr newMatrix);
virtual bool uses(KstObjectPtr p) const;
+ virtual bool recursion(KstDataObjectDataObjectMap& objectsToCheck);
+ virtual bool recursion();
//These are generally only valid for plugins...
const QString& name() const { return _name; }
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic