

#include "Case.h"
#include <iostream>


std::ostream& operator<<(std::ostream& out, const Case& c)
{
	out << c.val;
	return out;
}

void print(std::ostream& out, const Case& c)
{
	out << '{' <<  c.val;
	if (c.possible.empty())
	{
		out << '}';
		return;
	}
	out << '|';
	std::list<int>::const_iterator iter=c.possible.begin();

	if (not c.proba.empty())
	{
		std::priority_queue<Token> pq = c.proba;
		register unsigned n = pq.size();
		for(register unsigned i=0; i<n; i++)  {
			out << '(' << pq.top().val << ':' << pq.top().proba << ")";
			pq.pop();
		}
	}
	else
	{
		out << *iter; ++iter;
		for (; iter!=c.possible.end();++iter)
			out << ',' << *iter;
	}
	out << '}';
}

