mapstorage.cc
author hegyi
Thu, 23 Jun 2005 17:56:24 +0000
branchgui
changeset 26 b0c76a4d5801
parent 6 603b85626bc0
child 28 fa28f1071bd6
permissions -rw-r--r--
A bug, explored by Alpar is corrected, but with value-checking, and not with correct values. (There is some problem with map values of new items! Maybe refreshemnt is the responsible thing?)
ladanyi@6
     1
#include <mapstorage.h>
ladanyi@6
     2
ladanyi@6
     3
MapStorage::MapStorage(Graph & graph):g(graph)
ladanyi@6
     4
{
ladanyi@6
     5
  for(int i=0;i<PROPERTY_NUM;i++)
ladanyi@6
     6
  {
ladanyi@6
     7
    Graph::EdgeMap<double> emd(g);
ladanyi@6
     8
    default_edgemaps.push_back(emd);
ladanyi@6
     9
    Graph::NodeMap<double> nmd(g);
ladanyi@6
    10
    default_nodemaps.push_back(nmd);
ladanyi@6
    11
  }
ladanyi@6
    12
  for(int i=0;i<PROPERTY_NUM;i++)
ladanyi@6
    13
  {
ladanyi@6
    14
      for (EdgeIt j(g); j!=INVALID; ++j)
ladanyi@6
    15
      {
ladanyi@6
    16
	(default_edgemaps[i])[j]=property_defaults[i];
ladanyi@6
    17
      }
ladanyi@6
    18
      addEdgeMap(property_strings[i],&(default_edgemaps[i]));
ladanyi@6
    19
  }
ladanyi@6
    20
ladanyi@6
    21
};
ladanyi@6
    22
ladanyi@6
    23
int MapStorage::addNodeMap(const std::string & name, Graph::NodeMap<double> *nodemap)
ladanyi@6
    24
{
ladanyi@6
    25
  nodemap_storage[name]=nodemap;
ladanyi@6
    26
  return 0;
ladanyi@6
    27
}
ladanyi@6
    28
ladanyi@6
    29
int MapStorage::addEdgeMap(const std::string & name, Graph::EdgeMap<double> *edgemap)
ladanyi@6
    30
{
ladanyi@6
    31
  edgemap_storage[name]=edgemap;
ladanyi@6
    32
  return 0;
ladanyi@6
    33
}
ladanyi@6
    34
ladanyi@6
    35
double MapStorage::maxOfNodeMap(const std::string & name)
ladanyi@6
    36
{
ladanyi@6
    37
  double max=0;
ladanyi@6
    38
  for (NodeIt j(g); j!=INVALID; ++j)
ladanyi@6
    39
  {
ladanyi@6
    40
    if( (*nodemap_storage[name])[j]>max )
ladanyi@6
    41
    {
ladanyi@6
    42
      max=(*nodemap_storage[name])[j];
ladanyi@6
    43
    }
ladanyi@6
    44
  }
ladanyi@6
    45
  return max;
ladanyi@6
    46
}
ladanyi@6
    47
ladanyi@6
    48
double MapStorage::maxOfEdgeMap(const std::string & name)
ladanyi@6
    49
{
ladanyi@6
    50
  double max=0;
ladanyi@6
    51
  for (EdgeIt j(g); j!=INVALID; ++j)
ladanyi@6
    52
  {
ladanyi@6
    53
    if( (*edgemap_storage[name])[j]>max )
ladanyi@6
    54
    {
ladanyi@6
    55
      max=(*edgemap_storage[name])[j];
ladanyi@6
    56
    }
ladanyi@6
    57
  }
ladanyi@6
    58
  return max;
ladanyi@6
    59
}
ladanyi@6
    60
ladanyi@6
    61
double MapStorage::minOfNodeMap(const std::string & name)
ladanyi@6
    62
{
ladanyi@6
    63
  NodeIt j(g);
ladanyi@6
    64
  double min=(*nodemap_storage[name])[j];
ladanyi@6
    65
  for (; j!=INVALID; ++j)
ladanyi@6
    66
  {
ladanyi@6
    67
    if( (*nodemap_storage[name])[j]<min )
ladanyi@6
    68
    {
ladanyi@6
    69
      min=(*nodemap_storage[name])[j];
ladanyi@6
    70
    }
ladanyi@6
    71
  }
ladanyi@6
    72
  return min;
ladanyi@6
    73
}
ladanyi@6
    74
ladanyi@6
    75
double MapStorage::minOfEdgeMap(const std::string & name)
ladanyi@6
    76
{
ladanyi@6
    77
  EdgeIt j(g);
ladanyi@6
    78
  double min=(*edgemap_storage[name])[j];
ladanyi@6
    79
  for (EdgeIt j(g); j!=INVALID; ++j)
ladanyi@6
    80
  {
ladanyi@6
    81
    if( (*edgemap_storage[name])[j]<min )
ladanyi@6
    82
    {
ladanyi@6
    83
      min=(*edgemap_storage[name])[j];
ladanyi@6
    84
    }
ladanyi@6
    85
  }
ladanyi@6
    86
  return min;
ladanyi@6
    87
}
ladanyi@6
    88
hegyi@26
    89
void MapStorage::init_maps_for_edge(Graph::Edge e)
hegyi@26
    90
{
hegyi@26
    91
  e=e;
hegyi@26
    92
// beragad, aztan csovez
hegyi@26
    93
//   std::map< std::string,Graph::EdgeMap<double> * >::iterator ems_it;
hegyi@26
    94
//   for(ems_it=edgemap_storage.begin();ems_it!=edgemap_storage.end();ems_it++)
hegyi@26
    95
//     {
hegyi@26
    96
//       std::cout << "szevasz\n";
hegyi@26
    97
//       (*((*ems_it).second))[e]=0;
hegyi@26
    98
//     }
hegyi@26
    99
//   std::cout << std::endl;
hegyi@26
   100
hegyi@26
   101
// g_closure_invoke...
hegyi@26
   102
//   for(int i=0;i<PROPERTY_NUM;i++)
hegyi@26
   103
//     {
hegyi@26
   104
//       (default_edgemaps[i])[e]=property_defaults[i];
hegyi@26
   105
//     }
hegyi@26
   106
}