souffle
2.0.2-371-g6315b36
|
#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>
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... | |
#define FORWARD | ( | Kind | ) | if (const auto* n = dynamic_cast<const Kind*>(&node)) return visit##Kind(*n, args...); |