//----------------------------------------------------------------------------
hh_i32 QIRPanelDetail_Widget::GetResultIndex(hh_u32 fromId, QIRPanelDetail_MainWidget::ESelectionMode mode)
{
if (m_Debugger != null && m_Model != null)
{
if (mode == QIRPanelDetail_MainWidget:

electionMode_PrevInf ||
mode == QIRPanelDetail_MainWidget:

electionMode_NextInf)
{
const bool forwardSearch = (mode == QIRPanelDetail_MainWidget:

electionMode_NextInf);
const hh_i32 minValidID = 0;
const hh_i32 maxValidID = HHMax(0, hh_i32(m_Debugger->ElementCount()) - 1);
const hh_i32 startId = fromId;
const hh_i32 stopId = forwardSearch ? maxValidID : minValidID;
const hh_i32 step = forwardSearch ? 1 : -1;
POPED_ASSERT(startId >= minValidID && startId <= maxValidID);
for (hh_i32 i = startId; i != stopId; )
{
i += step;
POPED_ASSERT(i >= minValidID && i <= maxValidID);
const CUint4 value = m_Model->GetRuntimeValue(i);
if (Any((value & ~0x80000000) >= 0x7F800000)) // Catches infs and NaNs
return i;
}
}
}
return -1;
}