#ifndef _MAPITL_REFERENCE_H
#define _MAPITL_REFERENCE_H

namespace MAPITL {

  /// Wrapper around a MuPAD DOM_LIST to make a reference to one of its element
  template<class T>
  class Reference {
  private:
    MTcell c;
    size_t i;
  public: 
    Reference(MTcell c_, size_t i_) : c(c_), i(i_) {}
    
    Reference& operator = (const T &);
    Reference& operator = (const Reference &);
    operator T () const; // We assume that T objects have a copy semantic
    const T * operator -> () const;
  };
}

#endif	/* _MAPITL_REFERENCE_H */
