//============================================================================
// Name        : Network.hpp
// Author      : Alessandro Pinto <apinto@eecs.berkeley.edu>
//               University of California, Berkeley
//               545 Cory Hall, Berkeley, CA 94720
// Version     : $Id: Network.hpp,v 1.5 2007/12/22 04:27:15 apinto Exp $
// Copyright   : See COPYING file that comes with this distribution
// Description : This class contains the definition of network types.
//============================================================================


/**This file contains the definition of different types of networks.
 *
 *@author Alessandro Pinto,
 *@author The Donald O. Pederson Center for Electronic System Design
 *@author Electrical Engineering Department
 *@author University of California, Berkeley
 *@author 545P Cory Hall, Berkeley, CA 94720
 *@author +1 (510) 642 9670
 *@author http://www.eecs.berkeley.edu/~apinto
 *
 *@version $Id: Network.hpp,v 1.5 2007/12/22 04:27:15 apinto Exp $
 */

#ifndef NETWORK_HPP_
#define NETWORK_HPP_

#include "../core/IdGraph.h"
#include "../label/LabelDefinition.h"

namespace cosi {

class NocSpecification : public IdGraph, public MapArea,
	public MapInterfaceType, public MapBandwidth, public MapHopConstraint {
public:
	NocSpecification(string Name) :
		IdGraph(Name) {
	}
	;
	~NocSpecification() {
	}
	;
};

class NetworkBase : public IdGraph, public NodeMap, public LinkMap {
public:
	NetworkBase(string Name) :
		IdGraph(Name) {
	}
	;
	~NetworkBase() {
	}
	;
};

class NetworkBandwidth : public NetworkBase, public MapBandwidth {
public:
	NetworkBandwidth(string Name) :
		NetworkBase(Name) {
	}
	;
	~NetworkBandwidth() {
	}
	;
};

}
#endif /*NETWORK_HPP_*/
