Added skip() method on inputStream.
This commit is contained in:
parent
78b3909d9b
commit
0dbc72f835
@ -127,6 +127,13 @@ const stream::size_type inputStreamAdapter::read
|
||||
}
|
||||
|
||||
|
||||
const stream::size_type inputStreamAdapter::skip(const size_type count)
|
||||
{
|
||||
m_stream.ignore(count);
|
||||
return (m_stream.gcount());
|
||||
}
|
||||
|
||||
|
||||
|
||||
// inputStreamStringAdapter
|
||||
|
||||
@ -175,6 +182,22 @@ const stream::size_type inputStreamStringAdapter::read
|
||||
}
|
||||
|
||||
|
||||
const stream::size_type inputStreamStringAdapter::skip(const size_type count)
|
||||
{
|
||||
if (m_pos + count >= m_end)
|
||||
{
|
||||
const size_type remaining = m_end - m_pos;
|
||||
m_pos = m_end;
|
||||
return (remaining);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pos += count;
|
||||
return (count);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// inputStreamStringProxyAdapter
|
||||
|
||||
@ -216,6 +239,23 @@ const stream::size_type inputStreamStringProxyAdapter::read
|
||||
}
|
||||
|
||||
|
||||
const stream::size_type inputStreamStringProxyAdapter::skip(const size_type count)
|
||||
{
|
||||
const size_type remaining = m_buffer.length() - m_pos;
|
||||
|
||||
if (count > remaining)
|
||||
{
|
||||
m_pos = m_buffer.length();
|
||||
return (remaining);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pos += count;
|
||||
return (count);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// inputStreamPointerAdapter
|
||||
|
||||
@ -253,5 +293,12 @@ const stream::size_type inputStreamPointerAdapter::read
|
||||
}
|
||||
|
||||
|
||||
const stream::size_type inputStreamPointerAdapter::skip(const size_type count)
|
||||
{
|
||||
m_stream->ignore(count);
|
||||
return (m_stream->gcount());
|
||||
}
|
||||
|
||||
|
||||
} // utility
|
||||
} // vmime
|
||||
|
@ -97,6 +97,13 @@ public:
|
||||
* @return number of bytes read
|
||||
*/
|
||||
virtual const size_type read(value_type* const data, const size_type count) = 0;
|
||||
|
||||
/** Skip a number of bytes.
|
||||
*
|
||||
* @param count maximum number of bytes to ignore
|
||||
* @return number of bytes skipped
|
||||
*/
|
||||
virtual const size_type skip(const size_type count) = 0;
|
||||
};
|
||||
|
||||
|
||||
@ -179,6 +186,7 @@ public:
|
||||
const bool eof() const;
|
||||
void reset();
|
||||
const size_type read(value_type* const data, const size_type count);
|
||||
const size_type skip(const size_type count);
|
||||
|
||||
private:
|
||||
|
||||
@ -199,6 +207,7 @@ public:
|
||||
const bool eof() const;
|
||||
void reset();
|
||||
const size_type read(value_type* const data, const size_type count);
|
||||
const size_type skip(const size_type count);
|
||||
|
||||
private:
|
||||
|
||||
@ -223,6 +232,7 @@ public:
|
||||
const bool eof() const;
|
||||
void reset();
|
||||
const size_type read(value_type* const data, const size_type count);
|
||||
const size_type skip(const size_type count);
|
||||
|
||||
private:
|
||||
|
||||
@ -248,6 +258,7 @@ public:
|
||||
const bool eof() const;
|
||||
void reset();
|
||||
const size_type read(value_type* const data, const size_type count);
|
||||
const size_type skip(const size_type count);
|
||||
|
||||
private:
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user