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:
- LogicErrorif 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. 
 
- Returns:
- a Sequence strategy. 
- Throws:
- LogicErrorif strategies.empty().
- Throws:
- LogicErrorif there is a nullptr in strategies.
 
- Returns:
- a Parallel strategy. 
- Throws:
- LogicErrorif strategies is empty.
- Throws:
- LogicErrorif 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 the call is the first in the filtering process. - Returns:
- a Filter Universe strategy if alsoUniverse is true, otherwise a Filter Subset strategy. 
- Throws:
- LogicErrorif filterFunc is a null pointer.
 
- Returns:
- an Execute strategy. 
- Throws:
- LogicErrorif func is a null pointer.
 
- Returns:
- a Rule strategy. 
- Throws:
- LogicErrorif r is a nullptr.
 
- Even though the predicate is called with a - Derivationobject, only the left side and the rule of the object is valid.- Returns:
- a Derivation Predicates strategy. 
- Throws:
- LogicErrorif predicate or strategy is a nullptr.
 
- Returns:
- a Derivation Predicates strategy. 
- Throws:
- LogicErrorif predicate or strategy is a nullptr.
 
- Returns:
- a Revive strategy. 
- Throws:
- LogicErrorif strategy is a nullptr.
 
- Returns:
- a Repeat strategy. 
- Throws:
- LogicErrorif limit < 0
- Throws:
- LogicErrorif strategy is a nullptr.