Exemple #1
0
void
Decoder::decodeTags(ByteStream& strm, TagSet& tags)
{
	//M_ASSERT(strm.remaining());

	mstl::string name;
	mstl::string value;

	for (tag::ID id = tag::ID(strm.get()); id; id = tag::ID(strm.get()))
	{
		if (id == tag::ExtraTag)
		{
			name.clear();
			value.clear();
			strm.get(name);
			strm.get(value);
			tags.setExtra(name, value);
		}
		else
		{
			value.clear();
			strm.get(value);
			tags.set(id, value);

			if (tag::isRatingTag(id))
				tags.setSignificance(id, 0);
		}

#define SCI_TAGS_FIX
#ifdef SCI_TAGS_FIX
		if (strm.remaining() == 0)
			return;
#endif
	}
}
Exemple #2
0
void
MoveInfoTable::decode(ByteStream& strm)
{
	MoveInfo	m;
	unsigned	index	= 0;

	m_table.clear();

	while (strm.remaining())
	{
		unsigned skip = m.decode(strm);
		m_table.resize((index += skip) + 1);
		m_table[index].add(m);
	}
}