souffle
2.0.2-371-g6315b36
|
Go to the documentation of this file.
31 namespace ram::transform {
36 std::function<Own<Node>(Own<Node>)> filterRewriter = [&](Own<Node> node) -> Own<Node> {
40 if (conditionList.size() > 1) {
43 for (
auto& cond : conditionList) {
44 if (filters.empty()) {
45 filters.emplace_back(mk<Filter>(
48 filters.emplace_back(mk<Filter>(
souffle::clone(cond), std::move(filters.back())));
51 node = std::move(filters.back());
A relational algebra query.
VecOwn< Condition > toConjunctionList(const Condition *condition)
Convert terms of a conjunction to a list.
Abstract class for conditions and boolean values in RAM.
Checks whether a given condition holds.
auto clone(const std::vector< A * > &xs)
std::vector< A > filter(std::vector< A > xs, F &&f)
Filter a vector to include certain elements.
void visitDepthFirst(const Node &root, Visitor< R, Ps... > &visitor, Args &... args)
A utility function visiting all nodes within the RAM fragments rooted by the given node recursively i...
std::vector< Own< A > > VecOwn
LambdaNodeMapper< Lambda > makeLambdaRamMapper(const Lambda &lambda)
Creates a node mapper based on a corresponding lambda expression.