Quetzal-CoaTL
The Coalescence Template Library
Loading...
Searching...
No Matches
tree_traits.hpp
1// Copyright 2021 Arnaud Becheler <abechele@umich.edu>
2
10
11#ifndef QUETZAL_TREE_TRAITS_H_INCLUDED
12#define QUETZAL_TREE_TRAITS_H_INCLUDED
13
14#include <boost/graph/adjacency_list.hpp>
15
17{
22{
24 template <class... Types> using model = boost::adjacency_list<Types...>;
25
27 using out_edge_list_type = boost::setS;
28
31 using vertex_list_type = boost::vecS;
32
36 using directed_type = boost::bidirectionalS;
37};
38} // namespace quetzal::coalescence::detail
39
40#endif
Definition binary_tree.hpp:37
Defines the desired graph properties and constraints for a coalescent tree.
Definition tree_traits.hpp:22
boost::vecS vertex_list_type
We don't allow for inserting vertices except at the end and we don't remove vertices....
Definition tree_traits.hpp:31
boost::bidirectionalS directed_type
Coalescent trees are directed acyclic graphs but we need bidirectionality for in-edges access.
Definition tree_traits.hpp:36
boost::setS out_edge_list_type
We want to enforce avoiding multi-graphs (edges with same end nodes)
Definition tree_traits.hpp:27
boost::adjacency_list< Types... > model
Trees are sparse graph in nature, adjacency_matrix would not be justified here.
Definition tree_traits.hpp:24