#ifndef THREADSET_H_
#define THREADSET_H_

#include <string>
#include <set>
#include <algorithm>
#include "core/Quantity.h"
#include "quantities/Thread.h"

namespace cosi
{

class ThreadSet : public cosi::Quantity
{
	std::set<Thread> mSet ;
public:

	typedef std::set<Thread>::iterator iterator ;

	ThreadSet();

	~ThreadSet();

	ThreadSet Get() ;

	void Set(ThreadSet pSet ) ;

	std::set<Thread> GetValue() ;

	void SetValue(std::set<Thread> pSet) ;

	void AddThread(Thread pT);

	int Size();

	Thread GetLongestMessage() ;

	iterator ThreadSetBegin() ;

	iterator ThreadSetEnd()  ;


	bool operator<(ThreadSet pSet) ;

	bool operator==(ThreadSet pSet) ;

	ThreadSet operator+(ThreadSet pSet) ;

	friend std::ostream& operator <<(std::ostream &pOs , const ThreadSet &pT) ;

	static std::string sQuantityName;
	static std::string sQuantityType;
};

}

#endif /*THREADSET_H_*/
