diff -r c3244a26adb1 -r e37cca875667 src/lemon/xy.h --- a/src/lemon/xy.h Sat May 14 17:34:31 2005 +0000 +++ b/src/lemon/xy.h Sat May 14 17:37:33 2005 +0000 @@ -18,6 +18,7 @@ #define LEMON_XY_H #include +#include ///\ingroup misc ///\file @@ -350,12 +351,14 @@ template class XMap { - M &_map; + typename SmartReference::Type _map; public: + typedef True NeedCopy; + typedef typename M::Value::Value Value; typedef typename M::Key Key; ///\e - XMap(M &map) : _map(map) {} + XMap(typename SmartParameter::Type map) : _map(map) {} Value operator[](Key k) const {return _map[k].x;} void set(Key k,Value v) {_map.set(k,typename M::Value(v,_map[k].y));} }; @@ -372,6 +375,12 @@ return XMap(m); } + template + inline XMap xMap(const M &m) + { + return XMap(m); + } + ///Constant (read only) version of \ref XMap ///\ingroup maps @@ -379,8 +388,10 @@ template class ConstXMap { - const M &_map; + typename SmartConstReference::Type _map; public: + typedef True NeedCopy; + typedef typename M::Value::Value Value; typedef typename M::Key Key; ///\e @@ -407,12 +418,14 @@ template class YMap { - M &_map; + typename SmartReference::Type _map; public: + typedef True NeedCopy; + typedef typename M::Value::Value Value; typedef typename M::Key Key; ///\e - YMap(M &map) : _map(map) {} + YMap(typename SmartParameter::Type map) : _map(map) {} Value operator[](Key k) const {return _map[k].y;} void set(Key k,Value v) {_map.set(k,typename M::Value(_map[k].x,v));} }; @@ -429,6 +442,12 @@ return YMap(m); } + template + inline YMap yMap(const M &m) + { + return YMap(m); + } + ///Constant (read only) version of \ref YMap ///\ingroup maps @@ -436,8 +455,10 @@ template class ConstYMap { - const M &_map; + typename SmartConstReference::Type _map; public: + typedef True NeedCopy; + typedef typename M::Value::Value Value; typedef typename M::Key Key; ///\e @@ -466,8 +487,10 @@ template class NormSquareMap { - const M &_map; + typename SmartConstReference::Type _map; public: + typedef True NeedCopy; + typedef typename M::Value::Value Value; typedef typename M::Key Key; ///\e