private ISample Next(BinaryReader rdr, out bool more)
{
try
{
if (_nc == 2)
{
if (_pos < _max)
{
_pos++;
double a = NextDouble(rdr);
double b = NextDouble(rdr);
more = true;
_current = new Sample2(a, b);
}
else
{
more = false;
_current = null;
}
}
else
{
if (_pos < _max)
{
_pos++;
ISample sample = new Sample(_nc);
for (int n = 0; n < _nc; n++)
{
sample[n] = NextDouble(rdr);
}
more = true;
_current = sample;
}
else
{
more = false;
_current = null;
}
}
}
catch (EndOfStreamException)
{
Trace.WriteLine("End of input ({0}) at {1}.", streamName, _pos);
more = false;
_current = null;
}
catch (IOException e)
{
Trace.WriteLine("IO error ({0}) at {1}: {2}", streamName, _pos, e.Message);
more = false;
_current = null;
}
return _current;
}