protected List<DataValue> GetValues(TimeSlice slice)
{
// check if slice is beyond end of available data.
if (CompareTimestamps(slice.StartTime, m_values.Last) > 0 || CompareTimestamps(slice.EndTime, m_values.First) < 0)
{
return null;
}
List<DataValue> values = new List<DataValue>();
// initialize slice from value list.
for (LinkedListNode<DataValue> ii = slice.Begin; ii != null; ii = ii.Next)
{
if (TimeFlowsBackward)
{
if (CompareTimestamps(slice.EndTime, ii) < 0)
{
break;
}
if (CompareTimestamps(slice.StartTime, ii) < 0)
{
values.Add(ii.Value);
}
}
else
{
if (CompareTimestamps(slice.EndTime, ii) <= 0)
{
break;
}
if (CompareTimestamps(slice.StartTime, ii) <= 0)
{
values.Add(ii.Value);
}
}
}
return values;
}