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.