keys have been implemented

release/4.3a0
dellaert 2014-10-13 00:37:46 +02:00
parent a9d9fcd241
commit 2e8d868cd2
1 changed files with 13 additions and 30 deletions

View File

@ -327,7 +327,11 @@ public:
}
/// Return keys that play in this expression as a set
virtual std::set<Key> keys() const = 0;
virtual std::set<Key> keys() const {
std::set<Key> keys;
return keys;
}
// Return size needed for memory buffer in traceExecution
size_t traceSize() const {
@ -362,12 +366,6 @@ class ConstantExpression: public ExpressionNode<T> {
public:
/// Return keys that play in this expression, i.e., the empty set
virtual std::set<Key> keys() const {
std::set<Key> keys;
return keys;
}
/// Return value
virtual T value(const Values& values) const {
return constant_;
@ -522,6 +520,14 @@ struct GenerateFunctionalNode: Argument<T, A, Base::N + 1>, Base {
static size_t const N = Base::N + 1;
typedef Argument<T, A, N> This;
/// Return keys that play in this expression
virtual std::set<Key> keys() const {
std::set<Key> keys = Base::keys();
std::set<Key> myKeys = This::expression->keys();
keys.insert(myKeys.begin(), myKeys.end());
return keys;
}
};
/// Recursive GenerateFunctionalNode class Generator
@ -569,11 +575,6 @@ private:
public:
/// Return keys that play in this expression
virtual std::set<Key> keys() const {
return this->template expression<A1, 1>()->keys();
}
/// Return value
virtual T value(const Values& values) const {
return function_(this->template expression<A1, 1>()->value(values), boost::none);
@ -640,14 +641,6 @@ private:
public:
/// Return keys that play in this expression
virtual std::set<Key> keys() const {
std::set<Key> keys1 = this->template expression<A1, 1>()->keys();
std::set<Key> keys2 = this->template expression<A2, 2>()->keys();
keys1.insert(keys2.begin(), keys2.end());
return keys1;
}
/// Return value
virtual T value(const Values& values) const {
using boost::none;
@ -726,16 +719,6 @@ private:
public:
/// Return keys that play in this expression
virtual std::set<Key> keys() const {
std::set<Key> keys1 = this->template expression<A1, 1>()->keys();
std::set<Key> keys2 = this->template expression<A2, 2>()->keys();
std::set<Key> keys3 = this->template expression<A3, 3>()->keys();
keys2.insert(keys3.begin(), keys3.end());
keys1.insert(keys2.begin(), keys2.end());
return keys1;
}
/// Return value
virtual T value(const Values& values) const {
using boost::none;