3.2.11.6. dg/Strategies.hpp¶
3.2.11.6.1. Class dg::Strategy
¶
-
class dg::Strategy¶
Derivation graph strategies are used in
Builder::execute()
.
3.2.11.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.11.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.
- Returns:
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 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.