3.2.12.6. dg/Strategies.hpp¶
3.2.12.6.1. Class dg::Strategy
¶
-
class dg::Strategy¶
Derivation graph strategies are used in
Builder::execute()
.
3.2.12.6.1.1. Synopsis¶
-
static std::shared_ptr<Strategy> makeAdd(bool onlyUniverse, const std::vector<std::shared_ptr<graph::Graph>> &graphs, IsomorphismPolicy graphPolicy)
-
static std::shared_ptr<Strategy> makeAdd(bool onlyUniverse, const std::shared_ptr<Function<std::vector<std::shared_ptr<graph::Graph>>()>> generator, IsomorphismPolicy graphPolicy)
-
static std::shared_ptr<Strategy> makeSequence(const std::vector<std::shared_ptr<Strategy>> &strategies)
-
static std::shared_ptr<Strategy> makeParallel(const std::vector<std::shared_ptr<Strategy>> &strategies)
-
static std::shared_ptr<Strategy> makeFilter(bool alsoUniverse, std::shared_ptr<Function<bool(std::shared_ptr<graph::Graph>, const Strategy::GraphState&, bool)>> filterFunc)
-
static std::shared_ptr<Strategy> makeExecute(std::shared_ptr<Function<void(const Strategy::GraphState&)>> func)
-
static std::shared_ptr<Strategy> makeRule(std::shared_ptr<rule::Rule> r)
-
static std::shared_ptr<Strategy> makeLeftPredicate(std::shared_ptr<Function<bool(const Derivation&)>> predicate, std::shared_ptr<Strategy> strategy)
-
static std::shared_ptr<Strategy> makeRightPredicate(std::shared_ptr<Function<bool(const Derivation&)>> predicate, std::shared_ptr<Strategy> strategy)
-
static std::shared_ptr<Strategy> makeRevive(std::shared_ptr<Strategy> strategy)
-
static std::shared_ptr<Strategy> makeRepeat(int limit, std::shared_ptr<Strategy> strategy)
-
class dg::Strategy::GraphState
3.2.12.6.1.2. Details¶
- Returns
an Add Universe strategy if onlyUniverse is true, otherwise an Add Subset strategy. The graphPolicy refers to the checking of each added graph against the internal graph database.
- Throws
LogicError
if there is a nullptr in graphs.
- Returns
an Add Universe strategy if onlyUniverse is true, otherwise an Add Subset strategy. The graphPolicy refers to the checking of each added graph against the internal graph database.
- Retunrs
a Sequence strategy.
- Throws
LogicError
if strategies.empty().- Throws
LogicError
if there is a nullptr in strategies.
- Returns
a Parallel strategy.
- Throws
LogicError
if strategies is empty.- Throws
LogicError
if there is a nullptr in strategies.
The filtering predicate will be called for each graph in either the subset or the universe. The predicate is called with the graph and the graph state as arguments, and a bool stating whether or not the call is the first in the filtering process.
- Returns
a Filter Universe strategy if alsoUniverse is true, otherwise a Filter Subset strategy.
- Throws
LogicError
if filterFunc is a null pointer.
- Returns
an Execute strategy.
- Throws
LogicError
if func is a null pointer.
- Returns
a Rule strategy.
- Throws
LogicError
if r is a nullptr.
Even though the predicate is called with a
Derivation
object, only the left side and the rule of the object is valid.- Returns
a Derivation Predicates strategy.
- Throws
LogicError
if predicate or strategy is a nullptr.
- Returns
a Derivation Predicates strategy.
- Throws
LogicError
if predicate or strategy is a nullptr.
- Returns
a Revive strategy.
- Throws
LogicError
if strategy is a nullptr.
- Returns
a Repeat strategy.
- Throws
LogicError
if limit < 0- Throws
LogicError
if strategy is a nullptr.