//============================================================================
// Name        : NodeLinkLibrary.h
// Author      : Alessandro Pinto <apinto@eecs.berkeley.edu>
//               University of California, Berkeley
//               545 Cory Hall, Berkeley, CA 94720
// Version     : $Id: NodeLinkLibrary.h,v 1.1 2007/12/13 03:25:27 apinto Exp $
// Copyright   : See COPYING file that comes with this distribution
// Description : Definition of a library of nodes and links.
//============================================================================

#ifndef NODELINKLIBRARY_H_
#define NODELINKLIBRARY_H_

#include <set>
#include <map>
#include <string>
#include "Node.h"
#include "Link.h"

using namespace std;

namespace cosi {

/** A library contains nodes and links.
 *
 *
 *@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: NodeLinkLibrary.h,v 1.1 2007/12/13 03:25:27 apinto Exp $
 */

class NodeLinkLibrary {
public:
	NodeLinkLibrary();
	NodeLinkLibrary(string pName);
	string GetName();
	void SetName(string pName);
	virtual ~NodeLinkLibrary();
	void AddNode(Node pN);
	void AddLink(Link pL);
	void AddBiLink(string pName ,Link pL1, Link pL2);
	void AddBiLink(BiLink pL);

private:
	string mName;
	map< string , Node > mNodes;
	map< string , Link > mLinks;
	map< string , BiLink> mBiLinks;
};

}

#endif /*NODELINKLIBRARY_H_*/
