src/gui/mapstorage.cc
author deba
Thu, 19 May 2005 11:49:42 +0000
changeset 1429 4283998fb2be
permissions -rw-r--r--
Able to read edge from undirected edgeset
Graph reader and graph writer can resolve items by id.

It makes possible:

GraphReader<Graph> reader(std::cin, graph);

reader.readNodeMap....

NewEdgeSetAdaptor<Graph> edgeset(graph);
UndirEdgeSetReader<Graph> unir_edgeset_reader(reader, edgeset, reader);

reader.run();

It reads the graph and an additional edgeset in to the edgeset.
     1 #include <mapstorage.h>
     2 
     3 MapStorage::MapStorage(Graph & graph):g(graph)
     4 {
     5   for(int i=0;i<PROPERTY_NUM;i++)
     6   {
     7     Graph::EdgeMap<double> emd(g);
     8     default_edgemaps.push_back(emd);
     9     Graph::NodeMap<double> nmd(g);
    10     default_nodemaps.push_back(nmd);
    11   }
    12 
    13   //std::string defaultstr="Default ";
    14   for(int i=0;i<PROPERTY_NUM;i++)
    15   {
    16       for (EdgeIt j(g); j!=INVALID; ++j)
    17       {
    18 	(default_edgemaps[i])[j]=property_defaults[i];
    19       }
    20       addEdgeMap(property_strings[i],&(default_edgemaps[i]));
    21   }
    22 
    23 };
    24 
    25 int MapStorage::addNodeMap(const std::string & name, Graph::NodeMap<double> *nodemap)
    26 {
    27   nodemap_storage[name]=nodemap;
    28   return 0;
    29 }
    30 int MapStorage::addEdgeMap(const std::string & name, Graph::EdgeMap<double> *edgemap)
    31 {
    32   edgemap_storage[name]=edgemap;
    33   return 0;
    34 }
    35 
    36 double MapStorage::maxOfNodeMap(const std::string & name)
    37 {
    38   double max=0;
    39   for (NodeIt j(g); j!=INVALID; ++j)
    40   {
    41     if( (*nodemap_storage[name])[j]>max )
    42     {
    43       max=(*nodemap_storage[name])[j];
    44     }
    45   }
    46   return max;
    47 }
    48 
    49 double MapStorage::maxOfEdgeMap(const std::string & name)
    50 {
    51   double max=0;
    52   for (EdgeIt j(g); j!=INVALID; ++j)
    53   {
    54     if( (*edgemap_storage[name])[j]>max )
    55     {
    56       max=(*edgemap_storage[name])[j];
    57     }
    58   }
    59   return max;
    60 }
    61 
    62 double MapStorage::minOfNodeMap(const std::string & name)
    63 {
    64   NodeIt j(g);
    65   double min=(*nodemap_storage[name])[j];
    66   for (; j!=INVALID; ++j)
    67   {
    68     if( (*nodemap_storage[name])[j]<min )
    69     {
    70       min=(*nodemap_storage[name])[j];
    71     }
    72   }
    73   return min;
    74 }
    75 
    76 double MapStorage::minOfEdgeMap(const std::string & name)
    77 {
    78   EdgeIt j(g);
    79   double min=(*edgemap_storage[name])[j];
    80   for (EdgeIt j(g); j!=INVALID; ++j)
    81   {
    82     if( (*edgemap_storage[name])[j]<min )
    83     {
    84       min=(*edgemap_storage[name])[j];
    85     }
    86   }
    87   return min;
    88 }
    89