public virtual void skip_input_data(int num_bytes)
{
/* Just a dumb implementation for now. Could use fseek() except
* it doesn't work on pipes. Not clear that being smart is worth
* any trouble anyway --- large skips are infrequent.
*/
if (num_bytes > 0)
{
while (num_bytes > m_bytes_in_buffer)
{
num_bytes -= m_bytes_in_buffer;
fill_input_buffer();
/* note we assume that fill_input_buffer will never return false,
* so suspension need not be handled.
*/
}
m_position += num_bytes;
m_bytes_in_buffer -= num_bytes;
}
}