AI 24/25 Project Software
Documentation for the AI 24/25 course programming project software
Loading...
Searching...
No Matches
delegating_task.h
1#ifndef TASKS_DELEGATING_TASK_H
2#define TASKS_DELEGATING_TASK_H
3
4#include "downward/abstract_task.h"
5
6#include <memory>
7#include <string>
8#include <utility>
9#include <vector>
10
11namespace tasks {
12/*
13 Task transformation that delegates all calls to the corresponding methods of
14 the parent task. You should inherit from this class instead of AbstractTask
15 if you need specialized behavior for only some of the methods.
16*/
17class DelegatingTask : public AbstractTask {
18protected:
19 const std::shared_ptr<AbstractTask> parent;
20
21public:
22 explicit DelegatingTask(const std::shared_ptr<AbstractTask>& parent);
23 virtual ~DelegatingTask() override = default;
24
25 virtual int get_num_variables() const override;
26 virtual std::string get_variable_name(int var) const override;
27 virtual int get_variable_domain_size(int var) const override;
28 virtual int get_variable_axiom_layer(int var) const override;
29 virtual int get_variable_default_axiom_value(int var) const override;
30 virtual std::string get_fact_name(const FactPair& fact) const override;
31 virtual bool are_facts_mutex(const FactPair& fact1, const FactPair& fact2)
32 const override;
33
34 virtual int get_num_axioms() const override;
35
36 virtual std::string get_axiom_name(int index) const override;
37 virtual int get_num_axiom_preconditions(int index) const override;
38 virtual FactPair
39 get_axiom_precondition(int op_index, int fact_index) const override;
40 virtual int get_num_axiom_effects(int op_index) const override;
41 virtual int
42 get_num_axiom_effect_conditions(int op_index, int eff_index) const override;
43 virtual FactPair
44 get_axiom_effect_condition(int op_index, int eff_index, int cond_index)
45 const override;
46 virtual FactPair
47 get_axiom_effect(int op_index, int eff_index) const override;
48
49 virtual int get_operator_cost(int index) const override;
50 virtual std::string get_operator_name(int index) const override;
51 virtual int get_num_operators() const override;
52 virtual int get_num_operator_preconditions(int index) const override;
53 virtual FactPair
54 get_operator_precondition(int op_index, int fact_index) const override;
55 virtual int get_num_operator_effects(int op_index) const override;
56 virtual int get_num_operator_effect_conditions(int op_index, int eff_index)
57 const override;
58 virtual FactPair
59 get_operator_effect_condition(int op_index, int eff_index, int cond_index)
60 const override;
61 virtual FactPair
62 get_operator_effect(int op_index, int eff_index) const override;
63 virtual int
64 convert_operator_index(int index, const PlanningTask* ancestor_task)
65 const final override;
66
67 virtual int convert_operator_index_to_parent(int index) const
68 {
69 return index;
70 }
71
72 virtual int get_num_goals() const override;
73 virtual FactPair get_goal_fact(int index) const override;
74
75 virtual std::vector<int> get_initial_state_values() const override;
76
77 virtual void convert_ancestor_state_values(
78 std::vector<int>& values,
79 const PlanningTask* ancestor_task) const final override;
80 virtual void convert_state_values_from_parent(std::vector<int>&) const {}
81};
82} // namespace tasks
83
84#endif