bool CBotBreak :: Execute(CBotStack* &pj) { CBotStack* pile = pj->AddStack(this); // if ( pile == EOX ) return true; if ( pile->IfStep() ) return false; pile->SetBreak(m_token.GetType()==ID_BREAK ? 1 : 2, m_label); return pj->Return(pile); }
bool CBotReturn::Execute(CBotStack* &pj) { CBotStack* pile = pj->AddStack(this); // if ( pile == EOX ) return true; if ( pile->GetState() == 0 ) { if ( m_Instr != NULL && !m_Instr->Execute(pile) ) return false; // evaluate the result // the result is on the stack pile->IncState(); } if ( pile->IfStep() ) return false; pile->SetBreak(3, CBotString()); return pj->Return(pile); }