31#ifndef SILICON_TYPES_HPP
32#define SILICON_TYPES_HPP
37#include "boost/graph/adjacency_list.hpp"
38#include "gsl/pointers"
46using NotNull = gsl::not_null<T>;
60template <
typename Key,
typename Value,
typename Compare = std::less<Key>>
66template <
typename Key,
typename Value,
typename Hash = std::hash<Key>,
typename KeyEqual = std::equal_to<Key>>
88struct container_gen<
Si::GraphVector, T> {
93struct parallel_edge_traits<
Si::GraphVector> {
94 typedef allow_parallel_edge_tag type;
98struct container_gen<
Si::GraphList, T> {
103struct parallel_edge_traits<
Si::GraphList> {
104 typedef allow_parallel_edge_tag type;
116template <
typename T,
typename ContainerT = GraphVector>
117using Graph = boost::adjacency_list<ContainerT, ContainerT, boost::bidirectionalS, T>;
boost::adjacency_list< ContainerT, ContainerT, boost::bidirectionalS, T > Graph
Container for representing relationships between objects.
gsl::strict_not_null< T > NotNull
Vector for use in Graphs.