#ifndef IPGEOMETRY_H_
#define IPGEOMETRY_H_

#include "../../core/Quantity.h"

namespace cosi {

namespace quantity {

namespace onchipcommunication {

class IpGeometry : public Quantity {
	RealQuantity mXl;
	RealQuantity mXr;
	RealQuantity mYt;
	RealQuantity mYb;
	RealQuantity mArea;
public:
	IpGeometry();
	virtual ~IpGeometry();
	IpGeometry Get();
	void Set(IpGeometry pP);

	void SetXl(RealQuantity Xl);
	void SetXr(RealQuantity Xr);
	void SetYt(RealQuantity Yt);
	void SetYb(RealQuantity Yb);
	void SetArea(RealQuantity Area);

	RealQuantity GetXl() const;
	RealQuantity GetXr() const;
	RealQuantity GetYt() const;
	RealQuantity GetYb() const;
	RealQuantity GetArea() const;

	bool operator ==(const IpGeometry &pP) const;
	bool operator <(const IpGeometry &pP) const;

	IpGeometry operator+(IpGeometry pT);
	IpGeometry operator-(IpGeometry pT);

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

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

}
}
}

#endif /*IPGEOMETRY_H_*/
