1#ifndef TASK_UTILS_SUCCESSOR_GENERATOR_FACTORY_H
2#define TASK_UTILS_SUCCESSOR_GENERATOR_FACTORY_H
7class PlanningTaskProxy;
9namespace successor_generator {
12using GeneratorPtr = std::unique_ptr<GeneratorBase>;
17class SuccessorGeneratorFactory {
18 using ValuesAndGenerators = std::vector<std::pair<int, GeneratorPtr>>;
20 const PlanningTaskProxy& task_proxy;
21 std::vector<OperatorInfo> operator_infos;
23 GeneratorPtr construct_fork(std::vector<GeneratorPtr> nodes)
const;
24 GeneratorPtr construct_leaf(OperatorRange range)
const;
25 GeneratorPtr construct_switch(
27 ValuesAndGenerators values_and_generators)
const;
28 GeneratorPtr construct_recursive(
int depth, OperatorRange range)
const;
31 explicit SuccessorGeneratorFactory(
const PlanningTaskProxy& task_proxy);
33 ~SuccessorGeneratorFactory();
34 GeneratorPtr create();