1.1 --- a/lemon/maps.h Thu Jun 09 09:31:28 2005 +0000
1.2 +++ b/lemon/maps.h Thu Jun 09 09:46:34 2005 +0000
1.3 @@ -146,9 +146,13 @@
1.4 typedef typename parent::value_type PairType;
1.5
1.6 public:
1.7 + ///\e
1.8 typedef K Key;
1.9 + ///\e
1.10 typedef T Value;
1.11 + ///\e
1.12 typedef T& Reference;
1.13 + ///\e
1.14 typedef const T& ConstReference;
1.15
1.16
1.17 @@ -226,7 +230,9 @@
1.18
1.19 typedef True NeedCopy;
1.20
1.21 + ///\e
1.22 typedef typename M::Key Key;
1.23 + ///\e
1.24 typedef T Value;
1.25
1.26 ///Constructor
1.27 @@ -271,7 +277,9 @@
1.28
1.29 typedef True NeedCopy;
1.30
1.31 + ///\e
1.32 typedef typename M1::Key Key;
1.33 + ///\e
1.34 typedef typename M1::Value Value;
1.35
1.36 ///Constructor
1.37 @@ -318,7 +326,9 @@
1.38 public:
1.39
1.40 typedef True NeedCopy;
1.41 + ///\e
1.42 typedef typename M::Key Key;
1.43 + ///\e
1.44 typedef typename M::Value Value;
1.45
1.46 ///Constructor
1.47 @@ -356,7 +366,9 @@
1.48 public:
1.49
1.50 typedef True NeedCopy;
1.51 + ///\e
1.52 typedef typename M1::Key Key;
1.53 + ///\e
1.54 typedef typename M1::Value Value;
1.55
1.56 ///Constructor
1.57 @@ -394,7 +406,9 @@
1.58 public:
1.59
1.60 typedef True NeedCopy;
1.61 + ///\e
1.62 typedef typename M1::Key Key;
1.63 + ///\e
1.64 typedef typename M1::Value Value;
1.65
1.66 ///Constructor
1.67 @@ -438,7 +452,9 @@
1.68 public:
1.69
1.70 typedef True NeedCopy;
1.71 + ///\e
1.72 typedef typename M::Key Key;
1.73 + ///\e
1.74 typedef typename M::Value Value;
1.75
1.76 ///Constructor
1.77 @@ -476,7 +492,9 @@
1.78 public:
1.79
1.80 typedef True NeedCopy;
1.81 + ///\e
1.82 typedef typename M1::Key Key;
1.83 + ///\e
1.84 typedef typename M1::Value Value;
1.85
1.86 ///Constructor
1.87 @@ -522,7 +540,9 @@
1.88 public:
1.89
1.90 typedef True NeedCopy;
1.91 + ///\e
1.92 typedef typename M2::Key Key;
1.93 + ///\e
1.94 typedef typename M1::Value Value;
1.95
1.96 ///Constructor
1.97 @@ -575,7 +595,9 @@
1.98 public:
1.99
1.100 typedef True NeedCopy;
1.101 + ///\e
1.102 typedef typename M1::Key Key;
1.103 + ///\e
1.104 typedef V Value;
1.105
1.106 ///Constructor
1.107 @@ -624,7 +646,9 @@
1.108 public:
1.109
1.110 typedef True NeedCopy;
1.111 + ///\e
1.112 typedef typename M::Key Key;
1.113 + ///\e
1.114 typedef typename M::Value Value;
1.115
1.116 ///Constructor
1.117 @@ -676,7 +700,9 @@
1.118 public:
1.119
1.120 typedef True NeedCopy;
1.121 + ///\e
1.122 typedef typename M::Key Key;
1.123 + ///\e
1.124 typedef typename M::Value Value;
1.125
1.126 ///Constructor
1.127 @@ -717,7 +743,9 @@
1.128 public:
1.129
1.130 typedef True NeedCopy;
1.131 + ///\e
1.132 typedef K Key;
1.133 + ///\e
1.134 typedef V Value;
1.135
1.136 ///Constructor
1.137 @@ -756,9 +784,13 @@
1.138 public:
1.139
1.140 typedef True NeedCopy;
1.141 + ///\e
1.142 typedef typename M::Key argument_type;
1.143 + ///\e
1.144 typedef typename M::Value result_type;
1.145 + ///\e
1.146 typedef typename M::Key Key;
1.147 + ///\e
1.148 typedef typename M::Value Value;
1.149
1.150 ///Constructor
1.151 @@ -806,7 +838,9 @@
1.152 public:
1.153
1.154 typedef True NeedCopy;
1.155 + ///\e
1.156 typedef typename M1::Key Key;
1.157 + ///\e
1.158 typedef typename M1::Value Value;
1.159
1.160 ///Constructor
1.161 @@ -831,9 +865,59 @@
1.162 return ForkMap<M1,M2>(m1,m2);
1.163 }
1.164
1.165 +
1.166 +
1.167 + /* ************* BOOL MAPS ******************* */
1.168 +
1.169 + ///Logical 'not' of a map
1.170 +
1.171 + ///This bool \ref concept::ReadMap "read only map" returns the
1.172 + ///logical negation of
1.173 + ///value returned by the
1.174 + ///given map. Its \c Key and will be inherited from \c M,
1.175 + ///its Value is <tt>bool</tt>.
1.176 +
1.177 + template<class M>
1.178 + class NotMap
1.179 + {
1.180 + typename SmartConstReference<M>::Type m;
1.181 + public:
1.182 +
1.183 + typedef True NeedCopy;
1.184 + ///\e
1.185 + typedef typename M::Key Key;
1.186 + ///\e
1.187 + typedef bool Value;
1.188 +
1.189 + ///Constructor
1.190 +
1.191 + ///\e
1.192 + ///
1.193 + NotMap(const M &_m) : m(_m) {};
1.194 + Value operator[](Key k) const {return !m[k];}
1.195 + };
1.196 +
1.197 + ///Returns a \ref NotMap class
1.198 +
1.199 + ///This function just returns a \ref NotMap class.
1.200 + ///\relates NotMap
1.201 + template<class M>
1.202 + inline NotMap<M> notMap(const M &m)
1.203 + {
1.204 + return NotMap<M>(m);
1.205 + }
1.206 +
1.207 +
1.208 +
1.209 +
1.210 +
1.211 +
1.212 +
1.213 +
1.214 +
1.215 +
1.216 +
1.217 /// @}
1.218 -
1.219 }
1.220
1.221 -
1.222 #endif // LEMON_MAPS_H