From c2b6907ed61a2f1db22b1b374b8103efd0017289 Mon Sep 17 00:00:00 2001 From: Yury Melnichek Date: Mon, 8 Aug 2011 20:23:59 +0200 Subject: [PATCH] PushBackByteSink uses .append() when possible. --- coding/byte_stream.hpp | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/coding/byte_stream.hpp b/coding/byte_stream.hpp index 9ce9f747f0..1e9a494d14 100644 --- a/coding/byte_stream.hpp +++ b/coding/byte_stream.hpp @@ -33,11 +33,33 @@ private: const unsigned char * m_p; }; -// TODO: Separate sink and rich write interface. -template > class PushBackByteSink +template class PushBackByteSink { public: - explicit PushBackByteSink(TStorage & storage) + explicit PushBackByteSink(StorageT & storage) + : m_Storage(storage)//, m_InitialStorageSize(storage.size()) + { + } + + void Write(void const * p, size_t size) + { + // assume input buffer as buffer of bytes + unsigned char const * pp = static_cast(p); + m_Storage.append(pp, pp + size); + } + + size_t Pos() const + { + return m_Storage.size(); + } +private: + StorageT & m_Storage; +}; + +template class PushBackByteSink > +{ +public: + explicit PushBackByteSink(vector & storage) : m_Storage(storage)//, m_InitialStorageSize(storage.size()) { } @@ -54,7 +76,7 @@ public: return m_Storage.size(); } private: - TStorage & m_Storage; + vector & m_Storage; }; class CountingSink