# 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 |