# HG changeset patch
# User Peter Kovacs <kpeter@inf.elte.hu>
# Date 1207687886 7200
# Node ID 8899d1891a3c63a87d251d8dde847c308e741c34
# Parent b6bede534255e492871c601771442b65e12f7319
Small improvements in maps.h
 Add a new version of constMap() function.
 Fix in FunctorToMap class.
diff r b6bede534255 r 8899d1891a3c lemon/maps.h
a

b


116  116  /// Constructor with specified initial value 
117  117  
118  118  /// Constructor with specified initial value. 
119   /// \param v is the initial value of the map. 
 119  /// \param v The initial value of the map. 
120  120  ConstMap(const Value &v) : _value(v) {} 
121  121  
122  122  /// Gives back the specified value. 
… 
… 

141  141  template<typename K, typename V> 
142  142  inline ConstMap<K, V> constMap(const V &v) { 
143  143  return ConstMap<K, V>(v); 
 144  } 
 145  
 146  template<typename K, typename V> 
 147  inline ConstMap<K, V> constMap() { 
 148  return ConstMap<K, V>(); 
144  149  } 
145  150  
146  151  
… 
… 

613  618  typename K = typename F::argument_type, 
614  619  typename V = typename F::result_type> 
615  620  class FunctorToMap : public MapBase<K, V> { 
616   const F &_f; 
 621  F _f; 
617  622  public: 
618  623  typedef MapBase<K, V> Parent; 
619  624  typedef typename Parent::Key Key; 
diff r b6bede534255 r 8899d1891a3c test/maps_test.cc
a

b


83  83  // ConstMap 
84  84  { 
85  85  checkConcept<ReadWriteMap<A,B>, ConstMap<A,B> >(); 
 86  checkConcept<ReadWriteMap<A,C>, ConstMap<A,C> >(); 
86  87  ConstMap<A,B> map1; 
87  88  ConstMap<A,B> map2(B()); 
88  89  ConstMap<A,B> map3 = map1; 
89  90  map1 = constMap<A>(B()); 
 91  map1 = constMap<A,B>(); 
90  92  map1.setAll(B()); 
 93  ConstMap<A,C> map4(C(1)); 
 94  ConstMap<A,C> map5 = map4; 
 95  map4 = constMap<A>(C(2)); 
 96  map4.setAll(C(3)); 
91  97  
92  98  checkConcept<ReadWriteMap<A,int>, ConstMap<A,int> >(); 
93  99  check(constMap<A>(10)[A()] == 10, "Something is wrong with ConstMap"); 
94  100  
95  101  checkConcept<ReadWriteMap<A,int>, ConstMap<A,Const<int,10> > >(); 
96   ConstMap<A,Const<int,10> > map4; 
97   ConstMap<A,Const<int,10> > map5 = map4; 
98   map4 = map5; 
99   check(map4[A()] == 10 && map5[A()] == 10, "Something is wrong with ConstMap"); 
 102  ConstMap<A,Const<int,10> > map6; 
 103  ConstMap<A,Const<int,10> > map7 = map6; 
 104  map6 = constMap<A,int,10>(); 
 105  map7 = constMap<A,Const<int,10> >(); 
 106  check(map6[A()] == 10 && map7[A()] == 10, "Something is wrong with ConstMap"); 
100  107  } 
101  108  
102  109  // IdentityMap 