Graybat  1.1
Graph Approach for Highly Generic Communication Schemes Based on Adaptive Topologies
BiStar.hpp
1 # pragma once
2 
3 // STL
4 #include <utility> /* std::make_pair */
5 
6 // GRAYBAT
7 #include <graybat/graphPolicy/Traits.hpp>
8 namespace graybat {
9 
10  namespace pattern {
11 
12  template<typename T_GraphPolicy>
13  struct BiStar {
14 
15  using GraphPolicy = T_GraphPolicy;
16  using VertexDescription = graybat::graphPolicy::VertexDescription<GraphPolicy>;
17  using EdgeDescription = graybat::graphPolicy::EdgeDescription<GraphPolicy>;
18  using GraphDescription = graybat::graphPolicy::GraphDescription<GraphPolicy>;
19  using EdgeProperty = graybat::graphPolicy::EdgeProperty<GraphPolicy>;
20  using VertexProperty = graybat::graphPolicy::VertexProperty<GraphPolicy>;
21 
22  const unsigned verticesCount;
23 
24  BiStar(const unsigned verticesCount) :
25  verticesCount(verticesCount) {
26 
27  }
28 
29 
30  GraphDescription operator()(){
31  std::vector<VertexDescription> vertices(verticesCount);
32 
33  std::vector<EdgeDescription> edges;
34 
35  for(unsigned i = 0; i < vertices.size(); ++i){
36  vertices.at(i) = std::make_pair(i, VertexProperty());
37  if(i != 0){
38  edges.push_back(std::make_pair(std::make_pair(vertices[i].first, vertices[0].first), EdgeProperty()));
39  edges.push_back(std::make_pair(std::make_pair(vertices[0].first, vertices[i].first), EdgeProperty()));
40  }
41 
42  }
43 
44  return std::make_pair(vertices,edges);
45  }
46 
47  };
48 
49  } /* pattern */
50 
51 } /* graybat */
Definition: BiStar.hpp:13
Definition: BiStar.hpp:8