protected List<DataValue> GetValuesWithSimpleBounds(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>();
// add the start point.
DataValue startBound = GetSimpleBound(slice.StartTime, slice);
if (startBound != null)
{
values.Add(startBound);
}
// initialize slice from value list.
for (LinkedListNode<DataValue> ii = slice.Begin; ii != null; ii = ii.Next)
{
if (CompareTimestamps(slice.EndTime, ii) <= 0)
{
break;
}
if (CompareTimestamps(slice.StartTime, ii) < 0)
{
values.Add(ii.Value);
}
}
// add the end point.
DataValue endBound = GetSimpleBound(slice.EndTime, slice);
if (endBound != null)
{
values.Add(endBound);
}
return values;
}