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