7 #include <graybat/graphPolicy/Traits.hpp>
15 template<
typename T_GraphPolicy>
18 using GraphPolicy = T_GraphPolicy;
19 using VertexDescription = graybat::graphPolicy::VertexDescription<GraphPolicy>;
20 using EdgeDescription = graybat::graphPolicy::EdgeDescription<GraphPolicy>;
21 using GraphDescription = graybat::graphPolicy::GraphDescription<GraphPolicy>;
22 using EdgeProperty = graybat::graphPolicy::EdgeProperty<GraphPolicy>;
23 using VertexProperty = graybat::graphPolicy::VertexProperty<GraphPolicy>;
25 const unsigned verticesCount;
27 Chain(
const unsigned verticesCount) :
28 verticesCount(verticesCount) {
33 GraphDescription operator()(){
34 std::vector<VertexDescription> vertices;
36 for(
size_t i = 0; i < verticesCount; ++i){
38 vertices.push_back(std::make_pair(i, VertexProperty()));
41 else if(i == verticesCount - 1){
42 vertices.push_back(std::make_pair(i, VertexProperty()));
46 vertices.push_back(std::make_pair(i, VertexProperty()));
52 std::vector<EdgeDescription> edges;
53 if(vertices.size() != 1) {
54 for(
size_t i = 0; i < vertices.size() - 1; ++i){
55 edges.push_back(std::make_pair(std::make_pair(vertices[i].first, vertices[i + 1].first), EdgeProperty()));
61 return std::make_pair(vertices,edges);