src/work/deba/pac_map_factory.h
author deba
Wed, 08 Sep 2004 12:06:45 +0000
changeset 822 88226d9fe821
child 921 818510fa3d99
permissions -rw-r--r--
The MapFactories have been removed from the code because
if we use macros then they increases only the complexity.

The pair iterators of the maps are separeted from the maps.

Some macros and comments has been changed.
     1 #ifndef PAC_MAP_FACTORY_H
     2 #define PAC_MAP_FACTORY_H
     3 
     4 #include "map_base.h"
     5 
     6 /**
     7 	Converter class to use the standard template
     8 	libary's pair associative containers as a graph map.
     9 */
    10 
    11 namespace hugo {
    12 	
    13 	template <typename G, typename K, typename KIt, template <typename, typename> class PAC>
    14 	class PacMapFactory {
    15 	
    16 	
    17 	public:
    18 		
    19 		typedef G Graph;
    20 		typedef K Key;
    21 		typedef KIt KeyIt;
    22 		
    23 		template <typename V> 
    24 		class Map : public MapBase<G, K, KIt> {
    25 		public:
    26 			typedef V Value;
    27 	
    28 			Map() {}
    29 			
    30 			Map(Graph& g, MapRegistry<G, K, KIt>& r) 
    31 				: MapBase<G, K, KIt>(g, r) {
    32 				init();
    33 			}
    34 				
    35 			virtual ~Map() {
    36 				destroy();
    37 			}
    38 	
    39 	
    40 			V& operator[](const K& key) {
    41 				return container.find(key)->second;
    42 			} 
    43 		
    44 			const V& operator[](const K& key) const {
    45 				return container.find(key)->second;
    46 			}
    47 	
    48 			const V& get(const K& key) const {
    49 				return container.find(key)->second;
    50 			} 
    51 		
    52 			void set(const K& key, const V& value) {
    53 				container.find(key)->second = value;
    54 			}
    55 		
    56 			void add(const K& key) {
    57 				container.insert(key);
    58 			}
    59 		
    60 			void erase(const K& key) {
    61 				container.erase(key);
    62 			}
    63 	
    64 		private:
    65 			typedef PAC<K, V> Container;
    66 		
    67 			Container container;
    68 		};
    69 		
    70 	};
    71 }
    72 
    73 #endif