souffle  2.0.2-371-g6315b36
Data Structures | Namespaces | Macros | Functions
Visitor.h File Reference
#include "ram/AbstractConditional.h"
#include "ram/AbstractExistenceCheck.h"
#include "ram/AbstractOperator.h"
#include "ram/Aggregate.h"
#include "ram/AutoIncrement.h"
#include "ram/BinRelationStatement.h"
#include "ram/Break.h"
#include "ram/Call.h"
#include "ram/Choice.h"
#include "ram/Clear.h"
#include "ram/Condition.h"
#include "ram/Conjunction.h"
#include "ram/Constant.h"
#include "ram/Constraint.h"
#include "ram/DebugInfo.h"
#include "ram/EmptinessCheck.h"
#include "ram/ExistenceCheck.h"
#include "ram/Exit.h"
#include "ram/Expression.h"
#include "ram/Extend.h"
#include "ram/False.h"
#include "ram/Filter.h"
#include "ram/FloatConstant.h"
#include "ram/IO.h"
#include "ram/IndexAggregate.h"
#include "ram/IndexChoice.h"
#include "ram/IndexOperation.h"
#include "ram/IndexScan.h"
#include "ram/IntrinsicOperator.h"
#include "ram/ListStatement.h"
#include "ram/LogRelationTimer.h"
#include "ram/LogSize.h"
#include "ram/LogTimer.h"
#include "ram/Loop.h"
#include "ram/Negation.h"
#include "ram/NestedIntrinsicOperator.h"
#include "ram/NestedOperation.h"
#include "ram/Node.h"
#include "ram/Operation.h"
#include "ram/PackRecord.h"
#include "ram/Parallel.h"
#include "ram/ParallelAggregate.h"
#include "ram/ParallelChoice.h"
#include "ram/ParallelIndexAggregate.h"
#include "ram/ParallelIndexChoice.h"
#include "ram/ParallelIndexScan.h"
#include "ram/ParallelScan.h"
#include "ram/Program.h"
#include "ram/Project.h"
#include "ram/ProvenanceExistenceCheck.h"
#include "ram/Query.h"
#include "ram/Relation.h"
#include "ram/RelationOperation.h"
#include "ram/RelationSize.h"
#include "ram/RelationStatement.h"
#include "ram/Scan.h"
#include "ram/Sequence.h"
#include "ram/SignedConstant.h"
#include "ram/Statement.h"
#include "ram/SubroutineArgument.h"
#include "ram/SubroutineReturn.h"
#include "ram/Swap.h"
#include "ram/True.h"
#include "ram/TupleElement.h"
#include "ram/TupleOperation.h"
#include "ram/UndefValue.h"
#include "ram/UnpackRecord.h"
#include "ram/UnsignedConstant.h"
#include "ram/UserDefinedOperator.h"
#include "souffle/utility/FunctionalUtil.h"
#include "souffle/utility/MiscUtil.h"
#include <cstddef>
#include <functional>
#include <type_traits>
#include <typeinfo>
#include <vector>
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  souffle::ram::detail::is_ram_visitor< T >
 A type trait determining whether a given type is a visitor or not. More...
 
struct  souffle::ram::detail::is_ram_visitor< const T >
 
struct  souffle::ram::detail::is_ram_visitor< T & >
 
struct  souffle::ram::detail::LambdaVisitor< R, N >
 A specialized visitor wrapping a lambda function – an auxiliary type required for visitor convenience functions. More...
 
struct  souffle::ram::ram_visitor_tag
 A tag type required for the is_ram_visitor type trait to identify RamVisitors. More...
 
struct  souffle::ram::Visitor< R, Params >
 The generic base type of all RamVisitors realizing the dispatching of visitor calls. More...
 

Namespaces

 souffle
 
 souffle::ram
 
 souffle::ram::detail
 

Macros

#define FORWARD(Kind)   if (const auto* n = dynamic_cast<const Kind*>(&node)) return visit##Kind(*n, args...);
 
#define LINK(Node, Parent)
 

Functions

template<typename R , typename N >
LambdaVisitor< R, N > souffle::ram::detail::makeLambdaVisitor (const std::function< R(const N &)> &fun)
 A factory function for creating LambdaVisitor instances. More...
 
template<typename Lambda , typename R = typename lambda_traits<Lambda>::result_type, typename N = typename lambda_traits<Lambda>::arg0_type>
std::enable_if<!detail::is_ram_visitor< Lambda >::value, void >::type souffle::ram::visitDepthFirst (const Node &root, const Lambda &fun)
 A utility function visiting all nodes within the RAM fragment rooted by the given node recursively in a depth-first pre-order fashion applying the given function to each encountered node. More...
 
template<typename R , typename N >
void souffle::ram::visitDepthFirst (const Node &root, const std::function< R(const N &)> &fun)
 A utility function visiting all nodes within the RAM fragment rooted by the given node recursively in a depth-first pre-order fashion applying the given function to each encountered node. More...
 
template<typename R , typename... Ps, typename... Args>
void souffle::ram::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 in a depth-first pre-order fashion applying the given visitor to each encountered node. More...
 
template<typename R , typename... Ps, typename... Args>
void souffle::ram::visitDepthFirstPreOrder (const Node &root, Visitor< R, Ps... > &visitor, Args &... args)
 A utility function visiting all nodes within the RAM fragment rooted by the given node recursively in a depth-first pre-order fashion applying the given visitor to each encountered node. More...
 

Macro Definition Documentation

◆ FORWARD

#define FORWARD (   Kind)    if (const auto* n = dynamic_cast<const Kind*>(&node)) return visit##Kind(*n, args...);

◆ LINK

#define LINK (   Node,
  Parent 
)
Value:
virtual R visit##Node(const Node& n, Params... args) { \
return visit##Parent(n, args...); \
}

Definition at line 228 of file Visitor.h.

n
var n
Definition: htmlJsChartistMin.h:15