Horizon
Loading...
Searching...
No Matches
track_graph.hpp
1#pragma once
2#include <memory>
3#include "board/track.hpp"
4
5namespace horizon {
6class TrackGraph {
7public:
8 class Edge;
9
10 class Node {
11 public:
12 bool keep = false;
13 std::list<Edge *> edges;
14 };
15
16 class Edge {
17 public:
18 Edge(Node &f, Node &t, const Track &tr) : from(&f), to(&t), tracks({tr.uuid})
19 {
20 }
21
22 Node *from = nullptr;
23 Node *to = nullptr;
24
25 Node *get_other_node(Node *n) const;
26
27 std::set<UUID> tracks;
28 };
29
30 void merge_edges();
31 void dump(const class Board &brd, const std::string &filename) const;
32
33 Node &get_or_create_node(const Track::Connection &conn);
34 void add_track(const Track &track);
35 std::map<std::pair<UUID, UUID>, Node> nodes;
36 std::list<Edge> edges;
37};
38} // namespace horizon
Definition board.hpp:47
Definition track_graph.hpp:16
Definition track_graph.hpp:10
Definition track_graph.hpp:6
Definition track.hpp:32
Definition track.hpp:14