#ifndef IPDESTPORT_H_
#define IPDESTPORT_H_

#include <string>
#include <sstream>
#include "libraries/onchipcommunication/common/Node.h"
#include "quantities/onchipcommunication/Interface.h"
#include "quantities/onchipcommunication/NodeParameter.h"
#include "networks/onchipcommunication/PlatformInstance.h"
#include "networks/onchipcommunication/Implementation.h"
#include "models/onchipcommunication/common/AreaModel.h"
#include "models/onchipcommunication/common/PowerModel.h"

namespace cosi {

namespace library {

namespace onchipcommunication {

class IpDestPort : public Node {
	cosi::quantity::onchipcommunication::NodeParameter* mParam;
public:
	IpDestPort(int Width, cosi::library::onchipcommunication::Technology pTech);
	virtual ~IpDestPort();
	cosi::commstruct::onchipcommunication::PlatformInstance
			* GetPlatformInstance(int V, Position pP);

	cosi::commstruct::onchipcommunication::Implementation
			* GetImplementationInstance(int V, Position pP, TransferTable pT);

	double GetArea();

	double GetStaticPower();

	double GetDynamicPower(std::map< std::string , CommoditySet > pCommodities);

	static std::string ComponentName;
	static std::string ComponentType;

	std::string GetComponentName();
	std::string GetComponentType();
};

}

}

}

#endif /*IPDESTPORT_H_*/
