//============================================================================
// Name        : LabelDefinition.h
// Author      : Alessandro Pinto <apinto@eecs.berkeley.edu>
//               University of California, Berkeley
//               545 Cory Hall, Berkeley, CA 94720
// Version     : $Id: LabelDefinition.h,v 1.4 2007/12/22 04:27:15 apinto Exp $
// Copyright   : See COPYING file that comes with this distribution
// Description : Contains the type definition of label maps and sets.
//============================================================================



#ifndef LABELDEFINITION_H_
#define LABELDEFINITION_H_

#include <string>
#include "LabelMap.hpp"
#include "LabelSet.hpp"
#include "../position/Xyz.h"
#include "../position/RoutingTable.h"
#include "../core/IdGraph.h"
#include "../core/Node.h"
#include "../core/Link.h"

using namespace std ;

namespace cosi {

/** This heder file contains the definition of label map and label set types.
 *
 *
 *
 *@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: LabelDefinition.h,v 1.4 2007/12/22 04:27:15 apinto Exp $

 */


/**\brief Assigns a position to each vertex.
 *
 * A vertex is associated to a position in the Euclidean space.
 *
 * @see Xyz .*/
typedef LabelMap< Xyz > MapXyz;

/**\brief Assigns a routing table to each vertex.
 *
 * A vertex is associated to a routing table.
 *
 * @see RoutingTable .*/
typedef LabelMap< RoutingTable > MapRoutingTable;

typedef LabelMap<  long int> MapBandwidth ;

typedef LabelMap<  double > MapArea;
  
typedef LabelMap<  string > MapInterfaceType;

typedef LabelMap<  int > MapHopConstraint;

typedef LabelMap< Node > NodeMap ;

typedef LabelMap<  Link > LinkMap ;


}

#endif /*LABELDEFINITION_H_*/
