7#include <Atlas/Filter.h>
12Filter::Filter(std::unique_ptr<Filter> next)
13 : m_next(std::move(next))
17Filter::~Filter() =
default;
19filterbuf::~filterbuf()
24int_type filterbuf::overflow(int_type c)
26 if (c != traits_type::eof()) {
30 if (flushOutBuffer() == traits_type::eof()) {
31 return traits_type::eof();
36int_type filterbuf::underflow()
38 if (gptr() < egptr())
return *gptr();
40 int numPutback = gptr() - eback();
42 if (numPutback > m_inPutback) numPutback = m_inPutback;
44 std::memcpy(m_outBuffer + (m_inPutback - numPutback),
46 (
unsigned long) numPutback);
61 num = m_streamBuffer.sgetn(m_inBuffer + m_inPutback,
62 m_inBufferSize - m_inPutback);
63 if (num <= 0)
return traits_type::eof();
65 setg(m_inBuffer + (m_inPutback - numPutback),
66 m_inBuffer + m_inPutback,
67 m_inBuffer + m_inPutback + num);
74 if (flushOutBuffer() == traits_type::eof())
return -1;