#ifndef WIRINGPATH_H_
#define WIRINGPATH_H_

#include <iostream>
#include <string>
#include <list>
#include "core/Quantity.h"
#include "quantities/Position.h"

namespace cosi
{

class WiringPath : public Quantity
{
	std::list<Position> mPath ;
public:

	typedef std::list<Position>::iterator iterator ;

	WiringPath();

	~WiringPath();

	void AppendPosition(Position pP) ;

	void PrependPosition(Position pP) ;

	std::list<Position> GetValue();

	void SetValue(std::list<Position> pPath);

	WiringPath Get( ) ;

	void Set(WiringPath pPath) ;

	double Length();

	iterator PathBegin() ;

	iterator PathEnd();

	Position First();
	Position Last();

	bool operator<(WiringPath pPath) ;
	bool operator>(WiringPath pPath) ;

	WiringPath operator+(WiringPath pPath) ;
	WiringPath operator-(WiringPath pPath) ;

	friend std::ostream& operator <<(std::ostream &pOs , const WiringPath &pP) ;

	static std::string sQuantityName ;
	static std::string sQuantityType ;

};

}

#endif /*WIRINGPATH_H_*/
