6#include "downward/evaluation_context.h"
7#include "downward/operator_id.h"
24 do_insertion(EvaluationContext& eval_context,
const Entry& entry) = 0;
27 explicit OpenList(
bool preferred_only =
false);
28 virtual ~OpenList() =
default;
47 void insert(EvaluationContext& eval_context,
const Entry& entry);
52 virtual Entry remove_min() = 0;
55 virtual bool empty()
const = 0;
64 virtual void clear() = 0;
81 virtual void boost_preferred();
89 virtual void get_path_dependent_evaluators(std::set<Evaluator*>& evals) = 0;
106 bool only_contains_preferred_entries()
const;
121 virtual bool is_dead_end(EvaluationContext& eval_context)
const = 0;
123 is_reliable_dead_end(EvaluationContext& eval_context)
const = 0;
126using StateOpenListEntry = StateID;
127using EdgeOpenListEntry = std::pair<StateID, OperatorID>;
129using StateOpenList = OpenList<StateOpenListEntry>;
130using EdgeOpenList = OpenList<EdgeOpenListEntry>;
132template <
class Entry>
133OpenList<Entry>::OpenList(
bool only_preferred)
134 : only_preferred(only_preferred)
138template <
class Entry>
139void OpenList<Entry>::boost_preferred()
143template <
class Entry>
144void OpenList<Entry>::insert(
145 EvaluationContext& eval_context,
148 if (only_preferred && !eval_context.is_preferred())
return;
149 if (!is_dead_end(eval_context)) do_insertion(eval_context, entry);
152template <
class Entry>
153bool OpenList<Entry>::only_contains_preferred_entries()
const
155 return only_preferred;