evtcbnode_s *EvtcbQue::schedule(evtcb_pf cb, evtcbhead_t *session, long lParam, void *pParam) { evtcbnode_s *pObj = s_pCbnodePool->get(); if (pObj) { pObj->m_callback = cb; pObj->m_pSession = session; pObj->m_lParam = lParam; pObj->m_pParam = pParam; if (session) { if (session->evtcb_head == NULL) { session->evtcb_head = pObj; m_callbackObjList.append(pObj); } else { m_callbackObjList.insert_after(session->evtcb_head, pObj); logState("schedule()][Header EXIST", pObj); } } else m_callbackObjList.append(pObj); } logState("schedule()", pObj); return pObj; }
std::pair<ScoreType, ScoreType> CombatSimulation::simulateCombat() { MicroSearch::GameState s1(state); MicroSearch::GameState s2(state); MicroSearch::PlayerPtr selfChase(new MicroSearch::Player_NOK_AttackDPS(getPlayer(BWAPI::Broodwar->self()))); MicroSearch::PlayerPtr selfKiter(new MicroSearch::Player_KiterDPS(getPlayer(BWAPI::Broodwar->self()))); MicroSearch::PlayerPtr enemyChase(new MicroSearch::Player_AttackClosest(getPlayer(BWAPI::Broodwar->enemy()))); MicroSearch::PlayerPtr enemyKiter(new MicroSearch::Player_KiterDPS(getPlayer(BWAPI::Broodwar->enemy()))); MicroSearch::Game gameOptimistic (s1, selfChase, enemyChase, 1000); MicroSearch::Game gamePessimistic(s2, selfChase, enemyKiter, 1000); gameOptimistic.playScripts(); gamePessimistic.playScripts(); ScoreType evalOptimistic = gameOptimistic.getState().eval(Search::Players::Player_One, Search::EvaluationMethods::SumPureDPS).val(); ScoreType evalPessimistic = gamePessimistic.getState().eval(Search::Players::Player_One, Search::EvaluationMethods::SumPureDPS).val(); BWAPI::Broodwar->drawTextScreen(240, 280, "Optimistic : %d", evalOptimistic); BWAPI::Broodwar->drawTextScreen(240, 295, "Pessimistic: %d", evalPessimistic); if (evalOptimistic > 1000000 || evalOptimistic < -1000000) { logState(gameOptimistic.getState()); } return std::pair<ScoreType, ScoreType>(evalOptimistic, evalPessimistic); }
void CallbackQueue::removeObj(CallbackLinkedObj *pObj) { if (!pObj) return; logState("removeObj()", pObj); if (pObj->next()) { m_callbackObjList.remove(pObj); recycle(pObj); } }
void EvtcbQue::removeObj(evtcbnode_s *pObj) { if (!pObj) return; logState("removeObj()", pObj); if (pObj->next()) { m_callbackObjList.remove(pObj); recycle(pObj); } }
void CallbackQueue::run(CallbackLinkedObj *pFirstObj, LsiSession *pSessionFilter) { CallbackLinkedObj *pObj; CallbackLinkedObj *pObjNext; if (pFirstObj == NULL) pObj = (CallbackLinkedObj *)m_callbackObjList.begin(); else pObj = pFirstObj; int count = m_callbackObjList.size(); while (count > 0 && pObj && pObj != (CallbackLinkedObj *)m_callbackObjList.end() && (!pSessionFilter || pObj->m_pSession == pSessionFilter)) { pObjNext = (CallbackLinkedObj *)pObj->next(); logState("run()", pObj); --count; m_callbackObjList.remove(pObj); assert(pObj->m_callback); if (pObj->m_callback) pObj->m_callback((lsi_session_t *)pObj->m_pSession, pObj->m_lParam, pObj->m_pParam); else logState("run()][Error: NULL calback", pObj); /** * Comment: the above cb may release the data, so checking here to avoid * recycle again! */ recycle(pObj); pObj = pObjNext; } assert((pFirstObj && pSessionFilter) || (count == 0)); }
/** * session is a filter. If NULL, run all in queue */ void EvtcbQue::run(evtcbhead_t *session) { evtcbnode_s *pObj; evtcbnode_s *pObjNext; if (session == NULL) pObj = (evtcbnode_s *)m_callbackObjList.begin(); else pObj = session->evtcb_head; assert(m_callbackObjList.size() > 0 || (m_callbackObjList.begin() == m_callbackObjList.end())); //WRONG state!!! while (m_callbackObjList.size() > 0 && pObj && pObj != (evtcbnode_s *)m_callbackObjList.end() && (!session || pObj->m_pSession == session)) { pObjNext = (evtcbnode_s *)pObj->next(); logState("run()", pObj); m_callbackObjList.remove(pObj); if (pObj->m_pSession) pObj->m_pSession->evtcb_head = NULL; assert(pObj->m_callback); if (pObj->m_callback) pObj->m_callback(pObj->m_pSession, pObj->m_lParam, pObj->m_pParam); else logState("run()][Error: NULL calback", pObj); recycle(pObj); pObj = pObjNext; } }
CallbackLinkedObj *CallbackQueue::createObj(lsi_callback_queue_pf cb, LsiSession *session, long lParam, void *pParam) { CallbackLinkedObj *pObj = m_callbackObjPool.get(); if (pObj) { pObj->m_callback = cb; pObj->m_pSession = session; pObj->m_lParam = lParam; pObj->m_pParam = pParam; } logState("createObj()", pObj); return pObj; }
void CallbackQueue::removeSessionCb(LsiSession *pSession, CBQSessionHeader &header) { CallbackLinkedObj *pObj = header.get(); CallbackLinkedObj *pObjNext; logState("removeSessionCb()][header state", pObj); while (pObj && pObj != (CallbackLinkedObj *)m_callbackObjList.end()) { pObjNext = (CallbackLinkedObj *)pObj->next(); if (pObj->m_pSession == pSession) removeObj(pObj); else break; pObj = pObjNext; } header.set(NULL); }
// --------------------------------------------------------------------------- // // --------------------------------------------------------------------------- // void MenuStatesTest::HsInstallationLogState_construction() { #ifdef Q_OS_SYMBIAN #ifdef UT_MEMORY_CHECK __UHEAP_MARK; #endif//UT_MEMORY_CHECK #endif//Q_OS_SYMBIAN { QState parentState1; parentState1.setObjectName(tr("testName1")); HsInstallationLogState logState(&parentState1); QString s1 = logState.objectName(); QVERIFY(s1 == tr("testName1/InstallationLogState")); } #ifdef Q_OS_SYMBIAN #ifdef UT_MEMORY_CHECK __UHEAP_MARKEND; #endif//UT_MEMORY_CHECK #endif//Q_OS_SYMBIAN }
CallbackLinkedObj *CallbackQueue::scheduleSessionCb(lsi_callback_queue_pf cb, LsiSession *pSession, long lParam, void *pParam, CBQSessionHeader &header) { CallbackLinkedObj *pObj = createObj(cb, pSession, lParam, pParam); if (pObj) { if (header.get() == NULL) { header.set(pObj); m_callbackObjList.append(pObj); } else { m_callbackObjList.append(header.get(), pObj); logState("scheduleSessionCb()][Header EXIST", pObj); } } return pObj; }
void EvtcbQue::removeSessionCb(evtcbhead_t *session) { if (m_callbackObjList.size() == 0) { session->evtcb_head = NULL; return; } evtcbnode_s *pObj = session->evtcb_head; evtcbnode_s *pObjNext; logState("removeSessionCb()][header state", pObj); while (pObj && pObj != (evtcbnode_s *)m_callbackObjList.end()) { pObjNext = (evtcbnode_s *)pObj->next(); if (pObj->m_pSession == session) removeObj(pObj); else break; pObj = pObjNext; } session->evtcb_head = NULL; }
// --------------------------------------------------------------------------- // // --------------------------------------------------------------------------- // void MenuStatesTest::HsInstallationLogState_onEntry() { #ifdef Q_OS_SYMBIAN #ifdef UT_MEMORY_CHECK __UHEAP_MARK; #endif//UT_MEMORY_CHECK #endif//Q_OS_SYMBIAN { QState parentState; HsInstallationLogState logState(&parentState); //test event QScopedPointer<HsMenuEvent> event(new HsMenuEvent(HsMenuEvent::ShowInstallationLog)); logState.onEntry(event.data()); checkDialogController(); } #ifdef Q_OS_SYMBIAN #ifdef UT_MEMORY_CHECK __UHEAP_MARKEND; #endif//UT_MEMORY_CHECK #endif//Q_OS_SYMBIAN }
ParseTreeNode* Parser::parse() { log_.str(""); states_.push(0); Token* token = nextToken(); bool error = false, accepted = false, fatal = false; while ((! accepted) && (! fatal)) { if (debugging_) { log_ << "current token: " << ((token != 0) ? token->toString() : "NULL") << "\n"; logState(); } int state = states_.top(); const int symbolID = ((token != 0) ? token->getTokenID() : -1); ParserAction* a = action(state, symbolID); if (a == 0) { log_ << " parser error: no action was found for topmost state '" << state; log_ << "' and symbol '" << symbolID2String(symbolID) << "'!\n"; delete a; continue; } switch (a->getType()) { case ParserAction::ACTION_TRANSITION: if (ParserActionTransition* t = dynamic_cast<ParserActionTransition*>(a)) { states_.push(t->getNextState()); if (token != 0) symbols_.push(new ParserSymbol(token)); token = nextToken(); } break; case ParserAction::ACTION_REDUCE: if (! reduce(dynamic_cast<ParserActionReduce*>(a))) fatal = true; break; case ParserAction::ACTION_ACCEPT: if (token != 0) symbols_.push(new ParserSymbol(token)); token = 0; accepted = true; break; case ParserAction::ACTION_ERROR: logError(dynamic_cast<ParserActionError*>(a), token); //logState(); fatal = true; // no break here default: delete token; token = nextToken(); error = true; break; } // switch delete a; } // while (! accepted ParseTreeNode* root = 0; if ((accepted == true) && (error == false)) { log_ << " accepted." << std::endl; if (nodes_.empty()) log_ << " !!! Error: parse tree has no root !!!" << std::endl; while (! nodes_.empty()) { if (root != 0) nodes_.top()->addChild(root); root = nodes_.top(); nodes_.pop(); } } cleanup(); return root; }