#ifndef XYMAP_H
#define XYMAP_H

#include <lemon/list_graph.h>
#include <lemon/xy.h>

using lemon::ListGraph;
using lemon::xy;

template<class M>
class XYMap
{
  private:
    M *xmap, *ymap;

  public:
    typedef typename M::Key Key;
    typedef xy<typename M::Value> Value;
    XYMap() {}
    XYMap(M &_xmap, M &_ymap) : xmap(&_xmap), ymap(&_ymap) {}
    void setXMap(M &_xmap) { xmap = &_xmap; }
    void setYMap(M &_ymap) { ymap = &_ymap; }
    Value operator[](Key k) const
    {
      Value v(xmap->operator[](k), ymap->operator[](k));
      return v;
    }
    void set(Key k, Value v)
    {
      xmap->set(k, v.x);
      ymap->set(k, v.y);
    }
};

#endif
