COIN-OR::LEMON - Graph Library

Changeset 1420:e37cca875667 in lemon-0.x for src/lemon/xy.h


Ignore:
Timestamp:
05/14/05 19:37:33 (19 years ago)
Author:
Balazs Dezso
Branch:
default
Phase:
public
Convert:
svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@1890
Message:

Smart reference handling in map adaptors

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/lemon/xy.h

    r1392 r1420  
    1919
    2020#include <iostream>
     21#include <lemon/utility.h>
    2122
    2223///\ingroup misc
     
    351352  class XMap
    352353  {
    353     M &_map;
     354    typename SmartReference<M>::Type _map;
    354355  public:
     356    typedef True NeedCopy;
     357
    355358    typedef typename M::Value::Value Value;
    356359    typedef typename M::Key Key;
    357360    ///\e
    358     XMap(M &map) : _map(map) {}
     361    XMap(typename SmartParameter<M>::Type map) : _map(map) {}
    359362    Value operator[](Key k) const {return _map[k].x;}
    360363    void set(Key k,Value v) {_map.set(k,typename M::Value(v,_map[k].y));}
     
    373376  }
    374377
     378  template<class M>
     379  inline XMap<M> xMap(const M &m)
     380  {
     381    return XMap<M>(m);
     382  }
     383
    375384  ///Constant (read only) version of \ref XMap
    376385
     
    380389  class ConstXMap
    381390  {
    382     const M &_map;
     391    typename SmartConstReference<M>::Type _map;
    383392  public:
     393    typedef True NeedCopy;
     394
    384395    typedef typename M::Value::Value Value;
    385396    typedef typename M::Key Key;
     
    408419  class YMap
    409420  {
    410     M &_map;
     421    typename SmartReference<M>::Type _map;
    411422  public:
     423    typedef True NeedCopy;
     424
    412425    typedef typename M::Value::Value Value;
    413426    typedef typename M::Key Key;
    414427    ///\e
    415     YMap(M &map) : _map(map) {}
     428    YMap(typename SmartParameter<M>::Type map) : _map(map) {}
    416429    Value operator[](Key k) const {return _map[k].y;}
    417430    void set(Key k,Value v) {_map.set(k,typename M::Value(_map[k].x,v));}
     
    430443  }
    431444
     445  template<class M>
     446  inline YMap<M> yMap(const M &m)
     447  {
     448    return YMap<M>(m);
     449  }
     450
    432451  ///Constant (read only) version of \ref YMap
    433452
     
    437456  class ConstYMap
    438457  {
    439     const M &_map;
     458    typename SmartConstReference<M>::Type _map;
    440459  public:
     460    typedef True NeedCopy;
     461
    441462    typedef typename M::Value::Value Value;
    442463    typedef typename M::Key Key;
     
    467488  class NormSquareMap
    468489  {
    469     const M &_map;
     490    typename SmartConstReference<M>::Type _map;
    470491  public:
     492    typedef True NeedCopy;
     493
    471494    typedef typename M::Value::Value Value;
    472495    typedef typename M::Key Key;
Note: See TracChangeset for help on using the changeset viewer.