AI 24/25 Project Software
Documentation for the AI 24/25 course programming project software
Loading...
Searching...
No Matches
successor_generator.h
1#ifndef TASK_UTILS_SUCCESSOR_GENERATOR_H
2#define TASK_UTILS_SUCCESSOR_GENERATOR_H
3
4#include "downward/per_task_information.h"
5
6#include <memory>
7#include <vector>
8
9class OperatorID;
10class State;
11class PlanningTaskProxy;
12
13namespace successor_generator {
14class GeneratorBase;
15
16class SuccessorGenerator {
17 std::unique_ptr<GeneratorBase> root;
18
19public:
20 explicit SuccessorGenerator(const PlanningTaskProxy& task_proxy);
21 /*
22 We cannot use the default destructor (implicitly or explicitly)
23 here because GeneratorBase is a forward declaration and the
24 incomplete type cannot be destroyed.
25 */
26 ~SuccessorGenerator();
27
28 void generate_applicable_ops(
29 const State& state,
30 std::vector<OperatorID>& applicable_ops) const;
31};
32
33extern PerTaskInformation<SuccessorGenerator> g_successor_generators;
34} // namespace successor_generator
35
36#endif