COIN-OR::LEMON - Graph Library

source: glemon-0.x/mapstorage.cc @ 28:fa28f1071bd6

gui
Last change on this file since 28:fa28f1071bd6 was 28:fa28f1071bd6, checked in by Hegyi Péter, 19 years ago

NodeMap? values are now visualizable. Todo: default map-values

File size: 2.5 KB
Line 
1#include <mapstorage.h>
2
3MapStorage::MapStorage(Graph & graph):g(graph)
4{
5  for(int i=0;i<EDGE_PROPERTY_NUM;i++)
6  {
7    Graph::EdgeMap<double> emd(g,edge_property_defaults[i]);
8    default_edgemaps.push_back(emd);
9  }
10
11  for(int i=0;i<NODE_PROPERTY_NUM;i++)
12  {
13    Graph::NodeMap<double> nmd(g,node_property_defaults[i]);
14    default_nodemaps.push_back(nmd);
15  }
16
17  for(int i=0;i<EDGE_PROPERTY_NUM;i++)
18  {
19      for (EdgeIt j(g); j!=INVALID; ++j)
20      {
21        (default_edgemaps[i])[j]=edge_property_defaults[i];
22      }
23      addEdgeMap(edge_property_strings[i],&(default_edgemaps[i]));
24  }
25
26  for(int i=0;i<NODE_PROPERTY_NUM;i++)
27  {
28      for (NodeIt j(g); j!=INVALID; ++j)
29      {
30        (default_nodemaps[i])[j]=node_property_defaults[i];
31      }
32      addNodeMap(node_property_strings[i],&(default_nodemaps[i]));
33  }
34
35};
36
37int MapStorage::addNodeMap(const std::string & name, Graph::NodeMap<double> *nodemap)
38{
39  nodemap_storage[name]=nodemap;
40  return 0;
41}
42
43int MapStorage::addEdgeMap(const std::string & name, Graph::EdgeMap<double> *edgemap)
44{
45  edgemap_storage[name]=edgemap;
46  return 0;
47}
48
49double MapStorage::maxOfNodeMap(const std::string & name)
50{
51  double max=0;
52  for (NodeIt j(g); j!=INVALID; ++j)
53  {
54    if( (*nodemap_storage[name])[j]>max )
55    {
56      max=(*nodemap_storage[name])[j];
57    }
58  }
59  return max;
60}
61
62double MapStorage::maxOfEdgeMap(const std::string & name)
63{
64  double max=0;
65  for (EdgeIt j(g); j!=INVALID; ++j)
66  {
67    if( (*edgemap_storage[name])[j]>max )
68    {
69      max=(*edgemap_storage[name])[j];
70    }
71  }
72  return max;
73}
74
75double MapStorage::minOfNodeMap(const std::string & name)
76{
77  NodeIt j(g);
78  double min=(*nodemap_storage[name])[j];
79  for (; j!=INVALID; ++j)
80  {
81    if( (*nodemap_storage[name])[j]<min )
82    {
83      min=(*nodemap_storage[name])[j];
84    }
85  }
86  return min;
87}
88
89double MapStorage::minOfEdgeMap(const std::string & name)
90{
91  EdgeIt j(g);
92  double min=(*edgemap_storage[name])[j];
93  for (EdgeIt j(g); j!=INVALID; ++j)
94  {
95    if( (*edgemap_storage[name])[j]<min )
96    {
97      min=(*edgemap_storage[name])[j];
98    }
99  }
100  return min;
101}
102
103void MapStorage::init_maps_for_edge(Graph::Edge e)
104{
105  e=e;
106// beragad, aztan csovez
107//   std::map< std::string,Graph::EdgeMap<double> * >::iterator ems_it;
108//   for(ems_it=edgemap_storage.begin();ems_it!=edgemap_storage.end();ems_it++)
109//     {
110//       std::cout << "szevasz\n";
111//       (*((*ems_it).second))[e]=0;
112//     }
113//   std::cout << std::endl;
114
115// g_closure_invoke...
116//   for(int i=0;i<EDGE_PROPERTY_NUM;i++)
117//     {
118//       (default_edgemaps[i])[e]=property_defaults[i];
119//     }
120}
Note: See TracBrowser for help on using the repository browser.