| souffle
    2.0.2-371-g6315b36
    | 
Abstract class for a nesting operations in a loop-nest. More...
#include <NestedOperation.h>


| Public Member Functions | |
| void | apply (const NodeMapper &map) override | 
| Apply the mapper to all child nodes.  More... | |
| NestedOperation * | clone () const override=0 | 
| Create a clone (i.e.  More... | |
| std::vector< const Node * > | getChildNodes () const override | 
| Obtain list of all embedded child nodes.  More... | |
| Operation & | getOperation () const | 
| Get nested operation.  More... | |
| const std::string & | getProfileText () const | 
| Get profile text.  More... | |
| NestedOperation (Own< Operation > nested, std::string profileText="") | |
|  Public Member Functions inherited from souffle::ram::Node | |
| bool | operator!= (const Node &other) const | 
| Inequality check for two RAM nodes.  More... | |
| bool | operator== (const Node &other) const | 
| Equivalence check for two RAM nodes.  More... | |
| virtual void | rewrite (const Node *oldNode, Own< Node > newNode) | 
| Rewrite a child node.  More... | |
| virtual | ~Node ()=default | 
| Protected Member Functions | |
| bool | equal (const Node &node) const override | 
| Equality check for two RAM nodes.  More... | |
| void | print (std::ostream &os, int tabpos) const override | 
| Pretty print with indentation.  More... | |
|  Protected Member Functions inherited from souffle::ram::Operation | |
| void | print (std::ostream &os) const override | 
| Print RAM node.  More... | |
| Protected Attributes | |
| Own< Operation > | nestedOperation | 
| Nested operation.  More... | |
| const std::string | profileText | 
| Text used by the profiler.  More... | |
| Additional Inherited Members | |
|  Static Protected Member Functions inherited from souffle::ram::Operation | |
| static void | print (const Operation *operation, std::ostream &os, int tabpos) | 
| Pretty print jump-bed.  More... | |
Abstract class for a nesting operations in a loop-nest.
In the following example, the nested operation of "IF C1" is "IF C2":
TODO (b-scholz): profile text is awkward; perhaps there is a better way of storing profile information for RAM operations since it is not always used for all RAM operations.
Definition at line 52 of file NestedOperation.h.
| 
 | inlineoverridevirtual | 
Apply the mapper to all child nodes.
Reimplemented from souffle::ram::Node.
Reimplemented in souffle::ram::UnpackRecord.
Definition at line 75 of file NestedOperation.h.
References nestedOperation, and souffle::ram::Operation::print().
Referenced by souffle::ram::Aggregate::clone(), souffle::ram::UnpackRecord::clone(), and souffle::ram::NestedIntrinsicOperator::clone().

| 
 | overridepure virtual | 
Create a clone (i.e.
deep copy) of this node
Implements souffle::ram::Operation.
Implemented in souffle::ram::AbstractConditional, souffle::ram::RelationOperation, souffle::ram::TupleOperation, souffle::ram::IndexOperation, souffle::ram::IndexChoice, souffle::ram::NestedIntrinsicOperator, souffle::ram::UnpackRecord, souffle::ram::Choice, souffle::ram::Aggregate, souffle::ram::ParallelIndexChoice, souffle::ram::IndexAggregate, souffle::ram::ParallelIndexScan, souffle::ram::IndexScan, souffle::ram::ParallelAggregate, souffle::ram::ParallelIndexAggregate, souffle::ram::ParallelChoice, souffle::ram::ParallelScan, souffle::ram::Break, souffle::ram::Filter, and souffle::ram::Scan.
| 
 | inlineoverrideprotectedvirtual | 
Equality check for two RAM nodes.
Default action is that nothing needs to be checked.
Reimplemented from souffle::ram::Node.
Reimplemented in souffle::ram::UnpackRecord, souffle::ram::TupleOperation, and souffle::ram::RelationOperation.
Definition at line 84 of file NestedOperation.h.
Referenced by souffle::ram::AbstractConditional::apply(), and souffle::ram::TupleOperation::getChildNodes().
| 
 | inlineoverridevirtual | 
Obtain list of all embedded child nodes.
Reimplemented from souffle::ram::Node.
Reimplemented in souffle::ram::UnpackRecord, and souffle::ram::TupleOperation.
Definition at line 71 of file NestedOperation.h.
References souffle::map(), and nestedOperation.
Referenced by souffle::ram::AbstractConditional::getCondition(), and souffle::ram::TupleOperation::setTupleId().

| 
 | inline | 
Get nested operation.
Definition at line 62 of file NestedOperation.h.
References profileText.
Referenced by souffle::ram::transform::CollapseFiltersTransformer::collapseFilters(), souffle::ram::ParallelAggregate::ParallelAggregate(), souffle::ram::ParallelChoice::ParallelChoice(), and souffle::interpreter::NodeGenerator::visitNestedOperation().
| 
 | inline | 
Get profile text.
Definition at line 67 of file NestedOperation.h.
References nestedOperation.
Referenced by souffle::ram::transform::CollapseFiltersTransformer::collapseFilters(), and souffle::ram::ParallelChoice::ParallelChoice().
| 
 | inlineoverrideprotectedvirtual | 
Pretty print with indentation.
Implements souffle::ram::Operation.
Reimplemented in souffle::ram::UnpackRecord, souffle::ram::ParallelIndexChoice, souffle::ram::ParallelIndexScan, souffle::ram::ParallelIndexAggregate, souffle::ram::ParallelAggregate, souffle::ram::ParallelChoice, souffle::ram::ParallelScan, and souffle::ram::Scan.
Definition at line 80 of file NestedOperation.h.
References souffle::equal_ptr(), nestedOperation, and profileText.
Referenced by souffle::ram::UnpackRecord::apply(), souffle::ram::Break::clone(), and souffle::ram::Filter::clone().

Nested operation.
Definition at line 90 of file NestedOperation.h.
Referenced by apply(), souffle::ram::Choice::clone(), getChildNodes(), getProfileText(), NestedOperation(), and print().
| 
 | protected | 
Text used by the profiler.
Definition at line 93 of file NestedOperation.h.
Referenced by getOperation(), and print().
 1.8.17
 1.8.17