//============================================================================
// Name        : Node.h
// Author      : Alessandro Pinto <apinto@eecs.berkeley.edu>
//               University of California, Berkeley
//               545 Cory Hall, Berkeley, CA 94720
// Version     : $Id: Node.h,v 1.7 2008/02/05 00:46:49 apinto Exp $
// Copyright   : See COPYING file that comes with this distribution
// Description : Definition of a library node.
//============================================================================


#ifndef LIBRARIES_NODE_H_
#define LIBRARIES_NODE_H_

#include <string>
#include <set>
#include "quantities/Ports.h"


namespace cosi
{

namespace library {

/** A node has ports associated with it.
 *
 *
 *@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: Node.h,v 1.7 2008/02/05 00:46:49 apinto Exp $
 */


class Node
{
public:

	/**\brief Default constructor.*/
	Node();
	/**\brief Default destructur.*/
	virtual ~Node();
	/**\brief Sets the name of this instance.*/
	void SetName( std::string pName ) ;
	/**\brief Returns the name of this instance.*/
	std::string GetName( ) ;
	/**\brief Sets the node type (obsolete).*/
	void SetType( std::string Type ) ;
	/**\brief Returns the node type (obsolete).*/
	std::string GetType( ) ;

	Ports GetPorts( ) ;

private:
	std::string mName ;
	std::string mType ;
protected:
	Ports mPorts ;
};

}
}

#endif /*NODE_H_*/
