コード例 #1
0
QStringList MainWindow::checkLayout(QDomDocument doc) {

    QStringList errors;
    QDomElement layout = doc.namedItem("layout").toElement();
    bool intHandler;
    if (layout.isNull()) {
        errors << "Layout element does not exist";
        return errors;
    } else {
        if (!layout.hasAttribute("width"))
            errors << "Layout has no width value";
        if (!layout.hasAttribute("height"))
            errors << "Layout has no height value";
        if (layout.hasAttribute("width") && (layout.attribute("width").toInt(&intHandler,10) < 0 || intHandler == false))
            errors << "Layout width is not a positive integer";
        if (layout.hasAttribute("width") && (layout.attribute("height").toInt(&intHandler,10) < 0 || intHandler == false))
            errors << "Layout height is not a positive integer";

        QStringList layouterrors ;

        if(layout.attribute("tabbed") == "1"){
            layouterrors << checkTabLayout(layout);
        } else {
            layouterrors << checkElements(layout);
        }

        errors.append(layouterrors);

    }
    return errors;
}
コード例 #2
0
QStringList MainWindow::checkTabLayout(QDomElement element) {
    QDomNode child = element.firstChild();
    QStringList errors;
    while (!child.isNull()) {
        QString tagName = child.toElement().tagName();
        if(tagName == "tab") {

            if (!child.toElement().hasAttribute("name"))
                errors << "Tab has no name";

            errors << checkElements(child.toElement());

        } else if (tagName == "cli" || tagName == "toolBar") {
            //ignore these
        } else {
            errors << "Invalid item " + tagName + " in tabSet";
        }

        child = child.nextSibling();
    }
    return errors;
}
コード例 #3
0
ファイル: GQuestStatus.cpp プロジェクト: jun199004/server
// element들을 순서대로 check해야 된다. 앞에꺼가 완결되어야 뒤에꺼를 체크한다.
GQuestElement::ResultType GQuestStatus::checkElementsSEQ(GQuestInfo::ElementType type) {
	GQuestMission* pCurrentMission = m_MissionMap[m_ElementAdvance[type]];
	if (pCurrentMission != NULL) {
		GQuestElement::ResultType result = (*m_ElementAdvance[type])->checkMission(pCurrentMission);

		if (result == GQuestElement::FAIL ) pCurrentMission->m_Status = MissionInfo::FAIL;
		if (result != GQuestElement::OK ) return result;

		pCurrentMission->m_Status = MissionInfo::SUCCESS;
		(*m_ElementAdvance[type])->whenMissionEnd(m_pOwner, pCurrentMission);
		++m_ElementAdvance[type];
	}

	for (; m_ElementAdvance[type] != m_pGQuestInfo->getElements(type).end(); ++m_ElementAdvance[type]) {
		GQuestElement::ResultType result = (*(m_ElementAdvance[type]))->checkCondition(m_pOwner);

		if (result == GQuestElement::WAIT) {
			GQuestMission* pNewMission = (*(m_ElementAdvance[type]))->makeInitMission(m_pOwner);
			if (pNewMission == NULL ) return GQuestElement::FAIL;

			pNewMission->m_Condition = type;
			pNewMission->m_Index = (*(m_ElementAdvance[type]))->getIndex();

			pNewMission->m_Status = MissionInfo::CURRENT;
			pNewMission->m_Position = m_ElementAdvance[type];
			pNewMission->m_pParent = this;
			m_Missions.push_back(pNewMission);
			m_MissionMap[m_ElementAdvance[type]] = pNewMission;
			(*(m_ElementAdvance[type]))->whenMissionStart(m_pOwner, pNewMission);
			// recursive call
			return checkElements(type);
		}
		else if (result == GQuestElement::FAIL )
			return result;
	}

	return GQuestElement::OK;
}
コード例 #4
0
ファイル: GQuestStatus.cpp プロジェクト: jun199004/server
BYTE GQuestStatus::checkMissions()
{
	BYTE ret = GCGQuestStatusModify::NO_MODIFY;

	if (m_Status == DOING) {
		GQuestElement::ResultType resultComplete = checkElements(GQuestInfo::COMPLETE);
		switch (resultComplete) {
			case GQuestElement::OK: {
					m_Status = SUCCESS;
					ret = GCGQuestStatusModify::SUCCESS;
					cleanUpMissions();
					break;
				}
			case GQuestElement::FAIL: {
					m_Status = FAIL;
					save();
					ret = GCGQuestStatusModify::FAIL;
					cleanUpMissions();
					break;
				}
			case GQuestElement::WAIT:
			default:
				break;
		}

		GQuestElement::ResultType resultFail = checkElements(GQuestInfo::FAIL);
		switch (resultFail )
		{
			case GQuestElement::OK:
				{
					m_Status = FAIL;
					save();
					ret = GCGQuestStatusModify::FAIL;
					cleanUpMissions();
					break;
				}
			case GQuestElement::FAIL:
			case GQuestElement::WAIT:
			default:
				break;
		}
	}

	if (m_Status == SUCCESS )
	{
		GQuestElement::ResultType resultReward = checkElements(GQuestInfo::REWARD);
		switch (resultReward )
		{
			case GQuestElement::OK:
				{
					m_Status = COMPLETE;
					save();
					m_pOwner->getGQuestManager()->refreshQuest();
					if (m_QuestID == 1001 )
					{
						EffectEventQuestReset* pEffect = new EffectEventQuestReset(m_pOwner, 1);
						int lastSec = 0;
						pEffect->setDeadline((EVENT_QUEST_TIME_LIMIT-lastSec)*10);
						pEffect->setNextTime(((EVENT_QUEST_TIME_LIMIT-lastSec)%BROADCASTING_DELAY) * 10);
						m_pOwner->addEffect(pEffect);
					}
					break;
				}
			case GQuestElement::FAIL:
				{
					m_Status = FAIL;
					save();
					break;
				}
			case GQuestElement::WAIT:
			default:
				break;
		}
	}

	if (m_Status == FAIL )
	{
		m_Status = CAN_REPLAY;
		save();
	}

	return ret;
}
コード例 #5
0
ファイル: testBitSets.cpp プロジェクト: patrickfrey/strusBase
static void testBitSet( int times, int nofElements)
{
	std::cerr << "execute testBitSet<" << NN << ">( " << times << ", " << nofElements << ")" << std::endl;
	if (nofElements >= NN) throw std::runtime_error("potential endless loop in test");

	for (int ti=0; ti<times; ++ti)
	{
#ifdef STRUS_LOWLEVEL_DEBUG
		std::cerr << "start [" << ti << "]" << std::endl;
#endif
		strus::bitset<NN> testset;
		std::set<int> eset;
		for (int ei=0; ei<nofElements; ++ei)
		{
			int elem = g_random.get( 0, NN);
			switch (g_random.get( 0, 5))
			{
				case 0:
#ifdef STRUS_LOWLEVEL_DEBUG
					std::cerr << "op insert " << elem << std::endl;
#endif
					set_insert( eset, elem, NN);
					if (!testset.insert( elem, true)) throw std::runtime_error("insert failed in bitset");
					break;
				case 1:
#ifdef STRUS_LOWLEVEL_DEBUG
					std::cerr << "op remove " << elem << std::endl;
#endif
					set_remove( eset, elem);
					if (!testset.remove( elem)) throw std::runtime_error("remove failed in bitset");
					break;
				default:
#ifdef STRUS_LOWLEVEL_DEBUG
					std::cerr << "op set " << elem << std::endl;
#endif
					eset.insert( elem);
					testset.set( elem, true);
					break;
			}
			checkElements( testset, eset);
		}
		std::set<int>::const_iterator si = eset.begin(), se = eset.end();
		for (; si != se; ++si)
		{
			if (!testset.test( *si))
			{
				std::cerr << "element " << *si << " inserted not found in fixed size test bitset" << std::endl;
				if (++g_nof_errors >= g_max_nof_errors) throw std::runtime_error( "fixed size bitset test failed");
			}
		}
		for (int ei=0; ei<nofElements; ++ei)
		{
			int elem = g_random.get( 0, NN);
			if (eset.find( elem) != eset.end())
			{
				--ei; continue;
			}
			if (testset.test( elem))
			{
				std::cerr << "element " << elem << " not inserted but found in fixed size test bitset" << std::endl;
				if (++g_nof_errors >= g_max_nof_errors) throw std::runtime_error( "fixed size bitset test failed");
			}
		}
		checkElements( testset, eset);
	}
}