1#ifndef LANDMARKS_LANDMARK_STATUS_MANAGER_H
2#define LANDMARKS_LANDMARK_STATUS_MANAGER_H
4#include "downward/landmarks/landmark_graph.h"
6#include "downward/per_state_bitset.h"
12class LandmarkStatusManager {
13 LandmarkGraph& lm_graph;
14 const std::vector<LandmarkNode*> goal_landmarks;
15 const std::vector<std::pair<LandmarkNode*, std::vector<LandmarkNode*>>>
16 greedy_necessary_children;
17 const std::vector<std::pair<LandmarkNode*, std::vector<LandmarkNode*>>>
20 PerStateBitset past_landmarks;
21 PerStateBitset future_landmarks;
23 void progress_landmarks(
24 ConstBitsetView& parent_past,
25 ConstBitsetView& parent_future,
26 const State& parent_ancestor_state,
29 const State& ancestor_state);
30 void progress_goals(
const State& ancestor_state, BitsetView& future);
31 void progress_greedy_necessary_orderings(
32 const State& ancestor_state,
33 const BitsetView& past,
36 progress_reasonable_orderings(
const BitsetView& past, BitsetView& future);
39 LandmarkStatusManager(
42 bool progress_greedy_necessary_orderings,
43 bool progress_reasonable_orderings);
45 BitsetView get_past_landmarks(
const State& state);
46 BitsetView get_future_landmarks(
const State& state);
47 ConstBitsetView get_past_landmarks(
const State& state)
const;
48 ConstBitsetView get_future_landmarks(
const State& state)
const;
50 void progress_initial_state(
const State& initial_state);
52 const State& parent_ancestor_state,
54 const State& ancestor_state);