#ifndef INSTANTIATIONID_H_
#define INSTANTIATIONID_H_

#include <vector>
#include <map>
#include "quantities/Name.h"
#include "quantities/Position.h"
#include "environment/onchipcommunication/InstallationSite.h"
#include "include/CosiGlobal.h"

namespace cosi {

namespace rules {

namespace onchipcommunication {

using namespace cosi::environment::onchipcommunication ;
using namespace std ;

class InstantiationId {

public:

	InstantiationId(int Nip, std::vector< InstallationSite > InstallationSites,
			std::vector<Name> IdType);

	virtual ~InstantiationId();

	int Id(Name pName, Position pP);

	Name GetName( int V ) ;

	Position GetPosition( int V ) ;


private:
	std::vector< InstallationSite > mInstallationSites;
	std::map<Position,int> mId;
	int mNip;
	std::vector<Name> mIdType;
	std::map<Name,int> mTypeId;

};

}

}

}

#endif /*INSTANTIATIONID_H_*/
