// interface int asCModule::Build() { asASSERT( contextCount.get() == 0 ); // Only one thread may build at one time int r = engine->RequestBuild(); if( r < 0 ) return r; engine->PrepareEngine(); if( engine->configFailed ) { engine->WriteMessage("", 0, 0, asMSGTYPE_ERROR, TXT_INVALID_CONFIGURATION); engine->BuildCompleted(); return asINVALID_CONFIGURATION; } InternalReset(); if( !builder ) { engine->BuildCompleted(); return asSUCCESS; } // Store the section names for( size_t n = 0; n < builder->scripts.GetLength(); n++ ) { asCString *sectionName = asNEW(asCString)(builder->scripts[n]->name); scriptSections.PushLast(sectionName); } // Compile the script r = builder->Build(); asDELETE(builder,asCBuilder); builder = 0; if( r < 0 ) { // Reset module again InternalReset(); isBuildWithoutErrors = false; engine->BuildCompleted(); return r; } isBuildWithoutErrors = true; JITCompile(); engine->PrepareEngine(); engine->BuildCompleted(); // Initialize global variables if( r >= 0 && engine->ep.initGlobalVarsAfterBuild ) r = ResetGlobalVars(); return r; }
// interface int asCModule::Build() { // Only one thread may build at one time // TODO: It should be possible to have multiple threads perform compilations int r = engine->RequestBuild(); if( r < 0 ) return r; engine->PrepareEngine(); if( engine->configFailed ) { engine->WriteMessage("", 0, 0, asMSGTYPE_ERROR, TXT_INVALID_CONFIGURATION); engine->BuildCompleted(); return asINVALID_CONFIGURATION; } InternalReset(); if( !builder ) { engine->BuildCompleted(); return asSUCCESS; } // Compile the script r = builder->Build(); asDELETE(builder,asCBuilder); builder = 0; if( r < 0 ) { // Reset module again InternalReset(); engine->BuildCompleted(); return r; } JITCompile(); engine->PrepareEngine(); engine->BuildCompleted(); // Initialize global variables if( r >= 0 && engine->ep.initGlobalVarsAfterBuild ) r = ResetGlobalVars(); return r; }
bool VoteMenuHandler::InitializeVoting(IBaseMenu *menu, IMenuHandler *handler, unsigned int time, unsigned int flags) { if (IsVoteInProgress()) { return false; } InternalReset(); /* Mark all clients as not voting */ for (int i=1; i<=gpGlobals->maxClients; i++) { m_ClientVotes[i] = -2; } m_Items = menu->GetItemCount(); if (m_Votes.size() < (size_t)m_Items) { /* Only clear the items we need to... */ size_t size = m_Votes.size(); for (size_t i=0; i<size; i++) { m_Votes[i] = 0; } m_Votes.resize(m_Items, 0); } else { for (unsigned int i=0; i<m_Items; i++) { m_Votes[i] = 0; } } m_pCurMenu = menu; m_VoteTime = time; m_VoteFlags = flags; m_pHandler = handler; m_pHandler->OnMenuStart(m_pCurMenu); return true; }
// internal asCModule::~asCModule() { InternalReset(); if( builder ) { asDELETE(builder,asCBuilder); builder = 0; } // Remove the module from the engine if( engine ) { if( engine->lastModule == this ) engine->lastModule = 0; engine->scriptModules.RemoveValue(this); } }
// internal asCModule::~asCModule() { InternalReset(); if( builder ) { asDELETE(builder,asCBuilder); builder = 0; } // Remove the module from the engine if( engine ) { if( engine->lastModule == this ) engine->lastModule = 0; int index = (moduleId >> 16); engine->scriptModules[index] = 0; } }
CSuperSerialCard::CSuperSerialCard() : m_aySerialPortChoices(NULL), m_uTCPChoiceItemIdx(0) { memset(m_ayCurrentSerialPortName, 0, sizeof(m_ayCurrentSerialPortName)); m_dwSerialPortItem = 0; m_hCommHandle = INVALID_HANDLE_VALUE; m_hCommListenSocket = INVALID_SOCKET; m_hCommAcceptSocket = INVALID_SOCKET; m_dwCommInactivity = 0; m_hCommThread = NULL; for (UINT i=0; i<COMMEVT_MAX; i++) m_hCommEvent[i] = NULL; memset(&m_o, 0, sizeof(m_o)); InternalReset(); }
void VoteMenuHandler::EndVoting() { /* Set when the next delay ends. We ignore cancellation because a menu * was, at one point, displayed, which is all that counts. However, we * do re-calculate the time just in case the menu had no time limit. */ float fVoteDelay = sm_vote_delay.GetFloat(); if (fVoteDelay < 1.0) { g_next_vote = 0.0; } else { g_next_vote = gpGlobals->curtime + fVoteDelay; } if (m_bCancelled) { /* If we were cancelled, don't bother tabulating anything. * Reset just in case someone tries to redraw, which means * we need to save our states. */ IBaseMenu *menu = m_pCurMenu; IMenuHandler *handler = m_pHandler; InternalReset(); handler->OnMenuVoteCancel(menu, VoteCancel_Generic); handler->OnMenuEnd(menu, MenuEnd_VotingCancelled); return; } menu_vote_result_t vote; menu_vote_result_t::menu_client_vote_t client_vote[256]; menu_vote_result_t::menu_item_vote_t item_vote[256]; memset(&vote, 0, sizeof(vote)); /* Build the item list */ for (unsigned int i=0; i<m_Items; i++) { if (m_Votes[i] > 0) { item_vote[vote.num_items].count = m_Votes[i]; item_vote[vote.num_items].item = i; vote.num_votes += m_Votes[i]; vote.num_items++; } } vote.item_list = item_vote; if (!vote.num_votes) { IBaseMenu *menu = m_pCurMenu; IMenuHandler *handler = m_pHandler; InternalReset(); handler->OnMenuVoteCancel(menu, VoteCancel_NoVotes); handler->OnMenuEnd(menu, MenuEnd_VotingCancelled); return; } /* Build the client list */ for (int i=1; i<=gpGlobals->maxClients; i++) { if (m_ClientVotes[i] >= -1) { client_vote[vote.num_clients].client = i; client_vote[vote.num_clients].item = m_ClientVotes[i]; vote.num_clients++; } } vote.client_list = client_vote; /* Sort the item list descending like we promised */ qsort(item_vote, vote.num_items, sizeof(menu_vote_result_t::menu_item_vote_t), SortVoteItems); /* Save states, then clear what we've saved. * This makes us re-entrant, which is always the safe way to go. */ IBaseMenu *menu = m_pCurMenu; IMenuHandler *handler = m_pHandler; InternalReset(); /* Send vote info */ handler->OnMenuVoteResults(menu, &vote); handler->OnMenuEnd(menu, MenuEnd_VotingDone); }