// This method is called to inform about the prover outcome for the previous GetNextBlock call. override public bool SetCurrentResult(List <Variable> reachvar, ProverInterface.Outcome outcome, DoomErrorHandler cb) { this.__DEBUG_BlocksChecked++; // outcome==Valid means that there is no feasible execution for the current block/path (i.e., might be doomed) if (outcome == ProverInterface.Outcome.Valid && m_Current <= m_Blocks.Count) { List <Block> lb = new List <Block>(); lb.Add(m_Blocks[m_Current - 1]); DetectedBlock.Add(lb); } return(true); }
override public bool GetNextBlock(out List <Block> lb) { sw.Start(); if (m_Current < m_Blocks.Count) { lb = new List <Block>(); lb.Add(m_Blocks[m_Current]); m_Current++; return(true); } else { DetectedBlock.Add(m_BlockH.GetOtherDoomedBlocks(m_doomedBlocks)); } lb = null; return(false); }
override public bool GetNextBlock(out List <Block> lb) { m_Current = null; if (m_Blocks.Count > 0) { m_Current = m_Blocks[0]; m_Blocks.Remove(m_Current); lb = new List <Block>(); lb.Add(m_Current); return(true); } else { DetectedBlock.Add(m_BlockH.GetOtherDoomedBlocks(m_doomedBlocks)); } lb = null; return(false); }
override public bool GetNextBlock(out List <Block> lb) { sw.Start(); lb = new List <Block>(); if (m_Uncheckedlocks.Count == 0 || m_NoMoreMoves) { if (m_Uncheckedlocks.Count > 0) { DetectedBlock.Add(m_BlockH.GetOtherDoomedBlocks(m_Uncheckedlocks)); } return(false); } lb.AddRange(m_Uncheckedlocks); return(true); }