5 #ifndef LODESTAR_DIRECTEDGRAPH_HPP
6 #define LODESTAR_DIRECTEDGRAPH_HPP
8 #include "Lodestar/GlobalConstants.hpp"
9 #include "Lodestar/blocks/BlockProto.hpp"
12 #include "Eigen/Sparse"
20 DirectedGraph() : adj_{LS_MAX_CONNECTIONS, LS_MAX_CONNECTIONS},
21 size_(LS_MAX_CONNECTIONS)
27 DirectedGraph(
const Eigen::SparseMatrix<int> &adj) : adj_(adj),
32 fromBlocks(const ::std::vector<BlockProto *> &blocks);
35 fromBlocks(const ::std::vector<const BlockProto *> &blocks);
39 fromBlocks(const ::std::array<BlockProto *, N> &blocks);
43 fromBlocks(const ::std::array<const BlockProto *, N> &blocks);
45 int &get(
int src,
int dst);
47 int get(
int src,
int dst)
const;
49 bool hasConnection(
int src,
int dst)
const;
55 void connect(
int src,
int dst,
int conn = 1);
57 const Eigen::SparseMatrix<int> &adj()
const;
60 Eigen::SparseMatrix<int> adj_;
68 #endif //LODESTAR_DIRECTEDGRAPH_HPP