| souffle
    2.0.2-371-g6315b36
    | 
 
 
 
Go to the documentation of this file.
   33     bool transformTuple = 
false;
 
   39             transformTuple = 
true;
 
   42             const auto* nextNode = 
dynamic_cast<const Node*
>(&
filter->getOperation());
 
   46                     transformTuple = false;
 
   65     bool transformTuple = 
false;
 
   68     if (
const auto* 
filter = 
dynamic_cast<const Filter*
>(&indexScan->getOperation())) {
 
   71             transformTuple = 
true;
 
   74             const auto* nextNode = 
dynamic_cast<const Node*
>(&
filter->getOperation());
 
   77                 if (element.
getTupleId() == indexScan->getTupleId()) {
 
   78                     transformTuple = false;
 
   87         const auto* 
filter = 
dynamic_cast<const Filter*
>(&indexScan->getOperation());
 
   88         const int identifier = indexScan->getTupleId();
 
   89         const std::string& 
rel = indexScan->getRelation();
 
   91         for (
auto& cur : indexScan->getRangePattern().first) {
 
   96             newValues.first.emplace_back(val);
 
   98         for (
auto& cur : indexScan->getRangePattern().second) {
 
   99             Expression* val = 
nullptr;
 
  100             if (cur != 
nullptr) {
 
  103             newValues.second.emplace_back(val);
 
  113     bool changed = 
false;
 
  115         std::function<Own<Node>(Own<Node>)> scanRewriter = [&](Own<Node> node) -> Own<Node> {
 
  116             if (
const Scan* scan = 
dynamic_cast<Scan*
>(node.get())) {
 
  119                     node = std::move(op);
 
  124                     node = std::move(op);
 
  
int getLevel(const Node *value) const
Get level of a RAM expression/condition.
Operation & getOperation() const
Get nested operation.
std::string identifier(std::string id)
Valid C++ identifier, note that this does not ensure the uniqueness of identifiers returned.
const std::string & getRelation() const
Get search relation.
Access element from the current tuple in a tuple environment.
Checks whether a given condition holds.
Node is a superclass for all RAM IR classes.
auto clone(const std::vector< A * > &xs)
std::vector< A > filter(std::vector< A > xs, F &&f)
Filter a vector to include certain elements.
const std::string & getProfileText() const
Get profile text.
int getTupleId() const
Get identifier.
Iterate all tuples of a relation.
Search for tuples of a relation matching a criteria.
Expression * clone() const override=0
Create a clone (i.e.
std::pair< RamBound, RamBound > RamPattern
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...
void rel(size_t limit, bool showLimit=true)
std::vector< Own< A > > VecOwn
Abstract class for describing scalar values in RAM.
int getTupleId() const
Get identifier.
LambdaNodeMapper< Lambda > makeLambdaRamMapper(const Lambda &lambda)
Creates a node mapper based on a corresponding lambda expression.