28 #ifndef LINETAILBYTESINK_H
29 #define LINETAILBYTESINK_H
44 template <u32 LINES, u32 BYTES_PER_LINE>
71 m_bytesWritten += len;
73 const u8 * lineStart = data;
78 while ((lineEnd = (
const u8 *) memchr(lineStart,
'\n', effLen)))
81 u32 thisLen = (u32) (lineEnd - lineStart);
82 m_lines[m_nextLine].
WriteBytes((
const u8 *) lineStart, thisLen);
85 lineStart += thisLen + 1;
86 effLen -= thisLen + 1;
89 m_lines[m_nextLine].
WriteBytes(lineStart, effLen);
113 return m_bytesWritten;
125 return (LINES + m_nextLine - m_firstLine) % LINES + 1;
150 u32 index = (m_firstLine + whichLine) % LINES;
172 else m_firstLine = (m_firstLine + lines) % LINES;
180 m_firstLine = m_nextLine = 0;
181 m_lines[m_nextLine].
Reset();
187 m_nextLine = (m_nextLine + 1) % LINES;
188 m_lines[m_nextLine].
Reset();
190 if (m_nextLine == m_firstLine)
192 m_firstLine = (m_firstLine + 1) % LINES;
196 OverflowableCharBufferByteSink<BYTES_PER_LINE> m_lines[LINES];
void Reset()
Definition: LineTailByteSink.h:178
u32 GetLines() const
Definition: LineTailByteSink.h:123
void Reset()
Definition: OverflowableCharBufferByteSink.h:192
const char * GetZString()
Definition: OverflowableCharBufferByteSink.h:143
virtual void WriteBytes(const u8 *data, const u32 len)
Definition: OverflowableCharBufferByteSink.h:64
LineTailByteSink()
Definition: LineTailByteSink.h:52
Definition: LineTailByteSink.h:45
void Trim(u32 lines)
Definition: LineTailByteSink.h:166
Definition: ByteSink.h:47
u32 GetBytesWritten() const
Definition: LineTailByteSink.h:111
const char * GetZString(u32 whichLine)
Definition: LineTailByteSink.h:143
virtual void WriteBytes(const u8 *data, const u32 len)
Definition: LineTailByteSink.h:69
virtual s32 CanWrite()
Definition: LineTailByteSink.h:99