#ifndef SUBNETWORK_H_
#define SUBNETWORK_H_

#include "libraries/wiredbas/common/InstantiableSubNetwork.h"
#include "networks/wiredbas/WiredBasImplementation.h"
#include "networks/wiredbas/WiredBasSpecificaion.h"


namespace cosi {

namespace library {

namespace wiredbas {

class SubNetwork : public InstantiableSubNetwork {
public:
	SubNetwork(std::map<std::string, cosi::library::wiredbas::InstantiableNode*> N,
			std::map<std::string, cosi::library::wiredbas::InstantiableLink*> L);
	virtual ~SubNetwork() ;
	virtual double LatencyValue(
			cosi::commstruct::wiredbas::Implementation* pNet, Vertex Src, std::string Dest, Vertex SrcId , Vertex DestId) =0;
	virtual bool Satisfies(cosi::commstruct::wiredbas::Specification* pSpec, cosi::commstruct::wiredbas::Implementation* pNet) =0;
	virtual double GetCost(cosi::commstruct::wiredbas::Implementation* pNet) =0;
};

}

}

}

#endif /*SUBNETWORK_H_*/
