AI 24/25 Project Software
Documentation for the AI 24/25 course programming project software
Loading...
Searching...
No Matches
trace_generator.h
1#ifndef PROBFD_CARTESIAN_TRACE_GENERATOR_H
2#define PROBFD_CARTESIAN_TRACE_GENERATOR_H
3
4#include "probfd/cartesian_abstractions/flaw_generator.h"
5#include "probfd/cartesian_abstractions/types.h"
6
7#include <compare>
8#include <deque>
9#include <memory>
10#include <ostream>
11
12// Forward Declarations
13namespace utils {
14class CountdownTimer;
15}
16
17namespace probfd::cartesian_abstractions {
18class CartesianAbstraction;
19class CartesianHeuristic;
20} // namespace probfd::cartesian_abstractions
21
22namespace probfd::cartesian_abstractions {
23
24struct TransitionOutcome {
25 int op_id;
26 int eff_id;
27 int target_id;
28
29 friend auto
30 operator<=>(const TransitionOutcome&, const TransitionOutcome&) = default;
31
32 friend std::ostream&
33 operator<<(std::ostream& os, const TransitionOutcome& t);
34};
35
36class TraceGenerator {
37public:
38 virtual ~TraceGenerator() = default;
39
40 virtual std::unique_ptr<Trace> find_trace(
41 CartesianAbstraction& abstraction,
42 int init_id,
43 CartesianHeuristic& heuristic,
44 utils::CountdownTimer& timer) = 0;
45
46 virtual void notify_split() = 0;
47};
48
49} // namespace probfd::cartesian_abstractions
50
51#endif // PROBFD_CARTESIAN_TRACE_GENERATOR_H