mapstorage.h
author hegyi
Thu, 23 Jun 2005 17:56:24 +0000
branchgui
changeset 26 b0c76a4d5801
parent 6 603b85626bc0
child 29 8db44e105187
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?)
     1 // -*- C++ -*- //
     2 
     3 #ifndef MAPSTORAGE_H
     4 #define MAPSTORAGE_H
     5 
     6 #include <all_include.h>
     7 
     8 ///Class MapStorage is responsible for storing
     9 ///NodeMaps and EdgeMaps that can be shown later
    10 ///on GUI. Therefore maps can be added to it,
    11 ///and datas over the added maps can be queried.
    12 ///The maps will be stored in an std::map,
    13 ///referenced with their names. Unfortunately at
    14 ///the moment it works only with double type maps
    15 ///
    16 ///\todo too many things are public!!
    17 class MapStorage
    18 {
    19 public:
    20 
    21   Graph g;
    22 
    23   ///Stores double type NodeMaps
    24   std::map< std::string,Graph::NodeMap<double> * > nodemap_storage;
    25 
    26   ///Stores double type EdgeMaps
    27   std::map< std::string,Graph::EdgeMap<double> * > edgemap_storage;
    28 
    29   //Stores the default values for the different visualization node attributes
    30   std::vector<Graph::NodeMap<double> > default_nodemaps;
    31 
    32   //Stores the default values for the different visualization edge attributes
    33   std::vector<Graph::EdgeMap<double> > default_edgemaps;
    34 
    35 public:
    36   ///Constructor of MapStorage. Expects the Graph of
    37   ///which maps will be stored in it.
    38   ///Its all activity is initializing default values
    39   ///for different visualization attributes
    40   ///
    41   ///\param graph is the graph for which the maps are stored in this object.
    42   MapStorage(Graph &);
    43 
    44   ///Adds given map to storage. A name and the map itself has to be provided.
    45   ///\param name is the name of map
    46   ///\nodemap is the pointer of the given nodemap
    47   ///\todo map should be given by reference!
    48   int addNodeMap(const std::string &,Graph::NodeMap<double> *);
    49 
    50   ///Adds given map to storage. A name and the map itself has to be provided.
    51   ///\param name is the name of map
    52   ///\edgemap is the pointer of the given edgemap
    53   ///\todo map should be given by reference!
    54   int addEdgeMap(const std::string &,Graph::EdgeMap<double> *);
    55 
    56   ///Returns how much nodemaps is stored in \ref MapStorage
    57   int numOfNodeMaps() {return nodemap_storage.size();};
    58 
    59   ///Returns how much edgemaps is stored in \ref MapStorage
    60   int numOfEdgeMaps() {return edgemap_storage.size();};
    61 
    62   ///Returns the maximum value of the given NodeMap. NodeMap has to be given by its name.
    63   ///\param name is the name of map of which maximum is searched
    64   double maxOfNodeMap(const std::string &);
    65 
    66   ///Returns the maximum value of the given EdgeMap. EdgeMap has to be given by its name.
    67   ///\param name is the name of map of which maximum is searched
    68   double maxOfEdgeMap(const std::string &);
    69 
    70   ///Returns the minimum value of the given NodeMap. NodeMap has to be given by its name.
    71   ///\param name is the name of map of which minimum is searched
    72   double minOfNodeMap(const std::string &);
    73 
    74   ///Returns the minimum value of the given EdgeMap. EdgeMap has to be given by its name.
    75   ///\param name is the name of map of which minimum is searched
    76   double minOfEdgeMap(const std::string &);
    77 
    78   ///To be able to iterate through each maps this function returns an iterator pointing to the first nodemap in the storage.
    79   std::map< std::string,Graph::NodeMap<double> * >::iterator beginOfNodeMaps(){return nodemap_storage.begin();};
    80 
    81   ///To be able to iterate through each maps this function returns an iterator pointing to the first edgemap in the storage.
    82   std::map< std::string,Graph::EdgeMap<double> * >::iterator beginOfEdgeMaps(){return edgemap_storage.begin();};
    83 
    84   ///This function sets a default base value for the newly created node
    85   void init_maps_for_node(NodeIt);
    86 
    87   ///This function sets a default base value for the newly created node
    88   void init_maps_for_edge(Graph::Edge);
    89 };
    90 
    91 #endif //MAPSTORAGE_H