save::State Consumer::endGame(TagSet const& tags) { TagSet const* tagSet = &tags; TagSet* myTags = 0; if (m_text.tellp() > 0 && m_lastCommentPos == plyCount() && !tags.contains(tag::Termination)) { result::ID result = result::fromString(tags.value(tag::Result)); if (result == result::White || result == result::Black) { Byte const* s = m_text.data() + m_text.tellp() - 1; while (s > m_text.base() && s[-1]) --s; if ( ::strcasecmp(reinterpret_cast<char const*>(s), "time") == 0 || ::strcasecmp(reinterpret_cast<char const*>(s), "time/") == 0 || ::strcasecmp(reinterpret_cast<char const*>(s), "time!") == 0 || ::strcasecmp(reinterpret_cast<char const*>(s), "time forfeit") == 0) { myTags = new TagSet(tags); myTags->set(tag::Termination, termination::toString(termination::TimeForfeit)); tagSet = myTags; } } } unsigned dataOffset = m_strm.tellp(); encodeTextSection(); encodeDataSection(engines()); encodeTags(*tagSet, allowedTags(), allowExtraTags()); ByteStream::set(m_strm.base() + m_streamPos, uint24_t(dataOffset)); m_stream.provide(); save::State state = m_codec.addGame(m_stream, *tagSet, *this); if (myTags) delete myTags; return state; }
// Disabled because Baloo does not work like Nepomuk: it does not create tags // independently of files. void SemanticInfoBackEndTest::testTagForLabel() { QSignalSpy spy(mBackEnd, SIGNAL(tagAdded(SemanticInfoTag,QString))); TagSet oldAllTags = mBackEnd->allTags(); QString label = "testTagForLabel-" + KRandom::randomString(5); SemanticInfoTag tag1 = mBackEnd->tagForLabel(label); QVERIFY(!tag1.isEmpty()); QVERIFY(!oldAllTags.contains(tag1)); QVERIFY(mBackEnd->allTags().contains(tag1)); // This is a new tag, we should receive a signal QCOMPARE(spy.count(), 1); SemanticInfoTag tag2 = mBackEnd->tagForLabel(label); QCOMPARE(tag1, tag2); // This is not a new tag, we should not receive a signal QCOMPARE(spy.count(), 1); QString label2 = mBackEnd->labelForTag(tag2); QCOMPARE(label, label2); }
DatabaseCodec::InfoData::InfoData(TagSet const& tags) :whiteCountry(country::Unknown) ,blackCountry(country::Unknown) ,eventCountry(country::Unknown) ,whiteTitle(title::None) ,blackTitle(title::None) ,whiteType(species::Unspecified) ,blackType(species::Unspecified) ,whiteSex(sex::Unspecified) ,blackSex(sex::Unspecified) ,whiteFideID(0) ,blackFideID(0) ,eventType(event::Unknown) ,timeMode(time::Unknown) ,eventMode(event::Undetermined) { if (tags.contains(tag::WhiteCountry)) whiteCountry = country::fromString(tags.value(tag::WhiteCountry)); if (tags.contains(tag::WhiteTitle)) whiteTitle = title::fromString(tags.value(tag::WhiteTitle)); if (tags.contains(tag::WhiteType)) whiteType = species::fromString(tags.value(tag::WhiteType)); if (tags.contains(tag::WhiteSex)) whiteSex = sex::fromChar(*tags.value(tag::WhiteSex)); if (tags.contains(tag::BlackCountry)) blackCountry = country::fromString(tags.value(tag::BlackCountry)); if (tags.contains(tag::BlackTitle)) blackTitle = title::fromString(tags.value(tag::BlackTitle)); if (tags.contains(tag::BlackType)) blackType = species::fromString(tags.value(tag::BlackType)); if (tags.contains(tag::BlackSex)) blackSex = sex::fromChar(*tags.value(tag::BlackSex)); if (tags.contains(tag::WhiteFideId)) whiteFideID = tags.asInt(tag::WhiteFideId); if (tags.contains(tag::BlackFideId)) blackFideID = tags.asInt(tag::BlackFideId); if (tags.contains(tag::EventType)) eventType = event::typeFromString(tags.value(tag::EventType)); if (tags.contains(tag::Mode)) eventMode = event::modeFromString(tags.value(tag::Mode)); if (tags.contains(tag::TimeMode)) timeMode = time::fromString(tags.value(tag::TimeMode)); if (tags.contains(tag::EventType)) eventType = event::typeFromString(tags.value(tag::EventType)); if (tags.contains(tag::EventCountry)) eventCountry = country::fromString(tags.value(tag::EventCountry)); if (tags.contains(tag::EventDate)) eventDate.fromString(tags.value(tag::EventDate)); }