keys have been implemented
parent
a9d9fcd241
commit
2e8d868cd2
|
@ -327,7 +327,11 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Return keys that play in this expression as a set
|
/// 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
|
// Return size needed for memory buffer in traceExecution
|
||||||
size_t traceSize() const {
|
size_t traceSize() const {
|
||||||
|
@ -362,12 +366,6 @@ class ConstantExpression: public ExpressionNode<T> {
|
||||||
|
|
||||||
public:
|
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
|
/// Return value
|
||||||
virtual T value(const Values& values) const {
|
virtual T value(const Values& values) const {
|
||||||
return constant_;
|
return constant_;
|
||||||
|
@ -522,6 +520,14 @@ struct GenerateFunctionalNode: Argument<T, A, Base::N + 1>, Base {
|
||||||
static size_t const N = Base::N + 1;
|
static size_t const N = Base::N + 1;
|
||||||
typedef Argument<T, A, N> This;
|
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
|
/// Recursive GenerateFunctionalNode class Generator
|
||||||
|
@ -569,11 +575,6 @@ private:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
/// Return keys that play in this expression
|
|
||||||
virtual std::set<Key> keys() const {
|
|
||||||
return this->template expression<A1, 1>()->keys();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Return value
|
/// Return value
|
||||||
virtual T value(const Values& values) const {
|
virtual T value(const Values& values) const {
|
||||||
return function_(this->template expression<A1, 1>()->value(values), boost::none);
|
return function_(this->template expression<A1, 1>()->value(values), boost::none);
|
||||||
|
@ -640,14 +641,6 @@ private:
|
||||||
|
|
||||||
public:
|
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
|
/// Return value
|
||||||
virtual T value(const Values& values) const {
|
virtual T value(const Values& values) const {
|
||||||
using boost::none;
|
using boost::none;
|
||||||
|
@ -726,16 +719,6 @@ private:
|
||||||
|
|
||||||
public:
|
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
|
/// Return value
|
||||||
virtual T value(const Values& values) const {
|
virtual T value(const Values& values) const {
|
||||||
using boost::none;
|
using boost::none;
|
||||||
|
|
Loading…
Reference in New Issue