souffle
2.0.2-371-g6315b36
|
Node is a superclass for all RAM IR classes. More...
#include <Node.h>
Public Member Functions | |
virtual void | apply (const NodeMapper &) |
Apply the mapper to all child nodes. More... | |
virtual Node * | clone () const =0 |
Create a clone (i.e. More... | |
virtual std::vector< const Node * > | getChildNodes () const |
Obtain list of all embedded child nodes. More... | |
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 | |
virtual bool | equal (const Node &) const |
Equality check for two RAM nodes. More... | |
virtual void | print (std::ostream &out=std::cout) const =0 |
Print RAM node. More... | |
Friends | |
std::ostream & | operator<< (std::ostream &out, const Node &node) |
Print RAM on a stream. More... | |
|
virtualdefault |
|
inlinevirtual |
Apply the mapper to all child nodes.
Reimplemented in souffle::ram::Program, souffle::ram::NestedIntrinsicOperator, souffle::ram::Constraint, souffle::ram::IndexOperation, souffle::ram::Project, souffle::ram::UnpackRecord, souffle::ram::Conjunction, souffle::ram::AbstractExistenceCheck, souffle::ram::IndexAggregate, souffle::ram::NestedOperation, souffle::ram::SubroutineReturn, souffle::ram::Aggregate, souffle::ram::PackRecord, souffle::ram::LogRelationTimer, souffle::ram::Query, souffle::ram::IndexChoice, souffle::ram::Negation, souffle::ram::Exit, souffle::ram::LogTimer, souffle::ram::Loop, souffle::ram::Choice, souffle::ram::ListStatement, souffle::ram::AbstractOperator, souffle::ram::AbstractConditional, and souffle::ram::DebugInfo.
Definition at line 71 of file Node.h.
Referenced by souffle::ram::LogRelationTimer::clone().
|
pure virtual |
Create a clone (i.e.
deep copy) of this node
Implemented in souffle::ram::NestedOperation, souffle::ram::AbstractConditional, souffle::ram::RelationOperation, souffle::ram::TupleOperation, souffle::ram::Statement, souffle::ram::Condition, souffle::ram::Operation, souffle::ram::Expression, souffle::ram::Program, souffle::ram::Relation, souffle::ram::IndexOperation, souffle::ram::IndexChoice, souffle::ram::NestedIntrinsicOperator, souffle::ram::Constraint, souffle::ram::Project, souffle::ram::Conjunction, souffle::ram::UnpackRecord, souffle::ram::UserDefinedOperator, souffle::ram::Choice, souffle::ram::Aggregate, souffle::ram::SubroutineReturn, souffle::ram::LogRelationTimer, souffle::ram::ParallelIndexChoice, souffle::ram::IndexAggregate, souffle::ram::Query, souffle::ram::Negation, souffle::ram::ParallelIndexScan, souffle::ram::Exit, souffle::ram::LogTimer, souffle::ram::Loop, souffle::ram::PackRecord, souffle::ram::EmptinessCheck, souffle::ram::IndexScan, souffle::ram::ParallelAggregate, souffle::ram::ParallelIndexAggregate, souffle::ram::RelationSize, souffle::ram::IO, souffle::ram::Parallel, souffle::ram::ParallelChoice, souffle::ram::ParallelScan, souffle::ram::DebugInfo, souffle::ram::Extend, souffle::ram::IntrinsicOperator, souffle::ram::TupleElement, souffle::ram::Break, souffle::ram::Clear, souffle::ram::Filter, souffle::ram::ExistenceCheck, souffle::ram::Scan, souffle::ram::Call, souffle::ram::FloatConstant, souffle::ram::SignedConstant, souffle::ram::UnsignedConstant, souffle::ram::SubroutineArgument, souffle::ram::LogSize, souffle::ram::ProvenanceExistenceCheck, souffle::ram::Swap, souffle::ram::Sequence, souffle::ram::False, souffle::ram::True, souffle::ram::AutoIncrement, and souffle::ram::UndefValue.
|
inlineprotectedvirtual |
Equality check for two RAM nodes.
Default action is that nothing needs to be checked.
Reimplemented in souffle::ram::IndexOperation, souffle::ram::Program, souffle::ram::Relation, souffle::ram::IndexChoice, souffle::ram::NestedIntrinsicOperator, souffle::ram::Constraint, souffle::ram::Project, souffle::ram::IndexAggregate, souffle::ram::SubroutineReturn, souffle::ram::UnpackRecord, souffle::ram::UserDefinedOperator, souffle::ram::Aggregate, souffle::ram::Choice, souffle::ram::AbstractExistenceCheck, souffle::ram::Conjunction, souffle::ram::NestedOperation, souffle::ram::PackRecord, souffle::ram::Query, souffle::ram::Loop, souffle::ram::Negation, souffle::ram::Exit, souffle::ram::IntrinsicOperator, souffle::ram::EmptinessCheck, souffle::ram::IO, souffle::ram::ListStatement, souffle::ram::AbstractOperator, souffle::ram::RelationSize, souffle::ram::AbstractConditional, souffle::ram::TupleElement, souffle::ram::Call, souffle::ram::LogSize, souffle::ram::SubroutineArgument, souffle::ram::TupleOperation, souffle::ram::BinRelationStatement, souffle::ram::RelationOperation, souffle::ram::RelationStatement, and souffle::ram::Constant.
|
inlinevirtual |
Obtain list of all embedded child nodes.
Reimplemented in souffle::ram::IndexChoice, souffle::ram::Constraint, souffle::ram::Choice, souffle::ram::NestedIntrinsicOperator, souffle::ram::IndexOperation, souffle::ram::Program, souffle::ram::Conjunction, souffle::ram::NestedOperation, souffle::ram::AbstractExistenceCheck, souffle::ram::Project, souffle::ram::UnpackRecord, souffle::ram::Query, souffle::ram::Aggregate, souffle::ram::LogRelationTimer, souffle::ram::Negation, souffle::ram::Exit, souffle::ram::LogTimer, souffle::ram::Loop, souffle::ram::SubroutineReturn, souffle::ram::IndexAggregate, souffle::ram::ListStatement, souffle::ram::PackRecord, souffle::ram::AbstractConditional, souffle::ram::AbstractOperator, souffle::ram::TupleOperation, and souffle::ram::DebugInfo.
Definition at line 93 of file Node.h.
Referenced by souffle::ast::Visitor< void >::visitNode(), and souffle::ram::Visitor< Own< Node > >::visitNode().
|
inline |
|
inline |
Equivalence check for two RAM nodes.
|
protectedpure virtual |
Print RAM node.
Implemented in souffle::ram::Program, souffle::ram::Relation, souffle::ram::Constraint, souffle::ram::AbstractExistenceCheck, souffle::ram::Conjunction, souffle::ram::UserDefinedOperator, souffle::ram::PackRecord, souffle::ram::Negation, souffle::ram::EmptinessCheck, souffle::ram::IntrinsicOperator, souffle::ram::RelationSize, souffle::ram::TupleElement, souffle::ram::ProvenanceExistenceCheck, souffle::ram::FloatConstant, souffle::ram::SignedConstant, souffle::ram::UnsignedConstant, souffle::ram::SubroutineArgument, souffle::ram::False, souffle::ram::True, souffle::ram::AutoIncrement, souffle::ram::UndefValue, souffle::ram::Statement, and souffle::ram::Operation.
|
inlinevirtual |
|
friend |