#ifndef DATA_H
#define DATA_H

// a meaningless structure to put on the list
class data_t
{
  public:
  // constructors (overloaded)
  data_t(std::string _name="",int _id=-1) : \
	name(_name),\
	id(_id)\
	{  };

  // copy constructor
  data_t(const data_t& rhs) \
  { name = rhs.name;  id = rhs.id; }

  // assignment operator
  data_t& operator=(const data_t& rhs)
  {
    if(this != &rhs) {
      name = rhs.name;
      id = rhs.id;
    }
    return *this;
  }

  std::string  getname() { return name; }
  int          getid() { return id; }

  // destructor (default ok)

  friend std::ostream& operator<<(std::ostream& s, const data_t& rhs)
		{ s << rhs.name << " " << rhs.id << std::endl; return s; }
  friend std::ostream& operator<<(std::ostream& s, data_t *rhs)
		{ return(s << (*rhs)); }

  private:
  std::string	name;	// data name
  int		id;	// data id code
};

#endif
